fix(wms): 修复钢卷分卷功能中的子钢卷ID更新逻辑

- 修改updateChildCoilIdsQrcodeCoilId方法参数,添加旧钢卷ID参数
- 在分卷步骤查找逻辑中增加parentCoilId验证条件
- 将coilPendingActionService更新方式改为直接使用mapper更新
- 修复分卷过程中子钢卷ID传递的参数顺序问题
- 优化钢卷分卷步骤中child_coil_ids字段的更新逻辑
This commit is contained in:
2026-01-22 14:14:15 +08:00
parent 7585c2cc46
commit c010071eaa

View File

@@ -21,7 +21,7 @@ import com.klp.domain.bo.*;
import com.klp.domain.vo.*; import com.klp.domain.vo.*;
import com.klp.domain.WmsCoilPendingAction; import com.klp.domain.WmsCoilPendingAction;
import com.klp.domain.bo.WmsCoilPendingActionBo; import com.klp.domain.bo.WmsCoilPendingActionBo;
import com.klp.mapper.WmsDeliveryPlanMapper; import com.klp.mapper.*;
import com.klp.system.service.ISysUserService; import com.klp.system.service.ISysUserService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -29,11 +29,6 @@ import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.klp.mapper.WmsMaterialCoilMapper;
import com.klp.mapper.WmsStockMapper;
import com.klp.mapper.WmsProductMapper;
import com.klp.mapper.WmsRawMaterialMapper;
import com.klp.mapper.WmsGenerateRecordMapper;
import com.klp.service.IWmsMaterialCoilService; import com.klp.service.IWmsMaterialCoilService;
import com.klp.service.IWmsStockService; import com.klp.service.IWmsStockService;
import com.klp.service.IWmsGenerateRecordService; import com.klp.service.IWmsGenerateRecordService;
@@ -69,6 +64,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
private final IWmsRawMaterialService rawMaterialService; private final IWmsRawMaterialService rawMaterialService;
private final IWmsBomItemService bomItemService; private final IWmsBomItemService bomItemService;
private final IWmsCoilPendingActionService coilPendingActionService; private final IWmsCoilPendingActionService coilPendingActionService;
private final WmsCoilPendingActionMapper coilPendingActionMapper;
private final IWmsProductService productService; private final IWmsProductService productService;
private final ISysUserService userService; private final ISysUserService userService;
private final WmsDeliveryPlanMapper deliveryPlanMapper; private final WmsDeliveryPlanMapper deliveryPlanMapper;
@@ -1393,7 +1389,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
for (WmsMaterialCoil newChildCoil : newCoils) { for (WmsMaterialCoil newChildCoil : newCoils) {
if (newChildCoil.getQrcodeRecordId() != null) { if (newChildCoil.getQrcodeRecordId() != null) {
// 更新该子钢卷的分卷步骤中的child_coil_ids字段 // 更新该子钢卷的分卷步骤中的child_coil_ids字段
updateChildCoilIdsQrcodeCoilId(newChildCoil.getQrcodeRecordId(), newChildCoil.getCoilId(), childCoilIdsStr); updateChildCoilIdsQrcodeCoilId(oldCoil.getCoilId(), newChildCoil.getQrcodeRecordId(), newChildCoil.getCoilId(), childCoilIdsStr);
} else { } else {
log.warn("子钢卷缺少二维码记录ID跳过分卷步骤child_coil_ids更新coilId: {}", newChildCoil.getCoilId()); log.warn("子钢卷缺少二维码记录ID跳过分卷步骤child_coil_ids更新coilId: {}", newChildCoil.getCoilId());
} }
@@ -3123,7 +3119,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
* @param currentCoilId 当前子钢卷ID * @param currentCoilId 当前子钢卷ID
* @param childCoilIdsStr 本次分卷产生的所有子钢卷ID的逗号分隔字符串 * @param childCoilIdsStr 本次分卷产生的所有子钢卷ID的逗号分隔字符串
*/ */
private void updateChildCoilIdsQrcodeCoilId(Long qrcodeRecordId, Long currentCoilId, String childCoilIdsStr) { private void updateChildCoilIdsQrcodeCoilId(Long oldCoilId, Long qrcodeRecordId, Long currentCoilId, String childCoilIdsStr) {
log.info("开始更新子钢卷二维码的分卷步骤child_coil_idsqrcodeRecordId: {}, currentCoilId: {}, childCoilIdsStr: {}", log.info("开始更新子钢卷二维码的分卷步骤child_coil_idsqrcodeRecordId: {}, currentCoilId: {}, childCoilIdsStr: {}",
qrcodeRecordId, currentCoilId, childCoilIdsStr); qrcodeRecordId, currentCoilId, childCoilIdsStr);
@@ -3163,7 +3159,12 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
for (int i = steps.size() - 1; i >= 0; i--) { for (int i = steps.size() - 1; i >= 0; i--) {
Map<String, Object> step = steps.get(i); Map<String, Object> step = steps.get(i);
String operation = (String) step.get("operation"); String operation = (String) step.get("operation");
if ("分卷".equals(operation)) { Long parentCoilId = null;
Object oldCoilIdObj = step.get("old_coil_id");
if (oldCoilIdObj != null) {
parentCoilId = Long.valueOf(oldCoilIdObj.toString());
}
if ("分卷".equals(operation) && oldCoilId.equals(parentCoilId)) {
lastSplitStep = step; lastSplitStep = step;
break; // 找到最新的分卷步骤就停止 break; // 找到最新的分卷步骤就停止
} }
@@ -3362,10 +3363,12 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
String.valueOf(childCoil.getCoilId()) : String.valueOf(childCoil.getCoilId()) :
existingChildCoilIds + "," + childCoil.getCoilId(); existingChildCoilIds + "," + childCoil.getCoilId();
WmsCoilPendingActionBo updatePendingBo = new WmsCoilPendingActionBo(); coilPendingActionMapper.update(
updatePendingBo.setActionId(pendingActionId); null,
updatePendingBo.setRemark(updatedChildCoilIds); Wrappers.<WmsCoilPendingAction>lambdaUpdate()
coilPendingActionService.updateByBo(updatePendingBo); .eq(WmsCoilPendingAction::getActionId, pendingActionId)
.set(WmsCoilPendingAction::getRemark, updatedChildCoilIds)
);
// 10. 返回创建的子钢卷信息 // 10. 返回创建的子钢卷信息
WmsMaterialCoilVo result = queryById(childCoil.getCoilId()); WmsMaterialCoilVo result = queryById(childCoil.getCoilId());
@@ -3431,7 +3434,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
for (WmsMaterialCoil childCoil : childCoils) { for (WmsMaterialCoil childCoil : childCoils) {
if (childCoil.getQrcodeRecordId() != null) { if (childCoil.getQrcodeRecordId() != null) {
updateChildCoilIdsQrcodeCoilId(childCoil.getQrcodeRecordId(), childCoil.getCoilId(), allChildCoilIdsStr); updateChildCoilIdsQrcodeCoilId(parentCoilId,childCoil.getQrcodeRecordId(), childCoil.getCoilId(), allChildCoilIdsStr);
} }
} }