From 832e648ee91703b28f033ec34a5537d00ff2b157 Mon Sep 17 00:00:00 2001 From: mzr Date: Thu, 23 Oct 2025 13:58:56 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=B1=E5=8F=98-=E5=90=AF=E6=BA=90-=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E8=B4=A8=E6=A3=80=E6=8A=A5=E5=91=8A=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E5=90=AF=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qc/c003/maintain/rule/SyncDeleteQcQmsRule.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) 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");