business/src/main/java/com/ycl/controller/FlowTaskController.java
@@ -109,7 +109,7 @@ @PostMapping("/complete/form/{taskId}") public AjaxResult completeSubmitForm(@ApiParam(value = "流程定义id") @PathVariable(value = "taskId") String taskId, @ApiParam(value = "变量集合,json对象") @RequestBody Map<String, Object> variables) { return flowTaskService.completeSubmitForm(taskId, variables); return flowTaskService.completeSubmitForm(taskId, variables, Boolean.TRUE); } @ApiOperation(value = "完成审批任务") business/src/main/java/com/ycl/service/IFlowTaskService.java
@@ -220,9 +220,10 @@ * * @param taskId 任务id * @param variables 表单数据 * @param addLog * @return */ AjaxResult completeSubmitForm(String taskId, Map<String, Object> variables); AjaxResult completeSubmitForm(String taskId, Map<String, Object> variables, Boolean addLog); /** * 查看任务 business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
@@ -24,7 +24,6 @@ import com.ycl.domain.dto.FlowTaskDto; import com.ycl.domain.dto.FlowViewerDto; import com.ycl.domain.entity.ProcessCoding; import com.ycl.domain.entity.ProcessLog; import com.ycl.domain.entity.ProjectProcess; import com.ycl.domain.entity.SysForm; import com.ycl.domain.json.RejectData; @@ -76,7 +75,6 @@ import java.io.InputStream; import java.lang.reflect.Field; import java.math.BigDecimal; import java.nio.charset.StandardCharsets; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -137,11 +135,12 @@ * * @param taskId 任务id * @param variables 表单数据 * @param addLog * @return */ @Override @Transactional(rollbackFor = Exception.class) public AjaxResult completeSubmitForm(String taskId, Map<String, Object> variables) { public AjaxResult completeSubmitForm(String taskId, Map<String, Object> variables, Boolean addLog) { Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); if (Objects.isNull(task)) { return AjaxResult.error("任务不存在"); @@ -175,15 +174,17 @@ taskService.complete(taskId, newV); } // 保存日志 publisher.publishEvent(new TaskLogEvent(this, null, SecurityUtils.getUserId(), projectProcess.getProjectId(), projectProcess.getProcessInsId(), taskId, task.getTaskDefinitionKey(), task.getName(), ProcessLogEventTypeEnum.FINISHED, null)); if (addLog) { publisher.publishEvent(new TaskLogEvent(this, null, SecurityUtils.getUserId(), projectProcess.getProjectId(), projectProcess.getProcessInsId(), taskId, task.getTaskDefinitionKey(), task.getName(), ProcessLogEventTypeEnum.FINISHED, null)); } return AjaxResult.success("提交成功"); } business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
@@ -3,7 +3,6 @@ import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; @@ -738,7 +737,7 @@ } } // 完成任务 flowTaskService.completeSubmitForm(form.getTaskId(), data); flowTaskService.completeSubmitForm(form.getTaskId(), data, Boolean.FALSE); } return Result.ok("操作成功"); } @@ -1008,11 +1007,11 @@ vo.setHandlerType(HandlerTypeEnum.USER); SysUser sysUser = sysUserService.selectUserById(Long.parseLong(userTask.getAssignee())); if (Objects.nonNull(sysUser)) { handlerIds.add(sysUser.getUserId()); handlerNames.add(this.getUserShowName(sysUser)); vo.getHandlerId().add(sysUser.getUserId()); vo.getHandlerName().add(this.getUserShowName(sysUser)); if (Objects.nonNull(sysUser.getDept())) { handlerUnitIds.add(sysUser.getDept().getDeptId()); handlerUnitNames.add(sysUser.getDept().getDeptName()); vo.getHandlerUnitId().add(sysUser.getDept().getDeptId()); vo.getHandlerUnitName().add(sysUser.getDept().getDeptName()); } } } else if (CollectionUtil.isNotEmpty(userTask.getCandidateGroups())) { @@ -1029,17 +1028,17 @@ // 部门 SysDept dept = sysDeptService.selectDeptById(Long.parseLong(split[1])); if (Objects.nonNull(dept)) { handlerUnitIds.add(dept.getDeptId()); handlerUnitNames.add(dept.getDeptName()); handlerNames.add(this.getDeptLeaderShowName(dept)); vo.getHandlerUnitId().add(dept.getDeptId()); vo.getHandlerUnitName().add(dept.getDeptName()); vo.getHandlerName().add(this.getDeptLeaderShowName(dept)); } } } else { vo.setHandlerType(HandlerTypeEnum.ROLE); SysRole role = sysRoleService.selectRoleById(Long.parseLong(groupId)); if (Objects.nonNull(role)) { handlerUnitIds.add(role.getRoleId()); handlerUnitNames.add(role.getRoleName()); vo.getHandlerUnitId().add(role.getRoleId()); vo.getHandlerUnitName().add(role.getRoleName()); } } } @@ -1057,16 +1056,15 @@ long handlerUserId = Long.parseLong(historicTasks.get(0).getAssignee()); SysUser handlerUser = sysUserService.selectUserById(handlerUserId); if (Objects.nonNull(handlerUser)) { handlerIds.add(handlerUserId); handlerNames.add(this.getUserShowName(handlerUser)); vo.getHandlerId().add(handlerUserId); vo.getHandlerName().add(this.getUserShowName(handlerUser)); if (Objects.nonNull(handlerUser.getDept())) { handlerUnitNames.add(handlerUser.getDept().getDeptName()); handlerUnitIds.add(handlerUser.getDept().getDeptId()); vo.getHandlerUnitName().add(handlerUser.getDept().getDeptName()); vo.getHandlerUnitId().add(handlerUser.getDept().getDeptId()); } } } vo.setTaskDefinitionKey(historicTasks.get(0).getTaskDefinitionKey()); this.setPromoterAndHandler(vo, historicTasks.get(0).getIdentityLinks()); } } else { vo.setTaskStatus(TaskStatusEnum.TODO); @@ -1411,9 +1409,12 @@ if (Objects.nonNull(handlerUser)) { vo.getHandlerId().add(handlerUserId); vo.getHandlerName().add(this.getUserShowName(handlerUser)); if (Objects.nonNull(handlerUser.getDept())) { vo.getHandlerUnitId().add(handlerUser.getDept().getDeptId()); vo.getHandlerUnitName().add(handlerUser.getDept().getDeptName()); } } vo.setTaskDefinitionKey(hisTask.getTaskDefinitionKey()); this.setPromoterAndHandler(vo, hisTask.getIdentityLinks()); } this.distinctVo(vo); @@ -1948,17 +1949,6 @@ * @param identityLinkInfos 如果是已完成的任务,用这个去取关联的用户/用户组 */ private void setPromoterAndHandler(CustomerTaskVO taskVO, List<? extends IdentityLinkInfo> identityLinkInfos) { // this.setPromoterInfo(taskVO); // 一个任务可能有多个候选人/组,所以需要使用list List<Long> handlerIds = new ArrayList<>(2); List<String> handlerNames = new ArrayList<>(2); List<Long> handlerUnitIds = new ArrayList<>(2); List<String> handlerUnitNames = new ArrayList<>(2); taskVO.setHandlerId(handlerIds); taskVO.setHandlerName(handlerNames); taskVO.setHandlerUnitId(handlerUnitIds); taskVO.setHandlerUnitName(handlerUnitNames); // 流程处理人信息 if (TaskStatusEnum.TODO.equals(taskVO.getTaskStatus())) { @@ -1972,11 +1962,11 @@ SysUser sysUser = sysUserService.selectUserById(Long.parseLong(identityLink.getUserId())); if (Objects.nonNull(sysUser)) { taskVO.setHandlerType(HandlerTypeEnum.USER); handlerIds.add(sysUser.getUserId()); handlerNames.add(this.getUserShowName(sysUser)); taskVO.getHandlerId().add(sysUser.getUserId()); taskVO.getHandlerName().add(this.getUserShowName(sysUser)); if (Objects.nonNull(sysUser.getDept())) { handlerUnitIds.add(sysUser.getDept().getDeptId()); handlerUnitNames.add(sysUser.getDept().getDeptName()); taskVO.getHandlerUnitId().add(sysUser.getDept().getDeptId()); taskVO.getHandlerUnitName().add(sysUser.getDept().getDeptName()); } } // 绑定的是角色或者是部门,需要根据id判断 @@ -1988,16 +1978,16 @@ // 部门 SysDept dept = sysDeptService.selectDeptById(Long.parseLong(split[1])); if (Objects.nonNull(dept)) { handlerUnitIds.add(dept.getDeptId()); handlerUnitNames.add(dept.getDeptName()); taskVO.getHandlerUnitId().add(dept.getDeptId()); taskVO.getHandlerUnitName().add(dept.getDeptName()); } } } else { taskVO.setHandlerType(HandlerTypeEnum.ROLE); SysRole role = sysRoleService.selectRoleById(Long.parseLong(identityLink.getGroupId())); if (Objects.nonNull(role)) { handlerUnitIds.add(role.getRoleId()); handlerUnitNames.add(role.getRoleName()); taskVO.getHandlerUnitId().add(role.getRoleId()); taskVO.getHandlerUnitName().add(role.getRoleName()); } } } @@ -2009,11 +1999,11 @@ taskVO.setHandlerType(HandlerTypeEnum.USER); SysUser sysUser = sysUserService.selectUserById(Long.parseLong(identityLink.getUserId())); if (Objects.nonNull(sysUser)) { handlerIds.add(sysUser.getUserId()); handlerNames.add(this.getUserShowName(sysUser)); taskVO.getHandlerId().add(sysUser.getUserId()); taskVO.getHandlerName().add(this.getUserShowName(sysUser)); if (Objects.nonNull(sysUser.getDept())) { handlerUnitIds.add(sysUser.getDept().getDeptId()); handlerUnitNames.add(sysUser.getDept().getDeptName()); taskVO.getHandlerUnitId().add(sysUser.getDept().getDeptId()); taskVO.getHandlerUnitName().add(sysUser.getDept().getDeptName()); } } // 绑定的是角色,查出角色名称 @@ -2025,16 +2015,16 @@ // 部门 SysDept dept = sysDeptService.selectDeptById(Long.parseLong(split[1])); if (Objects.nonNull(dept)) { handlerUnitIds.add(dept.getDeptId()); handlerUnitNames.add(dept.getDeptName()); taskVO.getHandlerUnitId().add(dept.getDeptId()); taskVO.getHandlerUnitName().add(dept.getDeptName()); } } } else { taskVO.setHandlerType(HandlerTypeEnum.ROLE); SysRole role = sysRoleService.selectRoleById(Long.parseLong(identityLink.getGroupId())); if (Objects.nonNull(role)) { handlerUnitIds.add(role.getRoleId()); handlerUnitNames.add(role.getRoleName()); taskVO.getHandlerUnitId().add(role.getRoleId()); taskVO.getHandlerUnitName().add(role.getRoleName()); } } } flowable/src/main/java/com/ycl/service/common/TaskCommonService.java
@@ -11,6 +11,7 @@ import com.ycl.domain.vo.FormDetailVO; import com.ycl.flow.FindNextNodeUtil; import com.ycl.service.ISysFormService; import com.ycl.system.service.ISysDeptService; import com.ycl.system.service.ISysDictDataService; import com.ycl.system.service.ISysDictTypeService; import com.ycl.system.service.ISysUserService; @@ -47,6 +48,7 @@ private final TaskService taskService; private final HistoryService historyService; private final ISysUserService sysUserService; private final ISysDeptService deptService; private final ISysDictTypeService sysDictDService; /** @@ -321,14 +323,17 @@ * @return */ public List<String> getCurrentUserGroups() { String deptId = "dept:" + SecurityUtils.getLoginUser().getDeptId(); List<String> roleIds; if (CollectionUtils.isEmpty(SecurityUtils.getLoginUser().getUser().getRoles())) { roleIds = new ArrayList<>(1); } else { roleIds = SecurityUtils.getLoginUser().getUser().getRoles().stream().map(role -> role.getRoleId() + "").collect(Collectors.toList()); } roleIds.add(deptId); if (Objects.nonNull(SecurityUtils.getLoginUser().getDeptId())) { List<Long> deptIds = deptService.getChildIds(SecurityUtils.getLoginUser().getDeptId()); List<String> deptIdList = deptIds.stream().map(id -> "dept:" + id).collect(Collectors.toList()); roleIds.addAll(deptIdList); } return roleIds; } start/src/main/java/com/ycl/web/controller/system/SysDeptController.java
@@ -154,4 +154,5 @@ dept.setParentId(approvalPortId); return Result.ok().data(deptService.selectDeptListNoAuth(dept)); } } start/src/main/java/com/ycl/web/controller/system/SysLoginController.java
@@ -1,8 +1,10 @@ package com.ycl.web.controller.system; import java.util.List; import java.util.Objects; import java.util.Set; import com.ycl.system.service.ISysDeptService; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -33,6 +35,8 @@ private final ISysMenuService menuService; private final SysPermissionService permissionService; private final ISysDeptService deptService; /** * 登录方法 @@ -66,6 +70,11 @@ ajax.put("user", user); ajax.put("roles", roles); ajax.put("permissions", permissions); // 获取当前登陆人的当前部门及下级所有部门 if (Objects.nonNull(user.getDept())) { List<Long> deptIds = deptService.getChildIds(user.getDept().getDeptId()); ajax.put("childDeptList", deptIds); } return ajax; } system/src/main/java/com/ycl/system/mapper/SysDeptMapper.java
@@ -124,4 +124,11 @@ Long selectByName(@Param("name") String projectOwnerUnit); /** * 获取某部门的子部门 * @param deptId * @return */ List<Long> getChildIds(@Param("deptId") Long deptId); } system/src/main/java/com/ycl/system/service/ISysDeptService.java
@@ -160,4 +160,12 @@ * @return */ List<StringTreeSelect> flowableAll(); /** * 获取某部门的下级部门 * * @param deptId * @return */ List<Long> getChildIds(Long deptId); } system/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java
@@ -427,4 +427,8 @@ } @Override public List<Long> getChildIds(Long deptId) { return deptMapper.getChildIds(deptId); } } system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -116,6 +116,20 @@ SELECT dept_id FROM sys_dept WHERE dept_name = #{name} and del_flag = '0' limit 1 </select> <select id="getChildIds" parameterType="long" resultType="long"> WITH RECURSIVE temp_table AS ( SELECT dept_id FROM sys_dept WHERE dept_id = #{deptId} AND del_flag = '0' UNION ALL SELECT so.dept_id FROM sys_dept so INNER JOIN temp_table tb ON so.parent_id = tb.dept_id AND so.del_flag = '0' ) SELECT dept_id FROM temp_table </select> <insert id="insertDept" parameterType="SysDept"> insert into sys_dept( <if test="deptId != null and deptId != 0">dept_id,</if>