fix(wms): 解决实际库区ID为-1时的数据同步问题

- 添加实际库区ID为-1的判断条件并设置为null
- 更新对应库区为启用状态确保数据一致性
- 清空钢卷上残留的实际库区绑定避免数据错误
- 修复库区状态更新逻辑中的潜在数据同步问题
This commit is contained in:
2026-01-14 08:31:52 +08:00
parent 90b45649ad
commit f0a4b9ffc5

View File

@@ -915,6 +915,19 @@ 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(-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);
}
if (bo.getStatus() != null && bo.getStatus().equals(1)) {
WmsActualWarehouseBo disableWarehouseBo = new WmsActualWarehouseBo();
disableWarehouseBo.setActualWarehouseId(oldCoil.getActualWarehouseId());
@@ -968,6 +981,20 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
newCoil.setDataType(1); // 设置为当前数据
newCoil.setQrcodeRecordId(oldCoil.getQrcodeRecordId()); // 继续使用原二维码
// 如果实际库区id为-1则将实际库区id设置为null
if (bo.getActualWarehouseId() != null && bo.getActualWarehouseId().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);
}
// 继承原记录的关键字段
if (newCoil.getEnterCoilNo() == null) {
newCoil.setEnterCoilNo(oldCoil.getEnterCoilNo());