feat(wms): 添加钢卷回滚功能替代原有的复活功能

- 将原有的reviveCoil方法重命名为rollbackCoil,实现更精确的回滚操作
- 修改接口路径从GET /reviveCoil/{coilId}改为POST /rollback/{currentCoilId}
- 新增详细的回滚验证逻辑,包括检查数据类型、删除标志和发货状态
- 实现基于二维码记录的钢卷历史追踪,支持撤销更新、合卷和分卷操作
- 添加回滚操作的阻止机制,防止对初始创建、合卷产物和分卷产物进行回滚
- 完善回滚过程中的库位释放和数据恢复流程
- 更新二维码记录以记录回滚操作步骤和相关信息
This commit is contained in:
2026-01-20 09:57:59 +08:00
parent 567a1d5cae
commit 1f284d3607
3 changed files with 335 additions and 75 deletions

View File

@@ -301,30 +301,28 @@ public class WmsMaterialCoilController extends BaseController {
}
/**
* 复活历史钢卷
* 将dataType=0的历史钢卷恢复为dataType=1的当前钢卷
* 同时清空实际库位绑定,并检查当前钢卷号是否重复
* 回滚钢卷操作
* 根据当前钢卷ID找到历史钢卷恢复,删除当前钢卷
* 用于撤销单个更新、合卷或分卷操作
*
* @param coilId 钢卷ID
* @return 复活结果,包含success状态、错误信息、钢卷ID和当前钢卷号
* @param currentCoilId 当前钢卷ID(需要回滚的钢卷)
* @return 操作结果,包含恢复的历史钢卷信息
*/
@Log(title = "钢卷物料表", businessType = BusinessType.UPDATE)
@GetMapping("/reviveCoil/{coilId}")
public R<Map<String, Object>> reviveCoil(
@NotNull(message = "钢卷ID不能为空")
@PathVariable("coilId") Long coilId) {
@RepeatSubmit()
@PostMapping("/rollback/{currentCoilId}")
public R<Map<String, Object>> rollbackCoil(
@NotNull(message = "当前钢卷ID不能为空")
@PathVariable("currentCoilId") Long currentCoilId) {
try {
Map<String, Object> result = iWmsMaterialCoilService.reviveCoil(coilId);
// 根据业务结果返回成功/失败的统一响应
if (Boolean.TRUE.equals(result.get("success"))) {
return R.ok(result);
} else {
return R.fail(result.get("message").toString(), result);
}
} catch (Exception e) {
return R.fail("复活钢卷失败:" + e.getMessage());
Map<String, Object> rollbackResult = iWmsMaterialCoilService.rollbackCoil(currentCoilId);
return R.ok(rollbackResult);
} catch (RuntimeException e) {
return R.fail("回滚失败:" + e.getMessage());
}
}
}