Bläddra i källkod

Merge branch 'master' of http://git.cc-lotus.info/new_train/service-center

liuyu 4 år sedan
förälder
incheckning
b536b4a9eb
1 ändrade filer med 44 tillägg och 9 borttagningar
  1. 44 9
      app/service/teaplan.js

+ 44 - 9
app/service/teaplan.js

@@ -95,11 +95,27 @@ class TeaplanService extends CrudService {
     }
     // 查询本培训计划中班主任全年计划表的全部信息
     const teaplanList = await this.model.find({ trainplanid });
+    // 查询所有班主任信息
+    const headteacherList = await this.hmodel.find();
     let noteaList = [];
     // 遍历所有批次信息
     for (const _batch of batchList) {
       // 遍历班主任全年计划表
       for (const teaplan of teaplanList) {
+        if ((teaplan.nodate).length > 0) {
+          // 遍历班主任全年计划表中的不能上课的日期
+          for (const nodate of teaplan.nodate) {
+          // 如果不能上课的日期在该批次的开始时间和结束时间中,将该班主任加入不能上课的班主任数组中
+            if (moment(nodate).isBetween(_batch.startdate, _batch.enddate, null, '[]')) {
+              noteaList.push(teaplan);
+            }
+          }
+        }
+        const headteacherInfo = _.filter(headteacherList, item => item.id === teaplan.headteacherid);
+        // 如果班主任信息列表中班主任上报了班主任全年计划,将其移除
+        if (headteacherInfo.length >= 1) {
+          _.remove(headteacherList, item => item.id === teaplan.headteacherid);
+        }
         // 过滤出已分配的数据中该班主任的数据
         const teaInfo = _.filter(data, item => item.headteacherid === teaplan.headteacherid);
         // 计算出每个班主任担任过班主任的次数
@@ -118,11 +134,25 @@ class TeaplanService extends CrudService {
             }
           }
         }
-        // 遍历班主任全年计划表中的不能上课的日期
-        for (const nodate of teaplan.nodate) {
-          // 如果不能上课的日期在该批次的开始时间和结束时间中,将该班主任加入不能上课的班主任数组中
-          if (moment(nodate).isBetween(_batch.startdate, _batch.enddate, null, '[]')) {
-            noteaList.push(teaplan);
+      }
+      for (const headteacher of headteacherList) {
+        headteacher.headteacherid = headteacher.id;
+        // 过滤出已分配的数据中该班主任的数据
+        const teaInfo = _.filter(data, item => item.headteacherid === headteacher.id);
+        // 计算出每个班主任担任过班主任的次数
+        headteacher.teacount = await this.cmodel.count({ headteacherid: headteacher.id }) + teaInfo.length;
+        // 如果已分配的数据中该班主任的数据长度大于0
+        if (teaInfo.length > 0) {
+          // 遍历已分配的数据中该班主任的数据
+          for (const _teaInfo of teaInfo) {
+            // 查询该班主任已分配的数据中的班级信息
+            const _class = await this.cmodel.findById(_teaInfo.classid);
+            // 根据班级的批次id查出该班级的开始时间和结束时间
+            const batchInfo = _.filter(batchList, item => item.id === _class.batchid);
+            // 如果该班级的开始时间和结束时间于当前遍历批次的开始时间和结束时间有重合部分,将该班主任加入不能上课的班主任数组中
+            if (await this.isrepeat(batchInfo.startdate, batchInfo.enddate, _batch.startdate, _batch.enddate)) {
+              _.remove(headteacherList, item => item.id === headteacher.id);
+            }
           }
         }
       }
@@ -130,6 +160,7 @@ class TeaplanService extends CrudService {
       noteaList = _.uniqWith(noteaList, _.isEqual);
       // 将班主任全年计划表过滤,去除在不能上课的班主任数组中已存在的数据
       let teaList = _.difference(teaplanList, noteaList);
+      teaList = _.concat(teaList, headteacherList);
       // 将不能上课的班主任数组清空
       noteaList = [];
       const departmentList = await this.departmentcount(teaList);
@@ -177,10 +208,14 @@ class TeaplanService extends CrudService {
     let departmentList = [];
     for (const teaplan of teaList) {
       // 将班主任的部门放到一个数组中
-      const headteacher = await this.hmodel.findById(teaplan.headteacherid);
-      departmentList.push({ deparmentid: headteacher.department });
-      teaplan.deparmentid = headteacher.department;
-
+      if (!teaplan.department) {
+        const headteacher = await this.hmodel.findById(teaplan.headteacherid);
+        departmentList.push({ deparmentid: headteacher.department });
+        teaplan.deparmentid = headteacher.department;
+      } else {
+        departmentList.push({ deparmentid: teaplan.department });
+        teaplan.deparmentid = teaplan.department;
+      }
     }
     // 将数组去重
     departmentList = _.uniqWith(departmentList, _.isEqual);