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/domain/form/TaskSuperviseForm.java               |   47 +++++++++
 business/src/main/java/com/ycl/domain/json/SuperviseData.java                   |   52 ++++++++++
 business/src/main/java/com/ycl/event/event/TaskLogEvent.java                    |   13 ++
 business/src/main/java/com/ycl/event/listener/ProcessLogEventListener.java      |    3 
 business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java      |  109 ++++++++++++++-------
 business/src/main/java/com/ycl/controller/ProjectProcessController.java         |   11 +
 business/src/main/java/com/ycl/service/ProjectProcessService.java               |    7 
 common/src/main/java/com/ycl/common/enums/business/SuperviseTypeEnum.java       |   31 ++++++
 common/src/main/java/com/ycl/common/enums/business/ProcessLogEventTypeEnum.java |    1 
 9 files changed, 227 insertions(+), 47 deletions(-)

diff --git a/business/src/main/java/com/ycl/controller/ProjectProcessController.java b/business/src/main/java/com/ycl/controller/ProjectProcessController.java
index ac00f25..8ee4e96 100644
--- a/business/src/main/java/com/ycl/controller/ProjectProcessController.java
+++ b/business/src/main/java/com/ycl/controller/ProjectProcessController.java
@@ -2,9 +2,7 @@
 
 import com.ycl.common.group.Update;
 import com.ycl.common.group.Add;
-import com.ycl.domain.form.RejectTaskForm;
-import com.ycl.domain.form.TaskDelegationForm;
-import com.ycl.domain.form.TaskJumpForm;
+import com.ycl.domain.form.*;
 import com.ycl.domain.query.TaskQuery;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -20,7 +18,6 @@
 import io.swagger.annotations.ApiOperation;
 import com.ycl.service.ProjectProcessService;
 import com.ycl.common.base.Result;
-import com.ycl.domain.form.ProjectProcessForm;
 import com.ycl.domain.query.ProjectProcessQuery;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
@@ -116,4 +113,10 @@
     }
 
 
+    @PostMapping("/detail/task/supervise")
+    @ApiOperation(value = "鐫e姙", notes = "鐫e姙")
+//    @PreAuthorize("@ss.hasPermi('projectProcess:detail')")
+    public Result taskSupervise(@Validated @RequestBody TaskSuperviseForm form) {
+        return projectProcessService.taskSupervise(form);
+    }
 }
