From 5f9876343c038dee0293a373f9648f00ff105705 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Fri, 29 May 2026 10:16:00 +0800 Subject: [PATCH] =?UTF-8?q?fix(wms/coil):=20=E4=BF=AE=E5=A4=8D=E5=BE=85?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E8=AE=B0=E5=BD=95=E5=BC=80=E5=A7=8B=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=97=B6=E7=9A=84=E7=8A=B6=E6=80=81=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 在开始操作前增加待操作记录存在性检查,若记录不存在则抛出异常 2. 增加状态校验逻辑,防止对已完成(状态为2)的记录再次开始操作 3. 重构代码结构,将直接更新改为先查询后更新,确保状态变更的准确性 4. 添加事务注解保证操作原子性 --- .../impl/WmsCoilPendingActionServiceImpl.java | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsCoilPendingActionServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsCoilPendingActionServiceImpl.java index 3e46d644..b948adfd 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsCoilPendingActionServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsCoilPendingActionServiceImpl.java @@ -402,18 +402,32 @@ public class WmsCoilPendingActionServiceImpl implements IWmsCoilPendingActionSer * 开始处理操作 */ @Override + @Transactional(rollbackFor = Exception.class) public Boolean startProcess(Long actionId) { - WmsCoilPendingAction action = new WmsCoilPendingAction(); - action.setActionId(actionId); - action.setActionStatus(1); // 处理中 - action.setProcessTime(new Date()); + // 1. 查询待操作记录 + WmsCoilPendingAction wmsCoilPendingAction = baseMapper.selectById(actionId); + if (wmsCoilPendingAction == null) { + throw new ServiceException("待操作记录不存在"); + } + + // 2. 检查状态:已完成的操作不能再次开始 + if (wmsCoilPendingAction.getActionStatus() != null && wmsCoilPendingAction.getActionStatus() == 2) { + throw new ServiceException("钢卷已被加工, 该操作已完成"); + } + + // 3. 更新状态为处理中,并记录操作人和时间 + WmsCoilPendingAction updateAction = new WmsCoilPendingAction(); + updateAction.setActionId(actionId); + updateAction.setActionStatus(1); // 处理中 + updateAction.setProcessTime(new Date()); try { - action.setOperatorId(LoginHelper.getUserId()); - action.setOperatorName(LoginHelper.getUsername()); + updateAction.setOperatorId(LoginHelper.getUserId()); + updateAction.setOperatorName(LoginHelper.getUsername()); } catch (Exception e) { // 如果获取登录用户失败,不影响主流程 } - return baseMapper.updateById(action) > 0; + + return baseMapper.updateById(updateAction) > 0; } /**