cl
6 天以前 54794979fc9ad0aacf21f4e47a84c24e8f675251
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CloudWmsFeedbackResendServiceImpl.java
@@ -9,6 +9,7 @@
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;
@@ -20,8 +21,7 @@
import java.util.*;
/**
 * 从历史云仓上报记录中取「最新一条」按明细维度去重后,复制请求体写入待发送队列;
 * 若已存在相同请求体且仍为待发送/失败,则更新为可调度状态,不重复插入。
 * 历史单触发云仓入出库上报:优先放行该单暂缓待办;若无则从历史云仓上报记录复制请求体入队。
 */
@Slf4j
@Service
@@ -37,7 +37,7 @@
    private ObjectMapper objectMapper;
    @Override
    public R resendInOutFeedbackByAsnOrderLogId(Long asnOrderLogId) {
    public R submitInOutCloudWmsByAsnOrderLogId(Long asnOrderLogId) {
        if (asnOrderLogId == null) {
            return R.error("参数不能为空");
        }
@@ -47,8 +47,18 @@
        }
        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)
@@ -91,7 +101,7 @@
            }
        }
        if (latestByLine.isEmpty()) {
            return R.error("未找到该单号对应的云仓入出库上报记录,无法重发");
            return R.error("未找到该单号对应的云仓入出库上报记录");
        }
        Date now = new Date();
        int n = 0;
@@ -117,7 +127,14 @@
                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());
    }
    /**