From a2d9178c8e95dd98b95548f3f9457eb2766f6c95 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Thu, 16 Oct 2025 16:10:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A0=E7=94=A8=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=20=E6=B7=BB=E5=8A=A0=E5=BD=92=E6=A1=A3=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=20=E6=8F=90=E4=BA=A4=E5=AE=A1=E6=89=B9=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E8=B0=83=E6=95=B4=20=E5=90=88=E5=90=8C=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=A0=A1=E9=AA=8C=E4=BF=AE=E6=94=B9=20=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/ErrorCodeConstants.java | 3 +- .../admin/contract/ContractController.java | 23 ++---- .../vo/contract/ContractSaveReqVO.java | 6 +- .../vo/contract/FormulaSaveReqVO.java | 3 +- .../service/contract/ContractService.java | 10 ++- .../service/contract/ContractServiceImpl.java | 74 ++++++++++++++----- 6 files changed, 78 insertions(+), 41 deletions(-) diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErrorCodeConstants.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErrorCodeConstants.java index 1a83532..ac8df7a 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 @@ -23,5 +23,6 @@ public interface ErrorCodeConstants { ErrorCode CONTRACT_STATUS_NOT_APPROVAL = new ErrorCode(1_027_000_008, "{}状态合同不允许审核"); ErrorCode CONTRACT_ERP_COMPANY_PLEASE_BIND = new ErrorCode(1_027_000_009, "请先绑定{}ERP公司信息"); ErrorCode CONTRACT_STATUS_NOT_DELETE = new ErrorCode(1_027_000_010, "{}状态合同不允许删除"); - ErrorCode CONTRACT_ERP_RCV_DLVY_NOT_EXISTS = new ErrorCode(1_027_000_010, "不存在的收支类型或收支类型为空"); + ErrorCode CONTRACT_ERP_RCV_DLVY_NOT_EXISTS = new ErrorCode(1_027_000_011, "不存在的收支类型或收支类型为空"); + ErrorCode CONTRACT_STATUS_NOT_ARCHIVE = new ErrorCode(1_027_000_012, "{}状态合同不允许归档"); } 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 70dee2a..3424b4d 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 @@ -108,10 +108,10 @@ public class ContractController implements BusinessControllerMarker { } // TODO - @PostMapping("/preview") - @Operation(summary = "预览文件 TODO") - @PreAuthorize("@ss.hasPermission('base:contract:preview')") - public void preview() { + @PostMapping("/cancel") + @Operation(summary = "作废 TODO") + @PreAuthorize("@ss.hasPermission('base:contract:cancel')") + public void cancel() { } // TODO @@ -121,17 +121,17 @@ public class ContractController implements BusinessControllerMarker { public void complete() { } - // TODO @PostMapping("/archive") - @Operation(summary = "归档 TODO") + @Operation(summary = "归档") @PreAuthorize("@ss.hasPermission('base:contract:archive')") - public void archive() { + public CommonResult archive(@RequestBody List ids) { + return success(contractService.archive(ids)); } @GetMapping("/submit/approval") @Operation(summary = "合同提交审批") @PreAuthorize("@ss.hasPermission('base:contract:approval')") - public CommonResult submitApproval(@RequestParam("id") Long id) { + public CommonResult submitApproval(@RequestParam("id") Long id) { return success(contractService.submitApproval(id)); } @@ -143,13 +143,6 @@ public class ContractController implements BusinessControllerMarker { return success(contractService.approval(reqVO)); } - // TODO - @PostMapping("/view/approval") - @Operation(summary = "查看审批 TODO") - @PreAuthorize("@ss.hasPermission('base:contract:approval')") - public void viewApproval() { - } - @PostMapping("/submit/erp") @Operation(summary = "提交ERP") @PreAuthorize("@ss.hasPermission('base:contract:erp')") 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 738d3b9..3cd354e 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 @@ -162,9 +162,6 @@ public class ContractSaveReqVO { @Schema(description = "备注;与ERP(BZXX)对应", example = "备注") private String remark; - // 物料信息 - private List detail; - // 扩展信息 @Schema(description = "原币金额-变更后;与ERP(BGHHTYBZJE)对应,拓展信息") private BigDecimal changeCooAmount; @@ -216,6 +213,9 @@ public class ContractSaveReqVO { @Schema(description = "模板实例主键", example = "10196") private Long instanceId; + // 物料信息 + private List detail; + // 合同动态表单 private List dynamicsFields; 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/FormulaSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/FormulaSaveReqVO.java index 42026d7..aed20f9 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/FormulaSaveReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/FormulaSaveReqVO.java @@ -1,5 +1,6 @@ package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; +import cn.hutool.json.JSONArray; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import lombok.Data; @@ -45,7 +46,7 @@ public class FormulaSaveReqVO { private String elementName; @Schema(description = "结算类型,多条使用逗号分隔(字典:PRCH_STLM_TP)", example = "1") - private String settlementType; + private JSONArray settlementType; // 基础系数配置 private List coefficients; 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 2e0bbfd..1a8e418 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 @@ -56,7 +56,7 @@ public interface ContractService { * @param id 合同ID * @return 提交审批结果 */ - String submitApproval(Long id); + Boolean submitApproval(Long id); /** * 合同审批 @@ -169,4 +169,12 @@ public interface ContractService { * @return 压缩文件流 */ ResponseEntity download(List ids); + + /** + * 归档 + * + * @param ids 合同ID集合 + * @return 归档结果 + */ + Boolean archive(List ids); } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java index 12905e3..41adb86 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 @@ -687,6 +687,17 @@ public class ContractServiceImpl implements ContractService { throw exception(CONTRACT_NOT_EXISTS); } + // 合同状态校验 + if (!(DictEnum.BSE_CTRT_STS_DRAFT.getCode().equals(oldContractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_REJECTED.getCode().equals(oldContractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_WAIT_PUSH.getCode().equals(oldContractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_PUSH_ERROR.getCode().equals(oldContractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(oldContractMainDO.getStatus()))) { + + throw exception(CONTRACT_STATUS_NOT_UPDATE, + DictEnum.getByCode(oldContractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + } + // 校验合同名称是否重复 ContractMainDO contract = contractMainMapper.selectOne(new QueryWrapper() .eq(TableFieldConstants.BSE_CTRT_MAIN_CTRT_NAME, reqVO.getContractName()) @@ -705,17 +716,6 @@ public class ContractServiceImpl implements ContractService { } } - // 合同状态校验 - if (DictEnum.BSE_CTRT_STS_DELETED.getCode().equals(oldContractMainDO.getStatus()) - || DictEnum.BSE_CTRT_STS_ARCHIVED.getCode().equals(oldContractMainDO.getStatus()) - || DictEnum.BSE_CTRT_STS_TERMINATED.getCode().equals(oldContractMainDO.getStatus()) - || DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(oldContractMainDO.getStatus()) - || DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode().equals(oldContractMainDO.getStatus())) { - - throw exception(CONTRACT_STATUS_NOT_UPDATE, - DictEnum.getByCode(oldContractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); - } - // 请求更新的合同信息 ContractMainDO newContractMainDO = BeanUtils.toBean(reqVO, ContractMainDO.class); @@ -906,6 +906,15 @@ public class ContractServiceImpl implements ContractService { templateInstanceDataService.setTemplateInstanceData(templateInstanceDataDOS); } + // 合同状态更新 + if (DictEnum.BSE_CTRT_STS_PUSH_ERROR.getCode().equals(oldContractMainDO.getStatus())) { + // “推送失败”的状态编辑后状态变为“待推送” + newContractMainDO.setStatus(DictEnum.BSE_CTRT_STS_WAIT_PUSH.getCode()); + } else if (DictEnum.BSE_CTRT_STS_REJECTED.getCode().equals(oldContractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(oldContractMainDO.getStatus())) { + newContractMainDO.setStatus(DictEnum.BSE_CTRT_STS_WAIT_AUDIT.getCode()); + } + // 更新合同主信息 int updateNum = contractMainMapper.updateById(newContractMainDO); @@ -990,7 +999,7 @@ public class ContractServiceImpl implements ContractService { } @Override - public String submitApproval(Long id) { + public Boolean submitApproval(Long id) { // 判断主键 if (ObjectUtils.isEmpty(id)) { @@ -1004,11 +1013,8 @@ public class ContractServiceImpl implements ContractService { } // 合同状态校验 - if (DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode().equals(contractMainDO.getStatus()) - || DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(contractMainDO.getStatus()) - || DictEnum.BSE_CTRT_STS_TERMINATED.getCode().equals(contractMainDO.getStatus()) - || DictEnum.BSE_CTRT_STS_ARCHIVED.getCode().equals(contractMainDO.getStatus()) - || DictEnum.BSE_CTRT_STS_DELETED.getCode().equals(contractMainDO.getStatus())) { + if (!(DictEnum.BSE_CTRT_STS_DRAFT.getCode().equals(contractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_WAIT_AUDIT.getCode().equals(contractMainDO.getStatus()))) { throw exception(CONTRACT_STATUS_NOT_SUBMIT_APPROVAL, DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); @@ -1023,7 +1029,7 @@ public class ContractServiceImpl implements ContractService { if (StringUtils.isNotBlank(contractMainDO.getProcessInstanceId())) { - // TODO:驳回状态重新提交审批处理 + // TODO:待审核状态重新提交审批处理 // 进入审批流程的合同,查询当前审批的任务节点 List taskList = bpmTaskApi.getTaskListByProcessInstanceId(contractMainDO.getProcessInstanceId()).getData(); } else { @@ -1044,11 +1050,11 @@ public class ContractServiceImpl implements ContractService { } contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode()); contractMainMapper.updateById(contractMainDO); - return "提交审批成功"; + return true; } } - return "提交审批失败"; + return false; } @Override @@ -1465,6 +1471,34 @@ public class ContractServiceImpl implements ContractService { } } + @Override + public Boolean archive(List ids) { + + // 遍历合同ID + ids.forEach(id -> { + + // 查询合同是否存在 + ContractMainDO contractMainDO = contractMainMapper.selectById(id); + if (contractMainDO == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + + // 合同状态校验 + if (!DictEnum.BSE_CTRT_STS_TERMINATED.getCode().equals(contractMainDO.getStatus())) { + throw exception(CONTRACT_STATUS_NOT_ARCHIVE, + DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + } + + // 设置归档状态 + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_ARCHIVED.getCode()); + + // 更新合同 + contractMainMapper.updateById(contractMainDO); + }); + + return true; + } + /** * 校验合同内容 *