|
@@ -362,6 +362,24 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
sysUserService.update(userUpdateWrapper);
|
|
sysUserService.update(userUpdateWrapper);
|
|
//如果修改了角色,需要重新登录
|
|
//如果修改了角色,需要重新登录
|
|
if (count > 0 || dbUserRolesList.size() != userRolesList.size()) {
|
|
if (count > 0 || dbUserRolesList.size() != userRolesList.size()) {
|
|
|
|
+ // 如果涉及到区协和工程师身份的互相转变,则需要判断该用户没有在途的sop
|
|
|
|
+ Long sysCoordinatorRoleId = sysRoleService.findRoleInfoByArchivesType(RoleTypeEnum.REGION_COORDINATOR).getRoleId();
|
|
|
|
+ Long sysEffectRoleId = sysRoleService.findRoleInfoByArchivesType(RoleTypeEnum.EFFECT_ENGINEER).getRoleId();
|
|
|
|
+ Long sysAssistantRoleId = sysRoleService.findRoleInfoByArchivesType(RoleTypeEnum.ASSISTANT_ENGINEER)
|
|
|
|
+ .getRoleId();
|
|
|
|
+
|
|
|
|
+ if (userRolesList.contains(sysCoordinatorRoleId) && (dbUserRolesList.contains(sysEffectRoleId) || dbUserRolesList.contains(sysAssistantRoleId))
|
|
|
|
+ || ((userRolesList.contains(sysEffectRoleId) || userRolesList.contains(sysAssistantRoleId))
|
|
|
|
+ && dbUserRolesList.contains(sysCoordinatorRoleId))) {
|
|
|
|
+ // 判断是否有在途的sop
|
|
|
|
+ List<String> onPassageSopNoList = this.findOnPassageSopNoByUserId(sysUser.getId());
|
|
|
|
+ if (!CollectionUtils.isEmpty(onPassageSopNoList)) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception(
|
|
|
|
+ String.format("用户[%s]有在途的SOP[%s],无法切换人员档案的角色", sysUser.getRealName(),
|
|
|
|
+ String.join(",", onPassageSopNoList)));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
QueryWrapper<SysUserRole> sysUserRoleQueryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<SysUserRole> sysUserRoleQueryWrapper = new QueryWrapper<>();
|
|
sysUserRoleQueryWrapper.lambda().eq(SysUserRole::getUserId, sysUser.getId());
|
|
sysUserRoleQueryWrapper.lambda().eq(SysUserRole::getUserId, sysUser.getId());
|
|
sysUserRoleService.remove(sysUserRoleQueryWrapper);
|
|
sysUserRoleService.remove(sysUserRoleQueryWrapper);
|
|
@@ -704,4 +722,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
}
|
|
}
|
|
return sysUser;
|
|
return sysUser;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public List<String> findOnPassageSopNoByUserId(Long userId) {
|
|
|
|
+ return this.baseMapper.findOnPassageSopNoByUserId(userId);
|
|
|
|
+ }
|
|
}
|
|
}
|