From d52db721ee339fa2b6a30eacb7847c1af8bebec0 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期一, 03 三月 2025 10:34:51 +0800
Subject: [PATCH] 流程推进启动变更bug
---
business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | 157 +++++++++++++++++++++++++++++++++++-----------------
1 files changed, 105 insertions(+), 52 deletions(-)
diff --git a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
index f6cfa5b..4b71e9a 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
@@ -19,22 +19,21 @@
import com.ycl.domain.entity.*;
import com.ycl.domain.form.*;
import com.ycl.domain.json.*;
-import com.ycl.domain.vo.CustomerTaskVO;
-import com.ycl.domain.vo.IndexCustomerTaskVO;
-import com.ycl.domain.vo.ProjectProcessDetailVO;
+import com.ycl.domain.vo.*;
import com.ycl.event.event.TaskLogEvent;
+import com.ycl.mapper.ProjectEngineeringMapper;
import com.ycl.mapper.ProjectInfoMapper;
import com.ycl.mapper.ProjectProcessMapper;
import com.ycl.service.*;
import com.ycl.common.base.Result;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ycl.domain.vo.ProjectProcessVO;
import com.ycl.domain.query.ProjectProcessQuery;
import com.ycl.service.common.TaskCommonService;
import com.ycl.system.service.ISysDeptService;
import com.ycl.system.service.ISysDictTypeService;
import com.ycl.system.service.ISysRoleService;
import com.ycl.system.service.ISysUserService;
+import com.ycl.utils.TreeUtil;
import lombok.Synchronized;
import org.apache.commons.lang3.StringUtils;
import org.flowable.bpmn.model.*;
@@ -77,6 +76,7 @@
private final IdentityService identityService;
private final RepositoryService repositoryService;
private final ProjectInfoMapper projectInfoMapper;
+ private final ProjectEngineeringMapper projectEngineeringMapper;
private final HistoryService historyService;
private final ISysUserService sysUserService;
private final ISysRoleService sysRoleService;
@@ -102,8 +102,20 @@
IPage<ProjectProcessVO> page = PageUtil.getPage(query, ProjectProcessVO.class);
baseMapper.getPage(query, page);
for (ProjectProcessVO vo : page.getRecords()) {
+ List<ProjectEngineeringVO> childList = baseMapper.getEngineeringList(vo.getId());
+ childList.stream().forEach(child -> {
+ if (StringUtils.isNotBlank(child.getProcessDefId())) {
+ ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(child.getProcessDefId()).singleResult();
+ if (Objects.nonNull(processDefinition)) {
+ child.setSuspended(processDefinition.isSuspended());
+ child.setFlowableProcessName(processDefinition.getName() + "(v" + processDefinition.getVersion() + ")");
+ child.setDeployId(processDefinition.getDeploymentId());
+ }
+ }
+ });
+ vo.setChildren(TreeUtil.treeForProjectEng(childList));
vo.setStatus(vo.getProjectStatus());
- if (Objects.nonNull(vo.getProcessDefId())) {
+ if (StringUtils.isNotBlank(vo.getProcessDefId())) {
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(vo.getProcessDefId()).singleResult();
if (Objects.nonNull(processDefinition)) {
vo.setSuspended(processDefinition.isSuspended());
@@ -121,6 +133,7 @@
// 鏌ヨ璇ラ」鐩槸鍚﹀凡缁忕粦瀹氳繃娴佺▼浜嗭紝妫�鏌ョ粦瀹氱殑娴佺▼鏄惁鍦ㄨ繍琛岋紝鍦ㄨ繍琛屽氨鍒犱簡
ProjectProcess pp = new LambdaQueryChainWrapper<>(baseMapper)
.eq(ProjectProcess::getProjectId, form.getProjectId())
+ .eq(ProjectProcess::getProjectType, form.getProjectType())
.one();
if (Objects.isNull(pp)) {
throw new RuntimeException("璇ラ」鐩湭缁戝畾娴佺▼");
@@ -140,23 +153,36 @@
}
}
}
- ProjectInfo project = new LambdaQueryChainWrapper<>(projectInfoMapper)
- .select(ProjectInfo::getProjectOwnerUnit)
- .eq(ProjectInfo::getId, form.getProjectId())
- .one();
- if (Objects.isNull(project)) {
- throw new RuntimeException("椤圭洰涓嶅瓨鍦�");
+ Long unitId = null;
+ if (ProjectProcessTypeEnum.PROJECT.equals(form.getProjectType())) {
+ ProjectInfo project = new LambdaQueryChainWrapper<>(projectInfoMapper)
+ .eq(ProjectInfo::getId, form.getProjectId())
+ .one();
+ if (Objects.isNull(project)) {
+ throw new RuntimeException("椤圭洰涓嶅瓨鍦�");
+ }
+ unitId = project.getProjectOwnerUnit();
+ } else if (ProjectProcessTypeEnum.ENGINEERING.equals(form.getProjectType())) {
+ ProjectEngineering projectEngineering = new LambdaQueryChainWrapper<>(projectEngineeringMapper)
+ .eq(ProjectEngineering::getId, form.getProjectId())
+ .one();
+ if (Objects.isNull(projectEngineering)) {
+ throw new RuntimeException("宸ョ▼涓嶅瓨鍦�");
+ }
+ unitId = projectEngineering.getUnit();
}
- SysDept dept = deptService.selectDeptById(project.getProjectOwnerUnit());
+
+ SysDept dept = deptService.selectDeptById(unitId);
if (Objects.isNull(dept)) {
- throw new RuntimeException("椤圭洰涓氫富鍗曚綅涓嶅瓨鍦�");
+ throw new RuntimeException("涓氫富鍗曚綅涓嶅瓨鍦�");
}
String processInsId = this.startPro(form.getProjectId(), form.getProcessDefId(), dept.getDeptId());
new LambdaUpdateChainWrapper<>(baseMapper)
.eq(ProjectProcess::getProjectId, form.getProjectId())
+ .eq(ProjectProcess::getProjectType, form.getProjectType())
.set(ProjectProcess::getProcessDefId, form.getProcessDefId())
.set(ProjectProcess::getProcessInsId, processInsId)
- .set(ProjectProcess::getDataLaunch, project.getProjectOwnerUnit())
+ .set(ProjectProcess::getDataLaunch, unitId)
.update();
return Result.ok("娴佺▼鍙樻洿鎴愬姛");
@@ -164,21 +190,36 @@
@Override
@Transactional(rollbackFor = Exception.class)
- public Result startProcess(Long projectId, String processDefId) {
- ProjectInfo project = projectInfoMapper.selectById(projectId);
- if (Objects.isNull(project)) {
- throw new RuntimeException("椤圭洰涓嶅瓨鍦�");
+ public Result startProcess(ProjectProcessForm form) {
+ Long unitId = null;
+ if (ProjectProcessTypeEnum.PROJECT.equals(form.getProjectType())) {
+ ProjectInfo project = new LambdaQueryChainWrapper<>(projectInfoMapper)
+ .eq(ProjectInfo::getId, form.getProjectId())
+ .one();
+ if (Objects.isNull(project)) {
+ throw new RuntimeException("椤圭洰涓嶅瓨鍦�");
+ }
+ unitId = project.getProjectOwnerUnit();
+ } else if (ProjectProcessTypeEnum.ENGINEERING.equals(form.getProjectType())) {
+ ProjectEngineering projectEngineering = new LambdaQueryChainWrapper<>(projectEngineeringMapper)
+ .eq(ProjectEngineering::getId, form.getProjectId())
+ .one();
+ if (Objects.isNull(projectEngineering)) {
+ throw new RuntimeException("宸ョ▼涓嶅瓨鍦�");
+ }
+ unitId = projectEngineering.getUnit();
}
- SysDept dept = deptService.selectDeptById(project.getProjectOwnerUnit());
+ SysDept dept = deptService.selectDeptById(unitId);
if (Objects.isNull(dept)) {
- throw new RuntimeException("椤圭洰涓氫富鍗曚綅涓嶅瓨鍦�");
+ throw new RuntimeException("涓氫富鍗曚綅涓嶅瓨鍦�");
}
- String processInsId = this.startPro(projectId, processDefId, dept.getDeptId());
+ String processInsId = this.startPro(form.getProjectId(), form.getProcessDefId(), dept.getDeptId());
ProjectProcess entity = new ProjectProcess();
- entity.setProjectId(projectId);
- entity.setProcessDefId(processDefId);
+ entity.setProjectId(form.getProjectId());
+ entity.setProcessDefId(form.getProcessDefId());
entity.setProcessInsId(processInsId);
- entity.setDataLaunch(project.getProjectOwnerUnit());
+ entity.setDataLaunch(unitId);
+ entity.setProjectType(form.getProjectType());
baseMapper.insert(entity);
return Result.ok("娴佺▼鍚姩鎴愬姛");
@@ -191,7 +232,7 @@
* @param processDefId
* @return
*/
- private String startPro(Long projectId, String processDefId, Long createBy) {
+ private String startPro(String projectId, String processDefId, Long createBy) {
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefId)
@@ -213,39 +254,51 @@
/**
* 鑾峰彇娴佺▼璇︽儏
*
- * @param projectId
+ * @param form
* @return
*/
@Override
- public Result detail(Long projectId, String processDefId) {
- // 椤圭洰淇℃伅
- ProjectInfo projectInfo = new LambdaQueryChainWrapper<>(projectInfoMapper)
- .select(ProjectInfo::getId, ProjectInfo::getProjectName, ProjectInfo::getProjectCode)
- .eq(ProjectInfo::getId, projectId)
- .one();
+ public Result detail(ProjectProcessForm form) {
- if (Objects.isNull(projectInfo)) {
- return Result.error("璇ラ」鐩笉瀛樺湪");
+ String projectName = "";
+ String projectCode = "";
+ if (ProjectProcessTypeEnum.PROJECT.equals(form.getProjectType())) {
+ ProjectInfo projectInfo = projectInfoMapper.selectById(form.getProjectId());
+ if (Objects.isNull(projectInfo)) {
+ throw new RuntimeException("椤圭洰涓嶅瓨鍦�");
+ }
+ projectName = projectInfo.getProjectName();
+ projectCode = projectInfo.getProjectCode();
+ } else if (ProjectProcessTypeEnum.ENGINEERING.equals(form.getProjectType())) {
+ ProjectEngineering projectEngineering = projectEngineeringMapper.selectById(form.getProjectId());
+ if (Objects.isNull(projectEngineering)) {
+ throw new RuntimeException("宸ョ▼涓嶅瓨鍦�");
+ }
+ projectName = projectEngineering.getProjectName();
}
ProjectProcess projectProcess = new LambdaQueryChainWrapper<>(baseMapper)
- .eq(ProjectProcess::getProjectId, projectId)
- .eq(ProjectProcess::getProcessDefId, processDefId)
+ .eq(ProjectProcess::getProjectId, form.getProjectId())
+ .eq(ProjectProcess::getProcessDefId, form.getProcessDefId())
+ .eq(ProjectProcess::getProjectType, form.getProjectType())
.one();
if (Objects.isNull(projectProcess)) {
- return Result.error("璇ラ」鐩湭璁剧疆娴佺▼");
+ return Result.error("鏈缃祦绋�");
}
ProjectProcessDetailVO detail = new ProjectProcessDetailVO();
- detail.setProjectId(projectId);
- detail.setProjectName(projectInfo.getProjectName());
- detail.setProjectCode(projectInfo.getProjectCode());
+ detail.setProjectType(form.getProjectType().getValue());
+ detail.setProjectId(form.getProjectId());
+
+
+ detail.setProjectName(projectName);
+ detail.setProjectCode(projectCode);
ProjectProcessDetailVO.TaskStatistics taskStatistics = new ProjectProcessDetailVO.TaskStatistics();
// 鐘舵�佺粺璁�
- taskStatistics.setTotalTaskNum(this.getTotalTaskNum(processDefId));
+ taskStatistics.setTotalTaskNum(this.getTotalTaskNum(form.getProcessDefId()));
taskStatistics.setTodoTaskNum(this.getTodoTaskNum(projectProcess.getProcessInsId()));
- taskStatistics.setRemainingTaskNum(this.getRemainingTaskNum(processDefId, projectProcess.getProcessInsId(), taskStatistics.getTotalTaskNum()));
+ taskStatistics.setRemainingTaskNum(this.getRemainingTaskNum(form.getProcessDefId(), projectProcess.getProcessInsId(), taskStatistics.getTotalTaskNum()));
taskStatistics.setTimelyFinishedTaskNum(this.getTimelyTaskNum(projectProcess.getProcessInsId()));
taskStatistics.setOvertimeTaskNum(this.getOvertimeTaskNum(projectProcess.getProcessInsId()));
taskStatistics.setWillOvertimeTaskNum(this.getWillOvertimeTaskNum(projectProcess.getProcessInsId()));
@@ -835,7 +888,7 @@
* @param pageNum
* @param result
*/
- public void getTodoTaskList(Long projectId, String processInsId, String taskName, int pageSize, int pageNum, Result result) {
+ public void getTodoTaskList(String projectId, String processInsId, String taskName, int pageSize, int pageNum, Result result) {
TaskQuery taskQuery = taskService.createTaskQuery()
.active()
.processInstanceId(processInsId)
@@ -872,7 +925,7 @@
* @param result
* @return
*/
- private List<CustomerTaskVO> getAllUserTask(Long projectId, String processDefinitionId, String processInsId, String taskName, Integer pageNum, Integer pageSize, Result result) {
+ private List<CustomerTaskVO> getAllUserTask(String projectId, String processDefinitionId, String processInsId, String taskName, Integer pageNum, Integer pageSize, Result result) {
int startNum = pageSize * (pageNum - 1);
int endNum = startNum + pageSize;
List<UserTask> allUserTaskElement = this.getAllUserTaskElement(processDefinitionId);
@@ -1022,7 +1075,7 @@
* @param processDefId 娴佺▼瀹氫箟id
* @return
*/
- private List<CustomerTaskVO> getFinishedProcessTaskInfo(List<UserTask> userTasks, Long projectId, String processInsId, String processDefId) {
+ private List<CustomerTaskVO> getFinishedProcessTaskInfo(List<UserTask> userTasks, String projectId, String processInsId, String processDefId) {
HistoricProcessInstance hisProcess = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInsId).singleResult();
if (Objects.isNull(hisProcess)) {
return new ArrayList<>();
@@ -1088,7 +1141,7 @@
* @param taskVO 浠诲姟vo
* @param projectId 椤圭洰id
*/
- private void setRuntimeTaskInfo(Task task, CustomerTaskVO taskVO, Long projectId) {
+ private void setRuntimeTaskInfo(Task task, CustomerTaskVO taskVO, String projectId) {
// 褰撳墠娴佺▼淇℃伅
taskVO.setTaskId(task.getId());
taskVO.setCreateTime(task.getCreateTime());
@@ -1231,7 +1284,7 @@
* @param result
* @return
*/
- private List<CustomerTaskVO> getTimelyTask(Long projectId, String processDefinitionId, String processInsId, String taskName, Integer pageNum, Integer pageSize, Result result) {
+ private List<CustomerTaskVO> getTimelyTask(String projectId, String processDefinitionId, String processInsId, String taskName, Integer pageNum, Integer pageSize, Result result) {
int startNum = pageSize * (pageNum - 1);
int endNum = startNum + pageSize;
@@ -1443,7 +1496,7 @@
* @param result
* @return
*/
- private List<CustomerTaskVO> getOvertimeTask(Long projectId, String processDefinitionId, String processInsId, String taskName, Integer pageNum, Integer pageSize, Result result) {
+ private List<CustomerTaskVO> getOvertimeTask(String projectId, String processDefinitionId, String processInsId, String taskName, Integer pageNum, Integer pageSize, Result result) {
int startNum = pageSize * (pageNum - 1);
int endNum = startNum + pageSize;
@@ -1556,7 +1609,7 @@
* @param result
* @return
*/
- private List<CustomerTaskVO> getWillOvertimeTask(Long projectId, String processDefinitionId, String processInsId, String taskName, Integer pageNum, Integer pageSize, Result result) {
+ private List<CustomerTaskVO> getWillOvertimeTask(String projectId, String processDefinitionId, String processInsId, String taskName, Integer pageNum, Integer pageSize, Result result) {
int startNum = pageSize * (pageNum - 1);
int endNum = startNum + pageSize;
@@ -1631,7 +1684,7 @@
* @param result
* @return
*/
- private List<CustomerTaskVO> getRemainingTask(Long projectId,
+ private List<CustomerTaskVO> getRemainingTask(String projectId,
String processDefinitionId,
String processInsId,
String taskName,
@@ -1759,7 +1812,7 @@
* @param setType 0 璁剧疆璐d换鍗曚綅 1 璁剧疆鍔炵悊鍗曚綅
* @param vo
*/
- private void varYzReview(CustomerTaskVO vo, Long projectId, String processInsId, HandlerTypeEnum type, Integer setType) {
+ private void varYzReview(CustomerTaskVO vo, String projectId, String processInsId, HandlerTypeEnum type, Integer setType) {
ProjectProcess projectProcess = new LambdaQueryChainWrapper<>(projectProcessMapper)
.eq(ProjectProcess::getProjectId, projectId)
.eq(ProjectProcess::getProcessInsId, processInsId)
@@ -1829,7 +1882,7 @@
* @param projectId
* @param processInsId
*/
- private void setCandidateInfo(UserTask userTask, CustomerTaskVO vo, Long projectId, String processInsId) {
+ private void setCandidateInfo(UserTask userTask, CustomerTaskVO vo, String projectId, String processInsId) {
if (StringUtils.isNotBlank(userTask.getAssignee())) {
SysUser sysUser = sysUserService.selectUserById(Long.parseLong(userTask.getAssignee()));
if (Objects.nonNull(sysUser)) {
--
Gitblit v1.8.0