Ver código fonte

11482-【CR】【投资系统】增加审批流程-流程审批记录表信息

hxy 3 meses atrás
pai
commit
52d3f88d57

+ 29 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/FlowBaseInfoController.java

@@ -0,0 +1,29 @@
+package com.ruoyi.web.controller.project;
+
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.invest.service.IFlowBaseInfoService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/project/flowBaseInfo")
+public class FlowBaseInfoController extends BaseController {
+    @Autowired
+    private IFlowBaseInfoService flowBaseInfoService;
+    /**
+     * 获取流程审批详细信息
+     */
+    @ApiOperation("获取流程详细信息")
+    @GetMapping(value = "/{procInstId}")
+    public TableDataInfo getInfo(@PathVariable("procInstId") String procInstId)
+    {
+        return getDataTable(flowBaseInfoService.searchFlowBaseInfoByProcInsId(procInstId));
+    }
+
+
+}

+ 14 - 0
ruoyi-flowable/src/main/java/com/ruoyi/flowable/common/enums/FlowStatusEnum.java

@@ -0,0 +1,14 @@
+package com.ruoyi.flowable.common.enums;
+
+public enum FlowStatusEnum {
+    /** 流程开始 */
+    STARTED,
+    /** 审批中 */
+    RUNNING,
+    /** 审批结束 */
+    ENDED;
+
+    public String getName(){
+        return this.name().toLowerCase();
+    }
+}

+ 31 - 0
ruoyi-system/src/main/java/com/ruoyi/invest/domain/FlowBaseInfo.java

@@ -0,0 +1,31 @@
+package com.ruoyi.invest.domain;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+public class FlowBaseInfo extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    private String id;
+    private String procDefId; // 流程部署id
+    private String procInsId; // 流程实例id
+    private String taskDefKey; // 任务定义id
+    private String taskName; // 任务名称
+    private String taskId; // 任务id
+    private boolean flag; // true - 同意; false - 驳回
+    private String comment; // 意见内容
+    private String createById; // 创建人LoginId
+    private String createBy; // 创建人
+    private String createDate; // 创建时间
+    private String formProperties; // 流程表单属性
+    private String status; // 状态, started : 开始; running : 审核中; ended : 审核结束
+    private String headImage; //人物头像
+    /*
+     * 与表单无关
+     */
+    //将comment 拆分  commentAudit commentReason
+    private String commentAudit;
+    private String commentReason;
+    private String workplace;
+}

+ 47 - 0
ruoyi-system/src/main/java/com/ruoyi/invest/mapper/FlowBaseInfoMapper.java

@@ -0,0 +1,47 @@
+package com.ruoyi.invest.mapper;
+
+import com.ruoyi.invest.domain.FlowBaseInfo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface FlowBaseInfoMapper {
+    /**
+     * 根据流程实例id查询流程审核过程信息
+     */
+    List<FlowBaseInfo> selectByProcInsId(String procInsId);
+    /**
+     * 根据流程实例id查询流程审核过程信息
+     */
+    List<FlowBaseInfo> selectByProcInsIdAndTaskDefKey(@Param("procInsId") String procInsId,
+                                                      @Param("taskDefKey") String taskDefKey);
+    /**
+     * 根据流程实例id查询最后一个审批的详情
+     */
+    FlowBaseInfo selectLasterByProcInsId(String procInsId);
+
+    /**
+     * 录入流程审核过程的相关信息
+     */
+    Integer insert(FlowBaseInfo flowBaseInfo);
+
+    /**
+     * 删除流程审核过程的相关信息
+     */
+    Integer delete(FlowBaseInfo flowBaseInfo);
+
+    Integer deleteByProAndtaskDefkey(@Param("flowBaseInfo") FlowBaseInfo flowBaseInfo);
+
+    Integer checkReStatus(@Param("flowBaseInfo") FlowBaseInfo flowBaseInfo);
+
+    /**
+     * 查询当前审批人节点
+     * @param procInsId
+     * @return
+     */
+    FlowBaseInfo selectCurrentApproval(String procInsId);
+
+    List<FlowBaseInfo> searchFlowBaseInfoByProcInsIdAndTaskName(@Param("procInsId") String procInsId, @Param("taskName") String taskName);
+    //查询最新财务审核节点审批人
+    String queryByFinance(@Param("procInsId")String procInsId);
+}

+ 114 - 0
ruoyi-system/src/main/java/com/ruoyi/invest/service/impl/FlowBaseInfoServiceImpl.java

