Browse Source

批量废除

huangjn 3 years ago
parent
commit
65f5c95a79

+ 18 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/TaskClient.java

@@ -1,11 +1,15 @@
 package org.springblade.business.feign;
 package org.springblade.business.feign;
 
 
+import org.springblade.business.entity.Task;
 import org.springblade.business.vo.TaskVO;
 import org.springblade.business.vo.TaskVO;
 import org.springblade.common.constant.BusinessConstant;
 import org.springblade.common.constant.BusinessConstant;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.api.R;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
 
 
 @FeignClient(value = BusinessConstant.APPLICATION_WEATHER_NAME)
 @FeignClient(value = BusinessConstant.APPLICATION_WEATHER_NAME)
 public interface TaskClient {
 public interface TaskClient {
@@ -15,6 +19,14 @@ public interface TaskClient {
      */
      */
     String API_PREFIX = "/api/business/task";
     String API_PREFIX = "/api/business/task";
     String START_TASK = API_PREFIX + "/start-task";
     String START_TASK = API_PREFIX + "/start-task";
+    String ABOLISH_TASK = API_PREFIX + "abolish-task";
+    String QUERY_FORM_DATA_ID = "query-form-data-id";
+
+    /**
+     * 根据数据源ID获取任务实例
+     */
+    @PostMapping(QUERY_FORM_DATA_ID)
+    R<List<Task>> queryTaskListByFormDataId(@RequestParam String ids);
 
 
     /**
     /**
      * 发起流程
      * 发起流程
@@ -22,4 +34,10 @@ public interface TaskClient {
     @PostMapping(START_TASK)
     @PostMapping(START_TASK)
     R<Boolean> startTask(@RequestBody TaskVO taskVO);
     R<Boolean> startTask(@RequestBody TaskVO taskVO);
 
 
+    /**
+     * 主动废除
+     */
+    @PostMapping(ABOLISH_TASK)
+    R<Boolean> abolishTask(@RequestBody Task task);
+
 }
 }

+ 16 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/ArchiveFileController.java

@@ -10,6 +10,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.StringUtils;
+import org.springblade.business.entity.Task;
 import org.springblade.business.feign.TaskClient;
 import org.springblade.business.feign.TaskClient;
 import org.springblade.business.service.IArchiveShowService;
 import org.springblade.business.service.IArchiveShowService;
 import org.springblade.business.vo.ArchiveTaskVO;
 import org.springblade.business.vo.ArchiveTaskVO;
@@ -50,6 +51,21 @@ public class ArchiveFileController extends BladeController {
 
 
 	private final TaskClient taskClient;
 	private final TaskClient taskClient;
 
 
+	/**
+	 * 批量废除
+	 * @param id 列表主键
+	 * @return 废除结果
+	 */
+	@PostMapping("batchAbolish")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "批量废除")
+	public R<Boolean> batchAbolish(@RequestParam String id){
+		//获取所有相关记录
+//		this.
+
+		return null;
+	}
+
 	/**
 	/**
 	 * 批量上报
 	 * 批量上报
 	 */
 	 */

+ 13 - 0
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/TaskClientImpl.java

@@ -1,20 +1,33 @@
 package org.springblade.business.feignClient;
 package org.springblade.business.feignClient;
 
 
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
+import org.springblade.business.entity.Task;
 import org.springblade.business.feign.TaskClient;
 import org.springblade.business.feign.TaskClient;
 import org.springblade.business.service.ITaskService;
 import org.springblade.business.service.ITaskService;
 import org.springblade.business.vo.TaskVO;
 import org.springblade.business.vo.TaskVO;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.api.R;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
+import java.util.List;
+
 @RestController
 @RestController
 @AllArgsConstructor
 @AllArgsConstructor
 public class TaskClientImpl implements TaskClient {
 public class TaskClientImpl implements TaskClient {
 
 
     private final ITaskService taskService;
     private final ITaskService taskService;
 
 
+    @Override
+    public R<List<Task>> queryTaskListByFormDataId(String ids) {
+        return null;
+    }
+
     @Override
     @Override
     public R<Boolean> startTask(TaskVO taskVO) {
     public R<Boolean> startTask(TaskVO taskVO) {
         return R.data(this.taskService.startApproval(taskVO));
         return R.data(this.taskService.startApproval(taskVO));
     }
     }
+
+    @Override
+    public R<Boolean> abolishTask(Task task) {
+        return R.data(this.taskService.abolishTask(task));
+    }
 }
 }

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/TaskMapper.java

@@ -30,6 +30,8 @@ import java.util.List;
  */
  */
 public interface TaskMapper extends BaseMapper<Task> {
 public interface TaskMapper extends BaseMapper<Task> {
 
 
+    List<Task> queryTaskListByFormDataId(@Param("formDataId") String formDataId);
+
     List<Task> queryBatchList(@Param("projectId") String projectId, @Param("contractId") String contractId);
     List<Task> queryBatchList(@Param("projectId") String projectId, @Param("contractId") String contractId);
 
 
 }
 }

+ 4 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/TaskMapper.xml

@@ -30,6 +30,10 @@
         <result column="approval_type" property="approvalType"/>
         <result column="approval_type" property="approvalType"/>
     </resultMap>
     </resultMap>
 
 
+    <select id="queryTaskListByFormDataId" resultMap="taskResultMap">
+        select id,form_data_id,approval_type from u_task where form_data_id like #{formDataId} group by id
+    </select>
+
     <select id="queryBatchList" resultMap="taskResultMap">
     <select id="queryBatchList" resultMap="taskResultMap">
         select batch from u_task where is_deleted = 0 and project_id = #{projectId}
         select batch from u_task where is_deleted = 0 and project_id = #{projectId}
         <if test="contractId != null and contractId != ''">
         <if test="contractId != null and contractId != ''">

+ 13 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/ITaskService.java

@@ -31,10 +31,23 @@ import java.util.List;
  */
  */
 public interface ITaskService extends BaseService<Task> {
 public interface ITaskService extends BaseService<Task> {
 
 
+    List<Task> queryTaskListByFormDataId(String ids);
+
     List<Task> queryBatchList(String projectId, String contract);
     List<Task> queryBatchList(String projectId, String contract);
 
 
+    /**
+     * 提交审批
+     */
     Boolean completeApprovalTask(TaskApprovalVO taskApprovalVO);
     Boolean completeApprovalTask(TaskApprovalVO taskApprovalVO);
 
 
+    /**
+     * 启动流程
+     */
     Boolean startApproval(TaskVO vo);
     Boolean startApproval(TaskVO vo);
 
 
+    /**
+     * 主动废除
+     */
+    Boolean abolishTask(Task task);
+
 }
 }

+ 32 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -77,6 +77,38 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
 
 
     private final IArchiveFileService archiveFileService;
     private final IArchiveFileService archiveFileService;
 
 
+    @Override
+    public List<Task> queryTaskListByFormDataId(String ids) {
+//        String[] idArray = ids.split(",");
+//        return this.baseMapper.queryTaskListByFormDataId();
+        return null;
+    }
+
+    @Override
+    public Boolean abolishTask(Task task) {
+        //查询分支
+        List<TaskParallel> linkList = this.taskParallelService.list(Wrappers.<TaskParallel>lambdaQuery().eq(TaskParallel::getProcessInstanceId, task.getProcessInstanceId()));
+
+        //将所有分支流程执行结束
+        for(TaskParallel taskParallel : linkList){
+            //根据实例ID获取任务ID
+            String linkTaskId = this.newFlowClient.queryTaskIdByProcessInstanceId(taskParallel.getParallelProcessInstanceId());
+            if(StringUtils.isNotEmpty(linkTaskId)){
+                //结束分支流程
+                this.newFlowClient.completeApprovalTask(linkTaskId, taskParallel.getParallelProcessInstanceId(), "上报人主动废除");
+            }
+        }
+        //获取主流程的任务ID
+        String masterTaskId = this.newFlowClient.queryTaskIdByProcessInstanceId(task.getProcessInstanceId());
+        if(StringUtils.isNotEmpty(masterTaskId)){
+            //结束主流程
+            this.newFlowClient.completeApprovalTask(masterTaskId, task.getProcessInstanceId(), "上报人主动废除");
+            this.updateBusinessDataByFormDataId(task, 0);
+        }
+
+        return true;
+    }
+
     @Override
     @Override
     public List<Task> queryBatchList(String projectId, String contract) {
     public List<Task> queryBatchList(String projectId, String contract) {
         return this.baseMapper.queryBatchList(projectId, contract);
         return this.baseMapper.queryBatchList(projectId, contract);