From fff41eda04963f4e3ee071f9ba762ecd2f566786 Mon Sep 17 00:00:00 2001 From: wyw <13885678+wyw0828@user.noreply.gitee.com> Date: Mon, 5 Aug 2024 10:19:26 +0800 Subject: [PATCH 1/7] =?UTF-8?q?[fix]=20=E6=9B=B4=E6=96=B0=E6=9E=9A?= =?UTF-8?q?=E4=B8=BE=E7=B1=BB=EF=BC=8C=E5=AD=97=E5=85=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/BpmProcessInstanceCreateReqDTO.java | 1 + .../module/cms/enums/DictTypeConstants.java | 12 +++--- .../module/cms/enums/ProcessStatusEnum.java | 43 +++++++++++++++++++ .../admin/contract/vo/ContractPageReqVO.java | 7 ++- .../admin/contract/vo/ContractRespVO.java | 8 ++++ .../admin/contract/vo/ContractSaveReqVO.java | 6 +++ .../vo/ContractHistoryPageReqVO.java | 6 +++ .../vo/ContractHistoryRespVO.java | 7 +++ .../vo/ContractHistorySaveReqVO.java | 7 +++ .../extContract/vo/ExtContractPageReqVO.java | 4 ++ .../extContract/vo/ExtContractRespVO.java | 7 +++ .../extContract/vo/ExtContractSaveReqVO.java | 7 +++ .../vo/ExtContractHistoryPageReqVO.java | 5 +++ .../vo/ExtContractHistoryRespVO.java | 10 +++-- .../vo/ExtContractHistorySaveReqVO.java | 8 ++++ .../vo/OutsContractPageReqVO.java | 6 ++- .../outscontract/vo/OutsContractRespVO.java | 5 ++- .../vo/OutsContractSaveReqVO.java | 5 ++- .../dal/dataobject/contract/ContractDO.java | 3 ++ .../module/pms/enums/DictTypeConstants.java | 1 + .../module/pms/api/project/ProjectImpl.java | 6 +-- .../admin/project/ProjectController.java | 3 -- .../dataobject/project/ProjectDetailDO.java | 2 +- 23 files changed, 147 insertions(+), 22 deletions(-) create mode 100644 yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ProcessStatusEnum.java diff --git a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/dto/BpmProcessInstanceCreateReqDTO.java b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/dto/BpmProcessInstanceCreateReqDTO.java index b1ac35366..80a683aeb 100644 --- a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/dto/BpmProcessInstanceCreateReqDTO.java +++ b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/dto/BpmProcessInstanceCreateReqDTO.java @@ -19,6 +19,7 @@ public class BpmProcessInstanceCreateReqDTO { */ @NotEmpty(message = "流程定义的标识不能为空") private String processDefinitionKey; + /** * 变量实例(动态表单) */ diff --git a/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/DictTypeConstants.java b/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/DictTypeConstants.java index 1a947294a..91217c6c0 100644 --- a/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/DictTypeConstants.java +++ b/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/DictTypeConstants.java @@ -8,9 +8,11 @@ package cn.iocoder.yudao.module.cms.enums; public interface DictTypeConstants { // ***** 字典名称 ****** - String Contract_Type = "contract_type"; // 合同类型 - - - - + String CONTRACT_TYPE = "contract_type"; // 合同类型 + String CONTRACT_STATUS = "contract_status"; // 合同类型 + String COUNT_TYPE = "count_type"; + String SOURCE = "source"; + String PROCESS_STATUS = "process_status"; + String CHARGING_STANDARD = "charging_standard"; + String OUTS_CONTRACT_MAJOR = "outs_contract_major"; } diff --git a/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ProcessStatusEnum.java b/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ProcessStatusEnum.java new file mode 100644 index 000000000..92f1bb771 --- /dev/null +++ b/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ProcessStatusEnum.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.cms.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author wyw + * @description 收费标注枚举 + * @date 2024/7/31 + */ +@Getter +@AllArgsConstructor +public enum ProcessStatusEnum { + //未执行 + NO_EXECUTION("0","NO_EXECUTION"), + //正在执行 + EXECUTING("1","EXECUTING"), + //执行完成 + COMPLETED("2","COMPLETED"); + + /** + * 类型编号 + */ + private final String code; + /** + * 类型编码 + */ + private final String no; + + /** + * 通过code获取no + * @param code 字典编号 + * @return 类型编码 + */ + public static String getNoByCode(String code) { + for (ProcessStatusEnum value : values()) { + if (value.getCode().equals(code)) { + return value.getNo(); + } + } + return null; + } +} diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractPageReqVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractPageReqVO.java index fc0b264a8..00ba59e1b 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractPageReqVO.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractPageReqVO.java @@ -1,5 +1,7 @@ package cn.iocoder.yudao.module.cms.controller.admin.contract.vo; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.module.cms.enums.DictTypeConstants; import lombok.*; import io.swagger.v3.oas.annotations.media.Schema; import cn.iocoder.yudao.framework.common.pojo.PageParam; @@ -18,14 +20,17 @@ public class ContractPageReqVO extends PageParam { private String name; @Schema(description = "合同类型", example = "2") + @DictFormat(DictTypeConstants.CONTRACT_TYPE) private String type; - @Schema(description = "合同进展") + @Schema(description = "合同进展",example = "1") private String progress; @Schema(description = "合同状态", example = "1") + @DictFormat(DictTypeConstants.CONTRACT_STATUS) private String status; @Schema(description = "计费方式", example = "1") + @DictFormat(DictTypeConstants.COUNT_TYPE) private String countType; } \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractRespVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractRespVO.java index 7930e78ce..cea132a62 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractRespVO.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractRespVO.java @@ -1,5 +1,8 @@ package cn.iocoder.yudao.module.cms.controller.admin.contract.vo; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; + +import cn.iocoder.yudao.module.cms.enums.DictTypeConstants; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; @@ -50,6 +53,7 @@ public class ContractRespVO { @Schema(description = "合同类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") @ExcelProperty("合同类型") + @DictFormat(DictTypeConstants.CONTRACT_TYPE) private String type; @Schema(description = "合同进展", requiredMode = Schema.RequiredMode.REQUIRED) @@ -74,12 +78,15 @@ public class ContractRespVO { @Schema(description = "合同状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @ExcelProperty("合同状态") + @DictFormat(DictTypeConstants.CONTRACT_STATUS) private String status; @Schema(description = "计费方式", example = "1") @ExcelProperty("计费方式") + @DictFormat(DictTypeConstants.CONTRACT_TYPE) private String countType; + @Schema(description = "备注", example = "随便") @ExcelProperty("备注") private String remark; @@ -94,6 +101,7 @@ public class ContractRespVO { @Schema(description = "资金来源") @ExcelProperty("资金来源") + @DictFormat(DictTypeConstants.SOURCE) private String source; @Schema(description = "优惠", example = "17910") diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractSaveReqVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractSaveReqVO.java index bb8057619..ab0007f10 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractSaveReqVO.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractSaveReqVO.java @@ -1,4 +1,6 @@ package cn.iocoder.yudao.module.cms.controller.admin.contract.vo; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.module.cms.enums.DictTypeConstants; import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; @@ -53,6 +55,7 @@ public class ContractSaveReqVO { @Schema(description = "合同类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") @NotEmpty(message = "合同类型不能为空") + @DictFormat(DictTypeConstants.CONTRACT_TYPE) private String type; @Schema(description = "合同进展", requiredMode = Schema.RequiredMode.REQUIRED) @@ -75,9 +78,11 @@ public class ContractSaveReqVO { @Schema(description = "合同状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @NotEmpty(message = "合同状态不能为空") + @DictFormat(DictTypeConstants.CONTRACT_STATUS) private String status; @Schema(description = "计费方式", example = "1") + @DictFormat(DictTypeConstants.CONTRACT_TYPE) private String countType; @Schema(description = "备注", example = "随便") @@ -90,6 +95,7 @@ public class ContractSaveReqVO { private BigDecimal constructionCost; @Schema(description = "资金来源") + @DictFormat(DictTypeConstants.SOURCE) private String source; @Schema(description = "优惠", example = "17910") diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contractHistory/vo/ContractHistoryPageReqVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contractHistory/vo/ContractHistoryPageReqVO.java index 5b14bce58..dc0d25252 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contractHistory/vo/ContractHistoryPageReqVO.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contractHistory/vo/ContractHistoryPageReqVO.java @@ -1,5 +1,7 @@ package cn.iocoder.yudao.module.cms.controller.admin.contractHistory.vo; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.module.cms.enums.DictTypeConstants; import lombok.*; import io.swagger.v3.oas.annotations.media.Schema; import cn.iocoder.yudao.framework.common.pojo.PageParam; @@ -22,18 +24,22 @@ public class ContractHistoryPageReqVO extends PageParam { private String name; @Schema(description = "合同类型", example = "2") + @DictFormat(DictTypeConstants.CONTRACT_TYPE) private String type; @Schema(description = "合同进展") private String progress; @Schema(description = "合同状态", example = "1") + @DictFormat(DictTypeConstants.CONTRACT_STATUS) private String status; @Schema(description = "计费方式") + @DictFormat(DictTypeConstants.CONTRACT_TYPE) private String countType; @Schema(description = "流程状态", example = "2") + @DictFormat(DictTypeConstants.PROCESS_STATUS) private String processStatus; } \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contractHistory/vo/ContractHistoryRespVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contractHistory/vo/ContractHistoryRespVO.java index 56537018e..7375c7994 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contractHistory/vo/ContractHistoryRespVO.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contractHistory/vo/ContractHistoryRespVO.java @@ -1,5 +1,7 @@ package cn.iocoder.yudao.module.cms.controller.admin.contractHistory.vo; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.module.cms.enums.DictTypeConstants; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; @@ -52,6 +54,7 @@ public class ContractHistoryRespVO { @Schema(description = "合同类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") @ExcelProperty("合同类型") + @DictFormat(DictTypeConstants.CONTRACT_TYPE) private String type; @Schema(description = "合同进展", requiredMode = Schema.RequiredMode.REQUIRED) @@ -76,10 +79,12 @@ public class ContractHistoryRespVO { @Schema(description = "合同状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @ExcelProperty("合同状态") + @DictFormat(DictTypeConstants.CONTRACT_STATUS) private String status; @Schema(description = "计费方式", example = "2") @ExcelProperty("计费方式") + @DictFormat(DictTypeConstants.CONTRACT_TYPE) private String countType; @Schema(description = "备注", example = "你猜") @@ -96,6 +101,7 @@ public class ContractHistoryRespVO { @Schema(description = "资金来源") @ExcelProperty("资金来源") + @DictFormat(DictTypeConstants.SOURCE) private String source; @Schema(description = "优惠", example = "18154") @@ -153,6 +159,7 @@ public class ContractHistoryRespVO { @Schema(description = "流程状态", example = "2") @ExcelProperty("流程状态") + @DictFormat(DictTypeConstants.PROCESS_STATUS) private String processStatus; @Schema(description = "版本") diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contractHistory/vo/ContractHistorySaveReqVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contractHistory/vo/ContractHistorySaveReqVO.java index a2aafce34..1cd995f31 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contractHistory/vo/ContractHistorySaveReqVO.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contractHistory/vo/ContractHistorySaveReqVO.java @@ -1,5 +1,7 @@ package cn.iocoder.yudao.module.cms.controller.admin.contractHistory.vo; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.module.cms.enums.DictTypeConstants; import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; @@ -55,6 +57,7 @@ public class ContractHistorySaveReqVO { @Schema(description = "合同类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") @NotEmpty(message = "合同类型不能为空") + @DictFormat(DictTypeConstants.CONTRACT_TYPE) private String type; @Schema(description = "合同进展", requiredMode = Schema.RequiredMode.REQUIRED) @@ -77,9 +80,11 @@ public class ContractHistorySaveReqVO { @Schema(description = "合同状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @NotEmpty(message = "合同状态不能为空") + @DictFormat(DictTypeConstants.CONTRACT_STATUS) private String status; @Schema(description = "计费方式", example = "2") + @DictFormat(DictTypeConstants.CONTRACT_TYPE) private String countType; @Schema(description = "备注", example = "你猜") @@ -92,6 +97,7 @@ public class ContractHistorySaveReqVO { private BigDecimal constructionCost; @Schema(description = "资金来源") + @DictFormat(DictTypeConstants.SOURCE) private String source; @Schema(description = "优惠", example = "18154") @@ -132,6 +138,7 @@ public class ContractHistorySaveReqVO { private BigDecimal otherFee; @Schema(description = "流程状态", example = "2") + @DictFormat(DictTypeConstants.PROCESS_STATUS) private String processStatus; @Schema(description = "合同", example = "20704") diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extContract/vo/ExtContractPageReqVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extContract/vo/ExtContractPageReqVO.java index 4fc4adbab..757a6cf17 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extContract/vo/ExtContractPageReqVO.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extContract/vo/ExtContractPageReqVO.java @@ -1,5 +1,7 @@ package cn.iocoder.yudao.module.cms.controller.admin.extContract.vo; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.module.cms.enums.DictTypeConstants; import lombok.*; import io.swagger.v3.oas.annotations.media.Schema; import cn.iocoder.yudao.framework.common.pojo.PageParam; @@ -22,6 +24,7 @@ public class ExtContractPageReqVO extends PageParam { private String name; @Schema(description = "合同类型", example = "1") + @DictFormat(DictTypeConstants.CONTRACT_TYPE) private String type; @Schema(description = "客户公司id", example = "25191") @@ -32,6 +35,7 @@ public class ExtContractPageReqVO extends PageParam { @Schema(description = "状态", example = "2") + @DictFormat(DictTypeConstants.CONTRACT_STATUS) private String status; @Schema(description = "合同id", example = "27460") diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extContract/vo/ExtContractRespVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extContract/vo/ExtContractRespVO.java index d5aa08842..f169659a6 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extContract/vo/ExtContractRespVO.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extContract/vo/ExtContractRespVO.java @@ -1,5 +1,7 @@ package cn.iocoder.yudao.module.cms.controller.admin.extContract.vo; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.module.cms.enums.DictTypeConstants; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import lombok.*; @@ -23,6 +25,7 @@ public class ExtContractRespVO { @Schema(description = "合同类型", example = "1") @ExcelProperty("合同类型") + @DictFormat(DictTypeConstants.CONTRACT_TYPE) private String type; @@ -60,6 +63,7 @@ public class ExtContractRespVO { @Schema(description = "状态", example = "2") @ExcelProperty("状态") + @DictFormat(DictTypeConstants.CONTRACT_STATUS) private String status; @Schema(description = "合同金额", requiredMode = Schema.RequiredMode.REQUIRED) @@ -88,6 +92,7 @@ public class ExtContractRespVO { @Schema(description = "计费方式", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @ExcelProperty("计费方式") + @DictFormat(DictTypeConstants.COUNT_TYPE) private String countType; @Schema(description = "备注", example = "你猜") @@ -104,6 +109,7 @@ public class ExtContractRespVO { @Schema(description = "资金来源") @ExcelProperty("资金来源") + @DictFormat(DictTypeConstants.SOURCE) private String source; @Schema(description = "分包合同提示时间") @@ -112,6 +118,7 @@ public class ExtContractRespVO { @Schema(description = "收费标准", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("收费标准") + @DictFormat(DictTypeConstants.CHARGING_STANDARD) private String chargingStandard; @Schema(description = "优惠", example = "15529") diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extContract/vo/ExtContractSaveReqVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extContract/vo/ExtContractSaveReqVO.java index 67d5ec89c..5e6c2f3bf 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extContract/vo/ExtContractSaveReqVO.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extContract/vo/ExtContractSaveReqVO.java @@ -1,5 +1,7 @@ package cn.iocoder.yudao.module.cms.controller.admin.extContract.vo; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.module.cms.enums.DictTypeConstants; import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; @@ -49,6 +51,7 @@ public class ExtContractSaveReqVO { @Schema(description = "合同类型", example = "1") @ExcelProperty("合同类型") + @DictFormat(DictTypeConstants.CONTRACT_TYPE) private String type; @Schema(description = "合同进展") @@ -65,6 +68,7 @@ public class ExtContractSaveReqVO { private LocalDateTime archiveTime; @Schema(description = "状态", example = "2") + @DictFormat(DictTypeConstants.CONTRACT_STATUS) private String status; @Schema(description = "合同金额", requiredMode = Schema.RequiredMode.REQUIRED) @@ -88,6 +92,7 @@ public class ExtContractSaveReqVO { @Schema(description = "计费方式", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @NotEmpty(message = "计费方式不能为空") + @DictFormat(DictTypeConstants.COUNT_TYPE) private String countType; @Schema(description = "备注", example = "你猜") @@ -100,10 +105,12 @@ public class ExtContractSaveReqVO { private BigDecimal constructionCost; @Schema(description = "资金来源") + @DictFormat(DictTypeConstants.SOURCE) private String source; @Schema(description = "收费标准", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "收费标准不能为空") + @DictFormat(DictTypeConstants.CHARGING_STANDARD) private String chargingStandard; @Schema(description = "优惠", example = "15529") diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontracthistory/vo/ExtContractHistoryPageReqVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontracthistory/vo/ExtContractHistoryPageReqVO.java index 19c243ce0..0cf88784d 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontracthistory/vo/ExtContractHistoryPageReqVO.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontracthistory/vo/ExtContractHistoryPageReqVO.java @@ -1,5 +1,7 @@ package cn.iocoder.yudao.module.cms.controller.admin.extcontracthistory.vo; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.module.cms.enums.DictTypeConstants; import lombok.*; import io.swagger.v3.oas.annotations.media.Schema; import cn.iocoder.yudao.framework.common.pojo.PageParam; @@ -19,12 +21,14 @@ public class ExtContractHistoryPageReqVO extends PageParam { private String name; @Schema(description = "合同类型", example = "1") + @DictFormat(DictTypeConstants.CONTRACT_TYPE) private String type; @Schema(description = "客户公司id", example = "28989") private Long customerCompanyId; @Schema(description = "状态", example = "1") + @DictFormat(DictTypeConstants.CONTRACT_STATUS) private String status; @@ -32,6 +36,7 @@ public class ExtContractHistoryPageReqVO extends PageParam { private String processInstanceId; @Schema(description = "流程状态", example = "2") + @DictFormat(DictTypeConstants.PROCESS_STATUS) private String processStatus; @Schema(description = "合同id", example = "26795") diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontracthistory/vo/ExtContractHistoryRespVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontracthistory/vo/ExtContractHistoryRespVO.java index 098b59fe6..bffa16f0c 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontracthistory/vo/ExtContractHistoryRespVO.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontracthistory/vo/ExtContractHistoryRespVO.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.cms.controller.admin.extcontracthistory.vo; +import cn.iocoder.yudao.module.cms.enums.DictTypeConstants; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.math.BigDecimal; @@ -50,6 +51,7 @@ public class ExtContractHistoryRespVO { @Schema(description = "合同类型", example = "1") @ExcelProperty("合同类型") + @DictFormat(DictTypeConstants.CONTRACT_TYPE) private String type; @@ -72,6 +74,7 @@ public class ExtContractHistoryRespVO { @Schema(description = "状态", example = "1") @ExcelProperty("状态") + @DictFormat(DictTypeConstants.CONTRACT_STATUS) private String status; @@ -98,7 +101,7 @@ public class ExtContractHistoryRespVO { @Schema(description = "计费方式", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") @ExcelProperty(value = "计费方式", converter = DictConvert.class) - @DictFormat("contract_billing_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.COUNT_TYPE) private String countType; @Schema(description = "备注", example = "你猜") @@ -115,11 +118,12 @@ public class ExtContractHistoryRespVO { @Schema(description = "资金来源") @ExcelProperty(value = "资金来源", converter = DictConvert.class) - @DictFormat("funds_source") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.COUNT_TYPE) private String source; @Schema(description = "收费标准", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("收费标准") + @DictFormat(DictTypeConstants.CHARGING_STANDARD) private String chargingStandard; @Schema(description = "优惠", example = "7511") @@ -152,7 +156,7 @@ public class ExtContractHistoryRespVO { @Schema(description = "流程状态", example = "2") @ExcelProperty(value = "流程状态", converter = DictConvert.class) - @DictFormat("bpm_process_instance_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.PROCESS_STATUS) private String processStatus; @Schema(description = "合同id", example = "26795") diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontracthistory/vo/ExtContractHistorySaveReqVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontracthistory/vo/ExtContractHistorySaveReqVO.java index 8e0c57b14..233c5fe6c 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontracthistory/vo/ExtContractHistorySaveReqVO.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontracthistory/vo/ExtContractHistorySaveReqVO.java @@ -1,5 +1,7 @@ package cn.iocoder.yudao.module.cms.controller.admin.extcontracthistory.vo; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.module.cms.enums.DictTypeConstants; import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; @@ -51,6 +53,7 @@ public class ExtContractHistorySaveReqVO { private String name; @Schema(description = "合同类型", example = "1") + @DictFormat(DictTypeConstants.CONTRACT_TYPE) private String type; @@ -69,6 +72,7 @@ public class ExtContractHistorySaveReqVO { private LocalDateTime archiveTime; @Schema(description = "状态", example = "1") + @DictFormat(DictTypeConstants.CONTRACT_STATUS) private String status; @Schema(description = "合同金额", requiredMode = Schema.RequiredMode.REQUIRED) @@ -92,6 +96,7 @@ public class ExtContractHistorySaveReqVO { @Schema(description = "计费方式", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") @NotEmpty(message = "计费方式不能为空") + @DictFormat(DictTypeConstants.COUNT_TYPE) private String countType; @Schema(description = "备注", example = "你猜") @@ -104,10 +109,12 @@ public class ExtContractHistorySaveReqVO { private BigDecimal constructionCost; @Schema(description = "资金来源") + @DictFormat(DictTypeConstants.SOURCE) private String source; @Schema(description = "收费标准", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "收费标准不能为空") + @DictFormat(DictTypeConstants.CHARGING_STANDARD) private String chargingStandard; @Schema(description = "优惠", example = "7511") @@ -131,6 +138,7 @@ public class ExtContractHistorySaveReqVO { @Schema(description = "流程状态", example = "2") + @DictFormat(DictTypeConstants.PROCESS_STATUS) private String processStatus; @Schema(description = "合同id", example = "26795") diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/vo/OutsContractPageReqVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/vo/OutsContractPageReqVO.java index dcdd444b2..c20a6cbcf 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/vo/OutsContractPageReqVO.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/vo/OutsContractPageReqVO.java @@ -1,6 +1,8 @@ package cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo; import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.module.cms.enums.DictTypeConstants; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -27,7 +29,8 @@ public class OutsContractPageReqVO extends PageParam { @Schema(description = "主合同id", example = "19816") private Long contractId; - @Schema(description = "类型", example = "2") + @Schema(description = "计费类型", example = "2") + @DictFormat(DictTypeConstants.COUNT_TYPE) private String countType; @Schema(description = "合同金额") @@ -37,6 +40,7 @@ public class OutsContractPageReqVO extends PageParam { private String code; @Schema(description = "专业") + @DictFormat(DictTypeConstants.OUTS_CONTRACT_MAJOR) private String major; @Schema(description = "签订时间") diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/vo/OutsContractRespVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/vo/OutsContractRespVO.java index 6d4362f17..0d45dfc40 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/vo/OutsContractRespVO.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/vo/OutsContractRespVO.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo; import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; +import cn.iocoder.yudao.module.cms.enums.DictTypeConstants; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; @@ -47,7 +48,7 @@ public class OutsContractRespVO { @Schema(description = "外包合同类型", example = "2") @ExcelProperty(value = "外包合同类型", converter = DictConvert.class) - @DictFormat("contract_billing_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.COUNT_TYPE) private String countType; @Schema(description = "外包合同总额") @@ -56,7 +57,7 @@ public class OutsContractRespVO { @Schema(description = "专业") @ExcelProperty(value = "专业", converter = DictConvert.class) - @DictFormat("major") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.OUTS_CONTRACT_MAJOR) private String major; @Schema(description = "签订时间") diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/vo/OutsContractSaveReqVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/vo/OutsContractSaveReqVO.java index 11ee23f5a..2c92065e0 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/vo/OutsContractSaveReqVO.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/vo/OutsContractSaveReqVO.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo; import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; +import cn.iocoder.yudao.module.cms.enums.DictTypeConstants; import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; @@ -53,7 +54,7 @@ public class OutsContractSaveReqVO { @Schema(description = "外包合同类型", example = "2") @ExcelProperty(value = "外包合同类型", converter = DictConvert.class) - @DictFormat("contract_billing_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.COUNT_TYPE) private String countType; @@ -64,7 +65,7 @@ public class OutsContractSaveReqVO { @Schema(description = "专业") @ExcelProperty(value = "专业", converter = DictConvert.class) - @DictFormat("major") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.OUTS_CONTRACT_MAJOR) private String major; @Schema(description = "签订时间") diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/dataobject/contract/ContractDO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/dataobject/contract/ContractDO.java index 08af77378..11a00f3d6 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/dataobject/contract/ContractDO.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/dataobject/contract/ContractDO.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.cms.dal.dataobject.contract; +import cn.iocoder.yudao.module.pms.enums.DictTypeConstants; import lombok.*; import java.time.LocalDateTime; @@ -38,6 +39,8 @@ public class ContractDO extends BaseDO { private String name; /** * 合同类型 + * + * 枚举 枚举 {@link DictTypeConstants} */ private String type; /** diff --git a/yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/DictTypeConstants.java b/yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/DictTypeConstants.java index 25ab8a4f0..e53f2abc2 100644 --- a/yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/DictTypeConstants.java +++ b/yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/DictTypeConstants.java @@ -14,6 +14,7 @@ public interface DictTypeConstants { String PROCESS_STATUS = "process_status"; // 流程状态 String POSSIBILITY_OF_LANDING = "possibility_of_landing"; // 可能性 String BPM_PROCESS_INSTANCE_STATUS = "bpm_process_instance_status"; // 流程实例状态 + String TRACKING_DEPLOYMENT = "tracking_deployment"; diff --git a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/api/project/ProjectImpl.java b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/api/project/ProjectImpl.java index 50861cb82..141a84f70 100644 --- a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/api/project/ProjectImpl.java +++ b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/api/project/ProjectImpl.java @@ -26,15 +26,13 @@ public class ProjectImpl implements ProjectApi { @Override public ProjectRespDTO getProject(Long projectId) { ProjectDO projectDO = projectMapper.selectById(projectId); - ProjectRespDTO projectRespDTO = BeanUtils.toBean(projectDO, ProjectRespDTO.class); - return projectRespDTO; + return BeanUtils.toBean(projectDO, ProjectRespDTO.class); } @Override public ProjectDetailRespDTO getProjectDetailById(Long projectId) { ProjectDetailDO projectMapperDetail = projectMapper.getDetailById(projectId); - ProjectDetailRespDTO detailRespDTO = BeanUtils.toBean(projectMapperDetail, ProjectDetailRespDTO.class); - return detailRespDTO; + return BeanUtils.toBean(projectMapperDetail, ProjectDetailRespDTO.class); } @Override diff --git a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/project/ProjectController.java b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/project/ProjectController.java index 4516fb40b..c2c8935f6 100644 --- a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/project/ProjectController.java +++ b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/project/ProjectController.java @@ -1,6 +1,5 @@ package cn.iocoder.yudao.module.pms.controller.admin.project; -import cn.iocoder.yudao.framework.common.pojo.FileDTO; import cn.iocoder.yudao.framework.common.util.file.FileUtils; import cn.iocoder.yudao.module.pms.dal.dataobject.project.ProjectDetailDO; import org.springframework.web.bind.annotation.*; @@ -11,7 +10,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; -import jakarta.validation.constraints.*; import jakarta.validation.*; import jakarta.servlet.http.*; import java.util.*; @@ -30,7 +28,6 @@ import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; import cn.iocoder.yudao.module.pms.controller.admin.project.vo.*; -import cn.iocoder.yudao.module.pms.dal.dataobject.project.ProjectDO; import cn.iocoder.yudao.module.pms.service.project.ProjectService; @Tag(name = "管理后台 - 项目基本信息") diff --git a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/project/ProjectDetailDO.java b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/project/ProjectDetailDO.java index b847a4a7b..51d83d857 100644 --- a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/project/ProjectDetailDO.java +++ b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/project/ProjectDetailDO.java @@ -8,7 +8,7 @@ import lombok.Data; * @date 2024/7/4 */ @Data -public class ProjectDetailDO extends ProjectDO{ +public class ProjectDetailDO extends ProjectDO { /** * 跟踪部门 From 579a6475664fe798baba174004b7589f8903f5eb Mon Sep 17 00:00:00 2001 From: wyw <13885678+wyw0828@user.noreply.gitee.com> Date: Tue, 6 Aug 2024 16:05:31 +0800 Subject: [PATCH 2/7] =?UTF-8?q?[feat]=20=E6=96=B0=E5=A2=9E=E5=90=88?= =?UTF-8?q?=E5=90=8C=E7=AE=A1=E7=90=86=E4=B8=AD=E7=9A=84=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bpm/api/task/BpmProcessInstanceApi.java | 20 +++ .../task/dto/BpmProcessDefinitionRespDTO.java | 115 ++++++++++++++ .../task/dto/BpmProcessInstanceRespDTO.java | 118 ++++++++++++++ .../bpm/api/task/dto/BpmTaskRespDTO.java | 144 ++++++++++++++++++ .../api/task/BpmProcessInstanceApiImpl.java | 101 ++++++++++++ .../vo/instance/BpmProcessInstanceRespVO.java | 1 + .../cms/enums/ChargingStandardEnum.java | 6 +- .../module/cms/enums/ContractStatusEnum.java | 10 +- .../module/cms/enums/ContractTypeEnum.java | 8 +- .../yudao/module/cms/enums/CountTypeEnum.java | 4 +- .../cms/enums/OutsContractMajorEnum.java | 10 +- .../module/cms/enums/ProcessStatusEnum.java | 6 +- .../yudao/module/cms/enums/SourceEnum.java | 6 +- .../admin/contract/ContractController.java | 16 ++ .../vo/ContractProcessInstanceRespVO.java | 82 ++++++++++ .../cms/service/contract/ContractService.java | 7 +- .../service/contract/ContractServiceImpl.java | 39 ++++- .../ContractHistoryServiceImpl.java | 1 + .../extContract/ExtContractServiceImpl.java | 2 +- .../ExtContractHistoryServiceImpl.java | 2 +- .../outscontract/OutsContractServiceImpl.java | 2 +- .../OutsContractHistoryServiceImpl.java | 2 +- 22 files changed, 671 insertions(+), 31 deletions(-) create mode 100644 yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/dto/BpmProcessDefinitionRespDTO.java create mode 100644 yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/dto/BpmProcessInstanceRespDTO.java create mode 100644 yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/dto/BpmTaskRespDTO.java create mode 100644 yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractProcessInstanceRespVO.java diff --git a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/BpmProcessInstanceApi.java b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/BpmProcessInstanceApi.java index e4eddf6eb..07c9bd25c 100644 --- a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/BpmProcessInstanceApi.java +++ b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/BpmProcessInstanceApi.java @@ -2,8 +2,12 @@ package cn.iocoder.yudao.module.bpm.api.task; import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; +import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceRespDTO; +import cn.iocoder.yudao.module.bpm.api.task.dto.BpmTaskRespDTO; import jakarta.validation.Valid; +import java.util.List; + /** * 流程实例 Api 接口 * @@ -20,4 +24,20 @@ public interface BpmProcessInstanceApi { */ String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqDTO reqDTO); + + /** + * 查询流程 + * + * @param id 流程id + * @return + */ + BpmProcessInstanceRespDTO getProcessInstance(String id); + + + /** + * 查询指定流程的任务 + * @param id 流程id + * @return + */ + List getTask(String id); } diff --git a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/dto/BpmProcessDefinitionRespDTO.java b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/dto/BpmProcessDefinitionRespDTO.java new file mode 100644 index 000000000..2ebbe3ac9 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/dto/BpmProcessDefinitionRespDTO.java @@ -0,0 +1,115 @@ +package cn.iocoder.yudao.module.bpm.api.task.dto; + +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * 流程定义 + */ +@Data +public class BpmProcessDefinitionRespDTO { + /** + * 编号 + */ + private String id; + + /** + * 版本 + */ + private Integer version; + + /** + * 流程名称 + */ + private String name; + + /** + * 流程标识 + */ + private String key; + + /** + * 流程图标 + */ + private String icon; + + /** + * 流程描述 + */ + private String description; + + /** + * 流程分类 + */ + private String category; + /** + * 流程分类名字 + */ + private String categoryName; + + /** + * 表单类型 + */ + private Integer formType; + + /** + * 表单编号 + */ + private Long formId; + + /** + * 表单名字 + */ + private String formName; + /** + * 表单的配置 + */ + private String formConf; + + /** + * 表单项的数组 + */ + private List formFields; + + /** + * 自定义表单的提交路径 + */ + private String formCustomCreatePath; + + /** + * 自定义表单的查看路径 + */ + private String formCustomViewPath; + + /** + * 中断状态-参见 SuspensionState 枚举 + */ + private Integer suspensionState; // 参见 SuspensionState 枚举 + + /** + * 部署时间 + */ + private LocalDateTime deploymentTime; // 需要从对应的 Deployment 读取,非必须返回 + + /** + * BPMN XML + */ + private String bpmnXml; // 需要从对应的 BpmnModel 读取,非必须返回 + + /** + * 发起用户需要选择审批人的任务数组 + */ + private List startUserSelectTasks; // 需要从对应的 BpmnModel 读取,非必须返回 + + @Data + public static class UserTask { + + private String id; + + private String name; + + } + +} diff --git a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/dto/BpmProcessInstanceRespDTO.java b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/dto/BpmProcessInstanceRespDTO.java new file mode 100644 index 000000000..93d7272d0 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/dto/BpmProcessInstanceRespDTO.java @@ -0,0 +1,118 @@ +package cn.iocoder.yudao.module.bpm.api.task.dto; + +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * 流程实例的获得 Resp DTO + */ +@Data +public class BpmProcessInstanceRespDTO { + + /** + * 流程实例编号 + */ + private String id; + + /** + * 流程实例名称 + */ + private String name; + + /** + * 流程分类 + */ + private String category; + + /** + * 流程分类名称 + */ + private String categoryName; + + /** + * 流程实例状态 + */ + private Integer status; // 参见 BpmProcessInstanceStatusEnum 枚举 + + /** + * 发起时间 + */ + private LocalDateTime startTime; + + /** + * 结束时间 + */ + private LocalDateTime endTime; + + /** + * 持续时间 + */ + private Long durationInMillis; + + /** + * 发起流程的用户 + */ + private User startUser; + + /** + * 流程定义编号 + */ + + private String processDefinitionId; + /** + * 流程定义 + */ + private BpmProcessDefinitionRespDTO processDefinition; + + + /** + * 当前审批中的任务 + */ + private List tasks; // 仅在流程实例分页才返回 + + /** + * 用户信息 + */ + @Data + public static class User { + /** + * 用户编号 + */ + private Long id; + /** + * 用户名称 + */ + private String nickname; + /** + * 部门编号 + */ + private Long deptId; + /** + * 部门名称 + */ + private String deptName; + + } + + /** + * 流程任务 + */ + @Data + public static class Task { + + /** + * 流程任务编号 + */ + private String id; + + /** + * 任务名称 + */ + private String name; + + + } + +} diff --git a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/dto/BpmTaskRespDTO.java b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/dto/BpmTaskRespDTO.java new file mode 100644 index 000000000..c0d9da9a2 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/dto/BpmTaskRespDTO.java @@ -0,0 +1,144 @@ +package cn.iocoder.yudao.module.bpm.api.task.dto; + +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + + +/** + * 指定流程实例的任务 + */ +@Data +public class BpmTaskRespDTO { + + /** + * 任务编号 + */ + private String id; + + /** + * 任务名字 + */ + private String name; + + /** + * 创建时间 + */ + + private LocalDateTime createTime; + + /** + * 结束时间 + */ + private LocalDateTime endTime; + + + /** + * 持续时间 + */ + private Long durationInMillis; + + /** + * 任务状态 + */ + private Integer status; // 参见 BpmTaskStatusEnum 枚举 + + /** + * 审批理由 + */ + private String reason; + + /** + * 负责人的用户信息 + */ + private BpmProcessInstanceRespDTO.User ownerUser; + /** + * 审核的用户信息 + */ + private BpmProcessInstanceRespDTO.User assigneeUser; + + /** + * 任务定义的标识 + */ + private String taskDefinitionKey; + + /** + * 所属流程实例编号 + */ + private String processInstanceId; + /** + * 所属流程实例 + */ + private ProcessInstance processInstance; + + /** + * 父任务编号 + */ + private String parentTaskId; + + /** + * 子任务列表(由加签生成) + */ + private List children; + + /** + * 表单编号 + */ + private Long formId; + + /** + * 表单名字 + */ + private String formName; + + /** + * 表单的配置-JSON 字符串 + */ + private String formConf; + + /** + * 表单项的数组 + */ + private List formFields; + + /** + * 提交的表单值 + */ + private Map formVariables; + + + /** + * 流程实例 + */ + @Data + public static class ProcessInstance { + + /** + * 流程实例编号 + */ + private String id; + + /** + * 流程实例名称 + */ + private String name; + + /** + * 提交时间 + */ + private LocalDateTime createTime; + + /** + * 流程定义的编号 + */ + private String processDefinitionId; + + /** + * 发起人的用户信息 + */ + private BpmProcessInstanceRespDTO.User startUser; + + } +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/api/task/BpmProcessInstanceApiImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/api/task/BpmProcessInstanceApiImpl.java index f8aea4d74..346116d47 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/api/task/BpmProcessInstanceApiImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/api/task/BpmProcessInstanceApiImpl.java @@ -1,13 +1,42 @@ package cn.iocoder.yudao.module.bpm.api.task; +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.util.number.NumberUtils; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; +import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceRespDTO; +import cn.iocoder.yudao.module.bpm.api.task.dto.BpmTaskRespDTO; +import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceRespVO; +import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskRespVO; +import cn.iocoder.yudao.module.bpm.convert.task.BpmProcessInstanceConvert; +import cn.iocoder.yudao.module.bpm.convert.task.BpmTaskConvert; +import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessDefinitionInfoDO; +import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils; +import cn.iocoder.yudao.module.bpm.service.definition.BpmFormService; +import cn.iocoder.yudao.module.bpm.service.definition.BpmProcessDefinitionService; import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService; +import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService; +import cn.iocoder.yudao.module.system.api.dept.DeptApi; +import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; +import cn.iocoder.yudao.module.system.api.user.AdminUserApi; +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; +import org.flowable.engine.history.HistoricProcessInstance; +import org.flowable.engine.repository.ProcessDefinition; +import org.flowable.task.api.history.HistoricTaskInstance; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import jakarta.annotation.Resource; import jakarta.validation.Valid; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Stream; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap; + /** * Flowable 流程实例 Api 实现类 * @@ -21,8 +50,80 @@ public class BpmProcessInstanceApiImpl implements BpmProcessInstanceApi { @Resource private BpmProcessInstanceService processInstanceService; + @Resource + private AdminUserApi adminUserApi; + + @Resource + private DeptApi deptApi; + + @Resource + private BpmProcessDefinitionService processDefinitionService; + + @Resource + private BpmTaskService taskService; + + @Resource + private BpmFormService formService; + @Override public String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqDTO reqDTO) { return processInstanceService.createProcessInstance(userId, reqDTO); } + + @Override + public BpmProcessInstanceRespDTO getProcessInstance(String id) { + + HistoricProcessInstance processInstance = processInstanceService.getHistoricProcessInstance(id); + if (processInstance == null) { + return null; + } + + // 拼接返回 + ProcessDefinition processDefinition = processDefinitionService.getProcessDefinition( + processInstance.getProcessDefinitionId()); + BpmProcessDefinitionInfoDO processDefinitionInfo = processDefinitionService.getProcessDefinitionInfo( + processInstance.getProcessDefinitionId()); + + String bpmnXml = BpmnModelUtils.getBpmnXml( + processDefinitionService.getProcessDefinitionBpmnModel(processInstance.getProcessDefinitionId())); + + AdminUserRespDTO startUser = adminUserApi.getUser(NumberUtils.parseLong(processInstance.getStartUserId())); + DeptRespDTO dept = null; + if (startUser != null) { + dept = deptApi.getDept(startUser.getDeptId()); + } + BpmProcessInstanceRespVO bpmProcessInstanceRespVO = BpmProcessInstanceConvert.INSTANCE.buildProcessInstance(processInstance, + processDefinition, processDefinitionInfo, bpmnXml, startUser, dept); + + return BeanUtils.toBean(bpmProcessInstanceRespVO, BpmProcessInstanceRespDTO.class); + + } + + //List + @Override + public List getTask(String id) { + List taskList = taskService.getTaskListByProcessInstanceId(id); + if (CollUtil.isEmpty(taskList)) { + return null; + } + + // 拼接数据 + HistoricProcessInstance processInstance = processInstanceService.getHistoricProcessInstance(id); + // 获得 User 和 Dept Map + Set userIds = convertSetByFlatMap(taskList, task -> + Stream.of(NumberUtils.parseLong(task.getAssignee()), NumberUtils.parseLong(task.getOwner()))); + userIds.add(NumberUtils.parseLong(processInstance.getStartUserId())); + Map userMap = adminUserApi.getUserMap(userIds); + Map deptMap = deptApi.getDeptMap( + convertSet(userMap.values(), AdminUserRespDTO::getDeptId)); + // 获得 Form Map + Map formMap = formService.getFormMap( + convertSet(taskList, task -> NumberUtils.parseLong(task.getFormKey()))); + List bpmTaskRespVOS = BpmTaskConvert.INSTANCE.buildTaskListByProcessInstanceId(taskList, processInstance, + formMap, userMap, deptMap); + return BeanUtils.toBean(bpmTaskRespVOS, BpmTaskRespDTO.class); + + } + + } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceRespVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceRespVO.java index ac6b90c7e..e2f54dcbc 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceRespVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceRespVO.java @@ -20,6 +20,7 @@ public class BpmProcessInstanceRespVO { @Schema(description = "流程分类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") private String category; + @Schema(description = "流程分类名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "请假") private String categoryName; diff --git a/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ChargingStandardEnum.java b/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ChargingStandardEnum.java index 2d193587d..1c03eceee 100644 --- a/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ChargingStandardEnum.java +++ b/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ChargingStandardEnum.java @@ -12,11 +12,11 @@ import lombok.Getter; @AllArgsConstructor public enum ChargingStandardEnum { //厦建设 - XIA_BUILDING("xia_building","XB"), + XIA_BUILDING("0","xia_building"), //包干价 - LUMP("lump","LU"), + LUMP("1","lump"), //其他省份 - OTHER("other","OT"); + OTHER("2","other"); /** * 类型编号 diff --git a/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ContractStatusEnum.java b/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ContractStatusEnum.java index 2a04d132f..3fac1c074 100644 --- a/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ContractStatusEnum.java +++ b/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ContractStatusEnum.java @@ -12,15 +12,15 @@ import lombok.Getter; @AllArgsConstructor public enum ContractStatusEnum { //应签未签 - NO_SIGN("no_sign","NS"), + NO_SIGN("0","no_sign"), //已拟定 - PREPARED("prepared","PP"), + PREPARED("1","prepared"), //已盖章 - STAMP("stamp","ST"), + STAMP("2","stamp"), //已签订 - SIGN("sign","SI"), + SIGN("3","sign"), //已终止 - TERMINATION("termination","TE"),; + TERMINATION("4","termination"),; /** * 类型编号 diff --git a/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ContractTypeEnum.java b/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ContractTypeEnum.java index 9444d6f71..e097bc5a1 100644 --- a/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ContractTypeEnum.java +++ b/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ContractTypeEnum.java @@ -12,13 +12,13 @@ import lombok.Getter; @AllArgsConstructor public enum ContractTypeEnum { //勘察设计 - SURVEY("survey","KS"), + SURVEY("0","survey"), //检测 - DETECTION("detection","JC"), + DETECTION("1","detection"), //总承包合同 - GENERAL_CONTRACT("general_contract","GC"), + GENERAL_CONTRACT("2","general_contract"), //全过程咨询 - PROCESS_CONSULTATION("process_consultation","PC"); + PROCESS_CONSULTATION("3","process_consultation"); /** diff --git a/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/CountTypeEnum.java b/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/CountTypeEnum.java index 8724675b0..bcaaef9f9 100644 --- a/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/CountTypeEnum.java +++ b/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/CountTypeEnum.java @@ -12,9 +12,9 @@ import lombok.Getter; @AllArgsConstructor public enum CountTypeEnum { //费率合同 - RATE_CONTRACT("rate_contract","RC"), + RATE_CONTRACT("0","rate_contract"), //包干合同 - RES_CONTRACT("res_contract","RC"); + RES_CONTRACT("1","res_contract"); /** * 类型编号 */ diff --git a/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/OutsContractMajorEnum.java b/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/OutsContractMajorEnum.java index 3755a157b..8b2f1e154 100644 --- a/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/OutsContractMajorEnum.java +++ b/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/OutsContractMajorEnum.java @@ -12,15 +12,15 @@ import lombok.Getter; @AllArgsConstructor public enum OutsContractMajorEnum { //地勘 - GROUND_SERVICE("ground_service","GE"), + GROUND_SERVICE("0","ground_service"), //景观 - SCENERY("scenery","SC"), + SCENERY("1","scenery"), //建筑 - ARCHITECTURE("architecture","AR"), + ARCHITECTURE("2","architecture"), //测量 - MEASURE("measure","ME"), + MEASURE("3","measure"), //效果图 - EFFECT_PICTURE("effect_picture","EF"); + EFFECT_PICTURE("4","effect_picture"); /** * 类型编号 diff --git a/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ProcessStatusEnum.java b/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ProcessStatusEnum.java index 92f1bb771..ce299aa36 100644 --- a/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ProcessStatusEnum.java +++ b/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ProcessStatusEnum.java @@ -12,11 +12,11 @@ import lombok.Getter; @AllArgsConstructor public enum ProcessStatusEnum { //未执行 - NO_EXECUTION("0","NO_EXECUTION"), + NO_EXECUTION("0","no_execution"), //正在执行 - EXECUTING("1","EXECUTING"), + EXECUTING("1","executing"), //执行完成 - COMPLETED("2","COMPLETED"); + COMPLETED("2","completed"); /** * 类型编号 diff --git a/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/SourceEnum.java b/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/SourceEnum.java index 2a4ec6b85..06d59c4d8 100644 --- a/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/SourceEnum.java +++ b/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/SourceEnum.java @@ -12,11 +12,11 @@ import lombok.Getter; @AllArgsConstructor public enum SourceEnum { //市财政 - MUNICIPAL_FINANCE("municipal_finance","MF"), + MUNICIPAL_FINANCE("0","municipal_finance"), //区财政 - DISTRICT_FINANCE("district_finance","DF"), + DISTRICT_FINANCE("1","district_finance"), //业主自筹 - OWNER_FINANCE("owner_finance","OF"); + OWNER_FINANCE("2","owner_finance"); /** * 类型编号 */ diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/ContractController.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/ContractController.java index f665ec800..94f0bda3e 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/ContractController.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/ContractController.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.cms.controller.admin.contract; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractProcessInstanceRespVO; import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractPageReqVO; import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractRespVO; import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractSaveReqVO; @@ -39,6 +40,8 @@ public class ContractController { @Resource private ContractService contractService; + + @PostMapping("/create") @Operation(summary = "创建合同") @PreAuthorize("@ss.hasPermission('cms:contract:create')") @@ -92,4 +95,17 @@ public class ContractController { ExcelUtils.write(response, "合同.xls", "数据", ContractRespVO.class, BeanUtils.toBean(list, ContractRespVO.class)); } + + @GetMapping("/get_process") + @Operation(summary = "查询流程") + @Parameter(name = "id", description = "合同id", required = true) + @PreAuthorize("@ss.hasPermission('cms:contract:process')") + public CommonResult getContractProcess(@RequestParam("id") Long id) { + ContractProcessInstanceRespVO contractProcessInstance = contractService.getContractProcess(id); + return success(contractProcessInstance); + } + + + + } \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractProcessInstanceRespVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractProcessInstanceRespVO.java new file mode 100644 index 000000000..8062c38ed --- /dev/null +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractProcessInstanceRespVO.java @@ -0,0 +1,82 @@ +package cn.iocoder.yudao.module.cms.controller.admin.contract.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +@Schema(description = "管理后台 - 流程实例的 Response VO") +@Data +public class ContractProcessInstanceRespVO { + + @Schema(description = "流程实例的编号", requiredMode = Schema.RequiredMode.REQUIRED) + private String id; + + @Schema(description = "流程名称", requiredMode = Schema.RequiredMode.REQUIRED) + private String name; + + @Schema(description = "流程分类", requiredMode = Schema.RequiredMode.REQUIRED) + private String category; + + @Schema(description = "流程分类名称", requiredMode = Schema.RequiredMode.REQUIRED) + private String categoryName; + + @Schema(description = "流程实例的状态", requiredMode = Schema.RequiredMode.REQUIRED) + private Integer status; // 参见 BpmProcessInstanceStatusEnum 枚举 + + @Schema(description = "发起时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime startTime; + + @Schema(description = "结束时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime endTime; + + @Schema(description = "持续时间", example = "1000") + private Long durationInMillis; + + @Schema(description = "提交的表单值", requiredMode = Schema.RequiredMode.REQUIRED) + private Map formVariables; + + @Schema(description = "业务的唯一标识-例如说,请假申请的编号", example = "1") + private String businessKey; + + /** + * 发起流程的用户 + */ + private User startUser; + + /** + * 当前审批中的任务 + */ + private List tasks; // 仅在流程实例分页才返回 + + @Schema(description = "用户信息") + @Data + public static class User { + + @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Long id; + @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + private String nickname; + + @Schema(description = "部门编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Long deptId; + @Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "研发部") + private String deptName; + + } + + @Schema(description = "流程任务") + @Data + public static class Task { + + @Schema(description = "流程任务的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private String id; + + @Schema(description = "任务名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + private String name; + + } + +} diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractService.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractService.java index 78a603faf..3a222b8e6 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractService.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractService.java @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.cms.service.contract; import jakarta.validation.*; import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.*; -import cn.iocoder.yudao.module.cms.dal.dataobject.contract.ContractDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; import java.math.BigDecimal; @@ -73,4 +72,10 @@ public interface ContractService { void validateContractExists(Long id); + /** + * 查询流程 + * @param id 合同id + */ + ContractProcessInstanceRespVO getContractProcess(Long id); + } \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractServiceImpl.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractServiceImpl.java index d8281c3a4..04722ea1c 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractServiceImpl.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractServiceImpl.java @@ -2,9 +2,12 @@ package cn.iocoder.yudao.module.cms.service.contract; import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi; import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; +import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceRespDTO; +import cn.iocoder.yudao.module.bpm.api.task.dto.BpmTaskRespDTO; import cn.iocoder.yudao.module.cms.dal.dataobject.contractHistory.ContractHistoryDO; import cn.iocoder.yudao.module.cms.dal.mysql.contract.ContractMapper; import cn.iocoder.yudao.module.cms.dal.mysql.contractHistory.ContractHistoryMapper; +import cn.iocoder.yudao.module.cms.enums.ContractTypeEnum; import cn.iocoder.yudao.module.pms.api.ProjectApi; import cn.iocoder.yudao.module.pms.api.project.dto.ProjectDetailRespDTO; import cn.iocoder.yudao.module.pms.api.project.dto.ProjectRespDTO; @@ -61,6 +64,9 @@ public class ContractServiceImpl implements ContractService { @Resource private ContractHistoryMapper contractHistoryMapper; + @Resource + private BpmProcessInstanceApi bpmProcessInstanceApi; + @Override public Long createContract(Long loginUserId, ContractSaveReqVO createReqVO) { @@ -83,7 +89,6 @@ public class ContractServiceImpl implements ContractService { ProjectDetailRespDTO projectDetail = projectApi.getProjectDetailById(projectId); - //todo 待提取 String code = createReqVO.getCode(); String trackingDep = createReqVO.getTrackingDep(); String projectManager = createReqVO.getProjectManager(); @@ -224,6 +229,8 @@ public class ContractServiceImpl implements ContractService { contractRespVO.setTrackingDep(projectDetail.getTrackingDepName()); contractRespVO.setProjectManager(projectDetail.getProjectManagerName()); + // TODO 枚举优化 + contractRespVO.setType(ContractTypeEnum.getNoByCode(contractRespVO.getType())); //分包合同商议提示 TODO 待优化 // ExtContractDO extContractDO = extContractMapper.selectOne("project_id", projectId); // LocalDateTime reminderTime = extContractDO.getReminderTime(); @@ -265,6 +272,36 @@ public class ContractServiceImpl implements ContractService { return pageResult; } + + @Override + public ContractProcessInstanceRespVO getContractProcess(Long id) { + validateContractExists(id); + //去历史里面找 + ContractHistoryDO contractHistory = contractHistoryMapper.selectOne("contract_id", id); + if (contractHistory == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + //拿到历史之后 找到process_instance_id 和 status + String processInstanceId = contractHistory.getProcessInstanceId(); + String processStatus = contractHistory.getProcessStatus(); + //与当前流程里的进行比较 + String status = String.valueOf(bpmProcessInstanceApi.getProcessInstance(processInstanceId).getStatus()); + + //如果不相等 + if (!status.equals(processStatus)){ + //更新当前合同对应历史表里面的状态 + contractHistory.setProcessStatus(status); + contractHistoryMapper.updateById(contractHistory); + } + //返回给前端必要的数据 当前流程里面对应的数据 + BpmProcessInstanceRespDTO processInstance = bpmProcessInstanceApi.getProcessInstance(processInstanceId); + List tasks = bpmProcessInstanceApi.getTask(processInstanceId); + List taskList = BeanUtils.toBean(tasks, BpmProcessInstanceRespDTO.Task.class); + processInstance.setTasks(taskList); + + return BeanUtils.toBean(processInstance, ContractProcessInstanceRespVO.class); + } + @Override public BigDecimal getProvisionalSettlementById(Long id) { ContractDO contractDO = contractMapper.selectById(id); diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contractHistory/ContractHistoryServiceImpl.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contractHistory/ContractHistoryServiceImpl.java index 309d2830e..72e5c1fb6 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contractHistory/ContractHistoryServiceImpl.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contractHistory/ContractHistoryServiceImpl.java @@ -95,6 +95,7 @@ public class ContractHistoryServiceImpl implements cn.iocoder.yudao.module.cms.s // 6.分包合同商议提示 √ // 7.暂定结算数 √ + // TODO 枚举优化 ProjectRespDTO project = projectApi.getProject(projectId); contractHistoryRespVO.setCode(project.getCode()); contractHistoryRespVO.setDrawingCompany(project.getDrawingCompany()); diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractServiceImpl.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractServiceImpl.java index 944da9772..e78289d97 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractServiceImpl.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractServiceImpl.java @@ -102,7 +102,7 @@ public class ExtContractServiceImpl implements ExtContractService { // 5.合同总金额 √ // 6.合同商议提示(和分包提示不一样)√ - //todo 待提取 + //todo 待提取 枚举优化 String code = createReqVO.getCode(); String trackingDep = createReqVO.getTrackingDep(); String projectManager = createReqVO.getProjectManager(); diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extcontracthistory/ExtContractHistoryServiceImpl.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extcontracthistory/ExtContractHistoryServiceImpl.java index a1f63d711..90e79001b 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extcontracthistory/ExtContractHistoryServiceImpl.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extcontracthistory/ExtContractHistoryServiceImpl.java @@ -104,7 +104,7 @@ public class ExtContractHistoryServiceImpl implements ExtContractHistoryService CustomerCompanyDO customerCompanyDO = customerCompanyMapper.selectById(customerCompanyId); String name = customerCompanyDO.getName(); HistoryResp.setCustomerCompanyName(name); - + // TODO 枚举优化 //合同总金额 diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractServiceImpl.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractServiceImpl.java index b3b843f3d..20b3b11ff 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractServiceImpl.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractServiceImpl.java @@ -94,7 +94,7 @@ public class OutsContractServiceImpl implements OutsContractService { // 3.项目经理 √ // 4.签订合同总额 √ - //todo 待提取 + //todo 待提取 枚举优化 String name = createReqVO.getName(); String trackingDep = createReqVO.getTrackingDep(); String projectManager = createReqVO.getProjectManager(); diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontracthistory/OutsContractHistoryServiceImpl.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontracthistory/OutsContractHistoryServiceImpl.java index 326f9010d..40623d0a4 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontracthistory/OutsContractHistoryServiceImpl.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontracthistory/OutsContractHistoryServiceImpl.java @@ -65,7 +65,7 @@ public class OutsContractHistoryServiceImpl implements OutsContractHistoryServic OutsContractHistoryRespVO outsContractHistoryResp = BeanUtils.toBean(outsContractHistoryDO, OutsContractHistoryRespVO.class); Long contractId = outsContractHistoryResp.getContractId(); ContractRespVO contract = contractService.getContract(contractId); - + // TODO 枚举优化 outsContractHistoryResp.setName(contract.getName()); outsContractHistoryResp.setTrackingDep(contract.getTrackingDep()); outsContractHistoryResp.setProjectManager(contract.getProjectManager()); From 684d20bedb4e4e412386c7e896b87b1ca7878051 Mon Sep 17 00:00:00 2001 From: wyw <13885678+wyw0828@user.noreply.gitee.com> Date: Tue, 6 Aug 2024 16:24:39 +0800 Subject: [PATCH 3/7] =?UTF-8?q?[fix]=20=E6=9E=9A=E4=B8=BE=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cms/service/contract/ContractServiceImpl.java | 6 ++++++ .../contractHistory/ContractHistoryServiceImpl.java | 7 +++++++ .../service/extContract/ExtContractServiceImpl.java | 12 ++++++++++++ .../ExtContractHistoryServiceImpl.java | 10 ++++++++++ .../outscontract/OutsContractServiceImpl.java | 4 ++++ .../OutsContractHistoryServiceImpl.java | 7 ++++++- 6 files changed, 45 insertions(+), 1 deletion(-) diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractServiceImpl.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractServiceImpl.java index 04722ea1c..54234cbe4 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractServiceImpl.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractServiceImpl.java @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.bpm.api.task.dto.BpmTaskRespDTO; import cn.iocoder.yudao.module.cms.dal.dataobject.contractHistory.ContractHistoryDO; import cn.iocoder.yudao.module.cms.dal.mysql.contract.ContractMapper; import cn.iocoder.yudao.module.cms.dal.mysql.contractHistory.ContractHistoryMapper; +import cn.iocoder.yudao.module.cms.enums.ContractStatusEnum; import cn.iocoder.yudao.module.cms.enums.ContractTypeEnum; import cn.iocoder.yudao.module.pms.api.ProjectApi; import cn.iocoder.yudao.module.pms.api.project.dto.ProjectDetailRespDTO; @@ -49,6 +50,8 @@ public class ContractServiceImpl implements ContractService { */ public static String VERSION = "1"; + + @Resource private ContractMapper contractMapper; @@ -231,6 +234,9 @@ public class ContractServiceImpl implements ContractService { // TODO 枚举优化 contractRespVO.setType(ContractTypeEnum.getNoByCode(contractRespVO.getType())); + contractRespVO.setStatus(ContractStatusEnum.getNoByCode(contractRespVO.getStatus())); + contractRespVO.setCountType(ContractStatusEnum.getNoByCode(contractRespVO.getCountType())); + contractRespVO.setSource(ContractStatusEnum.getNoByCode(contractRespVO.getSource())); //分包合同商议提示 TODO 待优化 // ExtContractDO extContractDO = extContractMapper.selectOne("project_id", projectId); // LocalDateTime reminderTime = extContractDO.getReminderTime(); diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contractHistory/ContractHistoryServiceImpl.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contractHistory/ContractHistoryServiceImpl.java index 72e5c1fb6..2d59fee32 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contractHistory/ContractHistoryServiceImpl.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contractHistory/ContractHistoryServiceImpl.java @@ -1,6 +1,8 @@ package cn.iocoder.yudao.module.cms.service.contractHistory; import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractRespVO; import cn.iocoder.yudao.module.cms.dal.dataobject.contract.ContractDO; +import cn.iocoder.yudao.module.cms.enums.ContractStatusEnum; +import cn.iocoder.yudao.module.cms.enums.ContractTypeEnum; import cn.iocoder.yudao.module.cms.service.contract.ContractService; import cn.iocoder.yudao.module.pms.api.ProjectApi; import cn.iocoder.yudao.module.pms.api.project.dto.ProjectDetailRespDTO; @@ -104,6 +106,11 @@ public class ContractHistoryServiceImpl implements cn.iocoder.yudao.module.cms.s contractHistoryRespVO.setTrackingDep(projectDetail.getTrackingDepName()); contractHistoryRespVO.setProjectManager(projectDetail.getProjectManagerName()); + contractHistoryRespVO.setType(ContractTypeEnum.getNoByCode(contractHistoryRespVO.getType())); + contractHistoryRespVO.setStatus(ContractStatusEnum.getNoByCode(contractHistoryRespVO.getStatus())); + contractHistoryRespVO.setCountType(ContractStatusEnum.getNoByCode(contractHistoryRespVO.getCountType())); + contractHistoryRespVO.setSource(ContractStatusEnum.getNoByCode(contractHistoryRespVO.getSource())); + //分包合同商议提示 TODO 待优化 // ExtContractDO extContractDO = extContractMapper.selectOne("project_id", projectId); // LocalDateTime reminderTime = extContractDO.getReminderTime(); diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractServiceImpl.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractServiceImpl.java index e78289d97..58e5a32b7 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractServiceImpl.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractServiceImpl.java @@ -11,6 +11,9 @@ import cn.iocoder.yudao.module.cms.dal.dataobject.extcontracthistory.ExtContract import cn.iocoder.yudao.module.cms.dal.mysql.customerCompany.CustomerCompanyMapper; import cn.iocoder.yudao.module.cms.dal.mysql.extcontract.ExtContractMapper; import cn.iocoder.yudao.module.cms.dal.mysql.extcontracthistory.ExtContractHistoryMapper; +import cn.iocoder.yudao.module.cms.enums.ChargingStandardEnum; +import cn.iocoder.yudao.module.cms.enums.ContractStatusEnum; +import cn.iocoder.yudao.module.cms.enums.ContractTypeEnum; import cn.iocoder.yudao.module.pms.api.ProjectApi; import cn.iocoder.yudao.module.pms.api.project.dto.ProjectDetailRespDTO; import cn.iocoder.yudao.module.pms.api.project.dto.ProjectRespDTO; @@ -111,6 +114,8 @@ public class ExtContractServiceImpl implements ExtContractService { BigDecimal amount = createReqVO.getAmount(); + + if (!project.getCode().equals(code)){ throw exception(PARAM_ERROR); } @@ -258,6 +263,13 @@ public class ExtContractServiceImpl implements ExtContractService { //合同商议提示 // TODO 待优化 extContractRespVO.setExReminderTime(null); + extContractRespVO.setType(ContractTypeEnum.getNoByCode(extContractRespVO.getType())); + extContractRespVO.setStatus(ContractStatusEnum.getNoByCode(extContractRespVO.getStatus())); + extContractRespVO.setCountType(ContractStatusEnum.getNoByCode(extContractRespVO.getCountType())); + extContractRespVO.setSource(ContractStatusEnum.getNoByCode(extContractRespVO.getSource())); + extContractRespVO.setChargingStandard(ChargingStandardEnum.getNoByCode(extContractRespVO.getChargingStandard())); + + return extContractRespVO; } diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extcontracthistory/ExtContractHistoryServiceImpl.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extcontracthistory/ExtContractHistoryServiceImpl.java index 90e79001b..c51e24470 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extcontracthistory/ExtContractHistoryServiceImpl.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extcontracthistory/ExtContractHistoryServiceImpl.java @@ -2,6 +2,9 @@ package cn.iocoder.yudao.module.cms.service.extcontracthistory; import cn.iocoder.yudao.module.cms.dal.dataobject.customerCompany.CustomerCompanyDO; import cn.iocoder.yudao.module.cms.dal.mysql.customerCompany.CustomerCompanyMapper; +import cn.iocoder.yudao.module.cms.enums.ChargingStandardEnum; +import cn.iocoder.yudao.module.cms.enums.ContractStatusEnum; +import cn.iocoder.yudao.module.cms.enums.ContractTypeEnum; import cn.iocoder.yudao.module.cms.service.extContract.ExtContractService; import cn.iocoder.yudao.module.pms.api.ProjectApi; import cn.iocoder.yudao.module.pms.api.project.dto.ProjectDetailRespDTO; @@ -114,6 +117,13 @@ public class ExtContractHistoryServiceImpl implements ExtContractHistoryService //合同商议提示 // TODO 待优化 HistoryResp.setExReminderTime(null); + HistoryResp.setType(ContractTypeEnum.getNoByCode(HistoryResp.getType())); + HistoryResp.setStatus(ContractStatusEnum.getNoByCode(HistoryResp.getStatus())); + HistoryResp.setCountType(ContractStatusEnum.getNoByCode(HistoryResp.getCountType())); + HistoryResp.setSource(ContractStatusEnum.getNoByCode(HistoryResp.getSource())); + HistoryResp.setChargingStandard(ChargingStandardEnum.getNoByCode(HistoryResp.getChargingStandard())); + + return HistoryResp; } diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractServiceImpl.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractServiceImpl.java index 20b3b11ff..6c5976751 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractServiceImpl.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractServiceImpl.java @@ -12,6 +12,7 @@ import cn.iocoder.yudao.module.cms.dal.dataobject.outscontract.OutsContractDO; import cn.iocoder.yudao.module.cms.dal.dataobject.outscontracthistory.OutsContractHistoryDO; import cn.iocoder.yudao.module.cms.dal.mysql.outscontract.OutsContractMapper; import cn.iocoder.yudao.module.cms.dal.mysql.outscontracthistory.OutsContractHistoryMapper; +import cn.iocoder.yudao.module.cms.enums.*; import cn.iocoder.yudao.module.cms.service.contract.ContractService; import cn.iocoder.yudao.module.pms.api.ProjectApi; import cn.iocoder.yudao.module.pms.api.project.dto.ProjectRespDTO; @@ -219,6 +220,9 @@ public class OutsContractServiceImpl implements OutsContractService { outsContractRespVO.setProjectManager(contract.getProjectManager()); outsContractRespVO.setOutsAmount(contract.getAmount()); + outsContractRespVO.setMajor(OutsContractMajorEnum.getNoByCode(outsContractRespVO.getMajor())); + outsContractRespVO.setCountType(CountTypeEnum.getNoByCode(outsContractRespVO.getCountType())); + return outsContractRespVO; } diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontracthistory/OutsContractHistoryServiceImpl.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontracthistory/OutsContractHistoryServiceImpl.java index 40623d0a4..27d3a7ec8 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontracthistory/OutsContractHistoryServiceImpl.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontracthistory/OutsContractHistoryServiceImpl.java @@ -8,6 +8,8 @@ import cn.iocoder.yudao.module.cms.controller.admin.outscontracthistory.vo.OutsC import cn.iocoder.yudao.module.cms.controller.admin.outscontracthistory.vo.OutsContractHistorySaveReqVO; import cn.iocoder.yudao.module.cms.dal.dataobject.outscontracthistory.OutsContractHistoryDO; import cn.iocoder.yudao.module.cms.dal.mysql.outscontracthistory.OutsContractHistoryMapper; +import cn.iocoder.yudao.module.cms.enums.CountTypeEnum; +import cn.iocoder.yudao.module.cms.enums.OutsContractMajorEnum; import cn.iocoder.yudao.module.cms.service.contract.ContractService; import cn.iocoder.yudao.module.pms.api.ProjectApi; import cn.iocoder.yudao.module.pms.api.project.dto.ProjectRespDTO; @@ -65,12 +67,15 @@ public class OutsContractHistoryServiceImpl implements OutsContractHistoryServic OutsContractHistoryRespVO outsContractHistoryResp = BeanUtils.toBean(outsContractHistoryDO, OutsContractHistoryRespVO.class); Long contractId = outsContractHistoryResp.getContractId(); ContractRespVO contract = contractService.getContract(contractId); - // TODO 枚举优化 + outsContractHistoryResp.setName(contract.getName()); outsContractHistoryResp.setTrackingDep(contract.getTrackingDep()); outsContractHistoryResp.setProjectManager(contract.getProjectManager()); outsContractHistoryResp.setOutsAmount(contract.getAmount()); + outsContractHistoryResp.setMajor(OutsContractMajorEnum.getNoByCode(outsContractHistoryResp.getMajor())); + outsContractHistoryResp.setCountType(CountTypeEnum.getNoByCode(outsContractHistoryResp.getCountType())); + return outsContractHistoryResp; } From d3513e0cfbf1f0b5d748ca225831d6b3b25c2f36 Mon Sep 17 00:00:00 2001 From: wyw <13885678+wyw0828@user.noreply.gitee.com> Date: Wed, 7 Aug 2024 10:41:06 +0800 Subject: [PATCH 4/7] =?UTF-8?q?[feat]=20=E6=96=B0=E5=A2=9E=E5=A4=96?= =?UTF-8?q?=E5=8C=85=E5=90=88=E5=90=8C=EF=BC=8C=E5=A4=96=E9=83=A8=E5=90=88?= =?UTF-8?q?=E5=90=8C=E7=9A=84=E6=B5=81=E7=A8=8B=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yudao-module-cms/yudao-module-cms-biz/pom.xml | 1 + .../admin/contract/ContractController.java | 2 -- .../extContract/ExtContractController.java | 10 ++++++ .../outscontract/OutsContractController.java | 9 +++++ .../cms/service/contract/ContractService.java | 2 ++ .../extContract/ExtContractService.java | 10 ++++++ .../extContract/ExtContractServiceImpl.java | 33 +++++++++++++++++++ .../outscontract/OutsContractService.java | 8 +++++ .../outscontract/OutsContractServiceImpl.java | 33 +++++++++++++++++++ 9 files changed, 106 insertions(+), 2 deletions(-) diff --git a/yudao-module-cms/yudao-module-cms-biz/pom.xml b/yudao-module-cms/yudao-module-cms-biz/pom.xml index ca875d5e7..d3dabc24c 100644 --- a/yudao-module-cms/yudao-module-cms-biz/pom.xml +++ b/yudao-module-cms/yudao-module-cms-biz/pom.xml @@ -35,6 +35,7 @@ ${revision} + cn.iocoder.boot diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/ContractController.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/ContractController.java index 94f0bda3e..b7cb40e97 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/ContractController.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/ContractController.java @@ -106,6 +106,4 @@ public class ContractController { } - - } \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extContract/ExtContractController.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extContract/ExtContractController.java index 138657e67..44fa63dc9 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extContract/ExtContractController.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extContract/ExtContractController.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.cms.controller.admin.extContract; +import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractProcessInstanceRespVO; import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractPageReqVO; import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractRespVO; import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractSaveReqVO; @@ -93,4 +94,13 @@ public class ExtContractController { BeanUtils.toBean(list, ExtContractRespVO.class)); } + @GetMapping("/get_process") + @Operation(summary = "查询流程") + @Parameter(name = "id", description = "外部合同id", required = true) + @PreAuthorize("@ss.hasPermission('cms:contract:process')") + public CommonResult getContractProcess(@RequestParam("id") Long id) { + ContractProcessInstanceRespVO contractProcessInstance = extContractService.getContractProcess(id); + return success(contractProcessInstance); + } + } \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/OutsContractController.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/OutsContractController.java index 14d07d450..c43dea9ab 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/OutsContractController.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/OutsContractController.java @@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractProcessInstanceRespVO; import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractRespVO; import cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo.OutsContractPageReqVO; import cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo.OutsContractRespVO; @@ -91,4 +92,12 @@ public class OutsContractController { ExcelUtils.write(response, "外包合同.xls", "数据", OutsContractRespVO.class, BeanUtils.toBean(list, OutsContractRespVO.class)); } + @GetMapping("/get_process") + @Operation(summary = "查询流程") + @Parameter(name = "id", description = "外包合同id", required = true) + @PreAuthorize("@ss.hasPermission('cms:contract:process')") + public CommonResult getContractProcess(@RequestParam("id") Long id) { + ContractProcessInstanceRespVO contractProcessInstance = outsContractService.getContractProcess(id); + return success(contractProcessInstance); + } } \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractService.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractService.java index 3a222b8e6..27689ad53 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractService.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractService.java @@ -78,4 +78,6 @@ public interface ContractService { */ ContractProcessInstanceRespVO getContractProcess(Long id); + + } \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractService.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractService.java index 3c1b29219..0c84a25ad 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractService.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractService.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.cms.service.extContract; +import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractProcessInstanceRespVO; import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractPageReqVO; import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractRespVO; import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractSaveReqVO; @@ -66,4 +67,13 @@ public interface ExtContractService { * @return */ BigDecimal getContractAmount(ExtContractSaveReqVO createReqVO); + + + /** + * 查询流程 + * @param id 合同id + */ + ContractProcessInstanceRespVO getContractProcess(Long id); + + } \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractServiceImpl.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractServiceImpl.java index 58e5a32b7..9b90de01c 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractServiceImpl.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractServiceImpl.java @@ -2,6 +2,9 @@ package cn.iocoder.yudao.module.cms.service.extContract; import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi; import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; +import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceRespDTO; +import cn.iocoder.yudao.module.bpm.api.task.dto.BpmTaskRespDTO; +import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractProcessInstanceRespVO; import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractPageReqVO; import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractRespVO; import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractSaveReqVO; @@ -72,6 +75,7 @@ public class ExtContractServiceImpl implements ExtContractService { + @Override public Long createExtContract(Long loginUserId, ExtContractSaveReqVO createReqVO) { @@ -317,6 +321,35 @@ public class ExtContractServiceImpl implements ExtContractService { return preAmount.add(designFee).add(surveyFees).add(testingFee).add(other); } + @Override + public ContractProcessInstanceRespVO getContractProcess(Long id) { + validateExtContractExists(id); + //去历史里面找 + ExtContractHistoryDO extContractHistoryDO = extContractHistoryMapper.selectOne("ext_contract_id", id); + if (extContractHistoryDO == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + //拿到历史之后 找到process_instance_id 和 status + String processInstanceId = extContractHistoryDO.getProcessInstanceId(); + String processStatus = extContractHistoryDO.getProcessStatus(); + //与当前流程里的进行比较 + String status = String.valueOf(processInstanceApi.getProcessInstance(processInstanceId).getStatus()); + + //如果不相等 + if (!status.equals(processStatus)){ + //更新当前合同对应历史表里面的状态 + extContractHistoryDO.setProcessStatus(status); + extContractHistoryMapper.updateById(extContractHistoryDO); + } + //返回给前端必要的数据 当前流程里面对应的数据 + BpmProcessInstanceRespDTO processInstance = processInstanceApi.getProcessInstance(processInstanceId); + List tasks = processInstanceApi.getTask(processInstanceId); + List taskList = BeanUtils.toBean(tasks, BpmProcessInstanceRespDTO.Task.class); + processInstance.setTasks(taskList); + + return BeanUtils.toBean(processInstance, ContractProcessInstanceRespVO.class); + } + private void validateExtContractExists(Long id) { if (extContractMapper.selectById(id) == null) { diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractService.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractService.java index a7df32d1d..e09226b2e 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractService.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractService.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.cms.service.outscontract; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractProcessInstanceRespVO; import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractRespVO; import cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo.OutsContractPageReqVO; import cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo.OutsContractRespVO; @@ -55,4 +56,11 @@ public interface OutsContractService { */ PageResult getOutsContractPage(OutsContractPageReqVO pageReqVO); + /** + * 查询流程 + * @param id 合同id + */ + ContractProcessInstanceRespVO getContractProcess(Long id); + + } \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractServiceImpl.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractServiceImpl.java index 6c5976751..acbf163d5 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractServiceImpl.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractServiceImpl.java @@ -4,6 +4,9 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi; import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; +import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceRespDTO; +import cn.iocoder.yudao.module.bpm.api.task.dto.BpmTaskRespDTO; +import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractProcessInstanceRespVO; import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractRespVO; import cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo.OutsContractPageReqVO; import cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo.OutsContractRespVO; @@ -255,6 +258,36 @@ public class OutsContractServiceImpl implements OutsContractService { return pageResult; } + @Override + public ContractProcessInstanceRespVO getContractProcess(Long id) { + validateOutsContractExists(id); + //去历史里面找 + OutsContractHistoryDO outsContractHistory = outsContractHistoryMapper.selectOne("outs_contract_id", id); + if (outsContractHistory == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + //拿到历史之后 找到process_instance_id 和 status + String processInstanceId = outsContractHistory.getProcessInstanceId(); + String processStatus = outsContractHistory.getProcessStatus(); + //与当前流程里的进行比较 + String status = String.valueOf(processInstanceApi.getProcessInstance(processInstanceId).getStatus()); + + //如果不相等 + if (!status.equals(processStatus)){ + //更新当前合同对应历史表里面的状态 + outsContractHistory.setProcessStatus(status); + outsContractHistoryMapper.updateById(outsContractHistory); + } + //返回给前端必要的数据 当前流程里面对应的数据 + BpmProcessInstanceRespDTO processInstance = processInstanceApi.getProcessInstance(processInstanceId); + List tasks = processInstanceApi.getTask(processInstanceId); + List taskList = BeanUtils.toBean(tasks, BpmProcessInstanceRespDTO.Task.class); + processInstance.setTasks(taskList); + + return BeanUtils.toBean(processInstance, ContractProcessInstanceRespVO.class); + } + + private void validateOutsContractExists(Long id) { if (outsContractMapper.selectById(id) == null) { throw exception(OUTS_CONTRACT_NOT_EXISTS); From 51ec3731a10fae6fa7ecbf3c0674bc89605f540b Mon Sep 17 00:00:00 2001 From: wyw <13885678+wyw0828@user.noreply.gitee.com> Date: Wed, 7 Aug 2024 10:51:20 +0800 Subject: [PATCH 5/7] =?UTF-8?q?[feat]=20=E6=96=B0=E5=A2=9E=E5=A4=96?= =?UTF-8?q?=E5=8C=85=E5=90=88=E5=90=8C=EF=BC=8C=E5=A4=96=E9=83=A8=E5=90=88?= =?UTF-8?q?=E5=90=8C=E7=9A=84=E6=B5=81=E7=A8=8B=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yudao-server/src/main/resources/application-dev.yaml | 6 +++--- yudao-server/src/main/resources/application-local.yaml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/yudao-server/src/main/resources/application-dev.yaml b/yudao-server/src/main/resources/application-dev.yaml index 9f45f54fb..5a5bae40d 100644 --- a/yudao-server/src/main/resources/application-dev.yaml +++ b/yudao-server/src/main/resources/application-dev.yaml @@ -40,9 +40,9 @@ spring: primary: master datasource: master: - url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例 - username: root - password: 123456 + url: jdbc:mysql://10.60.9.181:3306/hhyykk?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例 + username: yclj + password: Yclj!@#123 slave: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改 lazy: true # 开启懒加载,保证启动速度 url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例 diff --git a/yudao-server/src/main/resources/application-local.yaml b/yudao-server/src/main/resources/application-local.yaml index aebad3541..157a82938 100644 --- a/yudao-server/src/main/resources/application-local.yaml +++ b/yudao-server/src/main/resources/application-local.yaml @@ -45,7 +45,7 @@ spring: primary: master datasource: master: - url: jdbc:mysql://127.0.0.1:3307/hhyykk?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例 + url: jdbc:mysql://10.60.9.181:3306/hhyykk?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例 # url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=true&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai # MySQL Connector/J 5.X 连接的示例 # url: jdbc:postgresql://127.0.0.1:5432/ruoyi-vue-pro # PostgreSQL 连接的示例 # url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例 @@ -53,8 +53,8 @@ spring: # url: jdbc:dm://127.0.0.1:5236?schema=RUOYI_VUE_PRO # DM 连接的示例 # url: jdbc:kingbase8://127.0.0.1:54321/test # 人大金仓 KingbaseES 连接的示例 # url: jdbc:postgresql://127.0.0.1:5432/postgres # OpenGauss 连接的示例 - username: root - password: root + username: yclj + password: Yclj!@#123 # username: sa # SQL Server 连接的示例 # password: Yudao@2024 # SQL Server 连接的示例 # username: SYSDBA # DM 连接的示例 From 1d079654b31c9feaf852c9187884b862f5a5faa7 Mon Sep 17 00:00:00 2001 From: wyw <13885678+wyw0828@user.noreply.gitee.com> Date: Wed, 7 Aug 2024 15:58:25 +0800 Subject: [PATCH 6/7] =?UTF-8?q?[feat]=20=E6=96=B0=E5=A2=9E=E5=90=88?= =?UTF-8?q?=E5=90=8C=EF=BC=8C=E5=A4=96=E5=8C=85=E5=90=88=E5=90=8C=EF=BC=8C?= =?UTF-8?q?=E5=A4=96=E9=83=A8=E5=90=88=E5=90=8C=E7=9A=84=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/contract/ContractController.java | 8 ++++ .../vo/ContractProcessInstanceRespVO.java | 13 ------ .../extContract/ExtContractController.java | 9 ++++ .../outscontract/OutsContractController.java | 9 ++++ .../ExtContractDO.java | 2 +- .../mysql/extContract/ExtContractMapper.java | 4 +- .../cms/service/contract/ContractService.java | 8 ++++ .../service/contract/ContractServiceImpl.java | 44 +++++++++++++++++++ .../extContract/ExtContractService.java | 8 ++++ .../extContract/ExtContractServiceImpl.java | 20 +++++++-- .../outscontract/OutsContractService.java | 10 ++++- .../outscontract/OutsContractServiceImpl.java | 17 ++++++- .../admin/project/ProjectController.java | 9 ++-- 13 files changed, 135 insertions(+), 26 deletions(-) rename yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/dataobject/{extContract => extcontract}/ExtContractDO.java (97%) diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/ContractController.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/ContractController.java index b7cb40e97..1d54f2253 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/ContractController.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/ContractController.java @@ -105,5 +105,13 @@ public class ContractController { return success(contractProcessInstance); } + @GetMapping("/get_HistoryProcess") + @Operation(summary = "查询历史合同流程") + @Parameter(name = "projectId", description = "项目id", required = true) + @PreAuthorize("@ss.hasPermission('cms:contract:process')") + public CommonResult> getHisContractProcess(@RequestParam("projectId") Long projectId) { + List historyContractProcess = contractService.getHistoryContractProcess(projectId); + return success(historyContractProcess); + } } \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractProcessInstanceRespVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractProcessInstanceRespVO.java index 8062c38ed..a840919e2 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractProcessInstanceRespVO.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractProcessInstanceRespVO.java @@ -5,8 +5,6 @@ import lombok.Data; import java.time.LocalDateTime; import java.util.List; -import java.util.Map; - @Schema(description = "管理后台 - 流程实例的 Response VO") @Data public class ContractProcessInstanceRespVO { @@ -17,12 +15,6 @@ public class ContractProcessInstanceRespVO { @Schema(description = "流程名称", requiredMode = Schema.RequiredMode.REQUIRED) private String name; - @Schema(description = "流程分类", requiredMode = Schema.RequiredMode.REQUIRED) - private String category; - - @Schema(description = "流程分类名称", requiredMode = Schema.RequiredMode.REQUIRED) - private String categoryName; - @Schema(description = "流程实例的状态", requiredMode = Schema.RequiredMode.REQUIRED) private Integer status; // 参见 BpmProcessInstanceStatusEnum 枚举 @@ -35,11 +27,6 @@ public class ContractProcessInstanceRespVO { @Schema(description = "持续时间", example = "1000") private Long durationInMillis; - @Schema(description = "提交的表单值", requiredMode = Schema.RequiredMode.REQUIRED) - private Map formVariables; - - @Schema(description = "业务的唯一标识-例如说,请假申请的编号", example = "1") - private String businessKey; /** * 发起流程的用户 diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extContract/ExtContractController.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extContract/ExtContractController.java index 44fa63dc9..d3675de12 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extContract/ExtContractController.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extContract/ExtContractController.java @@ -103,4 +103,13 @@ public class ExtContractController { return success(contractProcessInstance); } + @GetMapping("/get_HistoryProcess") + @Operation(summary = "查询历史外部合同流程") + @Parameter(name = "projectId", description = "项目id", required = true) + @PreAuthorize("@ss.hasPermission('cms:contract:process')") + public CommonResult> getHisContractProcess(@RequestParam("projectId") Long projectId) { + List historyContractProcess = extContractService.getHistoryContractProcess(projectId); + return success(historyContractProcess); + } + } \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/OutsContractController.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/OutsContractController.java index c43dea9ab..1d03c5040 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/OutsContractController.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/OutsContractController.java @@ -100,4 +100,13 @@ public class OutsContractController { ContractProcessInstanceRespVO contractProcessInstance = outsContractService.getContractProcess(id); return success(contractProcessInstance); } + + @GetMapping("/get_HistoryProcess") + @Operation(summary = "查询历史外包合同流程") + @Parameter(name = "projectId", description = "项目id", required = true) + @PreAuthorize("@ss.hasPermission('cms:contract:process')") + public CommonResult> getHisContractProcess(@RequestParam("projectId") Long projectId) { + List historyContractProcess = outsContractService.getHistoryContractProcess(projectId); + return success(historyContractProcess); + } } \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/dataobject/extContract/ExtContractDO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/dataobject/extcontract/ExtContractDO.java similarity index 97% rename from yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/dataobject/extContract/ExtContractDO.java rename to yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/dataobject/extcontract/ExtContractDO.java index 93fe995f1..e10ac8c7c 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/dataobject/extContract/ExtContractDO.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/dataobject/extcontract/ExtContractDO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.cms.dal.dataobject.extContract; +package cn.iocoder.yudao.module.cms.dal.dataobject.extcontract; import lombok.*; import java.time.LocalDateTime; import java.math.BigDecimal; diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/mysql/extContract/ExtContractMapper.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/mysql/extContract/ExtContractMapper.java index c50405389..0bf60ce1d 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/mysql/extContract/ExtContractMapper.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/mysql/extContract/ExtContractMapper.java @@ -1,10 +1,10 @@ package cn.iocoder.yudao.module.cms.dal.mysql.extContract; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractPageReqVO; -import cn.iocoder.yudao.module.cms.dal.dataobject.extContract.ExtContractDO; +import cn.iocoder.yudao.module.cms.dal.dataobject.extcontract.ExtContractDO; import org.apache.ibatis.annotations.Mapper; /** diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractService.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractService.java index 27689ad53..f98431e87 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractService.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractService.java @@ -5,6 +5,7 @@ import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.*; import cn.iocoder.yudao.framework.common.pojo.PageResult; import java.math.BigDecimal; +import java.util.List; /** * 合同 Service 接口 @@ -78,6 +79,13 @@ public interface ContractService { */ ContractProcessInstanceRespVO getContractProcess(Long id); + /** + * 查询合同历史流程 + * @param projectId 项目id + * @return + */ + List getHistoryContractProcess(Long projectId); + } \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractServiceImpl.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractServiceImpl.java index dbb983b1f..2c17f4e2f 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractServiceImpl.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractServiceImpl.java @@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.cms.service.contract; import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi; import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; +import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceRespDTO; +import cn.iocoder.yudao.module.bpm.api.task.dto.BpmTaskRespDTO; import cn.iocoder.yudao.module.cms.dal.dataobject.contractHistory.ContractHistoryDO; import cn.iocoder.yudao.module.cms.dal.mysql.contract.ContractMapper; import cn.iocoder.yudao.module.cms.dal.mysql.contractHistory.ContractHistoryMapper; @@ -304,5 +306,47 @@ public class ContractServiceImpl implements ContractService { } } + @Override + public ContractProcessInstanceRespVO getContractProcess(Long id) { + validateContractExists(id); + //去历史里面找 + ContractHistoryDO contractHistory = contractHistoryMapper.selectOne("contract_id", id); + if (contractHistory == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + //拿到历史之后 找到process_instance_id 和 status + String processInstanceId = contractHistory.getProcessInstanceId(); + String processStatus = contractHistory.getProcessStatus(); + //与当前流程里的进行比较 + String status = String.valueOf(processInstanceApi.getProcessInstance(processInstanceId).getStatus()); + + //如果不相等 + if (!status.equals(processStatus)){ + //更新当前合同对应历史表里面的状态 + contractHistory.setProcessStatus(status); + contractHistoryMapper.updateById(contractHistory); + } + //返回给前端必要的数据 当前流程里面对应的数据 + BpmProcessInstanceRespDTO processInstance = processInstanceApi.getProcessInstance(processInstanceId); + List tasks = processInstanceApi.getTask(processInstanceId); + List taskList = BeanUtils.toBean(tasks, BpmProcessInstanceRespDTO.Task.class); + processInstance.setTasks(taskList); + + return BeanUtils.toBean(processInstance, ContractProcessInstanceRespVO.class); + } + + @Override + public List getHistoryContractProcess(Long projectId) { + List projectList = contractHistoryMapper.selectList("project_id", projectId); + List contractProcessInstanceRespVOList = new ArrayList<>(); + for (ContractHistoryDO contractHistoryDO : projectList) { + Long id = contractHistoryDO.getId(); + ContractProcessInstanceRespVO contractProcess = getContractProcess(id); + contractProcessInstanceRespVOList.add(contractProcess); + } + + return contractProcessInstanceRespVOList; + } + } \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractService.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractService.java index 0c84a25ad..320aca8ff 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractService.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractService.java @@ -9,6 +9,7 @@ import jakarta.validation.*; import cn.iocoder.yudao.framework.common.pojo.PageResult; import java.math.BigDecimal; +import java.util.List; /** * 外部合同 Service 接口 @@ -75,5 +76,12 @@ public interface ExtContractService { */ ContractProcessInstanceRespVO getContractProcess(Long id); + /** + * 查询历史外部合同流程 + * @param projectId 项目id + * @return + */ + List getHistoryContractProcess(Long projectId); + } \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractServiceImpl.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractServiceImpl.java index 9b90de01c..a7dcd6a93 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractServiceImpl.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractServiceImpl.java @@ -8,16 +8,17 @@ import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractProcessI import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractPageReqVO; import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractRespVO; import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractSaveReqVO; +import cn.iocoder.yudao.module.cms.dal.dataobject.contractHistory.ContractHistoryDO; import cn.iocoder.yudao.module.cms.dal.dataobject.customerCompany.CustomerCompanyDO; -import cn.iocoder.yudao.module.cms.dal.dataobject.extContract.ExtContractDO; +import cn.iocoder.yudao.module.cms.dal.dataobject.extcontract.ExtContractDO; import cn.iocoder.yudao.module.cms.dal.dataobject.extcontracthistory.ExtContractHistoryDO; import cn.iocoder.yudao.module.cms.dal.mysql.customerCompany.CustomerCompanyMapper; -import cn.iocoder.yudao.module.cms.dal.mysql.extcontract.ExtContractMapper; +import cn.iocoder.yudao.module.cms.dal.mysql.extContract.ExtContractMapper; import cn.iocoder.yudao.module.cms.dal.mysql.extcontracthistory.ExtContractHistoryMapper; import cn.iocoder.yudao.module.cms.enums.ChargingStandardEnum; import cn.iocoder.yudao.module.cms.enums.ContractStatusEnum; import cn.iocoder.yudao.module.cms.enums.ContractTypeEnum; -import cn.iocoder.yudao.module.pms.api.ProjectApi; +import cn.iocoder.yudao.module.pms.api.project.ProjectApi; import cn.iocoder.yudao.module.pms.api.project.dto.ProjectDetailRespDTO; import cn.iocoder.yudao.module.pms.api.project.dto.ProjectRespDTO; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; @@ -350,6 +351,19 @@ public class ExtContractServiceImpl implements ExtContractService { return BeanUtils.toBean(processInstance, ContractProcessInstanceRespVO.class); } + @Override + public List getHistoryContractProcess(Long projectId) { + List contractHistoryList = extContractHistoryMapper.selectList("project_id", projectId); + List contractProcessInstanceRespVOList = new ArrayList<>(); + for (ExtContractHistoryDO contractHistory : contractHistoryList) { + Long id = contractHistory.getId(); + ContractProcessInstanceRespVO contractProcess = getContractProcess(id); + contractProcessInstanceRespVOList.add(contractProcess); + } + + return contractProcessInstanceRespVOList; + } + private void validateExtContractExists(Long id) { if (extContractMapper.selectById(id) == null) { diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractService.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractService.java index e09226b2e..9c3206044 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractService.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractService.java @@ -2,11 +2,9 @@ package cn.iocoder.yudao.module.cms.service.outscontract; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractProcessInstanceRespVO; -import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractRespVO; import cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo.OutsContractPageReqVO; import cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo.OutsContractRespVO; import cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo.OutsContractSaveReqVO; -import cn.iocoder.yudao.module.cms.dal.dataobject.outscontract.OutsContractDO; import jakarta.validation.Valid; import java.util.List; @@ -62,5 +60,13 @@ public interface OutsContractService { */ ContractProcessInstanceRespVO getContractProcess(Long id); + /** + * 查询历史外包合同流程 + * @param projectId 项目id + * @return + */ + List getHistoryContractProcess(Long projectId); + + } \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractServiceImpl.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractServiceImpl.java index b90d68d0e..82d689002 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractServiceImpl.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/outscontract/OutsContractServiceImpl.java @@ -69,10 +69,10 @@ public class OutsContractServiceImpl implements OutsContractService { @Resource private OutsContractHistoryMapper outsContractHistoryMapper; + + @Override public Long createOutsContract(Long loginUserId,OutsContractSaveReqVO createReqVO) { - - if (createReqVO == null) { throw exception(PARAM_NOT_EXISTS); } @@ -287,6 +287,19 @@ public class OutsContractServiceImpl implements OutsContractService { return BeanUtils.toBean(processInstance, ContractProcessInstanceRespVO.class); } + @Override + public List getHistoryContractProcess(Long projectId) { + List outsContracts= outsContractHistoryMapper.selectList("project_id", projectId); + List contractProcessInstanceRespVOList = new ArrayList<>(); + for (OutsContractHistoryDO outsContract : outsContracts) { + Long id = outsContract.getId(); + ContractProcessInstanceRespVO contractProcess = getContractProcess(id); + contractProcessInstanceRespVOList.add(contractProcess); + } + + return contractProcessInstanceRespVOList; + } + private void validateOutsContractExists(Long id) { if (outsContractMapper.selectById(id) == null) { diff --git a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/project/ProjectController.java b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/project/ProjectController.java index 8a943b5ae..b488ff0d6 100644 --- a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/project/ProjectController.java +++ b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/project/ProjectController.java @@ -12,6 +12,7 @@ import io.swagger.v3.oas.annotations.Operation; import jakarta.validation.*; import jakarta.servlet.http.*; + import java.util.*; import java.io.IOException; @@ -19,11 +20,13 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; + import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; @@ -43,7 +46,7 @@ public class ProjectController { @Operation(summary = "创建项目基本信息") @PreAuthorize("@ss.hasPermission('pms:project:create')") public CommonResult createProject(@Valid @RequestBody ProjectSaveReqVO createReqVO) { - return success(projectService.createProject(getLoginUserId(),createReqVO)); + return success(projectService.createProject(getLoginUserId(), createReqVO)); } @PutMapping("/update") @@ -90,12 +93,12 @@ public class ProjectController { @PreAuthorize("@ss.hasPermission('pms:project:export')") @ApiAccessLog(operateType = EXPORT) public void exportProjectExcel(@Valid ProjectPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { + HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = projectService.getProjectDetailPage(pageReqVO).getList(); // 导出 Excel ExcelUtils.write(response, "项目基本信息.xls", "数据", ProjectRespDetailVO.class, - BeanUtils.toBean(list, ProjectRespDetailVO.class)); + BeanUtils.toBean(list, ProjectRespDetailVO.class)); } } \ No newline at end of file From f2cfb723a9cfb74ff73f4858298189e1c3a646c4 Mon Sep 17 00:00:00 2001 From: wyw <13885678+wyw0828@user.noreply.gitee.com> Date: Mon, 12 Aug 2024 10:44:17 +0800 Subject: [PATCH 7/7] =?UTF-8?q?[feat]=20=E6=96=B0=E5=A2=9E=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E8=BF=9B=E5=BA=A6=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/project/dto/ProjectDetailRespDTO.java | 1 + .../pms/api/project/dto/ProjectRespDTO.java | 2 +- .../ProjectScheduleController.java | 95 ++++ .../vo/ProjectSchedulePageReqVO.java | 107 ++++ .../vo/ProjectScheduleRespVO.java | 132 +++++ .../vo/ProjectScheduleSaveReqVO.java | 116 +++++ .../dataobject/project/ProjectDetailDO.java | 3 + .../projectschedule/ProjectScheduleDO.java | 131 +++++ .../ProjectScheduleMapper.java | 51 ++ .../ProjectScheduleService.java | 53 ++ .../ProjectScheduleServiceImpl.java | 71 +++ .../src/api/pms/projectschedule/index.ts | 67 +++ .../projectschedule/ProjectScheduleForm.vue | 270 ++++++++++ .../src/views/pms/projectschedule/index.vue | 484 ++++++++++++++++++ 14 files changed, 1582 insertions(+), 1 deletion(-) create mode 100644 yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/projectschedule/ProjectScheduleController.java create mode 100644 yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/projectschedule/vo/ProjectSchedulePageReqVO.java create mode 100644 yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/projectschedule/vo/ProjectScheduleRespVO.java create mode 100644 yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/projectschedule/vo/ProjectScheduleSaveReqVO.java create mode 100644 yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/projectschedule/ProjectScheduleDO.java create mode 100644 yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/projectschedule/ProjectScheduleMapper.java create mode 100644 yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/projectschedule/ProjectScheduleService.java create mode 100644 yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/projectschedule/ProjectScheduleServiceImpl.java create mode 100644 yudao-ui/yudao-ui-admin-vue3-PmsProjectSchedule/src/api/pms/projectschedule/index.ts create mode 100644 yudao-ui/yudao-ui-admin-vue3-PmsProjectSchedule/src/views/pms/projectschedule/ProjectScheduleForm.vue create mode 100644 yudao-ui/yudao-ui-admin-vue3-PmsProjectSchedule/src/views/pms/projectschedule/index.vue diff --git a/yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/api/project/dto/ProjectDetailRespDTO.java b/yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/api/project/dto/ProjectDetailRespDTO.java index 2255edaef..ac40a11f1 100644 --- a/yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/api/project/dto/ProjectDetailRespDTO.java +++ b/yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/api/project/dto/ProjectDetailRespDTO.java @@ -19,4 +19,5 @@ public class ProjectDetailRespDTO { */ private String customerCompanyName; + } diff --git a/yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/api/project/dto/ProjectRespDTO.java b/yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/api/project/dto/ProjectRespDTO.java index df6b6f91c..e9a96a1ca 100644 --- a/yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/api/project/dto/ProjectRespDTO.java +++ b/yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/api/project/dto/ProjectRespDTO.java @@ -8,7 +8,7 @@ import java.math.BigDecimal; * 项目基本信息 dto */ @Data -public class ProjectRespDTO { +public class ProjectRespDTO{ /** diff --git a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/projectschedule/ProjectScheduleController.java b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/projectschedule/ProjectScheduleController.java new file mode 100644 index 000000000..2f4e62fc7 --- /dev/null +++ b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/projectschedule/ProjectScheduleController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.pms.controller.admin.projectschedule; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.pms.controller.admin.projectschedule.vo.*; +import cn.iocoder.yudao.module.pms.dal.dataobject.projectschedule.ProjectScheduleDO; +import cn.iocoder.yudao.module.pms.service.projectschedule.ProjectScheduleService; + +@Tag(name = "管理后台 - 项目进度管理") +@RestController +@RequestMapping("/pms/project-schedule") +@Validated +public class ProjectScheduleController { + + @Resource + private ProjectScheduleService projectScheduleService; + + @PostMapping("/create") + @Operation(summary = "创建项目进度管理") + @PreAuthorize("@ss.hasPermission('pms:project-schedule:create')") + public CommonResult createProjectSchedule(@Valid @RequestBody ProjectScheduleSaveReqVO createReqVO) { + return success(projectScheduleService.createProjectSchedule(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新项目进度管理") + @PreAuthorize("@ss.hasPermission('pms:project-schedule:update')") + public CommonResult updateProjectSchedule(@Valid @RequestBody ProjectScheduleSaveReqVO updateReqVO) { + projectScheduleService.updateProjectSchedule(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除项目进度管理") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('pms:project-schedule:delete')") + public CommonResult deleteProjectSchedule(@RequestParam("id") Long id) { + projectScheduleService.deleteProjectSchedule(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得项目进度管理") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('pms:project-schedule:query')") + public CommonResult getProjectSchedule(@RequestParam("id") Long id) { + ProjectScheduleDO projectSchedule = projectScheduleService.getProjectSchedule(id); + return success(BeanUtils.toBean(projectSchedule, ProjectScheduleRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得项目进度管理分页") + @PreAuthorize("@ss.hasPermission('pms:project-schedule:query')") + public CommonResult> getProjectSchedulePage(@Valid ProjectSchedulePageReqVO pageReqVO) { + PageResult pageResult = projectScheduleService.getProjectSchedulePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ProjectScheduleRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出项目进度管理 Excel") + @PreAuthorize("@ss.hasPermission('pms:project-schedule:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportProjectScheduleExcel(@Valid ProjectSchedulePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = projectScheduleService.getProjectSchedulePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "项目进度管理.xls", "数据", ProjectScheduleRespVO.class, + BeanUtils.toBean(list, ProjectScheduleRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/projectschedule/vo/ProjectSchedulePageReqVO.java b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/projectschedule/vo/ProjectSchedulePageReqVO.java new file mode 100644 index 000000000..9ca7d1d36 --- /dev/null +++ b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/projectschedule/vo/ProjectSchedulePageReqVO.java @@ -0,0 +1,107 @@ +package cn.iocoder.yudao.module.pms.controller.admin.projectschedule.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 项目进度管理分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProjectSchedulePageReqVO extends PageParam { + + @Schema(description = "项目id", example = "26813") + private Long projectId; + + @Schema(description = "项目负责人") + private String projectLeader; + + @Schema(description = "主专业") + private String major; + + @Schema(description = "其他专业") + private String minorMajors; + + @Schema(description = "其他主要项目组成员") + private String minorUserIds; + + @Schema(description = "规模") + private String scale; + + @Schema(description = "项目概况") + private String survey; + + @Schema(description = "相关批复文件url", example = "https://www.iocoder.cn") + private String replyFileUrl; + + @Schema(description = "当前阶段") + private String stage; + + @Schema(description = "已完成的项目阶段") + private String preStage; + + @Schema(description = "工作进展") + private String progress; + + @Schema(description = "外部合同商议时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] contractNegotiationTime; + + @Schema(description = "已完成百分比") + private BigDecimal completed; + + @Schema(description = "截至本月累计完成百分比") + private BigDecimal accumulatedCompletion; + + @Schema(description = "本月新增完工比") + private BigDecimal newlyIncreasedCompletion; + + @Schema(description = "已完成产值") + private BigDecimal finishOutput; + + @Schema(description = "本月新增产值") + private BigDecimal newlyIncreasedOutput; + + @Schema(description = "累积产值") + private BigDecimal accumulatedOutput; + + @Schema(description = "竣工时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] completionTime; + + @Schema(description = "单选") + private Boolean choose; + + @Schema(description = "竣工报告附件url", example = "https://www.iocoder.cn") + private String completionFileUrl; + + @Schema(description = "最后编辑人") + private String finalEditor; + + @Schema(description = "创建人") + private String creator; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "更新人") + private String updator; + + @Schema(description = "更新时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] updateTime; + + @Schema(description = "是否删除") + private Boolean deleted; + + @Schema(description = "租户id", example = "1") + private Long tenantId; + +} \ No newline at end of file diff --git a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/projectschedule/vo/ProjectScheduleRespVO.java b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/projectschedule/vo/ProjectScheduleRespVO.java new file mode 100644 index 000000000..2f1a3daa3 --- /dev/null +++ b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/projectschedule/vo/ProjectScheduleRespVO.java @@ -0,0 +1,132 @@ +package cn.iocoder.yudao.module.pms.controller.admin.projectschedule.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 项目进度管理 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ProjectScheduleRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "28495") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26813") + @ExcelProperty("项目id") + private Long projectId; + + @Schema(description = "项目负责人", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("项目负责人") + private String projectLeader; + + @Schema(description = "主专业", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("主专业") + private String major; + + @Schema(description = "其他专业") + @ExcelProperty("其他专业") + private String minorMajors; + + @Schema(description = "其他主要项目组成员") + @ExcelProperty("其他主要项目组成员") + private String minorUserIds; + + @Schema(description = "规模", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("规模") + private String scale; + + @Schema(description = "项目概况", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("项目概况") + private String survey; + + @Schema(description = "相关批复文件url", example = "https://www.iocoder.cn") + @ExcelProperty("相关批复文件url") + private String replyFileUrl; + + @Schema(description = "当前阶段", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("当前阶段") + private String stage; + + @Schema(description = "已完成的项目阶段", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("已完成的项目阶段") + private String preStage; + + @Schema(description = "工作进展", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工作进展") + private String progress; + + @Schema(description = "外部合同商议时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("外部合同商议时间") + private LocalDateTime contractNegotiationTime; + + @Schema(description = "已完成百分比", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("已完成百分比") + private BigDecimal completed; + + @Schema(description = "截至本月累计完成百分比") + @ExcelProperty("截至本月累计完成百分比") + private BigDecimal accumulatedCompletion; + + @Schema(description = "本月新增完工比") + @ExcelProperty("本月新增完工比") + private BigDecimal newlyIncreasedCompletion; + + @Schema(description = "已完成产值") + @ExcelProperty("已完成产值") + private BigDecimal finishOutput; + + @Schema(description = "本月新增产值") + @ExcelProperty("本月新增产值") + private BigDecimal newlyIncreasedOutput; + + @Schema(description = "累积产值") + @ExcelProperty("累积产值") + private BigDecimal accumulatedOutput; + + @Schema(description = "竣工时间") + @ExcelProperty("竣工时间") + private LocalDateTime completionTime; + + @Schema(description = "单选") + @ExcelProperty("单选") + private Boolean choose; + + @Schema(description = "竣工报告附件url", example = "https://www.iocoder.cn") + @ExcelProperty("竣工报告附件url") + private String completionFileUrl; + + @Schema(description = "最后编辑人") + @ExcelProperty("最后编辑人") + private String finalEditor; + + @Schema(description = "创建人", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建人") + private String creator; + + @Schema(description = "创建时间") + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新人", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("更新人") + private String updator; + + @Schema(description = "更新时间") + @ExcelProperty("更新时间") + private LocalDateTime updateTime; + + @Schema(description = "是否删除", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("是否删除") + private Boolean deleted; + + @Schema(description = "租户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("租户id") + private Long tenantId; + +} \ No newline at end of file diff --git a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/projectschedule/vo/ProjectScheduleSaveReqVO.java b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/projectschedule/vo/ProjectScheduleSaveReqVO.java new file mode 100644 index 000000000..dd1226c6e --- /dev/null +++ b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/projectschedule/vo/ProjectScheduleSaveReqVO.java @@ -0,0 +1,116 @@ +package cn.iocoder.yudao.module.pms.controller.admin.projectschedule.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 项目进度管理新增/修改 Request VO") +@Data +public class ProjectScheduleSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "28495") + private Long id; + + @Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26813") + @NotNull(message = "项目id不能为空") + private Long projectId; + + @Schema(description = "项目负责人", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "项目负责人不能为空") + private String projectLeader; + + @Schema(description = "主专业", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "主专业不能为空") + private String major; + + @Schema(description = "其他专业") + private String minorMajors; + + @Schema(description = "其他主要项目组成员") + private String minorUserIds; + + @Schema(description = "规模", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "规模不能为空") + private String scale; + + @Schema(description = "项目概况", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "项目概况不能为空") + private String survey; + + @Schema(description = "相关批复文件url", example = "https://www.iocoder.cn") + private String replyFileUrl; + + @Schema(description = "当前阶段", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "当前阶段不能为空") + private String stage; + + @Schema(description = "已完成的项目阶段", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "已完成的项目阶段不能为空") + private String preStage; + + @Schema(description = "工作进展", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工作进展不能为空") + private String progress; + + @Schema(description = "外部合同商议时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "外部合同商议时间不能为空") + private LocalDateTime contractNegotiationTime; + + @Schema(description = "已完成百分比", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "已完成百分比不能为空") + private BigDecimal completed; + + @Schema(description = "截至本月累计完成百分比") + private BigDecimal accumulatedCompletion; + + @Schema(description = "本月新增完工比") + private BigDecimal newlyIncreasedCompletion; + + @Schema(description = "已完成产值") + private BigDecimal finishOutput; + + @Schema(description = "本月新增产值") + private BigDecimal newlyIncreasedOutput; + + @Schema(description = "累积产值") + private BigDecimal accumulatedOutput; + + @Schema(description = "竣工时间") + private LocalDateTime completionTime; + + @Schema(description = "单选") + private Boolean choose; + + @Schema(description = "竣工报告附件url", example = "https://www.iocoder.cn") + private String completionFileUrl; + + @Schema(description = "最后编辑人") + private String finalEditor; + + @Schema(description = "创建人", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "创建人不能为空") + private String creator; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新人", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "更新人不能为空") + private String updator; + + @Schema(description = "更新时间") + private LocalDateTime updateTime; + + @Schema(description = "是否删除", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "是否删除不能为空") + private Boolean deleted; + + @Schema(description = "租户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "租户id不能为空") + private Long tenantId; + +} \ No newline at end of file diff --git a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/project/ProjectDetailDO.java b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/project/ProjectDetailDO.java index 51d83d857..745981aeb 100644 --- a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/project/ProjectDetailDO.java +++ b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/project/ProjectDetailDO.java @@ -14,12 +14,15 @@ public class ProjectDetailDO extends ProjectDO { * 跟踪部门 */ private String trackingDepName; + /** * 项目经理 */ private String projectManagerName; + /** * 客户公司 */ private String customerCompanyName; + } diff --git a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/projectschedule/ProjectScheduleDO.java b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/projectschedule/ProjectScheduleDO.java new file mode 100644 index 000000000..103e197fa --- /dev/null +++ b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/projectschedule/ProjectScheduleDO.java @@ -0,0 +1,131 @@ +package cn.iocoder.yudao.module.pms.dal.dataobject.projectschedule; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 项目进度管理 DO + * + * @author 管理员 + */ +@TableName("pms_project_schedule") +@KeySequence("pms_project_schedule_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ProjectScheduleDO extends BaseDO { + + /** + * 主键 + */ + @TableId + private Long id; + /** + * 项目id + */ + private Long projectId; + /** + * 项目负责人 + */ + private String projectLeader; + /** + * 主专业 + */ + private String major; + /** + * 其他专业 + */ + private String minorMajors; + /** + * 其他主要项目组成员 + */ + private String minorUserIds; + /** + * 规模 + */ + private String scale; + /** + * 项目概况 + */ + private String survey; + /** + * 相关批复文件url + */ + private String replyFileUrl; + /** + * 当前阶段 + */ + private String stage; + /** + * 已完成的项目阶段 + */ + private String preStage; + /** + * 工作进展 + */ + private String progress; + /** + * 外部合同商议时间 + */ + private LocalDateTime contractNegotiationTime; + /** + * 已完成百分比 + */ + private BigDecimal completed; + /** + * 截至本月累计完成百分比 + */ + private BigDecimal accumulatedCompletion; + /** + * 本月新增完工比 + */ + private BigDecimal newlyIncreasedCompletion; + /** + * 已完成产值 + */ + private BigDecimal finishOutput; + /** + * 本月新增产值 + */ + private BigDecimal newlyIncreasedOutput; + /** + * 累积产值 + */ + private BigDecimal accumulatedOutput; + /** + * 竣工时间 + */ + private LocalDateTime completionTime; + /** + * 单选 + */ + private Boolean choose; + /** + * 竣工报告附件url + */ + private String completionFileUrl; + /** + * 最后编辑人 + */ + private String finalEditor; + /** + * 更新人 + */ + private String updator; + +} \ No newline at end of file diff --git a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/projectschedule/ProjectScheduleMapper.java b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/projectschedule/ProjectScheduleMapper.java new file mode 100644 index 000000000..864b5fe62 --- /dev/null +++ b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/projectschedule/ProjectScheduleMapper.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.pms.dal.mysql.projectschedule; + + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.pms.dal.dataobject.projectschedule.ProjectScheduleDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.pms.controller.admin.projectschedule.vo.*; + +/** + * 项目进度管理 Mapper + * + * @author 管理员 + */ +@Mapper +public interface ProjectScheduleMapper extends BaseMapperX { + + default PageResult selectPage(ProjectSchedulePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProjectScheduleDO::getProjectId, reqVO.getProjectId()) + .eqIfPresent(ProjectScheduleDO::getProjectLeader, reqVO.getProjectLeader()) + .eqIfPresent(ProjectScheduleDO::getMajor, reqVO.getMajor()) + .eqIfPresent(ProjectScheduleDO::getMinorMajors, reqVO.getMinorMajors()) + .eqIfPresent(ProjectScheduleDO::getMinorUserIds, reqVO.getMinorUserIds()) + .eqIfPresent(ProjectScheduleDO::getScale, reqVO.getScale()) + .eqIfPresent(ProjectScheduleDO::getSurvey, reqVO.getSurvey()) + .eqIfPresent(ProjectScheduleDO::getReplyFileUrl, reqVO.getReplyFileUrl()) + .eqIfPresent(ProjectScheduleDO::getStage, reqVO.getStage()) + .eqIfPresent(ProjectScheduleDO::getPreStage, reqVO.getPreStage()) + .eqIfPresent(ProjectScheduleDO::getProgress, reqVO.getProgress()) + .betweenIfPresent(ProjectScheduleDO::getContractNegotiationTime, reqVO.getContractNegotiationTime()) + .eqIfPresent(ProjectScheduleDO::getCompleted, reqVO.getCompleted()) + .eqIfPresent(ProjectScheduleDO::getAccumulatedCompletion, reqVO.getAccumulatedCompletion()) + .eqIfPresent(ProjectScheduleDO::getNewlyIncreasedCompletion, reqVO.getNewlyIncreasedCompletion()) + .eqIfPresent(ProjectScheduleDO::getFinishOutput, reqVO.getFinishOutput()) + .eqIfPresent(ProjectScheduleDO::getNewlyIncreasedOutput, reqVO.getNewlyIncreasedOutput()) + .eqIfPresent(ProjectScheduleDO::getAccumulatedOutput, reqVO.getAccumulatedOutput()) + .betweenIfPresent(ProjectScheduleDO::getCompletionTime, reqVO.getCompletionTime()) + .eqIfPresent(ProjectScheduleDO::getChoose, reqVO.getChoose()) + .eqIfPresent(ProjectScheduleDO::getCompletionFileUrl, reqVO.getCompletionFileUrl()) + .eqIfPresent(ProjectScheduleDO::getFinalEditor, reqVO.getFinalEditor()) + .eqIfPresent(ProjectScheduleDO::getCreator, reqVO.getCreator()) + .betweenIfPresent(ProjectScheduleDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(ProjectScheduleDO::getUpdator, reqVO.getUpdator()) + .betweenIfPresent(ProjectScheduleDO::getUpdateTime, reqVO.getUpdateTime()) + .eqIfPresent(ProjectScheduleDO::getDeleted, reqVO.getDeleted()) + .orderByDesc(ProjectScheduleDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/projectschedule/ProjectScheduleService.java b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/projectschedule/ProjectScheduleService.java new file mode 100644 index 000000000..9a871b573 --- /dev/null +++ b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/projectschedule/ProjectScheduleService.java @@ -0,0 +1,53 @@ +package cn.iocoder.yudao.module.pms.service.projectschedule; + +import jakarta.validation.*; +import cn.iocoder.yudao.module.pms.controller.admin.projectschedule.vo.*; +import cn.iocoder.yudao.module.pms.dal.dataobject.projectschedule.ProjectScheduleDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; + +/** + * 项目进度管理 Service 接口 + * + * @author 管理员 + */ +public interface ProjectScheduleService { + + /** + * 创建项目进度管理 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createProjectSchedule(@Valid ProjectScheduleSaveReqVO createReqVO); + + /** + * 更新项目进度管理 + * + * @param updateReqVO 更新信息 + */ + void updateProjectSchedule(@Valid ProjectScheduleSaveReqVO updateReqVO); + + /** + * 删除项目进度管理 + * + * @param id 编号 + */ + void deleteProjectSchedule(Long id); + + /** + * 获得项目进度管理 + * + * @param id 编号 + * @return 项目进度管理 + */ + ProjectScheduleDO getProjectSchedule(Long id); + + /** + * 获得项目进度管理分页 + * + * @param pageReqVO 分页查询 + * @return 项目进度管理分页 + */ + PageResult getProjectSchedulePage(ProjectSchedulePageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/projectschedule/ProjectScheduleServiceImpl.java b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/projectschedule/ProjectScheduleServiceImpl.java new file mode 100644 index 000000000..41093d74f --- /dev/null +++ b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/projectschedule/ProjectScheduleServiceImpl.java @@ -0,0 +1,71 @@ +package cn.iocoder.yudao.module.pms.service.projectschedule; + +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; + +import cn.iocoder.yudao.module.pms.controller.admin.projectschedule.vo.*; +import cn.iocoder.yudao.module.pms.dal.dataobject.projectschedule.ProjectScheduleDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.pms.dal.mysql.projectschedule.ProjectScheduleMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstants.*; + +/** + * 项目进度管理 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class ProjectScheduleServiceImpl implements ProjectScheduleService { + + @Resource + private ProjectScheduleMapper projectScheduleMapper; + + @Override + public Long createProjectSchedule(ProjectScheduleSaveReqVO createReqVO) { + // 插入 + ProjectScheduleDO projectSchedule = BeanUtils.toBean(createReqVO, ProjectScheduleDO.class); + projectScheduleMapper.insert(projectSchedule); + // 返回 + return projectSchedule.getId(); + } + + @Override + public void updateProjectSchedule(ProjectScheduleSaveReqVO updateReqVO) { + // 校验存在 + validateProjectScheduleExists(updateReqVO.getId()); + // 更新 + ProjectScheduleDO updateObj = BeanUtils.toBean(updateReqVO, ProjectScheduleDO.class); + projectScheduleMapper.updateById(updateObj); + } + + @Override + public void deleteProjectSchedule(Long id) { + // 校验存在 + validateProjectScheduleExists(id); + // 删除 + projectScheduleMapper.deleteById(id); + } + + private void validateProjectScheduleExists(Long id) { + if (projectScheduleMapper.selectById(id) == null) { + throw exception(PROJECT_SCHEDULE_NOT_EXISTS); + } + } + + @Override + public ProjectScheduleDO getProjectSchedule(Long id) { + return projectScheduleMapper.selectById(id); + } + + @Override + public PageResult getProjectSchedulePage(ProjectSchedulePageReqVO pageReqVO) { + return projectScheduleMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-ui/yudao-ui-admin-vue3-PmsProjectSchedule/src/api/pms/projectschedule/index.ts b/yudao-ui/yudao-ui-admin-vue3-PmsProjectSchedule/src/api/pms/projectschedule/index.ts new file mode 100644 index 000000000..e65f7ce10 --- /dev/null +++ b/yudao-ui/yudao-ui-admin-vue3-PmsProjectSchedule/src/api/pms/projectschedule/index.ts @@ -0,0 +1,67 @@ +import request from '@/config/axios' + +// 项目进度管理 VO +export interface ProjectScheduleVO { + id: number // 主键 + projectId: number // 项目id + projectLeader: string // 项目负责人 + major: string // 主专业 + minorMajors: string // 其他专业 + minorUserIds: string // 其他主要项目组成员 + scale: string // 规模 + survey: string // 项目概况 + replyFileUrl: string // 相关批复文件url + stage: string // 当前阶段 + preStage: string // 已完成的项目阶段 + progress: string // 工作进展 + contractNegotiationTime: Date // 外部合同商议时间 + completed: number // 已完成百分比 + accumulatedCompletion: number // 截至本月累计完成百分比 + newlyIncreasedCompletion: number // 本月新增完工比 + finishOutput: number // 已完成产值 + newlyIncreasedOutput: number // 本月新增产值 + accumulatedOutput: number // 累积产值 + completionTime: Date // 竣工时间 + choose: boolean // 单选 + completionFileUrl: string // 竣工报告附件url + finalEditor: string // 最后编辑人 + creator: string // 创建人 + createTime: Date // 创建时间 + updator: string // 更新人 + updateTime: Date // 更新时间 + deleted: boolean // 是否删除 + tenantId: number // 租户id +} + +// 项目进度管理 API +export const ProjectScheduleApi = { + // 查询项目进度管理分页 + getProjectSchedulePage: async (params: any) => { + return await request.get({ url: `/pms/project-schedule/page`, params }) + }, + + // 查询项目进度管理详情 + getProjectSchedule: async (id: number) => { + return await request.get({ url: `/pms/project-schedule/get?id=` + id }) + }, + + // 新增项目进度管理 + createProjectSchedule: async (data: ProjectScheduleVO) => { + return await request.post({ url: `/pms/project-schedule/create`, data }) + }, + + // 修改项目进度管理 + updateProjectSchedule: async (data: ProjectScheduleVO) => { + return await request.put({ url: `/pms/project-schedule/update`, data }) + }, + + // 删除项目进度管理 + deleteProjectSchedule: async (id: number) => { + return await request.delete({ url: `/pms/project-schedule/delete?id=` + id }) + }, + + // 导出项目进度管理 Excel + exportProjectSchedule: async (params) => { + return await request.download({ url: `/pms/project-schedule/export-excel`, params }) + }, +} \ No newline at end of file diff --git a/yudao-ui/yudao-ui-admin-vue3-PmsProjectSchedule/src/views/pms/projectschedule/ProjectScheduleForm.vue b/yudao-ui/yudao-ui-admin-vue3-PmsProjectSchedule/src/views/pms/projectschedule/ProjectScheduleForm.vue new file mode 100644 index 000000000..ef40714a5 --- /dev/null +++ b/yudao-ui/yudao-ui-admin-vue3-PmsProjectSchedule/src/views/pms/projectschedule/ProjectScheduleForm.vue @@ -0,0 +1,270 @@ + + \ No newline at end of file diff --git a/yudao-ui/yudao-ui-admin-vue3-PmsProjectSchedule/src/views/pms/projectschedule/index.vue b/yudao-ui/yudao-ui-admin-vue3-PmsProjectSchedule/src/views/pms/projectschedule/index.vue new file mode 100644 index 000000000..c5fca5372 --- /dev/null +++ b/yudao-ui/yudao-ui-admin-vue3-PmsProjectSchedule/src/views/pms/projectschedule/index.vue @@ -0,0 +1,484 @@ + + + \ No newline at end of file