From dd195aff03e253a17e2e5a8f47d645210f164343 Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Wed, 21 Oct 2026 10:35:28 +0800 Subject: [PATCH] =?UTF-8?q?2026-10-21=20=E5=AF=BC=E5=87=BA=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Impl/ProductionReportServiceImpl.java | 115 ++++++++++++------ 1 file changed, 76 insertions(+), 39 deletions(-) diff --git a/src/main/java/com/gaotao/modules/shopOrder/service/Impl/ProductionReportServiceImpl.java b/src/main/java/com/gaotao/modules/shopOrder/service/Impl/ProductionReportServiceImpl.java index 1842f23..f2b0f2d 100644 --- a/src/main/java/com/gaotao/modules/shopOrder/service/Impl/ProductionReportServiceImpl.java +++ b/src/main/java/com/gaotao/modules/shopOrder/service/Impl/ProductionReportServiceImpl.java @@ -15,6 +15,10 @@ import com.gaotao.modules.shopOrder.entity.*; import com.gaotao.modules.shopOrder.entity.SfdcRollsReportExecuteData; import com.gaotao.modules.shopOrder.service.ProductionReportService; import com.gaotao.modules.sys.service.SysMsgService; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.DataFormat; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.streaming.SXSSFSheet; import org.apache.poi.xssf.streaming.SXSSFWorkbook; @@ -274,6 +278,13 @@ public class ProductionReportServiceImpl implements ProductionReportService { SXSSFWorkbook workbook = new SXSSFWorkbook(500); workbook.setCompressTempFiles(true); SimpleDateFormat dateTimeFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + DataFormat dataFormat = workbook.createDataFormat(); + CellStyle integerStyle = workbook.createCellStyle(); + integerStyle.setDataFormat(dataFormat.getFormat("0")); + CellStyle decimalStyle = workbook.createCellStyle(); + decimalStyle.setDataFormat(dataFormat.getFormat("0.######")); + CellStyle rateStyle = workbook.createCellStyle(); + rateStyle.setDataFormat(dataFormat.getFormat("0.00")); try { SXSSFSheet sheet = workbook.createSheet("订单产出标签统计"); int rowIndex = 0; @@ -284,7 +295,7 @@ public class ProductionReportServiceImpl implements ProductionReportService { if (records != null) { for (SFDCRollsOutData item : records) { Row row = sheet.createRow(rowIndex++); - fillSfdcRollsExportRow(row, item, dateTimeFormatter); + fillSfdcRollsExportRow(row, item, dateTimeFormatter, integerStyle, decimalStyle, rateStyle); } } sheet.flushRows(500); @@ -312,48 +323,74 @@ public class ProductionReportServiceImpl implements ProductionReportService { } } - private void fillSfdcRollsExportRow(Row row, SFDCRollsOutData item, SimpleDateFormat dateTimeFormatter) { - String[] values = new String[]{ - safeValue(item.getRollNo()), - safeValue(item.getRollQty()), - safeValue(item.getGoodQty()), - safeValue(item.getSurfaceLossQty()), - safeValue(item.getPoorPerformanceQty()), - safeValue(item.getDefectQty()), - safeValue(item.getYieldRate()), - safeValue(item.getTotalQty()), - safeValue(item.getPackingList()), - safeValue(item.getPartNo()), - safeValue(item.getPartDesc()), - safeValue(item.getSpec()), - safeValue(item.getParentRollNo()), - safeValue(item.getParentRollType()), - safeValue(item.getOrderNo()), - formatWholeNumber(item.getCreatedOpsSeqNo()), - formatWholeNumber(item.getCreatedOpsItemNo()), - safeValue(item.getProductionResourceID()), - safeValue(item.getCreatedby()), - formatDate(item.getCreatedDate(), dateTimeFormatter), - safeValue(item.getConsumeOrderNo()), - safeValue(item.getConsumeSeqNo()), - safeValue(item.getConsumeItemNo()), - safeValue(item.getConsumptionResourceID()), - formatDate(item.getDate1(), dateTimeFormatter), - formatDate(item.getDate2(), dateTimeFormatter), - safeValue(item.getRollType()), - safeValue(item.getFinalStatus()), - safeValue(item.getRemark()) - }; - for (int i = 0; i < values.length; i++) { - row.createCell(i).setCellValue(values[i]); + private void fillSfdcRollsExportRow(Row row, SFDCRollsOutData item, SimpleDateFormat dateTimeFormatter, + CellStyle integerStyle, CellStyle decimalStyle, CellStyle rateStyle) { + setStringCell(row, 0, item.getRollNo()); + setNumberCell(row, 1, item.getRollQty(), decimalStyle); + setNumberCell(row, 2, item.getGoodQty(), integerStyle); + setNumberCell(row, 3, item.getSurfaceLossQty(), integerStyle); + setNumberCell(row, 4, item.getPoorPerformanceQty(), integerStyle); + setNumberCell(row, 5, item.getDefectQty(), integerStyle); + setNumberCell(row, 6, item.getYieldRate(), rateStyle); + setNumberCell(row, 7, item.getTotalQty(), integerStyle); + setStringCell(row, 8, item.getPackingList()); + setStringCell(row, 9, item.getPartNo()); + setStringCell(row, 10, item.getPartDesc()); + setStringCell(row, 11, item.getSpec()); + setStringCell(row, 12, item.getParentRollNo()); + setStringCell(row, 13, item.getParentRollType()); + setStringCell(row, 14, item.getOrderNo()); + setNumberCell(row, 15, item.getCreatedOpsSeqNo(), integerStyle); + setNumberCell(row, 16, item.getCreatedOpsItemNo(), integerStyle); + setStringCell(row, 17, item.getProductionResourceID()); + setStringCell(row, 18, item.getCreatedby()); + setStringCell(row, 19, formatDate(item.getCreatedDate(), dateTimeFormatter)); + setStringCell(row, 20, item.getConsumeOrderNo()); + setNumericOrStringCell(row, 21, item.getConsumeSeqNo(), integerStyle); + setNumericOrStringCell(row, 22, item.getConsumeItemNo(), integerStyle); + setStringCell(row, 23, item.getConsumptionResourceID()); + setStringCell(row, 24, formatDate(item.getDate1(), dateTimeFormatter)); + setStringCell(row, 25, formatDate(item.getDate2(), dateTimeFormatter)); + setStringCell(row, 26, item.getRollType()); + setStringCell(row, 27, item.getFinalStatus()); + setStringCell(row, 28, item.getRemark()); + } + + private void setStringCell(Row row, int col, String value) { + row.createCell(col).setCellValue(value == null ? "" : value); + } + + private void setNumberCell(Row row, int col, Number value, CellStyle style) { + Cell cell = row.createCell(col); + if (value == null) { + cell.setCellType(CellType.BLANK); + return; } + cell.setCellValue(value.doubleValue()); + cell.setCellStyle(style); } - private String formatWholeNumber(double value) { - if (value == (long) value) { - return String.valueOf((long) value); + private void setNumericOrStringCell(Row row, int col, String value, CellStyle style) { + Number number = parseNumber(value); + if (number != null) { + setNumberCell(row, col, number, style); + return; + } + setStringCell(row, col, value); + } + + private Number parseNumber(String value) { + if (value == null || value.trim().isEmpty()) { + return null; + } + try { + if (value.indexOf('.') >= 0) { + return Double.parseDouble(value.trim()); + } + return Long.parseLong(value.trim()); + } catch (NumberFormatException e) { + return null; } - return String.valueOf(value); } private String formatDate(Date value, SimpleDateFormat formatter) {