|
@@ -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) {
|