[feat] 新增合同,外包合同,外部合同的历史流程查询

This commit is contained in:
wyw 2024-08-07 15:58:25 +08:00
parent 8e41517755
commit 1d079654b3
13 changed files with 135 additions and 26 deletions

View File

@ -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<List<ContractProcessInstanceRespVO>> getHisContractProcess(@RequestParam("projectId") Long projectId) {
List<ContractProcessInstanceRespVO> historyContractProcess = contractService.getHistoryContractProcess(projectId);
return success(historyContractProcess);
}
}

View File

@ -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<String, Object> formVariables;
@Schema(description = "业务的唯一标识-例如说,请假申请的编号", example = "1")
private String businessKey;
/**
* 发起流程的用户

View File

@ -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<List<ContractProcessInstanceRespVO>> getHisContractProcess(@RequestParam("projectId") Long projectId) {
List<ContractProcessInstanceRespVO> historyContractProcess = extContractService.getHistoryContractProcess(projectId);
return success(historyContractProcess);
}
}

View File

@ -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<List<ContractProcessInstanceRespVO>> getHisContractProcess(@RequestParam("projectId") Long projectId) {
List<ContractProcessInstanceRespVO> historyContractProcess = outsContractService.getHistoryContractProcess(projectId);
return success(historyContractProcess);
}
}

View File

@ -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;

View File

@ -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;
/**

View File

@ -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<ContractProcessInstanceRespVO> getHistoryContractProcess(Long projectId);
}

View File

@ -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<BpmTaskRespDTO> tasks = processInstanceApi.getTask(processInstanceId);
List<BpmProcessInstanceRespDTO.Task> taskList = BeanUtils.toBean(tasks, BpmProcessInstanceRespDTO.Task.class);
processInstance.setTasks(taskList);
return BeanUtils.toBean(processInstance, ContractProcessInstanceRespVO.class);
}
@Override
public List<ContractProcessInstanceRespVO> getHistoryContractProcess(Long projectId) {
List<ContractHistoryDO> projectList = contractHistoryMapper.selectList("project_id", projectId);
List<ContractProcessInstanceRespVO> contractProcessInstanceRespVOList = new ArrayList<>();
for (ContractHistoryDO contractHistoryDO : projectList) {
Long id = contractHistoryDO.getId();
ContractProcessInstanceRespVO contractProcess = getContractProcess(id);
contractProcessInstanceRespVOList.add(contractProcess);
}
return contractProcessInstanceRespVOList;
}
}

View File

@ -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<ContractProcessInstanceRespVO> getHistoryContractProcess(Long projectId);
}

View File

@ -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<ContractProcessInstanceRespVO> getHistoryContractProcess(Long projectId) {
List<ExtContractHistoryDO> contractHistoryList = extContractHistoryMapper.selectList("project_id", projectId);
List<ContractProcessInstanceRespVO> 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) {

View File

@ -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<ContractProcessInstanceRespVO> getHistoryContractProcess(Long projectId);
}

View File

@ -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<ContractProcessInstanceRespVO> getHistoryContractProcess(Long projectId) {
List<OutsContractHistoryDO> outsContracts= outsContractHistoryMapper.selectList("project_id", projectId);
List<ContractProcessInstanceRespVO> 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) {

View File

@ -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<Long> 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<ProjectDetailDO> list = projectService.getProjectDetailPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "项目基本信息.xls", "数据", ProjectRespDetailVO.class,
BeanUtils.toBean(list, ProjectRespDetailVO.class));
BeanUtils.toBean(list, ProjectRespDetailVO.class));
}
}