diff --git a/src/main/java/com/lz/modules/app/controller/StaffRoleController.java b/src/main/java/com/lz/modules/app/controller/StaffRoleController.java index 17d6f218..88442101 100644 --- a/src/main/java/com/lz/modules/app/controller/StaffRoleController.java +++ b/src/main/java/com/lz/modules/app/controller/StaffRoleController.java @@ -103,6 +103,9 @@ public class StaffRoleController { if(staffRoleEvaluationGroup !=null){ staffRoleModel.setIsSelect(1); } + if(new Long(0).equals(staffRole.getEvaluationGroupId())){ //如果是管理全部考评组,则设置为1 + staffRoleModel.setIsSelect(1); + } if(staffRole.getDepartmentLevel().equals(RoleEnums.MASTER_PM.getName())){ staffRoleModel.setIsSelect(1); } diff --git a/src/main/java/com/lz/modules/flow/dao/StaffRoleEvaluationGroupMapper.java b/src/main/java/com/lz/modules/flow/dao/StaffRoleEvaluationGroupMapper.java index 66a1a3a4..da7e356c 100644 --- a/src/main/java/com/lz/modules/flow/dao/StaffRoleEvaluationGroupMapper.java +++ b/src/main/java/com/lz/modules/flow/dao/StaffRoleEvaluationGroupMapper.java @@ -9,6 +9,7 @@ package com.lz.modules.flow.dao; */ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.lz.modules.app.dto.EvaluationGroupInfo; +import com.lz.modules.flow.entity.StaffRole; import com.lz.modules.flow.entity.StaffRoleEvaluationGroup; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -40,5 +41,9 @@ public interface StaffRoleEvaluationGroupMapper extends BaseMapper selectStaffRoleEvaluationsGroupByStaffRoles(@Param("list") List staffRoles); + StaffRoleEvaluationGroup selectEvaluationGroupIdsByRoleIdGroupId(@Param("roleId") Long roleId, @Param("groupId") Long groupId); + } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/dao/StaffRoleMapper.java b/src/main/java/com/lz/modules/flow/dao/StaffRoleMapper.java index f98b77b8..6ef6647d 100644 --- a/src/main/java/com/lz/modules/flow/dao/StaffRoleMapper.java +++ b/src/main/java/com/lz/modules/flow/dao/StaffRoleMapper.java @@ -59,7 +59,11 @@ public interface StaffRoleMapper extends BaseMapper { List selectAllMenus(@Param("userId") Long userId); + List selectMastRoles(); + + List selectAllGroupManageRoles(); List selectAllStaffRoleByDepartmentLevel(@Param("departmentLevels") List departmentLevels); StaffRole selectStaffRolesByStaffIdDepartmentLevelList(@Param("staffId") Long staffId, @Param("departmentLevels") List departmentLevels); + } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/EvaluationGroupService.java b/src/main/java/com/lz/modules/flow/service/EvaluationGroupService.java index 543168f9..3e3a4513 100644 --- a/src/main/java/com/lz/modules/flow/service/EvaluationGroupService.java +++ b/src/main/java/com/lz/modules/flow/service/EvaluationGroupService.java @@ -8,6 +8,7 @@ import com.lz.modules.flow.entity.EvaluationGroup; import com.lz.modules.flow.req.EvaluationGroupReq; import com.lz.modules.performance.dto.CheckStaffDto; import com.lz.modules.performance.req.CheckStaffReq; +import com.lz.modules.sys.entity.SysUserEntity; import java.util.List; @@ -41,7 +42,7 @@ public interface EvaluationGroupService extends IService { List selectAllStaffIdsByGroupId(Long id); - PageUtils selectEvaluationGroupByReq(EvaluationGroupReq req); + PageUtils selectEvaluationGroupByReq(EvaluationGroupReq req, SysUserEntity sysUserEntity); List selectEvaluationGroupByIds(List ids); diff --git a/src/main/java/com/lz/modules/flow/service/StaffRoleEvaluationGroupService.java b/src/main/java/com/lz/modules/flow/service/StaffRoleEvaluationGroupService.java index 6f4ba810..ee78e93d 100644 --- a/src/main/java/com/lz/modules/flow/service/StaffRoleEvaluationGroupService.java +++ b/src/main/java/com/lz/modules/flow/service/StaffRoleEvaluationGroupService.java @@ -2,6 +2,7 @@ package com.lz.modules.flow.service; import com.baomidou.mybatisplus.extension.service.IService; import com.lz.modules.app.dto.EvaluationGroupInfo; +import com.lz.modules.flow.entity.StaffRole; import com.lz.modules.flow.entity.StaffRoleEvaluationGroup; import java.util.List; @@ -39,5 +40,9 @@ public interface StaffRoleEvaluationGroupService extends IService selectStaffRoleEvaluationsGroupByStaffRoles(List staffRoles); + StaffRoleEvaluationGroup selectEvaluationGroupIdsByRoleIdGroupId(Long roleId, Long groupId); + } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/StaffRoleService.java b/src/main/java/com/lz/modules/flow/service/StaffRoleService.java index 60f3f864..2f7481bf 100644 --- a/src/main/java/com/lz/modules/flow/service/StaffRoleService.java +++ b/src/main/java/com/lz/modules/flow/service/StaffRoleService.java @@ -65,6 +65,11 @@ public interface StaffRoleService extends IService { List selectAllByStaffId(Long userId); Map getRoleByUserId(Long userId); - + //获取主管理员 + List selectMastRoles(); + //获取管理全部考评组 + List selectAllGroupManageRoles(); List selectAllStaffRoleByDepartmentLevel(List asList); + + List selectByEvaluationGroupId(Long id); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/impl/EvaluationGroupServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/EvaluationGroupServiceImpl.java index b3468410..425f4bd1 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/EvaluationGroupServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/EvaluationGroupServiceImpl.java @@ -19,11 +19,16 @@ import com.lz.modules.flow.dao.EvaluationGroupMapper; import com.lz.modules.flow.dao.EvaluationStartStaffMapper; import com.lz.modules.flow.entity.EvaluationGroup; import com.lz.modules.flow.entity.FlowStart; +import com.lz.modules.flow.entity.StaffRole; +import com.lz.modules.flow.entity.StaffRoleEvaluationGroup; import com.lz.modules.flow.req.EvaluationGroupReq; import com.lz.modules.flow.service.EvaluationGroupService; import com.lz.modules.flow.service.FlowStartService; +import com.lz.modules.flow.service.StaffRoleEvaluationGroupService; +import com.lz.modules.flow.service.StaffRoleService; import com.lz.modules.performance.dto.CheckStaffDto; import com.lz.modules.performance.req.CheckStaffReq; +import com.lz.modules.sys.entity.SysUserEntity; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; @@ -71,6 +76,12 @@ public class EvaluationGroupServiceImpl extends ServiceImpl gIds = null; - if(req.getStartId() != null){ + if(req.getStartId() != null){//发起评分时调用,传发起的id FlowStart flowStart = flowStartService.selectFlowStartById(req.getStartId()); if(flowStart == null){ return null; @@ -123,6 +134,30 @@ public class EvaluationGroupServiceImpl extends ServiceImpl staffRoles = staffRoleService.selectAllByStaffId(sysUserEntity.getUserId()); + if(staffRoles.size() == 0){ + log.info("非绩效管理员登录查询"); + return null; + } + List staffRoleEvaluationGroups = + staffRoleEvaluationGroupService.selectStaffRoleEvaluationsGroupByStaffRoles(staffRoles); + if(staffRoleEvaluationGroups.size() == 0){ + log.info("查询的管理组为空"); + return null; + } + gIds = new ArrayList<>(); + for (StaffRoleEvaluationGroup staffRoleEvaluationGroup:staffRoleEvaluationGroups + ) { + if(staffRoleEvaluationGroup.getEvaluationGroupId().longValue() == 0l){//管理所有组 + gIds = null; + log.info("管理所有组"); + break; + } + gIds.add(staffRoleEvaluationGroup.getEvaluationGroupId());//管理特定组 + + } } List finalGIds = gIds; PageUtils pageUtils = PageUtils.startPage(req.getCurrPage(), req.getPageSize()) diff --git a/src/main/java/com/lz/modules/flow/service/impl/StaffRoleEvaluationGroupServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/StaffRoleEvaluationGroupServiceImpl.java index 9a93f962..9fd2b1ed 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/StaffRoleEvaluationGroupServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/StaffRoleEvaluationGroupServiceImpl.java @@ -3,6 +3,7 @@ package com.lz.modules.flow.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.lz.modules.app.dto.EvaluationGroupInfo; import com.lz.modules.flow.dao.StaffRoleEvaluationGroupMapper; +import com.lz.modules.flow.entity.StaffRole; import com.lz.modules.flow.entity.StaffRoleEvaluationGroup; import com.lz.modules.flow.service.StaffRoleEvaluationGroupService; import org.springframework.beans.factory.annotation.Autowired; @@ -81,4 +82,9 @@ public class StaffRoleEvaluationGroupServiceImpl extends ServiceImpl selectEvaluationGroupIdsByRoleId(Long roleId) { return staffRoleEvaluationGroupMapper.selectEvaluationGroupIdsByRoleId(roleId); } + + @Override + public List selectStaffRoleEvaluationsGroupByStaffRoles(List staffRoles){ + return staffRoleEvaluationGroupMapper.selectStaffRoleEvaluationsGroupByStaffRoles(staffRoles); + } } diff --git a/src/main/java/com/lz/modules/flow/service/impl/StaffRoleServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/StaffRoleServiceImpl.java index be77aa8a..ad9a69b3 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/StaffRoleServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/StaffRoleServiceImpl.java @@ -550,4 +550,19 @@ public class StaffRoleServiceImpl extends ServiceImpl selectMastRoles(){ + return staffRoleMapper.selectMastRoles(); + } + + @Override + public List selectAllGroupManageRoles(){ + return staffRoleMapper.selectAllGroupManageRoles(); + } + + @Override + public List selectByEvaluationGroupId(Long groupId){ + return staffRoleMapper.selectByEvaluationGroupId(groupId); + } } diff --git a/src/main/java/com/lz/modules/performance/controller/EvaluationGroupController.java b/src/main/java/com/lz/modules/performance/controller/EvaluationGroupController.java index 062646c4..6412221e 100644 --- a/src/main/java/com/lz/modules/performance/controller/EvaluationGroupController.java +++ b/src/main/java/com/lz/modules/performance/controller/EvaluationGroupController.java @@ -8,14 +8,13 @@ import com.lz.common.utils.StringUtil; import com.lz.modules.app.dto.DepartmentsSimpleDto; import com.lz.modules.app.dto.StaffSimpleDto; import com.lz.modules.app.service.StaffService; -import com.lz.modules.flow.entity.EvaluationGroup; -import com.lz.modules.flow.entity.FlowManager; -import com.lz.modules.flow.entity.ResultModel; -import com.lz.modules.flow.entity.StaffRole; +import com.lz.modules.flow.entity.*; import com.lz.modules.flow.model.EvaluationGroupDto; import com.lz.modules.flow.req.EvaluationGroupReq; import com.lz.modules.flow.service.*; import com.lz.modules.performance.req.CheckStaffReq; +import com.lz.modules.sys.controller.AbstractController; +import com.lz.modules.sys.entity.SysUserEntity; import io.swagger.annotations.*; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -28,7 +27,7 @@ import java.util.stream.Collectors; @RestController @RequestMapping("/evaluationGroup") @Api(tags="考评组") -public class EvaluationGroupController { +public class EvaluationGroupController extends AbstractController { @Autowired @@ -47,6 +46,8 @@ public class EvaluationGroupController { @Autowired private StaffRoleService staffRoleService; + @Autowired + private StaffRoleEvaluationGroupService staffRoleEvaluationGroupService; @@ -115,7 +116,8 @@ public class EvaluationGroupController { @ApiOperation("获取考评组列表") @ApiResponses({@ApiResponse(code=200,message = "成功", response=EvaluationGroup.class)}) public R getGroups(@RequestBody @ApiParam EvaluationGroupReq req) { - PageUtils pageUtils = evaluationGroupService.selectEvaluationGroupByReq(req); + SysUserEntity sysUserEntity = getUser(); + PageUtils pageUtils = evaluationGroupService.selectEvaluationGroupByReq(req, sysUserEntity); return R.ok().put("data",pageUtils); } @@ -133,6 +135,7 @@ public class EvaluationGroupController { @ApiResponses({@ApiResponse(code = 200, message = "成功", response = EvaluationGroup.class)}) public R save(@RequestBody @ApiParam EvaluationGroup evaluationGroup) { EvaluationGroup evaluationGroup1 = evaluationGroupService.selectEvaluationGroupByName(evaluationGroup.getName()); + List staffRoles = null; if(evaluationGroup.getId() != null && evaluationGroup.getId().intValue() > 0){ if(evaluationGroup1 == null || evaluationGroup1.getId().equals(evaluationGroup.getId())){ if(evaluationGroup.getDepIds() == null){ @@ -148,6 +151,8 @@ public class EvaluationGroupController { evaluationGroup.setOutIds(""); } evaluationGroupService.updateEvaluationGroupById(evaluationGroup); + + staffRoles = staffRoleService.selectByEvaluationGroupId(evaluationGroup.getId());//查询已经管理改组的管理员 }else { return R.error("已经存在相同名称考核组"); } @@ -160,37 +165,49 @@ public class EvaluationGroupController { } //更新组管理员信息 if(evaluationGroup.getManagerIds() != null && evaluationGroup.getManagerIds().length() > 0){ - List mIds = Arrays.stream(evaluationGroup.getManagerIds().split(",")).map(new Function() { + Map mapIds = Arrays.stream(evaluationGroup.getManagerIds().split(",")).map(new Function() { @Override public Long apply(String s) { return Long.parseLong(s); } - }).collect(Collectors.toList()); + }).collect(Collectors.toMap(Long::longValue, Function.identity(), (e, replace) -> e)); - List staffRoles = staffRoleService.selectByGroupId(evaluationGroup.getId()); - if(staffRoles.size() > 0){ - Map staffRoleMap = - staffRoles.stream().collect(Collectors.toMap(StaffRole::getStaffId, Function.identity(), (e, repace) -> e)); - for(int i = 0; i < mIds.size();){ - Long l = mIds.get(i); - if(staffRoleMap.containsKey(l)){ - mIds.remove(l); - continue; + for (StaffRole staffRole:staffRoles + ) {//去掉已经在管理本组的管理员 + if(mapIds.containsKey(staffRole.getStaffId())){ + mapIds.remove(staffRole.getStaffId()); + }else{//删除管理的组信息 + staffRoleEvaluationGroupService.deleteStaffRoleEvaluationGroupByRoleId(staffRole.getId()); + } + } + + //去掉管理全考评组 + staffRoles = staffRoleService.selectAllGroupManageRoles(); + for (StaffRole staffRole:staffRoles + ) { + if(mapIds.containsKey(staffRole.getStaffId())){ + mapIds.remove(staffRole.getStaffId()); + } + } + + + if(mapIds.size() > 0){ + List ids = mapIds.values().stream().collect(Collectors.toList()); + staffRoles = staffRoleService.selectStaffRolesByStaffId(ids); + + if(staffRoles.size() > 0){ + List staffRoleEvaluationGroups = new ArrayList<>(); + for (StaffRole staffRole:staffRoles + ) { + StaffRoleEvaluationGroup staffRoleEvaluationGroup = new StaffRoleEvaluationGroup(); + staffRoleEvaluationGroup.setRoleId(staffRole.getId()); + staffRoleEvaluationGroup.setEvaluationGroupId(evaluationGroup.getId()); + staffRoleEvaluationGroups.add(staffRoleEvaluationGroup); } - i++; + staffRoleEvaluationGroupService.saveBatch(staffRoleEvaluationGroups); } } - if(mIds.size() > 0){ - staffRoles = new ArrayList<>(); - for (Long id:mIds - ) { - StaffRole staffRole = new StaffRole(); - staffRole.setStaffId(id); - staffRole.setEvaluationGroupId(evaluationGroup.getId()); - staffRoles.add(staffRole); - } - staffRoleService.saveBatch(staffRoles); - } + } return R.ok().put("data", evaluationGroup); } diff --git a/src/main/resources/mapper/flow/StaffRoleEvaluationGroupMapper.xml b/src/main/resources/mapper/flow/StaffRoleEvaluationGroupMapper.xml index 59dde81b..a2ba1c51 100644 --- a/src/main/resources/mapper/flow/StaffRoleEvaluationGroupMapper.xml +++ b/src/main/resources/mapper/flow/StaffRoleEvaluationGroupMapper.xml @@ -97,6 +97,14 @@ select evaluation_group_id from lz_staff_role_evaluation_group where is_delete = 0 and role_id = #{roleId} and is_select = 1 + + + + +