diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/base/enums/ErrorCodeConstants.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/base/enums/ErrorCodeConstants.java index 8bda5275..11cc1010 100644 --- a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/base/enums/ErrorCodeConstants.java +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/base/enums/ErrorCodeConstants.java @@ -72,4 +72,5 @@ public interface ErrorCodeConstants { // ========== 主数据同步 ========== ErrorCode MASTER_DATA_SYNC_DISABLED = new ErrorCode(1_027_900_001, "主数据同步功能已禁用"); + ErrorCode MASTER_DATA_SYNC_BATCH_SIZE_TOO_LARGE = new ErrorCode(1_027_900_002, "最大批次不得超过 1000"); } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/ElementDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/ElementDO.java index 357af721..8a6430a9 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/ElementDO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/ElementDO.java @@ -1,6 +1,7 @@ package com.zt.plat.module.base.dal.dataobject.base; import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BaseDO; import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; import lombok.*; /** @@ -19,7 +20,7 @@ import lombok.*; /** * 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO */ -public class ElementDO extends BusinessBaseDO { +public class ElementDO extends BaseDO { diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/masterdatasync/MasterDataSyncServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/masterdatasync/MasterDataSyncServiceImpl.java index 3fd3f984..3d2e0c2a 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/masterdatasync/MasterDataSyncServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/masterdatasync/MasterDataSyncServiceImpl.java @@ -75,6 +75,9 @@ public class MasterDataSyncServiceImpl implements MasterDataSyncService { if (!properties.isEnabled()) { throw ServiceExceptionUtil.exception(ErrorCodeConstants.MASTER_DATA_SYNC_DISABLED); } + if (command.getBatchSize() > 1000) { + throw ServiceExceptionUtil.exception(ErrorCodeConstants.MASTER_DATA_SYNC_BATCH_SIZE_TOO_LARGE, command.getBatchSize()); + } MasterDataSyncReport report = MasterDataSyncReport.start(command); List materialCodes = sanitizeCodes(command.getMaterialCodes()); report.setMaterialCodes(materialCodes); @@ -306,7 +309,11 @@ public class MasterDataSyncServiceImpl implements MasterDataSyncService { continue; } MaterialInfomationDO current = existingById.get(codeId); - String name = normalizeValue(item.getMaterialName()); + // 名称优先取 MDM 的长描述(desclong),若为空再回退到 desc1 + String name = normalizeValue(item.getLongDescription()); + if (name == null) { + name = normalizeValue(item.getMaterialName()); + } if (current == null) { MaterialInfomationDO created = MaterialInfomationDO.builder() .id(codeId) diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/purchaseorder/OrderStatusEnum.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/purchaseorder/OrderStatusEnum.java index 8a995a6d..837983ec 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/purchaseorder/OrderStatusEnum.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/purchaseorder/OrderStatusEnum.java @@ -14,7 +14,11 @@ public enum OrderStatusEnum { IN_PROGRESS("IN_PROGRESS", "执行中"), // 关闭状态 CLOSED("CLOSE", "关闭"), - REJECTED("REJECT", "驳回"); + REJECTED("REJECT", "驳回"), + FIND("FIND", "ERP提交成功"), + RLBK("RLBK", "ERP提交失败"), + RCVG("RCVG", "ERP执行中"), + WAIT("WAIT", "ERP待上传"); /** 状态编码 */ private final String code; diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderRespVO.java index 0afdcb6d..694e8fac 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderRespVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderRespVO.java @@ -200,4 +200,6 @@ public class PurchaseOrderRespVO { @ExcelProperty("货权转移类型(字典:ASY_MTNG_TP)") private String meteringType; + @Schema(description = "erp失败原因") + private String issueCause; } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderRespVO.java index 0a021010..4c5e34bb 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderRespVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderRespVO.java @@ -224,4 +224,7 @@ public class SalesOrderRespVO { @ExcelProperty("货权转移类型(字典:ASY_MTNG_TP)") private String meteringType; + @Schema(description = "erp失败原因") + private String issueCause; + } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PurchaseOrderDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PurchaseOrderDO.java index bba6c417..5d20a9f3 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PurchaseOrderDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PurchaseOrderDO.java @@ -289,4 +289,11 @@ public class PurchaseOrderDO extends BusinessBaseDO { */ @TableField("MTNG_TP") private String meteringType; + /** + * erp失败原因 + */ + @TableField("ISS_CAUS") + private String issueCause; + + } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/salesorder/SalesOrderDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/salesorder/SalesOrderDO.java index 413ae0ce..b85d077e 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/salesorder/SalesOrderDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/salesorder/SalesOrderDO.java @@ -308,4 +308,7 @@ public class SalesOrderDO extends BusinessBaseDO { */ @TableField("MTNG_TP") private String meteringType; + + @TableField("ISS_CAUS") + private String issueCause; } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderServiceImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderServiceImpl.java index d3527c54..8fce6292 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderServiceImpl.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderServiceImpl.java @@ -18,6 +18,7 @@ import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.*; import com.zt.plat.module.contractorder.dal.dataobject.contract.SystemRelativityDO; import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PrchOrdDtlDO; import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PurchaseOrderDO; +import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDO; import com.zt.plat.module.contractorder.dal.mysql.contract.SystemRelativityMapper; import com.zt.plat.module.contractorder.dal.mysql.purchaseorder.PrchOrdDtlMapper; import com.zt.plat.module.contractorder.dal.mysql.purchaseorder.PurchaseOrderMapper; @@ -90,11 +91,8 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { public PurchaseOrderRespVO createPurchaseOrder(PurchaseOrderSaveReqVO createReqVO) { // 插入 PurchaseOrderDO purchaseOrder = BeanUtils.toBean(createReqVO, PurchaseOrderDO.class); - if (Objects.equals(createReqVO.getIsPush(), 1)) { - purchaseOrder.setStatus(OrderStatusEnum.DRAFT.getCode()); //设置初始状态 - } else { - purchaseOrder.setStatus(OrderStatusEnum.TO_SUBMIT_ERP.getCode()); - } + purchaseOrder.setIsPush(0); + purchaseOrder.setStatus(OrderStatusEnum.IN_PROGRESS.getCode()); //生成订单号 String orderNumber = generateOrderNumber(purchaseOrder.getMtrlTp()); purchaseOrder.setSystemOrderNumber(orderNumber); @@ -348,28 +346,30 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { } //todo 4. 推送ERP并处理返回结果 - // String s = erpOrderService.submitOrderToErp061(erpOrderSaveReqVO); + // String result = erpOrderService.submitOrderToErp061(erpOrderSaveReqVO); log.info("订单推送成功,订单id【{}】", order.getId()); - + String result="3333"; // 解析ERP返回的ID JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(Map.of("id",R()))); String erpId = jsonObject.getString("id"); - if (erpId != null && !erpId.isEmpty()) { - // 更新订单的ERP编号 - PurchaseOrderDO updateDO = new PurchaseOrderDO(); - updateDO.setId(order.getId()); - updateDO.setOrderSAPNumber(erpId); - updateDO.setStatus(OrderStatusEnum.IN_PROGRESS.getCode()); - int updateCount = purchaseOrderMapper.updateById(updateDO); - if (updateCount > 0) { - log.info("更新订单ERPID成功,订单id【{}】", order.getId()); - } else { - log.error("订单更新失败,订单id【{}】", order.getId()); - throw new RuntimeException("订单更新失败"); + if (result != null) { //todo 需要改为真实返回的数据 + JSONObject job = JSONObject.parseObject(JSONObject.toJSONString(Map.of("salesdocument",R()))); + String id = job.containsKey("id")?jsonObject.getString("id"):null; + if (id != null) { + PurchaseOrderDO upVo = new PurchaseOrderDO(); + upVo.setId(purchaseOrderWithDetailsVO.getPurchaseOrder().getId()); + upVo.setOrderSAPNumber(id); + upVo.setErpStatus(OrderStatusEnum.FIND.getCode()); + purchaseOrderMapper.updateById(upVo); + }else { + PurchaseOrderDO upVo = new PurchaseOrderDO(); + upVo.setId(purchaseOrderWithDetailsVO.getPurchaseOrder().getId()); + upVo.setOrderSAPNumber(id); + upVo.setErpStatus(OrderStatusEnum.RLBK.getCode()); + upVo.setCause("ERP返回结果为空");//TODO 这里先写死 + purchaseOrderMapper.updateById(upVo); } - } else { - log.error("ERP返回ID为空,订单id【{}】", order.getId()); - throw new RuntimeException("ERP返回ID为空"); + } }); return "ERP推送成功"; diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderServiceImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderServiceImpl.java index e47f6de1..31bbaf8a 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderServiceImpl.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderServiceImpl.java @@ -243,12 +243,19 @@ public class SalesOrderServiceImpl implements SalesOrderService { String result="3333"; if (result != null) { JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(Map.of("salesdocument",R()))); - String salesdocument = jsonObject.getString("salesdocument"); + String salesdocument = jsonObject.containsKey("salesdocument")?jsonObject.getString("salesdocument"):null; if (salesdocument != null) { SalesOrderDO upVo = new SalesOrderDO(); upVo.setId(salesOrderDO.getId()); upVo.setOrderSAPNumber(salesdocument); - upVo.setStatus(OrderStatusEnum.IN_PROGRESS.getCode()); + upVo.setErpStatus(OrderStatusEnum.FIND.getCode()); + salesOrderMapper.updateById(upVo); + }else { + SalesOrderDO upVo = new SalesOrderDO(); + upVo.setId(salesOrderDO.getId()); + upVo.setOrderSAPNumber(salesdocument); + upVo.setErpStatus(OrderStatusEnum.RLBK.getCode()); + upVo.setCause("ERP返回结果为空");//TODO 这里先写死 salesOrderMapper.updateById(upVo); }