瀏覽代碼

11482-【CR】【投资系统】增加审批流程-背调流程中的指定审批人

hxy 1 月之前
父節點
當前提交
55c0a90594

+ 111 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ApproveUserController.java

@@ -0,0 +1,111 @@
+package com.ruoyi.web.controller.system;
+
+
+import com.ruoyi.common.core.controller.BaseController;
+
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+import com.ruoyi.common.utils.StringUtils;
+
+import com.ruoyi.system.domain.ApproveUser;
+import com.ruoyi.system.service.*;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+
+import org.springframework.web.bind.annotation.*;
+
+
+import java.util.*;
+
+/**
+ * 审批用户信息
+ * 
+ * @author ruoyi
+ */
+@RestController
+@RequestMapping("/system/approve")
+public class ApproveUserController extends BaseController
+{
+    @Autowired
+    private IApproveUserService approveUserService;
+
+    @Autowired
+    private ISysUserService sysUserService;
+
+
+    /**
+     * 获取审批用户列表
+     */
+    /*@PreAuthorize(`@ss.hasRole('admin')`)*/
+    @GetMapping("/list")
+    public TableDataInfo list(ApproveUser user)
+    {
+        startPage();
+        List<ApproveUser> list = approveUserService.selectApproveUserList(user);
+        return getDataTable(list);
+    }
+    @GetMapping("/findApproveUser")
+    public TableDataInfo findApproveUser()
+    {
+        startPage();
+        List<String> list = approveUserService.findApproveUser();
+        return getDataTable(list);
+    }
+
+
+    /**
+     * 保存指定审批人员
+     * @param approveUser
+     * @return
+     */
+    //@PreAuthorize("@ss.hasRole('admin')")
+    @RequestMapping("saveApproveUser")
+    @ResponseBody
+    public Map<String,Object> saveApproveUser(@RequestBody ApproveUser approveUser){
+        Map<String, Object> map = new HashMap<String, Object>();
+        List<String> aUser=new ArrayList<>();
+        if (StringUtils.isNotBlank(approveUser.getUserId())) {
+           aUser= Arrays.asList(approveUser.getUserId().split(","));
+        }
+        try{
+            if(aUser!=null && aUser.size()>0 ) {
+                //删除
+
+                /*customerService.deleteApproveUserByDeptId("c8ee487b711611e7b45f484d7e9932ef");
+                customerService.deleteApproveUserByDeptId("c940fc99711611e7b45f484d7e9932ef");
+                customerService.deleteApproveUserByDeptId("4ebf66d4711611e7b45f484d7e9932ef");*/
+//				customerService.deleteApproveUserByCompanyId(company);
+//				List<ApproveUser> list=customerService.selectApproveUseraByCompanyId(company);
+                List<ApproveUser> aus = new ArrayList<>();
+                for (String s : aUser) {
+                    approveUserService.deleteApproveUserByUserId(s);
+                    SysUser sysUser=sysUserService.selectUserById(Long.parseLong(s));
+                    ApproveUser au = new ApproveUser();
+
+                    au.setUserId(s);
+                    au.setLoginId(sysUser.getUserName());
+                    //au.setDeptName(sysUser.getDept());
+                    au.setDeptId(sysUser.getDeptId().toString());
+                    aus.add(au);
+                }
+                if(aus.size()>0){
+                    approveUserService.insertApproveUsers(aus);
+                }
+                map.put("status", true);
+                map.put("msg", "保存成功!");
+            }else{
+                map.put("status", false);
+                map.put("msg", "保存失败!");
+            }
+        }catch(Exception e){
+            e.printStackTrace();
+            map.put("status", false);
+            map.put("msg", "保存失败!");
+        }
+
+        return map;
+    }
+
+}

+ 22 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/ApproveUser.java

