Browse Source

refactor(system): 重构ERP部门控制器和服务层功能

- 更新导入包顺序和依赖引用
- 将列表查询方法从分页改为普通列表返回
- 添加排除子节点的部门列表查询功能
- 修改详情查询方法名称以保持一致性
- 在服务层添加部门列表查询实现
- 增加部门名称唯一性校验功能
- 在VO类中添加创建时间字段
- 优化mapper层的数据权限注解配置
hurx 1 tuần trước cách đây
mục cha
commit
679df3f03d

+ 31 - 17
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/ErpDeptController.java

@@ -1,26 +1,26 @@
 package org.dromara.system.controller.system;
 
-import java.util.List;
-
-import lombok.RequiredArgsConstructor;
+import cn.hutool.core.convert.Convert;
 import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.constraints.*;
-import cn.dev33.satoken.annotation.SaCheckPermission;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.validation.annotation.Validated;
-import org.dromara.common.idempotent.annotation.RepeatSubmit;
-import org.dromara.common.log.annotation.Log;
-import org.dromara.common.web.core.BaseController;
-import org.dromara.common.mybatis.core.page.PageQuery;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.RequiredArgsConstructor;
 import org.dromara.common.core.domain.R;
+import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.core.validate.AddGroup;
 import org.dromara.common.core.validate.EditGroup;
-import org.dromara.common.log.enums.BusinessType;
 import org.dromara.common.excel.utils.ExcelUtil;
-import org.dromara.system.domain.vo.ErpDeptVo;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.web.core.BaseController;
 import org.dromara.system.domain.bo.ErpDeptBo;
+import org.dromara.system.domain.vo.ErpDeptVo;
 import org.dromara.system.service.IErpDeptService;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * erp部门
