xiangpei
2024-07-12 97709e81fbbab13b9b36bec3126b0590b7de1984
部门增加层级字段、部门修改bug
8个文件已修改
2个文件已添加
196 ■■■■ 已修改文件
src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/domain/Department.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/domain/enums/YesOrNoEnum.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/domain/vo/CascaderDataVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/domain/vo/DepartmentEditVO.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/DepartmentService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/viewmodel/admin/department/DepartmentResponseVM.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/DepartmentMapper.xml 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java
@@ -79,7 +79,7 @@
    @RequestMapping(value = "/get/{id}", method = RequestMethod.POST)
    public RestResponse update(@PathVariable Integer id) {
        return RestResponse.ok(departmentService.getById(id));
        return RestResponse.ok(departmentService.getByIdVO(id));
    }
    @RequestMapping(value = "/getUserByDepartment/{id}", method = RequestMethod.POST)
src/main/java/com/mindskip/xzs/domain/Department.java
@@ -1,5 +1,6 @@
package com.mindskip.xzs.domain;
import com.mindskip.xzs.domain.enums.YesOrNoEnum;
import com.mindskip.xzs.vo.TreeNode;
import lombok.Data;
@@ -23,6 +24,16 @@
     */
    private List<Integer> adminId;
    /**
     * 是否能管理所有level为3的派出所
     */
    private YesOrNoEnum special;
    /**
     * 部门几级
     */
    private Integer level;
    private String deleted;
}
src/main/java/com/mindskip/xzs/domain/enums/YesOrNoEnum.java
New file
@@ -0,0 +1,26 @@
package com.mindskip.xzs.domain.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.Getter;
/**
 * @author:xp
 * @date:2024/7/12 15:32
 */
@Getter
public enum YesOrNoEnum {
    YES("yes", "是"),
    NO("yes", "否"),
    ;
    @EnumValue
    private final String value;
    private final String desc;
    YesOrNoEnum(String value, String desc) {
        this.value = value;
        this.desc = desc;
    }
}
src/main/java/com/mindskip/xzs/domain/vo/CascaderDataVO.java
@@ -1,5 +1,6 @@
package com.mindskip.xzs.domain.vo;
import com.mindskip.xzs.domain.enums.YesOrNoEnum;
import lombok.Data;
import java.util.List;
@@ -28,6 +29,10 @@
     */
    private Integer parentId;
    private String special;
    private Integer level;
    /**
     * 子级数据
     */
src/main/java/com/mindskip/xzs/domain/vo/DepartmentEditVO.java
New file
@@ -0,0 +1,40 @@
package com.mindskip.xzs.domain.vo;
import com.mindskip.xzs.domain.enums.YesOrNoEnum;
import lombok.Data;
import java.util.List;
/**
 * @author:xp
 * @date:2024/7/12 17:40
 */
@Data
public class DepartmentEditVO {
    private Integer id;
    private String name;
    /**
     * 上级部门ID
     */
    private Integer parentId;
    private List<Integer> parentIds;
    /**
     * 部门管理员
     */
    private List<Integer> adminId;
    /**
     * 是否能管理所有level为3的派出所
     */
    private YesOrNoEnum special;
    /**
     * 部门几级
     */
    private Integer level;
}
src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java
@@ -47,4 +47,12 @@
     * @return
     */
    List<Integer> getChilds(@Param("deptIds") List<Integer> deptIds);
    /**
     * 获取该部门的上级(不包含自己)
     *
     * @param deptId
     * @return
     */
    List<Integer> getFather(@Param("deptId") Integer deptId);
}
src/main/java/com/mindskip/xzs/service/DepartmentService.java
@@ -1,9 +1,7 @@
package com.mindskip.xzs.service;
import com.mindskip.xzs.domain.Department;
import com.mindskip.xzs.domain.vo.BaseSelect;
import com.mindskip.xzs.domain.vo.CascaderDataVO;
import com.mindskip.xzs.domain.vo.UpdateDeptAdminVO;
import com.mindskip.xzs.domain.vo.*;
import com.mindskip.xzs.viewmodel.admin.department.DepartmentResponseVM;
import java.util.List;
@@ -39,6 +37,8 @@
    Department getById(Integer id);
    DepartmentEditVO getByIdVO(Integer id);
    List<Department> gets(List<Integer> deptId);
    Department getName(String name);
