refactor(WmsMaterialCoil): 优化实际库区绑定清空逻辑

- 在WmsMaterialCoilMapper.xml中添加export_by字段到查询结果
- 提取清空实际库区绑定逻辑为独立方法clearActualWarehouseBinding
- 合并重复的实际库区清空条件判断逻辑
- 简化状态为1或实际库区id为-1时的处理流程
- 添加方法注释说明实际库区绑定清空功能
This commit is contained in:
2026-01-14 11:26:49 +08:00
parent 5c4305ab06
commit baf58c9658
2 changed files with 28 additions and 35 deletions

View File

@@ -918,30 +918,10 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
updateWrapper.set(WmsMaterialCoil::getSaleId, (Long)null);
baseMapper.update(null, updateWrapper);
}
// 如果实际库区id为-1则将实际库区id设置为null
if (bo.getActualWarehouseId() != null && bo.getActualWarehouseId().equals(-1L)) {
WmsActualWarehouseBo disableWarehouseBo = new WmsActualWarehouseBo();
disableWarehouseBo.setActualWarehouseId(oldCoil.getActualWarehouseId());
disableWarehouseBo.setIsEnabled(1); // 设置为启用状态
actualWarehouseService.updateByBo(disableWarehouseBo);
// 同步清空钢卷上的实际库区绑定,避免残留绑定
LambdaUpdateWrapper<WmsMaterialCoil> clearAwWrapper = new LambdaUpdateWrapper<>();
clearAwWrapper.eq(WmsMaterialCoil::getCoilId, bo.getCoilId());
clearAwWrapper.set(WmsMaterialCoil::getActualWarehouseId, (Long) null);
baseMapper.update(null, clearAwWrapper);
}
if (bo.getStatus() != null && bo.getStatus().equals(1)) {
WmsActualWarehouseBo disableWarehouseBo = new WmsActualWarehouseBo();
disableWarehouseBo.setActualWarehouseId(oldCoil.getActualWarehouseId());
disableWarehouseBo.setIsEnabled(1); // 设置为启用状态
actualWarehouseService.updateByBo(disableWarehouseBo);
// 同步清空钢卷上的实际库区绑定,避免残留绑定
LambdaUpdateWrapper<WmsMaterialCoil> clearAwWrapper = new LambdaUpdateWrapper<>();
clearAwWrapper.eq(WmsMaterialCoil::getCoilId, bo.getCoilId());
clearAwWrapper.set(WmsMaterialCoil::getActualWarehouseId, (Long) null);
baseMapper.update(null, clearAwWrapper);
// 如果实际库区id为-1或状态为1则清空钢卷上的实际库区绑定
if ((bo.getActualWarehouseId() != null && bo.getActualWarehouseId().equals(-1L))
|| (bo.getStatus() != null && bo.getStatus().equals(1))) {
clearActualWarehouseBinding(oldCoil.getActualWarehouseId(), bo.getCoilId());
}
// 更新实际库区的启用状态
@@ -984,18 +964,9 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
newCoil.setDataType(1); // 设置为当前数据
newCoil.setQrcodeRecordId(oldCoil.getQrcodeRecordId()); // 继续使用原二维码
// 如果实际库区id为-1将实际库区id设置为null
// 如果实际库区id为-1清空钢卷上的实际库区绑定
if (bo.getActualWarehouseId() != null && bo.getActualWarehouseId().equals(-1L)) {
WmsActualWarehouseBo disableWarehouseBo = new WmsActualWarehouseBo();
disableWarehouseBo.setActualWarehouseId(oldCoil.getActualWarehouseId());
disableWarehouseBo.setIsEnabled(1); // 设置为启用状态
actualWarehouseService.updateByBo(disableWarehouseBo);
// 同步清空钢卷上的实际库区绑定,避免残留绑定
LambdaUpdateWrapper<WmsMaterialCoil> clearAwWrapper = new LambdaUpdateWrapper<>();
clearAwWrapper.eq(WmsMaterialCoil::getCoilId, bo.getCoilId());
clearAwWrapper.set(WmsMaterialCoil::getActualWarehouseId, (Long) null);
baseMapper.update(null, clearAwWrapper);
clearActualWarehouseBinding(oldCoil.getActualWarehouseId(), bo.getCoilId());
}
// 继承原记录的关键字段
@@ -1053,6 +1024,27 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
}
}
/**
* 清空钢卷上的实际库区绑定
* @param actualWarehouseId 实际库区ID
* @param coilId 钢卷ID
*/
private void clearActualWarehouseBinding(Long actualWarehouseId, Long coilId) {
// 启用原来的库区
if (actualWarehouseId != null) {
WmsActualWarehouseBo warehouseBo = new WmsActualWarehouseBo();
warehouseBo.setActualWarehouseId(actualWarehouseId);
warehouseBo.setIsEnabled(1); // 设置为启用状态
actualWarehouseService.updateByBo(warehouseBo);
}
// 清空钢卷上的实际库区绑定
LambdaUpdateWrapper<WmsMaterialCoil> clearAwWrapper = new LambdaUpdateWrapper<>();
clearAwWrapper.eq(WmsMaterialCoil::getCoilId, coilId);
clearAwWrapper.set(WmsMaterialCoil::getActualWarehouseId, (Long) null);
baseMapper.update(null, clearAwWrapper);
}
/**
* 生成二维码(更新时库区变化)

View File

@@ -68,6 +68,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
SELECT
mc.coil_id,
mc.export_time,
mc.export_by,
mc.enter_coil_no,
mc.current_coil_no,
mc.supplier_coil_no,