人员完善

This commit is contained in:
lhx
2025-11-27 18:24:02 +08:00
parent 6c8dccee6e
commit df315d455a
15 changed files with 388 additions and 35 deletions

View File

@@ -4,7 +4,10 @@ package com.dc.dc_project.controller;
import cn.dev33.satoken.stp.StpUtil;
import com.dc.dc_project.common.ResponseResult;
import com.dc.dc_project.common.aop.DcCheckPermission;
import com.dc.dc_project.model.dto.DeleteDto;
import com.dc.dc_project.model.dto.PersonnelDto;
import com.dc.dc_project.model.dto.PersonnelNewDto;
import com.dc.dc_project.model.dto.PersonnelUpdateDto;
import com.dc.dc_project.service.PersonnelService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
@@ -26,4 +29,25 @@ public class PersonnelController {
Long userId = StpUtil.getLoginIdAsLong();
return personnelService.getList(personnelDto, userId);
}
@PostMapping("/add")
@DcCheckPermission("system:personnel:add")
public ResponseResult add(@RequestBody PersonnelNewDto personnelDto) {
Long userId = StpUtil.getLoginIdAsLong();
return personnelService.add(personnelDto, userId);
}
@PostMapping("/delete")
@DcCheckPermission("system:personnel:delete")
public ResponseResult delete(@RequestBody DeleteDto dto) {
Long userId = StpUtil.getLoginIdAsLong();
return personnelService.delete(dto, userId);
}
@PostMapping("/update")
@DcCheckPermission("system:personnel:update")
public ResponseResult update(@RequestBody PersonnelUpdateDto personnelDto) {
Long userId = StpUtil.getLoginIdAsLong();
return personnelService.updatePersonnel(personnelDto, userId);
}
}

View File

@@ -0,0 +1,18 @@
package com.dc.dc_project.mapper;
import com.dc.dc_project.model.pojo.PersonnelPosition;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author ADMIN
* @description 针对表【sys_personnel_position(人员岗位表)】的数据库操作Mapper
* @createDate 2025-11-27 15:44:41
* @Entity com.dc.dc_project.model.pojo.PersonnelPosition
*/
public interface PersonnelPositionMapper extends BaseMapper<PersonnelPosition> {
}

View File

@@ -0,0 +1,10 @@
package com.dc.dc_project.model.dto;
import lombok.Data;
@Data
public class DeleteDto {
private Long[] ids;
}

View File

