Quellcode durchsuchen

fix:部门增加全称显示、主办部门协办部门从人员中解析

459242451@qq.com vor 3 Jahren
Ursprung
Commit
a50c8f87ef

+ 13 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java

@@ -162,4 +162,17 @@ public class SysDeptController extends BaseController {
         deptService.saveBatch(sysDepts);
 
     }
+
+    /*@PostMapping("/syncDept")
+    public void syncDept() {
+        List<SysDept> list = deptService.list();
+        for (SysDept dept : list) {
+            if (StrUtil.isBlank(dept.getFullName())) {
+                String departFullNamePrefix = FindsDepartsChildrenUtil.departFullName(list, dept.getParentId());
+                dept.setFullName(StrUtil.isBlank(departFullNamePrefix) ? dept.getDeptName() : departFullNamePrefix + dept.getDeptName());
+                deptService.updateById(dept);
+            }
+        }
+
+    }*/
 }

+ 0 - 10
ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/SysGatewayUserTask.java

@@ -165,16 +165,6 @@ public class SysGatewayUserTask {
                     qdept.setDelFlag(gatewayDept.getDelFlag());
                     qdept.setFlag(Convert.toStr(gatewayDept.getFlag()));
 
-                    // 处理Ancestors字段
-                    SysDept info = deptService.getById(qdept.getParentId());
-                    if (info != null) {
-                        /*// 如果父节点不为正常状态,则不允许新增子节点
-                        if (!UserConstants.DEPT_NORMAL.equals(info.getStatus())) {
-                            throw new ServiceException("部门停用,不允许新增");
-                        }*/
-                        qdept.setAncestors(info.getAncestors() + "," + qdept.getParentId());
-                    }
-
                     deptService.insertDept(qdept);
                 } else {
                     //更新

+ 2 - 0
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java

@@ -57,6 +57,8 @@ public class SysDept implements Serializable {
     @Size(min = 0, max = 30, message = "部门名称长度不能超过30个字符")
     private String deptName;
 
+    private String fullName;
+
     /**
      * 显示顺序
      */

+ 55 - 0
ruoyi-common/src/main/java/com/ruoyi/common/utils/FindsDepartsChildrenUtil.java

@@ -0,0 +1,55 @@
+package com.ruoyi.common.utils;
+
+import cn.hutool.core.util.StrUtil;
+import com.ruoyi.common.core.domain.entity.SysDept;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 对应部门的表,处理并查找树级数据
+ * <p>
+ *
+ * @Author: Steve
+ * @Date: 2019-01-22
+ */
+public class FindsDepartsChildrenUtil {
+
+    /**
+     * 查询某个部门的全路径
+     *
+     * @param list
+     * @param parentId
+     * @return
+     */
+    public static String departFullName(List<SysDept> list, String parentId) {
+        if (StrUtil.isBlank(parentId)) {
+            return "";
+        }
+        String name = "";
+        // 遍历部门数据
+        Map<String, SysDept> collect = list.stream().collect(Collectors.toMap(SysDept::getDeptId, b -> b));
+        // 根据parentId查询
+        SysDept sysDepart = collect.get(parentId);
+        if (sysDepart != null) {
+            name = sysDepart.getDeptName().concat(name).concat("/");
+            if (StrUtil.isNotBlank(sysDepart.getParentId())) {
+                name = searchDepartName(collect, name, sysDepart.getParentId());
+            }
+        }
+        return name;
+    }
+
+    private static String searchDepartName(Map<String, SysDept> collect, String name, String parentId) {
+        SysDept sysDepart = collect.get(parentId);
+        if (sysDepart != null) {
+            name = sysDepart.getDeptName().concat("/").concat(name);
+            if (StrUtil.isNotBlank(sysDepart.getParentId())) {
+                searchDepartName(collect, name, sysDepart.getParentId());
+            }
+        }
+        return name;
+    }
+}

+ 5 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java

@@ -13,6 +13,7 @@ import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.FindsDepartsChildrenUtil;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
@@ -209,6 +210,8 @@ public class SysDeptServiceImpl extends ServicePlusImpl<SysDeptMapper, SysDept,
             }
             dept.setAncestors(info.getAncestors() + "," + dept.getParentId());
         }
+        String departFullNamePrefix = FindsDepartsChildrenUtil.departFullName(this.list(), dept.getParentId());
+        dept.setFullName(StrUtil.isBlank(departFullNamePrefix) ? dept.getDeptName() : departFullNamePrefix + dept.getDeptName());
         return baseMapper.insert(dept);
     }
 
