| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 | 'use strict';/** * * * @author Zhong * @date 2018/10/25 * @version */module.exports = {    getComplementaryCoes,    getCoeItemsByIDs,    getCoeItemsByNos,    saveToCoeList,};const mongoose = require("mongoose");const counter = require('../../../public/counter/counter');const compleCoeModel = mongoose.model('complementary_ration_coe_list');const async = require('async');const deleteQuery = [{deleteInfo: null}, {'deleteInfo.deleted': false}];//获取用户总的补充子目换算async function getComplementaryCoes(userId, compilationId) {    let coeData =  await compleCoeModel.find({userId: userId, compilationId: compilationId, $or: deleteQuery});    return coeData;}//补充子目换算增删改async function saveToCoeList(userId, compilationId, data, callback) {    let bulks = [],        newDatas = [];    if (data.addArr && data.addArr.length > 0) {        let insertOprs = await getInsertBulk(userId, compilationId, data.addArr);        bulks = bulks.concat(insertOprs.insertBulk);        newDatas = insertOprs.newDatas;    }    if (data.updateArr && data.updateArr.length > 0) {        bulks = bulks.concat(getUpdateBulk(data.updateArr));    }    if (data.deleteArr && data.deleteArr.length > 0) {        let deleteObj = {            deleted: true,            deleteDateTime: new Date(),            deleteBy: userId        };        for (let delData of data.deleteArr) {            delData.deleteInfo = deleteObj        }        bulks = bulks.concat(getUpdateBulk(data.deleteArr));    }    if (bulks.length > 0) {        await compleCoeModel.bulkWrite(bulks);    }    return newDatas;}async function getInsertBulk(userId, compilationId, addArr) {    let insertBulk = [],        newDatas = [];    let counterResult = await counter.counterDAO.getIDAfterCountSync(counter.moduleName.complementaryCoeList, addArr.length);    let maxId = counterResult.sequence_value;    for (let insertData of addArr) {        insertData.userId = userId;        insertData.compilationId = compilationId;        insertData.ID = (maxId - (addArr.length - 1) + addArr.indexOf(insertData));        insertData.coes = [];        newDatas.push(insertData);        insertBulk.push({insertOne: {document: insertData}});    }    return {insertBulk, newDatas};}function getUpdateBulk(updateArr) {    let updateBulk = [],        updateFields = ['name', 'content', 'coes', 'deleteInfo'];    for (let updateData of updateArr) {        let needSet = {};        for (let attr in updateData){            if (updateFields.includes(attr)){                needSet[attr] = updateData[attr];            }        }        updateBulk.push({updateOne:{filter: {ID: updateData.ID}, update: {$set: needSet}}});    }    return updateBulk;}//根据序号获取子目换算,插入子目换算时用async function getCoeItemsByNos(userId, compilationId, serialNos) {    return await compleCoeModel.find({userId: userId, compilationId: compilationId, serialNo: {$in: serialNos}}, '-_id ID serialNo name content');}//根据ID获取子目换算,获取定额子目换算用async function getCoeItemsByIDs(coeIds) {    return await compleCoeModel.find({ID: {$in: coeIds}}, '-_id ID serialNo name content');}
 |