From f1e4a7c031ef9893e1a4573f548a7d47aa1fe4d5 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Mon, 26 Jan 2026 13:03:34 +0800 Subject: [PATCH] =?UTF-8?q?fix(wms):=20=E4=BA=8B=E5=8A=A1=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E9=94=81=E5=AE=9A=E5=8A=A0=E9=A2=86=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改钢卷验证条件从exclusiveStatus检查改为dataType检查 - 添加错误提示信息从"正在单步分条"改为"历史钢卷不能被操作" - 在单步分卷操作中添加待处理操作记录创建功能 - 添加领料操作类型的待处理记录插入逻辑 - 实现操作记录失败时的异常处理机制 - 注释掉重复的待处理操作检查代码以避免冲突 --- .../impl/WmsCoilPendingActionServiceImpl.java | 4 +-- .../impl/WmsMaterialCoilServiceImpl.java | 26 ++++++++++++++++++- 2 files changed, 27 insertions(+), 3 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 83808b29..6f679aac 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 @@ -130,8 +130,8 @@ public class WmsCoilPendingActionServiceImpl implements IWmsCoilPendingActionSer validEntityBeforeSave(add); if (add.getCoilId() != null){ WmsMaterialCoil materialCoil = materialCoilMapper.selectById(add.getCoilId()); - if (materialCoil.getExclusiveStatus() !=0) { - throw new RuntimeException("该钢卷正在单步分条,请勿重复操作!"); + if (materialCoil.getDataType() == 0) { + throw new RuntimeException("该钢卷为历史钢卷不能被操作"); } } // 设置默认值 diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java index 0dd98245..725ebcbc 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java @@ -3261,17 +3261,41 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { throw new RuntimeException("当前钢卷是历史卷"); } - // 3. 检查是否已被锁定 + // 3. 检查是否已被锁定或已有相同类型的待处理操作 if (coil.getExclusiveStatus() != null && coil.getExclusiveStatus() != 0) { throw new RuntimeException("钢卷正在进行其他操作,无法开始单步分卷"); } +// // 3.1 检查是否已经有相同类型的待处理操作(防止重复领料) +// LambdaQueryWrapper pendingActionQuery = new LambdaQueryWrapper<>(); +// pendingActionQuery.eq(WmsCoilPendingAction::getCoilId, coilId) +// .eq(WmsCoilPendingAction::getActionType, 501) // 领料操作类型 +// .ne(WmsCoilPendingAction::getActionStatus, 2); // 不是已完成的状态 +// List existingActions = coilPendingActionMapper.selectList(pendingActionQuery); +// if (!existingActions.isEmpty()) { +// throw new RuntimeException("该钢卷已有待处理的领料操作,无法重复领料"); +// } + // 4. 设置独占状态(锁定钢卷) LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(WmsMaterialCoil::getCoilId, coilId) .set(WmsMaterialCoil::getExclusiveStatus, 1); // 1表示单步分卷中 baseMapper.update(null, updateWrapper); + // 5. 创建待操作记录(领料操作) + WmsCoilPendingActionBo pendingActionBo = new WmsCoilPendingActionBo(); + pendingActionBo.setCoilId(coilId); + pendingActionBo.setCurrentCoilNo(coil.getCurrentCoilNo()); + pendingActionBo.setActionType(501); // 领料操作类型 + pendingActionBo.setActionStatus(0); // 待处理 + pendingActionBo.setSourceType("manual"); // 手动创建 + pendingActionBo.setPriority(0); // 默认普通优先级 + + Boolean insertResult = coilPendingActionService.insertByBo(pendingActionBo); + if (!insertResult) { + throw new RuntimeException("创建待操作记录失败"); + } + return true; }