From b37eac632faf7f26b6f947d8b6792db8828fba6f Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期三, 26 二月 2025 21:57:47 +0800 Subject: [PATCH] 工程管理 --- business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | 95 +++++++++++++++++++++++++++++++++++++---------- 1 files changed, 74 insertions(+), 21 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 72b764c..b8bd222 100644 --- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java +++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java @@ -89,6 +89,7 @@ private final ISysDeptService deptService; private final ProcessLogService processLogService; private final ISysDictTypeService dictTypeService; + private final ProcessConfigInfoService processConfigInfoService; /** * 鍒嗛〉鏌ヨ @@ -139,7 +140,7 @@ } } ProjectInfo project = new LambdaQueryChainWrapper<>(projectInfoMapper) - .select(ProjectInfo::getCreateBy) + .select(ProjectInfo::getProjectOwnerUnit) .eq(ProjectInfo::getId, form.getProjectId()) .one(); if (Objects.isNull(project)) { @@ -202,8 +203,6 @@ 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); @@ -305,9 +304,15 @@ .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 @@ -406,13 +411,48 @@ 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("-"); + // 瑙f瀽澶╂暟鍜屽皬鏃舵暟 + 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 @@ -606,7 +646,7 @@ 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("杞姙鎴愬姛"); } @@ -617,7 +657,7 @@ 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); @@ -661,7 +701,7 @@ } dataList.add(jsonData); //娣诲姞鐫e姙鏃ュ織 - 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("鎿嶄綔鎴愬姛"); } @@ -691,7 +731,7 @@ task.getName(), ProcessLogEventTypeEnum.HANGUP, new HangupData(form.getReason()) - )); + )); return Result.ok("鎿嶄綔鎴愬姛"); } @@ -747,11 +787,11 @@ 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); } @@ -788,7 +828,7 @@ .desc(); if (StringUtils.isNotBlank(taskName)) { - taskQuery.processDefinitionNameLike(taskName); + taskQuery.taskNameLike(taskName); } result.total(taskQuery.count()); List<Task> taskList = taskQuery.listPage(pageSize * (pageNum - 1), pageSize); @@ -880,7 +920,7 @@ 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()); @@ -928,7 +968,7 @@ 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()); } @@ -962,6 +1002,9 @@ */ 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()); @@ -1058,7 +1101,7 @@ 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()); @@ -1246,9 +1289,9 @@ 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()); @@ -1259,6 +1302,16 @@ }).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() + ")" : ""); } /** @@ -1835,7 +1888,7 @@ 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() + ""; -- Gitblit v1.8.0