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
}