From d345f594e6c2b94020bde8048a55614fa1951353 Mon Sep 17 00:00:00 2001 From: qiankanghui Date: Mon, 22 Jun 2026 16:35:39 +0800 Subject: [PATCH] =?UTF-8?q?feat(inspection):=20=E6=B7=BB=E5=8A=A0=E9=AA=8C?= =?UTF-8?q?=E8=B4=A7=E7=94=B3=E8=AF=B7=E6=98=8E=E7=BB=86=E5=9B=9E=E6=BB=9A?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 rollbackInspectRequestDetail 方法用于回滚验货申请明细 - 添加 XML 映射实现清空 inspect_no 并更新状态为已排程 - 在 QcServiceImpl 中集成回滚逻辑到删除操作 - 修改 startInspection 方法使用 LambdaUpdateWrapper 更新状态 - 移除验货单号生成逻辑,由 QcServiceImpl 统一处理 --- .../mapper/InspectionRequestDetailMapper.java | 7 ++++++ .../impl/InspectionRequestServiceImpl.java | 25 ++++++++----------- .../qms/service/impl/QcServiceImpl.java | 19 ++++++++++++++ .../InspectionRequestDetailMapper.xml | 11 ++++++++ 4 files changed, 47 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/xujie/modules/inspection/mapper/InspectionRequestDetailMapper.java b/src/main/java/com/xujie/modules/inspection/mapper/InspectionRequestDetailMapper.java index e370626..46a9e4b 100644 --- a/src/main/java/com/xujie/modules/inspection/mapper/InspectionRequestDetailMapper.java +++ b/src/main/java/com/xujie/modules/inspection/mapper/InspectionRequestDetailMapper.java @@ -92,4 +92,11 @@ public interface InspectionRequestDetailMapper extends BaseMapper selectDetailsForStatusCheck(@Param("site") String site, @Param("requestNo") String requestNo); + + /** + * 回滚验货申请明细 - 清空inspect_no并更新状态为已排程 + */ + int rollbackInspectRequestDetail(@Param("site") String site, + @Param("poOrderNo") String poOrderNo, + @Param("poItemNo") Integer poItemNo); } 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 9ec1330..53cdd3a 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 @@ -632,29 +632,24 @@ public class InspectionRequestServiceImpl extends ServiceImpl() + .eq(InspectionRequestDetail::getSite, site) + .eq(InspectionRequestDetail::getRequestNo, requestNo) + .eq(InspectionRequestDetail::getItemNo, itemNo) + .set(InspectionRequestDetail::getStatus, "验货中") + .set(InspectionRequestDetail::getStatusDb, "Inspecting") + ); if (detailUpdateCount == 0) { throw new RuntimeException("更新明细表状态失败,可能原因:1.记录不存在 2.记录已被其他事务修改 3.site/requestNo/itemNo不匹配"); } - // 5. 更新头表状态为验货中(只要有明细开始验货,头表就立即更新) + // 4. 更新头表状态为验货中(只要有明细开始验货,头表就立即更新) int headerUpdateCount = baseMapper.startInspection(site, requestNo); if (headerUpdateCount == 0) { throw new RuntimeException("更新头表状态失败"); } - log.info("头表状态已更新为验货中: requestNo={}", requestNo); - - log.info("开始验货成功: requestNo={}, itemNo={}, inspectNo={}", requestNo, itemNo, inspectNo); } @Transactional(rollbackFor = Exception.class) diff --git a/src/main/java/com/xujie/modules/qms/service/impl/QcServiceImpl.java b/src/main/java/com/xujie/modules/qms/service/impl/QcServiceImpl.java index cd994e1..5421dbd 100644 --- a/src/main/java/com/xujie/modules/qms/service/impl/QcServiceImpl.java +++ b/src/main/java/com/xujie/modules/qms/service/impl/QcServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xujie.common.exception.XJException; import com.xujie.common.utils.*; import com.xujie.modules.inspection.data.MyInspectionListVO; +import com.xujie.modules.inspection.mapper.InspectionRequestDetailMapper; import com.xujie.modules.inspection.mapper.InspectionRequestHeaderMapper; import com.xujie.modules.qms.data.PartData; import com.xujie.modules.oss.dao.SysOssDao; @@ -86,6 +87,9 @@ public class QcServiceImpl implements QcService { @Autowired private InspectionRequestHeaderMapper inspectionRequestHeaderMapper; + @Autowired + private InspectionRequestDetailMapper inspectionRequestDetailMapper; + @Value("${sys-file.oss-url}") private String ossUrl; @@ -3682,6 +3686,21 @@ public class QcServiceImpl implements QcService { if ("已完成".equals(qcData.getState())) { throw new RuntimeException("检验单已完成,不允许删除!"); } + + // 回滚验货申请明细:清空inspect_no并更新状态为已排程 + if (qcData.getPoOrderNo() != null && qcData.getPoItemNo() != null) { + try { + Integer poItemNo = Integer.parseInt(qcData.getPoItemNo()); + inspectionRequestDetailMapper.rollbackInspectRequestDetail( + qcData.getSite(), + qcData.getPoOrderNo(), + poItemNo + ); + } catch (NumberFormatException e) { + // poItemNo格式错误时忽略,继续执行删除逻辑 + } + } + // 删除检验记录 qcMapper.deleteIQCRecord(qcData); // 删除明细记录信息 diff --git a/src/main/resources/mapper/inspection/InspectionRequestDetailMapper.xml b/src/main/resources/mapper/inspection/InspectionRequestDetailMapper.xml index e64837d..66cc34c 100644 --- a/src/main/resources/mapper/inspection/InspectionRequestDetailMapper.xml +++ b/src/main/resources/mapper/inspection/InspectionRequestDetailMapper.xml @@ -227,4 +227,15 @@ ORDER BY d.item_no ASC + + + UPDATE srm_inspect_request_detail + SET inspect_no = NULL, + status = '已排程', + status_db = 'Scheduled' + WHERE site = #{site} + AND request_no = #{poOrderNo} + AND item_no = #{poItemNo} + +