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:
@@ -92,11 +92,11 @@ public interface WmsServiceFeign {
|
||||
|
||||
|
||||
/**
|
||||
* oms下发单保存
|
||||
* oms下发单保存(返回执行结果,失败时OMS据此回滚下发标记,避免"OMS已下发/WMS无数据"的阻断)
|
||||
*/
|
||||
@ApiOperation("oms下发单保存")
|
||||
@PostMapping(value = "/stockInOrderApi/omsInOrderAdd")
|
||||
public void omsInOrderAdd(@RequestBody StockInOrder stockInOrder);
|
||||
public AjaxResult omsInOrderAdd(@RequestBody StockInOrder stockInOrder);
|
||||
|
||||
@ApiOperation("oms取消下发单保存")
|
||||
@PostMapping(value = "/stockOutOrderApi/cancelExecutionOrder")
|
||||
@@ -119,11 +119,19 @@ public interface WmsServiceFeign {
|
||||
public AjaxResult checkOmsAssignInventory(@RequestBody List<OutMaterialDetail> outMaterialDetails);
|
||||
|
||||
/**
|
||||
* oms下发单明细保存
|
||||
* oms下发单明细保存(返回执行结果,明细保存含自动审核链路,失败时OMS据此回滚)
|
||||
*/
|
||||
@ApiOperation("oms下发单明细保存")
|
||||
@PostMapping(value = "/stockInOrderApi/omsInOrderAddDetail")
|
||||
public void omsInOrderAddDetail(@RequestBody List<InMaterialDetail> inMaterialDetails);
|
||||
public AjaxResult omsInOrderAddDetail(@RequestBody List<InMaterialDetail> inMaterialDetails);
|
||||
|
||||
/**
|
||||
* oms取消下发入库执行单:WMS侧一个事务内逻辑删除下发链路产生的全部数据
|
||||
* (入库单/明细、收货单/明细、收货任务、收货作业单/明细、质检单),已开始收货则报错拦截
|
||||
*/
|
||||
@ApiOperation("oms取消下发入库单清理")
|
||||
@PostMapping(value = "/stockInOrderApi/omsCancelInOrder")
|
||||
public AjaxResult omsCancelInOrder(@RequestBody StockInOrder stockInOrder);
|
||||
|
||||
@ApiOperation("oms查询物料列表")
|
||||
@GetMapping("/materialBaseInfoApi/queryList")
|
||||
|
||||
+13
-2
@@ -70,7 +70,10 @@ public class RemoteWmsFallbackFactory implements FallbackFactory<WmsServiceFeign
|
||||
}
|
||||
|
||||
@Override
|
||||
public void omsInOrderAdd(StockInOrder stockInOrder) {
|
||||
public AjaxResult omsInOrderAdd(StockInOrder stockInOrder) {
|
||||
//返回错误而非静默成功:下发主单保存失败必须让OMS感知并回滚下发标记,
|
||||
//否则OMS显示已下发、WMS无数据,下游收货流程无从进行(流程阻断)
|
||||
return AjaxResult.error("WMS入库单保存失败(服务降级):" + cause.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -96,7 +99,15 @@ public class RemoteWmsFallbackFactory implements FallbackFactory<WmsServiceFeign
|
||||
}
|
||||
|
||||
@Override
|
||||
public void omsInOrderAddDetail(List<InMaterialDetail> inMaterialDetails) {
|
||||
public AjaxResult omsInOrderAddDetail(List<InMaterialDetail> inMaterialDetails) {
|
||||
//返回错误而非静默成功:明细保存(含自动审核)失败必须让OMS感知并回滚下发标记
|
||||
return AjaxResult.error("WMS入库单明细保存失败(服务降级):" + cause.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public AjaxResult omsCancelInOrder(StockInOrder stockInOrder) {
|
||||
//返回错误而非静默成功,让OMS侧取消下发能感知清理失败并整体回滚(取消下发可重试,WMS清理幂等)
|
||||
return AjaxResult.error("WMS取消下发清理失败:" + cause.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user