设备开发,岗位开发

This commit is contained in:
lhx
2025-12-04 10:43:04 +08:00
parent 410d54e56d
commit 125bde8a2d
9 changed files with 338 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
package com.dc.dc_project.controller;
import cn.dev33.satoken.stp.StpUtil;
import com.dc.dc_project.common.ResponseResult;
import com.dc.dc_project.model.dto.*;
import com.dc.dc_project.model.pojo.PersonnelPosition;
import com.dc.dc_project.model.pojo.Position;
import com.dc.dc_project.service.PositionService;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
@RestController
@RequestMapping("/position")
public class PositionController {
private final PositionService positionService;
@PostMapping("/list")
public ResponseResult list(@RequestBody PositionQueDto positionDto) {
Long userId = StpUtil.getLoginIdAsLong();
return positionService.getList(positionDto, userId);
}
@PostMapping("/add")
public ResponseResult add(@RequestBody PositionAddDto position) {
Long userId = StpUtil.getLoginIdAsLong();
return positionService.add(position, userId);
}
@PostMapping("/delete")
public ResponseResult delete(@RequestBody Position position) {
Long userId = StpUtil.getLoginIdAsLong();
return positionService.delete(position, userId);
}
@PostMapping("/update")
public ResponseResult update(@RequestBody PositionUpdateDto position) {
Long userId = StpUtil.getLoginIdAsLong();
return positionService.updatePosition(position, userId);
}
@PostMapping("/grant")
public ResponseResult grant(@RequestBody @Validated PersonnelPositionGrantDto personnelPosition) {
Long userId = StpUtil.getLoginIdAsLong();
return positionService.grant(personnelPosition, userId);
}
@PostMapping("/revoke")
public ResponseResult revoke(@RequestBody PersonnelPositionRevokeDto personnelPosition) {
Long userId = StpUtil.getLoginIdAsLong();
return positionService.revoke(personnelPosition, userId);
}
}

View File

@@ -0,0 +1,29 @@
package com.dc.dc_project.model.dto;
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 jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 人员岗位表
* @TableName sys_personnel_position
*/
@Data
public class PersonnelPositionGrantDto {
@NotNull
private Long personnelId;
@NotNull
private Long positionId;
private String remark;
}

View File

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

View File

@@ -0,0 +1,28 @@
package com.dc.dc_project.model.dto;
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 lombok.Data;
import java.time.LocalDateTime;
/**
* 岗位信息表
* @TableName sys_position
*/
@Data
public class PositionAddDto {
private String name;
private Long orgId;
private String remark;
}

View File

@@ -0,0 +1,16 @@
package com.dc.dc_project.model.dto;
import lombok.Data;
@Data
public class PositionQueDto {
private Long id;
private String name;
private String remark;
private Long orgId;
}

View File

@@ -0,0 +1,25 @@
package com.dc.dc_project.model.dto;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* 岗位信息表
* @TableName sys_position
*/
@Data
public class PositionUpdateDto {
@NotNull
private Long id;
private String name;
private Long orgId;
private String remark;
}

View File

@@ -1,6 +1,7 @@
package com.dc.dc_project.model.vo; package com.dc.dc_project.model.vo;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.dc.dc_project.model.pojo.Position;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@@ -47,5 +48,17 @@ public class PositionVo {
*/ */
private Integer isDeleted; private Integer isDeleted;
public static PositionVo potoVo(Position position){
PositionVo positionVo = new PositionVo();
positionVo.setId(position.getId());
positionVo.setName(position.getName());
positionVo.setOrgId(position.getOrgId());
positionVo.setRemark(position.getRemark());
positionVo.setCreatedAt(position.getCreatedAt());
positionVo.setUpdatedAt(position.getUpdatedAt());
positionVo.setIsDeleted(position.getIsDeleted());
return positionVo;
}
} }

View File

@@ -1,5 +1,8 @@
package com.dc.dc_project.service; package com.dc.dc_project.service;
import com.dc.dc_project.common.ResponseResult;
import com.dc.dc_project.model.dto.*;
import com.dc.dc_project.model.pojo.PersonnelPosition;
import com.dc.dc_project.model.pojo.Position; import com.dc.dc_project.model.pojo.Position;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
@@ -10,4 +13,51 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/ */
public interface PositionService extends IService<Position> { public interface PositionService extends IService<Position> {
/**
* 获取岗位列表
* @param positionDto
* @param userId
* @return
*/
ResponseResult getList(PositionQueDto positionDto, Long userId);
/**
* 添加岗位
* @param position
* @param userId
* @return
*/
ResponseResult add(PositionAddDto position, Long userId);
/**
* 删除岗位
* @param position
* @param userId
* @return
*/
ResponseResult delete(Position position, Long userId);
/**
* 修改岗位
* @param position
* @param userId
* @return
*/
ResponseResult updatePosition(PositionUpdateDto position, Long userId);
/**
* 岗位授权
* @param personnelPosition
* @param userId
* @return
*/
ResponseResult grant(PersonnelPositionGrantDto personnelPosition, Long userId);
/**
* 岗位撤销授权
* @param personnelPosition
* @param userId
* @return
*/
ResponseResult revoke(PersonnelPositionRevokeDto personnelPosition, Long userId);
} }

