Browse Source

新增流程任务认领审批相关分页列表接口

hubin 1 year ago
parent
commit
3d3f50e9eb

+ 29 - 1
src/main/java/com/aizuda/boot/modules/flw/controller/ProcessTaskController.java

@@ -28,10 +28,38 @@ import org.springframework.web.bind.annotation.RestController;
 public class ProcessTaskController extends ApiController {
     private IProcessTaskService processTaskService;
 
+    @Operation(summary = "待认领任务分页列表")
+    @Permission("flw:processTask:pagePendingClaim")
+    @PostMapping("/page-pending-claim")
+    public Page<ProcessTaskVO> pagePendingClaim(@RequestBody PageParam<ProcessTaskDTO> pageParam) {
+        return processTaskService.pagePendingClaim(pageParam);
+    }
+
+    @Operation(summary = "待审批任务分页列表")
+    @Permission("flw:processTask:pagePendingApproval")
+    @PostMapping("/page-pending-approval")
+    public Page<ProcessTaskVO> pagePendingApproval(@RequestBody PageParam<ProcessTaskDTO> pageParam) {
+        return processTaskService.pagePendingApproval(pageParam);
+    }
+
     @Operation(summary = "我收到的任务分页列表")
     @Permission("flw:processTask:pageMyReceived")
-    @PostMapping("/page")
+    @PostMapping("/page-my-received")
     public Page<ProcessTaskVO> pageMyReceived(@RequestBody PageParam<ProcessTaskDTO> pageParam) {
         return processTaskService.pageMyReceived(pageParam);
     }
+
+    @Operation(summary = "我的申请任务分页列表")
+    @Permission("flw:processTask:pageMyApplication")
+    @PostMapping("/page-my-application")
+    public Page<ProcessTaskVO> pageMyApplication(@RequestBody PageParam<ProcessTaskDTO> pageParam) {
+        return processTaskService.pageMyApplication(pageParam);
+    }
+
+    @Operation(summary = "已审批任务分页列表")
+    @Permission("flw:processTask:pageApproved")
+    @PostMapping("/page-approved")
+    public Page<ProcessTaskVO> pageApproved(@RequestBody PageParam<ProcessTaskDTO> pageParam) {
+        return processTaskService.pageApproved(pageParam);
+    }
 }

+ 6 - 0
src/main/java/com/aizuda/boot/modules/flw/entity/vo/ProcessTaskVO.java

