| | |
| | | import com.vincent.rsf.server.api.feign.CloudWmsErpFeignClient; |
| | | import com.vincent.rsf.server.api.integration.dap.DapIlcwmsResponseNormalizer; |
| | | import com.vincent.rsf.server.api.service.CloudWmsReportService; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | |
| | | @Autowired |
| | | private CloudWmsErpFeignClient cloudWmsErpFeignClient; |
| | | @Autowired |
| | | private ObjectMapper objectMapper; |
| | | |
| | | @Override |
| | | public Map<String, Object> syncMatnrsToCloud(Object body) { |
| | |
| | | boolean inbound = param.getInbound() == null || Boolean.TRUE.equals(param.getInbound()); |
| | | DapIlcwmsCompletionRequest req = new DapIlcwmsCompletionRequest() |
| | | .setData(Collections.singletonList(buildInOutLine(param, inbound))); |
| | | logOutboundPayload("IN_OUT_RESULT", inbound ? "stockInCompleted" : "stockOutCompleted", req); |
| | | Map<String, Object> raw = inbound |
| | | ? cloudWmsErpFeignClient.cusInventoryCompletionReport(req) |
| | | : cloudWmsErpFeignClient.cusOutboundCompletionReport(req); |
| | |
| | | } else { |
| | | return resultMap(400, "不支持的 changeType:" + changeType, null); |
| | | } |
| | | logOutboundPayload("INVENTORY_ADJUST", changeType == 3 ? "stockTransferCompleted" : "reportInventoryAdjust", req); |
| | | Map<String, Object> raw = changeType == 3 |
| | | ? cloudWmsErpFeignClient.stockTransferCompleted(req) |
| | | : cloudWmsErpFeignClient.reportInventoryAdjust(req); |
| | |
| | | private DapIlcwmsCompletionLine buildInOutLine(InOutResultReportParam param, boolean inbound) { |
| | | RemotesInfoProperties.Dap dap = erpApi.getDap(); |
| | | CloudMatnrParts matnrParts = parseCloudMatnr(param.getMatNr()); |
| | | String docType = StringUtils.isNotBlank(param.getWkType()) |
| | | ? param.getWkType() |
| | | : (inbound ? "IN" : "OUT"); |
| | | String unitNo = StringUtils.isNotBlank(param.getUnitNo()) ? param.getUnitNo() : "PCS"; |
| | | DapIlcwmsCompletionLine line = new DapIlcwmsCompletionLine() |
| | | .setOrgNo(dap.getOrgNo()) |
| | | .setDocType(inbound ? dap.getDocTypeIn() : dap.getDocTypeOut()) |
| | | .setDocType(docType) |
| | | .setDocNo(param.getOrderNo()) |
| | | .setDocSeqNo(StringUtils.isNotBlank(param.getLineId()) ? param.getLineId() : "1") |
| | | // 按云仓规则拆分物料编码 |
| | | .setItemNo(matnrParts.getItemNo()) |
| | | .setQty(parseQty(param.getQty())) |
| | | .setUnitNo(dap.getUnitNo()) |
| | | .setUnitNo(unitNo) |
| | | .setCombinationLotNo(matnrParts.getCombinationLotNo()) |
| | | .setBarcode(matnrParts.getBarcode()); |
| | | if (inbound) { |
| | |
| | | */ |
| | | private DapIlcwmsCompletionLine buildAdjustLine(InventoryAdjustReportParam param, boolean fillIn, boolean fillOut, String docSeqOverride) { |
| | | RemotesInfoProperties.Dap dap = erpApi.getDap(); |
| | | String docType = resolveAdjustDocType(param, dap); |
| | | String docType = resolveAdjustDocType(param); |
| | | String docNo = StringUtils.isNotBlank(param.getDocNo()) ? param.getDocNo() : "ADJ"; |
| | | String docSeq = docSeqOverride != null ? docSeqOverride |
| | | : (StringUtils.isNotBlank(param.getDocSeqNo()) ? param.getDocSeqNo() : "1"); |
| | | String unit = StringUtils.isNotBlank(param.getUnitNo()) ? param.getUnitNo() : dap.getUnitNo(); |
| | | String unit = StringUtils.isNotBlank(param.getUnitNo()) ? param.getUnitNo() : "PCS"; |
| | | CloudMatnrParts matnrParts = parseCloudMatnr(param.getMatNr()); |
| | | DapIlcwmsCompletionLine line = new DapIlcwmsCompletionLine() |
| | | .setOrgNo(dap.getOrgNo()) |
| | |
| | | return line; |
| | | } |
| | | |
| | | private static String resolveAdjustDocType(InventoryAdjustReportParam param, RemotesInfoProperties.Dap dap) { |
| | | private static String resolveAdjustDocType(InventoryAdjustReportParam param) { |
| | | if (StringUtils.isNotBlank(param.getDocType())) { |
| | | return param.getDocType(); |
| | | } |
| | | Integer ct = param.getChangeType(); |
| | | if (ct != null && ct == 2) { |
| | | return dap.getDocTypeOut(); |
| | | return "OUT"; |
| | | } |
| | | if (ct != null && ct == 3) { |
| | | return dap.getDocTypeAdj(); |
| | | return "ADJ"; |
| | | } |
| | | return dap.getDocTypeIn(); |
| | | return "IN"; |
| | | } |
| | | |
| | | // private static String resolveBarcode(InOutResultReportParam param) { |
| | |
| | | map.put("data", data); |
| | | return map; |
| | | } |
| | | |
| | | private void logOutboundPayload(String reportType, String endpoint, DapIlcwmsCompletionRequest req) { |
| | | try { |
| | | log.info("云仓真实请求报文,reportType={},endpoint={},payload={}", |
| | | reportType, endpoint, objectMapper.writeValueAsString(req)); |
| | | } catch (Exception e) { |
| | | log.warn("云仓真实请求报文序列化失败,reportType={},endpoint={}:{}", |
| | | reportType, endpoint, e.getMessage()); |
| | | } |
| | | } |
| | | } |