|
@@ -18,18 +18,39 @@ class StudentService extends CrudService {
|
|
|
this.gmodel = this.ctx.model.Group;
|
|
|
this.psmodel = this.ctx.model.Personalscore;
|
|
|
this.gsmodel = this.ctx.model.Groupscore;
|
|
|
+ this.uqmodel = this.ctx.model.Uploadquestion;
|
|
|
+ this.scoremodel = this.ctx.model.Score;
|
|
|
+ this.leavemodel = this.ctx.model.Leave;
|
|
|
+ this.attendmodel = this.ctx.model.Attendance;
|
|
|
}
|
|
|
|
|
|
async create(data) {
|
|
|
const { name, phone: mobile, gender } = data;
|
|
|
const res = await this.model.create(data);
|
|
|
if (res) {
|
|
|
- const obj = { name, mobile, gender, type: '4', passwd: '12345678', uid: res._id };
|
|
|
+ const obj = {
|
|
|
+ name,
|
|
|
+ mobile,
|
|
|
+ gender,
|
|
|
+ type: '4',
|
|
|
+ passwd: '12345678',
|
|
|
+ uid: res._id,
|
|
|
+ };
|
|
|
const user = await this.ctx.service.user.create(obj);
|
|
|
}
|
|
|
return res;
|
|
|
}
|
|
|
|
|
|
+ async delete({ id }) {
|
|
|
+ // 学生表,用户表,作业表,问卷表,评分,请假,考勤
|
|
|
+ await this.model.deleteOne({ _id: ObjectId(id) });
|
|
|
+ await this.umodel.deleteOne({ uid: id });
|
|
|
+ await this.upmodel.deleteMany({ studentid: id });
|
|
|
+ await this.uqmodel.deleteMany({ studentid: id });
|
|
|
+ await this.scoremodel.deleteMany({ stuid: id });
|
|
|
+ await this.leavemodel.deleteMany({ studentid: id });
|
|
|
+ await this.attendmodel.deleteMany({ studentid: id });
|
|
|
+ }
|
|
|
|
|
|
// 查询
|
|
|
async query({ skip, limit, ...info }) {
|
|
@@ -39,7 +60,9 @@ class StudentService extends CrudService {
|
|
|
for (const cla of classes) {
|
|
|
await this.arrangeNumber(cla._id);
|
|
|
}
|
|
|
- } else { await this.arrangeNumber(classid); }
|
|
|
+ } else {
|
|
|
+ await this.arrangeNumber(classid);
|
|
|
+ }
|
|
|
const total = await this.model.count(info);
|
|
|
const res = await this.model
|
|
|
.find(info)
|
|
@@ -80,7 +103,12 @@ class StudentService extends CrudService {
|
|
|
$or: [{ classid: null }, { classid: '' }],
|
|
|
});
|
|
|
const data = await this.model
|
|
|
- .find({ termid, type, batchid, $or: [{ classid: null }, { classid: '' }] })
|
|
|
+ .find({
|
|
|
+ termid,
|
|
|
+ type,
|
|
|
+ batchid,
|
|
|
+ $or: [{ classid: null }, { classid: '' }],
|
|
|
+ })
|
|
|
.skip(Number(skip))
|
|
|
.limit(Number(limit));
|
|
|
const result = { total, data };
|
|
@@ -202,15 +230,21 @@ class StudentService extends CrudService {
|
|
|
const res = [];
|
|
|
for (const stuid of data) {
|
|
|
const stu = await this.model.findById(stuid);
|
|
|
- if (stu)res.push(stu);
|
|
|
+ if (stu) res.push(stu);
|
|
|
}
|
|
|
return res;
|
|
|
}
|
|
|
|
|
|
// 根据学生id删除学生
|
|
|
async deletestus(data) {
|
|
|
- for (const el of data) {
|
|
|
- await this.model.deleteOne({ _id: ObjectId(el) });
|
|
|
+ for (const id of data) {
|
|
|
+ await this.model.deleteOne({ _id: ObjectId(id) });
|
|
|
+ await this.umodel.deleteOne({ uid: id });
|
|
|
+ await this.upmodel.deleteMany({ studentid: id });
|
|
|
+ await this.uqmodel.deleteMany({ studentid: id });
|
|
|
+ await this.scoremodel.deleteMany({ stuid: id });
|
|
|
+ await this.leavemodel.deleteMany({ studentid: id });
|
|
|
+ await this.attendmodel.deleteMany({ studentid: id });
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -241,9 +275,13 @@ class StudentService extends CrudService {
|
|
|
return i;
|
|
|
});
|
|
|
// 初始化后取出不需要算的人,他们就这样,没必要算
|
|
|
- const reverseList = studentList.filter(f => !(f.is_fine !== '2' && f.job.includes('普通')));
|
|
|
+ const reverseList = studentList.filter(
|
|
|
+ f => !(f.is_fine !== '2' && f.job.includes('普通'))
|
|
|
+ );
|
|
|
// 过滤出取消评优资格的学生和干部;干部就是优秀;被取消资格就别凑热闹了
|
|
|
- studentList = studentList.filter(f => f.is_fine !== '2' && f.job.includes('普通'));
|
|
|
+ studentList = studentList.filter(
|
|
|
+ f => f.is_fine !== '2' && f.job.includes('普通')
|
|
|
+ );
|
|
|
// 获取平时分
|
|
|
const dailyScoreList = await this.psmodel.find({ classid });
|
|
|
studentList = this.dealScoreList(dailyScoreList, studentList);
|
|
@@ -253,8 +291,14 @@ class StudentService extends CrudService {
|
|
|
// 获取小组分,小组
|
|
|
const groupList = await this.gmodel.find({ classid });
|
|
|
const groupScoreList = await this.gsmodel.find({ classid });
|
|
|
- studentList = this.dealGroupScoreList(groupList, groupScoreList, studentList);
|
|
|
- studentList = studentList.sort((a, b) => (b.score * 1 || 0) - (a.score * 1 || 0));
|
|
|
+ studentList = this.dealGroupScoreList(
|
|
|
+ groupList,
|
|
|
+ groupScoreList,
|
|
|
+ studentList
|
|
|
+ );
|
|
|
+ studentList = studentList.sort(
|
|
|
+ (a, b) => (b.score * 1 || 0) - (a.score * 1 || 0)
|
|
|
+ );
|
|
|
// 排名
|
|
|
// eslint-disable-next-line no-unused-vars
|
|
|
let num = 0;
|
|
@@ -273,7 +317,9 @@ class StudentService extends CrudService {
|
|
|
// 处理同分的人也都变成is_fine
|
|
|
for (const stud of rlist) {
|
|
|
stud.is_fine = '1';
|
|
|
- const sindex = studentList.findIndex(f => ObjectId(stud._id).equals(f._id));
|
|
|
+ const sindex = studentList.findIndex(f =>
|
|
|
+ ObjectId(stud._id).equals(f._id)
|
|
|
+ );
|
|
|
if (sindex >= 0) {
|
|
|
studentList[sindex] = stud;
|
|
|
plus++;
|
|
@@ -293,7 +339,6 @@ class StudentService extends CrudService {
|
|
|
// );
|
|
|
console.log(res);
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
/**
|
|
|
* 将分数放到学生身上
|
|
@@ -304,7 +349,11 @@ class StudentService extends CrudService {
|
|
|
scoreList = _.groupBy(scoreList, 'studentid');
|
|
|
studentList = studentList.map(i => {
|
|
|
const slist = scoreList[i._id];
|
|
|
- if (slist)i.score = (i.score * 1 || 0) + slist.reduce((p, n) => p + (n.score * 1 || 0), 0);
|
|
|
+ if (slist) {
|
|
|
+ i.score =
|
|
|
+ (i.score * 1 || 0) +
|
|
|
+ slist.reduce((p, n) => p + (n.score * 1 || 0), 0);
|
|
|
+ }
|
|
|
return i;
|
|
|
});
|
|
|
return studentList;
|
|
@@ -333,7 +382,9 @@ class StudentService extends CrudService {
|
|
|
});
|
|
|
// 每个学生加自己的组的平均分
|
|
|
studentList = studentList.map(i => {
|
|
|
- const r = groupList.find(f => f.students.find(sf => ObjectId(sf.stuid).equals(i._id)));
|
|
|
+ const r = groupList.find(f =>
|
|
|
+ f.students.find(sf => ObjectId(sf.stuid).equals(i._id))
|
|
|
+ );
|
|
|
if (r) i.score = (i.score * 1 || 0) + (r.score * 1 || 0);
|
|
|
return i;
|
|
|
});
|
|
@@ -348,7 +399,7 @@ class StudentService extends CrudService {
|
|
|
// 查每个学生的编号,如果没有,就给赋上值;有,就给number赋上值,然后继续下一位
|
|
|
for (const stu of studList) {
|
|
|
if (!stu.number) {
|
|
|
- if (number * 1 < 10)stu.number = `0${number}`;
|
|
|
+ if (number * 1 < 10) stu.number = `0${number}`;
|
|
|
else stu.number = number;
|
|
|
await stu.save();
|
|
|
} else {
|