岗位中增加部门信息,岗位列表查询条件支持按部门(及子部门)查询

This commit is contained in:
高雄 2025-08-06 15:14:59 +08:00
parent 24d275045a
commit adc074804e
10 changed files with 95 additions and 11 deletions

View File

@ -31,6 +31,10 @@ public class PostEntity extends AuditableEntity implements Serializable {
@TableId(value = "post_id", type = IdType.ASSIGN_UUID)
private String postId;
@ApiModelProperty("部门id")
@TableField("dept_id")
private String deptId;
@ApiModelProperty("岗位名称")
@TableField("post_name")
private String postName;

View File

@ -0,0 +1,29 @@
package com.dite.znpt.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* @author Bear.G
* @date 2025/8/6/周三 14:37
* @description
*/
@Data
@ApiModel("项目预算信息列表请求实体")
public class PostListReq implements Serializable {
@Serial
private static final long serialVersionUID = -3911963210474319099L;
@ApiModelProperty("岗位名称")
private String postName;
@ApiModelProperty("部门id")
private String deptId;
@ApiModelProperty("是否包含部门子节点")
private Boolean includeDeptChildren;
}

View File

@ -21,6 +21,10 @@ public class PostReq implements Serializable {
@Serial
private static final long serialVersionUID = -149328762675637911L;
@ApiModelProperty("部门id")
@NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "部门id不能为空")
private String deptId;
@NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "岗位名称不能为空")
@Size(max = 30, groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "岗位名称长度不能超过30个字符")
@ApiModelProperty("岗位名称")

View File

@ -22,6 +22,12 @@ public class PostResp implements Serializable {
@ApiModelProperty("岗位id")
private String postId;
@ApiModelProperty("部门id")
private String deptId;
@ApiModelProperty("部门名称")
private String deptName;
@ApiModelProperty("岗位名称")
private String postName;

View File

@ -2,6 +2,10 @@ package com.dite.znpt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dite.znpt.domain.entity.PostEntity;
import com.dite.znpt.domain.vo.PostListReq;
import com.dite.znpt.domain.vo.PostResp;
import java.util.List;
/**
* @author Bear.G
@ -9,4 +13,6 @@ import com.dite.znpt.domain.entity.PostEntity;
* @description
*/
public interface PostMapper extends BaseMapper<PostEntity> {
List<PostResp> selectPostResp(PostListReq req);
}

View File

@ -2,6 +2,7 @@ package com.dite.znpt.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dite.znpt.domain.entity.PostEntity;
import com.dite.znpt.domain.vo.PostListReq;
import com.dite.znpt.domain.vo.PostReq;
import com.dite.znpt.domain.vo.PostResp;
@ -14,9 +15,9 @@ import java.util.List;
*/
public interface PostService extends IService<PostEntity> {
List<PostResp> page(String postName);
List<PostResp> page(PostListReq req);
List<PostResp> list(String postName);
List<PostResp> list(PostListReq req);
PostResp detail(String postId);

View File

@ -5,16 +5,20 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dite.znpt.constant.Message;
import com.dite.znpt.converts.Converts;
import com.dite.znpt.domain.entity.DeptEntity;
import com.dite.znpt.domain.entity.PostEntity;
import com.dite.znpt.domain.vo.PostListReq;
import com.dite.znpt.domain.vo.PostReq;
import com.dite.znpt.domain.vo.PostResp;
import com.dite.znpt.exception.ServiceException;
import com.dite.znpt.mapper.DeptMapper;
import com.dite.znpt.mapper.PostMapper;
import com.dite.znpt.service.PostService;
import com.dite.znpt.util.PageUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
/**
@ -25,15 +29,18 @@ import java.util.List;
@Service
public class PostServiceImpl extends ServiceImpl<PostMapper, PostEntity> implements PostService {
@Resource
private DeptMapper deptMapper;
@Override
public List<PostResp> page(String postName) {
public List<PostResp> page(PostListReq req) {
PageUtil.startPage();
return this.list(postName);
return this.list(req);
}
@Override
public List<PostResp> list(String postName) {
return Converts.INSTANCE.toPostResp(this.list(Wrappers.lambdaQuery(PostEntity.class).like(StrUtil.isNotBlank(postName), PostEntity::getPostName, postName)));
public List<PostResp> list(PostListReq req) {
return this.baseMapper.selectPostResp(req);
}
@Override

View File

@ -2,4 +2,30 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dite.znpt.mapper.PostMapper">
<select id="selectPostResp" resultType="com.dite.znpt.domain.vo.PostResp">
SELECT p.*, d.dept_name FROM post p
LEFT JOIN dept d ON p.dept_id = d.dept_id
<where>
<if test="postName != null and postName != ''">
AND p.post_name LIKE concat('%',#{postName}, '%')
</if>
<if test="deptId != null and deptId != ''">
<choose >
<when test="includeDeptChildren">
AND p.dept_id IN (
WITH RECURSIVE SubDepts AS (
SELECT * FROM dept WHERE del_flag = '0' AND dept_id = #{deptId}
UNION ALL
SELECT d.* FROM dept d INNER JOIN SubDepts sd ON d.parent_id = sd.dept_id WHERE d.del_flag = '0'
) SELECT dept_id FROM SubDepts
)
</when>
<otherwise>
AND p.dept_id = #{deptId}
</otherwise>
</choose>
AND d.del_flag = '0'
</if>
</where>
</select>
</mapper>

View File

@ -2,6 +2,7 @@ package com.dite.znpt.web.controller;
import com.dite.znpt.domain.PageResult;
import com.dite.znpt.domain.Result;
import com.dite.znpt.domain.vo.PostListReq;
import com.dite.znpt.domain.vo.PostReq;
import com.dite.znpt.domain.vo.PostResp;
import com.dite.znpt.service.PostService;
@ -28,14 +29,14 @@ public class PostController {
@ApiOperation(value = "分页查询岗位信息列表", httpMethod = "GET")
@GetMapping("/page")
public PageResult<PostResp> page(@RequestParam(value = "postName", required = false) String postName){
return PageResult.ok(postService.page(postName));
public PageResult<PostResp> page(PostListReq req){
return PageResult.ok(postService.page(req));
}
@ApiOperation(value = "查询岗位信息列表", httpMethod = "GET")
@GetMapping("/list")
public Result<List<PostResp>> list(@RequestParam(value = "postName", required = false) String postName){
return Result.ok(postService.list(postName));
public Result<List<PostResp>> list(PostListReq req){
return Result.ok(postService.list(req));
}
@ApiOperation(value = "查询岗位信息详情", httpMethod = "GET")

View File

@ -14,7 +14,7 @@ spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://39.99.201.243:3306/test01?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
url: jdbc:mysql://39.99.201.243:3306/znpt_dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: BUw8YW6%@^8q
druid: