reloaded 4 年之前
父節點
當前提交
3dbff26fc8
共有 2 個文件被更改,包括 35 次插入3 次删除
  1. 1 0
      app/controller/schtime.js
  2. 34 3
      app/service/schtime.js

+ 1 - 0
app/controller/schtime.js

@@ -14,6 +14,7 @@ class SchtimeController extends Controller {
   }
 
   async updateschtimes() {
+    console.log(_.isArray(this.ctx.request.body));
     const res = await this.service.updateschtimes(this.ctx.request.body);
     this.ctx.ok({ msg: 'updated', data: res });
   }

+ 34 - 3
app/service/schtime.js

@@ -15,6 +15,8 @@ class SchtimeService extends CrudService {
 
   async updateschtimes(data) {
     assert(data, '缺少信息项');
+    console.log(_.isArray(data));
+
     for (const elm of data) {
       const schtime = await this.model.findById(elm.id);
       if (schtime) {
@@ -23,14 +25,43 @@ class SchtimeService extends CrudService {
         schtime.planid = elm.planid;
         schtime.remark = elm.remark;
         schtime.daterange = elm.daterange;
-        schtime.term.splice(0, schtime.term.length);
-        schtime.term = elm.term;
-        await schtime.save();
+        const { deletearray, updatearray, addarray } = await this.filterarray(schtime.term, elm.term);
+        let termInfo = _.difference(schtime.term, deletearray);
+        console.log(termInfo);
+        for (const terminfo of termInfo) {
+          const updateinfo = _.filter(updatearray, item => item.id === terminfo.id);
+          terminfo.termnum = updateinfo.termnum;
+          terminfo.termid = updateinfo.termid;
+          if (updateinfo.number) terminfo.number = updateinfo.number;
+          if (updateinfo.type) terminfo.type = updateinfo.type;
+          if (updateinfo.carnum) terminfo.carnum = updateinfo.carnum;
+        }
+        console.log(termInfo);
+
+        termInfo = _.concat(termInfo, addarray);
+        // schtime.term = termInfo;
+        // await schtime.save();
       }
 
     }
   }
 
+  async filterarray(oldarray, newarray) {
+    const _oldarray = _.cloneDeep(oldarray);
+    const updatearray = [];
+    const addarray = [];
+    for (const _newarray of newarray) {
+      if (_newarray.id) {
+        updatearray.push(_newarray);
+      } else {
+        addarray.push(_newarray);
+      }
+    }
+    const deletearray = _.pullAllBy(_oldarray, updatearray, 'id');
+    console.log('deletearray' + deletearray);
+    return { deletearray, updatearray, addarray };
+  }
+
 }
 
 module.exports = SchtimeService;