Jelajahi Sumber

计算程序编译后,将费率的临时数据入库存储,为康博士报表提供基础数据。

Chenshilong 7 tahun lalu
induk
melakukan
c14c4396dc

+ 14 - 1
modules/main/controllers/calc_program_controller.js

@@ -8,7 +8,8 @@ let calcProgramFacade = require('../facade/calc_program_facade');
 module.exports = {
     getProjectCalcProgram: getProjectCalcProgram,
     getStdCalcProgram: getStdCalcProgram,
-    saveCalcItem: saveCalcItem
+    saveCalcItem: saveCalcItem,
+    saveCalcItems: saveCalcItems
 };
 
 async function getProjectCalcProgram(req, res) {
@@ -50,3 +51,15 @@ async function saveCalcItem(req, res) {
     });
     res.json(result);
 };
+
+async function saveCalcItems(req, res) {
+    let result = {error: 0, message: ''};
+
+    calcProgramFacade.saveCalcItems(req.body.data, function (err, msg) {
+        if (err) {
+            result.error = 1;
+        };
+        result.message = msg;
+    });
+    res.json(result);
+};

+ 34 - 2
modules/main/facade/calc_program_facade.js

@@ -18,7 +18,8 @@ module.exports = {
     getStdCalcProgramFile: getStdCalcProgramFile,
     getData: getData,
     save: save,
-    saveCalcItem: saveCalcItem
+    saveCalcItem: saveCalcItem,
+    saveCalcItems: saveCalcItems
 };
 
 async function newProjectCalcProgramFile(data) {
@@ -114,11 +115,42 @@ function saveCalcItem(dataObj, callback) {
             callback( {err:1, msg:'没有找到计算程序文件'} );
         }
     });
+};
 
+// {  projectID: projectID, calcItems: [{templatesID, calcItem}]  }
+function saveCalcItems(datas, callback) {
+    let datasObj = JSON.parse(datas);
+    projectCalcProgramsModel.findOne({projectID: datasObj.projectID}, function (err, data) {
+        if(!err){
+            for (let cI of datasObj.calcItems){
+                for (let i = 0; i < data.templates.length; i++){
+                    if (data.templates[i].ID == cI.templatesID){
+                        for (let j=0; j < data.templates[i].calcItems.length; j++){
+                            if (data.templates[i].calcItems[j].ID == cI.calcItem.ID){
+                                data.templates[i].calcItems[j] = cI.calcItem;
+                                data.save(function (err) {
+                                    if (err) {
+                                        callback({err:1, msg:'本条计算规则保存失败'});
+                                    } else {
+                                        callback({err:0, msg:'本条计算规则保存成功'});
+                                    }
+                                });
+                                break;
+                            };
+                        };
+                        break;
+                    };
+                };
+            };
+        }
+        else {
+            callback( {err:1, msg:'没有找到计算程序文件'} );
+        }
+    });
 };
 
 // for test
 /*let udata = {ID:8, code: '8.8.8', name: '被改成了888', hehe: '增加的属性'};
-saveCalcItem({projectID: 597, templatesID: 4, calcItemID: 8, data: udata}, function (data) {
+saveCalcItem({projectID: 597, templatesID: 4, data: udata}, function (data) {
     console.log({msg:data.msg, data: data.data});
 })*/

+ 1 - 0
modules/main/routes/calc_program_route.js

@@ -12,6 +12,7 @@ module.exports = function (app) {
     cpRouter.post('/getProjectCalcProgram', cpController.getProjectCalcProgram);
     cpRouter.post('/getStdCalcProgram', cpController.getStdCalcProgram);
     cpRouter.post('/saveCalcItem', cpController.saveCalcItem);
+    cpRouter.post('/saveCalcItems', cpController.saveCalcItems);
 
     app.use('/calcProgram',cpRouter);
 }

+ 9 - 1
public/calc_util.js

@@ -268,6 +268,7 @@ class Calculation {
         private_compile_feeType();
         private_compile_calcBase();
         me.compiledTemplates = {};
+        me.saveForReports = [];
     };
 
     compileTemplate(template){
@@ -341,8 +342,13 @@ class Calculation {
                 };
 
                 if (item.feeRateID) {
-                    var cmf = me.compiledFeeRates["feeRate_" + item.feeRateID];
+                    let orgFeeRate = item.feeRate;
+                    let cmf = me.compiledFeeRates["feeRate_" + item.feeRateID];
                     item.feeRate = cmf?cmf.rate:100;
+
+                    if (!orgFeeRate || (orgFeeRate && orgFeeRate != item.feeRate)){
+                        me.saveForReports.push({templatesID: template.ID, calcItem: item});
+                    }
                 };
 
                 // 字段名映射
@@ -372,6 +378,8 @@ class Calculation {
         };
     };
 
+
+
     calculate($treeNode){
         let me = this;
         let templateID = $treeNode.data.programID;

+ 11 - 1
web/building_saas/main/js/models/calc_program.js

@@ -37,11 +37,21 @@ class CalcProgram {
         for (let ct of calcTemplates){
             this.calc.compileTemplate(ct);
         };
+
+        // 存储费率临时数据,报表用。
+        if (this.calc.saveForReports.length > 0){
+            let saveDatas = {};
+            saveDatas.projectID = projectInfoObj.projectInfo.ID;
+            saveDatas.calcItems = this.calc.saveForReports;
+            CommonAjax.post('/calcProgram/saveCalcItems', saveDatas, function (data) {
+                this.calc.saveForReports = [];
+            });
+        };
     };
 
     calculate(treeNode){
         treeNode.data.gljList = this.project.ration_glj.getGljArrByRation(treeNode.data.ID);
         this.calc.calculate(treeNode);
         projectObj.mainController.refreshTreeNode([treeNode]);
-    };
+    }
 }