Quellcode durchsuchen

优化审批流程表单

hubin vor 1 Jahr
Ursprung
Commit
584fa751c2

+ 8 - 4
src/main/java/com/aizuda/boot/modules/flw/controller/ProcessTaskController.java

@@ -5,10 +5,7 @@ import com.aizuda.boot.modules.flw.entity.dto.AssigneeTaskDTO;
 import com.aizuda.boot.modules.flw.entity.dto.ExecuteTaskDTO;
 import com.aizuda.boot.modules.flw.entity.dto.ProcessTaskDTO;
 import com.aizuda.boot.modules.flw.entity.dto.RejectTaskDTO;
-import com.aizuda.boot.modules.flw.entity.vo.FlwHisTaskVO;
-import com.aizuda.boot.modules.flw.entity.vo.PendingApprovalTaskVO;
-import com.aizuda.boot.modules.flw.entity.vo.PendingClaimTaskVO;
-import com.aizuda.boot.modules.flw.entity.vo.ProcessTaskVO;
+import com.aizuda.boot.modules.flw.entity.vo.*;
 import com.aizuda.boot.modules.flw.service.IProcessTaskService;
 import com.aizuda.core.api.ApiController;
 import com.aizuda.core.api.PageParam;
@@ -70,6 +67,13 @@ public class ProcessTaskController extends ApiController {
         return processTaskService.pageApproved(pageParam);
     }
 
+    @Operation(summary = "审批信息")
+    @Permission("flw:processTask:viewed")
+    @PostMapping("/approval-info-{taskId}")
+    public TaskApprovalVO approvalInfo(@PathVariable("taskId") Long taskId) {
+        return processTaskService.approvalInfo(taskId);
+    }
+
     @Operation(summary = "设置已阅读")
     @Permission("flw:processTask:viewed")
     @PostMapping("/viewed-{taskId}")

+ 42 - 0
src/main/java/com/aizuda/boot/modules/flw/entity/vo/TaskApprovalVO.java

@@ -0,0 +1,42 @@
+package com.aizuda.boot.modules.flw.entity.vo;
+
+import com.aizuda.boot.modules.flw.entity.FlwProcessApproval;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 任务审批 VO
+ *
+ * @author 青苗
+ * @since 2024-03-03
+ */
+@Getter
+@Setter
+public class TaskApprovalVO {
+
+    @Schema(description = "任务ID")
+    private Long taskId;
+
+    @Schema(description = "创建ID")
+    private String createId;
+
+    @Schema(description = "创建人")
+    private String createBy;
+
+    @Schema(description = "创建时间")
+    private Date createTime;
+
+    @Schema(description = "表单内容")
+    private String formContent;
+
+    @Schema(description = "表单权限配置")
+    private String formConfig;
+
+    @Schema(description = "流程审批记录列表")
+    private List<FlwProcessApproval> processApprovals;
+
+}

+ 8 - 0
src/main/java/com/aizuda/boot/modules/flw/service/IFlwProcessApprovalService.java

@@ -4,6 +4,8 @@ import com.aizuda.boot.modules.flw.entity.FlwProcessApproval;
 import com.aizuda.service.service.IBaseService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
+import java.util.List;
+
 /**
  * 流程审批记录 服务类
  *
@@ -14,4 +16,10 @@ public interface IFlwProcessApprovalService extends IBaseService<FlwProcessAppro
 
     Page<FlwProcessApproval> page(Page<FlwProcessApproval> page, FlwProcessApproval flwProcessApproval);
 
+    /**
+     * 根据流程实例ID查询审批记录列表
+     *
+     * @param instanceId 流程实例ID
+     */
+    List<FlwProcessApproval> listByInstanceId(Long instanceId);
 }

+ 8 - 4
src/main/java/com/aizuda/boot/modules/flw/service/IProcessTaskService.java

@@ -4,10 +4,7 @@ import com.aizuda.boot.modules.flw.entity.dto.AssigneeTaskDTO;
 import com.aizuda.boot.modules.flw.entity.dto.ExecuteTaskDTO;
 import com.aizuda.boot.modules.flw.entity.dto.ProcessTaskDTO;
 import com.aizuda.boot.modules.flw.entity.dto.RejectTaskDTO;
-import com.aizuda.boot.modules.flw.entity.vo.FlwHisTaskVO;
-import com.aizuda.boot.modules.flw.entity.vo.PendingApprovalTaskVO;
-import com.aizuda.boot.modules.flw.entity.vo.PendingClaimTaskVO;
-import com.aizuda.boot.modules.flw.entity.vo.ProcessTaskVO;
+import com.aizuda.boot.modules.flw.entity.vo.*;
 import com.aizuda.core.api.PageParam;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.flowlong.bpm.engine.core.FlowCreator;
