feat(wms): 实现实际库区启用状态的自动更新
- 在新增钢卷时,根据actualWarehouseId禁用对应的库区 - 在更新钢卷时,同步更新实际库区的启用状态 - 提取公共方法updateActualWarehouseEnableStatus统一处理库区状态变更 - 在分卷和合卷操作中正确更新相关库区的启用状态 - 优化导入语句,统一管理BO类的引入
This commit is contained in:
@@ -10,19 +10,16 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.klp.common.helper.LoginHelper;
|
||||
import com.klp.common.utils.StringUtils;
|
||||
import com.klp.domain.bo.*;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import com.klp.domain.bo.WmsMaterialCoilBo;
|
||||
import com.klp.domain.bo.WmsGenerateRecordBo;
|
||||
import com.klp.domain.vo.WmsMaterialCoilVo;
|
||||
import com.klp.domain.vo.WmsGenerateRecordVo;
|
||||
import com.klp.domain.vo.WmsWarehouseVo;
|
||||
import com.klp.domain.vo.WmsRawMaterialVo;
|
||||
import com.klp.domain.vo.WmsBomItemVo;
|
||||
import com.klp.domain.bo.WmsBomItemBo;
|
||||
import com.klp.domain.WmsMaterialCoil;
|
||||
import com.klp.domain.bo.WmsStockBo;
|
||||
import com.klp.domain.vo.WmsStockVo;
|
||||
import com.klp.mapper.WmsMaterialCoilMapper;
|
||||
import com.klp.mapper.WmsStockMapper;
|
||||
@@ -425,6 +422,13 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
bo.setCoilId(add.getCoilId());
|
||||
updateQrcodeCoilId(qrcodeRecordId, add.getCoilId());
|
||||
|
||||
// 如果提供了actualWarehouseId,则更新对应的实际库区为禁用状态
|
||||
if (bo.getActualWarehouseId() != null) {
|
||||
WmsActualWarehouseBo actualWarehouseBo = new WmsActualWarehouseBo();
|
||||
actualWarehouseBo.setActualWarehouseId(bo.getActualWarehouseId());
|
||||
actualWarehouseBo.setIsEnabled(0); // 设置为禁用状态
|
||||
actualWarehouseService.updateByBo(actualWarehouseBo);
|
||||
}
|
||||
// 4. 返回完整的 VO(包含关联对象)
|
||||
return queryById(add.getCoilId());
|
||||
}
|
||||
@@ -559,6 +563,11 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
// 使用MyBatis-Plus的updateById方法直接更新
|
||||
boolean flag = baseMapper.updateById(updateCoil) > 0;
|
||||
|
||||
// 更新实际库区的启用状态
|
||||
if (flag) {
|
||||
updateActualWarehouseEnableStatus(oldCoil.getActualWarehouseId(), bo.getActualWarehouseId());
|
||||
}
|
||||
|
||||
return flag;
|
||||
}
|
||||
|
||||
@@ -602,10 +611,41 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
if (oldCoil.getQrcodeRecordId() != null) {
|
||||
updateQrcodeContentForNormalUpdate(oldCoil, bo, newCoil.getCoilId());
|
||||
}
|
||||
|
||||
// 4. 更新实际库区的启用状态
|
||||
updateActualWarehouseEnableStatus(oldCoil.getActualWarehouseId(), bo.getActualWarehouseId());
|
||||
}
|
||||
|
||||
return flag;
|
||||
}
|
||||
/**
|
||||
* 更新实际库区的启用状态
|
||||
* @param oldActualWarehouseId 原来的实际库区ID
|
||||
* @param newActualWarehouseId 新的实际库区ID
|
||||
*/
|
||||
private void updateActualWarehouseEnableStatus(Long oldActualWarehouseId, Long newActualWarehouseId) {
|
||||
// 如果实际库区没有变化,则无需更新
|
||||
if (Objects.equals(oldActualWarehouseId, newActualWarehouseId)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 启用原来的库区
|
||||
if (oldActualWarehouseId != null) {
|
||||
WmsActualWarehouseBo oldWarehouseBo = new WmsActualWarehouseBo();
|
||||
oldWarehouseBo.setActualWarehouseId(oldActualWarehouseId);
|
||||
oldWarehouseBo.setIsEnabled(1); // 设置为启用状态
|
||||
actualWarehouseService.updateByBo(oldWarehouseBo);
|
||||
}
|
||||
|
||||
// 禁用新的库区
|
||||
if (newActualWarehouseId != null) {
|
||||
WmsActualWarehouseBo newWarehouseBo = new WmsActualWarehouseBo();
|
||||
newWarehouseBo.setActualWarehouseId(newActualWarehouseId);
|
||||
newWarehouseBo.setIsEnabled(0); // 设置为禁用状态
|
||||
actualWarehouseService.updateByBo(newWarehouseBo);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 生成二维码(更新时库区变化)
|
||||
@@ -790,6 +830,9 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
|
||||
// 更新二维码内容中的coilId
|
||||
updateQrcodeCoilId(newQrcodeId, newCoil.getCoilId());
|
||||
|
||||
// 更新实际库区的启用状态
|
||||
updateActualWarehouseEnableStatus(oldCoil.getActualWarehouseId(), newCoilBo.getActualWarehouseId());
|
||||
}
|
||||
} else if (isMerge) {
|
||||
// 合卷:将bo作为合卷后的新钢卷,newCoils中的对象作为参与合卷的原始钢卷
|
||||
@@ -811,6 +854,14 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
originalUpdateWrapper.eq(WmsMaterialCoil::getCoilId, originalCoilBo.getCoilId())
|
||||
.set(WmsMaterialCoil::getDataType, 0); // 设置为历史数据
|
||||
baseMapper.update(null, originalUpdateWrapper);
|
||||
|
||||
// 启用原始钢卷的实际库区
|
||||
if (originalCoil.getActualWarehouseId() != null) {
|
||||
WmsActualWarehouseBo disableWarehouseBo = new WmsActualWarehouseBo();
|
||||
disableWarehouseBo.setActualWarehouseId(originalCoil.getActualWarehouseId());
|
||||
disableWarehouseBo.setIsEnabled(1); // 设置为启用状态
|
||||
actualWarehouseService.updateByBo(disableWarehouseBo);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -853,11 +904,20 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
|
||||
// 更新二维码内容中的coilId
|
||||
updateQrcodeCoilId(mergedQrcodeId, newCoil.getCoilId());
|
||||
|
||||
// 禁用新钢卷的实际库区
|
||||
if (bo.getActualWarehouseId() != null) {
|
||||
WmsActualWarehouseBo enableWarehouseBo = new WmsActualWarehouseBo();
|
||||
enableWarehouseBo.setActualWarehouseId(bo.getActualWarehouseId());
|
||||
enableWarehouseBo.setIsEnabled(0); // 设置为禁用状态
|
||||
actualWarehouseService.updateByBo(enableWarehouseBo);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 为分卷生成新二维码(每个子钢卷一个)
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user