From 4a2736219c9c8338303c02d8ed2746bf733d23f7 Mon Sep 17 00:00:00 2001 From: zhangzhiqiang Date: Mon, 19 Dec 2022 16:08:28 +0800 Subject: [PATCH] dept --- .../controller/dept/DeptController.java | 60 +++++++++------- .../system/service/dept/ISysDeptService.java | 15 ++++ .../dept/dao/mapper/SysDeptMapper.java | 22 ++++++ .../service/dept/dao/mapper/SysDeptMapper.xml | 25 +++++++ .../service/dept/impl/SysDeptServiceImpl.java | 68 +++++++++++++++++++ .../service/role/impl/SysRoleServiceImpl.java | 2 +- nladmin-ui/src/views/system/dept/index.vue | 24 +++---- 7 files changed, 178 insertions(+), 38 deletions(-) diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/dept/DeptController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/dept/DeptController.java index c3309f1..315438d 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/dept/DeptController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/dept/DeptController.java @@ -24,7 +24,10 @@ import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.nl.common.TableDataInfo; import org.nl.common.domain.query.PageQuery; +import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.utils.PageUtil; +import org.nl.modules.logging.annotation.Log; +import org.nl.modules.system.domain.Dept; import org.nl.modules.system.domain.vo.DeptVo; import org.nl.modules.system.util.CopyUtil; import org.nl.system.service.dept.ISysDeptService; @@ -33,9 +36,11 @@ import org.nl.system.service.dept.dto.DeptQuery; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.util.CollectionUtils; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Set; /** * @author Zheng Jie @@ -48,7 +53,6 @@ import java.util.List; public class DeptController { private final ISysDeptService deptService; - private static final String ENTITY_NAME = "dept"; @ApiOperation("查询部门") @GetMapping @@ -81,30 +85,36 @@ public class DeptController { return new ResponseEntity<>(deptService.getSuperior(ids),HttpStatus.OK); } // -// @Log("新增部门") -// @ApiOperation("新增部门") -// @PostMapping -//// @SaCheckPermission("dept:add") -// public ResponseEntity create(@Validated @RequestBody Dept resources){ -//// deptService.create(resources); -// return new ResponseEntity<>(HttpStatus.CREATED); -// } + @Log("新增部门") + @ApiOperation("新增部门") + @PostMapping +// @SaCheckPermission("dept:add") + public ResponseEntity create(@Validated @RequestBody SysDept resources){ + deptService.createDept(resources); + return new ResponseEntity<>(HttpStatus.CREATED); + } // -// @Log("修改部门") -// @ApiOperation("修改部门") -// @PutMapping -//// @SaCheckPermission("dept:edit") -// public ResponseEntity update(@RequestBody Dept resources){ -// deptService.update(resources); -// return new ResponseEntity<>(HttpStatus.NO_CONTENT); -// } + @Log("修改部门") + @ApiOperation("修改部门") + @PutMapping +// @SaCheckPermission("dept:edit") + public ResponseEntity update(@Validated @RequestBody SysDept dept){ + if (dept.getPid() != null && dept.getDeptId().equals(dept.getPid())) { + throw new BadRequestException("上级不能为自己"); + } + deptService.updateDept(dept); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } // -// @Log("删除部门") -// @ApiOperation("删除部门") -// @DeleteMapping -//// @SaCheckPermission("dept:del") -// public ResponseEntity delete(@RequestBody Set ids){ -// deptService.delete(ids); -// return new ResponseEntity<>(HttpStatus.OK); -// } + @Log("删除部门") + @ApiOperation("删除部门") + @DeleteMapping +// @SaCheckPermission("dept:del") + public ResponseEntity delete(@RequestBody Set deptIds){ + if (CollectionUtils.isEmpty(deptIds)){ + return ResponseEntity.noContent().build(); + } + deptService.delateDept(deptIds); + return new ResponseEntity<>(HttpStatus.OK); + } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/ISysDeptService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/ISysDeptService.java index 5fe8ee0..c0f75d2 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/ISysDeptService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/ISysDeptService.java @@ -10,6 +10,7 @@ import org.nl.system.service.dept.dto.DeptQuery; import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Set; /** *

@@ -49,4 +50,18 @@ public interface ISysDeptService extends IService { */ void saveUserDeptRelation(String UserId, Collection deptIds); + /** + * 更新部门:同时更新节点 + * @param dept + */ + void updateDept(SysDept dept); + + /** + * 删除部门及子部门 + * @param deptIds + */ + void delateDept(Set deptIds); + + void createDept(SysDept dept); + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.java index c5639e3..02abb96 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.java @@ -6,6 +6,7 @@ import org.nl.system.service.dept.dao.SysDept; import java.util.Collection; import java.util.List; +import java.util.Map; /** *

@@ -17,6 +18,27 @@ import java.util.List; */ public interface SysDeptMapper extends BaseMapper { + /** + * 保存依赖关系 + * @param UserId + * @param deptId + */ void saveDeptRelation(@Param("user") String UserId,@Param("depts") Collection deptId); + List getDeptRelation(@Param("deptIds") Collection deptIds); + + /** + * 跟新sub_count字段 + * @param deptId + * @return + */ + int updateSubCount(String deptId); + + /** + * 返回字符串列表 split = , + * @param pid + * @return + */ + String findAllChild(String pid); + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.xml index 9d814af..f625c4c 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.xml @@ -8,4 +8,29 @@ (#{user},#{dept}) + + update sys_dept set sub_count = + (select m.count from (select count(*) count from sys_dept where pid = #{pid}) as m) + where dept_id = #{pid} + + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/impl/SysDeptServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/impl/SysDeptServiceImpl.java index d8fbb82..b15eb28 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/impl/SysDeptServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/impl/SysDeptServiceImpl.java @@ -1,6 +1,8 @@ package org.nl.system.service.dept.impl; import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -9,15 +11,22 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang3.StringUtils; import org.nl.common.domain.query.PageQuery; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.common.utils.SecurityUtils; +import org.nl.modules.common.utils.dto.CurrentUser; import org.nl.modules.system.domain.vo.DeptVo; import org.nl.modules.system.service.dto.DeptTree; import org.nl.modules.system.util.CopyUtil; +import org.nl.modules.tools.IdUtil; +import org.nl.modules.wql.core.bean.ResultBean; +import org.nl.modules.wql.core.bean.WQLObject; import org.nl.system.service.dept.ISysDeptService; import org.nl.system.service.dept.dao.SysDept; import org.nl.system.service.dept.dao.mapper.SysDeptMapper; import org.nl.system.service.dept.dto.DeptQuery; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.util.*; import java.util.stream.Collectors; @@ -103,4 +112,63 @@ public class SysDeptServiceImpl extends ServiceImpl impl } sysDeptMapper.saveDeptRelation(userId,deptIds); } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateDept(SysDept dept) { + if (dept == null ||StringUtils.isEmpty(dept.getDeptId())){ + return; + } + this.updateById(dept); + //删除节点信息 + sysDeptMapper.updateSubCount(dept.getDeptId()); + if (StringUtils.isNotEmpty(dept.getPid())){ + sysDeptMapper.updateSubCount(dept.getPid()); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delateDept(Set deptIds) { + if (CollectionUtils.isEmpty(deptIds)){ + return; + } + verification(deptIds); + Set depts = new HashSet<>(); + for (String deptId : deptIds) { + String allChild = sysDeptMapper.findAllChild(deptId); + if (StringUtils.isNotEmpty(allChild)){ + String[] split = allChild.split(","); + depts.addAll(Arrays.asList(split)); + } + } + this.remove(new QueryWrapper().in("dept_id", depts)); + for (String deptId : deptIds) { + sysDeptMapper.updateSubCount(deptId); + } + } + + private void verification(Set depeIds) { + if (!CollectionUtils.isEmpty(depeIds)){ + List deptRelation = sysDeptMapper.getDeptRelation(depeIds); + if (!CollectionUtils.isEmpty(deptRelation)){ + throw new BadRequestException("部门存在绑定的人员,请先解绑人员对应部门"); + } + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void createDept(SysDept dept) { + dept.setDeptId(IdUtil.getStringId()); + CurrentUser user = SecurityUtils.getCurrentUser(); + dept.setCreateId(user.getId()); + dept.setCreateName(user.getPresonName()); + dept.setCreateTime(new Date()); + this.save(dept); + // 清理缓存 + if (StringUtils.isNotEmpty(dept.getPid())){ + sysDeptMapper.updateSubCount(dept.getPid()); + } + } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/role/impl/SysRoleServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/role/impl/SysRoleServiceImpl.java index 609015d..b73c99c 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/role/impl/SysRoleServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/role/impl/SysRoleServiceImpl.java @@ -14,10 +14,10 @@ import lombok.RequiredArgsConstructor; import org.nl.common.domain.query.PageQuery; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.utils.SecurityUtils; -import org.nl.system.service.menu.dao.mapper.SysMenuMapper; import org.nl.system.service.role.ISysRoleService; import org.nl.system.service.role.dao.SysRole; import org.nl.system.service.role.dao.mapper.SysRoleMapper; +import org.nl.system.service.menu.dao.mapper.SysMenuMapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/nladmin-ui/src/views/system/dept/index.vue b/nladmin-ui/src/views/system/dept/index.vue index 2d1f418..870c5af 100644 --- a/nladmin-ui/src/views/system/dept/index.vue +++ b/nladmin-ui/src/views/system/dept/index.vue @@ -43,9 +43,9 @@ - + - + - + { crudDept.getDeptvo(params).then(res => { resolve(res.content) @@ -240,7 +240,7 @@ export default { // 获取弹窗内部门数据 loadDepts({ action, parentNode, callback }) { if (action === LOAD_CHILDREN_OPTIONS) { - crudDept.getDeptvo({ isUsed: '1', pid: parentNode.dept_id }).then(res => { + crudDept.getDeptvo({ isUsed: '1', pid: parentNode.deptId }).then(res => { parentNode.children = res.content.map(function(obj) { obj.children = null return obj @@ -287,7 +287,7 @@ export default { }, normalizer(node) { return { - id: node.dept_id, + id: node.deptId, label: node.name, children: node.children }