'use strict'; const assert = require('assert'); const _ = require('lodash'); const { ObjectId } = require('mongoose').Types; const { CrudService } = require('naf-framework-mongoose/lib/service'); const { BusinessError, ErrorCode } = require('naf-core').Error; class SchtimeService extends CrudService { constructor(ctx) { super(ctx, 'schtime'); this.model = this.ctx.model.Schtime; } async updateschtimes(data) { assert(data, '缺少信息项'); console.log(_.isArray(data)); for (const elm of data) { const schtime = await this.model.findById(elm.id); if (schtime) { schtime.schid = elm.schid; schtime.year = elm.year; schtime.planid = elm.planid; schtime.remark = elm.remark; schtime.daterange = elm.daterange; 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;