caixiaofeng před 6 měsíci
rodič
revize
cc5fd0bd26

+ 11 - 0
flow-common/flow-common-flowable-starter/src/main/java/com/flow/flowable/cmd/CopyProcessInstanceCmd.java

@@ -1,5 +1,6 @@
 package com.flow.flowable.cmd;
 
+import org.apache.commons.lang3.StringUtils;
 import org.flowable.common.engine.impl.interceptor.Command;
 import org.flowable.common.engine.impl.interceptor.CommandContext;
 import org.flowable.engine.impl.util.CommandContextUtil;
@@ -12,12 +13,19 @@ import java.util.List;
 public class CopyProcessInstanceCmd implements Command<Void> {
     protected String processInstanceId;
     protected String assignee;
+    protected String taskId;
 
     public CopyProcessInstanceCmd(String processInstanceId, String assignee) {
         this.processInstanceId = processInstanceId;
         this.assignee = assignee;
     }
 
+    public CopyProcessInstanceCmd(String processInstanceId, String taskId, String assignee) {
+        this.processInstanceId = processInstanceId;
+        this.taskId = taskId;
+        this.assignee = assignee;
+    }
+
     @Override
     public Void execute(CommandContext commandContext) {
         HistoricIdentityLinkService historicIdentityLinkService = CommandContextUtil.getProcessEngineConfiguration(commandContext)
@@ -33,6 +41,9 @@ public class CopyProcessInstanceCmd implements Command<Void> {
             historicIdentityLink.setUserId(assignee);
             historicIdentityLink.setCreateTime(new Date());
             historicIdentityLink.setProcessInstanceId(processInstanceId);
+            if (StringUtils.isNotBlank(taskId)) {
+                historicIdentityLink.setTaskId(taskId);
+            }
             historicIdentityLinkService.insertHistoricIdentityLink(historicIdentityLink, false);
         }
         return null;

+ 6 - 0
flow-workflow/flow-workflow-api/src/main/java/com/flow/service/FlowTaskService.java

@@ -140,6 +140,12 @@ public interface FlowTaskService extends BaseService<FlowTask> {
      */
     void complete(TaskForm taskForm);
 
+    /**
+     * 抄送用户
+     * @param copyTaskForm
+     */
+    void copy(CopyTaskForm copyTaskForm);
+
     /**
      * 自动完成任务
      * @param taskId

+ 11 - 0
flow-workflow/flow-workflow-biz/src/main/java/com/flow/service/impl/FlowTaskServiceImpl.java

@@ -19,6 +19,7 @@ import com.flow.entity.node.Node;
 import com.flow.entity.node.RootNode;
 import com.flow.enums.ProcessStatus;
 import com.flow.flowable.cmd.AddTaskExecutionCmd;
+import com.flow.flowable.cmd.CopyProcessInstanceCmd;
 import com.flow.flowable.cmd.DeleteTaskExecutionCmd;
 import com.flow.flowable.cmd.JumpActivityCmd;
 import com.flow.flowable.utils.ProcessElementUtil;
@@ -330,6 +331,16 @@ public class FlowTaskServiceImpl extends BaseServiceImpl<FlowTaskDao, FlowTask>
         }
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void copy(CopyTaskForm taskForm) {
+        Task task = this.comment(taskForm);
+        List<String> copyTo = taskForm.getCopyTo();
+        for (String to : copyTo) {
+            managementService.executeCommand(new CopyProcessInstanceCmd(task.getProcessInstanceId(), task.getId(), to));
+        }
+    }
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void autoComplete(String taskId) {

+ 6 - 0
flow-workflow/flow-workflow-controller/src/main/java/com/flow/controller/FlowTaskController.java

@@ -76,6 +76,12 @@ public class FlowTaskController {
         return Result.success();
     }
 
+    @PostMapping("/copy")
+    public Result<?> copy(@RequestBody CopyTaskForm taskForm) {
+        flowTaskService.copy(taskForm);
+        return Result.success();
+    }
+
     @PostMapping("/taskForm")
     public Result<?> saveForm(@RequestBody TaskForm taskForm) {
         flowTaskService.saveForm(taskForm);

+ 15 - 0
flow-workflow/flow-workflow-entity/src/main/java/com/flow/model/CopyTaskForm.java

@@ -0,0 +1,15 @@
+package com.flow.model;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * 抄送任务
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class CopyTaskForm extends TaskForm{
+    private List<String> copyTo;
+}