| | |
| | | import com.vincent.rsf.server.api.controller.erp.params.InOutResultReportParam; |
| | | import com.vincent.rsf.server.manager.entity.AsnOrderLog; |
| | | import com.vincent.rsf.server.manager.entity.CloudWmsNotifyLog; |
| | | import com.vincent.rsf.server.manager.enums.OrderType; |
| | | import com.vincent.rsf.server.manager.service.AsnOrderLogService; |
| | | import com.vincent.rsf.server.manager.service.CloudWmsFeedbackResendService; |
| | | import com.vincent.rsf.server.manager.service.CloudWmsNotifyLogService; |
| | |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * 从历史云仓上报记录中取「最新一条」按明细维度去重后,复制请求体写入待发送队列; |
| | | * 若已存在相同请求体且仍为待发送/失败,则更新为可调度状态,不重复插入。 |
| | | * 历史单触发云仓入出库上报:优先放行该单暂缓待办;若无则从历史云仓上报记录复制请求体入队。 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | |
| | | private ObjectMapper objectMapper; |
| | | |
| | | @Override |
| | | public R resendInOutFeedbackByAsnOrderLogId(Long asnOrderLogId) { |
| | | public R submitInOutCloudWmsByAsnOrderLogId(Long asnOrderLogId) { |
| | | if (asnOrderLogId == null) { |
| | | return R.error("参数不能为空"); |
| | | } |
| | |
| | | } |
| | | String code = orderLog.getCode(); |
| | | if (StringUtils.isBlank(code)) { |
| | | return R.error("单据号为空,无法重发"); |
| | | return R.error("单据号为空"); |
| | | } |
| | | boolean inbound = inboundFromOrderType(orderLog.getType()); |
| | | R flushR = cloudWmsNotifyLogService.manualFlushToNotifyByOrderCode(code.trim(), inbound); |
| | | Object flushCode = flushR.get("code"); |
| | | if (flushCode instanceof Number && ((Number) flushCode).intValue() == 200) { |
| | | return flushR; |
| | | } |
| | | return enqueueFromHistoricalNotifyLogs(asnOrderLogId, orderLog, code); |
| | | } |
| | | |
| | | private R enqueueFromHistoricalNotifyLogs(Long asnOrderLogId, AsnOrderLog orderLog, String code) { |
| | | String reportType = cloudWmsNotifyLogService.getReportTypeInOutResult(); |
| | | LambdaQueryWrapper<CloudWmsNotifyLog> qw = new LambdaQueryWrapper<CloudWmsNotifyLog>() |
| | | .eq(CloudWmsNotifyLog::getReportType, reportType) |
| | |
| | | } |
| | | } |
| | | if (latestByLine.isEmpty()) { |
| | | return R.error("未找到该单号对应的云仓入出库上报记录,无法重发"); |
| | | return R.error("未找到该单号对应的云仓入出库上报记录"); |
| | | } |
| | | Date now = new Date(); |
| | | int n = 0; |
| | |
| | | n++; |
| | | } |
| | | } |
| | | return R.ok("已加入云仓重发队列 " + n + " 条,将由定时任务发送").add(n); |
| | | return R.ok("已加入云仓上报队列 " + n + " 条,将由定时任务发送").add(n); |
| | | } |
| | | |
| | | private static boolean inboundFromOrderType(String type) { |
| | | if (StringUtils.isBlank(type)) { |
| | | return true; |
| | | } |
| | | return OrderType.ORDER_IN.type.equalsIgnoreCase(type.trim()); |
| | | } |
| | | |
| | | /** |