From 4ebdc83c264042962e92905562099efd285d835d Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期一, 12 五月 2025 21:09:11 +0800
Subject: [PATCH] 1、界面下载近10天内的的生产数据信息

---
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/utils/excel/CustomCellWriteWidthConfig.java            |   82 +++++++++++++++++++++++++++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/entity/DailyProductionData.java           |    2 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/service/impl/LargenScreenServiceImpl.java |   22 +++---
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/utils/excel/CustomCellStyleHandler.java                |   35 +++++++++++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/controller/LargenScreenController.java    |   11 +--
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/service/LargenScreenService.java          |    2 
 6 files changed, 134 insertions(+), 20 deletions(-)

diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/controller/LargenScreenController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/controller/LargenScreenController.java
index 9ab3d43..2e7a68c 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/controller/LargenScreenController.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/controller/LargenScreenController.java
@@ -9,10 +9,7 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.util.List;
@@ -37,9 +34,9 @@
     }
 
     @ApiOperation("鎸夌収鏉′欢缁熻姣忔棩鐢熶骇鎯呭喌瀵煎嚭")
-    @PostMapping("/exportDailyProduction")
-    public void exportDailyProduction(@RequestBody @Validated DateRequest query) {
-        largenScreenService.exportDailyProduction(query);
+    @GetMapping("/exportDailyProduction")
+    public void exportDailyProduction() {
+        largenScreenService.exportDailyProduction();
     }
 
     @ApiOperation("鎸夌収鏉′欢缁熻鐢熶骇鎯呭喌")
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/entity/DailyProductionData.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/entity/DailyProductionData.java
index 89e8ab7..8a8e685 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/entity/DailyProductionData.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/entity/DailyProductionData.java
@@ -13,7 +13,7 @@
 public class DailyProductionData {
 
     @ExcelProperty(value = "鏃ユ湡")
-    @ExcelMerge(merge = true)
+    @ExcelMerge(merge = true, isPrimaryKey = true)
     private String productDate;
 
     @ExcelProperty(value = {"鍒囧壊", "寮�濮嬫椂闂�"})
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/service/LargenScreenService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/service/LargenScreenService.java
index 7951023..4179afc 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/service/LargenScreenService.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/service/LargenScreenService.java
@@ -18,7 +18,7 @@
 
     List<DailyProductionVO> querySameDayProduction(DateRequest query);
 
-    void exportDailyProduction(DateRequest query);
+    void exportDailyProduction();
 
     List<DailyProductionData> queryProduction(DateRequest query);
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/service/impl/LargenScreenServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/service/impl/LargenScreenServiceImpl.java
index 27572cc..f20de1f 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/service/impl/LargenScreenServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/service/impl/LargenScreenServiceImpl.java
@@ -9,6 +9,7 @@
 import com.mes.largenscreen.mapper.LargenScreenMapper;
 import com.mes.largenscreen.service.LargenScreenService;
 import com.mes.tools.PageUtil;
+import com.mes.utils.excel.CustomCellWriteWidthConfig;
 import com.mes.utils.excel.ExcelMergeStrategy;
 import com.mes.utils.excel.ExcelUtil;
 import org.springframework.stereotype.Service;
@@ -60,21 +61,20 @@
     }
 
     @Override
-    public void exportDailyProduction(DateRequest query) {
+    public void exportDailyProduction() {
         try {
-            if (StringUtils.isEmpty(query.getBeginDate())) {
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-                Calendar calendar = Calendar.getInstance();
-                calendar.add(Calendar.DAY_OF_MONTH, -6);
-                query.setBeginDate(sdf.format(calendar.getTime()));
-                query.setEndDate(sdf.format(new Date()));
-            }
-            ExcelUtil.setExcelResponseProp(response, "渚涘簲鍟嗗垪琛�-鍚堝苟");
-            List<DailyProductionData> providerList = largenScreenMapper.exportDailyProduction(query.getBeginDate(), query.getEndDate());
+
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            Calendar calendar = Calendar.getInstance();
+            calendar.add(Calendar.DAY_OF_MONTH, -10);
+
+            ExcelUtil.setExcelResponseProp(response, "MES璇曠敓浜ц褰�" + sdf.format(new Date()));
+            List<DailyProductionData> providerList = largenScreenMapper.exportDailyProduction(sdf.format(calendar.getTime()), sdf.format(new Date()));
             EasyExcel.write(response.getOutputStream())
                     .head(DailyProductionData.class)
                     .registerWriteHandler(new ExcelMergeStrategy(DailyProductionData.class))
-                    .excelType(ExcelTypeEnum.XLSX).sheet().doWrite(providerList);
+                    .registerWriteHandler(new CustomCellWriteWidthConfig())
+                    .excelType(ExcelTypeEnum.XLSX).sheet("鐢熶骇璁板綍").doWrite(providerList);
         } catch (IOException e) {
             throw new RuntimeException(e);
         }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/utils/excel/CustomCellStyleHandler.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/utils/excel/CustomCellStyleHandler.java
new file mode 100644
index 0000000..227f445
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/utils/excel/CustomCellStyleHandler.java
@@ -0,0 +1,35 @@
+package com.mes.utils.excel;
+
+import com.alibaba.excel.write.handler.CellWriteHandler;
+import com.alibaba.excel.write.handler.context.CellWriteHandlerContext;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.xssf.usermodel.XSSFFont;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/5/12 20:32
+ * @Description:
+ */
+public class CustomCellStyleHandler implements CellWriteHandler {
+
+    @Override
+    public void afterCellDispose(CellWriteHandlerContext context) {
+        // 鑾峰彇鍗曞厓鏍�
+        Cell cell = context.getCell();
+        CellStyle cellStyle = cell.getCellStyle();
+
+        // 璁剧疆姘村钩鍜屽瀭鐩村眳涓�
+        cellStyle.setAlignment(HorizontalAlignment.CENTER);
+        cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
+
+        cellStyle.setFont(new XSSFFont());
+
+        cellStyle.setBorderBottom(BorderStyle.THIN);
+        cellStyle.setBorderLeft(BorderStyle.THIN);
+        cellStyle.setBorderRight(BorderStyle.THIN);
+        cellStyle.setBorderTop(BorderStyle.THIN);
+
+        // 璁剧疆鏍峰紡鍥炲埌鍗曞厓鏍�
+        cell.setCellStyle(cellStyle);
+    }
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/utils/excel/CustomCellWriteWidthConfig.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/utils/excel/CustomCellWriteWidthConfig.java
new file mode 100644
index 0000000..fc0db4b
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/utils/excel/CustomCellWriteWidthConfig.java
@@ -0,0 +1,82 @@
+package com.mes.utils.excel;
+
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.Head;
+import com.alibaba.excel.metadata.data.CellData;
+import com.alibaba.excel.metadata.data.WriteCellData;
+import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
+import com.alibaba.excel.write.style.column.AbstractColumnWidthStyleStrategy;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Sheet;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/5/12 20:34
+ * @Description:
+ */
+public class CustomCellWriteWidthConfig extends AbstractColumnWidthStyleStrategy {
+
+    private final Map<Integer, Map<Integer, Integer>> CACHE = new HashMap<>();
+
+    @Override
+    protected void setColumnWidth(WriteSheetHolder writeSheetHolder, List<WriteCellData<?>> cellDataList, Cell cell, Head head, Integer integer, Boolean isHead) {
+        boolean needSetWidth = isHead || !CollectionUtils.isEmpty(cellDataList);
+        if (needSetWidth) {
+            Map<Integer, Integer> maxColumnWidthMap = CACHE.computeIfAbsent(writeSheetHolder.getSheetNo(), k -> new HashMap<>());
+            Integer columnWidth = this.dataLength(cellDataList, cell, isHead);
+            if (columnWidth > 0) {
+                if (columnWidth > 10) {
+                    columnWidth = 20;
+                } else {
+                    columnWidth = 10;
+                }
+                Integer maxColumnWidth = maxColumnWidthMap.get(cell.getColumnIndex());
+                if (maxColumnWidth == null || columnWidth > maxColumnWidth) {
+                    maxColumnWidthMap.put(cell.getColumnIndex(), columnWidth);
+                    Sheet sheet = writeSheetHolder.getSheet();
+                    sheet.setColumnWidth(cell.getColumnIndex(), 256 * columnWidth + 184);
+                }
+            }
+        }
+    }
+
+    /**
+     * 璁$畻闀垮害
+     *
+     * @param cellDataList
+     * @param cell
+     * @param isHead
+     * @return
+     */
+    private Integer dataLength(List<WriteCellData<?>> cellDataList, Cell cell, Boolean isHead) {
+        if (isHead) {
+            return cell.getStringCellValue().getBytes().length;
+        } else {
+            CellData<?> cellData = cellDataList.get(0);
+            CellDataTypeEnum type = cellData.getType();
+            if (type == null) {
+                return -1;
+            } else {
+                switch (type) {
+                    case STRING:
+                        // 鎹㈣绗︼紙鏁版嵁闇�瑕佹彁鍓嶈В鏋愬ソ锛�
+                        int index = cellData.getStringValue().indexOf("\n");
+                        return index != -1 ?
+                                cellData.getStringValue().substring(0, index).getBytes().length + 1 : cellData.getStringValue().getBytes().length + 1;
+                    case BOOLEAN:
+                        return cellData.getBooleanValue().toString().getBytes().length;
+                    case NUMBER:
+                        return cellData.getNumberValue().toString().getBytes().length;
+                    default:
+                        return -1;
+                }
+            }
+        }
+    }
+
+}

--
Gitblit v1.8.0