| | |
| | | private final ISysDeptService deptService; |
| | | private final ProcessLogService processLogService; |
| | | private final ISysDictTypeService dictTypeService; |
| | | private final ProcessConfigInfoService processConfigInfoService; |
| | | |
| | | /** |
| | | * 分页查询 |
| | |
| | | } |
| | | } |
| | | ProjectInfo project = new LambdaQueryChainWrapper<>(projectInfoMapper) |
| | | .select(ProjectInfo::getCreateBy) |
| | | .select(ProjectInfo::getProjectOwnerUnit) |
| | | .eq(ProjectInfo::getId, form.getProjectId()) |
| | | .one(); |
| | | if (Objects.isNull(project)) { |
| | | throw new RuntimeException("项目不存在"); |
| | | } |
| | | SysUser user = sysUserService.selectUserById(project.getCreateBy()); |
| | | if (Objects.isNull(user)) { |
| | | SysDept dept = deptService.selectDeptById(project.getProjectOwnerUnit()); |
| | | if (Objects.isNull(dept)) { |
| | | throw new RuntimeException("项目业主单位不存在"); |
| | | } |
| | | String processInsId = this.startPro(form.getProjectId(), form.getProcessDefId(), user.getDeptId()); |
| | | String processInsId = this.startPro(form.getProjectId(), form.getProcessDefId(), dept.getDeptId()); |
| | | new LambdaUpdateChainWrapper<>(baseMapper) |
| | | .eq(ProjectProcess::getProjectId, form.getProjectId()) |
| | | .set(ProjectProcess::getProcessDefId, form.getProcessDefId()) |
| | | .set(ProjectProcess::getProcessInsId, processInsId) |
| | | .set(ProjectProcess::getDataLaunch, project.getCreateBy()) |
| | | .set(ProjectProcess::getDataLaunch, project.getProjectOwnerUnit()) |
| | | .update(); |
| | | |
| | | return Result.ok("流程变更成功"); |
| | |
| | | if (Objects.isNull(project)) { |
| | | throw new RuntimeException("项目不存在"); |
| | | } |
| | | SysUser user = sysUserService.selectUserById(project.getCreateBy()); |
| | | if (Objects.isNull(user)) { |
| | | SysDept dept = deptService.selectDeptById(project.getProjectOwnerUnit()); |
| | | if (Objects.isNull(dept)) { |
| | | throw new RuntimeException("项目业主单位不存在"); |
| | | } |
| | | String processInsId = this.startPro(projectId, processDefId, user.getDeptId()); |
| | | String processInsId = this.startPro(projectId, processDefId, dept.getDeptId()); |
| | | ProjectProcess entity = new ProjectProcess(); |
| | | entity.setProjectId(projectId); |
| | | entity.setProcessDefId(processDefId); |
| | | entity.setProcessInsId(processInsId); |
| | | entity.setDataLaunch(project.getCreateBy()); |
| | | entity.setDataLaunch(project.getProjectOwnerUnit()); |
| | | baseMapper.insert(entity); |
| | | |
| | | return Result.ok("流程启动成功"); |
| | |
| | | SysUser sysUser = SecurityUtils.getLoginUser().getUser(); |
| | | identityService.setAuthenticatedUserId(sysUser.getUserId().toString()); |
| | | variables.put(ProcessConstants.PROCESS_INITIATOR, sysUser.getUserId()); |
| | | //测试容缺 |
| | | variables.put("miss", true); |
| | | // 将该项目的申请人(业主方)作为流程中某些环节的处理人 |
| | | variables.put(ProcessConstants.DATA_LAUNCH, "dept:" + createBy); |
| | | ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefId, projectId + "", variables); |
| | |
| | | .active() |
| | | .includeProcessVariables() |
| | | .orderByTaskCreateTime().desc(); |
| | | |
| | | List<String> insIds = baseMapper.getNormalInsIds(); |
| | | if (CollectionUtils.isEmpty(insIds)) { |
| | | result.data(new ArrayList<>()).total(0L); |
| | | return; |
| | | } else { |
| | | taskQuery.processInstanceIdIn(insIds); |
| | | } |
| | | if (StringUtils.isNotBlank(taskName)) { |
| | | taskQuery.processDefinitionNameLike(taskName); |
| | | taskQuery.taskNameLike(taskName); |
| | | } |
| | | if (!SecurityUtils.getLoginUser().getUser().isAdmin()) { |
| | | taskQuery |
| | |
| | | if (processLogService.taskIsHangup(task.getId(), task.getProcessInstanceId())) { |
| | | taskVO.setTaskStatus(TaskStatusEnum.HANGUP); |
| | | } |
| | | |
| | | // 计算办理时间 |
| | | ProcessCoding processCoding = processCodingService.getByTaskId(task.getId()); |
| | | if (processCoding != null) { |
| | | if (StringUtils.isNotBlank(processCoding.getOvertime())) { |
| | | Long overtime = getTime(processCoding.getOvertime()); |
| | | long durationTime = 0l; |
| | | if (Objects.nonNull(processCoding.getStartTaskTime())) { |
| | | durationTime = ((new Date()).getTime() - processCoding.getStartTaskTime().getTime()) / 1000; |
| | | } else { |
| | | taskVO.setRemainingTime("未设置办理时间"); |
| | | } |
| | | if (overtime > durationTime) { |
| | | taskVO.setRemainingTime((overtime - durationTime) / 3600 + "小时"); |
| | | } else { |
| | | taskVO.setRemainingTime("已超时"); |
| | | } |
| | | } else { |
| | | taskVO.setRemainingTime("-"); |
| | | } |
| | | } |
| | | this.distinctVo(taskVO); |
| | | vos.add(taskVO); |
| | | } |
| | | if (vos.size() < pageSize) { |
| | | result.total(vos.size()); |
| | | } |
| | | result.put("taskList", vos); |
| | | } |
| | | |
| | | private Long getTime(String timeStr) { |
| | | Long time = null; |
| | | if (StringUtils.isNotBlank(timeStr)) { |
| | | String[] timeArr = timeStr.split("-"); |
| | | // 解析天数和小时数 |
| | | int days = Integer.parseInt(timeArr[0]); |
| | | int hours = 0; |
| | | if (timeArr.length > 1) { |
| | | hours = Integer.parseInt(timeArr[1]); |
| | | } |
| | | time = (days * 24L + hours) * 3600L; |
| | | // //分-秒 |
| | | // time= (days * 60L) + hours; |
| | | } |
| | | return time; |
| | | } |
| | | |
| | | @Override |
| | |
| | | jsonData.setAfterHandlerIds(afterHandlerIds); |
| | | jsonData.setAfterHandlerType(form.getPeopleType()); |
| | | // 发布转办事件 |
| | | publisher.publishEvent(new TaskLogEvent(this, null,SecurityUtils.getUserId(), form.getProjectId(), form.getProcessInsId(), task.getId(), task.getName(),ProcessLogEventTypeEnum.DELEGATE, jsonData)); |
| | | publisher.publishEvent(new TaskLogEvent(this, null, SecurityUtils.getUserId(), form.getProjectId(), form.getProcessInsId(), task.getId(), task.getName(), ProcessLogEventTypeEnum.DELEGATE, jsonData)); |
| | | |
| | | return Result.ok("转办成功"); |
| | | } |
| | |
| | | Task task = taskService.createTaskQuery().taskId(form.getTaskId()).processInstanceId(form.getProcessInsId()).singleResult(); |
| | | if (Objects.nonNull(task)) { |
| | | // 添加跳过日志 |
| | | publisher.publishEvent(new TaskLogEvent(this, null,SecurityUtils.getUserId(), form.getProjectId(), form.getProcessInsId(), form.getTaskId(), task.getName(),ProcessLogEventTypeEnum.JUMP, new JumpData(form.getDesc()))); |
| | | publisher.publishEvent(new TaskLogEvent(this, null, SecurityUtils.getUserId(), form.getProjectId(), form.getProcessInsId(), form.getTaskId(), task.getName(), ProcessLogEventTypeEnum.JUMP, new JumpData(form.getDesc()))); |
| | | // 查出该任务绑定的表单 |
| | | |
| | | Map<String, Object> data = new HashMap<>(1); |
| | |
| | | } |
| | | dataList.add(jsonData); |
| | | //添加督办日志 |
| | | publisher.publishEvent(new TaskLogEvent(this, processLog.getId(), processLog.getUserId(), form.getProjectId(), form.getProcessInsId(), form.getTaskId(), task.getName(),ProcessLogEventTypeEnum.SUPERVISE, dataList)); |
| | | publisher.publishEvent(new TaskLogEvent(this, processLog.getId(), processLog.getUserId(), form.getProjectId(), form.getProcessInsId(), form.getTaskId(), task.getName(), ProcessLogEventTypeEnum.SUPERVISE, dataList)); |
| | | return Result.ok("操作成功"); |
| | | } |
| | | |
| | |
| | | task.getName(), |
| | | ProcessLogEventTypeEnum.HANGUP, |
| | | new HangupData(form.getReason()) |
| | | )); |
| | | )); |
| | | return Result.ok("操作成功"); |
| | | } |
| | | |
| | |
| | | newV.put(task.getTaskDefinitionKey() + "&" + key, form.getVariables().get(key)); |
| | | //字典里有就放入流程变量中 |
| | | if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(dictList) && dictList.contains(key)) { |
| | | processVariables.put(key,form.getVariables().get(key)); |
| | | processVariables.put(key, form.getVariables().get(key)); |
| | | } |
| | | } |
| | | } |
| | | if( !processVariables.isEmpty() ) { |
| | | if (!processVariables.isEmpty()) { |
| | | taskService.setVariables(form.getTaskId(), processVariables); |
| | | } |
| | | |
| | |
| | | .desc(); |
| | | |
| | | if (StringUtils.isNotBlank(taskName)) { |
| | | taskQuery.processDefinitionNameLike(taskName); |
| | | taskQuery.taskNameLike(taskName); |
| | | } |
| | | result.total(taskQuery.count()); |
| | | List<Task> taskList = taskQuery.listPage(pageSize * (pageNum - 1), pageSize); |
| | |
| | | SysUser sysUser = sysUserService.selectUserById(Long.parseLong(userTask.getAssignee())); |
| | | if (Objects.nonNull(sysUser)) { |
| | | handlerIds.add(sysUser.getUserId()); |
| | | handlerNames.add(sysUser.getNickName()); |
| | | handlerNames.add(this.getUserShowName(sysUser)); |
| | | if (Objects.nonNull(sysUser.getDept())) { |
| | | handlerUnitIds.add(sysUser.getDept().getDeptId()); |
| | | handlerUnitNames.add(sysUser.getDept().getDeptName()); |
| | |
| | | SysUser handlerUser = sysUserService.selectUserById(handlerUserId); |
| | | if (Objects.nonNull(handlerUser)) { |
| | | handlerIds.add(handlerUserId); |
| | | handlerNames.add(handlerUser.getNickName()); |
| | | handlerNames.add(this.getUserShowName(handlerUser)); |
| | | vo.setActualHandlerUserId(historicTasks.get(0).getAssignee()); |
| | | vo.setActualHandlerUserName(handlerUser.getNickName()); |
| | | } |
| | |
| | | */ |
| | | private List<CustomerTaskVO> getFinishedProcessTaskInfo(List<UserTask> userTasks, String processInsId, String processDefId) { |
| | | HistoricProcessInstance hisProcess = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInsId).singleResult(); |
| | | if (Objects.isNull(hisProcess)) { |
| | | return new ArrayList<>(); |
| | | } |
| | | List<CustomerTaskVO> vos = userTasks.stream().map(userTask -> { |
| | | CustomerTaskVO vo = new CustomerTaskVO(); |
| | | vo.setProcessInsId(hisProcess.getId()); |
| | |
| | | SysUser sysUser = sysUserService.selectUserById(Long.parseLong(identityLink.getUserId())); |
| | | if (Objects.nonNull(sysUser)) { |
| | | taskVO.getHandlerId().add(sysUser.getUserId()); |
| | | taskVO.getHandlerName().add(sysUser.getNickName()); |
| | | taskVO.getHandlerName().add(this.getUserShowName(sysUser)); |
| | | if (Objects.nonNull(sysUser.getDept())) { |
| | | taskVO.getHandlerUnitId().add(sysUser.getDept().getDeptId()); |
| | | taskVO.getHandlerUnitName().add(sysUser.getDept().getDeptName()); |
| | |
| | | SysUser handlerUser = sysUserService.selectUserById(handlerUserId); |
| | | if (Objects.nonNull(handlerUser)) { |
| | | vo.getHandlerId().add(handlerUserId); |
| | | vo.getHandlerName().add(handlerUser.getNickName()); |
| | | vo.getHandlerName().add(this.getUserShowName(handlerUser)); |
| | | vo.setActualHandlerUserId(hisTask.getAssignee()); |
| | | vo.setActualHandlerUserName(handlerUser.getNickName()); |
| | | vo.setActualHandlerUserName(this.getUserShowName(handlerUser)); |
| | | } |
| | | vo.setTaskDefinitionKey(hisTask.getTaskDefinitionKey()); |
| | | this.setPromoterAndHandler(vo, hisTask.getIdentityLinks()); |
| | |
| | | }).collect(Collectors.toList()); |
| | | result.data(vos); |
| | | return vos; |
| | | } |
| | | |
| | | /** |
| | | * 用户名称后面跟电话号码 |
| | | * |
| | | * @param user |
| | | * @return |
| | | */ |
| | | private String getUserShowName(SysUser user) { |
| | | return user.getNickName() + (StringUtils.isNotBlank(user.getPhonenumber()) ? "(" + user.getPhonenumber() + ")" : ""); |
| | | } |
| | | |
| | | /** |
| | |
| | | return user.getUserId() + ""; |
| | | }).collect(Collectors.joining("、"))); |
| | | taskVO.setPromoterName(userList.stream().map(user -> { |
| | | return user.getNickName(); |
| | | return this.getUserShowName(user); |
| | | }).collect(Collectors.joining("、"))); |
| | | taskVO.setPromoterUnitId(userList.stream().filter(user -> Objects.nonNull(user.getDept())).map(user -> { |
| | | return user.getDept().getDeptId() + ""; |