Explorar o código

add/replace/multi_replace GLJ

zhangweicheng %!s(int64=7) %!d(string=hai) anos
pai
achega
949b3e6b09

+ 42 - 3
modules/ration_glj/controllers/ration_glj_controller.js

@@ -4,12 +4,15 @@
 let mongoose = require("mongoose")
 let ration_glj_facade = require('../facade/ration_glj_facade')
 import EngineeringLibModel from "../../users/models/engineering_lib_model";
+let logger = require("../../../logs/log_helper").logger;
 
 module.exports={
     createRationGLJ:createRationGLJ,
     testGetQuantify:testGetQuantify,
     getGLJData:getGLJData,
-    addGLJ:addGLJ
+    addGLJ:addGLJ,
+    replaceGLJ:replaceGLJ,
+    mReplaceGLJ:mReplaceGLJ
 }
 function createRationGLJ() {
     let gls = mongoose.model('ration_glj');
@@ -50,7 +53,7 @@ async function getGLJData(req, res) {
             res.json(result);
         });
     }catch (err){
-        console.log(err);
+        logger.err(err);
         result.error=1;
         result.message = err.message;
         res.json(result);
@@ -67,7 +70,43 @@ async function addGLJ(req, res){
         let datas= await ration_glj_facade.addGLJ(data);
         result.data=datas;
     }catch (err){
-        console.log(err);
+        logger.err(err);
+        result.error=1;
+        result.message = err.message;
+    }
+    res.json(result);
+}
+
+async function replaceGLJ(req, res){
+    let result={
+        error:0
+    }
+    try {
+        let data = req.body.data;
+        data = JSON.parse(data);
+        console.log(data);
+        let datas= await ration_glj_facade.replaceGLJ(data);
+        result.data=datas;
+    }catch (err){
+        logger.err(err);
+        result.error=1;
+        result.message = err.message;
+    }
+    res.json(result);
+}
+
+async function mReplaceGLJ(req, res){
+    let result={
+        error:0
+    }
+    try {
+        let data = req.body.data;
+        data = JSON.parse(data);
+        console.log(data);
+        let datas= await ration_glj_facade.mReplaceGLJ(data);
+        result.data=datas;
+    }catch (err){
+        logger.err(err);
         result.error=1;
         result.message = err.message;
     }

+ 32 - 2
modules/ration_glj/facade/ration_glj_facade.js

@@ -30,7 +30,9 @@ module.exports={
     getQuantityByProjectGLJ:getQuantityByProjectGLJ,
     getLibInfo:getLibInfo,
     getGLJData:getGLJData,
-    addGLJ:addGLJ
+    addGLJ:addGLJ,
+    replaceGLJ:replaceGLJ,
+    mReplaceGLJ:mReplaceGLJ
 }
 
 let operationMap={
@@ -152,6 +154,8 @@ function createNewRecord(ration_glj) {
     newRecoed.code = ration_glj.code;
     newRecoed.unit = ration_glj.unit;
     newRecoed.specs = ration_glj.specs;
+    newRecoed.from=ration_glj.from?ration_glj.from:undefined;
+    newRecoed.createType=ration_glj.createType?ration_glj.createType:undefined;
     newRecoed.shortName = ration_glj.shortName;
     newRecoed.type = ration_glj.type;
     newRecoed.repositoryId = ration_glj.repositoryId;
@@ -609,7 +613,8 @@ function getGLJSearchInfo(ration_glj) {
         type_of_work: ration_glj.type,
         base_price: ration_glj.basePrice,
         market_price: ration_glj.basePrice,
-        repositoryId:ration_glj.repositoryId
+        repositoryId:ration_glj.repositoryId,
+        from:ration_glj.from?ration_glj.from:'std'//std:标准工料机库, cpt:补充工料机库
     };
     return data;
 }
@@ -636,6 +641,31 @@ async function addGLJ(rgList) {
    return result;
 }
 
+async function replaceGLJ(data) {
+    let projectGljModel = new GLJListModel();
+    let result = await projectGljModel.addList(getGLJSearchInfo(data));
+    data.marketPrice=result.unit_price.market_price;
+    data.adjustPrice=result.unit_price.base_price;
+    data.basePrice=result.unit_price.base_price;
+    data.projectGLJID=result.id;
+    data.isEstimate=result.is_evaluate;
+    let updateResult=await ration_glj.findOneAndUpdate({ID:data.ID,projectID:data.projectID},data);
+    return data
+}
+async function mReplaceGLJ(data) {
+    let projectGljModel = new GLJListModel();
+    let result = await projectGljModel.addList(getGLJSearchInfo(data.doc));
+    data.doc.marketPrice=result.unit_price.market_price;
+    data.doc.adjustPrice=result.unit_price.base_price;
+    data.doc.basePrice=result.unit_price.base_price;
+    data.doc.projectGLJID=result.id;
+    data.doc.isEstimate=result.is_evaluate;
+    let updateResult=await ration_glj.update(data.query,data.doc,{multi: true});
+    console.log(updateResult);
+    return data
+}
+
+
 function getData(projectID, callback) {
     ration_glj.find({'projectID':projectID},(err,datas)=>{
         if(err){

+ 2 - 0
modules/ration_glj/routes/ration_glj_route.js

@@ -10,6 +10,8 @@ module.exports = function (app) {
     var rgRouter = express.Router();
     rgRouter.get('/getGLJData', rgController.getGLJData);
     rgRouter.post('/addGLJ',rgController.addGLJ);
+    rgRouter.post('/replaceGLJ',rgController.replaceGLJ);
+    rgRouter.post('/mReplaceGLJ',rgController.mReplaceGLJ);
     app.use('/rationGlj',rgRouter);
 }
 

+ 57 - 10
web/building_saas/main/js/models/ration_glj.js

@@ -167,15 +167,6 @@ var ration_glj = {
             this.project.push(this.getSourceType, data);
             this.project.endUpdate();
         };
-
-        ration_glj.prototype.replaceGLJ = function (data, newGLJID) {
-            this.project.beginUpdate('replaceGLJ');
-            data.GLJID = newGLJID;
-            data.updateType = 'ut_update';
-            this.project.push(this.getSourceType, data);
-            this.project.endUpdate();
-        };
-
         ration_glj.prototype.addRationGLJ = function (newRation,data) {
             var souceTypeList=[];
             var criteriaDataList = [];
@@ -325,7 +316,7 @@ var ration_glj = {
         };
         ration_glj.prototype.addGLJByLib=function (GLJSelection,ration,callback) {
           var gljList=[];
-          var allGLJ=gljOprObj.stdGLJ.concat(gljOprObj.complementaryGLJs);
+          var allGLJ=gljOprObj.AllRecode;
             GLJSelection.sort();
           _.forEach(GLJSelection,function (g) {
               var glj=_.find(allGLJ,{'code':g});
@@ -352,8 +343,64 @@ var ration_glj = {
           });
             CommonAjax.post("/rationGlj/addGLJ",gljList,callback);
         };
+        ration_glj.prototype.replaceGLJ=function (selectCode,oldData,callback) {
+            var allGLJ=gljOprObj.AllRecode;
+            var glj=_.find(allGLJ,{'code':selectCode});
+            if(selectCode==oldData.code){
+                return callback(null);
+            }
+            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;
+            oldData.basePrice=glj.basePrice;
+            oldData.repositoryId=glj.repositoryId;
+            if(glj.hasOwnProperty("compilationId")){
+                oldData.from="cpt";
+            }else {
+                oldData.from="std";
+            }
+            CommonAjax.post("/rationGlj/replaceGLJ",oldData,callback);
+        };
+
+        ration_glj.prototype.mReplaceGLJ=function (selectCode,oldData,callback) {
+            var allGLJ=gljOprObj.AllRecode;
+            var glj=_.find(allGLJ,{'code':selectCode});
+            if(selectCode==oldData.code){
+                return callback(null);
+            }
+            var query={
+                projectID:oldData.projectID,
+                code:oldData.code,
+                name:oldData.name
+            }
+            var doc={
+                GLJID:glj.ID,
+                createType:'replace',
+                rationItemQuantity:0,
+                name:glj.name,
+                rcode:oldData.code,
+                code:glj.code,
+                unit:glj.unit,
+                specs:glj.specs,
+                type:glj.gljType,
+                basePrice:glj.basePrice,
+                repositoryId:glj.repositoryId,
+                projectID:oldData.projectID
+            }
+            if(glj.hasOwnProperty("compilationId")){
+                doc.from="cpt";
+            }else {
+                doc.from="std";
+            }
+            CommonAjax.post("/rationGlj/mReplaceGLJ",{query:query,doc:doc},callback);
 
 
+        };
         return new ration_glj(project);
     }
 };

+ 110 - 22
web/building_saas/main/js/views/glj_view.js

@@ -703,6 +703,9 @@ var gljOprObj = {
         }else {
             me.gljLibSheetData=me[val];
         }
+        if($('#actionType').val()!='add'){
+            me.filterLibGLJByType();
+        }
         if(me.gljCurTypeId==undefined){
             return;
         }
@@ -713,9 +716,15 @@ var gljOprObj = {
         } else {
             me.gljLibSheetData = _.filter(me.gljLibSheetData,{'gljClass':me.gljCurTypeId});
         }
-
     },
     setGLJSelection:function (args,newVal) {
+        if($('#actionType').val()=='add'){
+            this.addGLJsSelection(args,newVal);
+        }else {
+            this.replaceGLJSelection(args,newVal);
+        }
+    },
+    addGLJsSelection:function (args,newVal) {
         if(newVal==1){
             this.GLJSelection.push(this.gljLibSheetData[args.row].code);
             this.gljLibSheetData[args.row].select=1;
@@ -724,6 +733,28 @@ var gljOprObj = {
             this.gljLibSheetData[args.row].select=0;
         }
     },
+    replaceGLJSelection:function (args,newVal) {
+        var oldSelection=this.GLJSelection[0];
+        if(newVal==0){
+            args.sheet.getCell(args.row, args.col).value(1);
+            return;
+        }
+        this.GLJSelection=[this.gljLibSheetData[args.row].code];
+        this.gljLibSheetData[args.row].select=1;
+        var oindex = _.findIndex(this.gljLibSheetData,{'code':oldSelection});
+        if(oindex!=-1){
+            args.sheet.getCell(oindex, args.col).value(0);
+            this.gljLibSheetData[oindex].select=0;
+        }else {
+            var oldData = _.find(gljOprObj.AllRecode,{'code':oldSelection})
+            oldData.select=0;
+        }
+    },
+    filterLibGLJByType:function () {
+        var me=this;
+        var selected=me.sheetData[gljContextMenu.selectedRow];
+        me.gljLibSheetData=_.filter(me.gljLibSheetData,{'gljType':selected.type});
+    },
     getComboData: function (gljDistType) {
         let me = this;
         let distType;
@@ -757,6 +788,63 @@ var gljOprObj = {
         });
         return distTypeTree;
     },
+    doAddGLJ:function () {
+        var selected = projectObj.project.mainTree.selected;
+        var project= projectObj.project;
+        gljOprObj.GLJSelection= _.filter(gljOprObj.GLJSelection,function (n) {
+            return _.find(gljOprObj.sheetData,{'code':n})?false:true;
+        })
+        if(gljOprObj.GLJSelection.length>0&&selected&&selected.sourceType==ModuleNames.ration){
+            project.ration_glj.addGLJByLib(gljOprObj.GLJSelection,selected.data,function (result) {
+                if(result){
+                    project.ration_glj.datas = project.ration_glj.datas.concat(result.newRecodes);
+                    gljOprObj.sheetData = gljOprObj.sheetData.concat(result.showData)
+                    gljOprObj.showRationGLJSheetData();
+                    project.projectGLJ.loadData();
+                    $("#glj_tree_div").modal('hide');
+                }
+            });//doc.rationID=selected.data.ID;
+        }else {
+            $("#glj_tree_div").modal('hide');
+        }
+
+    },
+    doReplaceGLJ:function () {
+        var me=this;
+        var oldData=me.sheetData[gljContextMenu.selectedRow];
+        var project= projectObj.project;
+        var selectCode=gljOprObj.GLJSelection[0];
+        project.ration_glj.replaceGLJ(selectCode,oldData,function (result) {
+            if(result){
+                var index = _.findIndex(gljOprObj.sheetData,{'ID':result.ID});
+                gljOprObj.sheetData[index]=result;
+                gljOprObj.showRationGLJSheetData();
+                project.projectGLJ.loadData();
+            }
+            $("#glj_tree_div").modal('hide');
+        })
+    },
+    doMReplaceGLJ:function () {
+        var me=this;
+        var oldData=me.sheetData[gljContextMenu.selectedRow];
+        var project= projectObj.project;
+        var selectCode=gljOprObj.GLJSelection[0];
+        project.ration_glj.mReplaceGLJ(selectCode,oldData,function (result) {
+            _.forEach(project.ration_glj.datas,function (t) {
+                if(t.code==result.query.code&&t.name==result.query.name){
+                    me.updateProperty(t,result.doc);
+                }
+            })
+            gljOprObj.showRationGLJSheetData();
+            project.projectGLJ.loadData();
+            $("#glj_tree_div").modal('hide');
+        })
+    },
+    updateProperty:function (obj,doc) {
+        _.forEach(doc, function(n, key) {
+            obj[key] = n;
+        });
+    },
     refreshView:function () {
         this.showRationGLJData();
     }
@@ -771,15 +859,27 @@ $(function(){
             gljOprObj.gljLibSheet.options.isProtected = true;
             gljOprObj.gljLibSheet.name('glj_lib');
         }
-        gljOprObj.GLJSelection=[];
-        gljOprObj.gljLibSheetData =gljOprObj.stdGLJ.concat(gljOprObj.complementaryGLJs);
+        gljOprObj.gljLibSheetData =gljOprObj.AllRecode;
+        var selected=null;
+        if($('#actionType').val()=='add'){
+            gljOprObj.GLJSelection=[];
+        }else {
+             selected=gljOprObj.sheetData[gljContextMenu.selectedRow];
+            gljOprObj.GLJSelection=[selected.code];
+            gljOprObj.filterLibGLJByType();
+        }
+
+        if(selected!=null){
+            var r = _.find(gljOprObj.gljLibSheetData,{'code':selected.code});
+            r?r.select=1:"";
+        }
         gljOprObj.showLibGLJSheetData();
     });
 
     $('.glj-radio').change(function () {
         let val = $("input[name='glj']:checked").val();
         if(val=='allGljs'){
-            gljOprObj.gljLibSheetData =gljOprObj.stdGLJ.concat(gljOprObj.complementaryGLJs);
+            gljOprObj.gljLibSheetData =gljOprObj.AllRecode;
             gljOprObj.filterLibGLJSheetData();
             gljOprObj.showLibGLJSheetData();
         }else {
@@ -789,28 +889,16 @@ $(function(){
         }
      })
     $('#glj_selected_conf').click(function () {
-        gljOprObj.GLJSelection= _.filter(gljOprObj.GLJSelection,function (n) {
-            return _.find(gljOprObj.sheetData,{'code':n})?false:true;
-        })
         if(gljOprObj.GLJSelection.length<1){
             return;
         }
-        var selected = projectObj.project.mainTree.selected;
-        if(selected&&selected.sourceType==ModuleNames.ration){
-            projectObj.project.ration_glj.addGLJByLib(gljOprObj.GLJSelection,selected.data,function (result) {
-                if(result){
-                    projectObj.project.ration_glj.datas = projectObj.project.ration_glj.datas.concat(result.newRecodes);
-                    gljOprObj.sheetData = gljOprObj.sheetData.concat(result.showData)
-                    gljOprObj.showRationGLJSheetData();
-                    projectObj.project.projectGLJ.loadData();
-                }
-                console.log("return---------------");
-                console.log(result);
-                $("#glj_tree_div").modal('hide');
-            });//doc.rationID=selected.data.ID;
+        if($('#actionType').val()=='add'){
+            gljOprObj.doAddGLJ();
+        }else if($('#actionType').val()=='replace'){
+            gljOprObj.doReplaceGLJ();
+        }else if($('#actionType').val()=='m_replace'){
+            gljOprObj.doMReplaceGLJ();
         }
-
-
     })
 })
 

+ 45 - 13
web/building_saas/main/js/views/glj_view_contextMenu.js

@@ -30,7 +30,7 @@ var gljContextMenu = {
                 },
                 "add_glj": {
                     name: '添加工料机',
-                    icon: 'fa-remove',
+                    icon: 'fa-sign-in',
                     disabled: function () {
                         var selected = projectObj.project.mainTree.selected;
                         if(selected&&selected.sourceType==ModuleNames.ration){
@@ -38,19 +38,38 @@ var gljContextMenu = {
                         }
                         return true;
                     },
+                    callback:function () {
+                        getGLJData('add');
+                    }
+                },
+                "replace_glj": {
+                    name: '替换工料机',
+                    icon: 'fa-sign-in',
+                    disabled: function () {
+                        var sheetData = gljOprObj.sheetData;
+                        var disable = true;
+                        if(subSpread.getActiveSheetIndex()==0&&sheetData!=null&&sheetData.length>0&&gljContextMenu.selectedRow<sheetData.length){
+                            disable=false
+                        }
+                        return disable;
+                    },
                     callback: function () {
-
-                        projectObj.project.ration_glj.getGLJData(function (result) {
-                            zTreeHelper.createTree(result.datas.treeData, gljOprObj.gljTreeSetting, "gljTree", gljOprObj);
-                            gljOprObj.stdGLJ=result.datas.stdGLJ;
-                            gljOprObj.complementaryGLJs=result.datas.complementaryGLJs;
-                            gljOprObj.distTypeTree=gljOprObj.getComboData(result.datas.distTypeTree);
-                            $('#modalCon').width($(window).width()*0.5);
-                            $("input[name='glj']").get(0).checked=true;
-                            $("#glj_tree_div").modal({show:true});
-                            console.log(result)
-                        })
-
+                        getGLJData('replace');
+                    }
+                },
+                "m_replace_glj": {
+                    name: '批量替换工料机',
+                    icon: 'fa-sign-in',
+                    disabled: function () {
+                        var sheetData = gljOprObj.sheetData;
+                        var disable = true;
+                        if(subSpread.getActiveSheetIndex()==0&&sheetData!=null&&sheetData.length>0&&gljContextMenu.selectedRow<sheetData.length){
+                            disable=false
+                        }
+                        return disable;
+                    },
+                    callback: function () {
+                        getGLJData('m_replace');
                     }
                 }
             }
@@ -151,5 +170,18 @@ var gljContextMenu = {
         //controller.setTreeSelected(controller.tree.items[target.row]);
         return target.hitTestType === GC.Spread.Sheets.SheetArea.viewport || target.hitTestType === GC.Spread.Sheets.SheetArea.rowHeader;
     }
+}
 
+function getGLJData(actionType) {
+    $('#actionType').val(actionType);
+    projectObj.project.ration_glj.getGLJData(function (result) {
+        zTreeHelper.createTree(result.datas.treeData, gljOprObj.gljTreeSetting, "gljTree", gljOprObj);
+        gljOprObj.stdGLJ=result.datas.stdGLJ;
+        gljOprObj.complementaryGLJs=result.datas.complementaryGLJs;
+        gljOprObj.AllRecode=gljOprObj.stdGLJ.concat(gljOprObj.complementaryGLJs);
+        gljOprObj.distTypeTree=gljOprObj.getComboData(result.datas.distTypeTree);
+        $('#modalCon').width($(window).width()*0.5);
+        $("input[name='glj']").get(0).checked=true;
+        $("#glj_tree_div").modal({show:true});
+    })
 }