diff --git a/klp-wms/src/main/java/com/klp/controller/WmsCoilPendingActionController.java b/klp-wms/src/main/java/com/klp/controller/WmsCoilPendingActionController.java index 4775ec46..8b3c4baa 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsCoilPendingActionController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsCoilPendingActionController.java @@ -134,8 +134,8 @@ public class WmsCoilPendingActionController extends BaseController { */ @Log(title = "钢卷待操作", businessType = BusinessType.UPDATE) @PutMapping("/complete/{actionId}") - public R completeAction(@PathVariable("actionId") Long actionId) { - return toAjax(iWmsCoilPendingActionService.completeAction(actionId)); + public R completeAction(@PathVariable("actionId") Long actionId, @RequestParam("newCoilIds") String newCoilIds) { + return toAjax(iWmsCoilPendingActionService.completeAction(actionId, newCoilIds)); } /** diff --git a/klp-wms/src/main/java/com/klp/service/IWmsCoilPendingActionService.java b/klp-wms/src/main/java/com/klp/service/IWmsCoilPendingActionService.java index f0bd97ef..d842fb4a 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsCoilPendingActionService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsCoilPendingActionService.java @@ -67,7 +67,7 @@ public interface IWmsCoilPendingActionService { /** * 完成操作 */ - Boolean completeAction(Long actionId); + Boolean completeAction(Long actionId, String newCoilIds); /** * 取消操作 diff --git a/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java b/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java index e5e428c1..eba199e5 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java @@ -51,8 +51,9 @@ public interface IWmsMaterialCoilService { * 修改钢卷物料表 * 如果newCoils不为空,则进行批量更新(分卷/合卷) * 如果newCoils为空,则进行单个更新 + * @return 单个更新或合卷时返回新钢卷ID,分卷时返回逗号分隔的新钢卷ID字符串 */ - Boolean updateByBo(WmsMaterialCoilBo bo); + String updateByBo(WmsMaterialCoilBo bo); /** * 合卷操作 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 a0bc4908..b552469f 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 @@ -275,7 +275,7 @@ public class WmsCoilPendingActionServiceImpl implements IWmsCoilPendingActionSer * 完成操作 */ @Override - public Boolean completeAction(Long actionId) { + public Boolean completeAction(Long actionId, String newCoilIds) { // 先查询原记录,检查操作人是否为空 WmsCoilPendingAction oldAction = baseMapper.selectById(actionId); if (oldAction == null) { @@ -286,6 +286,7 @@ public class WmsCoilPendingActionServiceImpl implements IWmsCoilPendingActionSer action.setActionId(actionId); action.setActionStatus(2); // 已完成 action.setCompleteTime(new Date()); + action.setProcessedCoilIds(newCoilIds); // 如果操作人为空,设置当前登录用户为操作人 if (oldAction.getOperatorId() == null || oldAction.getOperatorName() == null) { 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 1deb3bca..2d3a373b 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 @@ -1150,17 +1150,17 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { */ @Override @Transactional(rollbackFor = Exception.class) - public Boolean updateByBo(WmsMaterialCoilBo bo) { + public String updateByBo(WmsMaterialCoilBo bo) { // 判断是否批量更新 if (bo.getNewCoils() != null && !bo.getNewCoils().isEmpty()) { // 批量更新逻辑(分卷/合卷) - return updateByBatch(bo); + return updateByBatch(bo); // 分卷返回逗号分隔的ID,合卷返回单个ID } else { // 单个更新逻辑,需要coilId if (bo.getCoilId() == null) { throw new RuntimeException("钢卷ID不能为空"); } - return updateBySingle(bo); + return updateBySingle(bo); // 返回新钢卷ID字符串 } } @@ -1277,8 +1277,9 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { /** * 单个更新 + * @return 新钢卷ID字符串 */ - private Boolean updateBySingle(WmsMaterialCoilBo bo) { + private String updateBySingle(WmsMaterialCoilBo bo) { // 检查独占状态 validateCoilOperationPermission(bo.getCoilId(), "单个更新"); @@ -1331,50 +1332,53 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { // 插入新记录 boolean flag = baseMapper.insert(newCoil) > 0; + if (!flag) { + throw new RuntimeException("创建新钢卷失败"); + } + // 如果实际库区id为-1,则清空钢卷上的实际库区绑定 if (bo.getActualWarehouseId() != null && bo.getActualWarehouseId().equals(-1L)) { clearActualWarehouseBinding(newCoil.getActualWarehouseId(), newCoil.getCoilId()); } - if (flag) { - // 3. 更新二维码内容(添加更新步骤并更新current_coil_id) - if (oldCoil.getQrcodeRecordId() != null) { - updateQrcodeContentForNormalUpdate(oldCoil, bo, newCoil.getCoilId()); - } + // 3. 更新二维码内容(添加更新步骤并更新current_coil_id) + if (oldCoil.getQrcodeRecordId() != null) { + updateQrcodeContentForNormalUpdate(oldCoil, bo, newCoil.getCoilId()); + } - // 只有当新的库区ID不为空时更新库区状态 - if (bo.getActualWarehouseId() != null) { - updateActualWarehouseEnableStatus(null, bo.getActualWarehouseId()); - } + // 只有当新的库区ID不为空时更新库区状态 + if (bo.getActualWarehouseId() != null) { + updateActualWarehouseEnableStatus(null, bo.getActualWarehouseId()); + } - // 单个更新:记录加工日志(operationType=2) - // 老的实际库区存在则加一条加工出库记录(使用老钢卷ID) - // 新的实际库区存在则加一条加工入库记录(使用新钢卷ID) - // 新的传-1置空则算一条出库记录 - // 就算老的和新的实际库区相等也应该建两条,因为钢卷ID不一样 - Long oldActualWarehouseId = oldCoil.getActualWarehouseId(); - Long newActualWarehouseId = bo.getActualWarehouseId(); + // 单个更新:记录加工日志(operationType=2) + // 老的实际库区存在则加一条加工出库记录(使用老钢卷ID) + // 新的实际库区存在则加一条加工入库记录(使用新钢卷ID) + // 新的传-1置空则算一条出库记录 + // 就算老的和新的实际库区相等也应该建两条,因为钢卷ID不一样 + Long oldActualWarehouseId = oldCoil.getActualWarehouseId(); + Long newActualWarehouseId = bo.getActualWarehouseId(); - // 老的实际库区存在,加一条加工出库记录 - if (oldActualWarehouseId != null && oldActualWarehouseId != -1L) { - recordWarehouseOperationLog(oldCoil.getCoilId(), oldActualWarehouseId, 2, 2, "单个更新-加工出库"); - } - // 新的实际库区存在,加一条加工入库记录 - if (newActualWarehouseId != null && newActualWarehouseId != -1L) { - // 有新库区,算入库 - recordWarehouseOperationLog(newCoil.getCoilId(), newActualWarehouseId, 2, 1, "单个更新-加工入库"); - } + // 老的实际库区存在,加一条加工出库记录 + if (oldActualWarehouseId != null && oldActualWarehouseId != -1L) { + recordWarehouseOperationLog(oldCoil.getCoilId(), oldActualWarehouseId, 2, 2, "单个更新-加工出库"); + } + // 新的实际库区存在,加一条加工入库记录 + if (newActualWarehouseId != null && newActualWarehouseId != -1L) { + // 有新库区,算入库 + recordWarehouseOperationLog(newCoil.getCoilId(), newActualWarehouseId, 2, 1, "单个更新-加工入库"); + } - // 插入钢卷异常信息 - if (bo.getAbnormals() != null && !bo.getAbnormals().isEmpty()) { - for (WmsCoilAbnormalBo abnormalBo : bo.getAbnormals()) { - abnormalBo.setCoilId(newCoil.getCoilId()); - coilAbnormalService.insertByBo(abnormalBo); - } + // 插入钢卷异常信息 + if (bo.getAbnormals() != null && !bo.getAbnormals().isEmpty()) { + for (WmsCoilAbnormalBo abnormalBo : bo.getAbnormals()) { + abnormalBo.setCoilId(newCoil.getCoilId()); + coilAbnormalService.insertByBo(abnormalBo); } } - return flag; + // 返回新钢卷ID字符串 + return String.valueOf(newCoil.getCoilId()); } /** * 更新实际库区的启用状态 @@ -1461,7 +1465,11 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { /** * 批量更新(分卷/合卷) */ - private Boolean updateByBatch(WmsMaterialCoilBo bo) { + /** + * 批量更新(分卷/合卷) + * @return 分卷时返回逗号分隔的新钢卷ID字符串,合卷时返回单个新钢卷ID字符串 + */ + private String updateByBatch(WmsMaterialCoilBo bo) { // 检查独占状态 if (bo.getCoilId() != null) { validateCoilOperationPermission(bo.getCoilId(), "批量更新"); @@ -1627,6 +1635,9 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { } } + // 返回分卷后的所有新钢卷ID(逗号分隔) + return childCoilIdsStr; + } else if (isMerge) { // 合卷:将bo作为合卷后的新钢卷,newCoils中的对象作为参与合卷的原始钢卷 // 1. 将参与合卷的原始钢卷的二维码标记为失效,并将钢卷标记为历史数据 @@ -1752,9 +1763,12 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { // 合卷完成后,设置新钢卷ID到bo对象中,方便外部获取 bo.setMergedCoilId(newCoil.getCoilId()); + + // 返回合卷后的新钢卷ID + return String.valueOf(newCoil.getCoilId()); } - return true; + throw new RuntimeException("未知的批量更新类型"); } /** @@ -2744,8 +2758,8 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { } // 第二步:执行合卷操作 - Boolean batchResult = updateByBatch(bo); - if (!Boolean.TRUE.equals(batchResult)) { + String coilIds = updateByBatch(bo); + if (coilIds == null || coilIds.isEmpty()) { throw new RuntimeException("合卷操作失败"); }