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