From a25e85cb8ee537195b166f1cc1c1965202b08406 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Tue, 14 Oct 2025 15:42:17 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=90=88=E5=90=8C?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E3=80=81=E6=8F=90erp=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/ErrorCodeConstants.java | 1 + .../enums/contract/DictEnum.java | 4 + .../admin/contract/ContractController.java | 11 +- .../service/contract/ContractService.java | 11 +- .../service/contract/ContractServiceImpl.java | 107 ++++++++++++++++-- .../service/erp/ErpContractServiceImpl.java | 4 +- 6 files changed, 118 insertions(+), 20 deletions(-) diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErrorCodeConstants.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErrorCodeConstants.java index 050bbd5b..c41c670c 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErrorCodeConstants.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErrorCodeConstants.java @@ -22,4 +22,5 @@ public interface ErrorCodeConstants { ErrorCode CONTRACT_STATUS_NOT_SUBMIT_APPROVAL = new ErrorCode(1_027_000_007, "{}状态合同不允许提交审核"); ErrorCode CONTRACT_STATUS_NOT_APPROVAL = new ErrorCode(1_027_000_008, "{}状态合同不允许审核"); ErrorCode CONTRACT_ERP_COMPANY_PLEASE_BIND = new ErrorCode(1_027_000_009, "请先绑定{}ERP公司信息"); + ErrorCode CONTRACT_STATUS_NOT_DELETE = new ErrorCode(1_027_000_010, "{}状态合同不允许删除"); } diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java index 5aeeeb32..274dc752 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java @@ -63,4 +63,8 @@ public enum DictEnum { public String getRemark() { return remark; } + + public static DictEnum getByCode(String code, String dictType) { + return DictEnum.valueOf(dictType + "_" +code); + } } 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 bffc2a1d..27489ba7 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 @@ -85,13 +85,11 @@ public class ContractController implements BusinessControllerMarker { return success(contractService.update(reqVO)); } - // TODO @DeleteMapping("/delete") @Operation(summary = "删除合同") - @Parameter(name = "ids", description = "合同ID集合", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('base:contract:delete')") - public CommonResult delete(@RequestParam("ids") Long[] ids) { - return success(true); + public CommonResult> delete(@RequestBody List ids) { + return success(contractService.delete(ids)); } // TODO @@ -144,11 +142,10 @@ public class ContractController implements BusinessControllerMarker { public void viewApproval() { } - // TODO @PostMapping("/submit/erp") @Operation(summary = "提交ERP") @PreAuthorize("@ss.hasPermission('base:contract:erp')") - public void submitErp(@RequestBody List ids) { - contractService.submitErp(ids); + public CommonResult> submitErp(@RequestBody List ids) { + return success(contractService.submitErp(ids)); } } 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 7df8cf58..d51fe285 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 @@ -1,5 +1,6 @@ package com.zt.plat.module.contractorder.service.contract; +import cn.hutool.json.JSONObject; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.module.contractorder.api.dto.contract.ContractRespDTO; import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*; @@ -101,5 +102,13 @@ public interface ContractService { * @param ids 合同ID集合 * @return */ - void submitErp(List ids); + List submitErp(List ids); + + /** + * 删除合同 + * + * @param ids 合同ID集合 + * @return 删除结果 + */ + List delete(List ids); } 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 6cf1aeca..78642fdf 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 @@ -1,5 +1,6 @@ package com.zt.plat.module.contractorder.service.contract; +import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; @@ -21,10 +22,7 @@ import com.zt.plat.module.contractorder.api.dto.contract.*; import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*; import com.zt.plat.module.contractorder.dal.dataobject.contract.*; import com.zt.plat.module.contractorder.dal.mysql.contract.*; -import com.zt.plat.module.contractorder.enums.ApiConstants; -import com.zt.plat.module.contractorder.enums.DateConstants; -import com.zt.plat.module.contractorder.enums.ProcessConstants; -import com.zt.plat.module.contractorder.enums.TableFieldConstants; +import com.zt.plat.module.contractorder.enums.*; import com.zt.plat.module.contractorder.enums.contract.DictEnum; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractSaveReqVO; @@ -412,7 +410,7 @@ public class ContractServiceImpl implements ContractService { || DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode().equals(oldContractMainDO.getStatus())) { throw exception(CONTRACT_STATUS_NOT_UPDATE, - DictEnum.valueOf(oldContractMainDO.getStatus()).getLabel()); + DictEnum.getByCode(oldContractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); } // 请求更新的合同信息 @@ -596,6 +594,83 @@ public class ContractServiceImpl implements ContractService { } } + @Override + public List delete(List ids) { + + // 执行结果 + List result = new ArrayList<>(); + + ids.forEach(id -> { + + // 查询合同是否存在 + ContractMainDO contractMainDO = contractMainMapper.selectById(id); + if (contractMainDO == null) { + result.add(new JSONObject().putOnce("deleted", false).putOnce("msg", id.toString() + ":" + CONTRACT_NOT_EXISTS)); + } + + // 合同状态校验 + if (!DictEnum.BSE_CTRT_STS_DRAFT.getCode().equals(contractMainDO.getStatus())) { + String msg = id.toString() + + ":" + + CONTRACT_STATUS_NOT_DELETE.getMsg() + .replace("{}", DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + result.add(new JSONObject().putOnce("deleted", false).putOnce("msg", msg)); + } + + // 删除关联信息 + // 查询合同明细 + List detailDOS = contractDetailMapper + .selectList(TableFieldConstants.BSE_CTRT_DTL_CTRT_MAIN_ID, id); + if (detailDOS != null && !detailDOS.isEmpty()) { + detailDOS.forEach(detailDO -> { + Long detailDOId = detailDO.getId(); + + // 删除交货计划 + contractPlanMapper.delete(TableFieldConstants.BSE_CTRT_PLN_CTRT_DTL_ID, detailDOId.toString()); + }); + + // 删除合同明细 + contractDetailMapper.delete(TableFieldConstants.BSE_CTRT_DTL_CTRT_MAIN_ID, id.toString()); + } + + // 查询价款结算条款 + List formulaDOS = contractFormulaMapper + .selectList(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, id); + if (formulaDOS != null && !formulaDOS.isEmpty()) { + formulaDOS.forEach(formulaDO -> { + + // 价款结算条款ID + Long formulaDOId = formulaDO.getId(); + + // 删除基础系数配置 + contractCoefficientMapper.delete(TableFieldConstants.BSE_CTRT_COEF_FMU_ID, formulaDOId.toString()); + // 删除品位等级价配置 + contractGradeMapper.delete(TableFieldConstants.BSE_CTRT_GRD_FMU_ID, formulaDOId.toString()); + // 删除调整价配置 + contractDeductMapper.delete(TableFieldConstants.BSE_CTRT_DDCT_FMU_ID, formulaDOId.toString()); + // 删除市场价配置 + contractPriceMapper.delete(TableFieldConstants.BSE_CTRT_PRC_FMU_ID, formulaDOId.toString()); + }); + + // 删除价款结算条款 + contractFormulaMapper.delete(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, id.toString()); + } + + // 删除参数降级规则 + contractDemoteMapper.delete(TableFieldConstants.BSE_CTRT_DMOT_CTRT_ID, id.toString()); + + // 删除品位不计价规则 + contractNotMapper.delete(TableFieldConstants.BSE_CTRT_NT_CTRT_ID, id.toString()); + + // 删除合同数据 + contractMainMapper.deleteById(id); + + result.add(new JSONObject().putOnce("deleted", true).putOnce("msg", id.toString())); + }); + + return result; + } + @Override public String submitApproval(Long id) { @@ -618,7 +693,7 @@ public class ContractServiceImpl implements ContractService { || DictEnum.BSE_CTRT_STS_DELETED.getCode().equals(contractMainDO.getStatus())) { throw exception(CONTRACT_STATUS_NOT_SUBMIT_APPROVAL, - DictEnum.valueOf(contractMainDO.getStatus()).getLabel()); + DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); } // 合同内容校验 @@ -684,7 +759,7 @@ public class ContractServiceImpl implements ContractService { || DictEnum.BSE_CTRT_STS_DELETED.getCode().equals(contractMainDO.getStatus())) { throw exception(CONTRACT_STATUS_NOT_APPROVAL, - DictEnum.valueOf(contractMainDO.getStatus()).getLabel()); + DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); } return ""; @@ -828,7 +903,10 @@ public class ContractServiceImpl implements ContractService { } @Override - public void submitErp(List ids) { + public List submitErp(List ids) { + + // 返回结果 + List result = new ArrayList<>(); // 遍历合同ID集合 ids.forEach(id -> { @@ -983,9 +1061,20 @@ public class ContractServiceImpl implements ContractService { erpContractVO.setUpdaterName(contractMainDO.getUpdaterName()); // 调用ERP模块 - erpContractService.submitErp(erpContractVO); + String erpResult = null; + try { + erpContractService.submitErp(erpContractVO); + } catch (Exception e) { + erpResult = e.getMessage(); + } + log.info("合同提交ERP结果:{}", erpResult); + result.add(id.toString() + ":" + erpResult); + } else { + result.add(id.toString() + ":" + CONTRACT_NOT_EXISTS); } }); + + return result; } /** diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpContractServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpContractServiceImpl.java index 78cd7036..ec54ad4c 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpContractServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpContractServiceImpl.java @@ -342,9 +342,7 @@ public class ErpContractServiceImpl implements ErpContractService { HashMap response = erpExternalApi.submitDataToErp(erpSubmitReqDTO); - System.out.println(response.get("resStr")); - - return ""; + return response.get("resStr"); } /** From db0486266071d000fc9c5b1bfe267cbe9b188a51 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Tue, 14 Oct 2025 16:11:56 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E5=90=88=E5=90=8C=E7=BC=96=E5=8F=B7=E8=8E=B7=E5=BE=97=E5=90=88?= =?UTF-8?q?=E5=90=8C=E8=AF=A6=E6=83=85=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/TableFieldConstants.java | 2 + .../admin/contract/ContractController.java | 10 +- .../service/contract/ContractService.java | 8 ++ .../service/contract/ContractServiceImpl.java | 94 +++++++++++++++++++ 4 files changed, 112 insertions(+), 2 deletions(-) diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/TableFieldConstants.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/TableFieldConstants.java index 1f9847e9..3c2dc386 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/TableFieldConstants.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/TableFieldConstants.java @@ -11,6 +11,8 @@ public class TableFieldConstants { public static final String ID = "ID"; /* 合同主信息表 */ + // 系统合同编号;自动生成,校验唯一 + public static final String BSE_CTRT_MAIN_SYS_CTRT_NUM = "SYS_CTRT_NUM"; // 合同名称;与ERP(HTMC)对应,校验唯一 public static final String BSE_CTRT_MAIN_CTRT_NAME = "CTRT_NAME"; public static final String BSE_CTRT_MAIN_CTRT_NAME_LABEL = "合同名称"; 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 27489ba7..214a8a84 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 @@ -9,7 +9,6 @@ import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*; import com.zt.plat.module.contractorder.dal.dataobject.contract.ContractMainDO; import com.zt.plat.module.contractorder.service.contract.ContractService; import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.validation.Valid; @@ -71,13 +70,20 @@ public class ContractController implements BusinessControllerMarker { @GetMapping("/get") @Operation(summary = "获得合同详情") - @Parameter(name = "id", description = "合同ID", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('base:contract:get')") public CommonResult get(@RequestParam("id") Long id) { ContractRespVO contractRespVO = contractService.get(id); return success(contractRespVO); } + @GetMapping("/get/by-system-contract-number") + @Operation(summary = "根据系统合同编号获得合同详情") + @PreAuthorize("@ss.hasPermission('base:contract:get')") + public CommonResult getBySystemContractNumber(@RequestParam("systemContractNumber") String systemContractNumber) { + ContractRespVO contractRespVO = contractService.getBySystemContractNumber(systemContractNumber); + return success(contractRespVO); + } + @PutMapping("update") @Operation(summary = "修改合同") @PreAuthorize("@ss.hasPermission('base:contract:update')") 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 d51fe285..2c3b57c9 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 @@ -111,4 +111,12 @@ public interface ContractService { * @return 删除结果 */ List delete(List ids); + + /** + * 根据系统合同编号获得合同详情 + * + * @param systemContractNumber 系统合同编号 + * @return 合同信息 + */ + ContractRespVO getBySystemContractNumber(String systemContractNumber); } 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 78642fdf..54576a6d 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 @@ -368,6 +368,100 @@ public class ContractServiceImpl implements ContractService { return respVO; } + @Override + public ContractRespVO getBySystemContractNumber(String systemContractNumber) { + // 返回结果 + ContractRespVO respVO = new ContractRespVO(); + + // 查询并设置合同主信息 + ContractMainDO contractMainDO = contractMainMapper.selectOne(TableFieldConstants.BSE_CTRT_MAIN_SYS_CTRT_NUM,systemContractNumber); + if (contractMainDO == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + BeanUtils.copyProperties(contractMainDO, respVO); + + // 查询并设置合同明细 + List detailDOS = contractDetailMapper + .selectList(TableFieldConstants.BSE_CTRT_DTL_CTRT_MAIN_ID, contractMainDO.getId()); + if (detailDOS != null && !detailDOS.isEmpty()) { + respVO.setDetail(BeanUtils.toBean(detailDOS, DetailRespVO.class)); + respVO.getDetail().forEach(detail -> { + + // 查询并设置交货计划 + List planDOS = contractPlanMapper + .selectList(TableFieldConstants.BSE_CTRT_PLN_CTRT_DTL_ID, detail.getId()); + if (planDOS != null && !planDOS.isEmpty()) { + detail.setPlans(BeanUtils.toBean(planDOS, PlanRespVO.class)); + } + }); + } + + // 查询并设置价款结算条款 + List formulaDOS = contractFormulaMapper + .selectList(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, contractMainDO.getId()); + if (formulaDOS != null && !formulaDOS.isEmpty()) { + respVO.setFormulas(BeanUtils.toBean(formulaDOS, FormulaRespVO.class)); + + respVO.getFormulas().forEach(formula -> { + + // 查询并设置基础系数配置 + List coefficientDOS = contractCoefficientMapper + .selectList(TableFieldConstants.BSE_CTRT_COEF_FMU_ID, formula.getId()); + if (coefficientDOS != null && !coefficientDOS.isEmpty()) { + formula.setCoefficients(BeanUtils.toBean(coefficientDOS, CoefficientRespVO.class)); + } + // 查询并设置品位等级价配置 + List gradeDOS = contractGradeMapper + .selectList(TableFieldConstants.BSE_CTRT_GRD_FMU_ID, formula.getId()); + if (gradeDOS != null && !gradeDOS.isEmpty()) { + formula.setGrades(BeanUtils.toBean(gradeDOS, GradeRespVO.class)); + } + // 查询并设置调整价配置 + List deductDOS = contractDeductMapper + .selectList(TableFieldConstants.BSE_CTRT_DDCT_FMU_ID, formula.getId()); + if (deductDOS != null && !deductDOS.isEmpty()) { + formula.setDeducts(BeanUtils.toBean(deductDOS, DeductRespVO.class)); + } + // 查询并设置市场价配置 + List priceDOS = contractPriceMapper + .selectList(TableFieldConstants.BSE_CTRT_PRC_FMU_ID, formula.getId()); + if (priceDOS != null && !priceDOS.isEmpty()) { + formula.setPrices(BeanUtils.toBean(priceDOS, PriceRespVO.class)); + } + }); + } + + // 查询并设置参数降级规则 + List demoteDOS = contractDemoteMapper + .selectList(TableFieldConstants.BSE_CTRT_DMOT_CTRT_ID, contractMainDO.getId()); + if (demoteDOS != null && !demoteDOS.isEmpty()) { + respVO.setDemotes(BeanUtils.toBean(demoteDOS, DemoteRespVO.class)); + } + + // 查询并设置品位不计价规则 + List notDOS = contractNotMapper + .selectList(TableFieldConstants.BSE_CTRT_NT_CTRT_ID, contractMainDO.getId()); + if (notDOS != null && !notDOS.isEmpty()) { + respVO.setNots(BeanUtils.toBean(notDOS, NotRespVO.class)); + } + + // 查询并设置合同动态表单 + List templateInstanceDataDOS = templateInstanceDataMapper + .selectList(TableFieldConstants.BSE_TMPL_INSC_DAT_INSC_ID, contractMainDO.getInstanceId()); + if (templateInstanceDataDOS != null && !templateInstanceDataDOS.isEmpty()) { + respVO.setDynamicsFields(BeanUtils.toBean(templateInstanceDataDOS, TemplateInstanceDataRespVO.class)); + } + + // 查询并设置合同动态条款 + List templateInstanceItemDOS = templateInstanceItemMapper + .selectList(TableFieldConstants.BSE_TMPL_INSC_ITM_INSC_ID, contractMainDO.getInstanceId()); + if (templateInstanceItemDOS != null && !templateInstanceItemDOS.isEmpty()) { + respVO.setDynamicsItems(BeanUtils.toBean(templateInstanceItemDOS, TemplateInstanceItemRespVO.class)); + } + + return respVO; + } + @Transactional @Override public Boolean update(ContractSaveReqVO reqVO) { From a1747fba8ba21124c2a11667156c4cd0cae84aa6 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: Tue, 14 Oct 2025 17:40:18 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrderController.java | 10 +- .../purchaseorder/vo/PrchOrdDtlSaveReqVO.java | 5 +- .../purchaseorder/vo/PurchaseOrderRespVO.java | 1 + .../vo/PurchaseOrderSaveReqVO.java | 14 +- .../purchaseorder/PrchOrdDtlDO.java | 9 +- .../purchaseorder/PurchaseOrderDO.java | 12 +- .../purchaseorder/PurchaseOrderMapper.java | 2 +- .../purchaseorder/PurchaseOrderService.java | 2 + .../PurchaseOrderServiceImpl.java | 123 ++++++- .../purchaseorder/PurchaseOrderMapper.xml | 3 - .../admin/erp/vo/ErpOrderUpdateReqVO.java | 346 ++++++++++-------- .../erp/service/erp/ErpOrderService.java | 5 +- .../erp/service/erp/ErpOrderServiceImpl.java | 43 ++- 13 files changed, 381 insertions(+), 194 deletions(-) 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 dd83a3e8..fa01c1d5 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 @@ -86,7 +86,9 @@ public class PurchaseOrderController implements BusinessControllerMarker { @PreAuthorize("@ss.hasPermission('bse:purchase-order:query')") public CommonResult getPurchaseOrder(@RequestParam("id") Long id) { PurchaseOrderDO purchaseOrder = purchaseOrderService.getPurchaseOrder(id); - return success(BeanUtils.toBean(purchaseOrder, PurchaseOrderRespVO.class)); + PurchaseOrderRespVO purchaseOrderRespVO = BeanUtils.toBean(purchaseOrder, PurchaseOrderRespVO.class); + purchaseOrderService.setOrderDetails(purchaseOrderRespVO); + return success(purchaseOrderRespVO); } @GetMapping("/page") @@ -94,7 +96,9 @@ public class PurchaseOrderController implements BusinessControllerMarker { @PreAuthorize("@ss.hasPermission('bse:purchase-order:query')") public CommonResult> getPurchaseOrderPage(@Valid PurchaseOrderPageReqVO pageReqVO) { PageResult pageResult = purchaseOrderService.getPurchaseOrderPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, PurchaseOrderRespVO.class)); + PageResult purchaseOrderRespVOPageResult = BeanUtils.toBean(pageResult, PurchaseOrderRespVO.class); + purchaseOrderRespVOPageResult.getList().forEach(purchaseOrderRespVO -> purchaseOrderService.setOrderDetails(purchaseOrderRespVO)); + return success(purchaseOrderRespVOPageResult); } @GetMapping("/export-excel") @@ -135,7 +139,7 @@ public class PurchaseOrderController implements BusinessControllerMarker { //通过订单号查询订单信息 @PostMapping("/get-order-by-order-no") - @Operation(summary = "通过订单号查询订单信息") + @Operation(summary = "通过订单号查询订单信息", description = "通过订单号查询订单信息") public CommonResult> getOrderByOrderNo(@RequestBody @Validated @NotEmpty(message = "采购订单不能为空") List orderNos){ return success(purchaseOrderService.getOrderByOrderNo(orderNos)); } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PrchOrdDtlSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PrchOrdDtlSaveReqVO.java index c7390d0c..29533ab3 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PrchOrdDtlSaveReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PrchOrdDtlSaveReqVO.java @@ -1,5 +1,6 @@ package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; +import com.alibaba.fastjson2.JSONObject; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -62,7 +63,7 @@ public class PrchOrdDtlSaveReqVO { @Schema(description = "税码(字典: PRCH_TAX);推送ERP", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "税码(字典: PRCH_TAX);推送ERP不能为空") - private BigDecimal taxNum; + private String taxNum; @Schema(description = "是否基于GR的发票校验;推送ERP") private String isGrInv; @@ -149,7 +150,7 @@ public class PrchOrdDtlSaveReqVO { private String isEnb; @Schema(description = "科目分配详情;科目分配类别为K或P时使用(JSON)") - private String actsCtgrDtl; + private JSONObject actsCtgrDtl; @Schema(description = "委托加工详情;委托加工订单使用(JSON)") private String enttDtl; 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 85070c39..6264d862 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 @@ -164,6 +164,7 @@ public class PurchaseOrderRespVO { @Schema(description = "订单明细") @ExcelProperty("订单明细") private List prchOrdDtlRespVOS; + @Schema(description = "物料类型(字典:MTRL_TP)", example = "2") @ExcelProperty("物料类型(字典:MTRL_TP)") private String mtrlTp; diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderSaveReqVO.java index 13ddf95a..bd3ceea1 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderSaveReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderSaveReqVO.java @@ -24,9 +24,9 @@ public class PurchaseOrderSaveReqVO { @Schema(description = "ERP订单号") private String orderSAPNumber; - @Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "订单号不能为空") - private String systemOrderNumber; +// @Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED) +// @NotEmpty(message = "订单号不能为空") +// private String systemOrderNumber; @Schema(description = "公司编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "公司编码;推送ERP(必须)不能为空") @@ -94,10 +94,10 @@ public class PurchaseOrderSaveReqVO { @Schema(description = "代理方名称", example = "张三") private String agentName; - - @Schema(description = "订单编码", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "订单编码不能为空") - private String orderNumber; +// +// @Schema(description = "订单编码", requiredMode = Schema.RequiredMode.REQUIRED) +// @NotEmpty(message = "订单编码不能为空") +// private String orderNumber; @Schema(description = "系统合同编号", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "系统合同编号不能为空") diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PrchOrdDtlDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PrchOrdDtlDO.java index 9420a4f3..8aab3f91 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PrchOrdDtlDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PrchOrdDtlDO.java @@ -104,7 +104,7 @@ public class PrchOrdDtlDO extends BusinessBaseDO { * 税码(字典: PRCH_TAX);推送ERP */ @TableField("TAX_NUM") - private BigDecimal taxNum; + private String taxNum; /** * 是否基于GR的发票校验;推送ERP */ @@ -271,11 +271,4 @@ public class PrchOrdDtlDO extends BusinessBaseDO { @TableField("ELEM_CDG") private String elemCdg; - /** - * 物料字典 - * - */ - @TableField("MTRL_TP") - private String mtrlTp; - } 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 90572eb1..a68f1f6e 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 @@ -141,8 +141,8 @@ public class PurchaseOrderDO extends BusinessBaseDO { /** * 订单编码 */ - @TableField("ORD_NUM") - private String orderNumber; +// @TableField("ORD_NUM") +// private String orderNumber; /** * 系统合同编号 */ @@ -237,4 +237,12 @@ public class PurchaseOrderDO extends BusinessBaseDO { */ @TableField("IS_PUSH") private int isPush; + + + /** + * 物料字典 + * + */ + @TableField("MTRL_TP") + private String mtrlTp; } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/purchaseorder/PurchaseOrderMapper.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/purchaseorder/PurchaseOrderMapper.java index bea94365..9ec0ad22 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/purchaseorder/PurchaseOrderMapper.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/purchaseorder/PurchaseOrderMapper.java @@ -43,7 +43,7 @@ public interface PurchaseOrderMapper extends BaseMapperX { .eqIfPresent(PurchaseOrderDO::getRemark, reqVO.getRemark()) .eqIfPresent(PurchaseOrderDO::getAgentNumber, reqVO.getAgentNumber()) .likeIfPresent(PurchaseOrderDO::getAgentName, reqVO.getAgentName()) - .eqIfPresent(PurchaseOrderDO::getOrderNumber, reqVO.getOrderNumber()) +// .eqIfPresent(PurchaseOrderDO::getOrderNumber, reqVO.getOrderNumber()) .eqIfPresent(PurchaseOrderDO::getContractNumber, reqVO.getContractNumber()) .eqIfPresent(PurchaseOrderDO::getMaterialNumber, reqVO.getMaterialNumber()) .likeIfPresent(PurchaseOrderDO::getMaterialName, reqVO.getMaterialName()) 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 cc839930..e6506a3a 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 @@ -81,4 +81,6 @@ public interface PurchaseOrderService { * @return 订单信息 */ List getOrderByOrderNo(List orderNo); + + void setOrderDetails(PurchaseOrderRespVO purchaseOrderRespVO); } 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 511ff0a2..fe7f6535 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 @@ -1,6 +1,9 @@ package com.zt.plat.module.contractorder.service.purchaseorder; import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi; import com.zt.plat.module.bpm.api.task.BpmTaskApi; @@ -10,12 +13,16 @@ import com.zt.plat.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; import com.zt.plat.module.bpm.api.task.dto.BpmTaskRespDTO; import com.zt.plat.module.bpm.enums.task.BpmProcessInstanceStatusEnum; import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.*; +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.mysql.purchaseorder.PrchOrdDtlMapper; import com.zt.plat.module.contractorder.dal.mysql.purchaseorder.PurchaseOrderMapper; import com.zt.plat.module.contractorder.enums.purchaseorder.PurchaseOrderStatusEnum; import com.zt.plat.module.contractorder.util.constants.ProcessDefinitionKeyConstants; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderSaveReqVO; +import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderUpdateReqVO; import com.zt.plat.module.erp.service.erp.ErpOrderService; +import com.zt.plat.module.system.api.sequence.SequenceApi; import com.zt.plat.module.system.api.user.AdminUserApi; import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO; import lombok.extern.slf4j.Slf4j; @@ -62,6 +69,12 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { @Resource private BpmTaskApi bpmTaskApi; + @Resource + private PrchOrdDtlMapper prchOrdDtlMapper; + + @Resource + private SequenceApi sequenceApi; + @Override public PurchaseOrderRespVO createPurchaseOrder(PurchaseOrderSaveReqVO createReqVO) { @@ -72,6 +85,9 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { } else { purchaseOrder.setStatus(PurchaseOrderStatusEnum.TO_SUBMIT_ERP.getCode()); } + //生成订单号 + String orderNumber = generateOrderNumber(purchaseOrder.getMtrlTp()); + purchaseOrder.setSystemOrderNumber(orderNumber); purchaseOrderMapper.insert(purchaseOrder); // 返回 //批量插入订单明细 @@ -200,6 +216,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { } @Override + @Transactional public String submitErp061(List ids) { //通过订单号查询订单 List purchaseOrderWithDetailsVOS = purchaseOrderMapper.selectOrderByIds(ids); @@ -207,7 +224,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { purchaseOrderWithDetailsVOS.forEach(purchaseOrderWithDetailsVO -> { ErpOrderSaveReqVO erpOrderSaveReqVO = new ErpOrderSaveReqVO(); if (purchaseOrderWithDetailsVO.getPurchaseOrder() != null) { - erpOrderSaveReqVO.setOrderid(purchaseOrderWithDetailsVO.getPurchaseOrder().getOrderNumber()); + erpOrderSaveReqVO.setOrderid(purchaseOrderWithDetailsVO.getPurchaseOrder().getSystemOrderNumber()); erpOrderSaveReqVO.setCompCode(purchaseOrderWithDetailsVO.getPurchaseOrder().getCompanyNumber());//公司代码 erpOrderSaveReqVO.setVendor(purchaseOrderWithDetailsVO.getPurchaseOrder().getSupplierNumber());// 供应商帐号 erpOrderSaveReqVO.setDocType(purchaseOrderWithDetailsVO.getPurchaseOrder().getType());//采购凭证类型 @@ -220,7 +237,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { erpOrderSaveReqVO.setZxxyh(purchaseOrderWithDetailsVO.getPurchaseOrder().getPaperContractNumber());//小协议号 } - if (purchaseOrderWithDetailsVO.getOrderDetails()!= null){ + if (purchaseOrderWithDetailsVO.getOrderDetails() != null) { purchaseOrderWithDetailsVO.getOrderDetails().forEach(orderDetail -> { erpOrderSaveReqVO.setPoItem(orderDetail.getLineNum()); //行号 erpOrderSaveReqVO.setMaterial(orderDetail.getRcvFactNum());//物料号 @@ -230,9 +247,22 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { erpOrderSaveReqVO.setActsCtgrDtl(orderDetail.getActsCtgrDtl()); }); } - erpOrderService.submitOrderToErp(erpOrderSaveReqVO); + String s = erpOrderService.submitOrderToErp061(erpOrderSaveReqVO); log.info("订单推送成功,订单id【{}】", purchaseOrderWithDetailsVO.getPurchaseOrder().getId()); + String erpId = JSONObject.parseObject(s).get("id").toString(); + if (erpId != null) { + //更新订单 + int i = purchaseOrderMapper.updateById(new PurchaseOrderDO().setId(purchaseOrderWithDetailsVO.getPurchaseOrder().getId()).setOrderSAPNumber(erpId)); + if (i > 0) { + log.info("更新订单ERPID成功,订单id【{}】", purchaseOrderWithDetailsVO.getPurchaseOrder().getId()); + } else { + log.info("订单更新失败,订单id【{}】", purchaseOrderWithDetailsVO.getPurchaseOrder().getId()); + throw new RuntimeException("订单更新失败"); + } + } }); + //推送后把erp订单id设置到订单里 + return "ERP推送成功"; } else { return "订单不存在"; @@ -241,12 +271,16 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { @Override public boolean submitErp062(Long id) { - PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectByOrderId(id); - if (purchaseOrderDO== null){ + List purchaseOrderWithDetailsVOS = purchaseOrderMapper.selectOrderByIds(List.of(id)); + if (purchaseOrderWithDetailsVOS.isEmpty()) { throw exception(PURCHASE_ORDER_NOT_EXISTS); } - if (purchaseOrderDO.getOrderSAPNumber().isEmpty()){ return true;} - + if (purchaseOrderWithDetailsVOS.get(0).getPurchaseOrder().getOrderSAPNumber().isEmpty()) { + return true; + } + ErpOrderUpdateReqVO erpOrderUpdateReqVO = new ErpOrderUpdateReqVO(); + setValue(erpOrderUpdateReqVO, purchaseOrderWithDetailsVOS.get(0)); + erpOrderService.submitOrderToErp062(erpOrderUpdateReqVO); return true; } @@ -255,10 +289,10 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { // 校验存在 validatePurchaseOrderExists(orderId); PurchaseOrderStatusEnum byCode = PurchaseOrderStatusEnum.getByCode(status); - if (byCode== null){ + if (byCode == null) { throw exception(PURCHASE_ORDER_STATUS_ERROR); } - return purchaseOrderMapper.updateById(new PurchaseOrderDO().setId(orderId).setStatus(status))>0; + return purchaseOrderMapper.updateById(new PurchaseOrderDO().setId(orderId).setStatus(status)) > 0; } @Override @@ -273,5 +307,76 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { return purchaseOrderDetailsRespVOS; } + @Override + public void setOrderDetails(PurchaseOrderRespVO purchaseOrderRespVO) { + PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectById(purchaseOrderRespVO.getId()); + if (purchaseOrderDO == null) { + return; + } + List prchOrdDtlDOS = prchOrdDtlMapper.selectList(new LambdaQueryWrapper().eq(PrchOrdDtlDO::getOrdId, purchaseOrderDO.getId())); + purchaseOrderRespVO.setPrchOrdDtlRespVOS(BeanUtils.toBean(prchOrdDtlDOS, PrchOrdDtlRespVO.class)); + } + + private void setValue(ErpOrderUpdateReqVO erpOrderUpdateReqVO, PurchaseOrderWithDetailsVO purchaseOrderWithDetailsVO) { + //head + PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectById(purchaseOrderWithDetailsVO.getPurchaseOrder().getId()); + erpOrderUpdateReqVO.setPoNumber(purchaseOrderWithDetailsVO.getPurchaseOrder().getOrderSAPNumber()).setDeleteInd(purchaseOrderDO.getDeleted() ? 1 : 0).setCurrency(purchaseOrderWithDetailsVO.getPurchaseOrder().getCurrencyNumber()).setExchRate(purchaseOrderWithDetailsVO.getPurchaseOrder().getExchangeRate()); + //exte + erpOrderUpdateReqVO.setZzhth(purchaseOrderWithDetailsVO.getPurchaseOrder().getPaperContractNumber()).setZxxyh(purchaseOrderWithDetailsVO.getPurchaseOrder().getAgreementNumber()).setZnote(purchaseOrderWithDetailsVO.getPurchaseOrder().getRemark()).setZlifnr(purchaseOrderWithDetailsVO.getPurchaseOrder().getAgreementNumber()); + //item + setItems(erpOrderUpdateReqVO, purchaseOrderWithDetailsVO); + //itex + setItex(erpOrderUpdateReqVO, purchaseOrderWithDetailsVO); + //acct + // 使用FastJSON2直接将List转换为JSONArray + // acct部分:转换List为JSONArray + List actsCtgrDtlList = purchaseOrderWithDetailsVO.getOrderDetails().stream() + .map(PrchOrdDtlDO::getActsCtgrDtl).map(JSONObject::parseObject) + .toList(); + + // 直接使用FastJSON2将List转换为JSONArray(关键优化点) + JSONArray jsonArray = JSONArray.from(actsCtgrDtlList); + + // 设置到对象中 + erpOrderUpdateReqVO.setAccts(jsonArray); + } + + private void setItems(ErpOrderUpdateReqVO erpOrderUpdateReqVO, PurchaseOrderWithDetailsVO purchaseOrderWithDetailsVO) { + List items = new ArrayList<>(); + purchaseOrderWithDetailsVO.getOrderDetails().forEach(orderDetail -> { + PrchOrdDtlDO prchOrdDtlDO = prchOrdDtlMapper.selectById(orderDetail.getId()); + ErpOrderUpdateReqVO.item item = new ErpOrderUpdateReqVO.item(); // item + item.setPo_item(prchOrdDtlDO.getLineNum());//行号 + item.setMaterial(prchOrdDtlDO.getRcvFactNum());//物料号 + item.setPlant(prchOrdDtlDO.getRcvFactNum());//工厂 + item.setStge_loc(prchOrdDtlDO.getRcvWrhNum());//库位 + item.setQuantity(prchOrdDtlDO.getQty());// 数量 + item.setPo_unit(prchOrdDtlDO.getUnt());// 计量单位 + item.setNet_price(prchOrdDtlDO.getInTaxUprc());// 含税单价 + item.setTax_code(prchOrdDtlDO.getTaxNum());//税码 + item.setAcctasscat(prchOrdDtlDO.getActsCtgr());//科目分配类别 + item.setMatl_group(prchOrdDtlDO.getMtrlCpntNum());//物料组 + item.setShort_text(prchOrdDtlDO.getShrtTxt());//短文本 + item.setDelete_ind(prchOrdDtlDO.getDeleted() ? 1 : 0);//行项目删除标识 + items.add(item); + }); + erpOrderUpdateReqVO.setItems(items); + } + + private void setItex(ErpOrderUpdateReqVO erpOrderUpdateReqVO, PurchaseOrderWithDetailsVO purchaseOrderWithDetailsVO) { + List itexs = new ArrayList<>(); + purchaseOrderWithDetailsVO.getOrderDetails().forEach(orderDetail -> { + ErpOrderUpdateReqVO.itex itex = new ErpOrderUpdateReqVO.itex(); // itex + itex.setPo_item(orderDetail.getLineNum()); //行号 + itex.setZpurty(orderDetail.getPrchCtgr());//采购类别 + itex.setZmatnr(orderDetail.getOrigWet()); // 原料湿重 + itexs.add(itex); + }); + erpOrderUpdateReqVO.setItexs(itexs); + } + + private String generateOrderNumber(String materialType) { + return sequenceApi.getNextSequence("PURCHASE_ORDER_NUMBER", null, null).getData(); + } } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/resources/mapper/purchaseorder/PurchaseOrderMapper.xml b/zt-module-contract-order/zt-module-contract-order-server/src/main/resources/mapper/purchaseorder/PurchaseOrderMapper.xml index c5c98196..419e80c7 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/resources/mapper/purchaseorder/PurchaseOrderMapper.xml +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/resources/mapper/purchaseorder/PurchaseOrderMapper.xml @@ -33,7 +33,6 @@ po.RMK, po.AGT_NUM, po.AGT_NAME, - po.ORD_NUM, po.CTRT_NUM, po.MTRL_NUM, po.MTRL_NAME, @@ -140,7 +139,6 @@ po.RMK, po.AGT_NUM, po.AGT_NAME, - po.ORD_NUM, po.CTRT_NUM, po.MTRL_NUM, po.MTRL_NAME, @@ -256,7 +254,6 @@ - diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderUpdateReqVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderUpdateReqVO.java index e537fd63..30031587 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderUpdateReqVO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderUpdateReqVO.java @@ -1,12 +1,15 @@ package com.zt.plat.module.erp.controller.admin.erp.vo; import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.Data; import java.math.BigDecimal; +import java.util.List; /** * ERP采购订单保存请求VO @@ -24,7 +27,7 @@ public class ErpOrderUpdateReqVO { @Schema(description = "删除标识(ELOEK)", example = " ") @ExcelProperty("删除标识") - private String deleteInd; + private Integer deleteInd; @Schema(description = "货币码(WAERS)", requiredMode = Schema.RequiredMode.REQUIRED, example = "CNY") @NotEmpty(message = "货币码不能为空") @@ -54,170 +57,201 @@ public class ErpOrderUpdateReqVO { private String zlifnr; // ====================== 3. 行项目字段(列表-item) ====================== - @Schema(description = "行号(EBELP)", requiredMode = Schema.RequiredMode.REQUIRED, example = "00010") - @NotEmpty(message = "行号不能为空") - @ExcelProperty("行号") - private String poItem; + private List items; - @Schema(description = "物料号(MATNR)", example = "M0010001") - @ExcelProperty("物料号") - private String material; - - @Schema(description = "工厂(WERKS)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1001") - @NotEmpty(message = "工厂不能为空") - @ExcelProperty("工厂") - private String plant; - - @Schema(description = "库存地点(LGORT)", example = "0001") - @ExcelProperty("库存地点") - private String stgeLoc; - - @Schema(description = "数量(MENGE),保留3位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.000") - @NotNull(message = "数量不能为空") - @ExcelProperty("数量") - private BigDecimal quantity; - - @Schema(description = "计量单位(MEINS),必须与该物料基本计量单位一致", requiredMode = Schema.RequiredMode.REQUIRED, example = "PC") - @NotEmpty(message = "计量单位不能为空") - @ExcelProperty("计量单位") - private String poUnit; - - @Schema(description = "含税单价(NETPR),保留2位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "199.99") - @NotNull(message = "含税单价不能为空") - @ExcelProperty("含税单价") - private BigDecimal netPrice; - - @Schema(description = "价格单位(PEINH),固定值1", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "价格单位不能为空") - @ExcelProperty("价格单位") - private Integer priceUnit; - - @Schema(description = "税码(MWSKZ)", example = "J1") - @ExcelProperty("税码") - private String taxCode; - - @Schema(description = "基于GR的发票校验(WEBRE)", example = "Y") - @ExcelProperty("基于GR发票校验") - private String grBasediv; - - @Schema(description = "允许无限制过量交货(UEBTK)", example = "N") - @ExcelProperty("允许过量交货") - private String unlimitedDlv; - - @Schema(description = "批次(CHARG)", example = "B202405001") - @ExcelProperty("批次") - private String batch; - - @Schema(description = "项目类别(PSTYP),委托加工订单时填入L", example = "L") - @ExcelProperty("项目类别") - private String itemCat; - - @Schema(description = "科目分配类别(KNTTP),固定资产采购:A;服务采购:S-销售服务费/K-成本中心/F-订单", example = "K") - @ExcelProperty("科目分配类别") - private String acctasscat; - - @Schema(description = "物料组(MATKL),服务采购订单必填", example = "01") - @ExcelProperty("物料组") - private String matlGroup; - - @Schema(description = "短文本(TXZ01),服务采购订单必填", example = "设备维修服务") - @ExcelProperty("短文本") - private String shortText; - - @Schema(description = "退货项目标识(RETPO),退货行项目填X", example = "X") - @ExcelProperty("退货标识") - private String retItem; - - @Schema(description = "免费项目标识(UMSON),免费行项目填X", example = "X") - @ExcelProperty("免费标识") - private String freeItem; - - @Schema(description = "外部行项目号(LICHN),绿星链通必填", example = "EXT0010") - @ExcelProperty("外部行号") - private String vendrbatch; - - @Schema(description = "备注信息-需求单位(TDLINE)", example = "生产一部") - @ExcelProperty("需求单位备注") - private String noteXq; - - @Schema(description = "备注信息-物料详细(TDLINE)", example = "304不锈钢,厚度2mm") - @ExcelProperty("物料详细备注") - private String noteWl; - - @Schema(description = "行项目删除标识(ELOEK)", example = "N") - @ExcelProperty("行项目删除标识") - private String itemDeleteInd; // ====================== 4. 行项目扩展字段(列表-itex) ====================== - @Schema(description = "销售物料号(zmatnr),科目分配类别为S时必填", example = "S0010001") - @ExcelProperty("销售物料号") - private String zmatnr; - - @Schema(description = "统计型内部订单(zaufnr)", example = "OR0010001") - @ExcelProperty("统计内部订单") - private String zaufnr; - - @Schema(description = "采购类别(zpurty),0-生产性物资类;1-项目投资类", example = "0") - @ExcelProperty("采购类别") - private String zpurty; - - @Schema(description = "原料湿重(zmenge)", example = "105.500") - @ExcelProperty("原料湿重") - private BigDecimal zmenge; - + private List itexs; // ====================== 5. 科目分配字段(列表-acct,类别为K或P时使用) ====================== - @Schema(description = "科目分配的序号(DZEKKN),从1开始编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "科目分配序号不能为空") - @ExcelProperty("科目分配序号") - private Integer serialNo; - - @Schema(description = "总账科目编号(SAKNR)", example = "1001010000") - @ExcelProperty("总账科目") - private String glAccount; - - @Schema(description = "成本中心(KOSTL),科目分配类别为K或F时必填", example = "C0010001") - @ExcelProperty("成本中心") - private String costcenter; - - @Schema(description = "订单号(AUFNR),科目分配类别为F时必填", example = "OR0010001") - @ExcelProperty("订单号") - private String orderid; - - @Schema(description = "主资产号(ANLN1),科目分配类别为A时必填", example = "AS0010001") - @ExcelProperty("主资产号") - private String assetNo; - - @Schema(description = "资产子编号(ANLN2),科目分配类别为A时必填,固定值‘0’", example = "0") - @ExcelProperty("资产子编号") - private String subNumber; + private JSONArray accts; // ====================== 6. 委托加工物料字段(列表-comp,委托加工订单时使用) ====================== - @Schema(description = "计划行号(ETENR),从1开始编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "计划行号不能为空") - @ExcelProperty("计划行号") - private Integer schedLine; + private List comps; - @Schema(description = "项目编号(RSPOS),从1开始编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "项目编号不能为空") - @ExcelProperty("项目编号") - private Integer itemNo; + @Data + @Schema(description = "ERP采购订单item更新请求VO") + public static class item { + @Schema(description = "行号(EBELP)", requiredMode = Schema.RequiredMode.REQUIRED, example = "00010") + @NotEmpty(message = "行号不能为空") + @ExcelProperty("行号") + private Long po_item; - @Schema(description = "加工前物料号(MATNR)", requiredMode = Schema.RequiredMode.REQUIRED, example = "M0020001") - @NotEmpty(message = "加工前物料号不能为空") - @ExcelProperty("加工前物料号") - private String compMaterial; + @Schema(description = "物料号(MATNR)", example = "M0010001") + @ExcelProperty("物料号") + private String material; - @Schema(description = "委托加工发货工厂(PLANT)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1001") - @NotEmpty(message = "委托加工发货工厂不能为空") - @ExcelProperty("委托发货工厂") - private String compPlant; + @Schema(description = "工厂(WERKS)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1001") + @NotEmpty(message = "工厂不能为空") + @ExcelProperty("工厂") + private String plant; - @Schema(description = "委托加工需求数量(MENGE),保留3位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "95.000") - @NotNull(message = "委托加工需求数量不能为空") - @ExcelProperty("委托需求数量") - private BigDecimal entryQuantity; + @Schema(description = "库存地点(LGORT)", example = "0001") + @ExcelProperty("库存地点") + private String stge_loc; + + @Schema(description = "数量(MENGE),保留3位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.000") + @NotNull(message = "数量不能为空") + @ExcelProperty("数量") + private String quantity; + + @Schema(description = "计量单位(MEINS),必须与该物料基本计量单位一致", requiredMode = Schema.RequiredMode.REQUIRED, example = "PC") + @NotEmpty(message = "计量单位不能为空") + @ExcelProperty("计量单位") + private BigDecimal po_unit; + + @Schema(description = "含税单价(NETPR),保留2位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "199.99") + @NotNull(message = "含税单价不能为空") + @ExcelProperty("含税单价") + private BigDecimal net_price; + + @Schema(description = "价格单位(PEINH),固定值1", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "价格单位不能为空") + @ExcelProperty("价格单位") + private Integer price_unit; + + @Schema(description = "税码(MWSKZ)", example = "J1") + @ExcelProperty("税码") + private String tax_code; + + @Schema(description = "基于GR的发票校验(WEBRE)", example = "Y") + @ExcelProperty("基于GR发票校验") + private String gr_basediv; + + @Schema(description = "允许无限制过量交货(UEBTK)", example = "N") + @ExcelProperty("允许过量交货") + private String unlimited_dlv; + + @Schema(description = "批次(CHARG)", example = "B202405001") + @ExcelProperty("批次") + private String batch; + + @Schema(description = "项目类别(PSTYP),委托加工订单时填入L", example = "L") + @ExcelProperty("项目类别") + private String item_cat; + + @Schema(description = "科目分配类别(KNTTP),固定资产采购:A;服务采购:S-销售服务费/K-成本中心/F-订单", example = "K") + @ExcelProperty("科目分配类别") + private String acctasscat; + + @Schema(description = "物料组(MATKL),服务采购订单必填", example = "01") + @ExcelProperty("物料组") + private String matl_group; + + @Schema(description = "短文本(TXZ01),服务采购订单必填", example = "设备维修服务") + @ExcelProperty("短文本") + private String short_text; + + @Schema(description = "退货项目标识(RETPO),退货行项目填X", example = "X") + @ExcelProperty("退货标识") + private String ret_item; + + @Schema(description = "免费项目标识(UMSON),免费行项目填X", example = "X") + @ExcelProperty("免费标识") + private String free_item; + + @Schema(description = "外部行项目号(LICHN),绿星链通必填", example = "EXT0010") + @ExcelProperty("外部行号") + private String vendrbatch; + + @Schema(description = "备注信息-需求单位(TDLINE)", example = "生产一部") + @ExcelProperty("需求单位备注") + private String note_xq; + + @Schema(description = "备注信息-物料详细(TDLINE)", example = "304不锈钢,厚度2mm") + @ExcelProperty("物料详细备注") + private String note_wl; + + @Schema(description = "行项目删除标识(ELOEK)", example = "N") + @ExcelProperty("行项目删除标识") + private Integer delete_ind; + } + + @Data + public static class itex { + @Schema(description = "行号(EBELP)", requiredMode = Schema.RequiredMode.REQUIRED, example = "00010") + @NotEmpty(message = "行号不能为空") + @ExcelProperty("行号") + private Long po_item; + @Schema(description = "销售物料号(zmatnr),科目分配类别为S时必填", example = "S0010001") + @ExcelProperty("销售物料号") + private BigDecimal zmatnr; + + @Schema(description = "统计型内部订单(zaufnr)", example = "OR0010001") + @ExcelProperty("统计内部订单") + private String zaufnr; + + @Schema(description = "采购类别(zpurty),0-生产性物资类;1-项目投资类", example = "0") + @ExcelProperty("采购类别") + private String zpurty; + + @Schema(description = "原料湿重(zmenge)", example = "105.500") + @ExcelProperty("原料湿重") + private BigDecimal zmenge; + + } +// +// @Data +// public static class acct { +// @Schema(description = "行号(EBELP)", requiredMode = Schema.RequiredMode.REQUIRED, example = "00010") +// @NotEmpty(message = "行号不能为空") +// @ExcelProperty("行号") +// private String poItem; +// @Schema(description = "科目分配的序号(DZEKKN),从1开始编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") +// @NotNull(message = "科目分配序号不能为空") +// @ExcelProperty("科目分配序号") +// private Integer serialNo; +// +// @Schema(description = "总账科目编号(SAKNR)", example = "1001010000") +// @ExcelProperty("总账科目") +// private String glAccount; +// +// @Schema(description = "成本中心(KOSTL),科目分配类别为K或F时必填", example = "C0010001") +// @ExcelProperty("成本中心") +// private String costcenter; +// +// @Schema(description = "订单号(AUFNR),科目分配类别为F时必填", example = "OR0010001") +// @ExcelProperty("订单号") +// private String orderid; +// +// @Schema(description = "主资产号(ANLN1),科目分配类别为A时必填", example = "AS0010001") +// @ExcelProperty("主资产号") +// private String assetNo; +// +// @Schema(description = "资产子编号(ANLN2),科目分配类别为A时必填,固定值‘0’", example = "0") +// @ExcelProperty("资产子编号") +// private String subNumber; +// } + + @Data + public static class comp { + @Schema(description = "计划行号(ETENR),从1开始编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "计划行号不能为空") + @ExcelProperty("计划行号") + private Integer sched_line; + + @Schema(description = "项目编号(RSPOS),从1开始编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "项目编号不能为空") + @ExcelProperty("项目编号") + private Integer item_no; + + @Schema(description = "加工前物料号(MATNR)", requiredMode = Schema.RequiredMode.REQUIRED, example = "M0020001") + @NotEmpty(message = "加工前物料号不能为空") + @ExcelProperty("加工前物料号") + private String comp_material; + + @Schema(description = "委托加工发货工厂(PLANT)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1001") + @NotEmpty(message = "委托加工发货工厂不能为空") + @ExcelProperty("委托发货工厂") + private String comp_plant; + + @Schema(description = "委托加工需求数量(MENGE),保留3位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "95.000") + @NotNull(message = "委托加工需求数量不能为空") + @ExcelProperty("委托需求数量") + private BigDecimal entry_quantity; + + @Schema(description = "组件计量单位(MEINS),为空使用基本计量单位", example = "PC") + @ExcelProperty("组件计量单位") + private String entry_uom; + } - @Schema(description = "组件计量单位(MEINS),为空使用基本计量单位", example = "PC") - @ExcelProperty("组件计量单位") - private String entryUom; } diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpOrderService.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpOrderService.java index 2ff59bd8..06cfcff6 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpOrderService.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpOrderService.java @@ -2,8 +2,11 @@ package com.zt.plat.module.erp.service.erp; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBillMainSaveReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderSaveReqVO; +import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderUpdateReqVO; public interface ErpOrderService { - String submitOrderToErp(ErpOrderSaveReqVO createVo); + String submitOrderToErp061(ErpOrderSaveReqVO createVo); + + String submitOrderToErp062(ErpOrderUpdateReqVO createVo); } 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 2dd9d238..0310f902 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 @@ -6,6 +6,7 @@ import com.zt.plat.module.erp.api.ErpExternalApi; import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBillMainSaveReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderSaveReqVO; +import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderUpdateReqVO; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; @@ -13,12 +14,14 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; + @Service public class ErpOrderServiceImpl implements ErpOrderService { @Resource public ErpExternalApi erpExternalApi; + @Override - public String submitOrderToErp(ErpOrderSaveReqVO createVo) { + public String submitOrderToErp061(ErpOrderSaveReqVO createVo) { ErpSubmitReqDTO reqDTO = buildBaseReqDTO(createVo, "061"); @@ -61,6 +64,7 @@ public class ErpOrderServiceImpl implements ErpOrderService { HashMap response = erpExternalApi.submitDataToErp(reqDTO); return response.get("resStr"); } + private void getMaps(ErpOrderSaveReqVO vo, Map req) { List> items = new ArrayList<>(); Map item = new HashMap<>(); @@ -87,9 +91,44 @@ public class ErpOrderServiceImpl implements ErpOrderService { item.put("note_wl", vo.getNoteWl()); item.put("vend_mat", vo.getVendMat()); items.add(item); - if ("K".equals(vo.getAcctassCat())||"P".equals(vo.getAcctassCat())){ + if ("K".equals(vo.getAcctassCat()) || "P".equals(vo.getAcctassCat())) { req.put("acct", vo.getActsCtgrDtl()); } req.put("item", items); } + + @Override + public String submitOrderToErp062(ErpOrderUpdateReqVO updateVo) { + ErpSubmitReqDTO reqDTO = buildBaseReqDTO062(updateVo, "062"); + Map req = new HashMap<>(); + Map head = new HashMap<>(); + Map exte= new HashMap<>(); + head.put("po_number", updateVo.getPoNumber()); + head.put("delete_ind", updateVo.getDeleteInd()); + head.put("currency", updateVo.getCurrency()); + head.put("exch_rate", updateVo.getExchRate()); + req.put("head", head); + exte.put("zzhth", updateVo.getZzhth()); + exte.put("zzxyh", updateVo.getZzhth()); + exte.put("zznote", updateVo.getZnote()); + exte.put("zzlifnr", updateVo.getZlifnr()); + req.put("exte", exte); + req.put("itex", updateVo.getItexs()); + req.put("item", updateVo.getItems()); + req.put("acct", updateVo.getAccts()); + req.put("comp", updateVo.getComps()); + reqDTO.setReq(req); + + + return submitToErp(reqDTO); + } + + private ErpSubmitReqDTO buildBaseReqDTO062(ErpOrderUpdateReqVO vo, String funcnr) { + ErpSubmitReqDTO reqDTO = new ErpSubmitReqDTO(); + reqDTO.setFuncnr(funcnr); + reqDTO.setBskey(vo.getPoNumber()); + reqDTO.setUsrid(String.valueOf(SecurityFrameworkUtils.getLoginUserId())); + reqDTO.setUsrnm((SecurityFrameworkUtils.getLoginUserNickname())); + return reqDTO; + } } From adc11f9a506f1c0825d09bf4b60e656d5f8a3e54 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: Tue, 14 Oct 2025 17:56:35 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/mapper/purchaseorder/PurchaseOrderMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/resources/mapper/purchaseorder/PurchaseOrderMapper.xml b/zt-module-contract-order/zt-module-contract-order-server/src/main/resources/mapper/purchaseorder/PurchaseOrderMapper.xml index 419e80c7..82ba488f 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/resources/mapper/purchaseorder/PurchaseOrderMapper.xml +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/resources/mapper/purchaseorder/PurchaseOrderMapper.xml @@ -211,7 +211,7 @@ pod.ELEM_CDG FROM BSE_PRCH_ORD po LEFT JOIN BSE_PRCH_ORD_DTL pod ON po.ID = pod.ORD_ID - WHERE po.ORD_SAP_NUM IN + WHERE po.sys_ord_num IN #{orderNumber} From a9a0f04da717593c9a26c1f34e556a8c4a4dcb48 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Tue, 14 Oct 2025 18:00:39 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E6=8F=90=E4=BA=A4erp=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contractorder/service/contract/ContractServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 54576a6d..ffdfd65a 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 @@ -1157,7 +1157,7 @@ public class ContractServiceImpl implements ContractService { // 调用ERP模块 String erpResult = null; try { - erpContractService.submitErp(erpContractVO); + erpResult = erpContractService.submitErp(erpContractVO); } catch (Exception e) { erpResult = e.getMessage(); }