diff --git a/qc/src/private/nc/bs/qc/c003/maintain/rule/SyncDeleteQcQmsRule.java b/qc/src/private/nc/bs/qc/c003/maintain/rule/SyncDeleteQcQmsRule.java index 63e71796..51ad367e 100644 --- a/qc/src/private/nc/bs/qc/c003/maintain/rule/SyncDeleteQcQmsRule.java +++ b/qc/src/private/nc/bs/qc/c003/maintain/rule/SyncDeleteQcQmsRule.java @@ -51,18 +51,20 @@ public class SyncDeleteQcQmsRule implements IRule { throw new BusinessException("箱变的QMS接口缺少配置"); } Set firstIds = new HashSet<>(); - List cfirstbids = new ArrayList<>(); + List delIdSet = new ArrayList<>(); // 收集被删除的质检报告明细(关键优化:直接从删除的VO中获取,避免查库丢失) List deletedItems = new ArrayList<>(); for (ReportVO vo : reportVOS) { + ReportHeaderVO hvo = vo.getHVO(); + String pkReportbill = hvo.getPk_reportbill(); + delIdSet.add(pkReportbill); ReportItemVO[] bvo = vo.getBVO(); if (bvo == null) { continue; } for (ReportItemVO itemVO : bvo) { firstIds.add(itemVO.getCfirstid()); - cfirstbids.add(itemVO.getCfirstbid()); deletedItems.add(itemVO); // 保存被删除的明细 } } @@ -71,7 +73,7 @@ public class SyncDeleteQcQmsRule implements IRule { BillQuery billquery = new BillQuery(ArriveVO.class); ArriveVO[] arriveVOS = billquery.query(firstIds.toArray(new String[0])); // 传递删除的明细到构建方法 - buildSyncData(arriveVOS, cfirstbids, deletedItems); + buildSyncData(arriveVOS, delIdSet, deletedItems); } } catch (Exception e) { logger.error("SyncQcQmsRule-exp:" + e.getMessage(), e); @@ -82,7 +84,7 @@ public class SyncDeleteQcQmsRule implements IRule { /** * 构建同步数据(新增deletedItems参数,接收被删除的明细) */ - private void buildSyncData(ArriveVO[] arriveVOS, List cfirstbids, List deletedItems) throws BusinessException { + private void buildSyncData(ArriveVO[] arriveVOS, List delIdSet, List deletedItems) throws BusinessException { for (ArriveVO arriveVO : arriveVOS) { ArriveHeaderVO hvo = arriveVO.getHVO(); ArriveItemVO[] bvo = arriveVO.getBVO(); @@ -164,7 +166,7 @@ public class SyncDeleteQcQmsRule implements IRule { itemObj.put("wlxhgg", materialtype + materialspec); // 物料型号规格 // 被删除的明细标记为0(关键逻辑) - if (cfirstbids.contains(reportItemVO.getCfirstbid())) { + if (delIdSet.contains(pkReportbill)) { itemObj.put("sjsl", "0"); // 删除的记录数量设为0 } else { itemObj.put("sjsl", reportHeaderVO.getNapplynum() != null ? reportHeaderVO.getNapplynum().toString() : "0");