@@ -4,7 +4,9 @@ package com.dc.dc_project.model.dto;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dc.dc_project.model.pojo.Personnel;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class PersonnelDto extends Page<Personnel> {

View File

@@ -0,0 +1,28 @@
package com.dc.dc_project.model.dto;
import lombok.Data;
@Data
public class PersonnelNewDto {
private String name;
private String contactPhone;
private String email;
private Integer sex;
private String mainResponsibility;
private String remark;
private String avatar;
private Long orgId;
private Long userId;
private Integer isUser;
}

View File

@@ -0,0 +1,28 @@
package com.dc.dc_project.model.dto;
import lombok.Data;
@Data
public class PersonnelUpdateDto {
private Long id;
private String name;
private String contactPhone;
private String email;
private Integer sex;
private String mainResponsibility;
private String remark;
private String avatar;
private Long orgId;
private Integer status;
}

View File

@@ -42,7 +42,7 @@ public class PersonnelOrg {
* 创建人
*/
@TableField(value = "created_by")
private String createdBy;
private Long createdBy;
}

View File

@@ -0,0 +1,101 @@
package com.dc.dc_project.model.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDateTime;
import lombok.Data;
/**
* 人员岗位表
* @TableName sys_personnel_position
*/
@TableName(value ="sys_personnel_position")
@Data
public class PersonnelPosition {
/**
*
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
*
*/
@TableField(value = "personnel_id")
private Long personnelId;
/**
*
*/
@TableField(value = "position_id")
private Long positionId;
/**
* 备注
*/
@TableField(value = "remark")
private String remark;
/**
* 创建时间
*/
@TableField(value = "created_at")
private LocalDateTime createdAt;
/**
* 更新时间
*/
@TableField(value = "updated_at")
private LocalDateTime updatedAt;
@Override
public boolean equals(Object that) {
if (this == that) {
return true;
}
if (that == null) {
return false;
}
if (getClass() != that.getClass()) {
return false;
}
PersonnelPosition other = (PersonnelPosition) that;
return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
&& (this.getPersonnelId() == null ? other.getPersonnelId() == null : this.getPersonnelId().equals(other.getPersonnelId()))
&& (this.getPositionId() == null ? other.getPositionId() == null : this.getPositionId().equals(other.getPositionId()))
&& (this.getRemark() == null ? other.getRemark() == null : this.getRemark().equals(other.getRemark()))
&& (this.getCreatedAt() == null ? other.getCreatedAt() == null : this.getCreatedAt().equals(other.getCreatedAt()))
&& (this.getUpdatedAt() == null ? other.getUpdatedAt() == null : this.getUpdatedAt().equals(other.getUpdatedAt()));
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
result = prime * result + ((getPersonnelId() == null) ? 0 : getPersonnelId().hashCode());
result = prime * result + ((getPositionId() == null) ? 0 : getPositionId().hashCode());
result = prime * result + ((getRemark() == null) ? 0 : getRemark().hashCode());
result = prime * result + ((getCreatedAt() == null) ? 0 : getCreatedAt().hashCode());
result = prime * result + ((getUpdatedAt() == null) ? 0 : getUpdatedAt().hashCode());
return result;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", personnelId=").append(personnelId);
sb.append(", positionId=").append(positionId);
sb.append(", remark=").append(remark);
sb.append(", createdAt=").append(createdAt);
sb.append(", updatedAt=").append(updatedAt);
sb.append("]");
return sb.toString();
}
}

View File

@@ -0,0 +1,13 @@
package com.dc.dc_project.service;
import com.dc.dc_project.model.pojo.PersonnelPosition;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author ADMIN
* @description 针对表【sys_personnel_position(人员岗位表)】的数据库操作Service
* @createDate 2025-11-27 15:44:41
*/
public interface PersonnelPositionService extends IService<PersonnelPosition> {
}

View File

@@ -1,7 +1,10 @@
package com.dc.dc_project.service;
import com.dc.dc_project.common.ResponseResult;
import com.dc.dc_project.model.dto.DeleteDto;
import com.dc.dc_project.model.dto.PersonnelDto;
import com.dc.dc_project.model.dto.PersonnelNewDto;
import com.dc.dc_project.model.dto.PersonnelUpdateDto;
import com.dc.dc_project.model.pojo.Personnel;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -26,4 +29,20 @@ public interface PersonnelService extends IService<Personnel> {
* @return
*/
ResponseResult getList(PersonnelDto personnelDto, Long userId);
/**
* 新增人员
* @param personnelDto
* @return
*/
ResponseResult add(PersonnelNewDto personnelDto, Long userId);
ResponseResult delete(DeleteDto dto, Long userId);
/**
* 修改人员信息
* @param personnelDto
* @return
*/
ResponseResult updatePersonnel(PersonnelUpdateDto personnelDto, Long userId);
}

View File

@@ -0,0 +1,22 @@
package com.dc.dc_project.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dc.dc_project.model.pojo.PersonnelPosition;
import com.dc.dc_project.service.PersonnelPositionService;
import com.dc.dc_project.mapper.PersonnelPositionMapper;
import org.springframework.stereotype.Service;
/**
* @author ADMIN
* @description 针对表【sys_personnel_position(人员岗位表)】的数据库操作Service实现
* @createDate 2025-11-27 15:44:41
*/
@Service
public class PersonnelPositionServiceImpl extends ServiceImpl<PersonnelPositionMapper, PersonnelPosition>
implements PersonnelPositionService{
}

View File