@@ -0,0 +1,114 @@
+package com.ruoyi.invest.service.impl;
+
+import com.ruoyi.invest.domain.FlowBaseInfo;
+import com.ruoyi.invest.mapper.FlowBaseInfoMapper;
+import com.ruoyi.invest.service.IFlowBaseInfoService;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+
+import java.util.List;
+
+
+@Service
+public class FlowBaseInfoServiceImpl implements IFlowBaseInfoService {
+    @Autowired
+    private FlowBaseInfoMapper flowBaseInfoMapper;
+
+
+    /**
+     * 录入流程审核过程中的相关信息
+     */
+    @Override
+    public boolean addActivitiBaseInfo(FlowBaseInfo actBaseInfo) {
+
+        Integer effectCount = flowBaseInfoMapper.insert(actBaseInfo);
+
+        boolean addOk = effectCount != null && effectCount > 0 ? true : false;
+
+        return addOk;
+
+    }
+
+    /**
+     * 根据流程实例id获取流程审核过程中的相关信息
+     */
+    @Override
+    public List<FlowBaseInfo> searchFlowBaseInfoByProcInsId(String procInsId) {
+
+        List<FlowBaseInfo> lstActBaseInfo = flowBaseInfoMapper.selectByProcInsId(procInsId);
+
+        return lstActBaseInfo;
+    }
+
+    /**
+     * 根据实例Id 查询当前审批人
+     * @param procInsId
+     * @return
+     */
+    @Override
+    public FlowBaseInfo selectCurrentApproval(String procInsId){
+        return flowBaseInfoMapper.selectCurrentApproval(procInsId);
+    }
+    /**
+     * 根据流程实例id获取流程审核过程中的相关信息
+     */
+    @Override
+    public List<FlowBaseInfo> searchFlowBaseInfoByProcInsIdAndTaskDefKey(String procInsId, String taskDefKey) {
+
+        List<FlowBaseInfo> lstActBaseInfo = flowBaseInfoMapper.selectByProcInsIdAndTaskDefKey(procInsId,taskDefKey);
+
+        return lstActBaseInfo;
+    }
+
+    /**
+     * 删除流程审批过程中的相关信息
+     */
+    @Override
+    public boolean deleteFlowBaseInfo(FlowBaseInfo actBaseInfo) {
+
+        Integer effectCount = flowBaseInfoMapper.delete(actBaseInfo);
+
+        boolean delOk = effectCount != null && effectCount > 0 ? true : false;
+
+        return delOk;
+    }
+
+    /**
+     * 删除流程审批过程中的相关信息
+     */
+    @Override
+    public boolean deleteByProAndtaskDefkey(FlowBaseInfo actBaseInfo) {
+
+        Integer effectCount = flowBaseInfoMapper.deleteByProAndtaskDefkey(actBaseInfo);
+
+        boolean delOk = effectCount != null && effectCount > 0 ? true : false;
+
+        return delOk;
+    }
+
+
+
+
+
+
+    @Override
+    public Integer checkReStatus(FlowBaseInfo act) {
+        Integer check=flowBaseInfoMapper.checkReStatus(act);
+        return check;
+    }
+    @Override
+    public List<FlowBaseInfo> searchFlowBaseInfoByProcInsIdAndTaskName(String procInsId, String taskName) {
+        return flowBaseInfoMapper.searchFlowBaseInfoByProcInsIdAndTaskName(procInsId,taskName);
+    }
+    /**
+     * 根据实例Id 查询当前审批人
+     * @param procInsId
+     * @return
+     */
+    @Override
+    public FlowBaseInfo selectLasterByProcInsId(String procInsId){
+        return flowBaseInfoMapper.selectLasterByProcInsId(procInsId);
+    }
+}

+ 204 - 0
ruoyi-system/src/main/resources/mapper/invest/FlowBaseInfoMapper.xml

