| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | /** * Created by Zhong on 2018/1/24. */const mongoose = require('mongoose');const rationItemModel = mongoose.model('std_ration_lib_ration_items');const installFeeItemModel = mongoose.model('std_ration_lib_installation');const installSectionModel = mongoose.model('std_ration_lib_installationSection');class InstallationDao{    async getInstallation(rationRepId, callback){        try {            const feeItems = await installFeeItemModel.find({ rationRepId }).lean();            const feeItemMap = {};            const sectionIds = [];            feeItems.forEach(item => {                feeItemMap[item.ID] = item;                item.section.forEach(s => sectionIds.push(s.ID));                item.section = [];            });            const sections = await installSectionModel.find({ID: {$in: sectionIds}});            sections.forEach(section => {                const matchFeeItem = feeItemMap[section.feeItemId];                if (matchFeeItem) {                    matchFeeItem.section.push(section);                }            });            if (!callback) {                return feeItems;            }            callback(0, feeItems);        }        catch(err){            if (!callback) {                return [];            }            callback(err, null);        }    }    async updateSection(updateData, callback){        try{            for(let data of updateData){                if(data.updateType === 'new'){                    await installSectionModel.create(data.updateData);                }                else if(data.updateType === 'update' && !data.updateData.deleted){                    await installSectionModel.update({ID: data.updateData.ID}, data.updateData);                }                else {                    await installSectionModel.remove({ID: data.updateData.ID});                }            }            callback(0, null);        }        catch(err){            callback(err, null);        }    }    async updateFeeItem(updateData, callback){        try{            for(let data of updateData){                if(data.updateType === 'new'){                    await installFeeItemModel.create(data.updateData);                }                else if(data.updateType === 'update' && !data.updateData.deleted){                    await installFeeItemModel.update({ID: data.updateData.ID}, data.updateData);                }                else{                    await installFeeItemModel.remove({ID: data.updateData.ID});                }            }            callback(0, null);        }        catch(err){            callback(err, null);        }    }    async batchUpdateInst(rationSection, inst, callback){        try{            for(let sectionId of rationSection){                await rationItemModel.update({sectionId: sectionId, $or: [{isDeleted: null}, {isDeleted: false}]},                    {$addToSet: {rationInstList: {feeItemId: inst.feeItemId, sectionId: inst.sectionId}}}, {multi: true});            }            callback(0, null);        }        catch(err){            callback(err, null);        }    }}export default InstallationDao;
 |