소스 검색

ration adjust state change

zhangweicheng 7 년 전
부모
커밋
7a83e93565

+ 0 - 1
modules/fee_rates/facade/fee_rates_facade.js

@@ -202,7 +202,6 @@ async function getFeeRateData(projectID) {
                 feeRateData._doc.rates = feeRate?feeRate.rates:[];
                 //
                 feeRateData._doc.usageProjects=await getUsageProjects(feeRateData.ID);
-                console.log(feeRateData._doc);
                 result.datas = feeRateData;
             }
         }else {

+ 4 - 4
modules/ration_glj/controllers/ration_glj_controller.js

@@ -85,8 +85,8 @@ async function replaceGLJ(req, res){
         let data = req.body.data;
         data = JSON.parse(data);
         console.log(data);
-        let datas= await ration_glj_facade.replaceGLJ(data);
-        result.data=datas;
+        let rdata= await ration_glj_facade.replaceGLJ(data);
+        result.data=rdata;
     }catch (err){
         logger.err(err);
         result.error=1;
@@ -103,8 +103,8 @@ async function mReplaceGLJ(req, res){
         let data = req.body.data;
         data = JSON.parse(data);
         console.log(data);
-        let datas= await ration_glj_facade.mReplaceGLJ(data);
-        result.data=datas;
+        let mresult= await ration_glj_facade.mReplaceGLJ(data);
+        result.data=mresult;
     }catch (err){
         logger.err(err);
         result.error=1;

+ 7 - 3
modules/ration_glj/facade/glj_calculate_facade.js

@@ -135,8 +135,12 @@ function calculateAss(quantity,assList,glj) {
 }
 
 function generateAdjustState(glj,coeList,adjustState,index) {
-   //替换工料机 and  添加工料机
-
+   //替换工料机 and 添加工料机
+    if(glj._doc.createType=='replace'){
+        adjustState.push({index:stateSeq.replase,content:glj.rcode+'换'+glj.code});
+    }else if(glj._doc.createType=='add'){
+        adjustState.push({index:stateSeq.add,content:'添'+glj.code+'量'+glj.quantity});
+    }
     // to do
 
   //标准附注条件调整 + 自定义乘系数
@@ -153,7 +157,7 @@ function generateAdjustState(glj,coeList,adjustState,index) {
     }
 
     //自定义消耗量
-    if(glj._doc.hasOwnProperty('customQuantity')){
+    if(glj._doc.createType!='add'&&glj._doc.hasOwnProperty('customQuantity')){
         if(glj.customQuantity!==null){
             adjustState.push({index:stateSeq.cusQuantity,content:glj.code+'量'+glj.customQuantity});
         }

+ 45 - 7
modules/ration_glj/facade/ration_glj_facade.js

@@ -425,15 +425,16 @@ function deleteByBill(user_id,datas,callback) {
 
 
 function  deleteByID(datas,callback){
-    ration_glj.deleteOne(datas.query,(err,result)=>{
-        if(err){
-            callback(err,'');
+    deleteAndUpdateState(datas).then(function (result) {
+        if(result.err){
+            callback(result.err,'');
         }else {
             let returndata ={
                 moduleName:'ration_glj',
                 data:{
                     updateTpye:commonConsts.UT_DELETE,
                     query:datas.query,
+                    adjustState:result.adjustState
                 }
             }
             callback(null,returndata)
@@ -441,6 +442,20 @@ function  deleteByID(datas,callback){
     })
 }
 
+async  function deleteAndUpdateState(datas) {
+    let result={
+        err:null
+    }
+    try {
+        await ration_glj.deleteOne(datas.query);
+        let stateResult =  await glj_calculate_facade.calculateQuantity({projectID:datas.query.projectID,rationID:datas.doc.rationID});
+        result.adjustState=stateResult.adjustState;
+    }catch (err){
+        result.err=err;
+    }
+    return result;
+}
+
 function startingTask(processName){
     return function(asyncCallBack){
         var result = {
@@ -634,14 +649,18 @@ async function addGLJ(rgList) {
        newRecodes.push(createNewRecord(g));
    }
     await ration_glj.insertMany(newRecodes);
+
+    let stateResult =  await glj_calculate_facade.calculateQuantity({projectID:rgList[0].projectID,rationID:rgList[0].rationID});
     let result={
         newRecodes:newRecodes,
-        showData:rgList
+        showData:rgList,
+        adjustState:stateResult.adjustState
     }
    return result;
 }
 
 async function replaceGLJ(data) {
+    let rdata={};
     let projectGljModel = new GLJListModel();
     let result = await projectGljModel.addList(getGLJSearchInfo(data));
     data.marketPrice=result.unit_price.market_price;
@@ -650,9 +669,13 @@ async function replaceGLJ(data) {
     data.projectGLJID=result.id;
     data.isEstimate=result.is_evaluate;
     let updateResult=await ration_glj.findOneAndUpdate({ID:data.ID,projectID:data.projectID},data);
-    return data
+    let stateResult =  await glj_calculate_facade.calculateQuantity({projectID:data.projectID,rationID:data.rationID});
+    rdata.data=data;
+    rdata.adjustState=stateResult.adjustState;
+    return rdata;
 }
 async function mReplaceGLJ(data) {
+    let mresult={};
     let projectGljModel = new GLJListModel();
     let result = await projectGljModel.addList(getGLJSearchInfo(data.doc));
     data.doc.marketPrice=result.unit_price.market_price;
@@ -660,11 +683,26 @@ async function mReplaceGLJ(data) {
     data.doc.basePrice=result.unit_price.base_price;
     data.doc.projectGLJID=result.id;
     data.doc.isEstimate=result.is_evaluate;
+    let rationList=await ration_glj.distinct('rationID',data.query);
     let updateResult=await ration_glj.update(data.query,data.doc,{multi: true});
-    console.log(updateResult);
-    return data
+    let stateList= await changAdjustState(data,rationList);
+    mresult.data=data;
+    mresult.stateList=stateList;
+    return mresult
 }
 
+async function changAdjustState(data,rationList) {
+    let stateList=[];
+    for(let r of rationList){
+      let stateResult = await glj_calculate_facade.calculateQuantity({projectID:data.query.projectID,rationID:r});
+      stateList.push({rationID:r,adjustState:stateResult.adjustState});
+    }
+    return stateList;
+}
+
+async function testError() {
+  throw  new Error('test Error');
+}
 
 function getData(projectID, callback) {
     ration_glj.find({'projectID':projectID},(err,datas)=>{

+ 13 - 4
web/building_saas/main/js/models/ration_glj.js

@@ -139,6 +139,9 @@ var ration_glj = {
             _.remove(gljOprObj.sheetData,data.query);
             gljOprObj.showRationGLJSheetData();
             projectObj.project.projectGLJ.loadData();
+            var selected = projectObj.project.mainTree.selected;
+            selected.data.adjustState=data.adjustState;
+            projectObj.mainController.refreshTreeNode([selected]);
         };
         // CSL,2017.05.09
         ration_glj.prototype.modifyQuantity = function (data, newQuantity) {
@@ -243,7 +246,7 @@ var ration_glj = {
         ration_glj.prototype.updataOrdelete=function(row){
             var updateData = null;
             if(row.rationItemQuantity==0){
-                updateData=this.getUpdateData('ut_delete',{'ID': row.ID, 'projectID': row.projectID});
+                updateData=this.getUpdateData('ut_delete',{'ID': row.ID, 'projectID': row.projectID},{rationID:row.rationID});
                 project.pushNow('updateRationGLJ',[this.getSourceType()],updateData)
             }else {
                 this.customQuantityUpdate(row,0,0);//('ut_update',{'ID': row.ID, 'projectID': row.projectID},{'quantity':0,'customQuantity':0});
@@ -349,11 +352,13 @@ var ration_glj = {
             if(selectCode==oldData.code){
                 return callback(null);
             }
-            oldData.createType='replace';
+            if(oldData.createType!='replace'){
+                oldData.rcode=oldData.code;
+                oldData.createType='replace';
+            }
             oldData.GLJID=glj.ID;
             oldData.rationItemQuantity=0;
             oldData.name=glj.name;
-            oldData.rcode=oldData.code;
             oldData.code=glj.code;
             oldData.unit=glj.unit;
             oldData.specs=glj.specs;
@@ -383,7 +388,6 @@ var ration_glj = {
                 createType:'replace',
                 rationItemQuantity:0,
                 name:glj.name,
-                rcode:oldData.code,
                 code:glj.code,
                 unit:glj.unit,
                 specs:glj.specs,
@@ -392,6 +396,11 @@ var ration_glj = {
                 repositoryId:glj.repositoryId,
                 projectID:oldData.projectID
             }
+            if(oldData.createType=='replace'){
+                doc.rcode=oldData.rcode;
+            }else {
+                doc.rcode=oldData.code;
+            }
             if(glj.hasOwnProperty("compilationId")){
                 doc.from="cpt";
             }else {

+ 29 - 6
web/building_saas/main/js/views/glj_view.js

@@ -797,10 +797,12 @@ var gljOprObj = {
         if(gljOprObj.GLJSelection.length>0&&selected&&selected.sourceType==ModuleNames.ration){
             project.ration_glj.addGLJByLib(gljOprObj.GLJSelection,selected.data,function (result) {
                 if(result){
+                    selected.data.adjustState=result.adjustState;
                     project.ration_glj.datas = project.ration_glj.datas.concat(result.newRecodes);
                     gljOprObj.sheetData = gljOprObj.sheetData.concat(result.showData)
                     gljOprObj.showRationGLJSheetData();
                     project.projectGLJ.loadData();
+                    projectObj.mainController.refreshTreeNode([selected]);
                     $("#glj_tree_div").modal('hide');
                 }
             });//doc.rationID=selected.data.ID;
@@ -814,12 +816,17 @@ var gljOprObj = {
         var oldData=me.sheetData[gljContextMenu.selectedRow];
         var project= projectObj.project;
         var selectCode=gljOprObj.GLJSelection[0];
+        var selected = projectObj.project.mainTree.selected;
         project.ration_glj.replaceGLJ(selectCode,oldData,function (result) {
             if(result){
-                var index = _.findIndex(gljOprObj.sheetData,{'ID':result.ID});
-                gljOprObj.sheetData[index]=result;
+                //result.adjustState;
+                var data =result.data;
+                var index = _.findIndex(gljOprObj.sheetData,{'ID':data.ID});
+                gljOprObj.sheetData[index]=data;
                 gljOprObj.showRationGLJSheetData();
                 project.projectGLJ.loadData();
+                selected.data.adjustState=result.adjustState;
+                projectObj.mainController.refreshTreeNode([selected]);
             }
             $("#glj_tree_div").modal('hide');
         })
@@ -828,15 +835,18 @@ var gljOprObj = {
         var me=this;
         var oldData=me.sheetData[gljContextMenu.selectedRow];
         var project= projectObj.project;
-        var selectCode=gljOprObj.GLJSelection[0];
+        var selectCode=me.GLJSelection[0];
         project.ration_glj.mReplaceGLJ(selectCode,oldData,function (result) {
+            var data=result.data;
+            var stateList= result.stateList;
             _.forEach(project.ration_glj.datas,function (t) {
-                if(t.code==result.query.code&&t.name==result.query.name){
-                    me.updateProperty(t,result.doc);
+                if(t.code==data.query.code&&t.name==data.query.name){
+                    me.updateProperty(t,data.doc);
                 }
             })
-            gljOprObj.showRationGLJSheetData();
+            me.showRationGLJSheetData();
             project.projectGLJ.loadData();
+            me.refreshStateAfterMreplace(stateList);
             $("#glj_tree_div").modal('hide');
         })
     },
@@ -845,6 +855,19 @@ var gljOprObj = {
             obj[key] = n;
         });
     },
+    refreshStateAfterMreplace:function (stateList) {
+        var nodes=[];
+        _.forEach(stateList,function (s) {
+          var node = _.find(projectObj.project.mainTree.items,function (n) {
+              return n.sourceType==ModuleNames.ration&&n.data.ID==s.rationID;
+          })
+          if(node){
+              node.data.adjustState=s.adjustState;
+              nodes.push(node);
+          }
+        });
+        projectObj.mainController.refreshTreeNode(nodes);
+    },
     refreshView:function () {
         this.showRationGLJData();
     }