@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.invest.mapper.FlowBaseInfoMapper">
+    <resultMap id="baseResultMap" type="com.ruoyi.invest.domain.FlowBaseInfo" >
+	    <id column="id" property="id" jdbcType="VARCHAR" />
+	    <result column="procDefId" property="procDefId" jdbcType="VARCHAR" />
+	    <result column="procInsId" property="procInsId" jdbcType="VARCHAR" />
+	    <result column="taskDefKey" property="taskDefKey" jdbcType="VARCHAR" />
+	    <result column="taskName" property="taskName" jdbcType="VARCHAR" />
+	    <result column="taskId" property="taskId" jdbcType="VARCHAR" />
+	    <result column="flag" property="flag" jdbcType="BIT" />
+	    <result column="comment" property="comment" jdbcType="VARCHAR" />
+	    <result column="createBy" property="createBy" jdbcType="VARCHAR" />
+	    <result column="createDate" property="createDate" jdbcType="VARCHAR" />
+	    <result column="formProperties" property="formProperties" jdbcType="VARCHAR" />
+	    <result column="status" property="status" jdbcType="VARCHAR" />
+	</resultMap>
+    
+    <sql id="actBaseColumns">
+		a.id, 
+		a.procDefId, 
+		a.procInsId, 
+		a.taskDefKey, 
+		a.taskName, 
+		a.taskId, 
+		a.flag, 
+		a.comment, 
+		a.createBy, 
+		date_format(a.createDate, '%Y-%m-%d %H:%i:%S') as createDate, 
+		a.formProperties,
+		a.status
+	</sql>
+	
+	<resultMap id="ActUserResultMap" type="com.ruoyi.invest.domain.FlowBaseInfo" extends="baseResultMap">
+	  <result column="headImage" property="headImage" jdbcType="VARCHAR" />  
+  	</resultMap>  
+	
+    <select id="selectByProcInsId" resultMap="ActUserResultMap" >
+		SELECT
+		    a.id,
+			a.procDefId,
+			a.procInsId,
+			a.taskDefKey,
+			a.taskName,
+			a.taskId,
+			a.flag,
+			a.comment,
+			a.createBy as createById,
+			u.nick_name as createBy,
+			date_format(a.createDate, '%Y-%m-%d %H:%i:%S') as createDate,
+			a.formProperties,
+			a.status
+		FROM flow_base_info a
+		left join sys_user u on a.createBy = u.user_id
+		WHERE a.procInsId = #{procInsId} order by a.createDate asc
+	</select>
+
+	<select id="selectByProcInsIdAndTaskDefKey" resultMap="ActUserResultMap" >
+		SELECT
+			a.id,
+			a.procDefId,
+			a.procInsId,
+			a.taskDefKey,
+			a.taskName,
+			a.taskId,
+			a.flag,
+			a.comment,
+			a.createBy,
+			u.userName as createBy,
+			date_format(a.createDate, '%Y-%m-%d %H:%i:%S') as createDate,
+			a.formProperties,
+			a.status,
+			u.headImage
+		FROM flow_base_info a left join user_info u on a.createBy = u.loginId
+		WHERE a.procInsId = #{procInsId} and a.taskDefKey = #{taskDefKey}
+	</select>
+
+	<select id="selectLasterByProcInsId" resultMap="ActUserResultMap" >
+		SELECT
+			a.id,
+			a.procDefId,
+			a.procInsId,
+			a.taskDefKey,
+			a.taskName,
+			a.taskId,
+			a.flag,
+			a.comment,
+			a.createBy,
+			date_format(a.createDate, '%Y-%m-%d %H:%i:%S') as createDate,
+			a.formProperties,
+			a.status
+		FROM flow_base_info a
+		WHERE a.procInsId = #{procInsId} order by a.createDate desc limit 0,1
+	</select>
+	
+	<insert id="insert">
+		INSERT INTO flow_base_info(
+			id, 
+			procDefId, 
+			procInsId, 
+			taskDefKey, 
+			taskName, 
+			taskId, 
+			flag, 
+			comment, 
+			createBy, 
+			createDate, 
+			formProperties,
+			status
+		) VALUES (
+			#{id}, 
+			#{procDefId}, 
+			#{procInsId}, 
+			#{taskDefKey}, 
+			#{taskName}, 
+			#{taskId}, 
+			#{flag}, 
+			#{comment}, 
+			#{createBy}, 
+			now(), 
+			#{formProperties},
+			#{status}
+		)
+	</insert>
+	
+	<delete id="delete">
+		delete from flow_base_info where procInsId=#{procInsId}
+	</delete>
+	
+	<delete id="deleteByProAndtaskDefkey">
+			  delete 
+				from 
+				flow_base_info 
+				where 
+				id in (
+			 	 	select i.id id  from (
+						select id from flow_base_info
+						where 
+						procInsId=#{actBaseInfo.procInsId} 
+						and taskDefKey=#{actBaseInfo.taskDefKey}
+						ORDER BY createDate DESC
+						LIMIT 1
+					) i
+				)	
+	</delete>
+	
+	<select id="checkReStatus" resultType="java.lang.Integer">
+			select
+			 CASE
+ 			 WHEN ac.taskDefKey is null THEN
+     		 '0'
+   			 WHEN ac.taskDefKey = 'startevent1' THEN
+    		  '0'
+   			 WHEN ac.taskDefKey = 'modifyApply' THEN
+      		  '0'
+   			 ELSE
+     		 '1'
+			END  restatus
+			from flow_base_info ac 
+			where ac.procInsId=#{actBaseInfo.procInsId} 
+			ORDER BY createDate DESC
+			LIMIT 1
+	</select>
+	<select id="selectCurrentApproval" resultType="com.ruoyi.invest.domain.FlowBaseInfo">
+		SELECT
+         id,
+         t.PROC_DEF_ID_ AS procDefId,
+         t.PROC_INST_ID_ AS procInsId,
+         t.TASK_DEF_KEY_ AS taskDefKey,
+         t.NAME_ AS taskName,
+         t.ID_ AS taskId,
+			  u.userName as createBy,
+			date_format(t.CREATE_TIME_, '%Y-%m-%d %H:%i:%S') as createDate,
+			u.headImage
+    FROM ACT_RU_TASK t
+    left join user_info u on t.ASSIGNEE_ = u.loginId
+   WHERE t.PROC_INST_ID_=#{procInsId}
+	</select>
+
+
+	<select id="searchFlowBaseInfoByProcInsIdAndTaskName" resultMap="ActUserResultMap" >
+		SELECT
+			a.id,
+			a.procDefId,
+			a.procInsId,
+			a.taskDefKey,
+			a.taskName,
+			a.taskId,
+			a.flag,
+			a.comment,
+			a.createBy,
+			date_format(a.createDate, '%Y-%m-%d %H:%i:%S') as createDate,
+			a.formProperties,
+			a.status
+		FROM flow_base_info a
+		WHERE a.procInsId = #{procInsId} and a.taskName like CONCAT('%',#{taskName},'%')
+	</select>
+	<select id="queryByFinance" resultType="java.lang.String">
+		 SELECT createBy FROM flow_base_info
+		 where procInsId=#{procInsId} and taskDefKey='finance'
+		 ORDER BY createDate desc
+		 LIMIT 1
+	</select>
+</mapper>

