浏览代码

feat: 清单精灵后台,增加配置材料

vian 3 年之前
父节点
当前提交
e27407ab03
共有 1 个文件被更改,包括 39 次插入0 次删除
  1. 39 0
      modules/std_billsGuidance_lib/facade/facades.js

+ 39 - 0
modules/std_billsGuidance_lib/facade/facades.js

@@ -20,6 +20,9 @@ const stdBillsJobsModel = mongoose.model('std_bills_lib_jobContent');
 const stdRationModel = mongoose.model('std_ration_lib_ration_items');
 const engLibModel = mongoose.model('engineering_lib');
 const compilationModel = mongoose.model('compilation');
+const billMaterialModel = mongoose.model('std_billsGuidance_materials');
+const gljModel = mongoose.model('std_glj_lib_gljList');
+const gljLibModel = mongoose.model('std_glj_lib_map');
 const _ = require('lodash');
 const zhLibID = 'cf851660-3534-11ec-9641-2da8021b8e4e';
 const cqLibID = '90c51220-a740-11e8-a354-ab5db7d42428';
@@ -32,6 +35,8 @@ module.exports = {
     getLibWithBills,
     getItemsBybills,
     updateItems,
+    getBillMaterials,
+    editBillMaterials,
     testItems
 };
 
@@ -404,6 +409,40 @@ async function updateItems(updateDatas) {
     }
 }
 
+// 获取清单材料数据
+async function getBillMaterials(libID, billID) {
+    const billMaterial = await billMaterialModel.findOne({ libID, billID }).lean();
+    if (!billMaterial || !billMaterial.materials) {
+        return [];
+    }
+    const gljIDs = billMaterial.materials.map(m => m.gljID);
+    const gljList = await gljModel.find({ ID: { $in: gljIDs } }, '-_id ID code name specs').lean();
+    return gljList.map(glj => ({ gljID: glj.ID, code: glj.code, name: glj.name, specs: glj.specs }));
+}
+
+// 编辑清单材料数据,返回清单材料数据
+async function editBillMaterials(libID, billID, gljCodes, compilationID) {
+    const gljLib = await gljLibModel.findOne({ compilationId: compilationID }, '-_id ID').lean();
+    const gljList = await gljModel.find({ repositoryId: gljLib.ID, code: { $in: gljCodes }, }, '-_id ID code name specs').lean();
+    const gljMap = {};
+    const materials = [];
+    gljList.forEach(glj => {
+        materials.push({ gljID: glj.ID });
+        gljMap[glj.code] = 1;
+    });
+    const missCodes = gljCodes.filter(code => !gljMap[code]);
+    if (missCodes.length) {
+        throw new Error(`没有找到人材机:<br/>${missCodes.join('<br/>')}`);
+    }
+    const billMaterial = await billMaterialModel.findOne({ libID, billID }, '-_id ID').lean();
+    if (billMaterial) {
+        await billMaterialModel.update({ ID: billMaterial.ID }, { $set: { materials } });
+    } else {
+        await billMaterialModel.create({ libID, billID, ID: uuidV1(), materials });
+    }
+    return gljList.map(glj => ({ gljID: glj.ID, code: glj.code, name: glj.name, specs: glj.specs }));
+}
+
 async function testItems(libID) {
     let items = await billsGuideItemsModel.find({libID: libID});
     //删除垃圾数据