@@ -7,19 +7,21 @@ import com.dc.dc_project.common.ResponseResult;
import com.dc.dc_project.enums.DataScopeType;
import com.dc.dc_project.enums.IsDeleted;
import com.dc.dc_project.mapper.OrgMapper;
import com.dc.dc_project.model.dto.DeleteDto;
import com.dc.dc_project.model.dto.PersonnelDto;
import com.dc.dc_project.model.pojo.Org;
import com.dc.dc_project.model.pojo.Personnel;
import com.dc.dc_project.model.dto.PersonnelNewDto;
import com.dc.dc_project.model.dto.PersonnelUpdateDto;
import com.dc.dc_project.model.pojo.*;
import com.dc.dc_project.model.vo.PersonnelListVo;
import com.dc.dc_project.model.vo.PersonnelVo;
import com.dc.dc_project.service.OrgService;
import com.dc.dc_project.service.PersonnelService;
import com.dc.dc_project.service.*;
import com.dc.dc_project.mapper.PersonnelMapper;
import com.dc.dc_project.utils.PermissionUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@@ -31,12 +33,15 @@ import java.util.List;
@Service
@Slf4j
@RequiredArgsConstructor(onConstructor_ = @Autowired)
@Transactional
public class PersonnelServiceImpl extends ServiceImpl<PersonnelMapper, Personnel>
implements PersonnelService{
private final PersonnelMapper personnelMapper;
private final OrgMapper orgMapper;
private final OrgService orgService;
private final PersonnelOrgService personnelOrgService;
private final UserService userService;
private final PersonnelPositionService personnelPositionService;
@Override
@@ -65,7 +70,89 @@ public class PersonnelServiceImpl extends ServiceImpl<PersonnelMapper, Personnel
Page<PersonnelListVo> page = baseMapper.getPage(personnelDto, orgIds);
return null;
return ResponseResult.success(page);
}
@Override
public ResponseResult add(PersonnelNewDto personnelDto, Long userId) {
Personnel personnel = new Personnel();
personnel.setName(personnelDto.getName());
personnel.setAvatar(personnelDto.getAvatar());
personnel.setContactPhone(personnelDto.getContactPhone());
personnel.setEmail(personnelDto.getEmail());
personnel.setSex(personnelDto.getSex());
personnel.setMainResponsibility(personnelDto.getMainResponsibility());
personnel.setRemark(personnelDto.getRemark());
personnel.setStatus(1);
personnel.setCreatedBy(userId);
if(personnelDto.getOrgId() != null){
PersonnelOrg personnelOrg = new PersonnelOrg();
personnelOrg.setPersonnelId(personnel.getId());
personnelOrg.setOrgId(personnelDto.getOrgId());
personnelOrg.setCreatedBy(userId);
personnelOrgService.save(personnelOrg);
}
if(personnelDto.getIsUser() == 1){
User user = new User();
user.setUsername(personnel.getName());
// 密码加密
user.setPassword(personnelDto.getContactPhone());
user.setPhone(personnel.getContactPhone());
user.setStatus(1);
user.setRemark(personnel.getRemark());
userService.save(user);
personnel.setUserId(user.getId());
}
if (this.save(personnel)){
return ResponseResult.success();
}
return ResponseResult.error();
}
@Override
public ResponseResult delete(DeleteDto dto, Long userId) {
// 权限范围检查
LambdaQueryWrapper<Personnel> queryWrapper = new LambdaQueryWrapper<Personnel>()
.in(Personnel::getId, (Object) dto.getIds());
List<Personnel> personnels = this.list(queryWrapper);
for (Personnel personnel : personnels) {
if (personnel.getUserId() != null) {
User user = userService.getById(personnel.getUserId());
if (user != null) {
user.setIsDeleted(1);
userService.updateById(user);
}
}
personnelOrgService.remove(new LambdaQueryWrapper<PersonnelOrg>().eq(PersonnelOrg::getPersonnelId, personnel.getId()));
personnelPositionService.remove(new LambdaQueryWrapper<PersonnelPosition>().eq(PersonnelPosition::getPersonnelId, personnel.getId()));
personnel.setIsDeleted(1);
}
if (this.updateBatchById(personnels)){
return ResponseResult.success();
}
return ResponseResult.error();
}
@Override
public ResponseResult updatePersonnel(PersonnelUpdateDto personnelDto, Long userId) {
Personnel personnel = this.getById(personnelDto.getId());
personnel.setName(personnelDto.getName() != null ? personnelDto.getName() : personnel.getName());
personnel.setAvatar(personnelDto.getAvatar() != null ? personnelDto.getAvatar() : personnel.getAvatar());
personnel.setContactPhone(personnelDto.getContactPhone() != null ? personnelDto.getContactPhone() : personnel.getContactPhone());
personnel.setEmail(personnelDto.getEmail() != null ? personnelDto.getEmail() : personnel.getEmail());
personnel.setSex(personnelDto.getSex() != null ? personnelDto.getSex() : personnel.getSex());
personnel.setMainResponsibility(personnelDto.getMainResponsibility() != null ? personnelDto.getMainResponsibility() : personnel.getMainResponsibility());
personnel.setRemark(personnelDto.getRemark() != null ? personnelDto.getRemark() : personnel.getRemark());
personnel.setStatus(personnelDto.getStatus() != null ? personnelDto.getStatus() : personnel.getStatus());
if (this.updateById(personnel)){
return ResponseResult.success();
}
return ResponseResult.error();
}
}

