人员完善
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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> {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
10
src/main/java/com/dc/dc_project/model/dto/DeleteDto.java
Normal file
10
src/main/java/com/dc/dc_project/model/dto/DeleteDto.java
Normal file
@@ -0,0 +1,10 @@
|
||||
package com.dc.dc_project.model.dto;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DeleteDto {
|
||||
|
||||
private Long[] ids;
|
||||
}
|
||||
@@ -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> {
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -42,7 +42,7 @@ public class PersonnelOrg {
|
||||
* 创建人
|
||||
*/
|
||||
@TableField(value = "created_by")
|
||||
private String createdBy;
|
||||
private Long createdBy;
|
||||
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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> {
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
|
||||
11
src/main/resources/mapper/PersonnelPositionMapper.xml
Normal file
11
src/main/resources/mapper/PersonnelPositionMapper.xml
Normal 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>
|
||||
Reference in New Issue
Block a user