diff --git a/business/src/main/java/com/ycl/domain/form/TaskSuperviseForm.java b/business/src/main/java/com/ycl/domain/form/TaskSuperviseForm.java
new file mode 100644
index 0000000..2b3fd8d
--- /dev/null
+++ b/business/src/main/java/com/ycl/domain/form/TaskSuperviseForm.java
@@ -0,0 +1,47 @@
+package com.ycl.domain.form;
+
+import com.ycl.common.enums.business.HandlerTypeEnum;
+import com.ycl.common.enums.business.SuperviseTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.util.List;
+
+/**
+ * 鐫e姙琛ㄥ崟
+ *
+ * @author锛歺p
+ * @date锛�2024/12/13 13:51
+ */
+@Data
+@ApiModel("鐫e姙琛ㄥ崟")
+public class TaskSuperviseForm {
+
+    /**
+     * 褰撳墠浠诲姟id
+     *
+     */
+    @NotBlank(message = "浠诲姟id涓嶈兘涓虹┖")
+    private String taskId;
+
+    @ApiModelProperty("椤圭洰id锛岀敤浜庝繚瀛樻棩蹇�")
+    private Long projectId;
+
+    @ApiModelProperty("娴佺▼瀹炰緥id锛岀敤浜庝繚瀛樻棩蹇�")
+    private String processInsId;
+
+    @ApiModelProperty("鎺ユ敹浜�")
+    private List<String> receiverIds;
+
+    @ApiModelProperty("鎺ユ敹浜虹被鍨�")
+    private HandlerTypeEnum receiverType;
+
+    @ApiModelProperty("娑堟伅绫诲瀷")
+    private SuperviseTypeEnum superviseType;
+
+    @ApiModelProperty("鍐呭")
+    @NotBlank(message = "鐫e姙鍐呭涓嶈兘涓虹┖")
+    private String content;
+}
diff --git a/business/src/main/java/com/ycl/domain/json/SuperviseData.java b/business/src/main/java/com/ycl/domain/json/SuperviseData.java
new file mode 100644
index 0000000..8cf0313
--- /dev/null
+++ b/business/src/main/java/com/ycl/domain/json/SuperviseData.java
@@ -0,0 +1,52 @@
+package com.ycl.domain.json;
+
+import com.ycl.common.enums.business.HandlerTypeEnum;
+import com.ycl.common.enums.business.SuperviseTypeEnum;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 浠诲姟鐫e姙鐨刯son鏃ュ織鏁版嵁
+ *
+ * @author锛歺p
+ * @date锛�2025/1/2 14:39
+ */
+@Data
+public class SuperviseData {
+
+    /**
+     * 鍙戦�佷汉
+     */
+    private String senderId;
+
+    /**
+     * 鍙戦�佷汉绫诲瀷
+     */
+    private HandlerTypeEnum senderType;
+
+    /**
+     * 鎺ユ敹浜�
+     */
+    private List<String> receiverIds;
+
+    /**
+     * 鎺ユ敹浜虹被鍨�
+     */
+    private HandlerTypeEnum  receiverType;
+
+    /**
+     * 娑堟伅绫诲瀷鏄� 鐫e姙 or 鍥炲
+     */
+    private SuperviseTypeEnum superviseType;
+    /**
+     * 娑堟伅鍐呭
+     */
+    private String content;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private Date createTime;
+}
diff --git a/business/src/main/java/com/ycl/event/event/TaskLogEvent.java b/business/src/main/java/com/ycl/event/event/TaskLogEvent.java
index 076c8dd..dc3e3a4 100644
--- a/business/src/main/java/com/ycl/event/event/TaskLogEvent.java
+++ b/business/src/main/java/com/ycl/event/event/TaskLogEvent.java
@@ -15,7 +15,14 @@
 @Getter
 @Setter
 public class TaskLogEvent extends ApplicationEvent {
-
+    /**
+     * id
+     */
+    private Long id;
+    /**
+     * 鐢ㄦ埛id
+     */
+    private Long userId;
     /**
      * 椤圭洰id
      */
@@ -51,8 +58,10 @@
      * @param taskId 浠诲姟id
      * @param otherData 鍏跺畠鏁版嵁
      */
-    public TaskLogEvent(Object source, Long projectId, String processInsId, String taskId, ProcessLogEventTypeEnum eventType, Object otherData) {
+    public TaskLogEvent(Object source,Long id,Long userId, Long projectId, String processInsId, String taskId, ProcessLogEventTypeEnum eventType, Object otherData) {
         super(source);
+        this.id = id;
+        this.userId = userId;
         this.projectId = projectId;
         this.processInsId = processInsId;
         this.eventType = eventType;
diff --git a/business/src/main/java/com/ycl/event/listener/ProcessLogEventListener.java b/business/src/main/java/com/ycl/event/listener/ProcessLogEventListener.java
index 28531eb..fdf577e 100644
--- a/business/src/main/java/com/ycl/event/listener/ProcessLogEventListener.java
+++ b/business/src/main/java/com/ycl/event/listener/ProcessLogEventListener.java
@@ -30,6 +30,7 @@
     @EventListener(classes = {TaskLogEvent.class})
     public void delegate(TaskLogEvent event) {
         ProcessLog log = new ProcessLog();
+        if(event.getId()!=null) log.setId(event.getId());
         log.setEventType(event.getEventType());
         log.setProcessInsId(event.getProcessInsId());
         log.setProjectId(event.getProjectId());
@@ -38,7 +39,7 @@
         if (Objects.nonNull(event.getOtherData())) {
             log.setEventDataJson(JSON.toJSONString(event.getOtherData()));
         }
-        processLogService.save(log);
+        processLogService.saveOrUpdate(log);
     }
 
 
diff --git a/business/src/main/java/com/ycl/service/ProjectProcessService.java b/business/src/main/java/com/ycl/service/ProjectProcessService.java
index 18c0eb6..facc624 100644
--- a/business/src/main/java/com/ycl/service/ProjectProcessService.java
+++ b/business/src/main/java/com/ycl/service/ProjectProcessService.java
@@ -3,10 +3,7 @@
 import com.ycl.domain.entity.ProjectProcess;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ycl.common.base.Result;
-import com.ycl.domain.form.ProjectProcessForm;
-import com.ycl.domain.form.RejectTaskForm;
-import com.ycl.domain.form.TaskDelegationForm;
-import com.ycl.domain.form.TaskJumpForm;
+import com.ycl.domain.form.*;
 import com.ycl.domain.query.ProjectProcessQuery;
 import com.ycl.domain.query.TaskQuery;
 import com.ycl.domain.vo.CustomerTaskVO;
@@ -107,4 +104,6 @@
      * @return
      */
     Result taskJump(TaskJumpForm form);
+
+    Result taskSupervise(TaskSuperviseForm form);
 }
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("銆�")));
         }
     }
 
diff --git a/common/src/main/java/com/ycl/common/enums/business/ProcessLogEventTypeEnum.java b/common/src/main/java/com/ycl/common/enums/business/ProcessLogEventTypeEnum.java
index 28957be..05b7a08 100644
--- a/common/src/main/java/com/ycl/common/enums/business/ProcessLogEventTypeEnum.java
+++ b/common/src/main/java/com/ycl/common/enums/business/ProcessLogEventTypeEnum.java
@@ -17,6 +17,7 @@
     FINISHED("FINISHED", "瀹屾垚"),
     TEAM_WORK("TEAM_WORK", "鍗忓悓鍔炵悊"),
     JUMP("JUMP", "璺宠繃"),
+    SUPERVISE("SUPERVISE", "鐫e姙"),
 
     ;
 
diff --git a/common/src/main/java/com/ycl/common/enums/business/SuperviseTypeEnum.java b/common/src/main/java/com/ycl/common/enums/business/SuperviseTypeEnum.java
new file mode 100644
index 0000000..c94ec9c
--- /dev/null
+++ b/common/src/main/java/com/ycl/common/enums/business/SuperviseTypeEnum.java
@@ -0,0 +1,31 @@
+package com.ycl.common.enums.business;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.Getter;
+
+/**
+ * 鐫e姙绫诲瀷 鐫e姙 or 鍥炲
+ *
+ * @author锛歺p
+ * @date锛�2024/11/29 11:13
+ */
+@Getter
+public enum SuperviseTypeEnum {
+
+    SUPERVISE("SUPERVISE", "鐫e姙"),
+    REPLY("REPLY", "鍥炲"),
+    ;
+
+    @EnumValue
+    @JsonValue
+    private final String value;
+
+
+    private final String desc;
+
+    SuperviseTypeEnum(String value, String desc) {
+        this.value = value;
+        this.desc = desc;
+    }
+}

--
Gitblit v1.8.0