@@ -0,0 +1,22 @@
+package com.ruoyi.system.domain;
+
+
+import com.ruoyi.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 审批用户对象 approve_user
+ * 
+ * @author ruoyi
+ */
+@Data
+public class ApproveUser extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+    private Integer id;
+    private String userId;
+    private String loginId;
+    private String deptId;
+    private String deptName;
+
+}

+ 43 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/ApproveUserMapper.java

@@ -0,0 +1,43 @@
+package com.ruoyi.system.mapper;
+
+
+import com.ruoyi.system.domain.ApproveUser;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+
+
+/**
+ * 用户表 数据层
+ * 
+ * @author ruoyi
+ */
+public interface ApproveUserMapper
+{
+
+    /**
+     * 新增用户信息
+     * 
+     * @param user 用户信息
+     * @return 结果
+     */
+    public int insertApproveUsers(@Param("aus")List<ApproveUser> user);
+
+    /**
+     * 修改用户信息
+     * 
+     * @param user 用户信息
+     * @return 结果
+     */
+    public int updateApproveUsers(@Param("aus")List<ApproveUser> user);
+
+    List<ApproveUser> selectApproveUserList(ApproveUser user);
+    List<String> findApproveUser();
+    List<String> findApproveUserByDeptId(@Param("deptId")String deptId);
+    void deleteApproveUserByUserId(@Param("userId")String userId);
+    void deleteApproveUserByDeptId(@Param("deptId")String deptId);
+
+
+
+}

+ 46 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IApproveUserService.java

@@ -0,0 +1,46 @@
+package com.ruoyi.system.service;
+
+
+import com.ruoyi.system.domain.ApproveUser;
+
+import java.util.List;
+
+/**
+ * 审批用户 业务层
+ * 
+ * @author ruoyi
+ */
+public interface IApproveUserService
+{
+    /**
+     * 根据条件分页查询用户列表
+     * 
+     * @param user 用户信息
+     * @return 用户信息集合信息
+     */
+    public List<ApproveUser> selectApproveUserList(ApproveUser user);
+
+    /**
+     * 新增用户信息
+     * 
+     * @param user 用户信息
+     * @return 结果
+     */
+    public int insertApproveUsers(List<ApproveUser> user);
+
+
+
+    /**
+     * 修改用户信息
+     * 
+     * @param user 用户信息
+     * @return 结果
+     */
+    public int updateApproveUsers(List<ApproveUser> user);
+    List<String> findApproveUser();
+    List<String> findApproveUserByDeptId(String deptId);
+    void deleteApproveUserByUserId(String userId);
+    void deleteApproveUserByDeptId(String deptId);
+
+
+}

+ 78 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ApproveUserServiceImpl.java

@@ -0,0 +1,78 @@
+package com.ruoyi.system.service.impl;
+
+import com.ruoyi.common.annotation.DataScope;
+import com.ruoyi.common.constant.UserConstants;
+import com.ruoyi.common.core.domain.entity.SysRole;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.bean.BeanValidators;
+import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.system.domain.*;
+import com.ruoyi.system.mapper.*;
+import com.ruoyi.system.service.IApproveUserService;
+import com.ruoyi.system.service.ISysConfigService;
+import com.ruoyi.system.service.ISysUserService;
+import org.apache.ibatis.annotations.Param;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import javax.validation.Validator;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 用户 业务层处理
+ * 
+ * @author ruoyi
+ */
+@Service
+public class ApproveUserServiceImpl implements IApproveUserService {
+    private static final Logger log = LoggerFactory.getLogger(ApproveUserServiceImpl.class);
+
+    @Autowired
+    private ApproveUserMapper approveUserMapper;
+
+    /**
+     * 根据条件分页查询用户列表
+     *
+     * @param user 用户信息
+     * @return 用户信息集合信息
+     */
+    @Override
+    public List<ApproveUser> selectApproveUserList(ApproveUser user) {
+        return approveUserMapper.selectApproveUserList(user);
+    }
+    @Override
+    public int insertApproveUsers(List<ApproveUser> user) {
+        return approveUserMapper.insertApproveUsers(user);
+    }
+
+    @Override
+    public int updateApproveUsers(List<ApproveUser> user) {
+        return approveUserMapper.updateApproveUsers(user);
+    }
+   @Override
+    public void deleteApproveUserByUserId(String userId){
+        approveUserMapper.deleteApproveUserByUserId(userId);
+    }
+    @Override
+    public void deleteApproveUserByDeptId(String deptId){
+        approveUserMapper.deleteApproveUserByDeptId(deptId);
+    }
+    @Override
+    public List<String> findApproveUser(){
+        return approveUserMapper.findApproveUser();
+    }
+    @Override
+    public List<String> findApproveUserByDeptId(String deptId){
+        return approveUserMapper.findApproveUserByDeptId(deptId);
+
+    }
+}

