瀏覽代碼

fix: 将材料类型为商砼的替换成类型为混凝土的材料,替换后的材料的类型被认为商砼,且不显示组成物。

zhangweicheng 4 年之前
父節點
當前提交
e1a4dc2dec

+ 19 - 6
modules/main/facade/info_price_facade.js

@@ -28,7 +28,7 @@ segment.useDefault();
 let nodejieba = require('../../dict/jieba');
 let nodejieba = require('../../dict/jieba');
 
 
 let nameWeightMap ={ 
 let nameWeightMap ={ 
-  '普通':-99
+ // '普通':-99
 }
 }
 
 
 
 
@@ -112,6 +112,12 @@ async function getDataByCondition(data,compilation){
   if (data.code) { 
   if (data.code) { 
     result = await getDataByCode(data.code, data);
     result = await getDataByCode(data.code, data);
     if (result.totalSize > 0) return result;
     if (result.totalSize > 0) return result;
+
+    //如果分类编码有结果,但是确没有匹配的条数,说明关键字没匹配上,直接返回没有信息价
+    if(result.allItems > 0 && result.totalSize === 0){
+      return result;
+    }
+
   }
   }
  
  
   //编号匹配不上的情况:
   //编号匹配不上的情况:
@@ -153,14 +159,19 @@ async function getDataByCode(code, data) {
       if(item.name.indexOf(data.keyWord) != -1) items.push(item) //有完全匹配的,就不用编码下的返回所有数据了
       if(item.name.indexOf(data.keyWord) != -1) items.push(item) //有完全匹配的,就不用编码下的返回所有数据了
     }
     }
   }
   }
-  //没有完全匹配的,返回所有
-  if (items.length === 0) items = allItems;
+  //没有完全匹配的,分词匹配关键字
+  if (items.length === 0){
+    let nameArray =  nodejieba.cut(data.keyWord);
+    nameArray = cusSegment(nameArray,data.keyWord);
+    let result = getMatchPrice(allItems,nameArray);
+    items = result.items;
+  }
 
 
   let totalSize = items.length;
   let totalSize = items.length;
 
 
   //新需求结束 --------- 
   //新需求结束 --------- 
 
 
-  return {totalSize,items}
+  return {totalSize,items,allItems}
 }
 }
 
 
 
 
@@ -176,8 +187,10 @@ async function getDataByKeyWord(keyword, data) {
 
 
 //按全关键字匹配
 //按全关键字匹配
 async function getDataByFullKeyWord(keyword, data){
 async function getDataByFullKeyWord(keyword, data){
-  data.condition.name = new RegExp(keyword);
-  let items = await infoItemsModel.find(data.condition).lean().sort({"_id":1});
+  let items = [];  
+  data.condition.name =  new RegExp(keyword);
+  items = await infoItemsModel.find(data.condition).lean().sort({"_id":1});
+ 
   delete data.condition.name;
   delete data.condition.name;
   return{totalSize:items.length,items}
   return{totalSize:items.length,items}
 }
 }

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

@@ -235,7 +235,7 @@ async function replaceGLJ(req, res){
         let rdata= await ration_glj_facade.replaceGLJ(data,req.session.sessionCompilation);
         let rdata= await ration_glj_facade.replaceGLJ(data,req.session.sessionCompilation);
         result.data=rdata;
         result.data=rdata;
     }catch (err){
     }catch (err){
-        logger.err(err);
+        logger.err(err.stack);
         result.error=1;
         result.error=1;
         result.message = err.message;
         result.message = err.message;
     }
     }

+ 4 - 0
web/building_saas/main/js/models/project_glj.js

@@ -79,6 +79,10 @@ ProjectGLJ.prototype.loadDataSync = async function () {
 ProjectGLJ.prototype.refreshByDatas = function(datas){
 ProjectGLJ.prototype.refreshByDatas = function(datas){
     this.datas = datas;
     this.datas = datas;
     this.calcQuantity();
     this.calcQuantity();
+    this.datas.gljMap =  {};
+    for(let g of this.datas.gljList){
+        this.datas.gljMap[gljUtil.getIndex(g)]=g;
+     }
 };
 };
 
 
 
 

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

@@ -832,6 +832,7 @@ let ration_glj = {
             oldData.original_code = glj.code;
             oldData.original_code = glj.code;
             oldData.unit = glj.unit;
             oldData.unit = glj.unit;
             oldData.specs = glj.specs;
             oldData.specs = glj.specs;
+            oldData.type = glj.gljType;
             oldData.model = glj.model;
             oldData.model = glj.model;
             oldData.basePrice = glj.basePrice;
             oldData.basePrice = glj.basePrice;
             oldData.marketPrice = glj.basePrice;
             oldData.marketPrice = glj.basePrice;