From 1a983833a7af79d5ab224fedc627b737e955e9d7 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期三, 12 二月 2025 15:32:40 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | 109 ++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 73 insertions(+), 36 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 ae7c9b0..6f84aa6 100644 --- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java +++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java @@ -1,7 +1,10 @@ package com.ycl.service.impl; +import com.alibaba.fastjson2.JSON; +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; @@ -12,27 +15,24 @@ import com.ycl.common.core.domain.entity.SysUser; import com.ycl.common.enums.business.HandlerTypeEnum; import com.ycl.common.enums.business.ProcessLogEventTypeEnum; +import com.ycl.common.enums.business.SuperviseTypeEnum; import com.ycl.common.enums.business.TaskStatusEnum; import com.ycl.common.utils.SecurityUtils; import com.ycl.constant.TaskTypeConstant; -import com.ycl.domain.entity.ProcessCoding; -import com.ycl.domain.entity.ProjectInfo; -import com.ycl.domain.entity.ProjectProcess; -import com.ycl.domain.entity.SysForm; +import com.ycl.domain.entity.*; import com.ycl.domain.form.TaskDelegationForm; import com.ycl.domain.form.TaskJumpForm; +import com.ycl.domain.form.TaskSuperviseForm; import com.ycl.domain.json.DelegateData; import com.ycl.domain.json.JumpData; +import com.ycl.domain.json.SuperviseData; import com.ycl.domain.vo.CustomerTaskVO; import com.ycl.domain.vo.IndexCustomerTaskVO; import com.ycl.domain.vo.ProjectProcessDetailVO; import com.ycl.event.event.TaskLogEvent; import com.ycl.mapper.ProjectInfoMapper; import com.ycl.mapper.ProjectProcessMapper; -import com.ycl.service.IFlowTaskService; -import com.ycl.service.ISysFormService; -import com.ycl.service.ProcessCodingService; -import com.ycl.service.ProjectProcessService; +import com.ycl.service.*; import com.ycl.common.base.Result; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.domain.form.ProjectProcessForm; @@ -93,6 +93,7 @@ private final ProcessCodingService processCodingService; private final ApplicationEventPublisher publisher; private final ISysDeptService deptService; + private final ProcessLogService processLogService; /** * 鍒嗛〉鏌ヨ @@ -210,7 +211,7 @@ identityService.setAuthenticatedUserId(sysUser.getUserId().toString()); variables.put(ProcessConstants.PROCESS_INITIATOR, sysUser.getUserId()); //娴嬭瘯瀹圭己 - variables.put("miss",true); + variables.put("miss", true); // 灏嗚椤圭洰鐨勭敵璇蜂汉锛堜笟涓绘柟锛変綔涓烘祦绋嬩腑鏌愪簺鐜妭鐨勫鐞嗕汉 variables.put(ProcessConstants.DATA_LAUNCH, "dept:" + createBy); ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefId, projectId + "", variables); @@ -316,7 +317,7 @@ if (StringUtils.isNotBlank(taskName)) { taskQuery.processDefinitionNameLike(taskName); } - if (! SecurityUtils.getLoginUser().getUser().isAdmin()) { + if (!SecurityUtils.getLoginUser().getUser().isAdmin()) { taskQuery .or() .taskCandidateGroupIn(taskCommonService.getCurrentUserGroups()) @@ -610,7 +611,7 @@ jsonData.setAfterHandlerIds(afterHandlerIds); jsonData.setAfterHandlerType(form.getPeopleType()); // 鍙戝竷杞姙浜嬩欢 - publisher.publishEvent(new TaskLogEvent(this, form.getProjectId(), form.getProcessInsId(), task.getId(), ProcessLogEventTypeEnum.DELEGATE, jsonData)); + publisher.publishEvent(new TaskLogEvent(this, null,SecurityUtils.getUserId(), form.getProjectId(), form.getProcessInsId(), task.getId(), ProcessLogEventTypeEnum.DELEGATE, jsonData)); return Result.ok("杞姙鎴愬姛"); } @@ -621,7 +622,7 @@ Task task = taskService.createTaskQuery().taskId(form.getTaskId()).processInstanceId(form.getProcessInsId()).singleResult(); if (Objects.nonNull(task)) { // 娣诲姞璺宠繃鏃ュ織 - publisher.publishEvent(new TaskLogEvent(this, form.getProjectId(), form.getProcessInsId(), form.getTaskId(), ProcessLogEventTypeEnum.JUMP, new JumpData(form.getDesc()))); + publisher.publishEvent(new TaskLogEvent(this, null,SecurityUtils.getUserId(), form.getProjectId(), form.getProcessInsId(), form.getTaskId(), ProcessLogEventTypeEnum.JUMP, new JumpData(form.getDesc()))); // 鏌ュ嚭璇ヤ换鍔$粦瀹氱殑琛ㄥ崟 Map<String, Object> data = new HashMap<>(1); @@ -634,6 +635,37 @@ // 瀹屾垚浠诲姟 flowTaskService.completeSubmitForm(form.getTaskId(), data); } + return Result.ok("鎿嶄綔鎴愬姛"); + } + + @Override + public Result taskSupervise(TaskSuperviseForm form) { + SuperviseData jsonData = new SuperviseData(); + jsonData.setCreateTime(new Date()); + jsonData.setContent(form.getContent()); + jsonData.setSenderId(SecurityUtils.getUserId() + ""); + jsonData.setSenderType(HandlerTypeEnum.USER); + jsonData.setReceiverIds(form.getReceiverIds()); + jsonData.setReceiverType(form.getReceiverType()); + jsonData.setSuperviseType(form.getSuperviseType()); + QueryWrapper<ProcessLog> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("task_id", form.getTaskId()); + queryWrapper.eq("event_type", ProcessLogEventTypeEnum.SUPERVISE); + queryWrapper.eq("process_ins_id", form.getProcessInsId()); + //鏌ヨ鐫e姙鏃ュ織 + ProcessLog processLog = processLogService.getOne(queryWrapper); + List<SuperviseData> dataList; + if (processLog != null) { + String eventDataJson = processLog.getEventDataJson(); + dataList = JSONArray.parseArray(eventDataJson, SuperviseData.class); + } else { + processLog = new ProcessLog(); + processLog.setUserId(SecurityUtils.getUserId()); + dataList = new ArrayList<>(); + } + dataList.add(jsonData); + //娣诲姞鐫e姙鏃ュ織 + publisher.publishEvent(new TaskLogEvent(this, processLog.getId(), processLog.getUserId(), form.getProjectId(), form.getProcessInsId(), form.getTaskId(), ProcessLogEventTypeEnum.SUPERVISE, dataList)); return Result.ok("鎿嶄綔鎴愬姛"); } @@ -672,7 +704,7 @@ /** * 鑾峰彇鎵�鏈変换鍔� * - * @param projectId 椤圭洰id + * @param projectId 椤圭洰id * @param processDefinitionId 娴佺▼杩愯id * @param processInsId 娴佺▼瀹炰緥id * @param pageNum @@ -758,8 +790,7 @@ if (groupId.contains(ProcessConstants.DATA_LAUNCH)) { vo.setHandlerType(HandlerTypeEnum.DEPT); this.varYzReview(vo, projectId, processInsId, HandlerTypeEnum.DEPT); - } - else if (groupId.startsWith("dept")) { // 閮ㄩ棬鐨刬d鏄姞浜嗗墠缂�鐨勫锛歞ept:1 + } else if (groupId.startsWith("dept")) { // 閮ㄩ棬鐨刬d鏄姞浜嗗墠缂�鐨勫锛歞ept:1 vo.setHandlerType(HandlerTypeEnum.DEPT); String[] split = groupId.split(":"); if (split.length > 1) { @@ -820,7 +851,7 @@ /** * 鏌ヨ宸插畬鎴愮殑娴佺▼鐨勪换鍔′俊鎭� * - * @param userTasks 浠诲姟鑺傜偣鍒楄〃 + * @param userTasks 浠诲姟鑺傜偣鍒楄〃 * @param processInsId 娴佺▼瀹炰緥id * @param processDefId 娴佺▼瀹氫箟id * @return @@ -867,8 +898,8 @@ /** * 璁剧疆杩愯鏃朵换鍔$殑淇℃伅 * - * @param task 浠诲姟 - * @param taskVO 浠诲姟vo + * @param task 浠诲姟 + * @param taskVO 浠诲姟vo * @param projectId 椤圭洰id */ private void setRuntimeTaskInfo(Task task, CustomerTaskVO taskVO, Long projectId) { @@ -1003,8 +1034,8 @@ * 鏌ヨ鎸夋椂瀹屾垚鐨勪换鍔� * * @param processDefinitionId 娴佺▼瀹氫箟id - * @param processInsId 娴佺▼瀹炰緥id - * @param taskName 浠诲姟鍚嶇О--鎼滅储鏉′欢 + * @param processInsId 娴佺▼瀹炰緥id + * @param taskName 浠诲姟鍚嶇О--鎼滅储鏉′欢 * @param pageNum * @param pageSize * @param result @@ -1190,10 +1221,10 @@ /** * 鏌ヨ瓒呮椂鐨勪换鍔� * - * @param projectId 椤圭洰id + * @param projectId 椤圭洰id * @param processDefinitionId 娴佺▼瀹氫箟id - * @param processInsId 娴佺▼瀹炰緥id - * @param taskName 浠诲姟鍚嶇О--鎼滅储鏉′欢 + * @param processInsId 娴佺▼瀹炰緥id + * @param taskName 浠诲姟鍚嶇О--鎼滅储鏉′欢 * @param pageNum * @param pageSize * @param result @@ -1303,10 +1334,10 @@ /** * 鏌ヨ鍗冲皢瓒呮椂鐨勪换鍔� * - * @param projectId 椤圭洰id + * @param projectId 椤圭洰id * @param processDefinitionId 娴佺▼瀹氫箟id - * @param processInsId 娴佺▼瀹炰緥id - * @param taskName 浠诲姟鍚嶇О--鎼滅储鏉′欢 + * @param processInsId 娴佺▼瀹炰緥id + * @param taskName 浠诲姟鍚嶇О--鎼滅储鏉′欢 * @param pageNum * @param pageSize * @param result @@ -1378,7 +1409,7 @@ /** * 鏌ヨ鍓╀綑浜嬮」锛堟湭寮�濮嬬殑浠诲姟锛� * - * @param projectId 椤圭洰id + * @param projectId 椤圭洰id * @param processDefinitionId * @param processInsId * @param taskName @@ -1424,7 +1455,6 @@ List<UserTask> userTasks = allUserTaskElement.subList(startNum, end); - // 鍒ゆ柇浠诲姟鐘舵�侊紝鏋勫缓vo List<CustomerTaskVO> vos = new ArrayList<>(48); for (UserTask userTask : userTasks) { @@ -1464,8 +1494,7 @@ if (groupId.contains(ProcessConstants.DATA_LAUNCH)) { vo.setHandlerType(HandlerTypeEnum.DEPT); this.varYzReview(vo, projectId, processInsId, HandlerTypeEnum.DEPT); - } - else if (groupId.startsWith("dept")) { // 閮ㄩ棬鐨刬d鏄姞浜嗗墠缂�鐨勫锛歞ept:1 + } else if (groupId.startsWith("dept")) { // 閮ㄩ棬鐨刬d鏄姞浜嗗墠缂�鐨勫锛歞ept:1 vo.setHandlerType(HandlerTypeEnum.DEPT); String[] split = groupId.split(":"); if (split.length > 1) { @@ -1590,7 +1619,7 @@ if (TaskStatusEnum.TODO.equals(taskVO.getTaskStatus())) { List<IdentityLink> identityLinksForTask = taskService.getIdentityLinksForTask(taskVO.getTaskId()); for (IdentityLink identityLink : identityLinksForTask) { - if (StringUtils.isBlank(((IdentityLinkEntityImpl)identityLink).getId())) { + if (StringUtils.isBlank(((IdentityLinkEntityImpl) identityLink).getId())) { continue; } // 缁戝畾鐨勬槸鐢ㄦ埛锛屾煡鍑虹敤鎴峰鍚嶃�侀儴闂� @@ -1685,7 +1714,7 @@ .orderByHistoricTaskInstanceStartTime() .desc() .list(); // 涔嬫墍浠ョ敤list鏄洜涓哄鏋滄煇涓换鍔¤椹冲洖杩囷紝涓斿鏋滆浠诲姟鍐嶆鎵ц鏃朵細鏈夊鏉℃暟鎹紝鍙栨渶鏂扮殑涓�鏉� - if (! CollectionUtils.isEmpty(historicTaskInstances)) { + if (!CollectionUtils.isEmpty(historicTaskInstances)) { // 瀹為檯棰嗗彇杩欎釜浠诲姟鐨勪汉锛屼篃灏辨槸澶勭悊浜� String assignee = historicTaskInstances.get(0).getAssignee(); SysUser startUser = sysUserService.selectUserById(Long.parseLong(assignee)); @@ -1698,10 +1727,18 @@ taskVO.setPromoterName("鏆傛棤"); taskVO.setPromoterUnitName("鏆傛棤"); } else { - taskVO.setPromoterId(userList.stream().map(user -> { return user.getUserId() + ""; }).collect(Collectors.joining("銆�"))); - taskVO.setPromoterName(userList.stream().map(user -> { return user.getNickName(); }).collect(Collectors.joining("銆�"))); - taskVO.setPromoterUnitId(userList.stream().filter(user -> Objects.nonNull(user.getDept())).map(user -> { return user.getDept().getDeptId() + "";}).collect(Collectors.joining("銆�"))); - taskVO.setPromoterUnitName(userList.stream().filter(user -> Objects.nonNull(user.getDept())).map(user -> { return user.getDept().getDeptName() + "";}).collect(Collectors.joining("銆�"))); + taskVO.setPromoterId(userList.stream().map(user -> { + return user.getUserId() + ""; + }).collect(Collectors.joining("銆�"))); + taskVO.setPromoterName(userList.stream().map(user -> { + return user.getNickName(); + }).collect(Collectors.joining("銆�"))); + taskVO.setPromoterUnitId(userList.stream().filter(user -> Objects.nonNull(user.getDept())).map(user -> { + return user.getDept().getDeptId() + ""; + }).collect(Collectors.joining("銆�"))); + taskVO.setPromoterUnitName(userList.stream().filter(user -> Objects.nonNull(user.getDept())).map(user -> { + return user.getDept().getDeptName() + ""; + }).collect(Collectors.joining("銆�"))); } } -- Gitblit v1.8.0