package com.gkhy.safePlatform.account.service.impl;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.gkhy.safePlatform.account.entity.user.PositionInfo;
|
import com.gkhy.safePlatform.account.entity.user.PositionInfoDO;
|
import com.gkhy.safePlatform.account.enums.PositionStatusEnum;
|
import com.gkhy.safePlatform.account.model.dto.req.PositionAddReqDTO;
|
import com.gkhy.safePlatform.account.model.dto.req.PositionModReqDTO;
|
import com.gkhy.safePlatform.account.model.dto.resp.PositionDetailRespDTO;
|
import com.gkhy.safePlatform.account.model.dto.resp.PositionRespDTO;
|
import com.gkhy.safePlatform.account.model.query.PositionPageQuery;
|
import com.gkhy.safePlatform.account.model.query.PositionQuery;
|
import com.gkhy.safePlatform.account.model.query.db.PositionDBQuery;
|
import com.gkhy.safePlatform.account.model.query.db.PositionPageDBQuery;
|
import com.gkhy.safePlatform.account.service.PositionService;
|
import com.gkhy.safePlatform.account.service.baseService.PositionInfoService;
|
import com.gkhy.safePlatform.account.service.baseService.UserInfoService;
|
import com.gkhy.safePlatform.commons.co.ContextCacheUser;
|
import com.gkhy.safePlatform.commons.enums.E;
|
import com.gkhy.safePlatform.commons.enums.ResultCodes;
|
import com.gkhy.safePlatform.commons.exception.AusinessException;
|
import com.gkhy.safePlatform.commons.exception.BusinessException;
|
import com.gkhy.safePlatform.commons.query.PageQuery;
|
import com.gkhy.safePlatform.commons.utils.StringUtils;
|
import com.gkhy.safePlatform.commons.vo.SearchResultVO;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import javax.swing.text.Position;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
@Service("positionService")
|
public class PositionServiceImpl implements PositionService {
|
|
@Autowired
|
private PositionInfoService positionInfoService;
|
@Autowired
|
private UserInfoService userInfoService;
|
|
|
@Override
|
public List<PositionRespDTO> listPositionInfo(ContextCacheUser currentUser, PositionQuery query) {
|
;
|
PositionDBQuery dbQuery = new PositionDBQuery();
|
dbQuery.setPositionCode(query.getPositionCode());
|
dbQuery.setPositionName(query.getPositionName());
|
List<PositionInfoDO> dos = positionInfoService.listPositionInfo(dbQuery);
|
|
List<PositionRespDTO> respDTOList = new ArrayList<>(dos.size());
|
PositionRespDTO respDTO;
|
for (PositionInfoDO positionInfoDO : dos) {
|
respDTO = new PositionRespDTO();
|
respDTO.setPositionId(positionInfoDO.getId());
|
respDTO.setPositionCode(positionInfoDO.getCode());
|
respDTO.setPositionName(positionInfoDO.getName());
|
respDTO.setStatus(positionInfoDO.getStatus());
|
PositionStatusEnum positionStatusEnum = PositionStatusEnum.parse(positionInfoDO.getStatus());
|
if (positionStatusEnum != null) {
|
respDTO.setStatusDesc(positionStatusEnum.getValue());
|
}
|
respDTOList.add(respDTO);
|
}
|
return respDTOList;
|
}
|
|
@Override
|
public SearchResultVO<List<PositionDetailRespDTO>> listPositionInfoByPage(ContextCacheUser currentUser, PageQuery<PositionQuery> pageQuery) {
|
;
|
Page<PositionInfo> page = new Page<>(pageQuery.getPageIndex(), pageQuery.getPageSize());
|
PositionPageDBQuery dbQuery = new PositionPageDBQuery();
|
if (pageQuery.getSearchParams() != null) {
|
dbQuery.setPositionCode(pageQuery.getSearchParams().getPositionCode());
|
dbQuery.setPositionName(pageQuery.getSearchParams().getPositionName());
|
|
}
|
List<PositionInfo> dos = positionInfoService.listPositionInfoByPage(page, dbQuery);
|
List<PositionDetailRespDTO> respDTOList = new ArrayList<>(dos.size());
|
if (dos.size() > 0) {
|
PositionDetailRespDTO respDTO;
|
for (PositionInfo positionInfo : dos) {
|
respDTO = new PositionDetailRespDTO();
|
respDTO.setPositionId(positionInfo.getId());
|
respDTO.setPositionCode(positionInfo.getCode());
|
respDTO.setPositionName(positionInfo.getName());
|
respDTO.setGmtCreate(positionInfo.getGmtCreate());
|
respDTO.setCreateBy(positionInfo.getCreateBy());
|
respDTO.setGmtModified(positionInfo.getGmtModified());
|
respDTO.setEditBy(positionInfo.getEditBy());
|
respDTO.setStatus(positionInfo.getStatus());
|
PositionStatusEnum positionStatusEnum = PositionStatusEnum.parse(positionInfo.getStatus());
|
if (positionStatusEnum != null) {
|
respDTO.setStatusDesc(positionStatusEnum.getValue());
|
}
|
respDTOList.add(respDTO);
|
}
|
}
|
return new SearchResultVO<>(
|
true,
|
page.getCurrent(),
|
page.getSize(),
|
page.getPages(),
|
page.getTotal(),
|
respDTOList,
|
ResultCodes.OK);
|
}
|
|
|
@Override
|
public void addPositionInfo(ContextCacheUser currentUser, PositionAddReqDTO positionAddReqDTO) {
|
;
|
if (StringUtils.isBlank(positionAddReqDTO.getPositionCode())) {
|
throw new AusinessException(E.DATA_PARAM_NULL, "岗位编码为空");
|
}
|
if (StringUtils.isBlank(positionAddReqDTO.getPositionName())) {
|
throw new AusinessException(E.DATA_PARAM_NULL, "岗位名称为空");
|
}
|
String code = positionAddReqDTO.getPositionCode().trim();
|
String name = positionAddReqDTO.getPositionName().trim();
|
// code 判重
|
PositionInfo positionInfo;
|
positionInfo = positionInfoService.getPositionInfoByCode(code);
|
if (positionInfo != null) {
|
throw new AusinessException(E.DATA_DATABASE_EXIST, "岗位编码已存在");
|
}
|
// name 判重
|
|
positionInfo = positionInfoService.getPositionInfoByName(name);
|
if (positionInfo != null) {
|
throw new AusinessException(E.DATA_DATABASE_EXIST, "岗位名称已存在");
|
}
|
|
// 1.新增
|
positionInfo = new PositionInfo();
|
positionInfo.setCode(code);
|
positionInfo.setName(name);
|
positionInfo.setCreateBy(currentUser.getRealName());
|
positionInfo.setCreateUid(currentUser.getUid());
|
positionInfo.setGmtCreate(new Date());
|
positionInfo.setStatus(PositionStatusEnum.ENABLED.getCode());
|
positionInfoService.savePositionInfo(positionInfo);
|
}
|
|
@Override
|
public void modPositionInfo(ContextCacheUser currentUser, PositionModReqDTO positionModReqDTO) {
|
;
|
// 数据判空
|
if (positionModReqDTO.getPositionId() == null) {
|
throw new BusinessException(ResultCodes.CLIENT_PARAM_NULL);
|
}
|
if (StringUtils.isBlank(positionModReqDTO.getPositionCode())) {
|
throw new AusinessException(E.DATA_PARAM_NULL, "岗位编码为空");
|
}
|
if (StringUtils.isBlank(positionModReqDTO.getPositionName())) {
|
throw new AusinessException(E.DATA_PARAM_NULL, "岗位名称为空");
|
}
|
String code = positionModReqDTO.getPositionCode().trim();
|
String name = positionModReqDTO.getPositionName().trim();
|
// 数据存在校验
|
PositionInfoDO positionInfoDO = positionInfoService.getPositionInfoById(positionModReqDTO.getPositionId());
|
if (positionInfoDO == null) {
|
throw new AusinessException(E.DATA_DATABASE_NO_EXISTENT, "岗位记录不存在");
|
}
|
if (!positionInfoDO.getStatus().equals(PositionStatusEnum.ENABLED.getCode())) {
|
throw new AusinessException(E.DATA_DATABASE_EXIST_BUT_NOT_VALID, "岗位记录不存在");
|
}
|
PositionInfo positionInfo;
|
// 岗位编码判重
|
positionInfo = positionInfoService.getPositionInfoByCode(code);
|
if (positionInfo != null && !positionInfo.getId().equals(positionInfoDO.getId())) {
|
throw new AusinessException(E.DATA_DATABASE_EXIST, "岗位编码已存在");
|
}
|
// 岗位名称判重
|
positionInfo = positionInfoService.getPositionInfoByName(name);
|
if (positionInfo != null && !positionInfo.getId().equals(positionInfoDO.getId())) {
|
throw new AusinessException(E.DATA_DATABASE_EXIST, "岗位名称已存在");
|
}
|
// 1.更新
|
positionInfo = new PositionInfo();
|
positionInfo.setId(positionInfoDO.getId());
|
positionInfo.setCode(positionModReqDTO.getPositionCode());
|
positionInfo.setName(positionModReqDTO.getPositionName());
|
positionInfo.setGmtModified(new Date());
|
positionInfo.setEditUid(currentUser.getUid());
|
positionInfo.setEditBy(currentUser.getRealName());
|
positionInfoService.updatePositionInfo(positionInfo);
|
}
|
|
@Override
|
public void delPositionInfo(ContextCacheUser currentUser, Long positionId) {
|
;
|
if (positionId == null) {
|
throw new BusinessException(ResultCodes.CLIENT_PARAM_NULL);
|
}
|
// 数据存在校验
|
PositionInfoDO positionInfoDO = positionInfoService.getPositionInfoById(positionId);
|
if (positionInfoDO == null) {
|
throw new AusinessException(E.DATA_DATABASE_NO_EXISTENT, "岗位记录不存在");
|
}
|
if (!positionInfoDO.getStatus().equals(PositionStatusEnum.ENABLED.getCode())) {
|
throw new AusinessException(E.DATA_DATABASE_EXIST_BUT_NOT_VALID, "岗位记录不存在");
|
}
|
// 判断是否有人员占用岗位,占用不可删除
|
long count = userInfoService.countByPositionId(positionId);
|
if (count > 0) {
|
throw new AusinessException(E.NOT_DELETE, "岗位下存在人员");
|
}
|
// 删除岗位
|
positionInfoService.deletePositionInfoById(positionId);
|
|
}
|
|
|
}
|