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