瀏覽代碼

Merge remote-tracking branch 'origin/master'

wangbo 4 年之前
父節點
當前提交
f68eb0874a

+ 5 - 1
operation_manager/src/main/java/com/huaxu/process/activiti/Service/ProgressSevice.java

@@ -45,8 +45,12 @@ public class ProgressSevice  implements JavaDelegate{
         String value = (String) expression.getValue(delegateExecution);
         TaskUserDTO taskUserDTO = JSONObject.parseObject(value, TaskUserDTO.class);
         message.setChannel(taskUserDTO.getChannel());
-        Set<Integer> taskUsers = userFormService.getTaskUsers(taskUserDTO);
 
+        Set<Integer> taskUsers = userFormService.getTaskUsers(taskUserDTO);
+        if(taskUserDTO.getUserFormFlag()==1){
+            String assineeFormUserId = (String)variables.get("assineeFormUserId");
+            taskUsers.add(Integer.parseInt(assineeFormUserId));
+        }
         if(taskUsers!=null){
 
             taskUsers.forEach(id->{

+ 8 - 3
operation_manager/src/main/java/com/huaxu/process/controller/WorkFlowController.java

@@ -153,7 +153,7 @@ public class WorkFlowController {
     @GetMapping("/testStartProgress")
     @ApiOperation(value = "开启流程")
     public AjaxMessage testStartProgress() {
-        ProcessDefinition processDefinition=workFlowService.findProcessDefinition("test1",1,1);
+        ProcessDefinition processDefinition=workFlowService.findProcessDefinition("test1",8,8);
 
         Map<String, Object> vars=new HashMap<>();
         vars.put("assineeFormUserId","55,66");
@@ -179,8 +179,6 @@ public class WorkFlowController {
         Action action=null;
         if(actionId==1){
             action=Action.ACTION_AUDIT;
-        }else if(actionId==2){
-            action=Action.ACTION_RECEIVE;
         }
         else if(actionId==3){
             action=Action.ACTION_REJECT;
@@ -189,4 +187,11 @@ public class WorkFlowController {
         List<TaskPorcessResult> results = workFlowService.handleTask(action, taskId, args, "haowan");
         return new AjaxMessage(ResultStatus.OK,results);
     }
+    @PostMapping ("/stopProgress")
+    @ApiOperation(value = "流程流转")
+    public AjaxMessage stopProgress( String processId) {
+
+        workFlowService.stopProcessInstance(processId);
+        return new AjaxMessage(ResultStatus.OK);
+    }
 }

+ 68 - 0
operation_manager/src/main/java/com/huaxu/process/service/JumpTaskCmdService.java

@@ -0,0 +1,68 @@
+package com.huaxu.process.service;
+import org.activiti.engine.impl.context.Context;
+
+import org.activiti.engine.impl.interceptor.Command;
+
+import org.activiti.engine.impl.interceptor.CommandContext;
+
+import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
+
+import org.activiti.engine.impl.persistence.entity.TaskEntity;
+
+import org.activiti.engine.impl.pvm.process.ActivityImpl;
+
+import org.activiti.engine.impl.pvm.process.ProcessDefinitionImpl;
+
+import org.activiti.engine.task.Comment;
+
+import org.springframework.stereotype.Service;
+public class JumpTaskCmdService implements Command<Comment>{
+    protected String executionId;  //当前任务的executionID
+
+    protected String activityId;  //跳转目标activityID
+
+
+
+    public JumpTaskCmdService() {
+
+
+
+    }
+
+
+
+    public JumpTaskCmdService(String executionId, String activityId) {
+
+        this.executionId = executionId;
+
+        this.activityId = activityId;
+
+    }
+
+
+
+    public Comment execute(CommandContext commandContext) {
+
+        for (TaskEntity taskEntity : Context.getCommandContext().getTaskEntityManager().findTasksByExecutionId(executionId)) {
+
+            Context.getCommandContext().getTaskEntityManager().deleteTask(taskEntity, "jump", false);
+
+        }
+
+        ExecutionEntity executionEntity = Context.getCommandContext().getExecutionEntityManager().findExecutionById(executionId);
+
+        ProcessDefinitionImpl processDefinition = executionEntity.getProcessDefinition();
+
+        ActivityImpl activity = processDefinition.findActivity(activityId);
+
+        executionEntity.executeActivity(activity);
+
+        return null;
+
+    }
+
+
+
+}
+
+

+ 8 - 0
operation_manager/src/main/java/com/huaxu/process/service/WorkFlowService.java

@@ -151,6 +151,14 @@ public interface WorkFlowService {
      * @return
      */
     public boolean deleteProcessInstance(String processInstanceId, String remark);
+    /**
+     * 强制终止流程工作流流程实例
+     *
+     * @param processInstanceId
+     * @param
+     * @return
+     */
+    public void stopProcessInstance(String processInstanceId);
 
     /**
      * 获取流程实例当前待处理任务

+ 30 - 0
operation_manager/src/main/java/com/huaxu/process/service/impl/WorkFlowServiceImpl.java

@@ -19,6 +19,7 @@ import com.huaxu.process.dto.ProcessDefinitionDTO;
 import com.huaxu.process.dto.TaskPorcessResult;
 import com.huaxu.process.dto.TaskUserDTO;
 import com.huaxu.process.entity.WorkflowAssignUser;
+import com.huaxu.process.service.JumpTaskCmdService;
 import com.huaxu.process.service.UserFormService;
 import com.huaxu.process.service.WorkFlowService;
 import com.huaxu.process.utils.Action;
@@ -34,6 +35,7 @@ import org.activiti.engine.history.HistoricActivityInstance;
 import org.activiti.engine.history.HistoricProcessInstance;
 import org.activiti.engine.history.HistoricTaskInstance;
 import org.activiti.engine.impl.RepositoryServiceImpl;
+import org.activiti.engine.impl.TaskServiceImpl;
 import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl;
 import org.activiti.engine.impl.context.Context;
 import org.activiti.engine.impl.el.ExpressionManager;
@@ -47,6 +49,7 @@ import org.activiti.engine.repository.Deployment;
 import org.activiti.engine.runtime.ProcessInstance;
 import org.activiti.engine.task.IdentityLink;
 import org.activiti.engine.task.Task;
+import org.activiti.engine.task.TaskQuery;
 import org.apache.commons.lang3.StringUtils;
 import org.dom4j.DocumentException;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -494,6 +497,7 @@ public class WorkFlowServiceImpl implements WorkFlowService {
             taskService.addComment(taskId, pi.getId(), comment);
         }
         taskService.complete(taskId, vars);
+
     }
 
     @Override
@@ -624,6 +628,32 @@ public class WorkFlowServiceImpl implements WorkFlowService {
         return true;
     }
 
+    @Override
+    public void stopProcessInstance(String processInstanceId) {
+        Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult();
+
+        org.activiti.engine.repository.ProcessDefinition definition = repositoryService.
+                createProcessDefinitionQuery().processDefinitionId(task.getProcessDefinitionId()).singleResult();
+        ProcessDefinitionEntity processDefinition = (ProcessDefinitionEntity) ((RepositoryServiceImpl)
+                repositoryService) .getDeployedProcessDefinition(definition.getId());
+        List<ActivityImpl> allActivities = processDefinition.getActivities();
+        String endActivityId = null;
+        for(ActivityImpl activity : allActivities){
+
+            String type = activity.getProperty("type").toString();
+           if(type.equals("endEvent")){
+               endActivityId = activity.getId();
+                break;
+            }
+
+        }
+
+        TaskServiceImpl taskServiceImpl=(TaskServiceImpl  )taskService;
+        taskServiceImpl.getCommandExecutor().execute( new JumpTaskCmdService( task.getExecutionId(), endActivityId) );
+
+
+    }
+
     @Override
     public List<Task> getProcessRuntimeTask(String processInstanceId) {
         List<Task> tasks = taskService.createTaskQuery().executionId(processInstanceId).list();

+ 4 - 4
operation_manager/src/main/resources/mapper/order/WorkOrderManageMapper.xml

@@ -474,23 +474,23 @@
   </update>
 
   <select id="selectAppTodo" resultMap="BaseResultMap">
-    select id,task_no,send_time,address,order_type_id,create_by,update_by,task_desc
+    select id,task_no,send_time,address,order_type_id,create_by,update_by,task_desc,order_status
     from sc_work_order_manage
     where find_in_set(#{userId},current_users) and tenant_id = #{tenantId}
     union
-    select id,plan_id,plan_start_date,task_area_name,task_type,create_by,update_by,task_content
+    select id,plan_id,plan_date,task_area_name,task_type,create_by,update_by,task_content,plan_status
     from sc_plan_manage
     where find_in_set(#{userId},current_users) and tenant_id = #{tenantId}
     order by send_time
   </select>
   <select id="selectAppAll" resultMap="BaseResultMap">
-    select id,task_no,send_time,address,order_type_id,current_task_name,create_by,update_by,task_desc
+    select id,task_no,send_time,address,order_type_id,current_task_name,create_by,update_by,task_desc,order_status
     from sc_work_order_manage
     where (find_in_set(#{userId},current_users)
      or id in(select flow_id from sc_work_flow_log where flow_type=2 and find_in_set(#{userId},handle_user_id)))
      and tenant_id = #{tenantId}
     union
-    select id,plan_id,plan_start_date,task_area_name,task_type,current_task_name,create_by,update_by,task_content
+    select id,plan_id,plan_date,task_area_name,task_type,current_task_name,create_by,update_by,task_content,plan_status
     from sc_plan_manage
     where (find_in_set(#{userId},current_users)
      or id in(select flow_id from sc_work_flow_log where flow_type=1 and find_in_set(#{userId},handle_user_id)))