@@ -28,6 +28,12 @@ public class ProcessTaskVO {
     @Schema(description = "当前状态")
     private Integer instanceState;
 
+    @Schema(description = "当前任务ID")
+    private Long taskId;;
+
+    @Schema(description = "当前任务名称")
+    private String taskName;
+
     @Schema(description = "发起人ID")
     private String createId;
 

+ 20 - 0
src/main/java/com/aizuda/boot/modules/flw/mapper/FlowlongMapper.java

@@ -14,9 +14,29 @@ public interface FlowlongMapper {
 
     List<FlwProcessVO> selectFlwProcessList();
 
+    /**
+     * 待认领任务分页列表
+     */
+    Page<ProcessTaskVO> selectPagePendingClaim(Page page, @Param("dto") ProcessTaskDTO dto);
+
+    /**
+     * 待审批任务分页列表
+     */
+    Page<ProcessTaskVO> selectPagePendingApproval(Page page, @Param("dto") ProcessTaskDTO dto);
+
+    /**
+     * 我的申请任务分页列表
+     */
+    Page<ProcessTaskVO> selectPageMyApplication(Page page, @Param("dto") ProcessTaskDTO dto);
+
     /**
      * 我收到的任务分页列表
      */
     Page<ProcessTaskVO> selectPageMyReceived(Page page, @Param("dto") ProcessTaskDTO dto);
 
+    /**
+     * 已审批任务分页列表
+     */
+    Page<ProcessTaskVO> selectPageApproved(Page page, @Param("dto") ProcessTaskDTO dto);
+
 }

+ 20 - 0
src/main/java/com/aizuda/boot/modules/flw/service/IProcessTaskService.java

@@ -13,8 +13,28 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  */
 public interface IProcessTaskService {
 
+    /**
+     * 待认领任务分页列表
+     */
+    Page<ProcessTaskVO> pagePendingClaim(PageParam<ProcessTaskDTO> pageParam);
+
+    /**
+     * 待审批任务分页列表
+     */
+    Page<ProcessTaskVO> pagePendingApproval(PageParam<ProcessTaskDTO> pageParam);
+
+    /**
+     * 我的申请任务分页列表
+     */
+    Page<ProcessTaskVO> pageMyApplication(PageParam<ProcessTaskDTO> pageParam);
+
     /**
      * 我收到的任务分页列表
      */
     Page<ProcessTaskVO> pageMyReceived(PageParam<ProcessTaskDTO> pageParam);
+
+    /**
+     * 已审批任务分页列表
+     */
+    Page<ProcessTaskVO> pageApproved(PageParam<ProcessTaskDTO> pageParam);
 }

+ 34 - 2
src/main/java/com/aizuda/boot/modules/flw/service/impl/ProcessTaskServiceImpl.java

@@ -21,14 +21,46 @@ public class ProcessTaskServiceImpl implements IProcessTaskService {
     @Resource
     private FlowlongMapper flowlongMapper;
 
+    @Override
+    public Page<ProcessTaskVO> pagePendingClaim(PageParam<ProcessTaskDTO> pageParam) {
+        ProcessTaskDTO dto = this.getProcessTaskDTO(pageParam);
+        return flowlongMapper.selectPagePendingClaim(pageParam.page(), dto);
+    }
+
+    @Override
+    public Page<ProcessTaskVO> pagePendingApproval(PageParam<ProcessTaskDTO> pageParam) {
+        ProcessTaskDTO dto = this.getProcessTaskDTO(pageParam);
+        return flowlongMapper.selectPagePendingApproval(pageParam.page(), dto);
+    }
+
+    @Override
+    public Page<ProcessTaskVO> pageMyApplication(PageParam<ProcessTaskDTO> pageParam) {
+        ProcessTaskDTO dto = this.getProcessTaskDTO(pageParam);
+        return flowlongMapper.selectPageMyApplication(pageParam.page(), dto);
+    }
+
     @Override
     public Page<ProcessTaskVO> pageMyReceived(PageParam<ProcessTaskDTO> pageParam) {
+        ProcessTaskDTO dto = this.getProcessTaskDTO(pageParam);
+        return flowlongMapper.selectPageMyReceived(pageParam.page(), dto);
+    }
+
+    @Override
+    public Page<ProcessTaskVO> pageApproved(PageParam<ProcessTaskDTO> pageParam) {
+        ProcessTaskDTO dto = this.getProcessTaskDTO(pageParam);
+        return flowlongMapper.selectPageApproved(pageParam.page(), dto);
+    }
+
+    /**
+     * 获取流程任务DTO
+     */
+    private ProcessTaskDTO getProcessTaskDTO(PageParam<ProcessTaskDTO> pageParam) {
         ProcessTaskDTO dto = pageParam.getData();
-        if(null == dto) {
+        if (null == dto) {
             dto = new ProcessTaskDTO();
         }
         UserSession userSession = UserSession.getLoginInfo();
         dto.setCreateId(userSession.getUserId());
-        return flowlongMapper.selectPageMyReceived(pageParam.page(), dto);
+        return dto;
     }
 }

+ 42 - 3
src/main/resources/mapper/FlowlongMapper.xml

@@ -7,11 +7,50 @@
                t1.process_state,t1.sort AS process_sort FROM flw_process t1 JOIN  flw_process_configure t2 ON t1.id=t2.process_id
     </select>
 
+    <select id="selectPagePendingClaim" resultType="com.aizuda.boot.modules.flw.entity.vo.ProcessTaskVO">
+        SELECT i.process_id,p.process_name,i.id AS instance_id,i.instance_state,t.id AS task_id,t.task_name,i.create_id,i.create_by,i.create_time
+        FROM flw_task t JOIN flw_task_actor a ON t.id=a.task_id LEFT JOIN flw_his_instance i ON i.id=t.instance_id LEFT JOIN flw_process p ON i.process_id=p.id
+        WHERE a.id IN (SELECT f.id FROM flw_task_actor f JOIN sys_user_role r ON r.role_id::TEXT=f.actor_id WHERE f.actor_type=1 AND f.actor_id=#{dto.createId}
+        UNION ALL SELECT f.id FROM flw_task_actor f JOIN sys_user_department r ON r.department_id::TEXT=f.actor_id WHERE f.actor_type=2 AND f.actor_id=#{dto.createId})
+        <if test="dto.processName != null">
+            AND p.process_name LIKE CONCAT(CONCAT('%',#{dto.processName}),'%')
+        </if>
+    </select>
+
+    <select id="selectPagePendingApproval" resultType="com.aizuda.boot.modules.flw.entity.vo.ProcessTaskVO">
+        SELECT i.process_id,p.process_name,i.id AS instance_id,i.instance_state,t.id AS task_id,t.task_name,i.create_id,i.create_by,i.create_time
+        FROM flw_task t JOIN flw_task_actor a ON t.id=a.task_id LEFT JOIN flw_his_instance i ON i.id=t.instance_id LEFT JOIN flw_process p ON i.process_id=p.id
+        WHERE a.actor_type=0 AND a.actor_id=#{dto.createId}
+        <if test="dto.processName != null">
+            AND p.process_name LIKE CONCAT(CONCAT('%',#{dto.processName}),'%')
+        </if>
+    </select>
+
+    <select id="selectPageMyApplication" resultType="com.aizuda.boot.modules.flw.entity.vo.ProcessTaskVO">
+        SELECT i.process_id,p.process_name,i.id AS instance_id,i.instance_state,i.create_id,i.create_by,i.create_time
+        FROM flw_his_instance i LEFT JOIN flw_process p ON i.process_id=p.id
+        WHERE i.create_id=#{dto.createId}
+        <if test="dto.processName != null">
+            AND p.process_name LIKE CONCAT(CONCAT('%',#{dto.processName}),'%')
+        </if>
+    </select>
+
     <select id="selectPageMyReceived" resultType="com.aizuda.boot.modules.flw.entity.vo.ProcessTaskVO">
-        SELECT i.process_id,p.process_name,c.instance_id,i.instance_state,i.create_id,i.create_by,i.create_time FROM flw_his_instance i JOIN flw_task_cc c ON c.instance_id=i.id
-        LEFT JOIN flw_process p ON i.process_id=p.id WHERE c.create_id=#{dto.createId}
+        SELECT i.process_id,p.process_name,i.id AS instance_id,i.instance_state,i.create_id,i.create_by,i.create_time
+        FROM flw_his_instance i LEFT JOIN flw_process p ON i.process_id=p.id
+        WHERE EXISTS (SELECT 1 FROM flw_task_cc c WHERE i.id=c.instance_id)
+        <if test="dto.processName != null">
+            AND p.process_name LIKE CONCAT(CONCAT('%',#{dto.processName}),'%')
+        </if>
+    </select>
+
+    <select id="selectPageApproved" resultType="com.aizuda.boot.modules.flw.entity.vo.ProcessTaskVO">
+        SELECT i.process_id,p.process_name,i.id AS instance_id,i.instance_state,i.create_id,i.create_by,i.create_time
+        FROM flw_his_instance i LEFT JOIN flw_process p ON i.process_id=p.id
+        WHERE EXISTS (SELECT 1 FROM flw_his_task c WHERE i.id=c.instance_id)
         <if test="dto.processName != null">
-            AND c.process_name LIKE CONCAT(CONCAT('%',#{dto.processName}),'%')
+            AND p.process_name LIKE CONCAT(CONCAT('%',#{dto.processName}),'%')
         </if>
     </select>
+
 </mapper>