+ 94 - 0
ruoyi-system/src/main/resources/mapper/system/ApproveUserMapper.xml

@@ -0,0 +1,94 @@
+<?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.system.mapper.ApproveUserMapper">
+
+    <resultMap type="ApproveUser" id="ApproveUserResult">
+		<id     property="id"       column="id"      />
+        <result property="userId"       column="user_id"      />
+		<result property="loginId"       column="login_id"      />
+        <result property="deptId"       column="dept_id"      />
+        <result property="deptName"     column="dept_name"    />
+    </resultMap>
+	<sql id="selectApproveUserVo">
+        select u.user_id,u.login_id u.dept_id, u.dept_name,
+        d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
+        r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
+        from approve_user u
+		    left join sys_dept d on u.dept_id = d.dept_id
+		    left join sys_user_role ur on u.user_id = ur.user_id
+		    left join sys_role r on r.role_id = ur.role_id
+    </sql>
+    
+    <select id="selectApproveUserList" parameterType="ApproveUser" resultMap="ApproveUserResult">
+		select u.user_id,u.login_id u.dept_id, u.dept_name,
+		from approve_user u
+		left join sys_dept d on u.dept_id = d.dept_id
+		where u.del_flag = '0'
+		<if test="userId != null and userId != 0">
+			AND u.user_id = #{userId}
+		</if>
+
+		<if test="deptId != null and deptId != 0">
+			AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId}, ancestors) ))
+		</if>
+	</select>
+	<insert id="insertApproveUsers" parameterType="java.util.List">
+		insert into approve_user(
+		user_id,
+		login_id,
+		dept_id,
+		dept_name
+		)
+		values
+		<foreach collection="aus" item="au" index="index" separator="," >
+			(
+			#{au.userId},
+			#{au.loginId},
+			#{au.deptId},
+			#{au.deptName}
+			)
+		</foreach>
+	</insert>
+
+
+	<update id="updateApproveUsers">
+		<foreach collection="aus" item="aus" index="index">
+			update  approve_user
+			<trim prefix="SET" suffixOverrides=",">
+				<if test="aus.userId != null and  aus.userId != ''">
+					uesr_id = #{aus.userId},
+				</if>
+				<if test="aus.user != null and  aus.loginId != ''">
+					login_id = #{aus.loginId},
+				</if>
+				<if test="aus.loginId != null and  aus.loginId != ''">
+					dept_id = #{aus.deptId},
+				</if>
+				<if test="aus.loginId != null and  aus.loginId != ''">
+					dept_name = #{aus.deptName}
+				</if>
+			</trim>
+			where
+			deptId=#{aus.deptId}
+		</foreach>
+	</update>
+	<select id="findApproveUser" resultType="java.lang.String">
+		select user_id from approve_user
+	</select>
+	<select id="findApproveUserByDeptId" resultType="java.lang.String">
+		select user_id from approve_user where dept_id=#{deptId}
+	</select>
+	<select id="deleteApproveUserByUserId" parameterType="String">
+		delete from approve_user where user_id = #{userId}
+	</select>
+	<select id="deleteApproveUserByDeptId" parameterType="String">
+		delete from approve_user where dept_id = #{deptId}
+	</select>
+
+	
+
+
+	
+</mapper> 

