| | |
| | | package com.vincent.rsf.server.manager.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.fasterxml.jackson.databind.JsonNode; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.vincent.rsf.framework.common.R; |
| | | import com.vincent.rsf.server.api.controller.erp.params.InOutResultBatchPayload; |
| | | 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; |
| | |
| | | if (StringUtils.isBlank(row.getRequestBody())) { |
| | | continue; |
| | | } |
| | | InOutResultReportParam p; |
| | | try { |
| | | p = objectMapper.readValue(row.getRequestBody(), InOutResultReportParam.class); |
| | | } catch (Exception e) { |
| | | JsonNode root = objectMapper.readTree(row.getRequestBody()); |
| | | if (root.has("lines") && root.get("lines").isArray() && root.get("lines").size() > 0) { |
| | | InOutResultBatchPayload batch = objectMapper.readValue(row.getRequestBody(), InOutResultBatchPayload.class); |
| | | if (batch.getLines() == null || batch.getLines().isEmpty()) { |
| | | continue; |
| | | } |
| | | InOutResultReportParam first = batch.getLines().get(0); |
| | | if (!code.equals(first.getOrderNo()) || !matchOrderType(orderLog.getType(), first.getInbound())) { |
| | | continue; |
| | | } |
| | | latestByLine.putIfAbsent("batch_" + row.getId(), row); |
| | | continue; |
| | | } |
| | | InOutResultReportParam p = objectMapper.readValue(row.getRequestBody(), InOutResultReportParam.class); |
| | | if (p == null || !code.equals(p.getOrderNo())) { |
| | | continue; |
| | | } |
| | |
| | | } |
| | | String sig = lineSignature(p); |
| | | latestByLine.putIfAbsent(sig, row); |
| | | } catch (Exception e) { |
| | | continue; |
| | | } |
| | | } |
| | | if (latestByLine.isEmpty()) { |
| | | return R.error("未找到该单号对应的云仓入出库上报记录,无法重发"); |
| | |
| | | .setRetryCount(0) |
| | | .setBizRef("manualResend,asnOrderLogId=" + asnOrderLogId + ",fromNotifyLogId=" + src.getId() + ",orderNo=" + code) |
| | | .setCreateTime(now) |
| | | .setUpdateTime(now); |
| | | .setUpdateTime(now) |
| | | .setSendHold(0) |
| | | .setSending(0); |
| | | if (StringUtils.isNotBlank(src.getSourceOrderNo())) { |
| | | copy.setSourceOrderNo(src.getSourceOrderNo()) |
| | | .setInboundFlag(src.getInboundFlag()) |
| | | .setWareHouseCode(src.getWareHouseCode()); |
| | | } else { |
| | | fillInOutRoutingFromBody(copy, src.getRequestBody()); |
| | | } |
| | | cloudWmsNotifyLogService.fillFromConfig(copy); |
| | | if (cloudWmsNotifyLogService.save(copy)) { |
| | | n++; |
| | |
| | | return R.ok("已加入云仓重发队列 " + n + " 条,将由定时任务发送").add(n); |
| | | } |
| | | |
| | | private void fillInOutRoutingFromBody(CloudWmsNotifyLog copy, String body) { |
| | | if (StringUtils.isBlank(body)) { |
| | | return; |
| | | } |
| | | try { |
| | | JsonNode root = objectMapper.readTree(body); |
| | | if (root.has("lines") && root.get("lines").isArray() && root.get("lines").size() > 0) { |
| | | InOutResultReportParam first = objectMapper.treeToValue(root.get("lines").get(0), InOutResultReportParam.class); |
| | | if (first != null) { |
| | | boolean inb = first.getInbound() == null || Boolean.TRUE.equals(first.getInbound()); |
| | | copy.setSourceOrderNo(first.getOrderNo()) |
| | | .setInboundFlag(inb ? 1 : 0) |
| | | .setWareHouseCode(first.getWareHouseId()); |
| | | } |
| | | return; |
| | | } |
| | | InOutResultReportParam p = objectMapper.readValue(body, InOutResultReportParam.class); |
| | | if (p != null) { |
| | | boolean inb = p.getInbound() == null || Boolean.TRUE.equals(p.getInbound()); |
| | | copy.setSourceOrderNo(p.getOrderNo()) |
| | | .setInboundFlag(inb ? 1 : 0) |
| | | .setWareHouseCode(p.getWareHouseId()); |
| | | } |
| | | } catch (Exception ignored) { |
| | | } |
| | | } |
| | | |
| | | private static boolean matchOrderType(String asnType, Boolean inbound) { |
| | | if (StringUtils.isBlank(asnType)) { |
| | | return true; |