From 5236f669f83b31801f3890c54b38caa71a901f8d Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Mon, 12 Jan 2026 20:41:08 +0800 Subject: [PATCH] =?UTF-8?q?fix(wms):=20=E8=A7=A3=E5=86=B3=E9=92=A2?= =?UTF-8?q?=E5=8D=B7=E5=BA=93=E5=8C=BA=E7=BB=91=E5=AE=9A=E6=B8=85=E7=90=86?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在钢卷状态变更时同步清空实际库区绑定,避免残留绑定 - 在钢卷导出时使用UpdateWrapper方式清空实际库区ID并释放原库区 - 在钢卷历史化处理时同步清空实际库区绑定 - 添加了对null值的安全检查以防止空指针异常 --- .../impl/WmsMaterialCoilServiceImpl.java | 39 +++++++++++++++++-- 1 file changed, 35 insertions(+), 4 deletions(-) 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 7df1991c..927d419e 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 @@ -2,6 +2,7 @@ package com.klp.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.esotericsoftware.minlog.Log; import com.fasterxml.jackson.core.JsonProcessingException; import com.klp.common.core.domain.entity.SysUser; @@ -831,6 +832,12 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { disableWarehouseBo.setActualWarehouseId(oldCoil.getActualWarehouseId()); disableWarehouseBo.setIsEnabled(1); // 设置为启用状态 actualWarehouseService.updateByBo(disableWarehouseBo); + + // 同步清空钢卷上的实际库区绑定,避免残留绑定 + LambdaUpdateWrapper clearAwWrapper = new LambdaUpdateWrapper<>(); + clearAwWrapper.eq(WmsMaterialCoil::getCoilId, bo.getCoilId()); + clearAwWrapper.set(WmsMaterialCoil::getActualWarehouseId, (Long) null); + baseMapper.update(null, clearAwWrapper); } // 更新实际库区的启用状态 @@ -1127,7 +1134,8 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { // 标记钢卷为历史数据 LambdaUpdateWrapper originalUpdateWrapper = new LambdaUpdateWrapper<>(); originalUpdateWrapper.eq(WmsMaterialCoil::getCoilId, originalCoilBo.getCoilId()) - .set(WmsMaterialCoil::getDataType, 0); // 设置为历史数据 + .set(WmsMaterialCoil::getDataType, 0) // 设置为历史数据 + .set(WmsMaterialCoil::getActualWarehouseId, (Long) null); // 同步清空实际库区绑定 baseMapper.update(null, originalUpdateWrapper); // 启用原始钢卷的实际库区 @@ -1954,11 +1962,34 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { */ @Override public int exportCoil(Long coilId) { + // 查询当前钢卷信息,记录原实际库区ID WmsMaterialCoilVo wmsMaterialCoilVo = queryById(coilId); - wmsMaterialCoilVo.setExportTime(new Date()); - wmsMaterialCoilVo.setStatus(1); + Long oldActualWarehouseId = wmsMaterialCoilVo != null ? wmsMaterialCoilVo.getActualWarehouseId() : null; - return baseMapper.updateById(BeanUtil.toBean(wmsMaterialCoilVo,WmsMaterialCoil.class)); + // 1. 更新钢卷为已发货,并记录发货时间,同时清空实际库区占用(改用Wrapper实现) + int rows = 0; + if (wmsMaterialCoilVo != null) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + // 设置更新条件:钢卷ID + updateWrapper.eq("coil_id", coilId); + // 设置要更新的字段 + updateWrapper.set("export_time", new Date()) // 发货时间 + .set("status", 1) // 已发货状态 + .set("actual_warehouse_id", null); // 清空实际库区ID(关键) + + // 执行更新操作 + rows = baseMapper.update(null, updateWrapper); + } + + // 2. 释放原实际库区(若存在):将库位设置为可用(启用) + if (rows > 0 && oldActualWarehouseId != null) { + WmsActualWarehouseBo releaseBo = new WmsActualWarehouseBo(); + releaseBo.setActualWarehouseId(oldActualWarehouseId); + releaseBo.setIsEnabled(1); // 释放:设置为启用 + actualWarehouseService.updateByBo(releaseBo); + } + + return rows; } /**