Browse Source

2026-10-21

导出优化
master
fengyuan_yang 4 weeks ago
parent
commit
dd195aff03
  1. 115
      src/main/java/com/gaotao/modules/shopOrder/service/Impl/ProductionReportServiceImpl.java

115
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) {

Loading…
Cancel
Save