From abee1c35582c172236ec35adeb93b0876008b06a Mon Sep 17 00:00:00 2001
From: xiangjiaojunxp <1731013157@qq.com>
Date: Tue, 25 Jul 2023 18:41:11 +0800
Subject: [PATCH] =?UTF-8?q?=E5=85=AD=E7=9F=BF=E6=B1=87=E6=80=BBexcel?=
 =?UTF-8?q?=E8=BD=AC=E6=8D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ruoyi-ui/src/views/system/supplies/index.vue | 396 ++++++++++++++++---
 1 file changed, 343 insertions(+), 53 deletions(-)

diff --git a/ruoyi-ui/src/views/system/supplies/index.vue b/ruoyi-ui/src/views/system/supplies/index.vue
index f6e9472..c9e2e3c 100644
--- a/ruoyi-ui/src/views/system/supplies/index.vue
+++ b/ruoyi-ui/src/views/system/supplies/index.vue
@@ -38,7 +38,7 @@
           name="file"
           ref="upload"
           :before-upload="handleFileChange"
-          action=''
+          action='https://jsonplaceholder.typicode.com/posts'
           :limit="1"
           :file-list="fileList"
           :disabled="disableNextButton"
@@ -70,6 +70,7 @@ import { exportExcel } from '../../../../public/exportExcel';
 
 var fileName="新建XLSX工作表"; //定义表名
 var rule=[];
