|
@@ -10,6 +10,7 @@ const scMathUtil = require('../../../public/scMathUtil').getUtil();
|
|
const rationMapModel = mongoose.model('std_ration_lib_map');
|
|
const rationMapModel = mongoose.model('std_ration_lib_map');
|
|
const rationModel = mongoose.model('std_ration_lib_ration_items');
|
|
const rationModel = mongoose.model('std_ration_lib_ration_items');
|
|
const complementaryRationModel = mongoose.model('complementary_ration_items');
|
|
const complementaryRationModel = mongoose.model('complementary_ration_items');
|
|
|
|
+const { isDef } = require('../../../public/common_util');
|
|
import {OprDao} from "./gljMapModel";
|
|
import {OprDao} from "./gljMapModel";
|
|
import moment from "moment";
|
|
import moment from "moment";
|
|
import counter from "../../../public/counter/counter";
|
|
import counter from "../../../public/counter/counter";
|
|
@@ -697,6 +698,8 @@ class GljDao extends OprDao{
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // 导入组成物(替换原本的数据)
|
|
|
|
+ // excel第一行应为:人材机、组成物、消耗量(或者:消耗-一般、消耗-简易等)
|
|
async importComponents(gljLibId, sheetData) {
|
|
async importComponents(gljLibId, sheetData) {
|
|
const gljLib = await gljMapModel.findOne({ID: gljLibId});
|
|
const gljLib = await gljMapModel.findOne({ID: gljLibId});
|
|
if (!gljLib) {
|
|
if (!gljLib) {
|
|
@@ -706,25 +709,40 @@ class GljDao extends OprDao{
|
|
if (!compilation) {
|
|
if (!compilation) {
|
|
throw '不存在此费用定额';
|
|
throw '不存在此费用定额';
|
|
}
|
|
}
|
|
|
|
+ const consumeAmtProperties = compilation.consumeAmtProperties || [];
|
|
|
|
+ // 根据第一行数据,获取列号与字段映射
|
|
|
|
+ const colMapping = {};
|
|
|
|
+ const firstRow = sheetData[0];
|
|
|
|
+ const multiConsumeAmt = [];
|
|
|
|
+ firstRow.forEach((colData, col) => {
|
|
|
|
+ if (colData === '人材机') {
|
|
|
|
+ colMapping.code = col;
|
|
|
|
+ } else if (colData === '组成物') {
|
|
|
|
+ colMapping.componentCode = col;
|
|
|
|
+ } else if (colData === '消耗量') {
|
|
|
|
+ colMapping.consumeAmt = col;
|
|
|
|
+ } else {
|
|
|
|
+ // 多消耗量
|
|
|
|
+ const consumeAmtItem = consumeAmtProperties.find(item => item.consumeAmt.dataName === colData);
|
|
|
|
+ if (consumeAmtItem) {
|
|
|
|
+ colMapping[consumeAmtItem.consumeAmt.dataCode] = col;
|
|
|
|
+ multiConsumeAmt.push(consumeAmtItem.consumeAmt.dataCode);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ if (Object.getOwnPropertyNames(colMapping).length < 3) {
|
|
|
|
+ throw 'exel数据错误';
|
|
|
|
+ }
|
|
// 将所有人材机进行编码映射
|
|
// 将所有人材机进行编码映射
|
|
const allGLJs = await gljModel.find({repositoryId: gljLibId}, {ID: true, code: true}).lean();
|
|
const allGLJs = await gljModel.find({repositoryId: gljLibId}, {ID: true, code: true}).lean();
|
|
const codeMapping = {};
|
|
const codeMapping = {};
|
|
allGLJs.forEach(glj => codeMapping[glj.code] = glj);
|
|
allGLJs.forEach(glj => codeMapping[glj.code] = glj);
|
|
- // excel表格列号与字段的映射
|
|
|
|
- const colMapping = {
|
|
|
|
- // 材料编码
|
|
|
|
- code: 0,
|
|
|
|
- // 组成物编码
|
|
|
|
- componentCode: 1,
|
|
|
|
- // 组成物消耗量
|
|
|
|
- consumeAmt: 2
|
|
|
|
- };
|
|
|
|
// 跳过列头
|
|
// 跳过列头
|
|
for (let row = 1; row < sheetData.length; row++) {
|
|
for (let row = 1; row < sheetData.length; row++) {
|
|
const rowData = sheetData[row];
|
|
const rowData = sheetData[row];
|
|
const code = rowData[colMapping.code];
|
|
const code = rowData[colMapping.code];
|
|
const componentCode = rowData[colMapping.componentCode];
|
|
const componentCode = rowData[colMapping.componentCode];
|
|
- const consumeAmt = +rowData[colMapping.consumeAmt];
|
|
|
|
|
|
+ //const consumeAmt = +rowData[colMapping.consumeAmt];
|
|
const glj = codeMapping[code];
|
|
const glj = codeMapping[code];
|
|
const component = codeMapping[componentCode];
|
|
const component = codeMapping[componentCode];
|
|
if (!glj || !component) {
|
|
if (!glj || !component) {
|
|
@@ -733,10 +751,17 @@ class GljDao extends OprDao{
|
|
if (!glj.component) {
|
|
if (!glj.component) {
|
|
glj.component = [];
|
|
glj.component = [];
|
|
}
|
|
}
|
|
- glj.component.push({
|
|
|
|
- ID: component.ID,
|
|
|
|
- consumeAmt: consumeAmt
|
|
|
|
- });
|
|
|
|
|
|
+ const componentGLJ = { ID: component.ID };
|
|
|
|
+ if (multiConsumeAmt.length) { // 多消耗量
|
|
|
|
+ const consumeAmtProperty = {};
|
|
|
|
+ for (const dataCode of multiConsumeAmt) {
|
|
|
|
+ consumeAmtProperty[dataCode] = +rowData[colMapping[dataCode]]
|
|
|
|
+ }
|
|
|
|
+ componentGLJ.consumeAmtProperty = consumeAmtProperty;
|
|
|
|
+ } else { // 单消耗量
|
|
|
|
+ componentGLJ.consumeAmt = +rowData[colMapping.consumeAmt]
|
|
|
|
+ }
|
|
|
|
+ glj.component.push(componentGLJ);
|
|
}
|
|
}
|
|
// 更新数据
|
|
// 更新数据
|
|
const tasks = [];
|
|
const tasks = [];
|