+ 244 - 0
ruoyi-ui/src/views/project/investigate/approveDialog.vue

@@ -0,0 +1,244 @@
+<template>
+  <div class="app-container">
+    <!-- 添加或修改尽调申请 -->
+    <el-dialog
+      :title="approveDiligenceTit"
+      :visible.sync="approveDiligenceOpen"
+      width="700px"
+      append-to-body
+      class="custom-dialog"
+    >
+      <el-form
+        ref="approveForm"
+        :model="approveForm"
+        :rules="approveRules"
+        label-width="170px"
+      >
+        <el-form-item label="尽调审核人员" prop="investigatePerson">
+          <el-select v-model="approveForm.investigatePerson" placeholder="全部" style="width: 400px;"
+                     clearable
+                     multiple
+                     filterable
+                     allow-create
+                     :created-text="(input) => input"
+          >
+            <el-option
+              v-for="item in approveList"
+              :key="item.userId"
+              :label="item.nickName"
+              :value="item.userId"
+            />
+            <el-option
+              label="无"
+              value="-1"
+            />
+          </el-select>
+        </el-form-item>
+
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="cancelApproveForm">取 消</el-button>
+        <el-button type="primary" @click="submitApproveForm(true)" v-preventReClick>提 交</el-button>
+      </div>
+    </el-dialog>
+    <!--选择人员-->
+    <selecUser
+      ref="flowUser"
+      :checkType="checkType"
+      :selectValues="selectValues"
+      :selectNameValues="selectNameValues"
+      @handleUserSelect="handleUserSelect"
+    ></selecUser>
+  </div>
+</template>
+<script>
+
+import {findApproveUser,saveApproveUser} from "@/api/project/investigate/pool";
+import { listUserNew } from "@/api/system/user";
+import projectItem from "./projectItem";
+import fileItem from "../../invest/components/fileItem";
+import selecDept from "../../invest/components/selecDept";
+import selecUser from "../../invest/components/selecUser";
+import { mapGetters } from "vuex";
+
+export default {
+  props: {
+    projectId: {
+      type: String,
+    },
+  },
+  dicts: ["up_way", "project_stage"],
+  components: { projectItem, fileItem, selecDept, selecUser },
+  data() {
+    return {
+      pageType: null,
+      // 人员选择器
+      checkType: "multiple",
+      // 数据回显
+      selectValues: null,
+      selectNameValues: null,
+      userVisible: false,
+      approveList: [],
+      total: null,
+      approveDiligenceTit: "",
+      approveDiligenceOpen: false,
+      approveForm: {
+        id: null,
+        userId: null,
+        loginId: null,
+        investigatePerson:[],
+      },
+      approveRules: {
+        investigatePerson: [
+          { required: true, trigger: "blur", message: "请选择" },
+        ],
+      },
+      showProjectItem: false,
+    };
+  },
+  computed: {
+    ...mapGetters(["user"]),
+  },
+  watch: {
+    approveDiligenceOpen: function (newValue, oldValue) {
+      if (newValue === false) {
+        this.selectValues = null;
+        this.selectNameValues = null;
+      }
+    },
+  },
+  mounted() {
+    // this.getList();
+    // 人员
+    listUserNew({
+      pageNum: 1,
+      pageSize: 100,
+    }).then((response) => {
+      this.approveList = response.rows;
+    });
+    this.queryApproveUser();
+  },
+  methods: {
+     //展示人员
+    /*handleProjectItem() {
+      this.$refs.projectItem.showProjectItem = true;
+      // 2. 调用子组件的刷新方法,重新加载项目列表
+      // 确保子组件已加载且存在刷新方法
+      if (this.$refs.projectItem && typeof this.$refs.projectItem.refreshProjectList === 'function') {
+        this.$refs.projectItem.refreshProjectList();
+      }
+    },
+    handleSelectPeople() {
+      this.$refs.flowUser.handleUserVisible(true);
+    },*/
+    /*用户选中赋值*/
+   /* checkUserComplete() {
+      this.userVisible = false;
+    },*/
+
+    // 用户选中数据
+    handleUserSelect(selection) {
+      const that = this;
+      if (selection) {
+        if (selection instanceof Array) {
+          const userIds = selection.map((item) => item.userId);
+          const nickName = selection.map((item) => item.nickName);
+          const userName = selection.map((item) => item.userName);
+          const deptId = selection.map((item) => item.deptId);
+          const deptName = selection.map((item) => item.deptName);
+          this.approveForm.investigatePerson = nickName.join(",");
+          this.approveForm.userId = userIds.join(",");
+          this.approveForm.loginId = userName.join(",");
+          this.approveForm.deptId = deptId.join(",");
+          this.approveForm.deptName = deptName.join(",");
+          this.selectNameValues = nickName.join(",");
+          this.selectValues = userIds.join(",");
+        } else {
+          this.approveForm.investigatePerson = selection.nickName;
+          this.approveForm.investigatePersonId = selection.userId;
+          this.selectNameValues = selection.nickName;
+          this.selectValues = selection.userId;
+        }
+        this.$refs.approveForm.clearValidate(["investigatePerson"]);
+      }
+    },
+    // 查询已设置的背调审批人员
+    queryApproveUser(){
+      this.$nextTick(() => {
+        console.log(this.approveList.length);
+
+          findApproveUser().then((response) => {
+            console.log(this.approveList)
+            const approveIds = Array.from(response.rows).map(userId => Number(userId));
+            console.log("选中值格式:", approveIds);
+            this.approveForm.investigatePerson = approveIds;
+
+            // 关键:数据更新后,等待 DOM 渲染完成,再触发 Chosen 更新
+            /*this.$nextTick(() => {
+          // 通过 $refs 获取元素,触发 chosen:updated 事件
+          $(this.$refs.investigatePerson).trigger("chosen:updated");
+        });*/
+            /*alert(this.approveForm.investigatePerson);
+        console.log(approveIds);*/
+          });
+
+      })
+    },
+    // 设置背调审批人员
+    handleShowApplyPop() {
+      let that = this;
+      this.resetApproveForm();
+      this.approveDiligenceTit = "指定审批人员";
+      this.approveDiligenceOpen = true;
+    },
+    // 尽调申请-提交
+    submitApproveForm(flag) {
+      this.$refs["approveForm"].validate((valid) => {
+        if (valid) {
+          try {
+            saveApproveUser(this.approveForm).then((response) => {
+              this.$modal.msgSuccess(response.msg);
+              this.approveDiligenceOpen = false;
+              this.$emit("getList");
+            });
+          } catch (err) {
+            // 捕获重复提交错误
+            this.$message.error(err.message);
+          }
+          //this.getList();
+        }
+      });
+    },
+    cancelApproveForm() {
+      this.approveDiligenceOpen = false;
+      this.resetApproveForm();
+    },
+    // 表单重置
+    resetApproveForm() {
+      this.approveForm = {
+        id: null,
+        investigateName: null,
+        investigateCode: null,
+        investigatePerson: null,
+        investigatePersonId: null,
+        investigateCost: null,
+      };
+      this.resetForm("approveForm");
+    },
+  },
+};
+</script>
+<style lang="scss">
+.examineDialog {
+  .el-input.is-disabled .el-input__inner,
+  .el-textarea.is-disabled .el-textarea__inner {
+    background-color: #fff;
+    color: #333;
+  }
+}
+/* 控制对话框标题居中 */
+.custom-dialog .el-dialog__header {
+  text-align: center; /* 使标题文字水平居中 */
+}
+
+</style>