From 2a64b537e8e3bce9ce030585a3da17d48379c0ad Mon Sep 17 00:00:00 2001
From: sfd <sun.sunshine@163.com>
Date: 星期一, 26 五月 2025 15:04:45 +0800
Subject: [PATCH] 修改json类型转换错误

---
 aps-modules/aps-core/src/main/java/com/aps/core/service/mainPlan/impl/ApsWeldSeamStatisticsV2ServiceImpl.java |  134 +++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 131 insertions(+), 3 deletions(-)

diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/mainPlan/impl/ApsWeldSeamStatisticsV2ServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/mainPlan/impl/ApsWeldSeamStatisticsV2ServiceImpl.java
index 77fd6f8..ec82f44 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/mainPlan/impl/ApsWeldSeamStatisticsV2ServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/mainPlan/impl/ApsWeldSeamStatisticsV2ServiceImpl.java
@@ -1,22 +1,36 @@
 package com.aps.core.service.mainPlan.impl;
 
+import com.aps.common.core.annotation.Excel;
 import com.aps.common.core.utils.DateUtils;
+import com.aps.common.core.utils.poi.ExcelUtil;
 import com.aps.common.core.utils.uuid.IdUtils;
 import com.aps.common.core.web.page.TableDataInfo;
+import com.aps.common.security.utils.DictUtils;
 import com.aps.common.security.utils.SecurityUtils;
 import com.aps.core.controller.basicData.ApsGasPipelineCapacityPlanController;
 import com.aps.core.domain.ApsGasPipelineCapacityPlan;
 import com.aps.core.domain.mainPlan.ApsWeldSeamStatisticsV2;
 import com.aps.core.mapper.mainPlan.ApsWeldSeamStatisticsV2Mapper;
-import com.aps.core.service.IApsGasPipelineCapacityPlanService;
 import com.aps.core.service.mainPlan.IApsWeldSeamStatisticsV2Service;
+import com.aps.system.api.domain.SysDictData;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import jakarta.servlet.http.HttpServletResponse;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.xssf.streaming.SXSSFCell;
+import org.apache.poi.xssf.streaming.SXSSFRow;
+import org.apache.poi.xssf.streaming.SXSSFSheet;
+import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.io.IOException;
 import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * 鐒婄紳缁熻琛╒2Service涓氬姟灞傚鐞�
@@ -203,4 +217,118 @@
         
         return count;
     }