src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java
@@ -4,6 +4,7 @@
import com.mindskip.xzs.domain.enums.DeptAdminEnum;
import com.mindskip.xzs.domain.vo.BaseSelect;
import com.mindskip.xzs.domain.vo.CascaderDataVO;
import com.mindskip.xzs.domain.vo.DepartmentEditVO;
import com.mindskip.xzs.domain.vo.UpdateDeptAdminVO;
import com.mindskip.xzs.repository.BaseMapper;
import com.mindskip.xzs.repository.DepartmentMapper;
@@ -14,6 +15,7 @@
import com.mindskip.xzs.utility.TreeUtils;
import com.mindskip.xzs.viewmodel.admin.department.DepartmentResponseVM;
import org.modelmapper.ModelMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@@ -40,21 +42,18 @@
    @Override
    public Integer add(Department model) {
        model.setDeleted("0");
        if (Objects.nonNull(model.getParentId())) {
            // 查出父级的层级
            List<Integer> fatherList = departmentMapper.getFather(model.getParentId());
            Collections.reverse(fatherList);
            model.setLevel(fatherList.size() + 1);
        }
        return departmentMapper.add(model);
    }
    @Override
    public Integer remove(Integer id) {
        Department department = new Department();
        department.setId(id);
        department.setDeleted("1");
        return departmentMapper.update(department);
    }
    @Transactional(rollbackFor = Exception.class)
    @Override
    public Integer update(Department department) {
//        userDepartmentMapper.removeByDepartmentId(department.getId());
        Department entity = departmentMapper.getById(department.getId());
        if (Objects.isNull(entity)) {
            throw new RuntimeException("该部门不存在");
@@ -69,8 +68,23 @@
            // 标识部门管理员
            userMapper.updateDeptAdmin(department.getAdminId(), DeptAdminEnum.YES.getValue(), entity.getId());
        }
        if (Objects.nonNull(department.getParentId())) {
            // 查出父级的层级
            List<Integer> fatherList = departmentMapper.getFather(department.getParentId());
            department.setLevel(fatherList.size() + 1);
        } else {
            department.setLevel(1);
        }
        Integer update = departmentMapper.update(department);
        return update;
    }
    @Override
    public Integer remove(Integer id) {
        Department department = new Department();
        department.setId(id);
        department.setDeleted("1");
        return departmentMapper.update(department);
    }
    @Override
@@ -109,6 +123,20 @@
    }
    @Override
    public DepartmentEditVO getByIdVO(Integer id) {
        Department dept = departmentMapper.getById(id);
        DepartmentEditVO vo = new DepartmentEditVO();
        BeanUtils.copyProperties(dept, vo);
        if (Objects.nonNull(dept.getParentId())) {
            // 查出完整的父级ID
            List<Integer> fatherList = departmentMapper.getFather(dept.getParentId());
            Collections.reverse(fatherList);
            vo.setParentIds(fatherList);
        }
        return vo;
    }
    @Override
    public List<Department> gets(List<Integer> deptId) {
        return TreeUtils.build(departmentMapper.gets(deptId));
    }
src/main/java/com/mindskip/xzs/viewmodel/admin/department/DepartmentResponseVM.java
@@ -23,6 +23,10 @@
     */
    private List<DepartmentResponseVM> children;
    private String special;
    private Integer level;
    /**
     * 管理员
     */
