From 3ad1353a000f4557bec6549eaa309996d73e84f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Thu, 26 Feb 2026 10:51:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A7=94=E6=89=98=E5=8A=A0=E5=B7=A5=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E6=8F=90=E4=BA=A4erp=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contractorder/enums/ErpConstants.java | 4 ++ .../purchaseorder/ErrorCodeConstants.java | 1 + .../admin/contract/ContractController.java | 10 +++ .../OriginalMaterialProcessingController.java | 16 ++--- .../PurchaseOrderController.java | 5 +- .../service/contract/ContractService.java | 2 + .../service/contract/ContractServiceImpl.java | 34 +++++++--- .../purchaseorder/PurchaseOrderService.java | 2 +- .../PurchaseOrderServiceImpl.java | 68 +++++++++---------- .../admin/erp/vo/ErpOrderSaveReqVO.java | 8 ++- .../erp/service/erp/ErpOrderServiceImpl.java | 2 +- 11 files changed, 94 insertions(+), 58 deletions(-) diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErpConstants.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErpConstants.java index 8f433489..f93acdbc 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErpConstants.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErpConstants.java @@ -20,4 +20,8 @@ public class ErpConstants { public static final String TOKEN_ = "-";//连接标识 public static final String DATE_FORMAT_YYYYMMDD = "yyyyMMdd"; public static final String MTRL_ZHONGTONG_CODE = "mtrlZhongtongCode"; + public static final String ACTS_CTGR_S = "S"; + public static final String ACTS_CTGR_A = "A"; + public static final String ACTS_CTGR_F = "F"; + public static final String ACTS_CTGR_K = "K"; } diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/purchaseorder/ErrorCodeConstants.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/purchaseorder/ErrorCodeConstants.java index ffb28135..ca6ecce5 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/purchaseorder/ErrorCodeConstants.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/purchaseorder/ErrorCodeConstants.java @@ -26,4 +26,5 @@ public interface ErrorCodeConstants { ErrorCode PURCHASE_ORDER_ID_IS_EMPTY = new ErrorCode(1_008_000_080, "业务订单类型非法,请参考字典:SPLY_BSN_TP"); ErrorCode PURCHASE_ORDER_NOT_ALLOW_BIND = new ErrorCode(1_008_000_090, "来料销售加工订单不允许绑定订单"); ErrorCode ORDER_ALREADY_SUBMIT = new ErrorCode(1_008_000_100, "不允许重复提交erp"); + ErrorCode ERP_ERO =new ErrorCode(1_008_000_200,"{}"); } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/ContractController.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/ContractController.java index 5dc4cff7..2914416f 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/ContractController.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/ContractController.java @@ -257,5 +257,15 @@ public class ContractController implements BusinessControllerMarker { return success(true); } + //取消合同关联 + @DeleteMapping("/cancel-relation") + @Operation(summary = "取消合同关联") + @PreAuthorize("@ss.hasAnyPermissions({'base:contract:get','purchaseContract:detail'})") + public CommonResult cancelRelation(@RequestParam("id") Long id) { + contractService.cancelRelation(id); + return success(true); + } + + } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/OriginalMaterialProcessingController.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/OriginalMaterialProcessingController.java index fcfd1755..d9f5675d 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/OriginalMaterialProcessingController.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/OriginalMaterialProcessingController.java @@ -51,14 +51,14 @@ public class OriginalMaterialProcessingController { @PostMapping("/create-batch") @Operation(summary = "批量创建来料加工订单") - @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:create')") + @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:create','entedOrder:add')") public CommonResult> createBatchOriginalMaterialProcessingOrder(@Valid @RequestBody List createReqVOS) { return success(originalMaterialProcessingService.createBatchOriginalMaterialProcessing(createReqVOS)); } @PutMapping("/update") @Operation(summary = "更新来料加工订单") - @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:update')") + @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:update','entedOrder:add')") public CommonResult updateOriginalMaterialProcessingOrder(@Valid @RequestBody OriginalMaterialProcessingSaveReqVO updateReqVO) { originalMaterialProcessingService.updateOriginalMaterialProcessing(updateReqVO); return success(true); @@ -67,7 +67,7 @@ public class OriginalMaterialProcessingController { @DeleteMapping("/delete") @Operation(summary = "删除来料加工订单") @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:delete')") + @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:delete','entedOrder:edit')") public CommonResult deleteOriginalMaterialProcessingOrder(@RequestParam("id") Long id) { originalMaterialProcessingService.deleteOriginalMaterialProcessing(id); return success(true); @@ -76,7 +76,7 @@ public class OriginalMaterialProcessingController { @DeleteMapping("/delete-list") @Parameter(name = "ids", description = "编号", required = true) @Operation(summary = "批量删除来料加工订单") - @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:delete')") + @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:delete','entedOrder:edit')") public CommonResult deleteOriginalMaterialProcessingOrderList(@RequestBody BatchDeleteReqVO req) { originalMaterialProcessingService.deleteOriginalMaterialProcessingListByIds(req.getIds()); return success(true); @@ -134,7 +134,7 @@ public class OriginalMaterialProcessingController { //关联订单 @PostMapping("/link-order") @Operation(summary = "关联订单") - @PreAuthorize("@ss.hasAnyPermissions('base:original-material-processing-order:update','original-material-processing:order:list:OrderList:edit')") + @PreAuthorize("@ss.hasAnyPermissions('base:original-material-processing-order:update','original-material-processing:order:list:OrderList:edit','entedOrder:edit')") public CommonResult linkOrder(@RequestBody @Validated LinkOrderReqVO req) { return success(originalMaterialProcessingService.linkOrder(req)); } @@ -149,7 +149,7 @@ public class OriginalMaterialProcessingController { @PostMapping("/bound-order") @Operation(summary = "获取已绑定的订单") - @PreAuthorize("@ss.hasAnyPermissions('base:original-material-processing-order:query')") + @PreAuthorize("@ss.hasAnyPermissions('base:original-material-processing-order:query','entedOrder:edit')") public CommonResult> boundOrder(@RequestBody DownOrUpOrderReqVO reqVO) { return success(originalMaterialProcessingService.getBindOrderByOrder(reqVO)); } @@ -157,7 +157,7 @@ public class OriginalMaterialProcessingController { //关闭订单 @PostMapping("/close-order") @Operation(summary = "关闭订单") - @PreAuthorize("@ss.hasAnyPermissions('base:original-material-processing-order:update')") + @PreAuthorize("@ss.hasAnyPermissions('base:original-material-processing-order:update','entedOrder:edit')") public CommonResult closeOrder(@RequestBody List ids) { originalMaterialProcessingService.closeOrder(ids); return success(true); @@ -165,7 +165,7 @@ public class OriginalMaterialProcessingController { //来料采购提交erp @PostMapping("/submit-to-erp") @Operation(summary = "来料采购提交erp") - @PreAuthorize("@ss.hasAnyPermissions('base:original-material-processing-order:update')") + @PreAuthorize("@ss.hasAnyPermissions('base:original-material-processing-order:update','entedOrder:edit')") public CommonResult submitToErp(@RequestParam("id") Long id) { originalMaterialProcessingService.submitToErp(id); return success(true); diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/PurchaseOrderController.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/PurchaseOrderController.java index d341f274..8481a061 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/PurchaseOrderController.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/PurchaseOrderController.java @@ -147,7 +147,8 @@ public class PurchaseOrderController implements BusinessControllerMarker { @Operation(summary = "推送ERP订单", description = "061')") @PreAuthorize("@ss.hasAnyPermissions('base:purchase-order:update','purchase:order:list:OrderList:edit')") public CommonResult submitErp061(@RequestParam("id") String id) { - return success(purchaseOrderService.submitErp061(List.of(Long.valueOf(id)))); + purchaseOrderService.submitErp061(List.of(Long.valueOf(id))); + return success(true); } @PostMapping("/submit-erp062") @@ -235,7 +236,7 @@ public class PurchaseOrderController implements BusinessControllerMarker { return success(true); } //获取关联订单 - @PostMapping("/get-no-permission") + @GetMapping("/get-no-permission") @Operation(summary = "获取关联订单--无权限(新)") @PreAuthorize("@ss.hasAnyPermissions('base:purchase-order:query')") public CommonResult getOrderNoPermission(@RequestParam("id") Long id) { diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractService.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractService.java index ce9d08f0..c7b09e43 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractService.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractService.java @@ -273,4 +273,6 @@ public interface ContractService { * @param id 合同id */ void pushMsgById(Long id,Long userId); + + void cancelRelation(Long id); } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java index 3051d963..6b5cae20 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java @@ -2247,18 +2247,18 @@ public class ContractServiceImpl implements ContractService { } @Override - public void pushMsgById(Long id,Long userId) { + public void pushMsgById(Long id, Long userId) { ContractRespVO contractRespVO = get(id); if (contractRespVO == null) { throw exception(CONTRACT_NOT_EXISTS); } - Map parms = new HashMap<>(); + Map parms = new HashMap<>(); //放入合同编号,纸质合同编号,合同名称,甲方乙方 - parms.put("系统合同编号",contractRespVO.getSystemContractNumber()); - parms.put("纸质合同编号",contractRespVO.getSystemContractNumber()); - parms.put("合同名称",contractRespVO.getSystemContractNumber()); - parms.put("合同主体1",contractRespVO.getSystemContractNumber()); - parms.put("合同主体2",contractRespVO.getSystemContractNumber()); + parms.put("系统合同编号", contractRespVO.getSystemContractNumber()); + parms.put("纸质合同编号", contractRespVO.getSystemContractNumber()); + parms.put("合同名称", contractRespVO.getSystemContractNumber()); + parms.put("合同主体1", contractRespVO.getSystemContractNumber()); + parms.put("合同主体2", contractRespVO.getSystemContractNumber()); NotifySendSingleToUserReqDTO notifySendSingleToUserReqDTO = new NotifySendSingleToUserReqDTO(); notifySendSingleToUserReqDTO.setTemplateCode(DictEnum.CONTRACT_PUSH_CODE.getCode());//消息模版编码 notifySendSingleToUserReqDTO.setUserId(userId); @@ -2266,7 +2266,25 @@ public class ContractServiceImpl implements ContractService { notifyMessageSendApi.sendSingleMessageToMember(notifySendSingleToUserReqDTO); } - /**Object + @Transactional(rollbackFor = Exception.class) + @CompanyDataPermissionIgnore + @DeptDataPermissionIgnore + @TenantIgnore + @Override + public void cancelRelation(Long id) { + ContractMainDO contractMainDO = contractMainMapper.selectById(id); + if (contractMainDO != null) { + Long relatedContractId = contractMainDO.getRelatedContractId(); + //取消关联。置空relatedContractId + LambdaUpdateWrapper wrapper=new LambdaUpdateWrapper<>(); + wrapper.set(ContractMainDO::getRelatedContractId,null) + .in(ContractMainDO::getId,List.of(relatedContractId, id)); + contractMainMapper.update(wrapper); + } + } + + /** + * Object * 校验合同内容 * * @param contract 合同数据 diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderService.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderService.java index e231301a..447cd7ae 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderService.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderService.java @@ -66,7 +66,7 @@ public interface PurchaseOrderService { String submitOrder(Long id); - String submitErp061(List ids); + void submitErp061(List ids); boolean submitErp062ByUpdate(Long id); 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 103a9c39..6660ab38 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 @@ -310,8 +310,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { @Override @Transactional - public String submitErp061(List ids) { - List results = new ArrayList<>(); + public void submitErp061(List ids) { // 通过订单号查询订单 List purchaseOrderWithDetailsVOS = purchaseOrderMapper.selectOrderByIds(ids); if (!purchaseOrderWithDetailsVOS.isEmpty()) { @@ -338,18 +337,19 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { exte.setZnote(order.getRemark()); // 备注 -> 备注 exte.setZlifnr(order.getAgentNumber()); // 代理方编码 -> 代理方 erpOrderSaveReqVO.setExte(exte); - - List actsCtgrDtlList = purchaseOrderWithDetailsVO.getOrderDetails().stream() - .map(PrchOrdDtlDO::getActsCtgrDtl).map(JSONObject::parseObject) - .toList(); - JSONArray jsonArray = JSONArray.from(actsCtgrDtlList); - erpOrderSaveReqVO.setAccts(jsonArray); +// List actsCtgrDtlList = purchaseOrderWithDetailsVO.getOrderDetails().stream() +// .map(PrchOrdDtlDO::getActsCtgrDtl).map(JSONObject::parseObject) +// .toList(); +// JSONArray jsonArray = JSONArray.from(actsCtgrDtlList); +// erpOrderSaveReqVO.setAccts(jsonArray); // 3. 处理行项目信息(Item) List details = prchOrdDtlMapper.selectList(PrchOrdDtlDO::getOrdId, order.getId()); if (details != null && !details.isEmpty()) { List items = new ArrayList<>(); List itexes = new ArrayList<>(); + List jsonObjects=new ArrayList<>(); for (PrchOrdDtlDO detail : details) { + ErpOrderSaveReqVO.Item item = new ErpOrderSaveReqVO.Item(); MaterialInfomationPageReqDTO infomationPageReqDTO = new MaterialInfomationPageReqDTO(); infomationPageReqDTO.setPageSize(10000); @@ -363,14 +363,14 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { Map flatAttributes = materialInfomationRespDTO.getFlatAttributes(); //获取中铜物料编码 String mtrlZhongtongCode = flatAttributes.getOrDefault(MTRL_ZHONGTONG_CODE, "").toString(); - if (mtrlZhongtongCode.isEmpty()) { - throw exception(MTRL_CODE_NOT_EXISTS); - } +// if (mtrlZhongtongCode.isEmpty()) { +// throw exception(MTRL_CODE_NOT_EXISTS); +// } //查询库位绑定编码 // WarehouseFactoryRespVO factoryAndWarehouse = getBoundFactoryAndWarehouse(detail.getRcvFactNum(), detail.getRcvWrhNum()); // 3.1 行项目基本信息 item.setPo_item(detail.getLineNum() != null ? detail.getLineNum().intValue() : null); // 行项目 -> 行号 - item.setMaterial(mtrlZhongtongCode); // 物料编码 -> 物料号 + item.setMaterial(!mtrlZhongtongCode.isEmpty()?mtrlZhongtongCode:null); // 物料编码 -> 物料号 item.setPlant(detail.getRcvFactNum()); // 收货工厂编码 -> 工厂 item.setStge_loc(detail.getRcvWrhNum()); // 收货库位编码 -> 库存地点 item.setQuantity(detail.getQty()); // 暂估数量 -> 数量 @@ -378,7 +378,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { item.setNet_price(detail.getInTaxUprc()); // 含税单价 -> 含税单价 item.setPrice_unit(detail.getPrcUnt() != null ? detail.getPrcUnt().intValue() : 1); // 价格单位 -> 价格单位 item.setTax_code(detail.getTaxNum()); // 税码 -> 税码 - // item.setGr_basediv(detail.getIsGrInv()); // 是否基于GR的发票校验 -> 基于GR的发票校验 + item.setGr_basediv(detail.getIsGrInv()); // 是否基于GR的发票校验 -> 基于GR的发票校验 item.setUnlimited_dlv(detail.getIsUnlRcv()); // 是否允许无限制收货 -> 允许无限制过量交货 item.setBatch(detail.getBat()); // 批次 -> 批次 item.setAcctasscat(detail.getActsCtgr()); // 科目分配类别 -> 科目分配类别 @@ -386,7 +386,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { item.setShort_text(detail.getShrtTxt()); // 短文本 -> 短文本 item.setRet_item(detail.getIsRlbkCgo()); // 退货标识 -> 退货项目标识 item.setFree_item(detail.getIsFreeRcv()); // 是否免费收货标识 -> 免费项目标识 - item.setVendrbatch(String.valueOf(detail.getOutLineNum())); // 外部行项目号 -> 外部行项目号 + item.setVendrbatch(detail.getOutLineNum() != null ? String.valueOf(detail.getOutLineNum()) : null); // 外部行项目号 -> 外部行项目号 item.setNote_xq(detail.getRmkUnt()); // 备注信息-需求单位 -> 备注信息-需求单位 item.setNote_wl(detail.getRmkMtrl()); // 备注信息-物料详细 -> 备注信息-物料详细 //item.setGr_basediv("1");//TODO GR发票校验 @@ -407,27 +407,21 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { itex.setZaufnr(detail.getInOrd()); // 统计型内部订单 -> 统计型内部订单 itex.setZpurty(detail.getPrchCtgr()); // 采购类别 -> 采购类别 itex.setZmenge(detail.getOrigWet()); // 原料湿重 -> 原料湿重 - itexes.add(itex); - - // 3.4 委托加工物料信息(Comp) - 简化处理,实际需解析JSON -// List comps = new ArrayList<>(); -// if (detail.getEnttDtl() != null && !detail.getEnttDtl().isEmpty()) { -// // 假设ENTT_DTL是JSON数组,实际需根据具体格式解析 -// ErpOrderSaveReqVO.Comp comp = new ErpOrderSaveReqVO.Comp(); -// comp.setSched_line(1); // 计划行号(示例) -// comp.setItem_no(1); // 项目编号(示例) -// // 其他字段需从JSON中解析:material、plant、entry_quantity等 -// comps.add(comp); -// } -// item.setComps(comps); - + itexes.add(itex); JSONArray objects = JSONArray.parseArray(detail.getActsCtgrDtl()); + for (Object object : objects) { + if (object instanceof JSONObject jsonObj) { + jsonObj.remove("costcenter_name"); + jsonObj.remove("id"); + jsonObjects.add(jsonObj); + } + } items.add(item); } erpOrderSaveReqVO.setItems(items); erpOrderSaveReqVO.setItex(itexes); + erpOrderSaveReqVO.setAccts(jsonObjects); } - String result = "ERP提交失败"; - result = erpOrderService.submitOrderToErp061(erpOrderSaveReqVO); + String result = erpOrderService.submitOrderToErp061(erpOrderSaveReqVO); Long localOrderId = purchaseOrderWithDetailsVO.getPurchaseOrder().getId(); log.info("订单推送ERP请求完成,本地订单ID【{}】,ERP返回原始结果【{}】", localOrderId, result); @@ -453,16 +447,16 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { upVo.setOrderSAPNumber(erpId); upVo.setCause("ERP提交成功,erpID为:" + erpId); upVo.setErpStatus(OrderStatusEnum.FIND.getCode()); // 推送成功状态 + purchaseOrderMapper.updateById(upVo); log.info("订单推送ERP成功,本地订单ID【{}】,ERP订单号【{}】,已更新本地状态", localOrderId, erpId); } else { upVo.setOrderSAPNumber(null); upVo.setErpStatus(OrderStatusEnum.RLBK.getCode()); upVo.setCause(result); log.warn("订单推送ERP失败,本地订单ID【{}】,失败原因【{}】", localOrderId, result); + purchaseOrderMapper.updateById(upVo); + throw exception(ERP_ERO,result); } - - purchaseOrderMapper.updateById(upVo); - results.add(result); } catch (Exception e) { upVo.setOrderSAPNumber(null); upVo.setErpStatus(OrderStatusEnum.RLBK.getCode()); // 异常时强制置为失败状态 @@ -470,12 +464,9 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { // 异常时仍需更新数据库,保证订单状态一致性 purchaseOrderMapper.updateById(upVo); log.error("订单推送ERP发生异常,本地订单ID【{}】,异常信息如下", localOrderId, e); - results.add("ERP返回结果解析/处理异常:" + e.getMessage()); + throw exception(ERP_ERO,e); } }); - return results.get(0); - } else { - return "订单不存在"; } } @@ -1010,6 +1001,9 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { public OrderRespVO getOrder(Long id) { PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectById(id); OrderRespVO bean = BeanUtils.toBean(purchaseOrderDO, OrderRespVO.class); + if (purchaseOrderDO == null){ + throw exception(PURCHASE_ORDER_NOT_EXISTS); + } if (OrderTypeEnum.SALE.getCode().equals(bean.getSplyBsnTp())) { // 销售订单 List salesOrderDetailDOS = SpringUtils.getBean(SalesOrderDetailMapper.class).selectList( diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderSaveReqVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderSaveReqVO.java index 8bf9f9e6..861ec65a 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderSaveReqVO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderSaveReqVO.java @@ -1,6 +1,7 @@ package com.zt.plat.module.erp.controller.admin.erp.vo; import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.Valid; import jakarta.validation.constraints.NotEmpty; @@ -38,7 +39,9 @@ public class ErpOrderSaveReqVO { @Valid private List itex; // 行项目扩展信息 - private JSONArray accts; // 科目分配信息(科目分配类别为K或P时使用) + @Schema(description = "行项目-科目分配(科目分配类别为K、P和A时使用)") + private List accts; + @Valid private List comps; // 委托加工物料信息(委托加工订单时使用) @@ -193,6 +196,9 @@ public class ErpOrderSaveReqVO { // @Schema(description = "行项目科目分配信息") // @Data // public static class Acct { +// @Schema(description = "行号", requiredMode = Schema.RequiredMode.REQUIRED) +// @NotNull(message = "行号不能为空") +// private Integer po_item; // @Schema(description = "科目分配序号(从1开始)", requiredMode = Schema.RequiredMode.REQUIRED) // @NotNull(message = "科目分配序号不能为空") // private Integer serial_no; // DZEKKN NUMC2 diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpOrderServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpOrderServiceImpl.java index 19bc497a..a68ee11b 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpOrderServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpOrderServiceImpl.java @@ -38,7 +38,7 @@ public class ErpOrderServiceImpl implements ErpOrderService { req.put("acct", createVo.getAccts()); req.put("itex", createVo.getItex()); reqDTO.setReq(req); - String reqJson = com.alibaba.fastjson2.JSON.toJSONString(reqDTO); + // String reqJson = com.alibaba.fastjson2.JSON.toJSONString(reqDTO); return submitToErp(reqDTO); }