diff --git a/src/main/java/cn/palmte/work/service/AccountService.java b/src/main/java/cn/palmte/work/service/AccountService.java index 959b8f7..4e63ac6 100644 --- a/src/main/java/cn/palmte/work/service/AccountService.java +++ b/src/main/java/cn/palmte/work/service/AccountService.java @@ -458,7 +458,7 @@ public class AccountService { return new ArrayList<>(); } String sql = "select u.id as id from sys_user_role ur left join sys_user u on u.id=ur.user_id where ur.role_id in (?)"; - String ids = roleIds.stream().collect(Collectors.joining()); + String ids = String.join("", roleIds); List records = pagination.find(sql, ids); if (records == null || records.isEmpty()) { return new ArrayList<>(); @@ -466,7 +466,10 @@ public class AccountService { List userIds = new ArrayList<>(roleIds.size()); for (Record record : records) { - userIds.add(record.getInt("id") + ""); + Integer id = record.getInt("id"); + if (id != null) { + userIds.add(id.toString()); + } } return userIds; } diff --git a/src/main/java/cn/palmte/work/service/ActListenerService.java b/src/main/java/cn/palmte/work/service/ActListenerService.java index 98be86e..893437e 100644 --- a/src/main/java/cn/palmte/work/service/ActListenerService.java +++ b/src/main/java/cn/palmte/work/service/ActListenerService.java @@ -1,6 +1,8 @@ package cn.palmte.work.service; +import cn.palmte.work.config.activiti.ActConstant; +import cn.palmte.work.model.ActTaskDef; import cn.palmte.work.model.Admin; import cn.palmte.work.model.AdminRepository; import cn.palmte.work.utils.ActUtil; @@ -55,8 +57,9 @@ public class ActListenerService { ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(procInsId).singleResult(); logger.info("addCandidateUsers : {}, taskName:{}, hasProcIns:{}", candidateUsers, delegateTask.getName(), processInstance != null); + if (actUtil.isProjectProcessIns(processInstance)) { - updateProjectApprover(candidateUsers, processInstance); + updateProjectApprover(candidateUsers, processInstance, procDefId, taskDefKey); } delegateTask.addCandidateUsers(candidateUsers); @@ -87,13 +90,15 @@ public class ActListenerService { * @param candidateUsers * @param processInstance */ - private void updateProjectApprover(List candidateUsers, ProcessInstance processInstance) { + private void updateProjectApprover(List candidateUsers, ProcessInstance processInstance, String procDefId, String taskDefKey) { String businessKey = processInstance.getBusinessKey(); logger.info("businessKey : {}", businessKey); + ActTaskDef actTaskDef = actTaskDefService.findFirstByProcDefIdAndTaskKey(procDefId, taskDefKey); try { int adminId = 0; - if (!candidateUsers.isEmpty()) { + if (!candidateUsers.isEmpty() && actTaskDef!=null && actTaskDef.getTaskIndex() != ActConstant.TASK_INDEX_FIRST_USER_TASK) { + //回退到发起节点 审批人设置为空 for (String id : candidateUsers) { Admin one = adminRepository.findOne(Integer.parseInt(id)); if (!one.isDeleted() && one.getEnabled() == 1) { @@ -103,6 +108,7 @@ public class ActListenerService { } } } + projectInstanceService.updateApprover(Integer.parseInt(businessKey), adminId); } catch (Exception e) { logger.error("", e); diff --git a/src/main/java/cn/palmte/work/utils/ActUtil.java b/src/main/java/cn/palmte/work/utils/ActUtil.java index b54b9cc..f07af08 100644 --- a/src/main/java/cn/palmte/work/utils/ActUtil.java +++ b/src/main/java/cn/palmte/work/utils/ActUtil.java @@ -204,6 +204,9 @@ public class ActUtil { for (IdentityLink identityLink : identityLinkList) { if ("assignee".equals(identityLink.getType()) || "candidate".equals(identityLink.getType())) { String assigneeUserId = identityLink.getUserId(); + if (StrKit.isBlank(assigneeUserId) || "null".equals(assigneeUserId)) { + continue; + } namesBuilder.append(accountService.getNameById(Integer.parseInt(assigneeUserId))); namesBuilder.append(","); } diff --git a/src/main/resources/templates/admin/project_approve.ftl b/src/main/resources/templates/admin/project_approve.ftl index 949faeb..c455644 100644 --- a/src/main/resources/templates/admin/project_approve.ftl +++ b/src/main/resources/templates/admin/project_approve.ftl @@ -1872,7 +1872,7 @@ - <#if project.creatorId!=project.approveId && adminId==project.approveId> + <#if adminId==project.approveId> diff --git a/src/main/resources/templates/admin/project_list.ftl b/src/main/resources/templates/admin/project_list.ftl index f92cd05..75bf09d 100644 --- a/src/main/resources/templates/admin/project_list.ftl +++ b/src/main/resources/templates/admin/project_list.ftl @@ -271,7 +271,7 @@ --> - <#if list.creatorId!=list.approveId && adminId==list.approveId> + <#if adminId==list.approveId>