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 7f866c16..911a6813 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 @@ -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; } + /** * 为分卷生成新二维码(每个子钢卷一个) */