From 0e7bea0e4de8c670508998ea8757dbbc6a7e6eb6 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Mon, 13 Oct 2025 11:42:42 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=BC=82=E5=B8=B8=E6=8A=9B=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/erp/enums/ErrorCodeConstants.java | 1 + .../admin/erp/ErpCompanyController.java | 8 ++++++- .../erp/service/erp/ErpCompanyService.java | 2 ++ .../service/erp/ErpCompanyServiceImpl.java | 19 +++++++++++++-- .../plat/module/erp/utils/MyRedisConfig.java | 23 ++++++++----------- 5 files changed, 36 insertions(+), 17 deletions(-) diff --git a/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/enums/ErrorCodeConstants.java b/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/enums/ErrorCodeConstants.java index 9c7b04f..b11bfe6 100644 --- a/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/enums/ErrorCodeConstants.java +++ b/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/enums/ErrorCodeConstants.java @@ -9,6 +9,7 @@ public interface ErrorCodeConstants { ErrorCode ERP_NOT_EXISTS = new ErrorCode(1_000_000_001, "获取ERP数据为空"); ErrorCode ERP_NOT_JSON_EXISTS = new ErrorCode(1_000_000_002, "ERP接口响应无法解析为JSON"); ErrorCode ERP_ERROR_EXISTS = new ErrorCode(1_000_000_003, "调用ERP RFC接口失败"); + ErrorCode ERP_REDIS_EXISTS = new ErrorCode(1_000_000_004, "公司调用缓存失败"); ErrorCode ERP_CUSTOMER_NOT_EXISTS = new ErrorCode(1_001_000_001, "ERP客商主数据不存在"); diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCompanyController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCompanyController.java index de38264..197ca70 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCompanyController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCompanyController.java @@ -109,6 +109,12 @@ public class ErpCompanyController { return success(true); } - + @PostMapping("/test") + @Operation(summary = "定时获得erp更新公司") + @PreAuthorize("@ss.hasPermission('sply:erp-company:create')") + public CommonResult test() { + erpCompanyService.test(); + return success(true); + } } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyService.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyService.java index 2dd2cee..f995f12 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyService.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyService.java @@ -70,4 +70,6 @@ public interface ErpCompanyService { * @return ERP公司 */ ErpCompanyDO getErpCompanyByNumber(String number); + + void test(); } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyServiceImpl.java index 464b7d6..0229735 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyServiceImpl.java @@ -131,8 +131,9 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { saveData(result); } catch (Exception e) { - log.error("调用ERP RFC接口失败: {}", e); - throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); +// log.error("调用ERP RFC接口失败: {}", e); + throw e; +// throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); } } @@ -235,4 +236,18 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { myRedisConfig.addRedisCacheMap(key, existingNumbers); } + @Override + public void test() { + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.公司代码; + String funcnr = funcnrEnum.getFuncnr(); + //防止缓存数据丢失 + String key = "erpMap" + funcnrEnum.getFuncnr(); + myRedisConfig.getRedisCacheMap(key); + // 1. 调用ERP接口获取数据 + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, null); + JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); + if (CollUtil.isEmpty(dataArray)) { + throw exception(ERP_COMPANY_NOT_EXISTS); + } + } } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/utils/MyRedisConfig.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/utils/MyRedisConfig.java index e7fb2b7..17f5522 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/utils/MyRedisConfig.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/utils/MyRedisConfig.java @@ -20,6 +20,8 @@ import org.springframework.data.redis.serializer.StringRedisSerializer; import java.util.*; import java.util.stream.Collectors; +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.erp.enums.ErrorCodeConstants.*; import static dm.jdbc.util.DriverUtil.log; @@ -72,8 +74,6 @@ public class MyRedisConfig { } - - //list public Map> numbers(JSONArray dataArray, String key, String dataKey) { // 使用 Redis 获取缓存数据 @@ -152,9 +152,13 @@ public class MyRedisConfig { //map public Map getRedisCacheMap(String key) { - // 使用 Redis 获取缓存数据 - Map result = (Map) redisTemplate.opsForHash().entries(key); - return result; + try { + // 使用 Redis 获取缓存数据 + Map result = (Map) redisTemplate.opsForHash().entries(key); + return result; + } catch (Exception e) { + throw exception(ERP_REDIS_EXISTS); + } } public void addRedisCacheMap(String key, Map allnumbers) { @@ -179,13 +183,4 @@ public class MyRedisConfig { } - - - - - - - - - } \ No newline at end of file From b8be2bce92eac236a48a8762687e7f55145585a6 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Mon, 13 Oct 2025 11:52:45 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BC=98=E5=8C=96erp=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E6=8A=9B=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/zt/plat/module/erp/utils/ErpConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/utils/ErpConfig.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/utils/ErpConfig.java index 2548206..7b3b8f4 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/utils/ErpConfig.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/utils/ErpConfig.java @@ -87,7 +87,7 @@ public class ErpConfig { } } catch (Exception e) { log.error("调用ERP RFC接口失败: {}", e); - throw exception(ERP_ERROR_EXISTS); + throw exception(ERP_ERROR_EXISTS, e); } } From 83a11132b7058195c5ccaac81a5eb2fe1bfe3e39 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Mon, 13 Oct 2025 14:56:16 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=90=88=E5=90=8C=E6=8F=90=E4=BA=A4erp?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E7=BC=96=E5=86=99=20=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E5=90=88=E5=90=8C=E7=BC=96=E5=8F=B7=E8=8E=B7=E5=8F=96=E5=AF=B9?= =?UTF-8?q?=E5=BA=94=E7=9A=84=E7=BB=93=E7=AE=97=E6=9D=A1=E6=AC=BE=E6=95=B0?= =?UTF-8?q?=E6=8D=AEfeign=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E9=80=9A=E8=BF=87=E5=90=88=E5=90=8C=E7=BC=96=E5=8F=B7=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E5=AF=B9=E5=BA=94=E7=9A=84=E5=90=88=E5=90=8C=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/contractorder/api/ContractApi.java | 11 +- .../CoefficientRespDTO.java} | 4 +- .../api/dto/contract/ContractRespDTO.java | 238 ++++++++++++++++++ .../DeductRespDTO.java} | 4 +- .../api/dto/contract/DemoteRespDTO.java | 51 ++++ .../api/dto/contract/DetailRespDTO.java | 41 +++ .../FormulaRespDTO.java} | 12 +- .../GradeRespDTO.java} | 4 +- .../api/dto/contract/NotRespDTO.java | 51 ++++ .../api/dto/contract/PlanRespDTO.java | 28 +++ .../PriceRespDTO.java} | 4 +- .../enums/contract/DictEnum.java | 23 +- .../contractorder/api/ContractApiImpl.java | 6 +- .../service/contract/ContractService.java | 6 +- .../service/contract/ContractServiceImpl.java | 118 +++++++-- .../erp/service/erp/ErpContractService.java | 8 + .../service/erp/ErpContractServiceImpl.java | 15 +- 17 files changed, 553 insertions(+), 71 deletions(-) rename zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/{ContractCoefficientRespDTO.java => contract/CoefficientRespDTO.java} (91%) create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java rename zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/{ContractDeductRespDTO.java => contract/DeductRespDTO.java} (88%) create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DemoteRespDTO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DetailRespDTO.java rename zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/{ContractFormulaRespDTO.java => contract/FormulaRespDTO.java} (81%) rename zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/{ContractGradeRespDTO.java => contract/GradeRespDTO.java} (94%) create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/NotRespDTO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/PlanRespDTO.java rename zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/{ContractPriceRespDTO.java => contract/PriceRespDTO.java} (93%) diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/ContractApi.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/ContractApi.java index 728092c..ee91eac 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/ContractApi.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/ContractApi.java @@ -2,7 +2,7 @@ package com.zt.plat.module.contractorder.api; import com.zt.plat.framework.common.pojo.CommonResult; -import com.zt.plat.module.contractorder.api.dto.ContractFormulaRespDTO; +import com.zt.plat.module.contractorder.api.dto.contract.ContractRespDTO; import com.zt.plat.module.contractorder.enums.ApiConstants; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -10,16 +10,15 @@ import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; -import java.util.List; - @FeignClient(name = ApiConstants.NAME) @Tag(name = "RPC 服务 - 合同") public interface ContractApi { String PREFIX = ApiConstants.PREFIX + "/contract"; - @GetMapping(PREFIX + "/formulas") - @Operation(summary = "通过合同编号获取对应的结算条款数据") - List getFormulas(@RequestParam("contractPaperNumber") String contractPaperNumber); + @GetMapping(PREFIX + "/get/by-paper-number") + @Operation(summary = "通过合同编号获取对应的合同信息") + ContractRespDTO getContractByPaperNumber(@RequestParam("contractPaperNumber") String contractPaperNumber); + @GetMapping(PREFIX + "/updateOrderStatus") @Operation(summary = "更新订单状态") CommonResult updateOrderStatus(@RequestParam("orderId") Long orderId, @RequestParam("status") String status); diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractCoefficientRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/CoefficientRespDTO.java similarity index 91% rename from zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractCoefficientRespDTO.java rename to zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/CoefficientRespDTO.java index 39ab702..89d4fd1 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractCoefficientRespDTO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/CoefficientRespDTO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.contractorder.api.dto; +package com.zt.plat.module.contractorder.api.dto.contract; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -7,7 +7,7 @@ import java.math.BigDecimal; @Schema(description = "RPC 服务 - 基础系数配置 Response DTO") @Data -public class ContractCoefficientRespDTO { +public class CoefficientRespDTO { @Schema(description = "主键") private Long id; diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java new file mode 100644 index 0000000..0025dc1 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java @@ -0,0 +1,238 @@ +package com.zt.plat.module.contractorder.api.dto.contract; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Schema(description = "管理后台 - 合同详情 Response VO") +@Data +public class ContractRespDTO { + + @Schema(description = "主键") + private Long id; + + @Schema(description = "模板实例主键") + private Long instanceId; + + @Schema(description = "系统合同编号;自动生成,校验唯一") + private String systemContractNumber; + + @Schema(description = "状态") + private String status; + + @Schema(description = "合同名称;与ERP(HTMC)对应,校验唯一") + private String contractName; + + @Schema(description = "合同编号;与ERP(HTBH)对应,校验唯一") + private String contractPaperNumber; + + @Schema(description = "是否虚拟合同;与ERP(SFXNHT)对应") + private String contractVirtual; + + @Schema(description = "是否先款后货") + private String hasPayable; + + @Schema(description = "收支性质;与ERP(SZXZ)对应") + private String direction; + + @Schema(description = "合同类型") + private String contractType; + + @Schema(description = "签署日期;与ERP(HTQDRQ)对应") + private LocalDateTime signDate; + + @Schema(description = "开始日期;与ERP(HTQSRQ)对应") + private LocalDateTime startDate; + + @Schema(description = "结束日期;与ERP(HTZZRQ)对应") + private LocalDateTime endDate; + + @Schema(description = "签署地") + private String signPlace; + + @Schema(description = "甲方公司编号;如果是采购合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是销售合同,手动选择,且与ERP(WLDWBH)对应。") + private String purchaseCompanyNumber; + + @Schema(description = "甲方公司名称") + private String purchaseCompanyName; + + @Schema(description = "甲方地址") + private String purchaseAddress; + + @Schema(description = "甲方法定代表人") + private String purchaseLeader; + + @Schema(description = "乙方公司编号;如果是销售合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是采购合同,手动选择,且与ERP(WLDWBH)对应。") + private String salesCompanyNumber; + + @Schema(description = "乙方公司名称") + private String salesCompanyName; + + @Schema(description = "乙方地址") + private String salesAddress; + + @Schema(description = "乙方企业负责人") + private String salesPurchaseLeader; + + @Schema(description = "币种;与ERP(BZBH)对应") + private String currency; + + @Schema(description = "原币金额;与ERP(HTYBZJE)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") + private BigDecimal cooAmount; + + @Schema(description = "本币金额;与ERP(HTBWBZJE)对应") + private BigDecimal basicAmount; + + @Schema(description = "是否有履约保证金;为是,则保证金必填。") + private String hasDeposit; + + @Schema(description = "原币履约保证金;与ERP(LYBZJBGQYB)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") + private BigDecimal cooAmountDeposit; + + @Schema(description = "本币履约保证金;与ERP(LYBZJBGQBWB)对应") + private BigDecimal basicAmountDeposit; + + @Schema(description = "是否有预付款;与ERP(SFYYFK)对应") + private String hasPrepayment; + + @Schema(description = "预付款比例;与ERP(YFKBL)对应") + private BigDecimal prepaymentRatio; + + @Schema(description = "预付款金额;与ERP(YFKJE)对应") + private BigDecimal prepaymentAmount; + + @Schema(description = "是否有质保金;与ERP(SFHZBJ)对应") + private String hasQualityAmount; + + @Schema(description = "质保金比例;与ERP(ZBJBL)对应") + private BigDecimal qualityRatio; + + @Schema(description = "质保金金额;与ERP(BZJJE)对应") + private BigDecimal qualityAmount; + + @Schema(description = "补充协议类型;变更协议/增加条款") + private String replenishAgreementType; + + @Schema(description = "备注;与ERP(BZXX)对应") + private String remark; + + @Schema(description = "施工类型编号;与ERP(HTLXBH)对应,拓展信息") + private String constructionTypeNumber; + + @Schema(description = "施工类型名称;与ERP(HTLXMC)对应,拓展信息") + private String constructionTypeName; + + @Schema(description = "代理方;与ERP(ZLIFNR)对应,拓展信息") + private String agent; + + @Schema(description = "类别;与ERP(HTLB)对应,拓展信息") + private String category; + + @Schema(description = "原币金额-变更后;与ERP(BGHHTYBZJE)对应,拓展信息") + private BigDecimal changeCooAmount; + + @Schema(description = "本币金额-变更后;与ERP(BGHHTBWBZJE)对应,拓展信息") + private BigDecimal changeBasicAmount; + + @Schema(description = "原币履约保证金-变更后;与ERP(LYBZJBGHYB)对应,拓展信息") + private BigDecimal changeCooAmountDeposit; + + @Schema(description = "本币履约保证金-变更后;与ERP(LYBZJBGHBWB)对应,拓展信息") + private BigDecimal changeBasicAmountDeposit; + + @Schema(description = "是否框架合同;与ERP(SFKJHT)对应,拓展信息") + private String isFramework; + + @Schema(description = "境内/境外;与ERP(JNJW)对应,拓展信息") + private String isDomestic; + + @Schema(description = "建筑服务发生地;与ERP(JZFWFSD)对应,拓展信息,销售合同,且类型为SAP02COSR必填") + private String architectureServicePlace; + + @Schema(description = "达到收款条件金额;与ERP(DDSKJE)对应,拓展信息,销售合同,且类型为SAP02COSR必填") + private BigDecimal payeeConditionAmount; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "步骤") + private Integer step; + + @Schema(description = "ERP请求状态") + private String erpStatus; + + @Schema(description = "ERP请求失败原因") + private String cause; + + @Schema(description = "流程实例编号") + private String processInstanceId; + + @Schema(description = "审批意见") + private String reviewOpinion; + + @Schema(description = "任务节点主键") + private String taskNodeId; + + @Schema(description = "模板附件对象存储") + private String fileObject; + + @Schema(description = "其它附件对象存储") + private String fileObjectOther; + + @Schema(description = "交货地点") + private String deliveryAddress; + + @Schema(description = "交货方式(字典:FRCST_ASN)") + private String deliveryWay; + + @Schema(description = "甲方联系人") + private String purchaseHuman; + + @Schema(description = "甲方电话") + private String purchaseTel; + + @Schema(description = "甲方邮箱") + private String purchaseEmail; + + @Schema(description = "甲方传真") + private String purchaseFax; + + @Schema(description = "甲方联系地址") + private String purchaseContactAddress; + + @Schema(description = "乙方联系人") + private String salesHuman; + + @Schema(description = "乙方电话") + private String salesTel; + + @Schema(description = "乙方邮箱") + private String salesEmail; + + @Schema(description = "乙方传真") + private String salesFax; + + @Schema(description = "乙方联系地址") + private String salesContactAddress; + + // 物料信息 + private List detail; + + // 合同动态表单 + // private List dynamicsFields; + + // 合同动态条款 + // private List dynamicsItems; + + // 价款结算条款 + private List formulas; + + // 参数降级规则 + private List demotes; + + // 品位不计价规则 + private List nots; +} diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractDeductRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DeductRespDTO.java similarity index 88% rename from zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractDeductRespDTO.java rename to zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DeductRespDTO.java index ea3409f..27ef2e2 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractDeductRespDTO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DeductRespDTO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.contractorder.api.dto; +package com.zt.plat.module.contractorder.api.dto.contract; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -8,7 +8,7 @@ import java.time.LocalDateTime; @Schema(description = "RPC 服务 - 调整价配置 Response DTO") @Data -public class ContractDeductRespDTO { +public class DeductRespDTO { @Schema(description = "主键") private Long id; diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DemoteRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DemoteRespDTO.java new file mode 100644 index 0000000..0cc5672 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DemoteRespDTO.java @@ -0,0 +1,51 @@ +package com.zt.plat.module.contractorder.api.dto.contract; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 参数降级规则 Response VO") +@Data +public class DemoteRespDTO { + + @Schema(description = "主键") + private Long id; + + @Schema(description = "合同主键") + private Long contractId; + + @Schema(description = "金属元素编码") + private String elementNumber; + + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + + @Schema(description = "金属元素名称") + private String elementName; + + @Schema(description = "上限") + private BigDecimal gradeUp; + + @Schema(description = "区间方式(字典:STLM_RNG_WY)") + private String rangeWay; + + @Schema(description = "下限") + private BigDecimal gradeDown; + + @Schema(description = "降级后物料名称") + private String materialName; + + @Schema(description = "降级后物料编码") + private String materialNumber; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "合同名称") + private String contractName; + + @Schema(description = "合同编码") + private String contractPaperNumber; +} diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DetailRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DetailRespDTO.java new file mode 100644 index 0000000..905d564 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DetailRespDTO.java @@ -0,0 +1,41 @@ +package com.zt.plat.module.contractorder.api.dto.contract; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Schema(description = "管理后台 - 合同明细 Response VO") +@Data +public class DetailRespDTO { + @Schema(description = "主键") + private Long id; + + @Schema(description = "物料名称") + private String materialName; + + @Schema(description = "物料编码") + private String materialNumber; + + @Schema(description = "数量") + private BigDecimal quantity; + + @Schema(description = "计量单位") + private String unit; + + @Schema(description = "含税单价") + private BigDecimal inTaxUnitPrice; + + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + + @Schema(description = "金属元素名称") + private String elementName; + + @Schema(description = "金属元素编码") + private String elementNumber; + + // 交货计划 + private List plans; +} diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractFormulaRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/FormulaRespDTO.java similarity index 81% rename from zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractFormulaRespDTO.java rename to zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/FormulaRespDTO.java index 1d47fa1..87c4faf 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractFormulaRespDTO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/FormulaRespDTO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.contractorder.api.dto; +package com.zt.plat.module.contractorder.api.dto.contract; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -7,7 +7,7 @@ import java.util.List; @Schema(description = "RPC 服务 - 价款结算条款 Response DTO") @Data -public class ContractFormulaRespDTO { +public class FormulaRespDTO { @Schema(description = "主键") private Long id; @@ -46,11 +46,11 @@ public class ContractFormulaRespDTO { private String settlementType; // 基础系数配置 - private List coefficients; + private List coefficients; // 品位等级价配置 - private List grades; + private List grades; // 调整价配置 - private List deducts; + private List deducts; // 市场价配置 - private List prices; + private List prices; } diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractGradeRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/GradeRespDTO.java similarity index 94% rename from zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractGradeRespDTO.java rename to zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/GradeRespDTO.java index c54efa8..c481294 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractGradeRespDTO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/GradeRespDTO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.contractorder.api.dto; +package com.zt.plat.module.contractorder.api.dto.contract; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -8,7 +8,7 @@ import java.time.LocalDateTime; @Schema(description = "RPC 服务 - 品位等级价配置 Response DTO") @Data -public class ContractGradeRespDTO { +public class GradeRespDTO { @Schema(description = "主键") private Long id; diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/NotRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/NotRespDTO.java new file mode 100644 index 0000000..b9004ef --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/NotRespDTO.java @@ -0,0 +1,51 @@ +package com.zt.plat.module.contractorder.api.dto.contract; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 品位不计价规则 Response VO") +@Data +public class NotRespDTO { + + @Schema(description = "主键") + private Long id; + + @Schema(description = "合同主键") + private Long contractId; + + @Schema(description = "金属元素编码") + private String elementNumber; + + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + + @Schema(description = "金属元素名称") + private String elementName; + + @Schema(description = "上限") + private BigDecimal gradeUp; + + @Schema(description = "下限") + private BigDecimal gradeDown; + + @Schema(description = "区间方式(字典:STLM_RNG_WY)") + private String rangeWay; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "物料名称") + private String materialName; + + @Schema(description = "物料编码") + private String materialNumber; + + @Schema(description = "合同名称") + private String contractName; + + @Schema(description = "合同编码") + private String contractPaperNumber; +} \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/PlanRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/PlanRespDTO.java new file mode 100644 index 0000000..88f70fd --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/PlanRespDTO.java @@ -0,0 +1,28 @@ +package com.zt.plat.module.contractorder.api.dto.contract; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 交货计划 Response VO") +@Data +public class PlanRespDTO { + @Schema(description = "主键") + private Long id; + + @Schema(description = "交货年份") + private Long contractDeliveryYear; + + @Schema(description = "交货月份") + private Long contractPlanDeliveryMonth; + + @Schema(description = "计划交货数量") + private BigDecimal contractPlanDeliveryQuantity; + + @Schema(description = "交货开始日期") + private String contractDeliveryStartDate; + + @Schema(description = "交货结束日期") + private String contractDeliveryEndDate; +} diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractPriceRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/PriceRespDTO.java similarity index 93% rename from zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractPriceRespDTO.java rename to zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/PriceRespDTO.java index 98cc044..d54989d 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/ContractPriceRespDTO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/PriceRespDTO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.contractorder.api.dto; +package com.zt.plat.module.contractorder.api.dto.contract; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -8,7 +8,7 @@ import java.time.LocalDateTime; @Schema(description = "RPC 服务 - 市场价配置 Response DTO") @Data -public class ContractPriceRespDTO { +public class PriceRespDTO { @Schema(description = "主键") private Long id; 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 622ba09..5aeeeb3 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 @@ -5,38 +5,31 @@ package com.zt.plat.module.contractorder.enums.contract; */ public enum DictEnum { + /** 提交ERP合同状态 */ + SUBMIT_ERP_CTRT_STS_EF("正在执行","EF","其它所有状态"), + SUBMIT_ERP_CTRT_STS_BFZT("部分暂停","BFZT",null), + SUBMIT_ERP_CTRT_STS_QBZT("全部暂停","QBZT",null), + SUBMIT_ERP_CTRT_STS_HHZZ("合同中止","HHZZ",null), + SUBMIT_ERP_CTRT_STS_CA("作废","CA","对应合同中的“已作废”"), + SUBMIT_ERP_CTRT_STS_HTZZ("合同终止","HTZZ",null), + SUBMIT_ERP_CTRT_STS_ZXWB("执行完毕","ZXWB","对应合同中的“已完结”"), /** ERP收支方向 */ - // 支出 ERP_RCV_DLVY_EXPENSES("支出","2","对应采购"), - // 收入 ERP_RCV_DLVY_INCOME("收入","1","对应销售"), /** ERP是否 */ - // 是 ERP_CTRT_YN_YES("是","1",null), - // 否 ERP_CTRT_YN_NO("否","0",null), /** 合同状态 */ - // 草稿 BSE_CTRT_STS_DRAFT("草稿","DRAFT","可以删除"), - // 正在审核 BSE_CTRT_STS_UNDER_REVIEW("正在审核","UNDER_REVIEW","不允许任何操作"), - // 已驳回 BSE_CTRT_STS_REJECTED("已驳回","REJECTED","可以删除"), - // 待推送 BSE_CTRT_STS_WAIT_PUSH("待推送","WAIT_PUSH",null), - // 推送失败 BSE_CTRT_STS_PUSH_ERROR("推送失败","PUSH_ERROR",null), - // 执行中 BSE_CTRT_STS_IN_PROGRESS("执行中","IN_PROGRESS","可以终止、归档"), - // 已删除 BSE_CTRT_STS_DELETED("已删除","DELETED","不允许任何操作"), - // 已归档 BSE_CTRT_STS_ARCHIVED("已归档","ARCHIVED","不允许任何操作"), - // 已完结 BSE_CTRT_STS_TERMINATED("已完结","TERMINATED","只允许归档"), - // 待审核 BSE_CTRT_STS_WAIT_AUDIT("待审核","WAIT_AUDIT",null), - // 已作废 BSE_CTRT_STS_VOID("已作废","VOID",null); diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/ContractApiImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/ContractApiImpl.java index 78d7878..b6fbd25 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/ContractApiImpl.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/ContractApiImpl.java @@ -1,7 +1,7 @@ package com.zt.plat.module.contractorder.api; import com.zt.plat.framework.common.pojo.CommonResult; -import com.zt.plat.module.contractorder.api.dto.ContractFormulaRespDTO; +import com.zt.plat.module.contractorder.api.dto.contract.ContractRespDTO; import com.zt.plat.module.contractorder.service.contract.ContractService; import com.zt.plat.module.contractorder.service.purchaseorder.PurchaseOrderService; import jakarta.annotation.Resource; @@ -9,8 +9,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RestController; -import java.util.List; - import static com.zt.plat.framework.common.pojo.CommonResult.success; @RestController @@ -24,7 +22,7 @@ public class ContractApiImpl implements ContractApi { private PurchaseOrderService purchaseOrderService; @Override - public List getFormulas(String contractPaperNumber) { + public ContractRespDTO getContractByPaperNumber(String contractPaperNumber) { return contractService.getFormulasByPaperNumber(contractPaperNumber); } 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 233fa9b..7df8cf5 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,7 +1,7 @@ package com.zt.plat.module.contractorder.service.contract; import com.zt.plat.framework.common.pojo.PageResult; -import com.zt.plat.module.contractorder.api.dto.ContractFormulaRespDTO; +import com.zt.plat.module.contractorder.api.dto.contract.ContractRespDTO; import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*; import com.zt.plat.module.contractorder.dal.dataobject.contract.ContractMainDO; import jakarta.validation.Valid; @@ -88,12 +88,12 @@ public interface ContractService { List getFormulas(FormulasQueryReqVO queryReqVO); /** - * 通过合同编号获取对应的结算条款数据 + * 通过合同编号获取对应的合同信息 * * @param contractPaperNumber 合同编号 * @return 结算条款数据 */ - List getFormulasByPaperNumber(String contractPaperNumber); + ContractRespDTO getFormulasByPaperNumber(String contractPaperNumber); /** * 提交ERP 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 593493e..868d3bd 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 @@ -17,7 +17,7 @@ import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi; import com.zt.plat.module.bpm.api.task.BpmTaskApi; 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.contractorder.api.dto.*; +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.*; @@ -26,8 +26,10 @@ 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.contract.DictEnum; +import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractPageReqVO; import com.zt.plat.module.erp.dal.dataobject.erp.ErpContractDO; import com.zt.plat.module.erp.service.erp.ErpCompanyService; +import com.zt.plat.module.erp.service.erp.ErpContractService; import com.zt.plat.module.system.api.user.AdminUserApi; import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO; import jakarta.annotation.Resource; @@ -90,6 +92,8 @@ public class ContractServiceImpl implements ContractService { private ContractDemoteMapper contractDemoteMapper; @Resource private ErpCompanyService erpCompanyService; + @Resource + private ErpContractService erpContractService; @Override public PageResult getContractPage(ContractPageReqVO pageReqVO) { @@ -736,7 +740,7 @@ public class ContractServiceImpl implements ContractService { } @Override - public List getFormulasByPaperNumber(String contractPaperNumber) { + public ContractRespDTO getFormulasByPaperNumber(String contractPaperNumber) { // 通过合同编号查询合同信息 ContractMainDO contractMainDO = contractMainMapper @@ -750,43 +754,76 @@ public class ContractServiceImpl implements ContractService { // 合同ID Long contractId = contractMainDO.getId(); + // 返回结果 + ContractRespDTO respDTO = new ContractRespDTO(); + BeanUtils.copyProperties(contractMainDO, respDTO); + + // 查询并设置合同明细 + List detailDOS = contractDetailMapper + .selectList(TableFieldConstants.BSE_CTRT_DTL_CTRT_MAIN_ID, contractMainDO.getId()); + if (detailDOS != null && !detailDOS.isEmpty()) { + respDTO.setDetail(BeanUtils.toBean(detailDOS, DetailRespDTO.class)); + respDTO.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, PlanRespDTO.class)); + } + }); + } + // 查询并设置价款结算条款 - List formulas = new ArrayList<>(); List formulaDOS = contractFormulaMapper .selectList(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, contractId); if (formulaDOS != null && !formulaDOS.isEmpty()) { - formulas = BeanUtils.toBean(formulaDOS, ContractFormulaRespDTO.class); + respDTO.setFormulas(BeanUtils.toBean(formulaDOS, FormulaRespDTO.class)); - formulas.forEach(formula -> { + respDTO.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, ContractCoefficientRespDTO.class)); + formula.setCoefficients(BeanUtils.toBean(coefficientDOS, CoefficientRespDTO.class)); } // 查询并设置品位等级价配置 List gradeDOS = contractGradeMapper .selectList(TableFieldConstants.BSE_CTRT_GRD_FMU_ID, formula.getId()); if (gradeDOS != null && !gradeDOS.isEmpty()) { - formula.setGrades(BeanUtils.toBean(gradeDOS, ContractGradeRespDTO.class)); + formula.setGrades(BeanUtils.toBean(gradeDOS, GradeRespDTO.class)); } // 查询并设置调整价配置 List deductDOS = contractDeductMapper .selectList(TableFieldConstants.BSE_CTRT_DDCT_FMU_ID, formula.getId()); if (deductDOS != null && !deductDOS.isEmpty()) { - formula.setDeducts(BeanUtils.toBean(deductDOS, ContractDeductRespDTO.class)); + formula.setDeducts(BeanUtils.toBean(deductDOS, DeductRespDTO.class)); } // 查询并设置市场价配置 List priceDOS = contractPriceMapper .selectList(TableFieldConstants.BSE_CTRT_PRC_FMU_ID, formula.getId()); if (priceDOS != null && !priceDOS.isEmpty()) { - formula.setPrices(BeanUtils.toBean(priceDOS, ContractPriceRespDTO.class)); + formula.setPrices(BeanUtils.toBean(priceDOS, PriceRespDTO.class)); } }); } - return formulas; + // 查询并设置参数降级规则 + List demoteDOS = contractDemoteMapper + .selectList(TableFieldConstants.BSE_CTRT_DMOT_CTRT_ID, contractMainDO.getId()); + if (demoteDOS != null && !demoteDOS.isEmpty()) { + respDTO.setDemotes(BeanUtils.toBean(demoteDOS, DemoteRespDTO.class)); + } + + // 查询并设置品位不计价规则 + List notDOS = contractNotMapper + .selectList(TableFieldConstants.BSE_CTRT_NT_CTRT_ID, contractMainDO.getId()); + if (notDOS != null && !notDOS.isEmpty()) { + respDTO.setNots(BeanUtils.toBean(notDOS, NotRespDTO.class)); + } + + return respDTO; } @Override @@ -804,12 +841,39 @@ public class ContractServiceImpl implements ContractService { ErpContractDO erpContractDO = new ErpContractDO(); // 合同主信息表主键:BSE_CTRT_MAIN erpContractDO.setContractMainId(id); - // 操作标识:OPTN_ID TODO - /* - 1、先调用009ERP接口查询合同信息 - 2、如果009接口返回值中“合同编号”字段存在值,并且与传入的相同,则OPTN_ID值为“1” - 3、如果009接口返回值中“合同编号”字段不存在值,根据合同主键查询映射表中是否存在没有删除的数据,如果有,值为“1”,如果没有,值为“0” - */ + // 操作标识:OPTN_ID + // 1、先调用009ERP接口查询合同信息 + ErpContractPageReqVO pageReqVO = new ErpContractPageReqVO(); + // BUKRS 合同签订主体公司代码 收支方向判断,如果为“支出”,传“ERP甲方公司编码”,反之传“ERP乙方公司编码” + // PARTNER 对方客商编号 收支方向判断,如果为“支出”,传“ERP乙方公司编码”,反之传“ERP甲方公司编码” + // INEDR 1-借(销售合同),2-贷(采购合同) 收支方向判断,如果为“支出”,传“2”,反之传“1” + if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(contractMainDO.getDirection())) { + pageReqVO.setContractSignNumber(contractMainDO.getSalesCompanyNumber()); + pageReqVO.setSupplierNumber(contractMainDO.getSalesCompanyNumber()); + pageReqVO.setContractCategory("2"); + } else if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(contractMainDO.getDirection())) { + pageReqVO.setContractSignNumber(contractMainDO.getSalesCompanyNumber()); + pageReqVO.setSupplierNumber(contractMainDO.getSalesCompanyNumber()); + pageReqVO.setContractCategory("1"); + } + // ZHTBH 合同编号 合同编号:CTRT_PPR_NUM + pageReqVO.setContractTypeNumber(contractMainDO.getContractPaperNumber()); + // ZHTMC 合同名称 合同名称:CTRT_NAME + pageReqVO.setContractName(contractMainDO.getContractName()); + PageResult erpContractPage = erpContractService.getErpContractPage(pageReqVO); + if (erpContractPage.getTotal() > 0) { + // 2、如果009接口返回值中“合同编号”字段存在值,并且与传入的相同,则OPTN_ID值为“1” + erpContractDO.setOperationId("1"); + } else { + // 3、如果009接口返回值中“合同编号”字段不存在值,根据合同主键查询映射表中是否存在没有删除的数据,如果有,值为“1”,如果没有,值为“0” + /*ErpContractDO erpContract = erpContractService.getErpContractByMainId(id); + if (erpContract != null) { + erpContractDO.setOperationId("1"); + } else { + erpContractDO.setOperationId("0"); + }*/ + } + // erpContractDO.setOperationId(); // 合同编号:CTRT_PPR_NUM erpContractDO.setContractPaperNumber(contractMainDO.getContractPaperNumber()); // 合同名称:CTRT_NAME @@ -823,15 +887,25 @@ public class ContractServiceImpl implements ContractService { // 是否虚拟合同:IS_VRTL_CTRT erpContractDO.setIsVirtualContract(contractMainDO.getContractVirtual()); // 客商编号:SPLR_NUM 根据合同主表的收支方向判断,如果为“支出”,值为“ERP乙方公司编码”,反之为“ERP甲方公司编码” - // erpContractDO.setSupplierNumber(); // 客商名称:SPLR_NAME 根据合同主表的收支方向判断,如果为“支出”,值为“ERP乙方公司名称”,反之为“ERP甲方公司名称” - // erpContractDO.setSupplierName(); + if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(contractMainDO.getDirection())) { + erpContractDO.setSupplierNumber(contractMainDO.getSalesCompanyNumber()); + erpContractDO.setSupplierName(contractMainDO.getSalesCompanyName()); + } else if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(contractMainDO.getDirection())) { + erpContractDO.setSupplierNumber(contractMainDO.getPurchaseCompanyNumber()); + erpContractDO.setSupplierName(contractMainDO.getPurchaseCompanyName()); + } // 代理方:AGT erpContractDO.setAgent(contractMainDO.getAgent()); // 合同实施主体编号:CTRT_IMPL_NUM 根据合同主表的收支方向判断,如果为“支出”,值为“ERP甲方公司编码”,反之为“ERP乙方公司编码” - // erpContractDO.setContractImplementNumber(); // 合同签订主体编号:CTRT_SGN_NUM 根据合同主表的收支方向判断,如果为“支出”,值为“ERP甲方公司名称”,反之为“ERP乙方公司名称” - // erpContractDO.setContractSignNumber(); + if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(contractMainDO.getDirection())) { + erpContractDO.setContractImplementNumber(contractMainDO.getPurchaseCompanyNumber()); + erpContractDO.setContractSignNumber(contractMainDO.getPurchaseCompanyName()); + } else if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(contractMainDO.getDirection())) { + erpContractDO.setContractImplementNumber(contractMainDO.getSalesCompanyNumber()); + erpContractDO.setContractSignNumber(contractMainDO.getSalesCompanyName()); + } // 合同签订日期:SGN_DT if (contractMainDO.getSignDate() != null) { erpContractDO.setSignDate(contractMainDO.getSignDate().toLocalDate()); @@ -855,9 +929,9 @@ public class ContractServiceImpl implements ContractService { // 变更后合同总金额(本位币-含税):CHG_BSC_AMT erpContractDO.setChangeBasicAmount(contractMainDO.getChangeBasicAmount()); // 合同状态编号:STS_NUM 参照060接口 - // erpContractDO.setStatusNumber(); + erpContractDO.setStatusNumber(DictEnum.SUBMIT_ERP_CTRT_STS_EF.getCode()); // 合同状态名称:STS_NAME 参照060接口 - // erpContractDO.setStatusName(); + erpContractDO.setStatusName(DictEnum.SUBMIT_ERP_CTRT_STS_EF.getLabel()); // 是否有预付款:IS_PPYM erpContractDO.setIsPrepayment(contractMainDO.getHasPrepayment()); // 预付款比例:PPYM_RTIO diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpContractService.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpContractService.java index f1860b9..cef2ab5 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpContractService.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpContractService.java @@ -53,6 +53,14 @@ public interface ErpContractService { */ ErpContractDO getErpContract(Long id); + /** + * 获得ERP合同映射通过合同主信息主键 + * + * @param contractMainId 合同主信息主键 + * @return ERP合同映射 + */ + ErpContractDO getErpContractByMainId(Long contractMainId); + /** * 获得ERP合同映射分页 * 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 ce09950..4b5e095 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 @@ -6,30 +6,26 @@ import com.alibaba.fastjson.JSONObject; import com.xxl.job.core.handler.annotation.XxlJob; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; -import com.zt.plat.module.erp.dal.dataobject.erp.ErpProductiveOrderDO; -import com.zt.plat.module.erp.utils.ErpConfig; -import com.zt.plat.module.erp.utils.MyRedisConfig; -import com.zt.plat.module.erp.enums.OftenEnum; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractSaveReqVO; import com.zt.plat.module.erp.dal.dataobject.erp.ErpContractDO; import com.zt.plat.module.erp.dal.mysql.erp.ErpContractMapper; +import com.zt.plat.module.erp.enums.OftenEnum; +import com.zt.plat.module.erp.utils.ErpConfig; +import com.zt.plat.module.erp.utils.MyRedisConfig; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_COMPANY_NOT_EXISTS; import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_CONTRACT_NOT_EXISTS; import static dm.jdbc.util.DriverUtil.log; @@ -102,6 +98,11 @@ public class ErpContractServiceImpl implements ErpContractService { return erpContractMapper.selectById(id); } + @Override + public ErpContractDO getErpContractByMainId(Long contractMainId) { + return erpContractMapper.selectOne("CTRT_MAIN_ID", contractMainId); + } + @Override public PageResult getErpContractPage(ErpContractPageReqVO pageReqVO) { OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.合同信息;