diff --git a/src/main/java/com/xujie/modules/inspection/service/impl/InspectionRequestServiceImpl.java b/src/main/java/com/xujie/modules/inspection/service/impl/InspectionRequestServiceImpl.java index c048bcc..0b24a0e 100644 --- a/src/main/java/com/xujie/modules/inspection/service/impl/InspectionRequestServiceImpl.java +++ b/src/main/java/com/xujie/modules/inspection/service/impl/InspectionRequestServiceImpl.java @@ -2066,6 +2066,61 @@ public class InspectionRequestServiceImpl extends ServiceImpl subList) { + if (subList == null || subList.isEmpty()) { + return; + } + + Set updatedPoKeys = new HashSet<>(); + Map samplePoCache = new HashMap<>(); + for (InspectionRequestDetailSub sub : subList) { + if (sub == null || !StringUtils.hasText(sub.getPoNo()) || sub.getPoItemNo() == null) { + continue; + } + String poNo = sub.getPoNo().trim(); + String poKey = poNo + "#" + sub.getPoItemNo(); + if (!updatedPoKeys.add(poKey)) { + continue; + } + Boolean isSamplePo = samplePoCache.computeIfAbsent(poNo, key -> { + POHeader poHeader = poheaderMapper.selectOne( + new LambdaQueryWrapper() + .eq(POHeader::getSite, site) + .eq(POHeader::getOrderNo, key) + ); + return poHeader != null && "Sample".equals(poHeader.getOrderType()); + }); + if (!Boolean.TRUE.equals(isSamplePo)) { + continue; + } + + int affectedRows = podetailMapper.update(null, + new LambdaUpdateWrapper() + .eq(PODetail::getSite, site) + .eq(PODetail::getOrderNo, poNo) + .eq(PODetail::getItemNo, sub.getPoItemNo()) + // SQL Server 驱动会把未声明 jdbcType 的 null 按 varbinary 绑定,DATE 列不接受隐式转换,必须显式指定 + .set(PODetail::getChinaOfficeInspectionDate, null, "jdbcType=DATE") + .set(PODetail::getInspectionResult, null, "jdbcType=VARCHAR") + ); + if (affectedRows == 0) { + log.warn("打样单取消审核清空PODetail回写未命中: site={}, requestNo={}, itemNo={}, poNo={}, poItemNo={}", + site, requestNo, itemNo, poNo, sub.getPoItemNo()); + continue; + } + log.info("打样单取消审核清空PODetail回写成功: site={}, requestNo={}, itemNo={}, poNo={}, poItemNo={}", + site, requestNo, itemNo, poNo, sub.getPoItemNo()); + } + } + @Transactional(rollbackFor = Exception.class) @Override public void rollbackInspectionResult(String site, String requestNo, Integer itemNo) { @@ -2097,6 +2152,9 @@ public class InspectionRequestServiceImpl extends ServiceImpl()