| | |
| | | return CommonResponse.error("回传明细为空"); |
| | | } |
| | | |
| | | // 对回传数据做反映射(WMS字段名 → ERP字段名) |
| | | JSONObject mappedRoot = ParamsMapUtils.reverseApiMaps("erp", "orderId", root); |
| | | JSONArray mappedDataArray = pickArray(mappedRoot, "Data", "data"); |
| | | if (Objects.isNull(mappedDataArray) || mappedDataArray.isEmpty()) { |
| | | mappedDataArray = dataArray; |
| | | } |
| | | |
| | | int allocateCount = 0; |
| | | int erpReportCount = 0; |
| | | List<String> errors = new ArrayList<>(); |
| | | |
| | | for (int i = 0; i < dataArray.size(); i++) { |
| | | JSONObject row = dataArray.getJSONObject(i); |
| | | for (int i = 0; i < mappedDataArray.size(); i++) { |
| | | JSONObject row = mappedDataArray.getJSONObject(i); |
| | | String orderNo = pickString(row, "WMSNO", "wmsNo", "orderNo", "OrderNo"); |
| | | String matnrCode = pickString(row, "ItemCode", "itemCode", "matNr", "MatNr"); |
| | | String batch = pickString(row, "Batch", "batch", "GoodsNO", "goodsNo"); |
| | |
| | | } |
| | | } |
| | | |
| | | // 反映射后组装ReportParams,参照旧链路上报ERP |
| | | try { |
| | | ReportParams erpReportParams = buildReportParamsFromMappedData(mappedRoot, mappedDataArray); |
| | | CommonResponse erpResp = wmsErpService.reportOrders(erpReportParams); |
| | | if (Objects.nonNull(erpResp) && Objects.equals(erpResp.getCode(), 200)) { |
| | | log.info("反映射上报ERP成功,orderNo={}", pickString(root, "orderNo", "WMSNO")); |
| | | } else { |
| | | String msg = Objects.isNull(erpResp) ? "ERP响应为空" : erpResp.getMsg(); |
| | | errors.add("上报ERP失败:" + msg); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("反映射上报ERP异常", e); |
| | | errors.add("上报ERP异常:" + e.getMessage()); |
| | | } |
| | | |
| | | if (!errors.isEmpty()) { |
| | | reportEvent.setStatus(2); |
| | | openApiOrderReportEventMapper.updateById(reportEvent); |
| | |
| | | return CommonResponse.ok(result); |
| | | } |
| | | |
| | | /** |
| | | * 根据反映射后的数据组装ReportParams,参照旧链路wmsErpService.reportOrders格式上报ERP |
| | | */ |
| | | private ReportParams buildReportParamsFromMappedData(JSONObject root, JSONArray dataArray) { |
| | | String orderType = pickString(root, "OrderType", "orderType", "type", "wkType"); |
| | | |
| | | List<ReportDataParam> reportDataList = new ArrayList<>(); |
| | | for (int i = 0; i < dataArray.size(); i++) { |
| | | JSONObject row = dataArray.getJSONObject(i); |
| | | ReportDataParam dataParam = new ReportDataParam() |
| | | .setWMSNO(pickString(row, "WMSNO", "wmsNo", "orderNo", "OrderNo")) |
| | | .setPONO(pickString(row, "PONO", "poNo")) |
| | | .setOrderNO(pickString(row, "OrderNO", "orderNo")) |
| | | .setGoodsNO(pickString(row, "GoodsNO", "goodsNo", "batch", "Batch")) |
| | | .setItemCode(pickString(row, "ItemCode", "itemCode", "matNr", "MatNr")) |
| | | .setEditUser(pickString(row, "EditUser", "editUser")) |
| | | .setMemoDtl(pickString(row, "MemoDtl", "memoDtl", "memo")); |
| | | |
| | | BigDecimal inQty = pickDecimal(row, "InQty", "inQty"); |
| | | BigDecimal outQty = pickDecimal(row, "OutQty", "outQty"); |
| | | if (Objects.nonNull(inQty) && inQty.compareTo(ZERO) > 0) { |
| | | dataParam.setInQty(inQty.doubleValue()); |
| | | } |
| | | if (Objects.nonNull(outQty) && outQty.compareTo(ZERO) > 0) { |
| | | dataParam.setOutQty(outQty.doubleValue()); |
| | | } |
| | | |
| | | reportDataList.add(dataParam); |
| | | } |
| | | |
| | | return new ReportParams() |
| | | .setOrderType(orderType) |
| | | .setAction("Update") |
| | | .setData(reportDataList); |
| | | } |
| | | |
| | | private OpenApiOrder saveOpenApiOrder(Order order) { |
| | | OpenApiOrder existing = openApiOrderMapper.selectOne(new LambdaQueryWrapper<OpenApiOrder>() |
| | | .eq(OpenApiOrder::getCode, order.getOrderNo()) |