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