fix(oms,wms): 入库执行单取消下发完整回退WMS数据,修复重复下发数据致取消阻断

一、取消下发回退不完整/阻断:原OMS跨库仅软删4张表,收货任务/收货作业单/质检单/电子签名残留;且getWShOrder在重复下发产生多张同号收货单时抛TooManyResultsException,取消下发整体回滚失败。WMS新增/stockInOrderApi/omsCancelInOrder:单事务软删下发链路全部8张表(入库单/明细、收货单/明细、收货任务、收货作业单/明细、质检单),幂等可重试,已开始收货报错拦截;OMS执行单取消下发改调该接口并清理待签名电子签名;预约单取消下发补齐WMS清理

二、下发失败被静默吞掉:omsInOrderAdd/omsInOrderAddDetail原返回void、Feign降级静默,OMS已下发但WMS无数据。改返回AjaxResult、fallback报错,执行单/预约单下发逐一校验返回值,失败回滚下发标记(WMS侧幂等,重下发安全)

三、下发防重原子化:issueOrder下发标记改条件更新(issue_time IS NULL)+影响行数校验,关闭并发/双击重复推送WMS的窗口
This commit is contained in:
rcx
2026-09-07 09:20:37 +08:00
parent be8ba45067
commit 627f63cbd3
7 changed files with 272 additions and 22 deletions
@@ -199,8 +199,10 @@ public class StockInOrderApi extends BaseController {
*/
@ApiOperation("oms下发单保存")
@PostMapping(value = "/omsInOrderAdd")
public void omsInOrderAdd(@RequestBody StockInOrder stockInOrder) {
public AjaxResult omsInOrderAdd(@RequestBody StockInOrder stockInOrder) {
//返回执行结果而非void:OMS侧需感知保存失败(此前Feign降级被静默吞掉,OMS显示下发成功但WMS无数据,流程阻断)
stockInOrderApplicationService.omsOrderAdd(stockInOrder);
return AjaxResult.success();
}
/**
@@ -311,8 +313,20 @@ public class StockInOrderApi extends BaseController {
*/
@ApiOperation("oms下发单明细保存")
@PostMapping(value = "/omsInOrderAddDetail")
public void omsInOrderAddDetail(@RequestBody List<InMaterialDetail> inMaterialDetails) {
public AjaxResult omsInOrderAddDetail(@RequestBody List<InMaterialDetail> inMaterialDetails) {
//返回执行结果而非void:明细保存含自动审核链路,失败必须让OMS感知并回滚下发标记
stockInOrderApplicationService.omsOrderAddDetail(inMaterialDetails);
return AjaxResult.success();
}
/**
* oms取消下发入库执行单:清理WMS侧下发生成的入库单及下游收货链路数据(逻辑删除)
*/
@ApiOperation("oms取消下发入库单清理")
@PostMapping(value = "/omsCancelInOrder")
public AjaxResult omsCancelInOrder(@RequestBody StockInOrder stockInOrder) {
stockInOrderApplicationService.omsCancelInOrder(stockInOrder);
return AjaxResult.success();
}
@ApiOperation("查询入库信息(通过入库单号)")