Compare commits

...

2 Commits

Author SHA1 Message Date
2bfecfbbb2 Merge remote-tracking branch 'origin/0.8.X' into 0.8.X 2026-03-04 16:54:43 +08:00
f6681b73af fix(wms): 修复钢卷合并拆分回滚时二维码状态管理问题
- 在合卷回滚操作中恢复原始钢卷的二维码为生效状态并更新相关记录
- 在拆卷回滚操作中恢复母卷的二维码为生效状态并更新相关记录
- 修改updateQrcodeForMergeRollback方法参数以正确传递恢复的钢卷ID
- 更新合卷回滚步骤中的钢卷ID记录逻辑以准确追踪操作流程
- 在钢卷拆分操作中将母卷的二维码标记为失效状态确保数据一致性
2026-03-04 16:54:32 +08:00

View File

@@ -3177,10 +3177,21 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
// 删除操作记录 // 删除操作记录
deletePendingActionForRollback(originalCoil.getCoilId()); deletePendingActionForRollback(originalCoil.getCoilId());
}
// 更新二维码记录 // 恢复原始钢卷的二维码为生效状态并更新二维码记录
updateQrcodeForMergeRollback(qrcodeRecord, currentCoil, parentCoilIds); if (originalCoil.getQrcodeRecordId() != null) {
WmsGenerateRecordBo originalQrBo = new WmsGenerateRecordBo();
originalQrBo.setRecordId(originalCoil.getQrcodeRecordId());
originalQrBo.setStatus(1); // 1=生效
generateRecordService.updateByBo(originalQrBo);
// 更新原始钢卷的二维码记录(添加回滚步骤)
WmsGenerateRecordVo originalQrRecord = generateRecordService.queryById(originalCoil.getQrcodeRecordId());
if (originalQrRecord != null) {
updateQrcodeForMergeRollback(originalQrRecord, currentCoil, originalCoil.getCoilId());
}
}
}
result.put("success", true); result.put("success", true);
result.put("message", "合卷回滚成功,已恢复 " + parentCoilIds.size() + " 个原始钢卷,删除了合卷钢卷"); result.put("message", "合卷回滚成功,已恢复 " + parentCoilIds.size() + " 个原始钢卷,删除了合卷钢卷");
@@ -3285,8 +3296,20 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
// 删除母卷的操作记录 // 删除母卷的操作记录
deletePendingActionForRollback(motherCoilId); deletePendingActionForRollback(motherCoilId);
// 更新二维码记录 // 恢复母卷的二维码为生效状态
updateQrcodeForSplitRollback(qrcodeRecord, currentCoil, motherCoilId); WmsMaterialCoil motherCoil = baseMapper.selectById(motherCoilId);
if (motherCoil != null && motherCoil.getQrcodeRecordId() != null) {
WmsGenerateRecordBo motherQrBo = new WmsGenerateRecordBo();
motherQrBo.setRecordId(motherCoil.getQrcodeRecordId());
motherQrBo.setStatus(1); // 1=生效
generateRecordService.updateByBo(motherQrBo);
// 更新母卷的二维码记录(添加回滚步骤)
WmsGenerateRecordVo motherQrRecord = generateRecordService.queryById(motherCoil.getQrcodeRecordId());
if (motherQrRecord != null) {
updateQrcodeForSplitRollback(motherQrRecord, currentCoil, motherCoilId);
}
}
} }
result.put("success", true); result.put("success", true);
@@ -3408,7 +3431,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
/** /**
* 更新合卷回滚后的二维码记录 * 更新合卷回滚后的二维码记录
*/ */
private void updateQrcodeForMergeRollback(WmsGenerateRecordVo qrcodeRecord, WmsMaterialCoil currentCoil, List<Long> parentCoilIds) { private void updateQrcodeForMergeRollback(WmsGenerateRecordVo qrcodeRecord, WmsMaterialCoil currentCoil, Long restoredCoilId) {
try { try {
ObjectMapper objectMapper = new ObjectMapper(); ObjectMapper objectMapper = new ObjectMapper();
Map<String, Object> contentMap = objectMapper.readValue(qrcodeRecord.getContent(), Map.class); Map<String, Object> contentMap = objectMapper.readValue(qrcodeRecord.getContent(), Map.class);
@@ -3426,17 +3449,15 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
rollbackStep.put("operation", "合卷回滚"); rollbackStep.put("operation", "合卷回滚");
rollbackStep.put("deleted_coil_id", String.valueOf(currentCoil.getCoilId())); rollbackStep.put("deleted_coil_id", String.valueOf(currentCoil.getCoilId()));
rollbackStep.put("deleted_current_coil_no", currentCoil.getCurrentCoilNo()); rollbackStep.put("deleted_current_coil_no", currentCoil.getCurrentCoilNo());
rollbackStep.put("restored_parent_coil_ids", parentCoilIds.stream().map(String::valueOf).collect(Collectors.joining(","))); rollbackStep.put("restored_coil_id", String.valueOf(restoredCoilId));
rollbackStep.put("operator", LoginHelper.getUsername()); rollbackStep.put("operator", LoginHelper.getUsername());
rollbackStep.put("rollback_time", new java.util.Date()); rollbackStep.put("rollback_time", new java.util.Date());
steps.add(rollbackStep); steps.add(rollbackStep);
contentMap.put("steps", steps); contentMap.put("steps", steps);
// 更新current_coil_id为第一个恢复的原始钢卷ID // 更新current_coil_id为恢复的原始钢卷ID
if (!parentCoilIds.isEmpty()) { contentMap.put("current_coil_id", String.valueOf(restoredCoilId));
contentMap.put("current_coil_id", String.valueOf(parentCoilIds.get(0)));
}
String newContentJson = objectMapper.writeValueAsString(contentMap); String newContentJson = objectMapper.writeValueAsString(contentMap);
WmsGenerateRecordBo updateBo = new WmsGenerateRecordBo(); WmsGenerateRecordBo updateBo = new WmsGenerateRecordBo();
@@ -3977,6 +3998,15 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
.set(WmsMaterialCoil::getParentCoilNos, String.join(",", childCoilNos)); // 记录子卷号 .set(WmsMaterialCoil::getParentCoilNos, String.join(",", childCoilNos)); // 记录子卷号
baseMapper.update(null, parentUpdateWrapper); baseMapper.update(null, parentUpdateWrapper);
// 4.1 将母卷的二维码标记为失效
if (parentCoil.getQrcodeRecordId() != null) {
WmsGenerateRecordBo parentQrBo = new WmsGenerateRecordBo();
parentQrBo.setRecordId(parentCoil.getQrcodeRecordId());
parentQrBo.setStatus(0); // 0=失效
generateRecordService.updateByBo(parentQrBo);
}
// 5. 批量更新所有子钢卷的二维码中的child_coil_ids // 5. 批量更新所有子钢卷的二维码中的child_coil_ids
String allChildCoilIdsStr = childCoilIds.stream() String allChildCoilIdsStr = childCoilIds.stream()
.map(String::valueOf) .map(String::valueOf)