Browse Source

get quantify method

zhangweicheng 8 years ago
parent
commit
0571306a62

+ 20 - 1
modules/ration_glj/controllers/ration_glj_controller.js

@@ -2,8 +2,11 @@
  * Created by chen on 2017/6/29.
  */
 let mongoose = require("mongoose")
+let ration_glj_facade = require('../facade/ration_glj_facade')
+
 module.exports={
-    createRationGLJ:createRationGLJ
+    createRationGLJ:createRationGLJ,
+    testGetQuantify:testGetQuantify
 }
 function createRationGLJ() {
     let gls = mongoose.model('ration_glj');
@@ -12,3 +15,19 @@ function createRationGLJ() {
     })
 }
 
+//测试获取消耗量:
+async function testGetQuantify() {
+    var condition = {
+        projectID:99,
+        projectGLJIDList:[60,61]
+    }
+
+    try{
+        let result = await ration_glj_facade.getQuantityByProjectGLJ(condition);
+        console.log(result)
+    }catch (err){
+        console.log(err);
+    }
+
+
+}

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

@@ -28,9 +28,52 @@ let updateFunctionMap = {
 module.exports={
     save:save,
     getData:getData,
-    deleteByRation:deleteByRation
+    deleteByRation:deleteByRation,
+    getQuantityByProjectGLJ:getQuantityByProjectGLJ
 }
 
+
+/**
+ * 根据项目工料机ID和项目ID取消耗量
+ *
+ * @param {object} condition
+ * @return Array
+ */
+async function getQuantityByProjectGLJ(condition) {
+    let query ={
+        $and:[
+            {'projectID':condition.projectID},
+            {'projectGLJID':{$in:condition.projectGLJIDList}}
+        ]
+    }
+
+
+    let results = await   ration_glj.find(query,['projectGLJID','quantity']);
+    return combineQuantity(results);
+}
+
+function combineQuantity(results) {
+    var resultMap = {};
+    _.forEach(results,function (data) {
+        if(resultMap.hasOwnProperty(data.projectGLJID)){
+            resultMap[data.projectGLJID] += data.quantity;
+        }else {
+            resultMap[data.projectGLJID] = data.quantity;
+        }
+    })
+
+    var resultList =[];
+    for(let key in resultMap){
+       let newObject = {
+            'projectGLJID':key,
+            'quantity':resultMap[key]
+        }
+        resultList.push(newObject)
+    }
+    return resultList;
+}
+
+
 function get_lib_glj_info(ration_glj) {
     return function (cb) {
         std_ration_lib_glj_list_model.findOne({'ID':ration_glj.GLJID,'repositoryId':ration_glj.glj_repository_id},(err,glj)=>{
@@ -148,18 +191,39 @@ function normalUpdate(user_id,datas){
 
 function marketPriceAdjustUpdate(user_id,datas) {
     return function (callback) {
+        updateprojectGljAndRationGLJ(datas.query,datas.doc).then((result)=>{
+            let returndata ={
+                moduleName:'ration_glj',
+                data:{
+                    updateTpye:commonConsts.UT_UPDATE,
+                    query:datas.query,
+                    doc:result
+                }
+            }
+            callback(null,returndata)
+        })
 
-
-        console.log(datas.query);
-        console.log(datas.doc);
-        callback(null,'')
     }
 }
 
 async function updateprojectGljAndRationGLJ(query,doc) {
+    try {
+        let gljListModel = new GLJListModel();
+        let result = await gljListModel.modifyMarketPrice(doc);
+        let updateDoc ={
+            marketPrice:result.unit_price.market_price,
+            marketPriceAdjust:doc.market_price,
+            projectGLJID:result.id,
+            isEstimate:result.is_evaluate,
+            name : result.name,
+            code:result.code
+        };
+        let updateresult = await ration_glj.findOneAndUpdate(query, updateDoc)
+        return updateDoc;
 
-
-
+        } catch (error) {
+            console.log(error);
+         }
 }
 
 

+ 2 - 1
web/building_saas/main/js/models/ration_coe.js

@@ -43,6 +43,7 @@ var ration_coe = {
                 projectObj.project.ration_coe.datas = data;
             }
             sheetCommonObj.showData(gljOprObj.coeSheet,gljOprObj.coeSetting,data);
+            gljOprObj.coeSheetData=data;
             // SheetDataHelper.loadSheetData(setting, rationLibObj.sectionRationsSpread.getActiveSheet(), datas);
         };
         ration_coe.prototype.refreshAfterUpdate=function(data){
@@ -55,7 +56,7 @@ var ration_coe = {
             });
 
             var showList = _.filter(glj_list,{'projectID':data.query.projectID,'rationID':glj_list[glj_index].rationID});
-            gljOprObj.sheetData=showList;
+            gljOprObj.coeSheetData=showList;
            sheetCommonObj.showData(gljOprObj.coeSheet,gljOprObj.coeSetting,showList);
         };
         ration_coe.prototype.refreshAfterDelete=function(data){

+ 1 - 0
web/building_saas/main/js/models/ration_glj.js

@@ -60,6 +60,7 @@ var ration_glj = {
                 projectObj.project.ration_glj.datas = data;
             }
             sheetCommonObj.showData(gljOprObj.sheet,gljOprObj.setting,data);
+            gljOprObj.sheetData=data;
             // SheetDataHelper.loadSheetData(setting, rationLibObj.sectionRationsSpread.getActiveSheet(), datas);
         };
         ration_glj.prototype.refreshAfterUpdate=function(data){

+ 19 - 2
web/building_saas/main/js/views/glj_view.js

@@ -30,7 +30,8 @@ var gljOprObj = {
             comboBox: [{row: -1, col: 12, rowCount: -1, colCount: 1}],
             lockedCells: [{row: -1, col: 3, rowCount: -1, colCount: 1}],
             lockColumns:[0,1,2,3,4,5,7,8,9,10,12]
-        }
+        },
+        notEditedType: ['混凝土','砂浆','配合比','机械']
     },
     coeSetting:{
         header:[
@@ -63,6 +64,7 @@ var gljOprObj = {
         sheet.bind(GC.Spread.Sheets.Events.ClipboardPasted, me.onClipboardPasted);
         sheet.bind(GC.Spread.Sheets.Events.EditEnded, me.onEditEnded);
         sheet.bind(GC.Spread.Sheets.Events.RangeChanged, me.onRangeChanged);
+        sheet.bind(GC.Spread.Sheets.Events.CellClick, me.onCellClick);
     },
 
     onClipboardPasting: function(sender, args) {
@@ -79,6 +81,7 @@ var gljOprObj = {
     },
 
     onEditEnded: function(sender,args){
+        //activeSheet.getCell(1, 3, GC.Spread.Sheets.SheetArea.viewport).locked(false);
         var me = gljOprObj;
         if(args.row>=me.sheetData.length){
             return;
@@ -93,6 +96,17 @@ var gljOprObj = {
         }
         me.updateRationGLJ(args,updateFunction);
     },
+    onCellClick: function(sender,args){
+        var me = gljOprObj;
+        if(me.setting.header[args.col].dataCode=='marketPriceAdjust'){//市场单价调整
+            var type = me.sheetData[args.row].gljDistType;
+            var index= _.indexOf(me.setting.notEditedType,type);
+            if(index!=-1){
+                me.sheet.getCell(args.row, args.col, GC.Spread.Sheets.SheetArea.viewport).locked(true);
+            }
+        }
+    },
+
     onRangeChanged: function(sender, args) {
         if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) {
             if (!confirm(`确定要删除选中的 ${args.rowCount} 条辅助定额吗?`)){return; }
@@ -122,7 +136,7 @@ var gljOprObj = {
 
         //activitySheet.clear(0, 0, activitySheet.getRowCount(), activitySheet.getColumnCount(), GC.Spread.Sheets.SheetArea.viewport, GC.Spread.Sheets.StorageType.data);
        // ------sheetCommonObj.showData(this.sheet,this.setting,gljList);
-       // sheetCommonObj.lockCells(this.sheet,this.setting);
+        sheetCommonObj.lockCells(this.sheet,this.setting);
     },
     showRationGLJData:function (node) {
         let gljList = [];
@@ -183,6 +197,9 @@ var gljOprObj = {
         });
     },
     updateRationGLJ:function (args,updateFunction) {
+        if(!updateFunction){
+            return
+        }
         var me = gljOprObj;
         var newval = this.numberValueChecking(args.editingText);
         var recode = me.sheetData[args.row];