岗位冗余信息更新

yun-zuoyi
wei.peng 6 years ago
parent 6ec88da286
commit 5849222d23

@ -98,6 +98,9 @@ public interface IPersonnelService {
@ApiOperation(value = "重置密码检查")
Integer checkSysUserResetPassword(SysUser user);
@ApiOperation(value = "岗位关系检查")
void checkSysPositionRef(Long positionId);
@ApiOperation(value = "刷新组织冗余")
void refreshRefSysUserOrganizeRdd(Long organizeIds);
@ -117,6 +120,7 @@ public interface IPersonnelService {
@ApiOperation(value = "刷新用户岗位")
void refreshRefSysUserInfoPosition(Long userInfoId, Long[] positionIds);
@ApiOperation(value = "刷新用户岗位")
void refreshRefSysUserInfoPositionRdd(Long positionId);

@ -103,8 +103,18 @@ public class CoreTreeService implements ICoreTreeService {
@Override
@ApiOperation(value = "父节点检查",notes = "检查岗位的父节点是否是当前节点的子节点")
public void doValidatorSysPositionParentId(SysPosition position) {
findSysPositionChildrenTreePack(position,0);
validatorSysPositionParentId(position.getChildList(),position.getParentId());
if(position != null){
if(position.getParentId().longValue() == position.getId().longValue()){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("上级岗位不能为当前岗位")
.setErrorSolution("请重新操作")
.build();
}
findSysPositionChildrenTreePack(position,0);
validatorSysPositionParentId(position.getChildList(),position.getParentId());
}
}
@Override

@ -364,6 +364,43 @@ public class PersonnelServiceService implements IPersonnelService {
return num;
}
@Override
public void checkSysPositionRef(Long positionId) {
LOGGER.debug("平台岗位 SysPosition positionId:{}", positionId);
if(positionId != null){
long positionCount = positionRDao.findByPropertyCount("parentId",positionId);
if (positionCount >= 1) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("存在相关岗位信息无法删除!")
.setErrorSolution("请先删除子集信息在操作")
.build();
}
long refPositionCount = refUserPositionRDao.findByPropertyCount("positionId",positionId);
if (refPositionCount >= 1) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("存在用户关系引用信息无法删除!")
.setErrorSolution("请先删除用户关系信息再操作")
.build();
}
long refUserInfoCount = userInfoRDao.findByPropertyCount("positionId",positionId);
if (refUserInfoCount >= 1) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("存在用户信息无法删除!")
.setErrorSolution("请先删除用户引用信息再操作")
.build();
}
}
}
/************************************ 用户唯一检查 ****************************************/
/**
@ -660,6 +697,52 @@ public class PersonnelServiceService implements IPersonnelService {
@Override
public void refreshRefSysUserInfoPositionRdd(Long positionId) {
List<Long> result = new ArrayList<>(); // 需要更新的用户ID 集合
// 更新关系表中数据
if(positionId != null){
SysPosition position = positionRDao.getById(positionId);
if(position != null){
List<SysRefUserPosition> list = refUserPositionRDao.findByProperty("positionId", position.getId());
if(list != null && list.size() > 0){
// 更新关系表中的冗余信息
refUserPositionRDao.updateByProperties(
"positionId",position.getId(),
"positionNameRdd", position.getName());
// 更新父节点冗余信息
positionRDao.updateByProperties("parentId",position.getId(),
"parentNameRdd",position.getName());
for (SysRefUserPosition ref : list) {
result.add(ref.getUserId());
}
}
}
}
// 删除关系表中数据
refUserPositionRDao.deleteByProperty("positionId", positionId);
// 获取需要更新的用户
StringBuffer strWhere = new StringBuffer();
List<String> nameList = null;
HqlPack.getInPack(StringUtils.join(result, ","), "userId", strWhere);
List<SysUserInfo> infoList = userInfoRDao.findByHqlWhere(strWhere.toString());
// 更新用户的冗余信息
if(infoList != null && infoList.size() > 0){
for (SysUserInfo info : infoList) {
List<SysRefUserPosition> list = refUserPositionRDao.findByProperty("userId", info.getId());
if (list != null) {
for (SysRefUserPosition ref : list) {
nameList.add(ref.getPositionNameRdd());
}
}
info.setPositionNamesRdd(StringUtils.join(nameList, ","));
userInfoRDao.save(info);
}
}
}
}

@ -1,5 +1,6 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysPositionService;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
@ -40,6 +41,9 @@ public class SysPositionService implements ISysPositionService {
@Autowired
private SysUserRepository sysUserRDao;
@Autowired
private IPersonnelService personnelService;
@Override
@ApiOperation(value = "新增岗位信息")
public SysPosition insertSysPosition(SysPosition position) {
@ -105,45 +109,31 @@ public class SysPositionService implements ISysPositionService {
LOGGER.info("岗位信息 POSITION position:{}", position);
positionRDao.update(position);
// 修改冗余信息
positionRDao.updateByProperties("parentId",position.getId(),
"parentNameRdd",position.getName());
personnelService.refreshRefSysUserInfoPositionRdd(position.getId());
}
@Override
@ApiOperation(value = "删除岗位信息",notes = "根据ID 删除岗位信息")
public void deleteSysPositionById(Long id) {
// 查询是否存在子级
LOGGER.info("岗位信息 POSITION id:{}", id);
long positionCount = positionRDao.findByPropertyCount("parentId",id);
if (positionCount >= 1) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("存在相关岗位信息无法删除!")
.setErrorSolution("请先删除子集信息在操作")
.build();
}
personnelService.checkSysPositionRef(id);
// 删除岗位信息
LOGGER.info("岗位信息 POSITION id:{}", id);
positionRDao.deleteById(id);
personnelService.refreshRefSysUserInfoPositionRdd(id);
}
@Override
@ApiOperation(value = "删除岗位信息",notes = "根据ID 批量删除岗位信息")
public void deleteSysPositionByIds(Long[] ids) {
LOGGER.info("岗位信息 POSITION ids:{}", ids);
long positionCount = positionRDao.findByHqlWhereCount(CoreHqlPack.packHqlIds("parentId",ids));
// 判断是否有子节点
if (positionCount <= 0) {
positionRDao.deleteByIds(ids);
}else {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("存在相关岗位信息无法删除!")
.setErrorSolution("请重新操作")
.build();
// 检查是否存在引用关系
for (Long id : ids) {
personnelService.checkSysPositionRef(id);
}
positionRDao.deleteByIds(ids);
for (Long id : ids) {
personnelService.refreshRefSysUserInfoPositionRdd(id);
}
}

Loading…
Cancel
Save