+    @Override
+    public void exportWeldSeamStatistics(HttpServletResponse response) throws IOException {
+        //1. 鑾峰彇鏁版嵁婧�
+        List<ApsWeldSeamStatisticsV2> list = apsWeldSeamStatisticsV2Mapper.selectApsWeldSeamStatisticsV2List(new ApsWeldSeamStatisticsV2());
+
+
+        List<SysDictData> isRequireDic = DictUtils.getDictCache("aps_task_is_require");
+        List<SysDictData> factoryDic = DictUtils.getDictCache("aps_factory");
+
+
+        //2. 鍒涘缓Excel宸ヤ綔绨�
+        SXSSFWorkbook wb = new SXSSFWorkbook(500);
+        CellStyle titleStyle = ExcelUtil.getCommonHeaderStyle(wb);
+        CellStyle dataStyle =ExcelUtil.getDataCellStyle(wb);
+
+        SXSSFSheet sheet = wb.createSheet("鐒婄紳缁熻琛�");
+        List<LinkedHashMap<String,String>> titleList=  initRowTitle();
+        //3. 鏋勫缓琛ㄥご
+        for (int i = 0; i < titleList.size(); i++) {
+            SXSSFRow titleRow = sheet.createRow(i);
+            LinkedHashMap<String, String> map = titleList.get(i);
+            AtomicInteger index = new AtomicInteger();
+            titleList.get(i).forEach((key,value)->{
+                SXSSFCell cell = titleRow.createCell(index.get());
+                cell.setCellValue(value);
+                cell.setCellStyle(titleStyle);
+                index.getAndIncrement();
+            });
+        }
+        //5. 鏋勫缓鏁版嵁琛�
+        LinkedHashMap<String, String> first = titleList.get(0);
+        ArrayList<Map.Entry<String, String>> titles = new ArrayList<>(first.entrySet());
+        for (int rowInx = 0; rowInx < list.size(); rowInx++) {
+            SXSSFRow dataRow = sheet.createRow(rowInx + 2);
+            ApsWeldSeamStatisticsV2 statistics = list.get(rowInx);
+            ObjectMapper mapper = new ObjectMapper();
+            ObjectNode node = mapper.valueToTree(statistics);
+            for (int colInx = 0; colInx < titles.size(); colInx++) {
+                Map.Entry<String, String> entry = titles.get(colInx);
+                String filedKey = entry.getKey();
+                SXSSFCell cell = dataRow.createCell(colInx);
+                JsonNode jsonNode = node.get(filedKey);
+                if(filedKey.equals("productionBase")){
+                    factoryDic.stream().filter(x->x.getDictValue().equals(jsonNode.textValue())).findFirst().ifPresent(
+                            sysDictData -> cell.setCellValue(sysDictData.getDictLabel())
+                    );
+                }else if(filedKey.equals("isSatisfy")){
+                    isRequireDic.stream().filter(x->x.getDictValue().equals(jsonNode.textValue())).findFirst().ifPresent(
+                            sysDictData -> cell.setCellValue(sysDictData.getDictLabel())
+                    );
+                }else{
+                    cell.setCellValue(jsonNode.longValue());
+                }
+                cell.setCellStyle(dataStyle);
+            }
+        }
+        for (int i = 0; i <  sheet.getRow(0).getLastCellNum(); i++) {
+            sheet.setColumnWidth(i, 20 * 256);
+        }
+
+        //4.鍚堝苟琛ㄥご
+        sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 0));
+        sheet.addMergedRegion(new CellRangeAddress(0, 1, 1, 1));
+        sheet.addMergedRegion(new CellRangeAddress(0, 1, 2, 2));
+        sheet.addMergedRegion(new CellRangeAddress(0, 0, 3, 4));
+        sheet.addMergedRegion(new CellRangeAddress(0, 0, 5, 6));
+        sheet.addMergedRegion(new CellRangeAddress(0, 1, 7, 7));
+        sheet.addMergedRegion(new CellRangeAddress(0, 1, 8, 8));
+        sheet.addMergedRegion(new CellRangeAddress(0, 1, 9, 9));
+        sheet.addMergedRegion(new CellRangeAddress(0, 1, 10, 10));
+        sheet.addMergedRegion(new CellRangeAddress(0, 1, 11, 11));
+        sheet.addMergedRegion(new CellRangeAddress(0, 1, 12, 12));
+        //3. 璁剧疆鍝嶅簲澶�
+        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+        response.setCharacterEncoding("utf-8");
+        wb.write(response.getOutputStream());
+
+    }
+    private  List<LinkedHashMap<String,String>>  initRowTitle(){
+        List<LinkedHashMap<String,String>> list = new ArrayList<>();
+        LinkedHashMap<String,String> level1 = new LinkedHashMap<>();
+        level1.put("year","骞翠唤");
+        level1.put("month","鏈堜唤");
+        level1.put("productionBase","鐢熶骇鍩哄湴");
+        level1.put("pipingOrderRequirement","璁㈠崟闇�姹�");
+        level1.put("gasOrderRequirement","璁㈠崟闇�姹�");
+        level1.put("pipingPredictionRequirement","棰勬祴闇�姹�");
+        level1.put("gasPredictionRequirement","棰勬祴闇�姹�");
+        level1.put("reserveEmergencyOrderOutput","棰勭暀绱ф�ヨ鍗曚骇鍑�");
+        level1.put("total","鍚堣");
+        level1.put("days","澶╂暟");
+        level1.put("requirementDayWeldSeam","闇�姹傛棩鐒婄紳");
+        level1.put("productionDayWeldSeam","鐢熶骇鏃ョ剨缂�");
+        level1.put("isSatisfy","鏄惁婊¤冻");
+        list.add(level1);
+
+        LinkedHashMap<String,String> level2 = new LinkedHashMap<>();
+        level2.put("year","骞翠唤");
+        level2.put("month","鏈堜唤");
+        level2.put("productionBase","鐢熶骇鍩哄湴");
+        level2.put("pipingOrderRequirement","绠¤矾");
+        level2.put("gasOrderRequirement","姘旀煖");
+        level2.put("pipingPredictionRequirement","绠¤矾");
+        level2.put("gasPredictionRequirement","姘旀煖");
+        level2.put("reserveEmergencyOrderOutput","棰勭暀绱ф�ヨ鍗曚骇鍑�");
+        level2.put("total","鍚堣");
+        level2.put("days","澶╂暟");
+        level2.put("requirementDayWeldSeam","闇�姹傛棩鐒婄紳");
+        level2.put("productionDayWeldSeam","鐢熶骇鏃ョ剨缂�");
+        level2.put("isSatisfy","鏄惁婊¤冻");
+        list.add(level2);
+
+        return list;
+    }
 } 
\ No newline at end of file

--
Gitblit v1.9.3