From 064dca48da397af000ccfe7b9968f051ded8dcd7 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期一, 10 二月 2025 09:23:03 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 business/src/main/java/com/ycl/domain/form/TaskJumpForm.java                    |   32 ++++++++++++++++
 business/src/main/java/com/ycl/event/listener/ProcessLogEventListener.java      |    6 ++
 business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java      |   29 ++++++++++++++
 business/src/main/java/com/ycl/controller/ProjectProcessController.java         |    7 +++
 business/src/main/java/com/ycl/service/ProjectProcessService.java               |    9 ++++
 common/src/main/java/com/ycl/common/enums/business/ProcessLogEventTypeEnum.java |    1 
 6 files changed, 83 insertions(+), 1 deletions(-)

diff --git a/business/src/main/java/com/ycl/controller/ProjectProcessController.java b/business/src/main/java/com/ycl/controller/ProjectProcessController.java
index cfc9775..ac00f25 100644
--- a/business/src/main/java/com/ycl/controller/ProjectProcessController.java
+++ b/business/src/main/java/com/ycl/controller/ProjectProcessController.java
@@ -4,6 +4,7 @@
 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.query.TaskQuery;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -90,6 +91,12 @@
         return projectProcessService.taskDelegation(form);
     }
 
+    @PostMapping("/detail/task/jump")
+    @ApiOperation(value = "璺宠繃浠诲姟", notes = "璺宠繃浠诲姟锛屼笉甯﹁〃鍗曟暟鎹殑瀹屾垚浠诲姟")
+//    @PreAuthorize("@ss.hasPermi('projectProcess:detail')")
+    public Result taskJump(@RequestBody TaskJumpForm form) {
+        return projectProcessService.taskJump(form);
+    }
 
     @GetMapping("/to_do_task")
     @ApiOperation(value = "鍒嗛〉", notes = "鍒嗛〉")
diff --git a/business/src/main/java/com/ycl/domain/form/TaskJumpForm.java b/business/src/main/java/com/ycl/domain/form/TaskJumpForm.java
new file mode 100644
index 0000000..7546c9e
--- /dev/null
+++ b/business/src/main/java/com/ycl/domain/form/TaskJumpForm.java
@@ -0,0 +1,32 @@
+package com.ycl.domain.form;
+
+import com.ycl.common.enums.business.HandlerTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * 浠诲姟璺宠繃/缂虹渷
+ *
+ * @author锛歺p
+ * @date锛�2024/12/13 13:51
+ */
+@Data
+@ApiModel("浠诲姟璺宠繃/缂虹渷琛ㄥ崟")
+public class TaskJumpForm {
+
+    /**
+     * 褰撳墠浠诲姟id
+     *
+     */
+    @NotBlank(message = "浠诲姟id涓嶈兘涓虹┖")
+    private String taskId;
+
+    @ApiModelProperty("椤圭洰id锛岀敤浜庝繚瀛樻棩蹇�")
+    private Long projectId;
+
+    @ApiModelProperty("娴佺▼瀹炰緥id锛岀敤浜庝繚瀛樻棩蹇�")
+    private String processInsId;
+}
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 39736e6..28531eb 100644
--- a/business/src/main/java/com/ycl/event/listener/ProcessLogEventListener.java
+++ b/business/src/main/java/com/ycl/event/listener/ProcessLogEventListener.java
@@ -10,6 +10,8 @@
 import org.springframework.context.event.EventListener;
 import org.springframework.stereotype.Component;
 
+import java.util.Objects;
+
 /**
  * @author锛歺p
  * @date锛�2025/1/16 15:14
@@ -33,7 +35,9 @@
         log.setProjectId(event.getProjectId());
         log.setTaskId(event.getTaskId());
         log.setUserId(SecurityUtils.getUserId());
-        log.setEventDataJson(JSON.toJSONString(event.getOtherData()));
+        if (Objects.nonNull(event.getOtherData())) {
+            log.setEventDataJson(JSON.toJSONString(event.getOtherData()));
+        }
         processLogService.save(log);
     }
 
diff --git a/business/src/main/java/com/ycl/service/ProjectProcessService.java b/business/src/main/java/com/ycl/service/ProjectProcessService.java
index 89da7d5..18c0eb6 100644
--- a/business/src/main/java/com/ycl/service/ProjectProcessService.java
+++ b/business/src/main/java/com/ycl/service/ProjectProcessService.java
@@ -6,6 +6,7 @@
 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.query.ProjectProcessQuery;
 import com.ycl.domain.query.TaskQuery;
 import com.ycl.domain.vo.CustomerTaskVO;
@@ -98,4 +99,12 @@
      * @return
      */
     Result taskDelegation(TaskDelegationForm form);
+
+    /**
+     * 璺宠繃浠诲姟
+     *
+     * @param form
+     * @return
+     */
+    Result taskJump(TaskJumpForm 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 7591ebb..b420892 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
@@ -1,6 +1,7 @@
 package com.ycl.service.impl;
 
 
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
@@ -15,7 +16,9 @@
 import com.ycl.constant.TaskTypeConstant;
 import com.ycl.domain.entity.ProjectInfo;
 import com.ycl.domain.entity.ProjectProcess;
+import com.ycl.domain.entity.SysForm;
 import com.ycl.domain.form.TaskDelegationForm;
+import com.ycl.domain.form.TaskJumpForm;
 import com.ycl.domain.json.DelegateData;
 import com.ycl.domain.vo.CustomerTaskVO;
 import com.ycl.domain.vo.IndexCustomerTaskVO;
@@ -23,6 +26,8 @@
 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.ProjectProcessService;
 import com.ycl.common.base.Result;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -79,6 +84,8 @@
     private final ISysRoleService sysRoleService;
     private final ISysDeptService sysDeptService;
     private final TaskCommonService taskCommonService;
+    private final IFlowTaskService flowTaskService;
+    private final ISysFormService formService;
     private final ApplicationEventPublisher publisher;
 
     /**
@@ -568,6 +575,28 @@
         return Result.ok("杞姙鎴愬姛");
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Result taskJump(TaskJumpForm form) {
+        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, null));
+            // 鏌ュ嚭璇ヤ换鍔$粦瀹氱殑琛ㄥ崟
+
+            Map<String, Object> data = new HashMap<>(1);
+            if (StringUtils.isNotBlank(task.getFormKey())) {
+                SysForm sysForm = formService.selectSysFormById(Long.parseLong(task.getFormKey()));
+                if (Objects.nonNull(sysForm)) {
+                    data.put(ProcessConstants.TASK_FORM_KEY, JSONObject.parseObject(sysForm.getFormContent()));
+                }
+            }
+            // 瀹屾垚浠诲姟
+            flowTaskService.completeSubmitForm(form.getTaskId(), data);
+        }
+        return Result.ok("鎿嶄綔鎴愬姛");
+    }
+
     /**
      * 鏌ヨ寰呭姙浠诲姟
      *
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 8e7bc79..28957be 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
@@ -16,6 +16,7 @@
     DELEGATE("DELEGATE", "杞姙"),
     FINISHED("FINISHED", "瀹屾垚"),
     TEAM_WORK("TEAM_WORK", "鍗忓悓鍔炵悊"),
+    JUMP("JUMP", "璺宠繃"),
 
     ;
 

--
Gitblit v1.8.0