From 97709e81fbbab13b9b36bec3126b0590b7de1984 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期五, 12 七月 2024 18:09:04 +0800 Subject: [PATCH] 部门增加层级字段、部门修改bug --- src/main/resources/mapper/DepartmentMapper.xml | 48 +++++++++-- src/main/java/com/mindskip/xzs/domain/vo/CascaderDataVO.java | 5 + src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java | 2 src/main/java/com/mindskip/xzs/domain/Department.java | 11 ++ src/main/java/com/mindskip/xzs/domain/enums/YesOrNoEnum.java | 26 ++++++ src/main/java/com/mindskip/xzs/service/DepartmentService.java | 6 src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java | 46 +++++++++-- src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java | 8 ++ src/main/java/com/mindskip/xzs/domain/vo/DepartmentEditVO.java | 40 ++++++++++ src/main/java/com/mindskip/xzs/viewmodel/admin/department/DepartmentResponseVM.java | 4 + 10 files changed, 174 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java b/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java index 467759d..503ba5c 100644 --- a/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java +++ b/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) diff --git a/src/main/java/com/mindskip/xzs/domain/Department.java b/src/main/java/com/mindskip/xzs/domain/Department.java index 73e060f..c3a6afd 100644 --- a/src/main/java/com/mindskip/xzs/domain/Department.java +++ b/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; + /** + * 鏄惁鑳界鐞嗘墍鏈塴evel涓�3鐨勬淳鍑烘墍 + */ + private YesOrNoEnum special; + + /** + * 閮ㄩ棬鍑犵骇 + */ + private Integer level; + private String deleted; } diff --git a/src/main/java/com/mindskip/xzs/domain/enums/YesOrNoEnum.java b/src/main/java/com/mindskip/xzs/domain/enums/YesOrNoEnum.java new file mode 100644 index 0000000..ba27dd7 --- /dev/null +++ b/src/main/java/com/mindskip/xzs/domain/enums/YesOrNoEnum.java @@ -0,0 +1,26 @@ +package com.mindskip.xzs.domain.enums; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import lombok.Getter; + +/** + * @author锛歺p + * @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; + } +} diff --git a/src/main/java/com/mindskip/xzs/domain/vo/CascaderDataVO.java b/src/main/java/com/mindskip/xzs/domain/vo/CascaderDataVO.java index e707398..b1030fc 100644 --- a/src/main/java/com/mindskip/xzs/domain/vo/CascaderDataVO.java +++ b/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; + /** * 瀛愮骇鏁版嵁 */ diff --git a/src/main/java/com/mindskip/xzs/domain/vo/DepartmentEditVO.java b/src/main/java/com/mindskip/xzs/domain/vo/DepartmentEditVO.java new file mode 100644 index 0000000..ecd95a7 --- /dev/null +++ b/src/main/java/com/mindskip/xzs/domain/vo/DepartmentEditVO.java @@ -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锛歺p + * @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; + + /** + * 鏄惁鑳界鐞嗘墍鏈塴evel涓�3鐨勬淳鍑烘墍 + */ + private YesOrNoEnum special; + + /** + * 閮ㄩ棬鍑犵骇 + */ + private Integer level; + +} diff --git a/src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java b/src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java index 7807bba..5722d19 100644 --- a/src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java +++ b/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); } diff --git a/src/main/java/com/mindskip/xzs/service/DepartmentService.java b/src/main/java/com/mindskip/xzs/service/DepartmentService.java index f339394..5da9ddc 100644 --- a/src/main/java/com/mindskip/xzs/service/DepartmentService.java +++ b/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); diff --git a/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java index 6f296cb..f723447 100644 --- a/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java +++ b/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())) { + // 鏌ュ嚭瀹屾暣鐨勭埗绾D + 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)); } diff --git a/src/main/java/com/mindskip/xzs/viewmodel/admin/department/DepartmentResponseVM.java b/src/main/java/com/mindskip/xzs/viewmodel/admin/department/DepartmentResponseVM.java index 83f77d5..17ed5f4 100644 --- a/src/main/java/com/mindskip/xzs/viewmodel/admin/department/DepartmentResponseVM.java +++ b/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; + /** * 绠$悊鍛� */ diff --git a/src/main/resources/mapper/DepartmentMapper.xml b/src/main/resources/mapper/DepartmentMapper.xml index f1413a2..7577d5c 100644 --- a/src/main/resources/mapper/DepartmentMapper.xml +++ b/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> -- Gitblit v1.8.0