View File

@@ -1,24 +0,0 @@
package com.dc.dc_project.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dc.dc_project.model.pojo.PersonnelOrg;
import com.dc.dc_project.service.PersonnelOrgService;
import com.dc.dc_project.mapper.PersonnelOrgMapper;
import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j;
/**
* @author ADMIN
* @description 针对表【sys_role_org(角色-组织关系表)】的数据库操作Service实现
* @createDate 2025-11-12 09:41:21
*/
@Service
@Slf4j
public class RoleOrgServiceImpl extends ServiceImpl<PersonnelOrgMapper, PersonnelOrg>
implements PersonnelOrgService {
}

View File

@@ -15,10 +15,7 @@ import com.dc.dc_project.model.vo.PersonnelVo;
import com.dc.dc_project.model.vo.PositionVo;
import com.dc.dc_project.model.vo.UserInfoVo;
import com.dc.dc_project.model.vo.UserVo;
import com.dc.dc_project.service.OrgService;
import com.dc.dc_project.service.PermissionService;
import com.dc.dc_project.service.PersonnelService;
import com.dc.dc_project.service.UserService;
import com.dc.dc_project.service.*;
import com.dc.dc_project.utils.PermissionUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
@@ -54,6 +51,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
private final PositionMapper positionMapper;
private final PermissionService permissionService;
private final OrgService orgService;
private final UserRoleService userRoleService;
@Override
public ResponseResult login(LoginDto loginDto) {
@@ -220,6 +218,22 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
user.setIsDeleted(1);
}
List<Long> userIds = users.stream().map(User::getId).toList();
// 删除角色关联
LambdaQueryWrapper<UserRole> urQueryWrapper = new LambdaQueryWrapper<UserRole>()
.in(UserRole::getUserId, userIds);
userRoleService.remove(urQueryWrapper);
// 删除人员关联
LambdaQueryWrapper<Personnel> pQueryWrapper = new LambdaQueryWrapper<Personnel>()
.in(Personnel::getUserId, userIds);
List<Personnel> personnels =personnelService.list(pQueryWrapper);
for (Personnel personnel : personnels){
personnel.setUserId(null);
}
personnelService.updateBatchById(personnels);
return this.updateBatchById(users) ? ResponseResult.success() : ResponseResult.error();
}

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dc.dc_project.mapper.PersonnelPositionMapper">
<sql id="Base_Column_List">
id,personnel_id,position_id,remark,created_at,updated_at
</sql>
</mapper>