export function Linxi(names, Department, money, code, duplicateData, CompositeTable, codess, classify, DepartmentColumns, codecolumn) { let results = ['加工修理','6.制造费用固定资产修理','7.制造费用材料修理'] let insert = CompositeTable[0].celldata.filter(obj => obj.v.v == '5.其他业务成本')[0].r for (let i = 0, k = 0; i < CompositeTable[0].celldata.length && k < results.length; i++) { if (CompositeTable[0].celldata[i] && CompositeTable[0].celldata[i].r && CompositeTable[0].celldata[i].r >= insert+1 && CompositeTable[0].celldata[i].r < insert+4 && CompositeTable[0].celldata[i].c == 0) { CompositeTable[0].celldata[i].v.v = results[k]; CompositeTable[0].celldata[i].v.m = results[k]; k++; } } let name1 = Department // code 编码 name1部门名称 money金额 name1 部门名称 // 清空属性 money.forEach(entry => { entry.department = ''; entry.remark = ''; entry.classify = ''; entry.code = ''; entry.index = entry.r }); // 合并数组 let newobj = [...name1, ...code]; // 匹配赋值 money.forEach(m => { newobj.forEach(a => { if (m.r === a.r) { if (a.c === DepartmentColumns) m.remark = a.v.v || a.v.m; if (a.c === names) m.classify = a.v.v || a.v.m; if (a.c === codecolumn) m.code = a.v.v || a.v.m; m.cc = ''; } }); }); // // 删除指定分类 // const filteredClassifications = ["研发费用", "基金", "安全费用"]; // money = money.filter(item => !filteredClassifications.includes(item.classify)); // // 提取特定属性值相同的数据 // const Electromechanical = "机电制造分公司"; // money = money.filter(item => item.remark !== Electromechanical); // 替换属性值 money.forEach(item => { if (item.head === "坑木") item.head = "木材"; if (!item.remark) item.v.name = "基本生产-原煤"; }); // // 对比替换导入表和模板的列数 codess.forEach(code => { let codeLength = String(code.code).length; money.forEach(m => { let columnIdString = String(m.code); let idToMatch = columnIdString.substring(0, codeLength); if (idToMatch === String(code.code).substring(0, codeLength)) { m.cc = code.oneLevel * 1; } }); }); // 设置属性值 money.forEach(item => { item.c = item.cc ? item.cc * 1 : 10; }); money = money.map(obj => { let v = obj.remark; for (let key in classify) { if (classify[key].includes(v)) { obj.v.name = key; obj.whether = true; return obj; } } obj.v.name = "基本生产-原煤"; return obj; }); money.forEach(item => { if (item.department && item.v.name) { let originalString = item.v.name; let parts = originalString.split("-"); let replacedString = parts[0] + "-" + item.department; item.v.name = replacedString; } }); money.forEach(item => { if (item.v.name !== undefined) { let index = item.v.name.indexOf("-"); if (index !== -1) { let substrBeforeDash = item.v.name.slice(0, index); let DepartColumns = CompositeTable[0]["celldata"].flat().filter(obj => { if (obj.v && obj.v.v && typeof obj.v.v === 'string') { return obj.v.v.includes(item.v.name.slice(0, index)); } return false; })[0]; if (DepartColumns && DepartColumns.r) { let index = item.v.name.indexOf("-"); if (index !== -1) { let substrAfterDash = item.v.name.slice(index + 1); switch (substrAfterDash) { case '': item.r = DepartColumns.r; break; case '原煤': item.r = DepartColumns.r + 1; break; case '洗煤': item.r = DepartColumns.r + 2; break; case '选煤': item.r = DepartColumns.r + 3; break; case '厂区服务': item.r = DepartColumns.r + 1; break; case '加工修理': item.r = DepartColumns.r + 2; break; default: // 默认情况 } } } } } }); money.forEach(item => { if (item.r > 8 && item.c < 10) { item.c = 10; } }); // 同一个单元格,金额相加 let seen = new Map(); money.forEach((obj) => { let key = obj.r + ',' + obj.c; if (seen.has(key)) { let existingObj = seen.get(key); existingObj.v.v = Number(existingObj.v.v) + Number(obj.v.v); existingObj.v.m = existingObj.v.v.toString(); existingObj.index.push(obj.index); } else { obj.index = [obj.index]; seen.set(key, obj); } }); seen.forEach(obj => { if (Math.abs(obj.v.v) > 0 || Math.abs(parseInt(obj.v.m)) > 0) { duplicateData.push(obj); } }); duplicateData = duplicateData.map(item => { return { ...item, v: { ...item.v, v: isNaN(item.v.v) ? item.v.v : Number(item.v.v).toFixed(2) } }; }); duplicateData.forEach(item => { const Fusion = { "r": '', "c": '', "v": { "ct": { "fa": "@", "t": "s" }, "fs": 8, "ff": "微软雅黑", "tb": 2, "v": "", "qp": 1, "m": "" } }; Fusion.r=item.r Fusion.c=item.c Fusion.v.v=item.v.v Fusion.v.m=item.v.v CompositeTable[0]["celldata"].push(Fusion) }) //金额所在列和行,去模板表中查找,如果行列一致则替换 for (let i = 0; i < duplicateData.length; i++) { // // 对比 c 和 r 是否与 CompositeTable[0]["celldata"] 中相应对象相同 for (let k = 0; k < CompositeTable[0]["celldata"].length; k++) { if (duplicateData[i].r === CompositeTable[0]["celldata"][k].r && duplicateData[i].c === CompositeTable[0]["celldata"][k].c) { // 如果相同,则进行替换 CompositeTable[0]["celldata"][k] = duplicateData[i]; } } } let duplicateDatas={ duplicateData:duplicateData, CompositeTable:CompositeTable } return duplicateDatas }