From 303ce4ec4de8c59563214c3994693df08d3c52bf Mon Sep 17 00:00:00 2001 From: guojunyun Date: Thu, 9 Oct 2025 09:34:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=90=8C=E6=95=B0=E6=8D=AE=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E4=BF=AE=E6=94=B9=E3=80=81=E5=90=88=E5=90=8C=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E6=8E=A5=E5=8F=A3=E9=83=A8=E5=88=86=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/ErrorCodeConstants.java | 5 +- .../enums/TableFieldConstants.java | 4 +- .../enums/contract/AuditResultEnum.java | 46 ++ .../admin/contract/ContractController.java | 17 +- .../vo/contract/ContractApprovalReqVO.java | 23 + .../vo/contract/ContractDetailSaveReqVO.java | 3 - .../vo/contract/ContractFormulaSaveReqVO.java | 16 +- .../vo/contract/ContractSaveReqVO.java | 3 + .../vo/contract/ContractViewDetailRespVO.java | 3 - .../contract/ContractViewFormulaRespVO.java | 15 +- .../vo/contract/ContractViewRespVO.java | 3 + .../contract/ContractFormulaDO.java | 6 +- .../service/contract/ContractService.java | 3 + .../service/contract/ContractServiceImpl.java | 459 ++++++++++-------- 14 files changed, 364 insertions(+), 242 deletions(-) create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/AuditResultEnum.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractApprovalReqVO.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 e958890..57c28fb 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,7 +17,8 @@ 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_005, "{}合同不允许修改"); + ErrorCode CONTRACT_STATUS_NOT_UPDATE = new ErrorCode(1_027_000_005, "{}状态合同不允许修改"); ErrorCode CONTRACT_DATA_NOT_EXISTS = new ErrorCode(1_027_000_006, "{}不存在"); - ErrorCode CONTRACT_STATUS_NOT_SUBMIT_APPROVAL = new ErrorCode(1_027_000_005, "{}合同不允许提交审核"); + ErrorCode CONTRACT_STATUS_NOT_SUBMIT_APPROVAL = new ErrorCode(1_027_000_007, "{}状态合同不允许提交审核"); + ErrorCode CONTRACT_STATUS_NOT_APPROVAL = new ErrorCode(1_027_000_008, "{}状态合同不允许审核"); } 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 9880f79..ff910b3 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 @@ -99,8 +99,8 @@ public class TableFieldConstants { public static final String BSE_CTRT_PLN_CTRT_DTL_ID = "CTRT_DTL_ID"; /* 价款结算条款表 */ - // 合同明细主键 - public static final String BSE_CTRT_FMU_CTRT_DTL_ID = "CTRT_DTL_ID"; + // 合同主键 + public static final String BSE_CTRT_FMU_CTRT_ID = "CTRT_ID"; /* 基础系数配置表 */ // 条款主键 diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/AuditResultEnum.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/AuditResultEnum.java new file mode 100644 index 0000000..14da5a3 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/AuditResultEnum.java @@ -0,0 +1,46 @@ +package com.zt.plat.module.contractorder.enums.contract; + +/** + * 合同审核结果 + */ +public enum AuditResultEnum { + /** + * 合同状态-草稿 + */ + PASS("通过","PASS", null), + /** + * 合同状态-正在审核 + */ + REJECT("驳回","REJECT",null); + + AuditResultEnum(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/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 ea93e04..545fce1 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 @@ -5,10 +5,7 @@ import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; -import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.ContractPageReqVO; -import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.ContractRespVO; -import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.ContractSaveReqVO; -import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.ContractViewRespVO; +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; @@ -109,6 +106,14 @@ public class ContractController implements BusinessControllerMarker { return success(contractService.submitApproval(id)); } + // TODO + @PostMapping("/approval") + @Operation(summary = "合同审批") + @PreAuthorize("@ss.hasPermission('system:contract:approval')") + public CommonResult approval(@Valid @RequestBody ContractApprovalReqVO reqVO) { + return success(contractService.approval(reqVO)); + } + // TODO @PostMapping("/view/approval") @Operation(summary = "查看审批") @@ -117,9 +122,9 @@ public class ContractController implements BusinessControllerMarker { } // TODO - @PostMapping("/submit/ERP") + @PostMapping("/submit/erp") @Operation(summary = "提交ERP") @PreAuthorize("@ss.hasPermission('system:contract:erp')") - public void submitERP() { + public void submitErp() { } } 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/ContractApprovalReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractApprovalReqVO.java new file mode 100644 index 0000000..5e14731 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractApprovalReqVO.java @@ -0,0 +1,23 @@ +package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Schema(description = "管理后台 - 合同审核请求对象 Request VO") +@Data +public class ContractApprovalReqVO { + + @Schema(description = "合同主键ID", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "合同主键ID不能为空") + private Long id; + + @Schema(description = "审核结果(通过:PASS,驳回:REJECT)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "审核结果不能为空") + private String auditResult; + + @Schema(description = "审批意见", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "审核意见不能为空") + private String reviewOpinion; +} 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 29ed52a..d6a9460 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 @@ -42,7 +42,4 @@ public class ContractDetailSaveReqVO { // 交货计划 private List plans; - - // 价款结算条款 - private List formulas; } \ 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/controller/admin/contract/vo/contract/ContractFormulaSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractFormulaSaveReqVO.java index f96295c..528d930 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractFormulaSaveReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractFormulaSaveReqVO.java @@ -10,14 +10,14 @@ import java.util.List; @Data public class ContractFormulaSaveReqVO { - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "28539") + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "22933") private Long id; - @Schema(description = "合同明细主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "8181") - @NotNull(message = "合同明细主键不能为空") - private Long contractDetailId; + @Schema(description = "合同主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "9162") + @NotNull(message = "合同主键不能为空") + private Long contractId; - @Schema(description = "公式类型;单价/总价/水扣款/加工费", example = "UNIT_PRICE") + @Schema(description = "公式类型;单价/总价/水扣款/加工费", example = "1") private String formulaType; @Schema(description = "公式") @@ -26,7 +26,7 @@ public class ContractFormulaSaveReqVO { @Schema(description = "编码公式") private String numberFormula; - @Schema(description = "物料名称", example = "物料名称") + @Schema(description = "物料名称", example = "赵六") private String materialName; @Schema(description = "物料编码") @@ -41,10 +41,10 @@ public class ContractFormulaSaveReqVO { @Schema(description = "金属元素缩写") private String elementAbbreviation; - @Schema(description = "金属元素名称", example = "金属元素名称") + @Schema(description = "金属元素名称", example = "赵六") private String elementName; - @Schema(description = "结算类型,多条使用逗号分隔(字典:PRCH_STLM_TP)", example = "LST") + @Schema(description = "结算类型,多条使用逗号分隔(字典:PRCH_STLM_TP)", example = "1") private String settlementType; // 基础系数配置 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 c826d7f..34bb064 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 @@ -214,4 +214,7 @@ public class ContractSaveReqVO { // 合同动态表单 private List dynamicsFields; + + // 价款结算条款 + private List formulas; } \ 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/controller/admin/contract/vo/contract/ContractViewDetailRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewDetailRespVO.java index 9385e22..938385b 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewDetailRespVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewDetailRespVO.java @@ -38,7 +38,4 @@ public class ContractViewDetailRespVO { // 交货计划 private List plans; - - // 价款结算条款 - private List formulas; } 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/ContractViewFormulaRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewFormulaRespVO.java index ae04390..1db5876 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewFormulaRespVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewFormulaRespVO.java @@ -8,13 +8,13 @@ import java.util.List; @Schema(description = "管理后台 - 价款结算条款 Response VO") @Data public class ContractViewFormulaRespVO { - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "28539") + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "22933") private Long id; - @Schema(description = "合同明细主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "8181") - private Long contractDetailId; + @Schema(description = "合同主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "9162") + private Long contractId; - @Schema(description = "公式类型;单价/总价/水扣款/加工费", example = "UNIT_PRICE") + @Schema(description = "公式类型;单价/总价/水扣款/加工费", example = "1") private String formulaType; @Schema(description = "公式") @@ -23,7 +23,7 @@ public class ContractViewFormulaRespVO { @Schema(description = "编码公式") private String numberFormula; - @Schema(description = "物料名称", example = "物料名称") + @Schema(description = "物料名称", example = "赵六") private String materialName; @Schema(description = "物料编码") @@ -38,9 +38,12 @@ public class ContractViewFormulaRespVO { @Schema(description = "金属元素缩写") private String elementAbbreviation; - @Schema(description = "金属元素名称", example = "金属元素名称") + @Schema(description = "金属元素名称", example = "赵六") private String elementName; + @Schema(description = "结算类型,多条使用逗号分隔(字典:PRCH_STLM_TP)", example = "1") + private String settlementType; + // 基础系数配置 private List coefficients; // 品位等级价配置 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/ContractViewRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewRespVO.java index 316a237..049bed7 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewRespVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewRespVO.java @@ -300,4 +300,7 @@ public class ContractViewRespVO { // 合同动态条款 private List dynamicsItems; + + // 价款结算条款 + private List formulas; } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractFormulaDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractFormulaDO.java index 2c92df2..5fb92d1 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractFormulaDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractFormulaDO.java @@ -28,10 +28,10 @@ public class ContractFormulaDO extends BusinessBaseDO { @TableId(type = IdType.ASSIGN_ID) private Long id; /** - * 合同明细主键 + * 合同主键 */ - @TableField("CTRT_DTL_ID") - private Long contractDetailId; + @TableField("CTRT_ID") + private Long contractId; /** * 公式类型;单价/总价/水扣款/加工费 */ 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 783cd53..dc64e89 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,6 +1,7 @@ package com.zt.plat.module.contractorder.service.contract; import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.ContractApprovalReqVO; import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.ContractPageReqVO; import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.ContractSaveReqVO; import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.ContractViewRespVO; @@ -53,4 +54,6 @@ public interface ContractService { * @return 审批结果 */ String submitApproval(Long id); + + String approval(@Valid ContractApprovalReqVO reqVO); } 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 a891525..fd003dd 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 @@ -142,74 +142,74 @@ public class ContractServiceImpl implements ContractService { contractPlanMapper.insert(planDO); }); } + }); + } - // 价款结算条款 - if (detail.getFormulas() != null && !detail.getFormulas().isEmpty()) { - detail.getFormulas().forEach(formula -> { - // 价款结算条款DO - ContractFormulaDO formulaDO = BeanUtils.toBean(formula, ContractFormulaDO.class); - // 合同明细主键 - formulaDO.setContractDetailId(detailDOId); - // 保存价款结算条款 - contractFormulaMapper.insert(formulaDO); + // 价款结算条款 + if (reqVO.getFormulas() != null && !reqVO.getFormulas().isEmpty()) { + reqVO.getFormulas().forEach(formula -> { + // 价款结算条款DO + ContractFormulaDO formulaDO = BeanUtils.toBean(formula, ContractFormulaDO.class); + // 合同主键 + formulaDO.setContractId(contractId); + // 保存价款结算条款 + contractFormulaMapper.insert(formulaDO); - // 价款结算条款ID - Long formulaDOId = formulaDO.getId(); - // 基础系数配置 - if (formula.getCoefficients() != null && !formula.getCoefficients().isEmpty()) { - formula.getCoefficients().forEach(coefficient -> { - // 基础系数配置DO - ContractCoefficientDO coefficientDO = BeanUtils.toBean(coefficient, ContractCoefficientDO.class); - // 条款主键 - coefficientDO.setFormulaId(formulaDOId); - // 保存基础系数配置 - contractCoefficientMapper.insert(coefficientDO); - }); - } - // 品位等级价配置 - if (formula.getGrades() != null && !formula.getGrades().isEmpty()) { - formula.getGrades().forEach(grade -> { - // 品位等级价配置DO - ContractGradeDO gradeDO = BeanUtils.toBean(grade, ContractGradeDO.class); - // 条款主键 - gradeDO.setFormulaId(formulaDOId); - // 保存品位等级价配置 - contractGradeMapper.insert(gradeDO); - }); - } - // 调整价配置 - if (formula.getDeducts() != null && !formula.getDeducts().isEmpty()) { - formula.getDeducts().forEach(deduct -> { - // 调整价配置DO - ContractDeductDO deductDO = BeanUtils.toBean(deduct, ContractDeductDO.class); - // 条款主键 - deductDO.setFormulaId(formulaDOId); - // 保存品位等级价配置 - contractDeductMapper.insert(deductDO); - }); - } - // 市场价配置 - if (formula.getPrices()!= null && !formula.getPrices().isEmpty()) { - formula.getPrices().forEach(price -> { - // 市场价配置DO - ContractPriceDO priceDO = BeanUtils.toBean(price, ContractPriceDO.class); - // 条款主键 - priceDO.setFormulaId(formulaDOId); - // 保存市场价配置 - contractPriceMapper.insert(priceDO); - }); - } - // 品位不计价配置 - if (formula.getNots() != null && !formula.getNots().isEmpty()) { - formula.getNots().forEach(not -> { - // 品位不计价配置DO - ContractNotDO notDO = BeanUtils.toBean(not, ContractNotDO.class); - // 条款主键 - notDO.setFormulaId(formulaDOId); - // 保存品位不计价配置 - contractNotMapper.insert(notDO); - }); - } + // 价款结算条款ID + Long formulaDOId = formulaDO.getId(); + // 基础系数配置 + if (formula.getCoefficients() != null && !formula.getCoefficients().isEmpty()) { + formula.getCoefficients().forEach(coefficient -> { + // 基础系数配置DO + ContractCoefficientDO coefficientDO = BeanUtils.toBean(coefficient, ContractCoefficientDO.class); + // 条款主键 + coefficientDO.setFormulaId(formulaDOId); + // 保存基础系数配置 + contractCoefficientMapper.insert(coefficientDO); + }); + } + // 品位等级价配置 + if (formula.getGrades() != null && !formula.getGrades().isEmpty()) { + formula.getGrades().forEach(grade -> { + // 品位等级价配置DO + ContractGradeDO gradeDO = BeanUtils.toBean(grade, ContractGradeDO.class); + // 条款主键 + gradeDO.setFormulaId(formulaDOId); + // 保存品位等级价配置 + contractGradeMapper.insert(gradeDO); + }); + } + // 调整价配置 + if (formula.getDeducts() != null && !formula.getDeducts().isEmpty()) { + formula.getDeducts().forEach(deduct -> { + // 调整价配置DO + ContractDeductDO deductDO = BeanUtils.toBean(deduct, ContractDeductDO.class); + // 条款主键 + deductDO.setFormulaId(formulaDOId); + // 保存品位等级价配置 + contractDeductMapper.insert(deductDO); + }); + } + // 市场价配置 + if (formula.getPrices()!= null && !formula.getPrices().isEmpty()) { + formula.getPrices().forEach(price -> { + // 市场价配置DO + ContractPriceDO priceDO = BeanUtils.toBean(price, ContractPriceDO.class); + // 条款主键 + priceDO.setFormulaId(formulaDOId); + // 保存市场价配置 + contractPriceMapper.insert(priceDO); + }); + } + // 品位不计价配置 + if (formula.getNots() != null && !formula.getNots().isEmpty()) { + formula.getNots().forEach(not -> { + // 品位不计价配置DO + ContractNotDO notDO = BeanUtils.toBean(not, ContractNotDO.class); + // 条款主键 + notDO.setFormulaId(formulaDOId); + // 保存品位不计价配置 + contractNotMapper.insert(notDO); }); } }); @@ -259,46 +259,46 @@ public class ContractServiceImpl implements ContractService { if (planDOS != null && !planDOS.isEmpty()) { detail.setPlans(BeanUtils.toBean(planDOS, ContractViewPlanRespVO.class)); } + }); + } - // 查询并设置价款结算条款 - List formulaDOS = contractFormulaMapper - .selectList(TableFieldConstants.BSE_CTRT_FMU_CTRT_DTL_ID, detail.getId()); - if (formulaDOS != null && !formulaDOS.isEmpty()) { - detail.setFormulas(BeanUtils.toBean(formulaDOS, ContractViewFormulaRespVO.class)); + // 查询并设置价款结算条款 + List formulaDOS = contractFormulaMapper + .selectList(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, contractMainDO.getId()); + if (formulaDOS != null && !formulaDOS.isEmpty()) { + respVO.setFormulas(BeanUtils.toBean(formulaDOS, ContractViewFormulaRespVO.class)); - detail.getFormulas().forEach(formula -> { + 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, ContractViewCoefficientRespVO.class)); - } - // 查询并设置品位等级价配置 - List gradeDOS = contractGradeMapper - .selectList(TableFieldConstants.BSE_CTRT_GRD_FMU_ID, formula.getId()); - if (gradeDOS != null && !gradeDOS.isEmpty()) { - formula.setGrades(BeanUtils.toBean(gradeDOS, ContractViewGradeRespVO.class)); - } - // 查询并设置调整价配置 - List deductDOS = contractDeductMapper - .selectList(TableFieldConstants.BSE_CTRT_DDCT_FMU_ID, formula.getId()); - if (deductDOS != null && !deductDOS.isEmpty()) { - formula.setDeducts(BeanUtils.toBean(deductDOS, ContractViewDeductRespVO.class)); - } - // 查询并设置市场价配置 - List priceDOS = contractPriceMapper - .selectList(TableFieldConstants.BSE_CTRT_PRC_FMU_ID, formula.getId()); - if (priceDOS != null && !priceDOS.isEmpty()) { - formula.setPrices(BeanUtils.toBean(priceDOS, ContractViewPriceRespVO.class)); - } - // 查询并设置品位不计价配置 - List notDOS = contractNotMapper - .selectList(TableFieldConstants.BSE_CTRT_NT_FMU_ID, formula.getId()); - if (notDOS != null && !notDOS.isEmpty()) { - formula.setNots(BeanUtils.toBean(notDOS, ContractViewNotRespVO.class)); - } - }); + // 查询并设置基础系数配置 + List coefficientDOS = contractCoefficientMapper + .selectList(TableFieldConstants.BSE_CTRT_COEF_FMU_ID, formula.getId()); + if (coefficientDOS != null && !coefficientDOS.isEmpty()) { + formula.setCoefficients(BeanUtils.toBean(coefficientDOS, ContractViewCoefficientRespVO.class)); + } + // 查询并设置品位等级价配置 + List gradeDOS = contractGradeMapper + .selectList(TableFieldConstants.BSE_CTRT_GRD_FMU_ID, formula.getId()); + if (gradeDOS != null && !gradeDOS.isEmpty()) { + formula.setGrades(BeanUtils.toBean(gradeDOS, ContractViewGradeRespVO.class)); + } + // 查询并设置调整价配置 + List deductDOS = contractDeductMapper + .selectList(TableFieldConstants.BSE_CTRT_DDCT_FMU_ID, formula.getId()); + if (deductDOS != null && !deductDOS.isEmpty()) { + formula.setDeducts(BeanUtils.toBean(deductDOS, ContractViewDeductRespVO.class)); + } + // 查询并设置市场价配置 + List priceDOS = contractPriceMapper + .selectList(TableFieldConstants.BSE_CTRT_PRC_FMU_ID, formula.getId()); + if (priceDOS != null && !priceDOS.isEmpty()) { + formula.setPrices(BeanUtils.toBean(priceDOS, ContractViewPriceRespVO.class)); + } + // 查询并设置品位不计价配置 + List notDOS = contractNotMapper + .selectList(TableFieldConstants.BSE_CTRT_NT_FMU_ID, formula.getId()); + if (notDOS != null && !notDOS.isEmpty()) { + formula.setNots(BeanUtils.toBean(notDOS, ContractViewNotRespVO.class)); } }); } @@ -378,37 +378,37 @@ public class ContractServiceImpl implements ContractService { // 删除交货计划 contractPlanMapper.delete(TableFieldConstants.BSE_CTRT_PLN_CTRT_DTL_ID, detailDOId.toString()); - - // 查询价款结算条款 - List formulaDOS = contractFormulaMapper - .selectList(TableFieldConstants.BSE_CTRT_FMU_CTRT_DTL_ID, detailDOId.toString()); - 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()); - // 删除品位不计价配置 - contractNotMapper.delete(TableFieldConstants.BSE_CTRT_NT_FMU_ID, formulaDOId.toString()); - }); - } - - // 删除价款结算条款 - contractFormulaMapper.delete(TableFieldConstants.BSE_CTRT_FMU_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()); + // 删除品位不计价配置 + contractNotMapper.delete(TableFieldConstants.BSE_CTRT_NT_FMU_ID, formulaDOId.toString()); + }); + + // 删除价款结算条款 + contractFormulaMapper.delete(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, id.toString()); + } + // 重新插入关联信息 if (reqVO.getDetail() != null && !reqVO.getDetail().isEmpty()) { reqVO.getDetail().forEach(detail -> { @@ -432,74 +432,74 @@ public class ContractServiceImpl implements ContractService { contractPlanMapper.insert(planDO); }); } + }); + } - // 价款结算条款 - if (detail.getFormulas() != null && !detail.getFormulas().isEmpty()) { - detail.getFormulas().forEach(formula -> { - // 价款结算条款DO - ContractFormulaDO formulaDO = BeanUtils.toBean(formula, ContractFormulaDO.class); - // 合同明细主键 - formulaDO.setContractDetailId(detailDOId); - // 保存价款结算条款 - contractFormulaMapper.insert(formulaDO); + // 价款结算条款 + if (reqVO.getFormulas() != null && !reqVO.getFormulas().isEmpty()) { + reqVO.getFormulas().forEach(formula -> { + // 价款结算条款DO + ContractFormulaDO formulaDO = BeanUtils.toBean(formula, ContractFormulaDO.class); + // 合同主键 + formulaDO.setContractId(id); + // 保存价款结算条款 + contractFormulaMapper.insert(formulaDO); - // 价款结算条款ID - Long formulaDOId = formulaDO.getId(); - // 基础系数配置 - if (formula.getCoefficients() != null && !formula.getCoefficients().isEmpty()) { - formula.getCoefficients().forEach(coefficient -> { - // 基础系数配置DO - ContractCoefficientDO coefficientDO = BeanUtils.toBean(coefficient, ContractCoefficientDO.class); - // 条款主键 - coefficientDO.setFormulaId(formulaDOId); - // 保存基础系数配置 - contractCoefficientMapper.insert(coefficientDO); - }); - } - // 品位等级价配置 - if (formula.getGrades() != null && !formula.getGrades().isEmpty()) { - formula.getGrades().forEach(grade -> { - // 品位等级价配置DO - ContractGradeDO gradeDO = BeanUtils.toBean(grade, ContractGradeDO.class); - // 条款主键 - gradeDO.setFormulaId(formulaDOId); - // 保存品位等级价配置 - contractGradeMapper.insert(gradeDO); - }); - } - // 调整价配置 - if (formula.getDeducts() != null && !formula.getDeducts().isEmpty()) { - formula.getDeducts().forEach(deduct -> { - // 调整价配置DO - ContractDeductDO deductDO = BeanUtils.toBean(deduct, ContractDeductDO.class); - // 条款主键 - deductDO.setFormulaId(formulaDOId); - // 保存品位等级价配置 - contractDeductMapper.insert(deductDO); - }); - } - // 市场价配置 - if (formula.getPrices()!= null && !formula.getPrices().isEmpty()) { - formula.getPrices().forEach(price -> { - // 市场价配置DO - ContractPriceDO priceDO = BeanUtils.toBean(price, ContractPriceDO.class); - // 条款主键 - priceDO.setFormulaId(formulaDOId); - // 保存市场价配置 - contractPriceMapper.insert(priceDO); - }); - } - // 品位不计价配置 - if (formula.getNots() != null && !formula.getNots().isEmpty()) { - formula.getNots().forEach(not -> { - // 品位不计价配置DO - ContractNotDO notDO = BeanUtils.toBean(not, ContractNotDO.class); - // 条款主键 - notDO.setFormulaId(formulaDOId); - // 保存品位不计价配置 - contractNotMapper.insert(notDO); - }); - } + // 价款结算条款ID + Long formulaDOId = formulaDO.getId(); + // 基础系数配置 + if (formula.getCoefficients() != null && !formula.getCoefficients().isEmpty()) { + formula.getCoefficients().forEach(coefficient -> { + // 基础系数配置DO + ContractCoefficientDO coefficientDO = BeanUtils.toBean(coefficient, ContractCoefficientDO.class); + // 条款主键 + coefficientDO.setFormulaId(formulaDOId); + // 保存基础系数配置 + contractCoefficientMapper.insert(coefficientDO); + }); + } + // 品位等级价配置 + if (formula.getGrades() != null && !formula.getGrades().isEmpty()) { + formula.getGrades().forEach(grade -> { + // 品位等级价配置DO + ContractGradeDO gradeDO = BeanUtils.toBean(grade, ContractGradeDO.class); + // 条款主键 + gradeDO.setFormulaId(formulaDOId); + // 保存品位等级价配置 + contractGradeMapper.insert(gradeDO); + }); + } + // 调整价配置 + if (formula.getDeducts() != null && !formula.getDeducts().isEmpty()) { + formula.getDeducts().forEach(deduct -> { + // 调整价配置DO + ContractDeductDO deductDO = BeanUtils.toBean(deduct, ContractDeductDO.class); + // 条款主键 + deductDO.setFormulaId(formulaDOId); + // 保存品位等级价配置 + contractDeductMapper.insert(deductDO); + }); + } + // 市场价配置 + if (formula.getPrices()!= null && !formula.getPrices().isEmpty()) { + formula.getPrices().forEach(price -> { + // 市场价配置DO + ContractPriceDO priceDO = BeanUtils.toBean(price, ContractPriceDO.class); + // 条款主键 + priceDO.setFormulaId(formulaDOId); + // 保存市场价配置 + contractPriceMapper.insert(priceDO); + }); + } + // 品位不计价配置 + if (formula.getNots() != null && !formula.getNots().isEmpty()) { + formula.getNots().forEach(not -> { + // 品位不计价配置DO + ContractNotDO notDO = BeanUtils.toBean(not, ContractNotDO.class); + // 条款主键 + notDO.setFormulaId(formulaDOId); + // 保存品位不计价配置 + contractNotMapper.insert(notDO); }); } }); @@ -561,27 +561,68 @@ public class ContractServiceImpl implements ContractService { 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()); + if (StringUtils.isNotBlank(contractMainDO.getProcessInstanceId())) { + + // TODO:驳回状态重新提交审批处理 + // 进入审批流程的合同,查询当前审批的任务节点 + List taskList = bpmTaskApi.getTaskListByProcessInstanceId(contractMainDO.getProcessInstanceId()).getData(); + } else { + + // 未进入审批流程的合同,创建审批流程 + 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 "提交审批成功"; } - contractMainDO.setStatus(ContractStatusEnum.UNDER_REVIEW.getCode()); - contractMainMapper.updateById(contractMainDO); - return "提交审批成功"; } return "提交审批失败"; } + @Override + public String approval(ContractApprovalReqVO reqVO) { + + // 合同主键ID + Long id = reqVO.getId(); + + // 判断主键 + if (ObjectUtils.isEmpty(id)) { + throw exception(CONTRACT_ID_NOT_EXISTS); + } + + // 查询合同是否存在 + ContractMainDO contractMainDO = contractMainMapper.selectById(id); + if (contractMainDO == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + + // 合同状态校验 + if (ContractStatusEnum.DRAFT.getCode().equals(contractMainDO.getStatus()) + || ContractStatusEnum.IN_PROGRESS.getCode().equals(contractMainDO.getStatus()) + || ContractStatusEnum.REJECTED.getCode().equals(contractMainDO.getStatus()) + || ContractStatusEnum.TERMINATED.getCode().equals(contractMainDO.getStatus()) + || ContractStatusEnum.ARCHIVED.getCode().equals(contractMainDO.getStatus()) + || ContractStatusEnum.DELETED.getCode().equals(contractMainDO.getStatus())) { + + throw exception(CONTRACT_STATUS_NOT_APPROVAL, + ContractStatusEnum.valueOf(contractMainDO.getStatus()).getLabel()); + } + + return ""; + } + /** * 校验合同内容 *