| | |
| | | import com.ruoyi.approve.service.ApproveProcessConfigNodeService; |
| | | import com.ruoyi.approve.service.IApproveNodeService; |
| | | import com.ruoyi.approve.service.IApproveProcessService; |
| | | import com.fasterxml.jackson.core.type.TypeReference; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.ruoyi.common.enums.FileNameType; |
| | | import com.ruoyi.common.utils.OrderUtils; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | |
| | | @RequiredArgsConstructor |
| | | public class ApproveProcessServiceImpl extends ServiceImpl<ApproveProcessMapper, ApproveProcess> implements IApproveProcessService { |
| | | private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyyyMMdd"); |
| | | private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); |
| | | |
| | | private final SysDeptMapper sysDeptMapper; |
| | | private final IApproveNodeService approveNodeService; |
| | |
| | | private final ApproveProcessConfigNodeService approveProcessConfigNodeService; |
| | | |
| | | @Override |
| | | public void addApprove(ApproveProcessVO approveProcessVO) throws Exception { |
| | | public Long addApprove(ApproveProcessVO approveProcessVO) throws Exception { |
| | | SysUser sysUser = SecurityUtils.getLoginUser().getUser(); |
| | | SysDept sysDept = sysDeptMapper.selectDeptById(SecurityUtils.getLoginUser().getCurrentDeptId()); |
| | | List<ApproveProcessConfigNodeVo> list = approveProcessConfigNodeService.listNode( approveProcessVO.getApproveType()); |
| | | List<ApproveProcessConfigNodeVo> list = approveProcessConfigNodeService.listNode(approveProcessVO.getApproveType()); |
| | | // 按节点顺序分组(同节点多审批人) |
| | | List<List<ApproveProcessConfigNodeVo>> groups = groupByOrder(list); |
| | | if (groups.isEmpty()) throw new RuntimeException("添加审批节点和人员"); |
| | | List<ApproveProcessConfigNodeVo> firstGroup = groups.get(0); |
| | | List<Long> nodeIds = list.stream() |
| | | .map(ApproveProcessConfigNodeVo::getApproverId) |
| | | .collect(Collectors.toList()); |
| | |
| | | approveProcess.setApproveType(approveProcessVO.getApproveType()); |
| | | approveProcess.setCreateTime(LocalDateTime.now()); |
| | | approveProcess.setTenantId(approveProcessVO.getApproveDeptId()); |
| | | approveProcess.setApproveUserCurrentId(nodeIds.get(0)); |
| | | approveProcess.setApproveUserCurrentName(sysUsers |
| | | .stream() |
| | | .filter(SysUser -> SysUser.getUserId().equals(nodeIds.get(0))) |
| | | .collect(Collectors.toList()) |
| | | .get(0) |
| | | .getNickName()); |
| | | setFirstNodeApprovers(approveProcess, firstGroup, sysUsers); |
| | | // 设置状态为重新提交 |
| | | if (approveProcessVO.getId() != null) { |
| | | ApproveProcess approveProcess1 = approveProcessMapper.selectById(approveProcessVO.getId()); |
| | | approveProcess1.setApproveStatus(4); |
| | | approveProcessMapper.updateById(approveProcess1); |
| | | } |
| | | // 节点结构快照(供编辑重建审批节点时保分组与模式) |
| | | approveProcess.setApproveNodeConfig(buildNodeConfig(list)); |
| | | save(approveProcess); |
| | | //初始化审批节点 |
| | | String nodeIdStr = nodeIds.stream() |
| | | .map(String::valueOf) |
| | | .collect(Collectors.joining(",")); |
| | | approveNodeService.initApproveNodes(nodeIdStr, no, approveProcessVO.getApproveDeptId()); |
| | | //初始化审批节点(按配置节点分组,支持同节点多审批人/或签会签) |
| | | approveNodeService.initApproveNodes(list, no, approveProcessVO.getApproveDeptId()); |
| | | // 附件绑定 |
| | | tempFileService.migrateTempFilesToFormal(approveProcess.getId(), approveProcessVO.getTempFileIds(), FileNameType.ApproveProcess.getValue()); |
| | | /*消息通知*/ |
| | | Long id = nodeIds.get(0); |
| | | if (approveProcess.getApproveType()==8){ |
| | | sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()), |
| | | approveProcess.getApproveId() + "流程编号的审批需要您审核!!!!!", |
| | | Collections.singletonList(id), |
| | | "/safeProduction/safeWorkApproval?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId()); |
| | | }else { |
| | | sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()), |
| | | approveProcess.getApproveId() + "流程编号的审批需要您审核!!!!!", |
| | | Collections.singletonList(id), |
| | | "/collaborativeApproval/approvalProcess?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId()); |
| | | } |
| | | /*消息通知(通知第一节点全部审批人)*/ |
| | | notifyApproveUsers(approveProcess, firstGroupUserIds(approveProcess)); |
| | | return approveProcess.getId(); |
| | | } |
| | | |
| | | @Override |
| | |
| | | .last("limit 1"); |
| | | ApproveProcess approveProcess = approveProcessMapper.selectOne(approveProcessLambdaQueryWrapper); |
| | | if (approveProcess == null) throw new RuntimeException("请选择审批人"); |
| | | String[] split = approveGetAndUpdateVo.getApproveUserIds().split(","); |
| | | if (split.length == 0) { |
| | | String newIds = approveGetAndUpdateVo.getApproveUserIds(); |
| | | if (newIds == null || newIds.trim().isEmpty()) { |
| | | throw new RuntimeException("请选择审批人"); |
| | | } |
| | | List<SysUser> sysUsers = sysUserMapper.selectUserByIds(Arrays.asList(split).stream().map(Long::parseLong).collect(Collectors.toList())); |
| | | List<Long> newIdList = parseUserIds(newIds); |
| | | List<SysUser> sysUsers = sysUserMapper.selectUserByIds(newIdList); |
| | | if (CollectionUtils.isEmpty(sysUsers)) throw new RuntimeException("请选择审批人"); |
| | | //审核中不可以编辑审核人 |
| | | if (approveProcess.getApproveStatus() != 1) { |
| | | approveProcess.setApproveUserCurrentId(Long.parseLong(split[0])); |
| | | approveProcess.setApproveUserCurrentName(sysUsers.stream().filter(user -> user.getUserId().equals(Long.parseLong(split[0]))).collect(Collectors.toList()).get(0).getNickName()); |
| | | } |
| | | approveProcess.setApproveUserIds(newIds); |
| | | approveProcess.setApproveUserNames(sysUsers.stream().map(SysUser::getNickName).collect(Collectors.joining(","))); |
| | | if (approveGetAndUpdateVo.getApproveStatus() != null) { |
| | | approveProcess.setApproveStatus(approveGetAndUpdateVo.getApproveStatus()); |
| | | } |
| | | approveProcess.setApproveUserIds(approveGetAndUpdateVo.getApproveUserIds()); |
| | | updateById(approveProcess); |
| | | //修改审批人 |
| | | // 先删除 后新增 |
| | | LambdaQueryWrapper<ApproveNode> approveNodeLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | approveNodeLambdaQueryWrapper.eq(ApproveNode::getApproveProcessId, approveProcess.getApproveId()) |
| | | .eq(ApproveNode::getDeleteFlag, 0) |
| | | // .eq(ApproveNode::getTenantId, SecurityUtils.getLoginUser().getTenantId()) |
| | | .orderByAsc(ApproveNode::getApproveNodeOrder); |
| | | approveNodeMapper.delete(approveNodeLambdaQueryWrapper); |
| | | approveNodeService.initApproveNodes(approveGetAndUpdateVo.getApproveUserIds(), approveProcess.getApproveId(), approveProcess.getTenantId()); |
| | | /*消息通知*/ |
| | | String id = approveProcess.getApproveUserIds().split(",")[0]; |
| | | if (approveProcess.getApproveType()==8){ |
| | | sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()), |
| | | approveProcess.getApproveId() + "流程编号的审批需要您审核!!!!!", |
| | | Arrays.asList(Long.valueOf(id)), |
| | | "/safeProduction/safeWorkApproval?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId()); |
| | | }else { |
| | | sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()), |
| | | approveProcess.getApproveId() + "流程编号的审批需要您审核!!!!!", |
| | | Arrays.asList(Long.valueOf(id)), |
| | | "/collaborativeApproval/approvalProcess?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId()); |
| | | // 先删除 后新增(优先按 approve_node_config 快照保分组与模式) |
| | | approveNodeMapper.delete(new LambdaQueryWrapper<ApproveNode>() |
| | | .eq(ApproveNode::getApproveProcessId, approveProcess.getApproveId()) |
| | | .eq(ApproveNode::getDeleteFlag, 0)); |
| | | rebuildApproveNodes(approveProcess, newIds); |
| | | // 审核中不可以编辑审核人 |
| | | if (approveProcess.getApproveStatus() != 1) { |
| | | refreshCurrentApprovers(approveProcess); |
| | | } else { |
| | | approveProcessMapper.updateById(approveProcess); |
| | | } |
| | | /*消息通知(通知第一节点全部审批人)*/ |
| | | notifyApproveUsers(approveProcess, firstGroupUserIds(approveProcess)); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public void updateByApproveId(ApproveGetAndUpdateVo approveGetAndUpdateVo) throws IOException { |
| | | ApproveProcess approve = approveProcessMapper.selectById(approveGetAndUpdateVo.getId()); |
| | | Integer oldStatus = approve.getApproveStatus(); |
| | | BeanUtils.copyProperties(approveGetAndUpdateVo, approve); |
| | | approve.setApproveUserIds(approveGetAndUpdateVo.getApproveUserIds()); |
| | | // BeanUtils 会拷贝 null,防止把审批状态覆盖为空 |
| | | if (approveGetAndUpdateVo.getApproveStatus() == null) { |
| | | approve.setApproveStatus(oldStatus); |
| | | } |
| | | approve.setApproveReason(approveGetAndUpdateVo.getApproveReason()); |
| | | SysUser sysUser = sysUserMapper.selectUserById(approveGetAndUpdateVo.getApproveUser()); |
| | | String[] split = approveGetAndUpdateVo.getApproveUserIds().split(","); |
| | | if (split.length == 0) { |
| | | String newIds = approveGetAndUpdateVo.getApproveUserIds(); |
| | | if (newIds == null || newIds.trim().isEmpty()) { |
| | | throw new RuntimeException("请选择审批人"); |
| | | } |
| | | List<SysUser> sysUsers = sysUserMapper.selectUserByIds(Arrays.asList(split).stream().map(Long::parseLong).collect(Collectors.toList())); |
| | | List<Long> newIdList = parseUserIds(newIds); |
| | | List<SysUser> sysUsers = sysUserMapper.selectUserByIds(newIdList); |
| | | if (CollectionUtils.isEmpty(sysUsers)) throw new RuntimeException("请选择审批人"); |
| | | SysUser sysUser = sysUserMapper.selectUserById(approveGetAndUpdateVo.getApproveUser()); |
| | | if (sysUser == null) throw new RuntimeException("申请人不存在"); |
| | | approve.setApproveUserName(sysUser.getNickName()); |
| | | approve.setApproveUser(sysUser.getUserId()); |
| | | //审核中不可以编辑审核人 |
| | | approve.setApproveUserIds(newIds); |
| | | approve.setApproveUserNames(sysUsers.stream().map(SysUser::getNickName).collect(Collectors.joining(","))); |
| | | //修改审批人:先删除后新增(优先按 approve_node_config 快照保分组与模式) |
| | | approveNodeMapper.delete(new LambdaQueryWrapper<ApproveNode>() |
| | | .eq(ApproveNode::getApproveProcessId, approve.getApproveId()) |
| | | .eq(ApproveNode::getDeleteFlag, 0)); |
| | | rebuildApproveNodes(approve, newIds); |
| | | // 审核中不可以编辑审核人 |
| | | if (approve.getApproveStatus() != 1) { |
| | | approve.setApproveUserCurrentId(Long.parseLong(split[0])); |
| | | approve.setApproveUserCurrentName(sysUsers.stream().filter(user -> user.getUserId().equals(Long.parseLong(split[0]))).collect(Collectors.toList()).get(0).getNickName()); |
| | | refreshCurrentApprovers(approve); |
| | | } else { |
| | | approveProcessMapper.updateById(approve); |
| | | } |
| | | updateById(approve); |
| | | //修改审批人 |
| | | // 先删除 后新增 |
| | | LambdaQueryWrapper<ApproveNode> approveNodeLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | approveNodeLambdaQueryWrapper.eq(ApproveNode::getApproveProcessId, approve.getApproveId()) |
| | | .eq(ApproveNode::getDeleteFlag, 0) |
| | | // .eq(ApproveNode::getTenantId, SecurityUtils.getLoginUser().getTenantId()) |
| | | .orderByAsc(ApproveNode::getApproveNodeOrder); |
| | | approveNodeMapper.delete(approveNodeLambdaQueryWrapper); |
| | | approveNodeService.initApproveNodes(approveGetAndUpdateVo.getApproveUserIds(), approve.getApproveId(), approve.getTenantId()); |
| | | |
| | | // int i = 0; |
| | | // for (ApproveNode approveNode : list) { |
| | | // int finalI = i; |
| | | // if(i >= split.length){ |
| | | // approveNode.setDeleteFlag(1); |
| | | // }else{ |
| | | // List<SysUser> collect = sysUsers.stream().filter(user -> user.getUserId().equals(Long.parseLong(split[finalI]))).collect(Collectors.toList()); |
| | | // if(CollectionUtils.isEmpty(collect)){ |
| | | // throw new RuntimeException("请选择正确的审批人"); |
| | | // } |
| | | // approveNode.setApproveNodeUserId(collect.get(0).getUserId()); |
| | | // approveNode.setApproveNodeUser(collect.get(0).getNickName()); |
| | | // } |
| | | // approveNodeMapper.updateById(approveNode); |
| | | // i++; |
| | | // } |
| | | tempFileService.migrateTempFilesToFormal(approve.getId(), approveGetAndUpdateVo.getTempFileIds(), FileNameType.ApproveProcess.getValue()); |
| | | /*消息通知*/ |
| | | String id = approve.getApproveUserIds().split(",")[0]; |
| | | if (approve.getApproveType()==8){ |
| | | sysNoticeService.simpleNoticeByUser(approveProcessType(approve.getApproveType()), |
| | | approve.getApproveId() + "流程编号的审批需要您审核!!!!!", |
| | | Arrays.asList(Long.valueOf(id)), |
| | | "/safeProduction/safeWorkApproval?approveType=" + approve.getApproveType() + "&approveId=" + approve.getApproveId()); |
| | | }else { |
| | | sysNoticeService.simpleNoticeByUser(approveProcessType(approve.getApproveType()), |
| | | approve.getApproveId() + "流程编号的审批需要您审核!!!!!", |
| | | Arrays.asList(Long.valueOf(id)), |
| | | "/collaborativeApproval/approvalProcess?approveType=" + approve.getApproveType() + "&approveId=" + approve.getApproveId()); |
| | | } |
| | | |
| | | /*消息通知(通知第一节点全部审批人)*/ |
| | | notifyApproveUsers(approve, firstGroupUserIds(approve)); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 按节点顺序分组(保序),同节点多审批人归入一组 |
| | | */ |
| | | private List<List<ApproveProcessConfigNodeVo>> groupByOrder(List<ApproveProcessConfigNodeVo> list) { |
| | | Map<Integer, List<ApproveProcessConfigNodeVo>> map = new LinkedHashMap<>(); |
| | | for (ApproveProcessConfigNodeVo vo : list) { |
| | | if (vo.getApproverId() == null) { |
| | | continue; |
| | | } |
| | | int order = vo.getNodeOrder() == null ? map.size() + 1 : vo.getNodeOrder(); |
| | | map.computeIfAbsent(order, k -> new ArrayList<>()).add(vo); |
| | | } |
| | | return new ArrayList<>(map.values()); |
| | | } |
| | | |
| | | /** |
| | | * 设置流程首节点待审人(多值逗号分隔,兼容旧的单值字段) |
| | | */ |
| | | private void setFirstNodeApprovers(ApproveProcess approveProcess, List<ApproveProcessConfigNodeVo> firstGroup, List<SysUser> sysUsers) { |
| | | List<Long> ids = firstGroup.stream() |
| | | .map(ApproveProcessConfigNodeVo::getApproverId) |
| | | .distinct() |
| | | .collect(Collectors.toList()); |
| | | Map<Long, String> nameMap = sysUsers.stream() |
| | | .collect(Collectors.toMap(SysUser::getUserId, SysUser::getNickName, (a, b) -> a)); |
| | | List<String> names = ids.stream().map(nameMap::get).filter(Objects::nonNull).collect(Collectors.toList()); |
| | | approveProcess.setApproveUserCurrentIds(ids.stream().map(String::valueOf).collect(Collectors.joining(","))); |
| | | approveProcess.setApproveUserCurrentNames(String.join(",", names)); |
| | | if (!ids.isEmpty()) { |
| | | approveProcess.setApproveUserCurrentId(ids.get(0)); |
| | | approveProcess.setApproveUserCurrentName(names.isEmpty() ? null : names.get(0)); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 节点结构快照JSON:[{nodeOrder,mode,userIds,userNames}],供编辑重建审批节点 |
| | | */ |
| | | private String buildNodeConfig(List<ApproveProcessConfigNodeVo> list) { |
| | | try { |
| | | List<Map<String, Object>> nodes = new ArrayList<>(); |
| | | for (List<ApproveProcessConfigNodeVo> group : groupByOrder(list)) { |
| | | String mode = group.get(0).getApproveMode(); |
| | | if (mode == null || mode.isEmpty()) { |
| | | mode = "or"; |
| | | } |
| | | List<Long> ids = group.stream().map(ApproveProcessConfigNodeVo::getApproverId).distinct().collect(Collectors.toList()); |
| | | List<SysUser> users = sysUserMapper.selectUserByIds(ids); |
| | | Map<String, Object> node = new LinkedHashMap<>(); |
| | | node.put("nodeOrder", group.get(0).getNodeOrder()); |
| | | node.put("mode", mode); |
| | | node.put("userIds", ids.stream().map(String::valueOf).collect(Collectors.joining(","))); |
| | | node.put("userNames", users.stream().map(SysUser::getNickName).collect(Collectors.joining(","))); |
| | | nodes.add(node); |
| | | } |
| | | return OBJECT_MAPPER.writeValueAsString(nodes); |
| | | } catch (Exception e) { |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | private List<String> splitIds(String ids) { |
| | | if (ids == null || ids.trim().isEmpty()) { |
| | | return new ArrayList<>(); |
| | | } |
| | | return Arrays.stream(ids.split(",")).map(String::trim).filter(s -> !s.isEmpty()).collect(Collectors.toList()); |
| | | } |
| | | |
| | | private List<Long> parseUserIds(String ids) { |
| | | return splitIds(ids).stream().map(Long::parseLong).collect(Collectors.toList()); |
| | | } |
| | | |
| | | /** |
| | | * 重建审批节点:优先按 approve_node_config 快照保分组与模式重建, |
| | | * 新选的扁平审批人串按节点槽位顺序依次填充;无快照则回退扁平逻辑(一节点一人 or) |
| | | */ |
| | | private void rebuildApproveNodes(ApproveProcess approveProcess, String approveUserIds) { |
| | | List<ApproveProcessConfigNodeVo> config = null; |
| | | if (StringUtils.hasText(approveProcess.getApproveNodeConfig())) { |
| | | config = buildConfigFromSnapshot(approveProcess.getApproveNodeConfig(), approveUserIds); |
| | | } |
| | | if (config == null) { |
| | | approveNodeService.initApproveNodes(approveUserIds, approveProcess.getApproveId(), approveProcess.getTenantId()); |
| | | } else { |
| | | approveNodeService.initApproveNodes(config, approveProcess.getApproveId(), approveProcess.getTenantId()); |
| | | } |
| | | } |
| | | |
| | | private List<ApproveProcessConfigNodeVo> buildConfigFromSnapshot(String snapshotJson, String approveUserIds) { |
| | | List<String> newIds = splitIds(approveUserIds); |
| | | try { |
| | | List<Map<String, Object>> nodes = OBJECT_MAPPER.readValue(snapshotJson, |
| | | new TypeReference<List<Map<String, Object>>>() {}); |
| | | List<ApproveProcessConfigNodeVo> config = new ArrayList<>(); |
| | | int cursor = 0; |
| | | for (Map<String, Object> node : nodes) { |
| | | Object orderObj = node.get("nodeOrder"); |
| | | int nodeOrder = orderObj instanceof Number ? ((Number) orderObj).intValue() : 0; |
| | | String mode = node.get("mode") == null ? "or" : String.valueOf(node.get("mode")); |
| | | List<String> snapshotIds = splitIds(node.get("userIds") == null ? null : String.valueOf(node.get("userIds"))); |
| | | int slot = Math.max(1, snapshotIds.size()); |
| | | for (int j = 0; j < slot; j++) { |
| | | String uid = cursor < newIds.size() ? newIds.get(cursor++) : (j < snapshotIds.size() ? snapshotIds.get(j) : null); |
| | | if (uid == null) { |
| | | continue; |
| | | } |
| | | ApproveProcessConfigNodeVo vo = new ApproveProcessConfigNodeVo(); |
| | | vo.setNodeOrder(nodeOrder); |
| | | vo.setApproverId(Long.parseLong(uid)); |
| | | vo.setApproveMode(mode); |
| | | config.add(vo); |
| | | } |
| | | } |
| | | // 新选审批人若多于快照槽位,追加到最后一个节点 |
| | | while (cursor < newIds.size()) { |
| | | ApproveProcessConfigNodeVo vo = new ApproveProcessConfigNodeVo(); |
| | | vo.setNodeOrder(nodes.isEmpty() ? 1 : ((Number) nodes.get(nodes.size() - 1).get("nodeOrder")).intValue()); |
| | | vo.setApproverId(Long.parseLong(newIds.get(cursor++))); |
| | | vo.setApproveMode("or"); |
| | | config.add(vo); |
| | | } |
| | | return config; |
| | | } catch (Exception e) { |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 刷新流程当前审批人为第一节点待审人(用于编辑后重建) |
| | | */ |
| | | private void refreshCurrentApprovers(ApproveProcess approveProcess) { |
| | | List<ApproveNode> first = approveNodeMapper.selectList(new LambdaQueryWrapper<ApproveNode>() |
| | | .eq(ApproveNode::getApproveProcessId, approveProcess.getApproveId()) |
| | | .eq(ApproveNode::getApproveNodeOrder, 1) |
| | | .eq(ApproveNode::getDeleteFlag, 0) |
| | | .orderByAsc(ApproveNode::getId)); |
| | | if (first.isEmpty()) { |
| | | approveProcess.setApproveUserCurrentIds(null); |
| | | approveProcess.setApproveUserCurrentNames(null); |
| | | approveProcess.setApproveUserCurrentId(null); |
| | | approveProcess.setApproveUserCurrentName(null); |
| | | } else { |
| | | approveProcess.setApproveUserCurrentIds(first.stream() |
| | | .map(n -> String.valueOf(n.getApproveNodeUserId())).collect(Collectors.joining(","))); |
| | | approveProcess.setApproveUserCurrentNames(first.stream() |
| | | .map(ApproveNode::getApproveNodeUser).collect(Collectors.joining(","))); |
| | | approveProcess.setApproveUserCurrentId(first.get(0).getApproveNodeUserId()); |
| | | approveProcess.setApproveUserCurrentName(first.get(0).getApproveNodeUser()); |
| | | } |
| | | approveProcessMapper.updateById(approveProcess); |
| | | } |
| | | |
| | | private List<Long> firstGroupUserIds(ApproveProcess approveProcess) { |
| | | List<ApproveNode> first = approveNodeMapper.selectList(new LambdaQueryWrapper<ApproveNode>() |
| | | .eq(ApproveNode::getApproveProcessId, approveProcess.getApproveId()) |
| | | .eq(ApproveNode::getApproveNodeOrder, 1) |
| | | .eq(ApproveNode::getDeleteFlag, 0) |
| | | .orderByAsc(ApproveNode::getId)); |
| | | return first.stream().map(ApproveNode::getApproveNodeUserId).distinct().collect(Collectors.toList()); |
| | | } |
| | | |
| | | /** |
| | | * 通知第一节点全部待审人 |
| | | */ |
| | | private void notifyApproveUsers(ApproveProcess approveProcess, List<Long> userIds) { |
| | | if (userIds == null || userIds.isEmpty()) { |
| | | return; |
| | | } |
| | | List<Long> ids = userIds.stream().distinct().collect(Collectors.toList()); |
| | | if (approveProcess.getApproveType() == 8) { |
| | | sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()), |
| | | approveProcess.getApproveId() + "流程编号的审批需要您审核!!!!!", |
| | | ids, |
| | | "/safeProduction/safeWorkApproval?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId()); |
| | | } else { |
| | | sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()), |
| | | approveProcess.getApproveId() + "流程编号的审批需要您审核!!!!!", |
| | | ids, |
| | | "/collaborativeApproval/approvalProcess?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId()); |
| | | } |
| | | } |
| | | |
| | | //审批类型获取(与前端页面对应) |
| | | private String approveProcessType(Integer approveType) { |
| | |
| | | return "发货审批"; |
| | | case 8: |
| | | return "危险作业审批"; |
| | | case 9: |
| | | return "用印审批"; |
| | | } |
| | | return null; |
| | | } |