feat: 员工信息管理功能完善
- 将员工表org_no字段迁移至dept_id,关联系统部门表 - 更新员工信息相关DTO、VO和Controller,使用deptId替代orgNo - 添加员工信息管理OpenSpec规范文档(proposal/design/spec/tasks) - 更新API文档,反映部门关联变更 - 添加数据库迁移脚本employee_org_no_to_dept_id.sql - 新增员工信息分页接口测试脚本(PowerShell/Python) - 更新CLAUDE.md,添加MCP数据库工具使用说明 Co-Authored-By: Claude (glm-4.7) <noreply@anthropic.com>
This commit is contained in:
@@ -143,7 +143,7 @@ public class DpcEmployeeController extends BaseController {
|
||||
DpcEmployeeAddDTO dto = new DpcEmployeeAddDTO();
|
||||
dto.setName(entity.getName());
|
||||
dto.setTellerNo(entity.getTellerNo());
|
||||
dto.setOrgNo(entity.getOrgNo());
|
||||
dto.setDeptId(entity.getDeptId());
|
||||
dto.setIdCard(entity.getIdCard());
|
||||
dto.setPhone(entity.getPhone());
|
||||
dto.setHireDate(entity.getHireDate());
|
||||
|
||||
@@ -35,9 +35,9 @@ public class DpcEmployee implements Serializable {
|
||||
@Excel(name = "柜员号")
|
||||
private String tellerNo;
|
||||
|
||||
/** 所属机构号 */
|
||||
@Excel(name = "所属机构号")
|
||||
private String orgNo;
|
||||
/** 所属部门ID */
|
||||
@Excel(name = "所属部门ID")
|
||||
private Long deptId;
|
||||
|
||||
/** 身份证号 */
|
||||
@Excel(name = "身份证号")
|
||||
|
||||
@@ -35,10 +35,9 @@ public class DpcEmployeeAddDTO implements Serializable {
|
||||
@Size(max = 50, message = "柜员号长度不能超过50个字符")
|
||||
private String tellerNo;
|
||||
|
||||
/** 所属机构号 */
|
||||
@Excel(name = "所属机构号")
|
||||
@Size(max = 50, message = "所属机构号长度不能超过50个字符")
|
||||
private String orgNo;
|
||||
/** 所属部门ID */
|
||||
@Excel(name = "所属部门ID")
|
||||
private Long deptId;
|
||||
|
||||
/** 身份证号 */
|
||||
@Excel(name = "身份证号")
|
||||
|
||||
@@ -37,10 +37,9 @@ public class DpcEmployeeEditDTO implements Serializable {
|
||||
@Size(max = 50, message = "柜员号长度不能超过50个字符")
|
||||
private String tellerNo;
|
||||
|
||||
/** 所属机构号 */
|
||||
@Excel(name = "所属机构号")
|
||||
@Size(max = 50, message = "所属机构号长度不能超过50个字符")
|
||||
private String orgNo;
|
||||
/** 所属部门ID */
|
||||
@Excel(name = "所属部门ID")
|
||||
private Long deptId;
|
||||
|
||||
/** 身份证号 */
|
||||
@Excel(name = "身份证号")
|
||||
|
||||
@@ -23,8 +23,8 @@ public class DpcEmployeeQueryDTO implements Serializable {
|
||||
/** 柜员号(精确查询) */
|
||||
private String tellerNo;
|
||||
|
||||
/** 所属机构号 */
|
||||
private String orgNo;
|
||||
/** 所属部门ID */
|
||||
private Long deptId;
|
||||
|
||||
/** 身份证号(精确查询) */
|
||||
private String idCard;
|
||||
|
||||
@@ -28,8 +28,11 @@ public class DpcEmployeeVO implements Serializable {
|
||||
/** 柜员号 */
|
||||
private String tellerNo;
|
||||
|
||||
/** 所属机构号 */
|
||||
private String orgNo;
|
||||
/** 所属部门ID */
|
||||
private Long deptId;
|
||||
|
||||
/** 所属部门名称 */
|
||||
private String deptName;
|
||||
|
||||
/** 身份证号 */
|
||||
private String idCard;
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package com.ruoyi.dpc.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ruoyi.dpc.domain.DpcEmployee;
|
||||
import com.ruoyi.dpc.domain.dto.DpcEmployeeQueryDTO;
|
||||
import com.ruoyi.dpc.domain.vo.DpcEmployeeVO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
@@ -13,6 +15,16 @@ import org.apache.ibatis.annotations.Param;
|
||||
*/
|
||||
public interface DpcEmployeeMapper extends BaseMapper<DpcEmployee> {
|
||||
|
||||
/**
|
||||
* 分页查询员工列表(包含部门名称)
|
||||
*
|
||||
* @param page 分页对象
|
||||
* @param queryDTO 查询条件
|
||||
* @return 员工VO分页结果
|
||||
*/
|
||||
Page<DpcEmployeeVO> selectEmployeePageWithDept(@Param("page") Page<DpcEmployeeVO> page,
|
||||
@Param("query") DpcEmployeeQueryDTO queryDTO);
|
||||
|
||||
/**
|
||||
* 查询员工详情(包含亲属列表)
|
||||
*
|
||||
|
||||
@@ -63,18 +63,20 @@ public class DpcEmployeeServiceImpl implements IDpcEmployeeService {
|
||||
*/
|
||||
@Override
|
||||
public Page<DpcEmployeeVO> selectEmployeePage(Page<DpcEmployee> page, DpcEmployeeQueryDTO queryDTO) {
|
||||
LambdaQueryWrapper<DpcEmployee> wrapper = buildQueryWrapper(queryDTO);
|
||||
Page<DpcEmployee> resultPage = employeeMapper.selectPage(page, wrapper);
|
||||
// 使用关联查询获取部门名称
|
||||
Page<DpcEmployeeVO> voPage = new Page<>(page.getCurrent(), page.getSize());
|
||||
Page<DpcEmployeeVO> resultPage = employeeMapper.selectEmployeePageWithDept(voPage, queryDTO);
|
||||
|
||||
// 直接复用resultPage,只转换records
|
||||
Page<DpcEmployeeVO> voPage = new Page<>(resultPage.getCurrent(), resultPage.getSize(), resultPage.getTotal());
|
||||
voPage.setRecords(resultPage.getRecords().stream()
|
||||
.map(this::convertToVO)
|
||||
.collect(Collectors.toList()));
|
||||
// 复制其他分页信息
|
||||
voPage.setPages(resultPage.getPages());
|
||||
// 设置状态描述
|
||||
resultPage.getRecords().forEach(vo -> {
|
||||
if ("0".equals(vo.getStatus())) {
|
||||
vo.setStatusDesc("在职");
|
||||
} else if ("1".equals(vo.getStatus())) {
|
||||
vo.setStatusDesc("离职");
|
||||
}
|
||||
});
|
||||
|
||||
return voPage;
|
||||
return resultPage;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -262,7 +264,7 @@ public class DpcEmployeeServiceImpl implements IDpcEmployeeService {
|
||||
LambdaQueryWrapper<DpcEmployee> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.like(StringUtils.isNotEmpty(queryDTO.getName()), DpcEmployee::getName, queryDTO.getName())
|
||||
.eq(StringUtils.isNotEmpty(queryDTO.getTellerNo()), DpcEmployee::getTellerNo, queryDTO.getTellerNo())
|
||||
.eq(StringUtils.isNotEmpty(queryDTO.getOrgNo()), DpcEmployee::getOrgNo, queryDTO.getOrgNo())
|
||||
.eq(queryDTO.getDeptId() != null, DpcEmployee::getDeptId, queryDTO.getDeptId())
|
||||
.eq(StringUtils.isNotEmpty(queryDTO.getIdCard()), DpcEmployee::getIdCard, queryDTO.getIdCard())
|
||||
.eq(StringUtils.isNotEmpty(queryDTO.getStatus()), DpcEmployee::getStatus, queryDTO.getStatus())
|
||||
.orderByDesc(DpcEmployee::getCreateTime);
|
||||
|
||||
Reference in New Issue
Block a user