@@ -228,6 +231,8 @@ public class SysDeptServiceImpl extends ServicePlusImpl<SysDeptMapper, SysDept,
             dept.setAncestors(newAncestors);
             updateDeptChildren(dept.getDeptId(), newAncestors, oldAncestors);
         }
+        String departFullNamePrefix = FindsDepartsChildrenUtil.departFullName(this.list(), dept.getParentId());
+        dept.setFullName(StrUtil.isBlank(departFullNamePrefix) ? dept.getDeptName() : departFullNamePrefix + dept.getDeptName());
         int result = baseMapper.updateById(dept);
         if (UserConstants.DEPT_NORMAL.equals(dept.getStatus()) && StringUtils.isNotEmpty(dept.getAncestors())
             && !StringUtils.equals("0", dept.getAncestors())) {

+ 2 - 0
ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml

@@ -9,6 +9,7 @@
         <result property="parentId" column="parent_id"/>
         <result property="ancestors" column="ancestors"/>
         <result property="deptName" column="dept_name"/>
+        <result property="fullName" column="full_name"/>
         <result property="orderNum" column="order_num"/>
         <result property="leader" column="leader"/>
         <result property="phone" column="phone"/>
@@ -28,6 +29,7 @@
                d.parent_id,
                d.ancestors,
                d.dept_name,
+               d.full_name,
                d.order_num,
                d.leader,
                d.phone,

+ 3 - 2
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -33,6 +33,7 @@
         <id property="deptId" column="dept_id"/>
         <result property="parentId" column="parent_id"/>
         <result property="deptName" column="dept_name"/>
+        <result property="fullName" column="full_name"/>
         <result property="orderNum" column="order_num"/>
         <result property="leader" column="leader"/>
         <result property="status" column="dept_status"/>
@@ -86,7 +87,7 @@
     <!--  -->
     <select id="selectPageUserList" parameterType="SysUser" resultMap="SysUserResult">
         select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.password, u.sex,
-        u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from
+        u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name,d.full_name, d.leader from
         sys_user u
         left join sys_dept d on u.dept_id = d.dept_id
         where u.del_flag = '0'
@@ -122,7 +123,7 @@
 
     <select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
         select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.password, u.sex,
-        u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from
+        u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.full_name, d.leader from
         sys_user u
         left join sys_dept d on u.dept_id = d.dept_id
         where u.del_flag = '0'

+ 47 - 33
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/IncidentServiceImpl.java

@@ -48,8 +48,10 @@ import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -172,27 +174,32 @@ public class IncidentServiceImpl extends ServicePlusImpl<IncidentMapper, Inciden
         if (flag && bo.getStatus() == 3) {
             // 第一次派发(只派发给主办人员)
             // 待处置状态
-            if (StrUtil.isBlank(bo.getMadinDept())) {
-                throw new ServiceException("请选择主办单位!");
-            }
             if (StrUtil.isBlank(bo.getMadinTaskUser())) {
                 throw new ServiceException("请选择主办单位处置人员!");
             }
 
-            // 冗余主办
-            SysDept sysDept = sysDeptService.selectDeptById(bo.getMadinDept());
-            if (sysDept != null) {
-                update.setMadinDeptText(sysDept.getDeptName());
-            }
+            List<MessagePushUser> madinTaskUserList = JSONUtil.toList(bo.getMadinTaskUser(), MessagePushUser.class);
 
-            // 组装人员数据
-            // 主办单位处置人员
-            for (MessagePushUser messagePushUser : JSONUtil.toList(bo.getMadinTaskUser(), MessagePushUser.class)) {
-                IncidentUser save = new IncidentUser();
-                save.setIncidentId(bo.getId());
-                save.setUserId(messagePushUser.getUserId());
-                save.setSource("2");
-                saveJsonArray.add(save);
+            if (madinTaskUserList != null && madinTaskUserList.size() > 0) {
+                // 通过主办人员分析出主办单位
+                SysDept sysDept = sysDeptService.selectDeptById(madinTaskUserList.get(0).getDeptId());
+                if (sysDept != null) {
+                    SysDept orgDept = sysDeptService.getOrgDept(sysDept);
+                    if (orgDept != null) {
+                        update.setMadinDept(orgDept.getDeptId());
+                        update.setMadinDeptText(orgDept.getDeptName());
+                    }
+                }
+
+                // 组装人员数据
+                // 主办单位处置人员
+                for (MessagePushUser messagePushUser : madinTaskUserList) {
+                    IncidentUser save = new IncidentUser();
+                    save.setIncidentId(bo.getId());
+                    save.setUserId(messagePushUser.getUserId());
+                    save.setSource("2");
+                    saveJsonArray.add(save);
+                }
             }
 
             // 主办单位通知人员
@@ -208,10 +215,11 @@ public class IncidentServiceImpl extends ServicePlusImpl<IncidentMapper, Inciden
 
         } else if (!flag
             && bo.getStatus() == 3
-            && (!StrUtil.equals(bo.getAssistDept(), beforeInfo.getAssistDept())
+            && (
+//                !StrUtil.equals(bo.getAssistDept(), beforeInfo.getAssistDept())
 //            || !StrUtil.equals(bo.getCommander(), beforeInfo.getCommander())
-            || !StrUtil.equals(bo.getAssistTaskUser(), beforeInfo.getAssistTaskUser())
-            || !StrUtil.equals(bo.getAssistDeptUser(), beforeInfo.getAssistDeptUser()))) {
+            !StrUtil.equals(bo.getAssistTaskUser(), beforeInfo.getAssistTaskUser())
+                || !StrUtil.equals(bo.getAssistDeptUser(), beforeInfo.getAssistDeptUser()))) {
             // 协办部门派发或再次对协办修改
             // 重新冗余协办部门、总指挥
             /*if (StrUtil.isBlank(bo.getCommander())) {
@@ -223,20 +231,7 @@ public class IncidentServiceImpl extends ServicePlusImpl<IncidentMapper, Inciden
                     update.setCommanderText(commanderText.getNickName());
                 }
             }
-            if (StrUtil.isBlank(bo.getAssistDept())) {
-                update.setAssistDeptText("");
-            } else {
-                // 增加了协办单位后,协办的处置人员非空
-                if (StrUtil.isBlank(bo.getAssistTaskUser())) {
-                    throw new ServiceException("请选择协办单位处置人员!");
-                }
-                if (!StrUtil.equals(beforeInfo.getAssistDept(), bo.getAssistDept())) {
-                    List<SysDept> sysDepts = sysDeptService.listByIds(Arrays.asList(bo.getAssistDept().split(",")));
-                    if (sysDepts != null && sysDepts.size() > 0) {
-                        update.setAssistDeptText(sysDepts.stream().map(SysDept::getDeptName).collect(Collectors.joining(",")));
-                    }
-                }
-            }
+
             // 分析变更的派发对象
             // 变更的总指挥(目前需求:总指挥不能变更)
             String oldCommander = beforeInfo.getCommander();
@@ -279,6 +274,24 @@ public class IncidentServiceImpl extends ServicePlusImpl<IncidentMapper, Inciden
                 saveJsonArray.add(save);
             }
 
+            // 通过协办处置人员查询相关的协办部门
+            if (addAssistTaskUser.size() > 0) {
+                Set<String> assistTaskDept = new HashSet<>();
+                Set<String> assistTaskDeptText = new HashSet<>();
+                for (MessagePushUser messagePushUser : newAssistTaskUser) {
+                    SysDept sysDept = sysDeptService.selectDeptById(messagePushUser.getDeptId());
+                    if (sysDept != null) {
+                        SysDept orgDept = sysDeptService.getOrgDept(sysDept);
+                        if (orgDept != null) {
+                            assistTaskDept.add(orgDept.getDeptId());
+                            assistTaskDeptText.add(orgDept.getDeptName());
+                        }
+                    }
+                }
+                update.setAssistDept(String.join(",", assistTaskDept));
+                update.setAssistDeptText(String.join(",", assistTaskDeptText));
+            }
+
             // 变更的协办通知人员
             List<MessagePushUser> oldAssistDeptUser = JSONUtil.toList(StrUtil.blankToDefault(beforeInfo.getAssistDeptUser(), "[]"), MessagePushUser.class);
             List<MessagePushUser> newAssistDeptUser = JSONUtil.toList(StrUtil.blankToDefault(bo.getAssistDeptUser(), "[]"), MessagePushUser.class);
@@ -343,6 +356,7 @@ public class IncidentServiceImpl extends ServicePlusImpl<IncidentMapper, Inciden
             }
 
         }
+
         // 更新事件信息
         boolean b = updateById(update);