浏览代码

bug fixed

zhangweicheng 7 年之前
父节点
当前提交
b4df60bb9f

+ 1 - 2
modules/complementary_glj_lib/models/gljModel.js

@@ -262,11 +262,10 @@ class GljDao {
      */
     async getComponent(gljId) {
         let result = [];
-        let libGljData = await complementaryGljModel.find({ID: gljId});
+        let libGljData = await complementaryGljModel.findOne({ID: gljId});
         if (libGljData === null || libGljData.component.length <= 0) {
             return result;
         }
-
         // 标准工料机库
         let componentIdListStd = [];
         // 补充工料机库

+ 21 - 10
modules/glj/models/glj_list_model.js

@@ -297,6 +297,7 @@ class GLJListModel extends BaseModel {
                 throw '没有对应的单价文件';
             }
             let CompositionGLJ=[];
+            let unitPriceModel = new UnitPriceModel();
             // 判断类型,如果是混凝土、砂浆或者配合比则查找对应的组成物(前提是没有对应的项目工料机数据)
             if (data.type === GLJTypeConst.CONCRETE || data.type === GLJTypeConst.MORTAR ||
                 data.type === GLJTypeConst.MIX_RATIO || data.type === GLJTypeConst.GENERAL_MACHINE) {
@@ -305,11 +306,20 @@ class GLJListModel extends BaseModel {
                     await this.compositionInit(data, unitPriceFileId);
                 }
                 CompositionGLJ=await this.getCompositionGLJByData(data,unitPriceFileId);
+                if(isAddProjectGLJ==false&&CompositionGLJ.length==0){//如果不是新增,并且是有组成物的类型但又没有发现组成物的情况下,有可能是错误数据,重新在库中查找一下组成物,有则插入
+                    await this.compositionInit(data, unitPriceFileId);
+                    CompositionGLJ=await this.getCompositionGLJByData(data,unitPriceFileId);
+
+                    if(CompositionGLJ.length>0){//如果这次发现又有组成物了,则把旧的单价数据删除,在后面的操作中会重新增加
+                        let de_condition ={unit_price_file_id: unitPriceFileId,code:data.code,name:data.name,unit:data.unit,type:data.type};
+                        data.specs!=null&&data.specs!=undefined&&data.specs!=""?de_condition.specs = data.specs:de_condition;
+                        await unitPriceModel.db.delete(de_condition);
+                    }
+                }
             }
             projectGljData.subList=CompositionGLJ;
 
             // 新增单价文件
-            let unitPriceModel = new UnitPriceModel();
             let [unitPriceInsertData, isAdd] = await unitPriceModel.addUnitPrice(data, unitPriceFileId);
 
             if (!unitPriceInsertData) {
@@ -550,7 +560,6 @@ class GLJListModel extends BaseModel {
         // 查找对应组成物的项目工料机数据
         let indexs=['code','name','specs','unit','type'];
         let [projectGljList, compositionGljList] = await this.getCompositionGLJList(gljId, projectId, indexs, fromTable);
-
         // 整理配合比待插入数据
         let mixRatioInsertData = [];
         for (let tmp of compositionGljList) {
@@ -572,13 +581,16 @@ class GLJListModel extends BaseModel {
 
         // 插入配合比表
         // 因为有可能项目工料机与单价数据已存在,但配合比数据不存在,所以先插入配合比,后续判断如果存在项目工料机则可以省下数据库操作
-        let mixRatioModel = new MixRatioModel();
-        let addMixRatioResult = await mixRatioModel.add(mixRatioInsertData);
-        if (!addMixRatioResult) {
-            throw '组成物插入单价数据失败!';
+        if(mixRatioInsertData.length>0){
+            let mixRatioModel = new MixRatioModel();
+            let addMixRatioResult = await mixRatioModel.add(mixRatioInsertData);
+            if (!addMixRatioResult) {
+                throw '组成物插入单价数据失败!';
+            }
         }
+        let pglj_length = projectGljList instanceof Array ? projectGljList.length:Object.getOwnPropertyNames(projectGljList).length;
         // 如果已经存在则后续操作停止
-        if(Object.getOwnPropertyNames(projectGljList).length === compositionGljList.length) {
+        if(pglj_length === compositionGljList.length) {
             return
         }
 
@@ -691,9 +703,8 @@ class GLJListModel extends BaseModel {
         // 获取对应的组成物数据
         let gljListModel = fromTable === 'std' ? new STDGLJLibGLJListModel() : new GljModel();
         let componentGljList = await gljListModel.getComponent(gljId);
-
         if (componentGljList.length <= 0) {
-            throw '不存在对应的组成物';
+            return [{},[]];
         }
 
         let codeList = [];
@@ -742,7 +753,7 @@ class GLJListModel extends BaseModel {
         let typeList = [];
         let unitList = [];
         if(mixRatios.length<=0){
-            throw  '不存在对应的组成物';
+            return [[],[],[]];
         }
         let mixRatioData={};
         for(let tmp of mixRatios) {

+ 3 - 0
public/web/sheet/sheet_common.js

@@ -97,6 +97,9 @@ var sheetCommonObj = {
         //sheet.addRows(row, 1);
 
         sheet.clear(0, 0, sheet.getRowCount(), sheet.getColumnCount(), GC.Spread.Sheets.SheetArea.viewport, GC.Spread.Sheets.StorageType.data);
+        if(sheet.getRowCount()<data.length){
+            sheet.setRowCount(data.length);
+        }
         for (var col = 0; col < setting.header.length; col++) {
             var hAlign = "left", vAlign = "center";
             if (setting.header[col].hAlign) {