@@ -47,6 +44,13 @@ public interface IProcessTaskService {
      */
     Page<ProcessTaskVO> pageApproved(PageParam<ProcessTaskDTO> pageParam);
 
+    /**
+     * 审批信息
+     *
+     * @param taskId 任务ID
+     */
+    TaskApprovalVO approvalInfo(Long taskId);
+
     /**
      * 设置任务为已阅状态
      *

+ 4 - 3
src/main/java/com/aizuda/boot/modules/flw/service/impl/FlwProcessApprovalServiceImpl.java

@@ -10,6 +10,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 流程审批记录 服务实现类
  *
@@ -26,8 +28,7 @@ public class FlwProcessApprovalServiceImpl extends BaseServiceImpl<FlwProcessApp
     }
 
     @Override
-    public boolean updateById(FlwProcessApproval flwProcessApproval) {
-        ApiAssert.fail(null == flwProcessApproval.getId(), "主键不存在无法更新");
-        return super.updateById(flwProcessApproval);
+    public List<FlwProcessApproval> listByInstanceId(Long instanceId) {
+        return lambdaQuery().eq(FlwProcessApproval::getInstanceId, instanceId).list();
     }
 }

+ 37 - 1
src/main/java/com/aizuda/boot/modules/flw/service/impl/ProcessTaskServiceImpl.java

@@ -6,6 +6,7 @@ import com.aizuda.boot.modules.flw.entity.dto.ProcessTaskDTO;
 import com.aizuda.boot.modules.flw.entity.dto.RejectTaskDTO;
 import com.aizuda.boot.modules.flw.entity.vo.*;
 import com.aizuda.boot.modules.flw.mapper.FlowlongMapper;
+import com.aizuda.boot.modules.flw.service.IFlwProcessApprovalService;
 import com.aizuda.boot.modules.flw.service.IProcessTaskService;
 import com.aizuda.core.api.ApiAssert;
 import com.aizuda.core.api.PageParam;
@@ -14,15 +15,21 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.flowlong.bpm.engine.FlowLongEngine;
 import com.flowlong.bpm.engine.TaskService;
 import com.flowlong.bpm.engine.core.FlowCreator;
+import com.flowlong.bpm.engine.entity.FlwExtInstance;
 import com.flowlong.bpm.engine.entity.FlwTask;
 import com.flowlong.bpm.engine.entity.FlwTaskActor;
+import com.flowlong.bpm.engine.model.NodeModel;
+import com.flowlong.bpm.engine.model.ProcessModel;
+import com.flowlong.bpm.mybatisplus.mapper.FlwExtInstanceMapper;
 import com.flowlong.bpm.mybatisplus.mapper.FlwHisTaskActorMapper;
+import com.flowlong.bpm.mybatisplus.mapper.FlwTaskMapper;
 import jakarta.annotation.Resource;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.stream.Collectors;
 
@@ -37,9 +44,13 @@ public class ProcessTaskServiceImpl implements IProcessTaskService {
     @Resource
     private FlowlongMapper flowlongMapper;
     @Resource
-    private FlwHisTaskActorMapper flwHisTaskActorMapper;
+    private FlwTaskMapper flwTaskMapper;
+    @Resource
+    private FlwExtInstanceMapper extInstanceMapper;
     @Resource
     private FlowLongEngine flowLongEngine;
+    @Resource
+    private IFlwProcessApprovalService flwProcessApprovalService;
 
     @Override
     public Page<PendingClaimTaskVO> pagePendingClaim(PageParam<ProcessTaskDTO> pageParam) {
@@ -71,6 +82,31 @@ public class ProcessTaskServiceImpl implements IProcessTaskService {
         return flowlongMapper.selectPageApproved(pageParam.page(), dto);
     }
 
+    @Override
+    public TaskApprovalVO approvalInfo(Long taskId) {
+        FlwTask flwTask = flwTaskMapper.selectById(taskId);
+        if (null != flwTask) {
+            return null;
+        }
+        TaskApprovalVO vo = new TaskApprovalVO();
+        vo.setTaskId(taskId);
+        vo.setCreateId(flwTask.getCreateId());
+        vo.setCreateBy(flwTask.getCreateBy());
+        vo.setCreateTime(flwTask.getCreateTime());
+        FlwExtInstance flwExtInstance = extInstanceMapper.selectById(flwTask.getInstanceId());
+        ProcessModel processModel = flwExtInstance.model();
+        NodeModel nodeModel = processModel.getNode(flwTask.getTaskName());
+        Map<String, Object> extendConfig = nodeModel.getExtendConfig();
+        if (null != extendConfig) {
+            Object formConfig = extendConfig.get("formConfig");
+            if (null != formConfig) {
+                vo.setFormConfig((String) formConfig);
+            }
+        }
+        vo.setProcessApprovals(flwProcessApprovalService.listByInstanceId(flwTask.getInstanceId()));
+        return vo;
+    }
+
     @Override
     public boolean viewed(Long taskId, FlowCreator flowCreator) {
         return flowLongEngine.taskService().viewTask(taskId, FlwTaskActor.ofFlowCreator(flowCreator));