+ 9 - 0
ruoyi-ui/src/api/project/flowBase.js

@@ -0,0 +1,9 @@
+import request from '@/utils/request'
+
+// 流程信息
+export function getFlowBaseInfo(procInstId) {
+  return request({
+    url: `/project/flowBaseInfo/`+procInstId,
+    method: 'get'
+  })
+}

+ 85 - 0
ruoyi-ui/src/views/project/flowBase.vue

@@ -0,0 +1,85 @@
+<template>
+  <div class="approval-table">
+    <table border="1" cellpadding="8" cellspacing="0">
+      <thead>
+      <tr>
+        <th>节点名称</th>
+        <th>审批人</th>
+        <th>审批结果</th>
+        <th>审批时间</th>
+      </tr>
+      </thead>
+      <tbody>
+      <tr v-for="(item, index) in approvalData" :key="index">
+        <td>{{ item.taskName }}</td>
+        <td>{{ item.createBy }}</td>
+        <td>{{ item.comment }}</td>
+        <td>{{ item.createDate }}</td>
+      </tr>
+      </tbody>
+    </table>
+  </div>
+</template>
+
+<script>
+import axios from 'axios';
+import {getFlowBaseInfo} from "../../api/project/flowBase";
+
+export default {
+  props: {
+    procInstId: {
+      type: String,
+      /*required: true*/
+    }
+  },
+  data() {
+    return {
+      approvalData: []
+    };
+  },
+  created() {
+    // 组件创建时调用接口获取数据
+    this.fetchApprovalData();
+  },
+  methods: {
+    fetchApprovalData() {
+      // 假设接口地址为 /api/approvalData,参数为 processId
+      getFlowBaseInfo(this.procInstId)
+        .then(response => {
+          this.approvalData = response.rows;
+          console.log('接收到的 信息:', response.rows);
+        })
+        .catch(error => {
+          console.error('获取审批数据失败:', error);
+        });
+    }
+  }
+};
+</script>
+
+<style scoped>
+.approval-table {
+  margin-top: 20px;
+  width: 100%;
+  border-collapse: collapse;
+  margin-bottom: 20px;
+}
+.approval-table th,
+.approval-table td {
+  border: 1px solid #ccc;
+  padding: 8px 10px;
+}
+table {
+  width: 100%;
+  border-collapse: collapse;
+}
+th, td {
+  text-align: center;
+  /* 复用 Element UI 的文本颜色 */
+  color: var(--el-text-color-regular, #606266);
+  /* 复用 Element UI 的边框颜色 */
+  border-color: var(--el-border-color, #dcdfe6);
+  /* 其他继承样式(如字体大小、粗细)可按需加 */
+  font-weight: var(--el-font-weight-regular, 400);
+}
+</style>