From 04949bb027e9c9780bf049f562c1303ecff9933c Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Sun, 28 Sep 2025 17:05:30 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=89=A9=E6=96=99=E7=AE=A1=E7=90=86decimal?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=85=B3=E9=94=AE=E5=AD=97=E5=86=B2=E7=AA=81?= =?UTF-8?q?=EF=BC=8C=E6=94=B9=E4=B8=BAdecimalValue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/controller/admin/base/vo/MaterialOtherPageReqVO.java | 2 +- .../base/controller/admin/base/vo/MaterialOtherRespVO.java | 2 +- .../base/controller/admin/base/vo/MaterialOtherSaveReqVO.java | 2 +- .../plat/module/base/dal/dataobject/base/MaterialOtherDO.java | 2 +- .../zt/plat/module/base/dal/mysql/base/MaterialOtherMapper.java | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherPageReqVO.java index 73e49a5..a2c4584 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherPageReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherPageReqVO.java @@ -45,7 +45,7 @@ public class MaterialOtherPageReqVO extends PageParam { private LocalDateTime[] createTime; @Schema(description = "小数位数") - private Long decimal; + private Long decimalValue; @Schema(description = "是否启用") private String isEnable; diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherRespVO.java index ec43586..1903f28 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherRespVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherRespVO.java @@ -58,7 +58,7 @@ public class MaterialOtherRespVO { @Schema(description = "小数位数") @ExcelProperty("小数位数") - private Long decimal; + private Long decimalValue; @Schema(description = "是否启用") @ExcelProperty("是否启用") diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherSaveReqVO.java index 3c86e30..938f5ea 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherSaveReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherSaveReqVO.java @@ -38,7 +38,7 @@ public class MaterialOtherSaveReqVO { private String gradeUnit; @Schema(description = "小数位数") - private Long decimal; + private Long decimalValue; @Schema(description = "是否启用") private String isEnable; diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/MaterialOtherDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/MaterialOtherDO.java index 983b276..de1c34c 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/MaterialOtherDO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/MaterialOtherDO.java @@ -102,7 +102,7 @@ public class MaterialOtherDO extends BusinessBaseDO { * 小数位数 */ @TableField("DEC") - private Long decimal; + private Long decimalValue; /** * 创建人名称 */ diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/MaterialOtherMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/MaterialOtherMapper.java index ced6a90..3064d3e 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/MaterialOtherMapper.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/MaterialOtherMapper.java @@ -27,7 +27,7 @@ public interface MaterialOtherMapper extends BaseMapperX { .eqIfPresent(MaterialOtherDO::getCoding, reqVO.getCoding()) .eqIfPresent(MaterialOtherDO::getGradeUnit, reqVO.getGradeUnit()) .betweenIfPresent(MaterialOtherDO::getCreateTime, reqVO.getCreateTime()) - .eqIfPresent(MaterialOtherDO::getDecimal, reqVO.getDecimal()) + .eqIfPresent(MaterialOtherDO::getDecimalValue, reqVO.getDecimalValue()) .eqIfPresent(MaterialOtherDO::getIsEnable, reqVO.getIsEnable()) .orderByDesc(MaterialOtherDO::getId)); } From 26ecb030c9acdd5134b38a47455d527c42f00740 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Sun, 28 Sep 2025 17:45:19 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=90=88=E5=90=8C=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E3=80=81=E5=90=88=E5=90=8C=E4=B8=BB=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E5=AD=97=E6=AE=B5=E4=BF=AE=E6=94=B9=E3=80=81=E5=90=88?= =?UTF-8?q?=E5=90=8C=E6=98=8E=E7=BB=86=E5=AD=97=E6=AE=B5=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E3=80=81=E5=90=88=E5=90=8C=E5=86=85=E5=AE=B9=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E3=80=81zt-module-base-server=E5=BC=95=E5=85=A5=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7=E5=BC=95=E7=94=A8=E5=8F=98=E9=87=8F=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/ErrorCodeConstants.java | 3 +- .../contractorder/enums/ProcessConstants.java | 7 + .../enums/TableFieldConstants.java | 74 ++++++ .../enums/contract/ErpCtrtYesNoEnum.java | 47 ++++ .../zt-module-contract-order-server/pom.xml | 8 +- .../admin/contract/ContractController.java | 7 +- .../vo/contract/ContractDetailSaveReqVO.java | 3 + .../vo/contract/ContractSaveReqVO.java | 8 + .../dataobject/contract/ContractDetailDO.java | 5 + .../dataobject/contract/ContractMainDO.java | 25 ++ .../rpc/config/RpcConfiguration.java | 16 ++ .../service/contract/ContractService.java | 8 + .../service/contract/ContractServiceImpl.java | 226 +++++++++++++++++- 13 files changed, 429 insertions(+), 8 deletions(-) create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ProcessConstants.java create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/ErpCtrtYesNoEnum.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/framework/rpc/config/RpcConfiguration.java 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 d6a9ba0..ef4c42e 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 @@ -17,5 +17,6 @@ public interface ErrorCodeConstants { ErrorCode CONTRACT_PAPER_NUMBER_EXISTS = new ErrorCode(1_027_000_002, "合同编号已存在"); ErrorCode CONTRACT_NOT_EXISTS = new ErrorCode(1_027_000_003, "合同不存在"); ErrorCode CONTRACT_ID_NOT_EXISTS = new ErrorCode(1_027_000_004, "合同主键为空"); - ErrorCode CONTRACT_STATUS_NOT_UPDATE = new ErrorCode(1_027_000_004, "{}合同不允许修改"); + ErrorCode CONTRACT_STATUS_NOT_UPDATE = new ErrorCode(1_027_000_005, "{}合同不允许修改"); + ErrorCode CONTRACT_DATA_NOT_EXISTS = new ErrorCode(1_027_000_006, "{}不存在"); } diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ProcessConstants.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ProcessConstants.java new file mode 100644 index 0000000..7a4fff7 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ProcessConstants.java @@ -0,0 +1,7 @@ +package com.zt.plat.module.contractorder.enums; + +public class ProcessConstants { + + // 合同审批流程 + public static String CONTRACT_APPROVAL_PROCESS = "contract_approval_process"; +} 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 41684a4..9880f79 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 @@ -13,12 +13,86 @@ public class TableFieldConstants { /* 合同主信息表 */ // 合同名称;与ERP(HTMC)对应,校验唯一 public static final String BSE_CTRT_MAIN_CTRT_NAME = "CTRT_NAME"; + public static final String BSE_CTRT_MAIN_CTRT_NAME_LABEL = "合同名称"; // 合同编号;与ERP(HTBH)对应,校验唯一 public static final String BSE_CTRT_MAIN_CTRT_PPR_NUM = "CTRT_PPR_NUM"; + public static final String BSE_CTRT_MAIN_CTRT_PPR_NUM_LABEL = "合同编号"; + // 甲方公司编号 + public static final String BSE_CTRT_MAIN_PRCH_CPN_NUM_LABEL = "甲方公司编号"; + // 甲方公司名称 + public static final String BSE_CTRT_MAIN_PRCH_CPN_NAME_LABEL = "甲方公司名称"; + // 甲方地址 + public static final String BSE_CTRT_MAIN_PRCH_ADR_LABEL = "甲方地址"; + // 甲方法定代表人 + public static final String BSE_CTRT_MAIN_PRCH_LDR_LABEL = "甲方法定代表人"; + // 乙方公司编号 + public static final String BSE_CTRT_MAIN_SALE_CPN_NUM_LABEL = "乙方公司编号"; + // 乙方公司名称 + public static final String BSE_CTRT_MAIN_SALE_CPN_NAME_LABEL = "乙方公司名称"; + // 乙方地址 + public static final String BSE_CTRT_MAIN_SALE_ADR_LABEL = "乙方地址"; + // 乙方法定代表人 + public static final String BSE_CTRT_MAIN_SALE_PRCH_LDR_LABEL = "乙方法定代表人"; + // 类别 + public static final String BSE_CTRT_MAIN_CTGR_LABEL = "类别"; + // 收支性质 + public static final String BSE_CTRT_MAIN_DRCT_LABEL = "收支性质"; + // 签署日期 + public static final String BSE_CTRT_MAIN_SGN_DT_LABEL = "签署日期"; + // 开始日期 + public static final String BSE_CTRT_MAIN_STRT_DT_LABEL = "开始日期"; + // 结束日期 + public static final String BSE_CTRT_MAIN_END_DT_LABEL = "结束日期"; + // 签署地 + public static final String BSE_CTRT_MAIN_SGN_PLCE_LABEL = "签署地"; + // 币种 + public static final String BSE_CTRT_MAIN_CUR_LABEL = "币种"; + // 本币金额 + public static final String BSE_CTRT_MAIN_BSC_AMT_LABEL = "本币金额"; + // 原币金额 + public static final String BSE_CTRT_MAIN_COO_AMT_LABEL = "原币金额"; + // 是否有履约保证金 + public static final String BSE_CTRT_MAIN_HS_DPST_LABEL = "是否有履约保证金"; + // 原币履约保证金 + public static final String BSE_CTRT_MAIN_COO_AMT_DPST_LABEL = "原币履约保证金"; + // 本币履约保证金 + public static final String BSE_CTRT_MAIN_BSC_AMT_DPST_LABEL = "本币履约保证金"; + // 是否有预付款 + public static final String BSE_CTRT_MAIN_HS_PPYM_LABEL = "是否有预付款"; + // 预付款比例 + public static final String BSE_CTRT_MAIN_PPYM_RTIO_LABEL = "预付款比例"; + // 预付款金额 + public static final String BSE_CTRT_MAIN_PPYM_AMT_LABEL = "预付款金额"; + // 是否有质保金 + public static final String BSE_CTRT_MAIN_HS_QLT_AMT_LABEL = "是否有质保金"; + // 质保金比例 + public static final String BSE_CTRT_MAIN_QLT_RTIO_LABEL = "质保金比例"; + // 质保金金额 + public static final String BSE_CTRT_MAIN_QLT_AMT_LABEL = "质保金金额"; + // 是否先款后货 + public static final String BSE_CTRT_MAIN_HS_PYBL_LABEL = "是否先款后贷"; + // 是否框架合同 + public static final String BSE_CTRT_MAIN_IS_FMWK_LABEL = "是否框架合同"; + // 境内/境外 + public static final String BSE_CTRT_MAIN_IS_DOM_LABEL = "境内/境外"; + // 施工类型编号 + public static final String BSE_CTRT_MAIN_CON_TP_NUM_LABEL = "施工类型编号"; + // 施工类型名称 + public static final String BSE_CTRT_MAIN_CON_TP_NAME_LABEL = "施工类型名称"; + // 代理方 + public static final String BSE_CTRT_MAIN_AGT_LABEL = "代理方"; + // 是否虚拟合同 + public static final String BSE_CTRT_MAIN_CTRT_VRTL_LABEL = "是否虚拟合同"; /* 合同明细表 */ // 合同主信息主键 public static final String BSE_CTRT_DTL_CTRT_MAIN_ID = "CTRT_MAIN_ID"; + // 物料名称 + public static final String BSE_CTRT_DTL_MTRL_NAME_LABEL = "物料名称"; + // 数量 + public static final String BSE_CTRT_DTL_QTY_LABEL = "数量"; + // 计量单位 + public static final String BSE_CTRT_DTL_UNT_LABEL = "计量单位"; /* 交货计划条款表 */ // 合同明细主键 diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/ErpCtrtYesNoEnum.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/ErpCtrtYesNoEnum.java new file mode 100644 index 0000000..63253ba --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/ErpCtrtYesNoEnum.java @@ -0,0 +1,47 @@ +package com.zt.plat.module.contractorder.enums.contract; + +/** + * ERP是否枚举 + */ +public enum ErpCtrtYesNoEnum { + + /** + * 是 + */ + YES("是","1",null), + /** + * 否 + */ + NO("否","0",null); + + ErpCtrtYesNoEnum(String label, String code, String remark) { + this.label = label; + this.code = code; + this.remark = remark; + } + + /** + * 字典标签 + */ + private final String label; + /** + * 字典编码 + */ + private final String code; + /** + * 备注 + */ + private final String remark; + + public String getLabel() { + return label; + } + + public String getCode() { + return code; + } + + public String getRemark() { + return remark; + } +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/pom.xml b/zt-module-contract-order/zt-module-contract-order-server/pom.xml index 65a9482..2894858 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/pom.xml +++ b/zt-module-contract-order/zt-module-contract-order-server/pom.xml @@ -129,8 +129,12 @@ com.zt.plat zt-module-base-server - 3.0.41 - compile + ${revision} + + + com.zt.plat + zt-module-bpm-api + ${revision} 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 a9908df..ea9ce98 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 @@ -102,10 +102,11 @@ public class ContractController implements BusinessControllerMarker { } // TODO - @PostMapping("/submit/approval") - @Operation(summary = "提交审批") + @GetMapping("/submit/approval") + @Operation(summary = "合同提交审批") @PreAuthorize("@ss.hasPermission('system:contract:approval')") - public void submitApproval() { + public CommonResult submitApproval(@RequestParam("id") Long id) { + return success(contractService.submitApproval(id)); } // TODO diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractDetailSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractDetailSaveReqVO.java index 6055b01..29ed52a 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractDetailSaveReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractDetailSaveReqVO.java @@ -28,6 +28,9 @@ public class ContractDetailSaveReqVO { @Schema(description = "含税单价", example = "28579") private BigDecimal inTaxUnitPrice; + @Schema(description = "含税总价") + private BigDecimal allInTaxUnitPrice; + @Schema(description = "金属元素缩写", example = "金属元素缩写") private String elementAbbreviation; diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractSaveReqVO.java index 6dfdf33..beaff54 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractSaveReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractSaveReqVO.java @@ -209,6 +209,14 @@ public class ContractSaveReqVO { @ExcelProperty("达到收款条件金额;与ERP(DDSKJE)对应,拓展信息,销售合同,且类型为SAP02COSR必填") private BigDecimal payeeConditionAmount; + @Schema(description = "附件对象存储") + @ExcelProperty("附件对象存储") + private String fileObject; + + @Schema(description = "其它附件对象存储") + @ExcelProperty("其它附件对象存储") + private String fileObjectOther; + // 模板部分查询 @Schema(description = "模板实例主键", example = "10196") @ExcelProperty("模板实例主键") diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractDetailDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractDetailDO.java index 2aa35fe..6b03ee6 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractDetailDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractDetailDO.java @@ -73,4 +73,9 @@ public class ContractDetailDO extends BusinessBaseDO { */ @TableField("ELEM_NUM") private String elementNumber; + /** + * 含税总价 + */ + @TableField("ALL_IN_TAX_UPRC") + private BigDecimal allInTaxUnitPrice; } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractMainDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractMainDO.java index 3bad913..240c1b7 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractMainDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractMainDO.java @@ -279,4 +279,29 @@ public class ContractMainDO extends BusinessBaseDO { */ @TableField("CAUS") private String cause; + /** + * 流程实例编号 + */ + @TableField("PRCS_INSC_ID") + private String processInstanceId; + /** + * 审批意见 + */ + @TableField("RVW_ONN") + private String reviewOpinion; + /** + * 任务节点主键 + */ + @TableField("TSK_NDE_ID") + private String taskNodeId; + /** + * 模板附件对象存储 + */ + @TableField("FILE_OBJ") + private String fileObject; + /** + * 其它附件对象存储 + */ + @TableField("FILE_OBJ_OTH") + private String fileObjectOther; } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/framework/rpc/config/RpcConfiguration.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/framework/rpc/config/RpcConfiguration.java new file mode 100644 index 0000000..10e0fa9 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/framework/rpc/config/RpcConfiguration.java @@ -0,0 +1,16 @@ +package com.zt.plat.module.contractorder.framework.rpc.config; + +import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi; +import com.zt.plat.module.bpm.api.task.BpmTaskApi; +import com.zt.plat.module.infra.api.businessfile.BusinessFileApi; +import com.zt.plat.module.infra.api.file.FileApi; +import com.zt.plat.module.system.api.dept.DeptApi; +import com.zt.plat.module.system.api.sequence.SequenceApi; +import com.zt.plat.module.system.api.user.AdminUserApi; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.context.annotation.Configuration; + +@Configuration(value = "contractorderRpcConfiguration", proxyBeanMethods = false) +@EnableFeignClients(clients = {DeptApi.class, SequenceApi.class, BpmProcessInstanceApi.class, AdminUserApi.class, BpmTaskApi.class, BusinessFileApi.class, FileApi.class}) +public class RpcConfiguration { +} 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 bcaeb4f..783cd53 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 @@ -45,4 +45,12 @@ public interface ContractService { * @return 修改结果 */ Boolean update(@Valid ContractSaveReqVO reqVO); + + /** + * 合同提交审批 + * + * @param id 合同ID + * @return 审批结果 + */ + String submitApproval(Long id); } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java index 663604d..864cf4b 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 @@ -3,6 +3,7 @@ package com.zt.plat.module.contractorder.service.contract; 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; +import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; import com.zt.plat.framework.tenant.core.context.CompanyContextHolder; import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceDataRespVO; import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceItemRespVO; @@ -11,14 +12,24 @@ import com.zt.plat.module.base.dal.dataobject.tmpltp.TemplateInstanceItemDO; import com.zt.plat.module.base.dal.mysql.tmpltp.TemplateInstanceDataMapper; import com.zt.plat.module.base.dal.mysql.tmpltp.TemplateInstanceItemMapper; import com.zt.plat.module.base.service.tmpltp.TemplateInstanceDataService; +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.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.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.ContractStatusEnum; -import com.zt.plat.module.contractorder.enums.DateConstants; +import com.zt.plat.module.contractorder.enums.contract.ErpCtrtYesNoEnum; +import com.zt.plat.module.system.api.user.AdminUserApi; +import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -64,6 +75,12 @@ public class ContractServiceImpl implements ContractService { private ContractPriceMapper contractPriceMapper; @Resource private ContractNotMapper contractNotMapper; + @Resource + private AdminUserApi adminUserApi; + @Resource + private BpmProcessInstanceApi bpmProcessInstanceApi; + @Resource + private BpmTaskApi bpmTaskApi; @Override public PageResult getContractPage(ContractPageReqVO pageReqVO) { @@ -315,7 +332,7 @@ public class ContractServiceImpl implements ContractService { // 查询合同是否存在 ContractMainDO oldContractMainDO = contractMainMapper.selectById(id); - if (contractMainMapper.selectById(id) == null) { + if (oldContractMainDO == null) { throw exception(CONTRACT_NOT_EXISTS); } @@ -512,6 +529,211 @@ public class ContractServiceImpl implements ContractService { } } + @Override + public String submitApproval(Long id) { + + // 判断主键 + if (ObjectUtils.isEmpty(id)) { + throw exception(CONTRACT_ID_NOT_EXISTS); + } + + // 查询合同是否存在 + ContractMainDO contractMainDO = contractMainMapper.selectById(id); + if (contractMainDO == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + + // 合同内容校验 TODO + verifyContract(get(id)); + + // 查询用户 + AdminUserRespDTO adminUserRespDTO = adminUserApi + .getUser(SecurityFrameworkUtils.getLoginUserId()).getData(); + + // 先创建流程,后更新状态 + BpmProcessInstanceCreateReqDTO pidto = new BpmProcessInstanceCreateReqDTO(); + pidto.setProcessDefinitionKey(ProcessConstants.CONTRACT_APPROVAL_PROCESS); + pidto.setBusinessKey(String.valueOf(id)); + String data = bpmProcessInstanceApi.createProcessInstance(adminUserRespDTO.getId(), pidto).getData(); + if (StringUtils.isNotBlank(data)) { + // 获取流程当前审批的任务节点 + List taskList = bpmTaskApi.getTaskListByProcessInstanceId(data).getData(); + contractMainDO.setProcessInstanceId(data); + if (CollectionUtils.isNotEmpty(taskList)) { + BpmTaskRespDTO undoTask = taskList.get(taskList.size() - 1); + contractMainDO.setTaskNodeId(undoTask.getId()); + } + contractMainDO.setStatus(ContractStatusEnum.UNDER_REVIEW.getCode()); + contractMainMapper.updateById(contractMainDO); + return "提交审批成功"; + } + + return "提交审批失败"; + } + + private void verifyContract(ContractViewRespVO contract) { + + /* 合同基本信息 */ + // 甲方公司编号不能为空 + if (StringUtils.isBlank(contract.getPurchaseCompanyNumber())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_PRCH_CPN_NUM_LABEL); + } + // 甲方公司名称不能为空 + if (StringUtils.isBlank(contract.getPurchaseCompanyName())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_PRCH_CPN_NAME_LABEL); + } + // 甲方地址不能为空 + if (StringUtils.isBlank(contract.getPurchaseAddress())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_PRCH_ADR_LABEL); + } + // 甲方法定代表人能为空 + if (StringUtils.isBlank(contract.getPurchaseLeader())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_PRCH_LDR_LABEL); + } + // 乙方公司编号不能为空 + if (StringUtils.isBlank(contract.getSalesCompanyNumber())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_SALE_CPN_NUM_LABEL); + } + // 乙方公司名称不能为空 + if (StringUtils.isBlank(contract.getSalesCompanyName())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_SALE_CPN_NAME_LABEL); + } + // 乙方地址不能为空 + if (StringUtils.isBlank(contract.getSalesAddress())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_SALE_ADR_LABEL); + } + // 乙方法定代表人能为空 + if (StringUtils.isBlank(contract.getSalesPurchaseLeader())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_SALE_PRCH_LDR_LABEL); + } + // 合同名称不能为空 + if (StringUtils.isBlank(contract.getContractName())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_CTRT_NAME_LABEL); + } + // 合同编号不能为空 + if (StringUtils.isBlank(contract.getContractPaperNumber())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_CTRT_PPR_NUM_LABEL); + } + // 类别不能为空 + if (StringUtils.isBlank(contract.getCategory())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_CTGR_LABEL); + } + // 收支性质不能为空 + if (StringUtils.isBlank(contract.getDirection())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_DRCT_LABEL); + } + // 签署日期不能为空 + if (contract.getSignDate() != null) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_SGN_DT_LABEL); + } + // 开始日期不能为空 + if (contract.getStartDate() != null) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_STRT_DT_LABEL); + } + // 结束日期不能为空 + if (contract.getEndDate() != null) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_END_DT_LABEL); + } + // 签署地不能为空 + if (StringUtils.isBlank(contract.getSignPlace())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_SGN_PLCE_LABEL); + } + + /* 金额信息 */ + // 币种不能为空 + if (StringUtils.isBlank(contract.getCurrency())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_CUR_LABEL); + } + // 本币金额不能为空 + if (contract.getBasicAmount() != null) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_BSC_AMT_LABEL); + } + // 原币金额不能为空 + if (contract.getCooAmount() != null) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_COO_AMT_LABEL); + } + // 是否有履约保证金不能为空 + if (StringUtils.isBlank(contract.getHasDeposit())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_HS_DPST_LABEL); + } + // 是否有履约保证金为是的情况 + if (ErpCtrtYesNoEnum.YES.getCode().equals(contract.getHasDeposit())) { + // 原币履约保证金不能为空 + if (contract.getCooAmountDeposit() != null) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_COO_AMT_DPST_LABEL); + } + // 本币履约保证金不能为空 + if (contract.getBasicAmountDeposit() != null) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_BSC_AMT_DPST_LABEL); + } + } + // 是否有预付款不能为空 + if (StringUtils.isBlank(contract.getHasPrepayment())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_HS_PPYM_LABEL); + } + // 是否有预付款为是的情况 + if (ErpCtrtYesNoEnum.YES.getCode().equals(contract.getHasPrepayment())) { + // 预付款比例不能为空 + if (contract.getPrepaymentRatio() != null) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_PPYM_RTIO_LABEL); + } + // 预付款金额不能为空 + if (contract.getPrepaymentAmount() != null) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_PPYM_AMT_LABEL); + } + } + // 是否有质保金不能为空 + if (StringUtils.isBlank(contract.getHasQualityAmount())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_HS_QLT_AMT_LABEL); + } + // 是否有质保金为是的情况 + if (ErpCtrtYesNoEnum.YES.getCode().equals(contract.getHasPrepayment())) { + // 质保金比例不能为空 + if (contract.getQualityRatio() != null) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_QLT_RTIO_LABEL); + } + // 质保金金额不能为空 + if (contract.getQualityAmount() != null) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_QLT_AMT_LABEL); + } + } + // 是否先款后货不能为空 + if (StringUtils.isBlank(contract.getHasPayable())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_HS_PYBL_LABEL); + } + + /* 物料信息 */ + // 物料名称不能为空 + // 数量不能为空 + // 计量单位不能为空 + + /* 扩展信息 */ + // 是否框架合同不能为空 + if (StringUtils.isBlank(contract.getIsFramework())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_IS_FMWK_LABEL); + } + // 境内/境外不能为空 + if (StringUtils.isBlank(contract.getIsDomestic())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_IS_DOM_LABEL); + } + // 施工类型编号不能为空 + if (StringUtils.isBlank(contract.getConstructionTypeNumber())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_CON_TP_NUM_LABEL); + } + // 施工类型名称不能为空 + if (StringUtils.isBlank(contract.getConstructionTypeName())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_CON_TP_NAME_LABEL); + } + // 代理方不能为空 + if (StringUtils.isBlank(contract.getAgent())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_AGT_LABEL); + } + // 是否虚拟合同不能为空 + if (StringUtils.isBlank(contract.getContractVirtual())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_CTRT_VRTL_LABEL); + } + } + /** * 生成系统合同编号 *