Browse Source

TASK #2610 新增清单指引库时,如果是“重庆费用定额(2018)”,则默认叶子清单的

zhongzewei 6 years ago
parent
commit
aadf7b24e3

+ 27 - 1
modules/std_billsGuidance_lib/facade/facades.js

@@ -19,6 +19,7 @@ const stdBillsModel = mongoose.model('std_bills_lib_bills');
 const stdBillsJobsModel = mongoose.model('std_bills_lib_jobContent');
 const stdBillsJobsModel = mongoose.model('std_bills_lib_jobContent');
 const stdRationModel = mongoose.model('std_ration_lib_ration_items');
 const stdRationModel = mongoose.model('std_ration_lib_ration_items');
 const engLibModel = mongoose.model('engineering_lib');
 const engLibModel = mongoose.model('engineering_lib');
+const compilationModel = mongoose.model('compilation');
 const _ = require('lodash');
 const _ = require('lodash');
 
 
 module.exports = {
 module.exports = {
@@ -56,6 +57,24 @@ async function getBillsGuideLibs(findData) {
     return await billsGuideLibModel.find(findData);
     return await billsGuideLibModel.find(findData);
 }
 }
 
 
+// 如果是“重庆费用定额(2018)”,则默认叶子清单的项目指引窗口只有一条数据,取清单名称。
+async function genGuidanceItems_cq18(guidanceLibId, billsLibId) {
+    let bills = await stdBillsModel.find({billsLibId: billsLibId, deleted: false, 'jobs.0': {$exists: true}});
+    let insertArr = [];
+    for(let bill of bills){
+        let newItem = {
+            libID: guidanceLibId,
+            ID: uuidV1(), ParentID: -1,
+            NextSiblingID: -1,
+            name: bill.name,
+            type: 0,
+            billsID: bill.ID
+        };
+        insertArr.push({insertOne: {document: newItem}});
+    }
+    await billsGuideItemsModel.bulkWrite(insertArr);
+}
+
 //拷贝工作内容并转化为树结构,形成项目指引数据
 //拷贝工作内容并转化为树结构,形成项目指引数据
 async function genGuidanceItems(guidanceLibId, billsLibId){
 async function genGuidanceItems(guidanceLibId, billsLibId){
     let bills = await stdBillsModel.find({billsLibId: billsLibId, deleted: false, 'jobs.0': {$exists: true}});
     let bills = await stdBillsModel.find({billsLibId: billsLibId, deleted: false, 'jobs.0': {$exists: true}});
@@ -103,7 +122,14 @@ async function genGuidanceItems(guidanceLibId, billsLibId){
 
 
 async function initBillsGuideLib(updateData){
 async function initBillsGuideLib(updateData){
     await billsGuideLibModel.create(updateData);
     await billsGuideLibModel.create(updateData);
-    await genGuidanceItems(updateData.ID, updateData.billsLibId);
+    let compilation = await compilationModel.findOne({_id: mongoose.Types.ObjectId(updateData.compilationId)});
+    if (compilation &&
+        compilation.overWriteUrl &&
+        compilation.overWriteUrl === '/web/over_write/js/chongqing_2018.js') {
+        await genGuidanceItems_cq18(updateData.ID, updateData.billsLibId);
+    } else {
+        await genGuidanceItems(updateData.ID, updateData.billsLibId);
+    }
 }
 }
 
 
 async function updateBillsGuideLib(data) {
 async function updateBillsGuideLib(data) {

+ 7 - 6
modules/std_glj_lib/models/gljModel.js

@@ -30,13 +30,13 @@ class GljDao  extends OprDao{
 
 
      sortToNumber(datas){
      sortToNumber(datas){
         for(let i = 0, len = datas.length; i < len; i++){
         for(let i = 0, len = datas.length; i < len; i++){
-            let data = datas[i]._doc;
+            let data = datas[i];
             if(this._exist(data, 'basePrice')){
             if(this._exist(data, 'basePrice')){
                 data['basePrice'] = parseFloat(data['basePrice']);
                 data['basePrice'] = parseFloat(data['basePrice']);
             }
             }
             if(this._exist(data, 'component')){
             if(this._exist(data, 'component')){
                 for(let j = 0, jLen = data['component'].length; j < jLen; j++){
                 for(let j = 0, jLen = data['component'].length; j < jLen; j++){
-                    let comGljObj = data['component'][j]._doc;
+                    let comGljObj = data['component'][j];
                     if(this._exist(comGljObj, 'consumeAmt')){
                     if(this._exist(comGljObj, 'consumeAmt')){
                         comGljObj['consumeAmt'] = parseFloat(comGljObj['consumeAmt']);
                         comGljObj['consumeAmt'] = parseFloat(comGljObj['consumeAmt']);
                     }
                     }
@@ -48,6 +48,7 @@ class GljDao  extends OprDao{
     async getGljItemsByRep(repositoryId,callback = null){
     async getGljItemsByRep(repositoryId,callback = null){
         try {
         try {
             let rst = await gljModel.find({repositoryId: repositoryId}).lean();
             let rst = await gljModel.find({repositoryId: repositoryId}).lean();
+            this.sortToNumber(rst);
             callback(0, rst);
             callback(0, rst);
         } catch (err) {
         } catch (err) {
             callback(1, null);
             callback(1, null);
@@ -79,7 +80,7 @@ class GljDao  extends OprDao{
 
 
     getGljItemByType (repositoryId, type, callback){
     getGljItemByType (repositoryId, type, callback){
         let me = this;
         let me = this;
-        gljModel.find({"repositoryId": repositoryId, "gljType": type},function(err,data){
+        gljModel.find({"repositoryId": repositoryId, "gljType": type}, '-_id', {lean: true}, function(err,data){
             if(err) callback(true, "");
             if(err) callback(true, "");
             else {
             else {
                 me.sortToNumber(data);
                 me.sortToNumber(data);
@@ -90,7 +91,7 @@ class GljDao  extends OprDao{
 
 
     getGljItem (repositoryId, code, callback){
     getGljItem (repositoryId, code, callback){
         let me = this;
         let me = this;
-        gljModel.find({"repositoryId": repositoryId, "code": code},function(err,data){
+        gljModel.find({"repositoryId": repositoryId, "code": code}, '-_id', {lean: true}, function(err,data){
             if(err) callback(true, "")
             if(err) callback(true, "")
             else {
             else {
                 me.sortToNumber(data);
                 me.sortToNumber(data);
@@ -101,7 +102,7 @@ class GljDao  extends OprDao{
 
 
     getGljItems (gljIds, callback){
     getGljItems (gljIds, callback){
         let me = this;
         let me = this;
-        gljModel.find({"ID": {"$in": gljIds}},function(err,data){
+        gljModel.find({"ID": {"$in": gljIds}}, '-_id', {lean: true}, function(err,data){
             if(err) callback(true, "")
             if(err) callback(true, "")
             else {
             else {
                 me.sortToNumber(data);
                 me.sortToNumber(data);
@@ -112,7 +113,7 @@ class GljDao  extends OprDao{
 
 
     getGljItemsByCode (repositoryId, codes, callback){
     getGljItemsByCode (repositoryId, codes, callback){
         let me = this;
         let me = this;
-        gljModel.find({"repositoryId": repositoryId,"code": {"$in": codes}},function(err,data){
+        gljModel.find({"repositoryId": repositoryId,"code": {"$in": codes}}, '-_id', {lean: true}, function(err,data){
             if(err) callback(true, "");
             if(err) callback(true, "");
             else {
             else {
                 me.sortToNumber(data);
                 me.sortToNumber(data);

+ 9 - 1
web/maintain/billsGuidance_lib/js/main.js

@@ -107,7 +107,15 @@ const billsGuidanceMain = (function () {
                 //新建
                 //新建
                 $.bootstrapLoading.start();
                 $.bootstrapLoading.start();
                 $('#addY').addClass('disabled');
                 $('#addY').addClass('disabled');
-                let createData = {type: parseInt(addType.val()), ID: uuid.v1(), name: cName, compilationId: compilationId, compilationName: compilationName, billsLibId: parseInt(billsLibId), billsLibName:billsLibName};
+                let createData = {
+                    type: parseInt(addType.val()),
+                    ID: uuid.v1(),
+                    name: cName,
+                    compilationId: compilationId,
+                    compilationName: compilationName,
+                    billsLibId: parseInt(billsLibId),
+                    billsLibName:billsLibName
+                };
                 let updateData = {updateType: updateType.create, updateData: createData};
                 let updateData = {updateType: updateType.create, updateData: createData};
                 CommonAjax.post('/billsGuidance/api/updateBillsGuideLib', updateData, function (rstData) {
                 CommonAjax.post('/billsGuidance/api/updateBillsGuideLib', updateData, function (rstData) {
                     guidanceLibs.push(rstData);
                     guidanceLibs.push(rstData);