View File

@@ -1,19 +1,125 @@
package com.dc.dc_project.service; package com.dc.dc_project.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dc.dc_project.common.ResponseResult;
import com.dc.dc_project.common.ResultCode;
import com.dc.dc_project.enums.IsDeleted;
import com.dc.dc_project.mapper.OrgMapper;
import com.dc.dc_project.mapper.PersonnelPositionMapper;
import com.dc.dc_project.model.dto.*;
import com.dc.dc_project.model.pojo.Org;
import com.dc.dc_project.model.pojo.PersonnelPosition;
import com.dc.dc_project.model.pojo.Position; import com.dc.dc_project.model.pojo.Position;
import com.dc.dc_project.mapper.PositionMapper; import com.dc.dc_project.mapper.PositionMapper;
import com.dc.dc_project.model.vo.PositionVo;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import static com.dc.dc_project.model.vo.PositionVo.potoVo;
/** /**
* @author ADMIN * @author ADMIN
* @description 针对表【sys_position(岗位信息表)】的数据库操作Service实现 * @description 针对表【sys_position(岗位信息表)】的数据库操作Service实现
* @createDate 2025-11-14 16:39:29 * @createDate 2025-11-14 16:39:29
*/ */
@Service @Service
@RequiredArgsConstructor(onConstructor_ = @__(@Autowired))
public class PositionServiceImpl extends ServiceImpl<PositionMapper, Position> public class PositionServiceImpl extends ServiceImpl<PositionMapper, Position>
implements PositionService{ implements PositionService{
private final OrgMapper orgMapper;
private final PersonnelPositionMapper personnelPositionMapper;
@Override
public ResponseResult getList(PositionQueDto positionDto, Long userId) {
LambdaQueryWrapper<Position> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(Position::getName, positionDto.getName())
.like(Position::getRemark, positionDto.getRemark())
.eq(Position::getId, positionDto.getId())
.eq(Position::getIsDeleted, IsDeleted.NO.getCode())
.eq(Position::getOrgId, positionDto.getOrgId());
List<Position> list = list(queryWrapper);
List<PositionVo> positionVos = new ArrayList<>(list.size());
for (Position position : list){
PositionVo positionVo = potoVo(position);
LambdaQueryWrapper<Org> orgQueryWrapper = new LambdaQueryWrapper<>();
orgQueryWrapper.select(Org::getName).eq(Org::getId, position.getOrgId());
positionVo.setOrgName(orgMapper.selectOne(orgQueryWrapper).getName());
positionVos.add(positionVo);
}
return ResponseResult.success(positionVos);
}
@Override
public ResponseResult add(PositionAddDto addPosition, Long userId) {
Position position = new Position();
position.setName(addPosition.getName());
position.setOrgId(addPosition.getOrgId());
position.setRemark(addPosition.getRemark());
return save(position) ? ResponseResult.success() : ResponseResult.error();
}
@Override
public ResponseResult delete(Position position, Long userId) {
if(position.getId() == null){
return ResponseResult.error("参数错误");
}
Position position1 = this.getById(position.getId());
if (position1 == null) {
return ResponseResult.error(ResultCode.FAILURE);
}
position1.setIsDeleted(IsDeleted.YES.getCode());
return updateById(position1) ? ResponseResult.success() : ResponseResult.error();
}
@Override
public ResponseResult updatePosition(PositionUpdateDto updatePosition, Long userId) {
Position position = this.getById(updatePosition.getId());
if (position == null) {
return ResponseResult.error(ResultCode.FAILURE);
}
position.setName(updatePosition.getName() == null ? position.getName() : updatePosition.getName());
position.setOrgId(updatePosition.getOrgId() == null ? position.getOrgId() : updatePosition.getOrgId());
position.setRemark(updatePosition.getRemark() == null ? position.getRemark() : updatePosition.getRemark());
return updateById(position) ? ResponseResult.success() : ResponseResult.error();
}
@Override
public ResponseResult grant(PersonnelPositionGrantDto personnelPosition, Long userId) {
if(personnelPositionMapper.exists(new LambdaQueryWrapper<PersonnelPosition>()
.eq(PersonnelPosition::getPersonnelId, personnelPosition.getPersonnelId())
.eq(PersonnelPosition::getPositionId, personnelPosition.getPositionId())
)){
return ResponseResult.error("已存在");
}
PersonnelPosition personnelPosition1 = new PersonnelPosition();
personnelPosition1.setPersonnelId(personnelPosition.getPersonnelId());
personnelPosition1.setPositionId(personnelPosition.getPositionId());
personnelPosition1.setRemark(personnelPosition.getRemark());
return personnelPositionMapper.insert(personnelPosition1) > 0 ? ResponseResult.success() : ResponseResult.error();
}
@Override
public ResponseResult revoke(PersonnelPositionRevokeDto personnelPosition, Long userId) {
if(!personnelPositionMapper.exists(new LambdaQueryWrapper<PersonnelPosition>().eq(PersonnelPosition::getId, personnelPosition.getId()))){
return ResponseResult.error("不存在");
}
return personnelPositionMapper.deleteById(personnelPosition.getId()) > 0 ? ResponseResult.success() : ResponseResult.error();
}
} }