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