+var tempId;
 export default {
   name: "Mymodule",
   data() {
@@ -117,6 +118,7 @@ export default {
       this.disableNextButton = this.selectedRule === '';
       //根据选中的下拉选项值获取相应的信息
       getSuppliesTemplate(this.selectedOption).then(response => {
+        tempId= this.selectedOption;
         const sysSupplies = response.rows;
         this.luckysheetData = sysSupplies[0].templateContent;
         //将接收到的json存到json_data中
@@ -140,6 +142,7 @@ export default {
         this.$message.error('查询失败,发生未知错误!');
       });
     },
+    /** 规则下拉选 调佣后端的方法*/
     handleRuleChange(){
       if (this.selectedOption==='') {
         this.selectedRule='';
@@ -246,8 +249,6 @@ export default {
           type: "warning"});
         return
       }
-
-
       LuckyExcel.transformExcelToLucky(
         evt,
         function(exportJson) {
@@ -259,12 +260,11 @@ export default {
             return
           }
           console.log("导入数据的规则是:"+rule);
+          console.log("导入数据的规则是:"+tempId);
           let sysRulez;
           let sysRules;
           let value=[];
-          let map=new Map();
-          //获取物料转换的规则
-          //
+          //获取规则  sysRulez是物料转换  sysRules是数据汇总规则  13
           for(let i=0;i<rule.length;i++){
             if (rule[i].convertStatus==1){
               sysRulez = JSON.parse(rule[i].detailContent);
@@ -275,6 +275,7 @@ export default {
           }
           //获取物料转换的sheet表
           let data=window.luckysheet.transToData(exportJson.sheets[sysRulez[0].se].celldata);
+          //获取物料转换中导入表的列,用来获取物料名
           let key_i=sysRulez[0].ce;
           //获取物料转换的数据
           for (let i=0;i<sysRules.length;i++){
@@ -282,61 +283,350 @@ export default {
             value.push(sysRules[i].ce);
           }
           console.log("value的值为:"+value);
-          let smallMat=[];
-          for(let i=2;i<data.length;i++){
-            if(data[i][key_i]!=null){
-              let num=data[i][key_i].m;
-              smallMat.push(num);
-            }else{
-              smallMat.push(null);
+          switch (tempId){
+
+            case 2:
+            {
+              let department=['原煤','洗煤厂'];
+              for(let j=0;j<department.length;j++){
+                let map=new Map();
+                let smallMat=[];
+                for(let i=parseFloat(sysRulez[0].re)+1;i<data.length;i++){
+
+                  if(data[i][key_i]!=null && data[i][13].m==department[j]){
+                    let num=data[i][key_i].m;
+                    smallMat.push(num);
+                  }else{
+                    smallMat.push(null);
+                  }
+                }
+                console.log(smallMat);
+                materialConvert(smallMat).then(response => {
+                  let array = response.rows;
+
+                  console.log(array);
+                  //luckysheet.setCellValue(12, 1, {bg:"#FF0000"})
+                  for (let i =parseFloat(sysRulez[0].re)+1; i < data.length; i++) {
+                    let values = [];
+                    if(data[i][13]!=null && data[i][13].m==department[j] && data[i][key_i]!=null){
+                      for(let j=0;j<value.length;j++) {
+                        let a = parseFloat(data[i][value[j]].v);
+                        values.push(a);
+                      }
+                      //插入多个value的值
+                      let index = smallMat.indexOf(data[i][key_i].m);
+                      let key = array[index];
+                      if (map.has(key)) {
+                        let oldValues = map.get(key);
+                        for (let i=0;i<values.length;i++){
+                          values[i] = parseFloat(parseFloat(values[i] + oldValues[i]).toFixed(2));
+                        }
+                        map.set(key, values);
+                      } else {
+                        map.set(key, values);
+                      }
+                    }
+
+                  }
+                  //循环得到汇总结果
+                  console.log(map);
+                  let cells;
+                  for(let i=0;i<sysRules.length;i++){
+                    map.forEach((value, key) => {
+                      let searchResult = luckysheet.find(key);
+                      if(searchResult.length!=0 && key!=null){
+                        cells=searchResult[0].column;
+                        luckysheet.setCellValue(parseFloat(sysRules[i].rt)+j, cells,value[i]);
+                        luckysheet.setCellValue(parseFloat(sysRules[i].rt)+j, cells,{"ct": {
+                            "fa": "General",
+                            "t": "n"
+                          }});
+                      }
+                    });
+                  }
+                }).catch(() => {
+                  // 处理错误逻辑,这里是一个空的错误处理函数
+                  console.log("走到这了,物料转换后续处理出问题了!!");
+                });
+              }
             }
-          }
-          console.log(smallMat);
-          materialConvert(smallMat).then(response => {
-            let array = response.rows;
-            console.log(array);
-            //luckysheet.setCellValue(12, 1, {bg:"#FF0000"})
-            for (let i =2; i < data.length; i++) {
-              let values = [];
-              if(data[i][key_i]!=null){
-                for(let j=0;j<value.length;j++) {
-                  let a = parseFloat(data[i][value[j]].v);
-                  values.push(a);
+              break;
+            case 6:
+            {
+              let department=['二掘区','后勤服务二科','后勤服务一科','机电科','井运区','救护队','开拓区','开运区','通风区','通讯管理科','物资管理科','巷修区','一掘区','准备区','综二区','综一区','钻探区'];
+              //加个费用循环
+              for(let j=0;j<department.length;j++){
+                let map=new Map();
+                let smallMat=[];
+                for(let i=parseFloat(sysRulez[0].re)+1;i<data.length;i++){
+
+                  if(data[i][key_i]!=null && data[i][1].m==department[j]){
+                    let num=data[i][key_i].m;
+                    smallMat.push(num);
+                  }else{
+                    smallMat.push(null);
+                  }
                 }
-              }else{
-                break;
+
+                console.log(smallMat);
+                materialConvert(smallMat).then(response => {
+                  let array = response.rows;
+                  console.log(array);
+                  //luckysheet.setCellValue(12, 1, {bg:"#FF0000"})
+                  for (let i =parseFloat(sysRulez[0].re)+1; i < data.length; i++) {
+
+
+                    let values = [];
+                    if(data[i][1]!=null && data[i][1].m==department[j] && data[i][key_i]!=null){
+                      for(let j=0;j<value.length;j++) {
+                        let a = parseFloat(data[i][value[j]].v);
+                        values.push(a);
+                      }
+                      //插入多个value的值
+                      let index = smallMat.indexOf(data[i][key_i].m);
+                      let key = array[index];
+                      if (map.has(key)) {
+                        let oldValues = map.get(key);
+                        for (let i=0;i<values.length;i++){
+                          values[i] = parseFloat(parseFloat(values[i] + oldValues[i]).toFixed(2));
+                        }
+                        map.set(key, values);
+                      } else {
+                        map.set(key, values);
+                      }
+                    }
+
+                  }
+                  //循环得到汇总结果
+                  console.log(map);
+
+                  let cells;
+                  for(let i=0;i<sysRules.length;i++){
+                    map.forEach((value, key) => {
+                      let searchResult = luckysheet.find(key);
+                      if(searchResult.length!=0 && key!=null){
+                        cells=luckysheet.find(key)[0].column;
+                        luckysheet.setCellValue(parseFloat(sysRules[i].rt)+j, cells,value[i]);
+                        luckysheet.setCellValue(parseFloat(sysRules[i].rt)+j, cells,{"ct": {
+                            "fa": "General",
+                            "t": "n"
+                          }});
+                      }
+                    });
+                  }
+                });
+
               }
-              //插入多个value的值
-              let index = smallMat.indexOf(data[i][key_i].m);
-              let key = array[index];
-              if (map.has(key)) {
-                let oldValues = map.get(key);
-                for (let i=0;i<values.length;i++){
-                  values[i] = parseFloat(parseFloat(values[i] + oldValues[i]).toFixed(2));
+            }
+              break;
+            case 1:
+            {
+              let map=new Map();
+              let smallMat=[];
+              for(let i=parseInt(sysRulez[0].re)+1;i<data.length;i++){
+                if(data[i][key_i]!=null){
+                  let num=data[i][key_i].m;
+                  smallMat.push(num);
+                }else{
+                  smallMat.push(null);
+                }
+              }
+              for(let j=0;j<value.length;j++){
+                if(data[sysRulez[0].re][value[j]]!=null){
+                  let num=data[sysRulez[0].re][value[j]].m;
+                  smallMat.push(num);
+                }else{
+                  smallMat.push(null);
                 }
-                map.set(key, values);
-              } else {
-                map.set(key, values);
               }
+              //console.log(smallMat);
+              materialConvert(smallMat).then(response => {
+                let array = response.rows;
+                //console.log(array);
+                //luckysheet.setCellValue(12, 1, {bg:"#FF0000"})
+                for (let i =parseInt(sysRulez[0].re)+1; i < data.length; i++) {
+                  let values = [];
+                  if(data[i][key_i]!=null){
+                    for(let j=0;j<value.length;j++) {
+                      let a = parseFloat(data[i][value[j]].v);
+                      if (isNaN(a)){
+                        a=0;
+                      }
+                      values.push(a);
+                    }
+                  }else{
+                    break;
+                  }
+                  //插入多个value的值
+                  let index = smallMat.indexOf(data[i][key_i].m);
+                  let key = array[index];
+                  if (map.has(key)) {
+                    let oldValues = map.get(key);
+                    for (let i=0;i<values.length;i++){
+                      values[i] = parseFloat(parseFloat(parseFloat(values[i]) + parseFloat(oldValues[i])).toFixed(2));
+                    }
+                    map.set(key, values);
+                  } else {
+                    map.set(key, values);
+                  }
+                }
+                //循环得到汇总结果
+                console.log(map);
+                let rowws;
+                let row;
+                let con;
+
+                for(let i=0;i<sysRules.length;i++){
+
+                  map.forEach((value, key) => {
+
+                    let matchingCells = [];
+                    let name = data[sysRules[i].re][sysRules[i].ce].m
+                    if (name.includes("æ´—ç…¤")){
+
+                      row = sysRules[i].rt;
+                      con = parseInt(sysRules[i].rt)+10;
+
+                    }else {
+                      row = sysRules[i].rt;
+                      con = 54;
+                    }
+
+                    for ( ; row <=con ; row++) {
+                      let cellValue = luckysheet.getCellValue(row, parseInt(sysRulez[0].ct));
+                      if (cellValue===null){
+
+                      }else {
+                        if (cellValue.includes(key)) {
+
+                          luckysheet.setCellValue(row, sysRules[i].ct, value[i]);
+                          luckysheet.setCellValue(row, sysRules[i].ct, {
+                            "ct": {
+                              "fa": "General",
+                              "t": "n"
+                            }
+                          });
+                          break;
+                        }
+                      }
+                    }
+
+                    // if (luckysheet.find(key).length>0) {
+                    //
+                    //   rowws = luckysheet.find(key)[0].row;                  // rowws=luckysheet.find(key)[0].row;
+                    //   luckysheet.setCellValue(rowws, sysRules[i].ct, value[i]);
+                    //   luckysheet.setCellValue(rowws, sysRules[i].ct, {
+                    //     "ct": {
+                    //       "fa": "General",
+                    //       "t": "n"
+                    //     }
+                    //   });
+                    // }
+                  });
+                }
+
+                // debugger
+                // let value2 =[];
+                //
+                // for (let i=0;i<sysConver.length;i++){
+                //   //value.push(data[sysRules[i].re][sysRules[i].ce].m);
+                //
+                //   value2.push(sysConver[i].ce);
+                // }
+                //
+                // for (let i =parseInt(sysRulez[0].re)+1; i < data.length; i++) {
+                //   let values2 = [];
+                //   if(data[i][key_i]!=null){
+                //     for(let j=0;j<value2.length;j++) {
+                //       let a = parseFloat(data[i][value2[j]].v);
+                //       if (isNaN(a)){
+                //         a=0;
+                //       }
+                //       values2.push(a);
+                //     }
+                //   }else{
+                //     break;
+                //   }
+                //   //插入多个value的值
+                //   let index = smallMat.indexOf(data[i][key_i].m);
+                //   let key = array[index];
+                //   if (map.has(key)) {
+                //     let oldValues = map.get(key);
+                //     for (let i=0;i<values2.length;i++){
+                //       values2[i] = parseFloat(parseFloat(parseFloat(values2[i]) + parseFloat(oldValues[i])).toFixed(2));
+                //     }
+                //     map.set(key, values2);
+                //   } else {
+                //     map.set(key, values2);
+                //   }
+                // }
+
+              }).catch(() => {
+                // 处理错误逻辑,这里是一个空的错误处理函数
+                console.log("走到这了,物料转换后续处理出问题了!!");
+
+              });
             }
-            //循环得到汇总结果
-            console.log(map);
-            let rowws;
-            for(let i=0;i<sysRules.length;i++){
-              map.forEach((value, key) => {
-                rowws=luckysheet.find(key)[0].row;
-                luckysheet.setCellValue(rowws, sysRules[i].ct,value[i]);
-                luckysheet.setCellValue(rowws, sysRules[i].ct,{"ct": {
-                    "fa": "General",
-                    "t": "n"
-                  }});
+              break;
+            default :
+            {
+              let map=new Map();
+              let smallMat=[];
+              for(let i=parseFloat(sysRulez[0].re)+1;i<data.length;i++){
+                if(data[i][key_i]!=null){
+                  let num=data[i][key_i].m;
+                  smallMat.push(num);
+                }else{
+                  smallMat.push(null);
+                }
+              }
+              materialConvert(smallMat).then(response => {
+                let array = response.rows;
+                for (let i =parseFloat(sysRulez[0].re)+1; i < data.length; i++) {
+                  let values = [];
+                  if(data[i][key_i]!=null){
+                    for(let j=0;j<value.length;j++) {
+                      let a = parseFloat(data[i][value[j]].v);
+                      values.push(a);
+                    }
+                    //插入多个value的值
+                    let index = smallMat.indexOf(data[i][key_i].m);
+                    let key = array[index];
+                    if (map.has(key)) {
+                      let oldValues = map.get(key);
+                      for (let i=0;i<values.length;i++){
+                        values[i] = parseFloat(parseFloat(values[i] + oldValues[i]).toFixed(2));
+                      }
+                      map.set(key, values);
+                    } else {
+                      map.set(key, values);
+                    }
+                  }
+
+                }
+                //循环得到汇总结果
+                debugger
+                console.log(map);
+                let rowws;
+                for(let i=0;i<sysRules.length;i++){
+                  map.forEach((value, key) => {
+                    let searchResult = luckysheet.find(key);
+                    if(searchResult.length!=0 && key!=null){
+                      rowws=searchResult[0].row;
+                      luckysheet.setCellValue(rowws, sysRules[i].ct, value[i]);
+                      luckysheet.setCellValue(rowws, sysRules[i].ct, {
+                        "ct": {
+                          "fa": "General",
+                          "t": "n"
+                        }
+                      });
+                    }
+                  });
+                }
               });
             }
-          }).catch(() => {
-            // 处理错误逻辑,这里是一个空的错误处理函数
-            console.log("走到这了,物料转换后续处理出问题了!!");
-            this.$message.error('文件导入失败!发生未知错误,请重试!!');
-          });
+          }
+
           //切换到想要的sheet
           luckysheet.setSheetActive(0);
         })
-- 
2.26.2