diff --git a/src/main/java/com/gaotao/modules/schedule/data/SearchScheduleData.java b/src/main/java/com/gaotao/modules/schedule/data/SearchScheduleData.java index e95d60d..b96b8da 100644 --- a/src/main/java/com/gaotao/modules/schedule/data/SearchScheduleData.java +++ b/src/main/java/com/gaotao/modules/schedule/data/SearchScheduleData.java @@ -123,6 +123,7 @@ public class SearchScheduleData extends BaseData { private Float rollQty;//当前卷的良品数量 private Integer rollNums;//当前卷的数量 private List> rollRows;//排数据列表(用于创建分卷时传递每排的良品数和不良数) + private List> rollDefectDetails;//每卷不良原因明细(前端暂存) private List> bomList;//材料清单列表(用于结单时更新材料备注) private String fixture;//固定载具 private boolean newRollFlag;//是否是新卷 @@ -965,6 +966,14 @@ public class SearchScheduleData extends BaseData { this.rollRows = rollRows; } + public List> getRollDefectDetails() { + return rollDefectDetails; + } + + public void setRollDefectDetails(List> rollDefectDetails) { + this.rollDefectDetails = rollDefectDetails; + } + public List> getBomList() { return bomList; } diff --git a/src/main/java/com/gaotao/modules/schedule/service/SchedulingService.java b/src/main/java/com/gaotao/modules/schedule/service/SchedulingService.java index 17cf1a7..1d94151 100644 --- a/src/main/java/com/gaotao/modules/schedule/service/SchedulingService.java +++ b/src/main/java/com/gaotao/modules/schedule/service/SchedulingService.java @@ -380,8 +380,9 @@ public interface SchedulingService { * @param operator 操作员 * @param reportList 排数据列表 */ - void saveProductionReportAndDefect(String site, String orderNo, Float itemNo, Integer seqNo, - String rollNo, String operator, List reportList, String rollNo2); + void saveProductionReportAndDefect(String site, String orderNo, Float itemNo, Integer seqNo, + String rollNo, String operator, List reportList, + String rollNo2, List> rollDefectDetails); /** * @Author AI diff --git a/src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java b/src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java index 06395fb..990b4d9 100644 --- a/src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java +++ b/src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java @@ -3608,7 +3608,7 @@ public class ScheduleServiceImpl implements ScheduleService { // 调用保存方法 schedulingService.saveProductionReportAndDefect(site, orderNo, Float.valueOf(itemNo), - Integer.valueOf(seqNo), rollNoArr[i], operatorId, reportList, rollNo); + Integer.valueOf(seqNo), rollNoArr[i], operatorId, reportList, rollNo, inData.getRollDefectDetails()); } } //返回打印的数据 2022-05-09 diff --git a/src/main/java/com/gaotao/modules/schedule/service/impl/SchedulingServiceImpl.java b/src/main/java/com/gaotao/modules/schedule/service/impl/SchedulingServiceImpl.java index e5d68d3..5ec772d 100644 --- a/src/main/java/com/gaotao/modules/schedule/service/impl/SchedulingServiceImpl.java +++ b/src/main/java/com/gaotao/modules/schedule/service/impl/SchedulingServiceImpl.java @@ -1357,8 +1357,9 @@ public class SchedulingServiceImpl implements SchedulingService { @Override @Transactional - public void saveProductionReportAndDefect(String site, String orderNo, Float itemNo, Integer seqNo, - String rollNo, String operator, List reportList, String rollNo2) { + public void saveProductionReportAndDefect(String site, String orderNo, Float itemNo, Integer seqNo, + String rollNo, String operator, List reportList, + String rollNo2, List> rollDefectDetails) { if (reportList == null || reportList.isEmpty()) { return; } @@ -1375,12 +1376,16 @@ public class SchedulingServiceImpl implements SchedulingService { // 批量插入排数据 schedulingMapper.batchInsertProductionReport(reportList); - // 计算不良总数 + // 计算不良总数和面损总数 float totalDefectQty = 0; + float totalSurfaceLossQty = 0; for (ProductionReportData report : reportList) { if (report.getDefectQty() != null && report.getDefectQty() > 0) { totalDefectQty += report.getDefectQty(); } + if (report.getSurfaceLossQty() != null && report.getSurfaceLossQty() > 0) { + totalSurfaceLossQty += report.getSurfaceLossQty(); + } } // 如果有不良数量,插入不良历史记录 @@ -1390,22 +1395,81 @@ public class SchedulingServiceImpl implements SchedulingService { if (nextHistSeqNo == null) { nextHistSeqNo = 1; } + int histSeqNoCursor = nextHistSeqNo; // 创建不良历史记录 List defectList = new ArrayList<>(); + + // 保留原有默认不良记录:数量改为 总不良 - 该卷面损 + float defaultDefectQty = totalDefectQty - totalSurfaceLossQty; + if (defaultDefectQty < 0) { + defaultDefectQty = 0f; + } + SfdcDefectHistData defectData = new SfdcDefectHistData(); defectData.setSite(site); defectData.setOrderNo(orderNo); defectData.setItemNo(itemNo); defectData.setSeqNo(seqNo); - defectData.setHistSeqNo(nextHistSeqNo); + defectData.setHistSeqNo(histSeqNoCursor++); defectData.setReportedby(operator); defectData.setDefectCode("10001"); // 默认不良代码,可以根据实际情况调整 - defectData.setDefectQty(totalDefectQty); + defectData.setDefectQty(defaultDefectQty); defectData.setRollNo(rollNo2); defectData.setRemark("创建分卷自动记录"); defectData.setReRollNo(rollNo); defectList.add(defectData); + + // 新增每卷选择的不良原因记录(对应面损明细) + if (rollDefectDetails != null && !rollDefectDetails.isEmpty()) { + for (Map detail : rollDefectDetails) { + if (detail == null) { + continue; + } + String defectCode = detail.get("defectCode") == null + ? "" + : String.valueOf(detail.get("defectCode")).trim(); + if ("".equals(defectCode)) { + continue; + } + + Float detailDefectQty = null; + Object defectQtyObj = detail.get("defectQty"); + if (defectQtyObj != null) { + try { + detailDefectQty = Float.valueOf(String.valueOf(defectQtyObj)); + } catch (Exception ignored) { + detailDefectQty = null; + } + } + if (detailDefectQty == null || detailDefectQty <= 0) { + continue; + } + + SfdcDefectHistData detailDefectData = new SfdcDefectHistData(); + detailDefectData.setSite(site); + detailDefectData.setOrderNo(orderNo); + detailDefectData.setItemNo(itemNo); + detailDefectData.setSeqNo(seqNo); + detailDefectData.setHistSeqNo(histSeqNoCursor++); + detailDefectData.setReportedby(operator); + detailDefectData.setDefectCode(defectCode); + detailDefectData.setDefectQty(detailDefectQty); + detailDefectData.setRollNo(rollNo2); + detailDefectData.setReRollNo(rollNo); + + String defectDesc = detail.get("defectDesc") == null + ? "" + : String.valueOf(detail.get("defectDesc")).trim(); + if (!"".equals(defectDesc)) { + detailDefectData.setRemark("创建分卷不良原因:" + defectDesc); + } else { + detailDefectData.setRemark("创建分卷不良原因"); + } + + defectList.add(detailDefectData); + } + } // 批量插入不良历史数据 schedulingMapper.batchInsertSfdcDefectHist(defectList); diff --git a/src/main/java/com/gaotao/modules/schedule/service/impl/ShiftAbnormalRollReportServiceImpl.java b/src/main/java/com/gaotao/modules/schedule/service/impl/ShiftAbnormalRollReportServiceImpl.java index a73e217..4ebf9b1 100644 --- a/src/main/java/com/gaotao/modules/schedule/service/impl/ShiftAbnormalRollReportServiceImpl.java +++ b/src/main/java/com/gaotao/modules/schedule/service/impl/ShiftAbnormalRollReportServiceImpl.java @@ -122,7 +122,7 @@ public class ShiftAbnormalRollReportServiceImpl } // 调用保存方法 - schedulingService.saveProductionReportAndDefect(site, orderNo, itemNo, seqNo, rollNo, userid, reportList, batchRollNo); + schedulingService.saveProductionReportAndDefect(site, orderNo, itemNo, seqNo, rollNo, userid, reportList, batchRollNo, null); } // 3. 构建打印数据