@@ -42,8 +42,22 @@ public class ErpDeptController extends BaseController {
      */
     //@SaCheckPermission("system:erpDept:list")
     @GetMapping("/list")
-    public TableDataInfo<ErpDeptVo> list(ErpDeptBo bo, PageQuery pageQuery) {
-        return erpDeptService.queryPageList(bo, pageQuery);
+    public R<List<ErpDeptVo>> list(ErpDeptBo dept) {
+        List<ErpDeptVo> depts = erpDeptService.selectDeptList(dept);
+        return R.ok(depts);
+    }
+
+    /**
+     * 查询部门列表(排除节点)
+     *
+     * @param deptId 部门ID
+     */
+    @GetMapping("/list/exclude/{deptId}")
+    public R<List<ErpDeptVo>> excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) {
+        List<ErpDeptVo> depts = erpDeptService.selectDeptList(new ErpDeptBo());
+        depts.removeIf(d -> d.getDeptId().equals(deptId)
+            || StringUtils.splitList(d.getAncestors()).contains(Convert.toStr(deptId)));
+        return R.ok(depts);
     }
 
     /**
@@ -66,7 +80,7 @@ public class ErpDeptController extends BaseController {
     @GetMapping("/{deptId}")
     public R<ErpDeptVo> getInfo(@NotNull(message = "主键不能为空")
                                 @PathVariable("deptId") Long deptId) {
-        return R.ok(erpDeptService.queryById(deptId));
+        return R.ok(erpDeptService.selectDeptById(deptId));
     }
 
     /**

+ 4 - 4
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ErpDeptVo.java

@@ -1,12 +1,12 @@
 package org.dromara.system.domain.vo;
 
-import org.dromara.system.domain.ErpDept;
 import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
 import cn.idev.excel.annotation.ExcelProperty;
-import org.dromara.common.excel.annotation.ExcelDictFormat;
-import org.dromara.common.excel.convert.ExcelDictConvert;
 import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import org.dromara.system.domain.ErpDept;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -147,5 +147,5 @@ public class ErpDeptVo implements Serializable {
     @ExcelProperty(value = "部门主管")
     private String chargeName;
 
-
+    private Date createTime;
 }

+ 19 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/ErpDeptMapper.java

@@ -1,8 +1,13 @@
 package org.dromara.system.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import org.dromara.common.mybatis.annotation.DataColumn;
+import org.dromara.common.mybatis.annotation.DataPermission;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 import org.dromara.system.domain.ErpDept;
 import org.dromara.system.domain.vo.ErpDeptVo;
-import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+import java.util.List;
 
 /**
  * erp部门Mapper接口
@@ -12,4 +17,17 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
  */
 public interface ErpDeptMapper extends BaseMapperPlus<ErpDept, ErpDeptVo> {
 
+    /**
+     * 查询部门管理数据
+     *
+     * @param queryWrapper 查询条件
+     * @return 部门信息集合
+     */
+    @DataPermission({
+        @DataColumn(key = "deptName", value = "dept_id")
+    })
+    default List<ErpDeptVo> selectDeptList(Wrapper<ErpDept> queryWrapper) {
+        return this.selectVoList(queryWrapper);
+    }
+
 }

+ 26 - 4
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IErpDeptService.java

@@ -1,12 +1,11 @@
 package org.dromara.system.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.system.domain.ErpDept;
-import org.dromara.system.domain.vo.ErpDeptVo;
 import org.dromara.system.domain.bo.ErpDeptBo;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
-import org.dromara.common.mybatis.core.page.PageQuery;
-import org.dromara.system.domain.vo.SysDeptVo;
+import org.dromara.system.domain.vo.ErpDeptVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -46,6 +45,14 @@ public interface IErpDeptService extends IService<ErpDept> {
      */
     List<ErpDeptVo> queryList(ErpDeptBo bo);
 
+    /**
+     * 查询部门管理数据
+     *
+     * @param dept 部门信息
+     * @return 部门信息集合
+     */
+    List<ErpDeptVo> selectDeptList(ErpDeptBo dept);
+
     /**
      * 新增erp部门
      *
@@ -54,6 +61,13 @@ public interface IErpDeptService extends IService<ErpDept> {
      */
     Boolean insertByBo(ErpDeptBo bo);
 
+    /**
+     * 新增保存部门信息
+     *
+     * @param bo 部门信息
+     * @return 结果
+     */
+
     /**
      * 修改erp部门
      *
@@ -72,6 +86,14 @@ public interface IErpDeptService extends IService<ErpDept> {
      */
     ErpDeptVo selectDeptById(Long deptId);
 
+    /**
+     * 校验部门名称是否唯一
+     *
+     * @param dept 部门信息
+     * @return 结果
+     */
+    boolean checkDeptNameUnique(ErpDeptBo dept);
+
     /**
      * 校验并批量删除erp部门信息
      *

+ 30 - 15
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ErpDeptServiceImpl.java

@@ -1,30 +1,23 @@
 package org.dromara.system.service.impl;
 
-import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.dromara.common.core.constant.CacheNames;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.ObjectUtils;
-import org.dromara.common.core.utils.SpringUtils;
 import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.mybatis.core.page.PageQuery;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.dromara.system.domain.ComDept;
-import org.dromara.system.domain.SysDept;
-import org.dromara.system.domain.vo.SysDeptVo;
-import org.springframework.cache.annotation.Cacheable;
-import org.springframework.stereotype.Service;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.system.domain.ErpDept;
 import org.dromara.system.domain.bo.ErpDeptBo;
 import org.dromara.system.domain.vo.ErpDeptVo;
-import org.dromara.system.domain.ErpDept;
 import org.dromara.system.mapper.ErpDeptMapper;
 import org.dromara.system.service.IErpDeptService;
+import org.springframework.stereotype.Service;
 
 import java.util.*;
 
@@ -66,6 +59,12 @@ public class ErpDeptServiceImpl extends ServiceImpl<ErpDeptMapper, ErpDept> impl
         return TableDataInfo.build(result);
     }
 
+    @Override
+    public List<ErpDeptVo> selectDeptList(ErpDeptBo dept) {
+        LambdaQueryWrapper<ErpDept> lqw = buildQueryWrapper(dept);
+        return baseMapper.selectDeptList(lqw);
+    }
+
     /**
      * 查询符合条件的erp部门列表
      *
@@ -177,6 +176,22 @@ public class ErpDeptServiceImpl extends ServiceImpl<ErpDeptMapper, ErpDept> impl
         return dept;
     }
 
+    /**
+     * 校验部门名称是否唯一
+     *
+     * @param dept 部门信息
+     * @return 结果
+     */
+    @Override
+    public boolean checkDeptNameUnique(ErpDeptBo dept) {
+        boolean exist = baseMapper.exists(new LambdaQueryWrapper<ErpDept>()
+            .eq(ErpDept::getDeptName, dept.getDeptName())
+            .eq(ErpDept::getParentId, dept.getParentId())
+            .eq(ErpDept::getPlatformCode, dept.getPlatformCode())
+            .ne(ObjectUtil.isNotNull(dept.getDeptId()), ErpDept::getDeptId, dept.getDeptId()));
+        return !exist;
+    }
+
     /**
      * 保存前的数据校验
      */