src/main/resources/mapper/DepartmentMapper.xml
@@ -6,16 +6,18 @@
        <result column="name" jdbcType="VARCHAR" property="name"/>
        <result column="deleted" jdbcType="VARCHAR" property="deleted"/>
        <result column="parent_id" property="parentId"/>
        <result column="special" property="special" typeHandler="com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler"/>
        <result column="level" property="level"/>
    </resultMap>
    <sql id="Base_Column_List">
        id
        , name,deleted,parent_id
        , name,deleted,parent_id,special,level
    </sql>
    <insert id="add" parameterType="com.mindskip.xzs.domain.Department" useGeneratedKeys="true" keyProperty="id">
        insert into t_department (name, deleted, parent_id)
        values (#{name,jdbcType=VARCHAR}, #{deleted,jdbcType=VARCHAR}, #{parentId})
        insert into t_department (name, deleted, parent_id,special,level)
        values (#{name,jdbcType=VARCHAR}, #{deleted,jdbcType=VARCHAR}, #{parentId}, #{special.value},#{level})
    </insert>
    <update id="update" parameterType="com.mindskip.xzs.domain.Department">
@@ -31,6 +33,12 @@
            <if test="deleted != null">
                deleted = #{deleted,jdbcType=VARCHAR},
            </if>
            <if test="special != null and special != ''">
                special = #{special.value},
            </if>
            <if test="level != null">
                level = #{level},
            </if>
        </set>
        where id = #{id,jdbcType=INTEGER}
    </update>
@@ -39,7 +47,9 @@
        SELECT
            td.id,
            td.name,
            td.parent_id
            td.parent_id,
            td.special,
            td.level
        FROM
            t_department td
        WHERE
@@ -53,7 +63,9 @@
        SELECT
            td.id,
            td.name,
            td.parent_id
            td.parent_id,
            td.special,
            td.level
        FROM
            t_department td
        WHERE
@@ -88,7 +100,9 @@
        SELECT
            td.id,
            td.name,
            td.parent_id
            td.parent_id,
            td.special,
            td.level
        FROM
             t_department td
        <where>
@@ -108,6 +122,8 @@
            td.id,
            td.name,
            td.parent_id,
            td.special,
            td.level,
            td.admin_id as adminId,
            tu.real_name as adminName
        FROM
@@ -126,16 +142,16 @@
    </select>
    <select id="list" resultType="com.mindskip.xzs.domain.vo.CascaderDataVO">
        SELECT id as value, name as label, parent_id FROM t_department WHERE deleted = 0
        SELECT id as value, name as label, parent_id, special, level FROM t_department WHERE deleted = 0
    </select>
    <select id="getChilds" resultType="integer">
        WITH RECURSIVE temp_table AS (
            SELECT
                id, name, parent_id FROM t_department WHERE id in <foreach collection="deptIds" open="(" item="deptId" close=")" separator=",">#{deptId}</foreach>
                id, name, parent_id,special,level FROM t_department WHERE id in <foreach collection="deptIds" open="(" item="deptId" close=")" separator=",">#{deptId}</foreach>
            UNION ALL
            SELECT
                so.id, so.name, so.parent_id FROM t_department so INNER JOIN temp_table tb ON so.parent_id = tb.id
                so.id, so.name, so.parent_id, so.special, so.level FROM t_department so INNER JOIN temp_table tb ON so.parent_id = tb.id
        )
        SELECT
            DISTINCT id
@@ -143,4 +159,18 @@
            temp_table
    </select>
    <select id="getFather" resultType="integer">
        WITH RECURSIVE temp_table AS (
        SELECT
        id, name, parent_id,special,level FROM t_department WHERE id = #{deptId}
        UNION ALL
        SELECT
        so.id, so.name, so.parent_id, so.special, so.level FROM t_department so INNER JOIN temp_table tb ON so.id = tb.parent_id
        )
        SELECT
        DISTINCT id
        FROM
        temp_table
    </select>
</mapper>