From d6ba3ed6b95dcacfa8a0a3292b486f1243f13954 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Tue, 23 Apr 2024 09:41:31 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E6=96=B0=E5=A2=9E=E5=B2=97=E4=BD=8D?= =?UTF-8?q?=E7=BC=96=E7=A0=81=E4=BB=A5=E5=8F=8A=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/system/domain/SysPost.java | 10 +++++ .../dromara/system/domain/bo/SysPostBo.java | 13 ++++++- .../dromara/system/domain/vo/SysPostVo.java | 28 +++++++++++--- .../dromara/system/mapper/SysPostMapper.java | 12 ++++++ .../service/impl/SysPostServiceImpl.java | 38 +++++++++++++------ .../resources/mapper/system/SysPostMapper.xml | 13 ++++++- 6 files changed, 96 insertions(+), 18 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysPost.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysPost.java index 7fe703974..2c985da6a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysPost.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysPost.java @@ -23,6 +23,11 @@ public class SysPost extends TenantEntity { @TableId(value = "post_id") private Long postId; + /** + * 部门id + */ + private Long deptId; + /** * 岗位编码 */ @@ -33,6 +38,11 @@ public class SysPost extends TenantEntity { */ private String postName; + /** + * 岗位类别编码 + */ + private String postCategory; + /** * 岗位排序 */ diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysPostBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysPostBo.java index b93c39cd5..23b2e20fe 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysPostBo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysPostBo.java @@ -25,6 +25,12 @@ public class SysPostBo extends BaseEntity { */ private Long postId; + /** + * 部门id + */ + @NotNull(message = "部门id不能为空") + private Long deptId; + /** * 岗位编码 */ @@ -39,6 +45,12 @@ public class SysPostBo extends BaseEntity { @Size(min = 0, max = 50, message = "岗位名称长度不能超过{max}个字符") private String postName; + /** + * 岗位类别编码 + */ + @Size(min = 0, max = 100, message = "类别编码长度不能超过{max}个字符") + private String postCategory; + /** * 显示顺序 */ @@ -55,5 +67,4 @@ public class SysPostBo extends BaseEntity { */ private String remark; - } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysPostVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysPostVo.java index 3e6c6a843..69be547a0 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysPostVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysPostVo.java @@ -2,18 +2,18 @@ package org.dromara.system.domain.vo; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; -import org.dromara.common.excel.annotation.ExcelDictFormat; -import org.dromara.common.excel.convert.ExcelDictConvert; -import org.dromara.system.domain.SysPost; 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.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; +import org.dromara.system.domain.SysPost; import java.io.Serial; import java.io.Serializable; import java.util.Date; - - /** * 岗位信息视图对象 sys_post * @@ -33,6 +33,12 @@ public class SysPostVo implements Serializable { @ExcelProperty(value = "岗位序号") private Long postId; + /** + * 部门id + */ + @ExcelProperty(value = "部门id") + private Long deptId; + /** * 岗位编码 */ @@ -45,6 +51,12 @@ public class SysPostVo implements Serializable { @ExcelProperty(value = "岗位名称") private String postName; + /** + * 岗位类别编码 + */ + @ExcelProperty(value = "类别编码") + private String postCategory; + /** * 显示顺序 */ @@ -70,4 +82,10 @@ public class SysPostVo implements Serializable { @ExcelProperty(value = "创建时间") private Date createTime; + /** + * 部门名 + */ + @Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "deptId") + private String deptName; + } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java index d6d27596f..1658840dd 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java @@ -1,5 +1,11 @@ package org.dromara.system.mapper; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +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.SysPost; import org.dromara.system.domain.vo.SysPostVo; @@ -13,6 +19,12 @@ import java.util.List; */ public interface SysPostMapper extends BaseMapperPlus { + @DataPermission({ + @DataColumn(key = "deptName", value = "d.dept_id"), + @DataColumn(key = "userName", value = "p.create_by") + }) + Page selectPagePostList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + /** * 查询用户所属岗位组 * diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java index 33b98af59..60bee0b99 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java @@ -14,10 +14,13 @@ import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.helper.DataBaseHelper; +import org.dromara.system.domain.SysDept; import org.dromara.system.domain.SysPost; import org.dromara.system.domain.SysUserPost; import org.dromara.system.domain.bo.SysPostBo; import org.dromara.system.domain.vo.SysPostVo; +import org.dromara.system.mapper.SysDeptMapper; import org.dromara.system.mapper.SysPostMapper; import org.dromara.system.mapper.SysUserPostMapper; import org.dromara.system.service.ISysPostService; @@ -36,12 +39,12 @@ import java.util.List; public class SysPostServiceImpl implements ISysPostService { private final SysPostMapper baseMapper; + private final SysDeptMapper deptMapper; private final SysUserPostMapper userPostMapper; @Override public TableDataInfo selectPagePostList(SysPostBo post, PageQuery pageQuery) { - LambdaQueryWrapper lqw = buildQueryWrapper(post); - Page page = baseMapper.selectVoPage(pageQuery.build(), lqw); + Page page = baseMapper.selectPagePostList(pageQuery.build(), buildQueryWrapper(post)); return TableDataInfo.build(page); } @@ -53,17 +56,30 @@ public class SysPostServiceImpl implements ISysPostService { */ @Override public List selectPostList(SysPostBo post) { - LambdaQueryWrapper lqw = buildQueryWrapper(post); - return baseMapper.selectVoList(lqw); + return baseMapper.selectVoList(new LambdaQueryWrapper() + .like(StringUtils.isNotBlank(post.getPostCode()), SysPost::getPostCode, post.getPostCode()) + .like(StringUtils.isNotBlank(post.getPostCategory()), SysPost::getPostCategory, post.getPostCategory()) + .like(StringUtils.isNotBlank(post.getPostName()), SysPost::getPostName, post.getPostName()) + .eq(StringUtils.isNotBlank(post.getStatus()), SysPost::getStatus, post.getStatus()) + .orderByAsc(SysPost::getPostSort) + ); } - private LambdaQueryWrapper buildQueryWrapper(SysPostBo bo) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.like(StringUtils.isNotBlank(bo.getPostCode()), SysPost::getPostCode, bo.getPostCode()); - lqw.like(StringUtils.isNotBlank(bo.getPostName()), SysPost::getPostName, bo.getPostName()); - lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SysPost::getStatus, bo.getStatus()); - lqw.orderByAsc(SysPost::getPostSort); - return lqw; + private QueryWrapper buildQueryWrapper(SysPostBo bo) { + QueryWrapper wrapper = Wrappers.query(); + wrapper.like(StringUtils.isNotBlank(bo.getPostCode()), "post_code", bo.getPostCode()) + .like(StringUtils.isNotBlank(bo.getPostName()), "post_name", bo.getPostName()) + .like(StringUtils.isNotBlank(bo.getPostCategory()), "post_category", bo.getPostCategory()) + .eq(StringUtils.isNotBlank(bo.getStatus()), "status", bo.getStatus()) + .and(ObjectUtil.isNotNull(bo.getDeptId()), w -> { + List deptList = deptMapper.selectList(new LambdaQueryWrapper() + .select(SysDept::getDeptId) + .apply(DataBaseHelper.findInSet(bo.getDeptId(), "ancestors"))); + List ids = StreamUtils.toList(deptList, SysDept::getDeptId); + ids.add(bo.getDeptId()); + w.in("dept_id", ids); + }).orderByAsc("post_sort"); + return wrapper; } /** diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml index 199dffe4d..95a11b252 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml @@ -7,8 +7,19 @@ + +