diff --git a/src/main/java/com/xujie/modules/inspection/mapper/InspectionRequestDetailSubMapper.java b/src/main/java/com/xujie/modules/inspection/mapper/InspectionRequestDetailSubMapper.java index a061e58..58431fa 100644 --- a/src/main/java/com/xujie/modules/inspection/mapper/InspectionRequestDetailSubMapper.java +++ b/src/main/java/com/xujie/modules/inspection/mapper/InspectionRequestDetailSubMapper.java @@ -26,4 +26,19 @@ public interface InspectionRequestDetailSubMapper extends BaseMapper 待验货 - com.xujie.modules.order.entity.PODetail poDetail = + PODetail poDetail = podetailMapper.selectByPK(item.getOrderNo(), site, item.getItemNo()); - + if (poDetail != null && "已下达".equals(poDetail.getStatus())) { // 更新 PODetail 状态为待验货 podetailMapper.update(null, - new com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper() - .eq(com.xujie.modules.order.entity.PODetail::getOrderNo, item.getOrderNo()) - .eq(com.xujie.modules.order.entity.PODetail::getSite, site) - .eq(com.xujie.modules.order.entity.PODetail::getItemNo, item.getItemNo()) - .set(com.xujie.modules.order.entity.PODetail::getStatus, "待验货") + new LambdaUpdateWrapper() + .eq(PODetail::getOrderNo, item.getOrderNo()) + .eq(PODetail::getSite, site) + .eq(PODetail::getItemNo, item.getItemNo()) + .set(PODetail::getStatus, "待验货") ); - - log.info("开验货申请单 - 更新PODetail状态为待验货: orderNo={}, itemNo={}", + + log.info("开验货申请单 - 更新PODetail状态为待验货: orderNo={}, itemNo={}", item.getOrderNo(), item.getItemNo()); - + // 更新 POHeader 状态为待验货 poheaderMapper.update(null, - new com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper() - .eq(com.xujie.modules.order.entity.POHeader::getOrderNo, item.getOrderNo()) - .eq(com.xujie.modules.order.entity.POHeader::getSite, site) - .set(com.xujie.modules.order.entity.POHeader::getStatus, "待验货") + new LambdaUpdateWrapper() + .eq(POHeader::getOrderNo, item.getOrderNo()) + .eq(POHeader::getSite, site) + .set(POHeader::getStatus, "待验货") ); - + log.info("开验货申请单 - 更新POHeader状态为待验货: orderNo={}", item.getOrderNo()); } @@ -266,7 +271,7 @@ public class InspectionRequestServiceImpl extends ServiceImpl subList = inspectionRequestDetailSubMapper.selectByRequestNo(site, requestNo); @@ -285,6 +290,57 @@ public class InspectionRequestServiceImpl extends ServiceImpl 已下达 + if (otherRequestCount == 0) { + PODetail poDetail = + podetailMapper.selectByPK(sub.getPoNo(), site, sub.getPoItemNo()); + + if (poDetail != null && "待验货".equals(poDetail.getStatus())) { + // 更新 PODetail 状态为已下达 + podetailMapper.update(null, + new LambdaUpdateWrapper() + .eq(PODetail::getOrderNo, sub.getPoNo()) + .eq(PODetail::getSite, site) + .eq(PODetail::getItemNo, sub.getPoItemNo()) + .set(PODetail::getStatus, "已下达") + ); + + log.info("删除验货申请 - 回退PODetail状态为已下达: orderNo={}, itemNo={}", + sub.getPoNo(), sub.getPoItemNo()); + + // 检查 POHeader 下所有 PODetail 是否都是已下达状态 + // 如果是,则将 POHeader 也回退为已下达 + java.util.List allDetails = + podetailMapper.selectList( + new LambdaQueryWrapper() + .eq(PODetail::getOrderNo, sub.getPoNo()) + .eq(PODetail::getSite, site) + ); + + boolean allReleased = allDetails.stream() + .allMatch(detail -> "已下达".equals(detail.getStatus())); + + if (allReleased) { + poheaderMapper.update(null, + new LambdaUpdateWrapper() + .eq(POHeader::getOrderNo, sub.getPoNo()) + .eq(POHeader::getSite, site) + .set(POHeader::getStatus, "已下达") + ); + + log.info("删除验货申请 - 回退POHeader状态为已下达: orderNo={}", sub.getPoNo()); + } + } + } } // 3. 删除子表明细 srm_inspect_request_detail_sub @@ -693,29 +749,29 @@ public class InspectionRequestServiceImpl extends ServiceImpl() - .eq(com.xujie.modules.order.entity.PODetail::getOrderNo, sub.getPoNo()) - .eq(com.xujie.modules.order.entity.PODetail::getSite, site) - .eq(com.xujie.modules.order.entity.PODetail::getItemNo, sub.getPoItemNo()) - .set(com.xujie.modules.order.entity.PODetail::getStatus, "验货中") + new LambdaUpdateWrapper() + .eq(PODetail::getOrderNo, sub.getPoNo()) + .eq(PODetail::getSite, site) + .eq(PODetail::getItemNo, sub.getPoItemNo()) + .set(PODetail::getStatus, "验货中") ); - + log.info("开始验货 - 更新PODetail状态为验货中: orderNo={}, itemNo={}", sub.getPoNo(), sub.getPoItemNo()); - + // 更新 POHeader 状态为验货中 poheaderMapper.update(null, - new com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper() - .eq(com.xujie.modules.order.entity.POHeader::getOrderNo, sub.getPoNo()) - .eq(com.xujie.modules.order.entity.POHeader::getSite, site) - .set(com.xujie.modules.order.entity.POHeader::getStatus, "验货中") + new LambdaUpdateWrapper() + .eq(POHeader::getOrderNo, sub.getPoNo()) + .eq(POHeader::getSite, site) + .set(POHeader::getStatus, "验货中") ); - + log.info("开始验货 - 更新POHeader状态为验货中: orderNo={}", sub.getPoNo()); } } @@ -779,33 +835,33 @@ public class InspectionRequestServiceImpl extends ServiceImpl() - .eq(com.xujie.modules.order.entity.PODetail::getOrderNo, sub.getPoNo()) - .eq(com.xujie.modules.order.entity.PODetail::getSite, site) - .eq(com.xujie.modules.order.entity.PODetail::getItemNo, sub.getPoItemNo()) - .set(com.xujie.modules.order.entity.PODetail::getInspectApproveQty, newApproveQty) + new LambdaUpdateWrapper() + .eq(PODetail::getOrderNo, sub.getPoNo()) + .eq(PODetail::getSite, site) + .eq(PODetail::getItemNo, sub.getPoItemNo()) + .set(PODetail::getInspectApproveQty, newApproveQty) ); - + if (podUpdateCount == 0) { log.warn("更新 PODetail 验货完成数量失败: orderNo={}, itemNo={}", sub.getPoNo(), sub.getPoItemNo()); } else { log.info("更新 PODetail 验货完成数量: orderNo={}, itemNo={}, qty={}, 原数量={}, 新数量={}", sub.getPoNo(), sub.getPoItemNo(), sub.getQty(), currentApproveQty, newApproveQty); - + // 根据验货完成数量更新 PODetail 和 POHeader 状态 BigDecimal orderQty = poDetail.getQty() != null ? BigDecimal.valueOf(poDetail.getQty()) : BigDecimal.ZERO; String newStatus; - + if (newApproveQty.compareTo(orderQty) >= 0) { // 验货完成数量 >= 订单数量:验货完成 newStatus = "验货完成"; @@ -816,27 +872,27 @@ public class InspectionRequestServiceImpl extends ServiceImpl() - .eq(com.xujie.modules.order.entity.PODetail::getOrderNo, sub.getPoNo()) - .eq(com.xujie.modules.order.entity.PODetail::getSite, site) - .eq(com.xujie.modules.order.entity.PODetail::getItemNo, sub.getPoItemNo()) - .set(com.xujie.modules.order.entity.PODetail::getStatus, newStatus) + new LambdaUpdateWrapper() + .eq(PODetail::getOrderNo, sub.getPoNo()) + .eq(PODetail::getSite, site) + .eq(PODetail::getItemNo, sub.getPoItemNo()) + .set(PODetail::getStatus, newStatus) ); - - log.info("验货完成 - 更新PODetail状态: orderNo={}, itemNo={}, 状态={}", + + log.info("验货完成 - 更新PODetail状态: orderNo={}, itemNo={}, 状态={}", sub.getPoNo(), sub.getPoItemNo(), newStatus); - + // 更新 POHeader 状态 poheaderMapper.update(null, - new com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper() - .eq(com.xujie.modules.order.entity.POHeader::getOrderNo, sub.getPoNo()) - .eq(com.xujie.modules.order.entity.POHeader::getSite, site) - .set(com.xujie.modules.order.entity.POHeader::getStatus, newStatus) + new LambdaUpdateWrapper() + .eq(POHeader::getOrderNo, sub.getPoNo()) + .eq(POHeader::getSite, site) + .set(POHeader::getStatus, newStatus) ); - + log.info("验货完成 - 更新POHeader状态: orderNo={}, 状态={}", sub.getPoNo(), newStatus); } } @@ -929,24 +985,24 @@ public class InspectionRequestServiceImpl extends ServiceImpl 0) { // 验货完成数量 > 0:部分验货 newStatus = "部分验货"; @@ -954,27 +1010,27 @@ public class InspectionRequestServiceImpl extends ServiceImpl() - .eq(com.xujie.modules.order.entity.PODetail::getOrderNo, sub.getPoNo()) - .eq(com.xujie.modules.order.entity.PODetail::getSite, site) - .eq(com.xujie.modules.order.entity.PODetail::getItemNo, sub.getPoItemNo()) - .set(com.xujie.modules.order.entity.PODetail::getStatus, newStatus) + new LambdaUpdateWrapper() + .eq(PODetail::getOrderNo, sub.getPoNo()) + .eq(PODetail::getSite, site) + .eq(PODetail::getItemNo, sub.getPoItemNo()) + .set(PODetail::getStatus, newStatus) ); - - log.info("回滚验货 - 更新PODetail状态: orderNo={}, itemNo={}, 状态={}, 当前数量={}", + + log.info("回滚验货 - 更新PODetail状态: orderNo={}, itemNo={}, 状态={}, 当前数量={}", sub.getPoNo(), sub.getPoItemNo(), newStatus, newApproveQty); - + // 更新 POHeader 状态 poheaderMapper.update(null, - new com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper() - .eq(com.xujie.modules.order.entity.POHeader::getOrderNo, sub.getPoNo()) - .eq(com.xujie.modules.order.entity.POHeader::getSite, site) - .set(com.xujie.modules.order.entity.POHeader::getStatus, newStatus) + new LambdaUpdateWrapper() + .eq(POHeader::getOrderNo, sub.getPoNo()) + .eq(POHeader::getSite, site) + .set(POHeader::getStatus, newStatus) ); - + log.info("回滚验货 - 更新POHeader状态: orderNo={}, 状态={}", sub.getPoNo(), newStatus); } } diff --git a/src/main/resources/mapper/inspection/InspectionRequestDetailSubMapper.xml b/src/main/resources/mapper/inspection/InspectionRequestDetailSubMapper.xml index 63a0fcf..ba21532 100644 --- a/src/main/resources/mapper/inspection/InspectionRequestDetailSubMapper.xml +++ b/src/main/resources/mapper/inspection/InspectionRequestDetailSubMapper.xml @@ -65,4 +65,14 @@ WHERE site = #{site} AND request_no = #{requestNo} + + +