|
@@ -13,7 +13,9 @@ let treeUtil = require('../../../public/treeUtil');
|
|
|
let projectConst = consts.projectConst;
|
|
|
let projectConstList = consts.projectConstList;
|
|
|
const gljUtil = require('../../../public/gljUtil');
|
|
|
+const gljType = require('../../common/const/glj_type_const');
|
|
|
// const pm_facade = require('../../pm/facade/pm_facade');
|
|
|
+const GLJID_PRE = `gljId_`, COMPONENT_GLJID_PRE = `componetGljId_`;
|
|
|
|
|
|
|
|
|
const GLJ_TYPE = {
|
|
@@ -21,8 +23,14 @@ const GLJ_TYPE = {
|
|
|
Material: 2,
|
|
|
Machine: 3,
|
|
|
Main_Material: 4,
|
|
|
- Equipment: 5
|
|
|
+ Equipment: 5,
|
|
|
+
|
|
|
+ OTHER_MATERIAL: 207,
|
|
|
+ MACHINE_LABOUR: 303,
|
|
|
+ INSTRUMENT: 304,
|
|
|
+ FUEL_POWER_FEE: 305
|
|
|
};
|
|
|
+const oprMachines = [306, 307, 308, 309, 310, 311, 312];
|
|
|
|
|
|
class Rpt_Common{
|
|
|
initialize(rpt_tpl, currentDataObj) {
|
|
@@ -233,6 +241,17 @@ class Rpt_Data_Extractor {
|
|
|
setupFunc($PROJECT.DETAIL, item.moduleName, item);
|
|
|
}
|
|
|
let projectGLJDatas = getModuleDataByKey(rawDataObj.prjData, "projectGLJ");
|
|
|
+ if (projectGLJDatas) {
|
|
|
+ //增加一个辅助对象,方便通过gljid key直接获取数据,省去循环时间
|
|
|
+ let gljAssitantObj = {"gljIds": {}, "componentGljIds": {}};
|
|
|
+ projectGLJDatas.data.gljAssistant = gljAssitantObj;
|
|
|
+ for (let gljItem of projectGLJDatas.data.gljList) {
|
|
|
+ gljAssitantObj.gljIds[GLJID_PRE + gljItem.id] = gljItem;
|
|
|
+ if (!(gljItem.ratio_data) || gljItem.ratio_data.length === 0) {
|
|
|
+ gljAssitantObj.componentGljIds[COMPONENT_GLJID_PRE + gljItem.glj_id] = gljItem;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
let rationGLJDatas = getModuleDataByKey(rawDataObj.prjData, "ration_glj");
|
|
|
let rationDatas = getModuleDataByKey(rawDataObj.prjData, "ration");
|
|
|
let billsDatas = getModuleDataByKey(rawDataObj.prjData, "bills");
|
|
@@ -280,8 +299,13 @@ class Rpt_Data_Extractor {
|
|
|
adjustData(srcData, preHandle);
|
|
|
break;
|
|
|
case JV.PROP_HANDLE_TYPE_BILLS_DATA_MOVE:
|
|
|
+ //把显示在清单中的量材转移到工料机去
|
|
|
moveRationData(srcData, rawDataObj);
|
|
|
break;
|
|
|
+ case JV.PROP_HANDLE_TYPE_COMPONENT_REPLACEMENT:
|
|
|
+ //重庆2018 09-x表专用,机械数据用 组成物替换掉 ^_^!
|
|
|
+ componentReplacement(rawDataObj);
|
|
|
+ break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
@@ -668,6 +692,65 @@ function adjustData(sourceData, adjustCfg) {
|
|
|
replaceActDataArr(sourceData, rstArr);
|
|
|
}
|
|
|
|
|
|
+function componentReplacement(rawDataObj) {
|
|
|
+ let rationGljData = getModuleDataByKey(rawDataObj.prjData, projectConst.RATION_GLJ),
|
|
|
+ prjGljData = getModuleDataByKey(rawDataObj.prjData, projectConst.PROJECTGLJ),
|
|
|
+ gljAssistant = prjGljData.data.gljAssistant;
|
|
|
+ let connectStrArr = [], dataArr = getActDataArr(rationGljData), rvRGljIds = [], replaceGljItems = [];
|
|
|
+ for (let idx = 0; idx < dataArr.length; idx++) {
|
|
|
+ let rationGljItem = dataArr[idx];
|
|
|
+ if (rationGljItem.type === 301 || rationGljItem.type === 302) {
|
|
|
+ connectStrArr[0] = rationGljItem.code;
|
|
|
+ connectStrArr[1] = rationGljItem.name;
|
|
|
+ connectStrArr[2] = rationGljItem.specs;
|
|
|
+ connectStrArr[3] = rationGljItem.unit;
|
|
|
+ connectStrArr[4] = rationGljItem.type;
|
|
|
+ let mapData = prjGljData.data.mixRatioMap[connectStrArr.join('|-|')];
|
|
|
+ if (mapData) {
|
|
|
+ rvRGljIds.push(idx);
|
|
|
+ let rgItems = [];
|
|
|
+ replaceGljItems.push(rgItems);
|
|
|
+ for (let mapItem of mapData) {
|
|
|
+ let copyItem = {};
|
|
|
+ rgItems.push(copyItem);
|
|
|
+ copyItem.ID = `Replace_` + rationGljItem.ID;
|
|
|
+ copyItem.projectID = rationGljItem.projectID;
|
|
|
+ copyItem.GLJID = rationGljItem.GLJID;
|
|
|
+ copyItem.rationID = rationGljItem.rationID;
|
|
|
+ if (gljAssistant.componentGljIds[COMPONENT_GLJID_PRE + mapItem.glj_id]) {
|
|
|
+ copyItem.projectGLJID = gljAssistant.componentGljIds[COMPONENT_GLJID_PRE + mapItem.glj_id].id; //关键key
|
|
|
+ } else {
|
|
|
+ copyItem.projectGLJID = mapItem.glj_id; //不应该走到这一步,否则就是错误!!!
|
|
|
+ }
|
|
|
+ copyItem.rationItemQuantity = rationGljItem.rationItemQuantity;
|
|
|
+ // copyItem.quantity = rationGljItem.quantity;
|
|
|
+ copyItem.quantity = rationGljItem.quantity * mapItem.consumption;
|
|
|
+ copyItem.name = mapItem.name;
|
|
|
+ copyItem.code = mapItem.code;
|
|
|
+ copyItem.original_code = mapItem.code;
|
|
|
+ copyItem.unit = mapItem.unit;
|
|
|
+ copyItem.specs = mapItem.specs;
|
|
|
+ copyItem.model = gljAssistant.gljIds['gljId_'+rationGljItem.projectGLJID].model;
|
|
|
+ copyItem.shortName = mapItem.shortName;
|
|
|
+ copyItem.billsItemID = rationGljItem.billsItemID;
|
|
|
+ copyItem.type = mapItem.type; //关键key
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (rvRGljIds.length > 0) {
|
|
|
+ for (let lIdx = rvRGljIds.length - 1; lIdx >= 0; lIdx--) {
|
|
|
+ dataArr.splice(rvRGljIds[lIdx],1);
|
|
|
+ }
|
|
|
+ for (let componentItems of replaceGljItems) {
|
|
|
+ for (let compItem of componentItems) {
|
|
|
+ dataArr.push(compItem);
|
|
|
+ //gljAssistant[COMPONENT_GLJID_PRE + mapItem.glj_id]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
function moveRationData(rationData, rawDataObj) {
|
|
|
if (rawDataObj) {
|
|
|
// let rationData = getModuleDataByKey(rawDataObj.prjData, projectConst.RATION);
|
|
@@ -787,6 +870,54 @@ function addDummyData(sourceData, addCfg) {
|
|
|
replaceActDataArr(sourceData, rstArr);
|
|
|
}
|
|
|
|
|
|
+function getGLJBizType2018(orgType, orgCode, orgName) {
|
|
|
+ let rst = orgType;
|
|
|
+ if (orgType === GLJ_TYPE.Labour) {
|
|
|
+ rst = 11;
|
|
|
+ if (orgCode === "000000") rst = 10;
|
|
|
+ } else if (orgType === GLJ_TYPE.Material || (orgType >= 200 && orgType < 300)) {
|
|
|
+ //材料
|
|
|
+ if (orgCode === "000000") {
|
|
|
+ rst = 200; //2.材料
|
|
|
+ } else if (orgCode === "000000_1") {
|
|
|
+ rst = 230; //(1) 计价材料
|
|
|
+ } else if (orgCode === "000000_2") {
|
|
|
+ rst = 240; //(2) 其他材料费
|
|
|
+ } else {
|
|
|
+ if (orgType === GLJ_TYPE.OTHER_MATERIAL) {
|
|
|
+ //其他材料
|
|
|
+ rst = 245;
|
|
|
+ } else {
|
|
|
+ //计价材料
|
|
|
+ rst = 235;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (orgType === GLJ_TYPE.Machine || (orgType >= 300 && orgType < 400)) {
|
|
|
+ //机械
|
|
|
+ if (orgCode === "000000") {
|
|
|
+ rst = 300; //3.机械
|
|
|
+ } else if (orgCode === "000000_1") {
|
|
|
+ rst = 330; //(1) 机上人工
|
|
|
+ } else if (orgCode === "000000_2") {
|
|
|
+ rst = 340; //(2) 燃油动力费
|
|
|
+ } else if (orgCode === "000000_3") {
|
|
|
+ rst = 350; //(2) 施工机具摊销费
|
|
|
+ } else {
|
|
|
+ if (orgType === GLJ_TYPE.MACHINE_LABOUR) {
|
|
|
+ //机上人工
|
|
|
+ rst = 335;
|
|
|
+ } else if (orgType === GLJ_TYPE.FUEL_POWER_FEE) {
|
|
|
+ //燃油动力费
|
|
|
+ rst = 345;
|
|
|
+ } else if (oprMachines.indexOf(orgType) >= 0) {
|
|
|
+ //施工机具摊销费
|
|
|
+ rst = 355 + oprMachines.indexOf(orgType);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return rst;
|
|
|
+}
|
|
|
+
|
|
|
function getGLJBizType(orgType, orgCode, orgName) {
|
|
|
let rst = orgType;
|
|
|
if (orgName.indexOf("其他材料费") >= 0) {
|