| | |
| | | import lombok.AllArgsConstructor; |
| | | import org.springblade.common.cache.SysCache; |
| | | import org.springblade.common.cache.UserCache; |
| | | import org.springblade.core.redis.cache.BladeRedis; |
| | | import org.springblade.core.tool.utils.Func; |
| | | import org.springblade.core.tool.utils.StringUtil; |
| | | import org.springblade.modules.assessment.wrapper.CandidateJsonObj; |
| | | import org.springblade.modules.assessment.wrapper.UserJsonObj; |
| | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | import static org.springblade.common.cache.CacheNames.EVALUATE_CANDIDATE_DEPT_KEY; |
| | | |
| | | /** |
| | | * 评优结果 服务实现类 |
| | | * |
| | |
| | | |
| | | private final IEvaluateCandidateService evaluateCandidateService; |
| | | |
| | | private final BladeRedis bladeRedis; |
| | | |
| | | @Override |
| | | public IPage<EvaluateResultVO> selectEvaluateResultPage(IPage<EvaluateResultVO> page, EvaluateResultVO evaluateResult) { |
| | | return page.setRecords(baseMapper.selectEvaluateResultPage(page, evaluateResult)); |
| | |
| | | @Override |
| | | public IPage<EvaluateResultVO> selectEvaluateResultGroupBeId(IPage<EvaluateResultVO> page, EvaluateResultVO evaluateResult,List<Long> userIds) { |
| | | return page.setRecords(EvaluateResultWrapper.build().listVO(baseMapper.selectEvaluateResultGroupBeId(page, evaluateResult, userIds))); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<EvaluateResultVO> selectEvaluateResultByScoreIdsGroupBeId(IPage<EvaluateResultVO> page, EvaluateResultVO evaluateResult, List<Long> scoreUserIds) { |
| | | return page.setRecords(EvaluateResultWrapper.build().listVO(baseMapper.selectEvaluateResultGroupBeId(page, evaluateResult, scoreUserIds))); |
| | | } |
| | | |
| | | @Override |
| | |
| | | @Override |
| | | @Transactional |
| | | public boolean saveOrUpdate(EvaluateResultEntity evaluateResult) { |
| | | |
| | | boolean ret = super.saveOrUpdate(evaluateResult); |
| | | |
| | | // 是否评分完成判断此操作 |
| | | if (ret) { |
| | | |
| | | EvaluateTaskEntity taskPO = evaluateTaskService.getById(evaluateResult.getEvaluateTaskId()); |
| | | |
| | | //判断评分是否完成 0:type 判断设置的部门员工是否完成评分 1:type 判断设置的部门是否完成评分 |
| | | if (evaluateResult.getType() == 0) { |
| | | |
| | | List<CandidateJsonObj> candidateJsonObjs = JSONArray.parseArray(JSON.toJSONString(taskPO.getCandidateNum()),CandidateJsonObj.class); |
| | | |
| | | List<Long> deptIds = new ArrayList<>(); |
| | | for (CandidateJsonObj obj:candidateJsonObjs) { |
| | | |
| | | // 用户判断是否所有部门所有用户投票完成,改变任务状态使用 |
| | | deptIds.add(obj.getDeptId()); |
| | | |
| | | //该部门是否投票完成,投票完成增加候选人信息 |
| | | Boolean isAddCandidate = Func.toBoolean(bladeRedis.get(EVALUATE_CANDIDATE_DEPT_KEY + evaluateResult.getEvaluateTaskId() + obj.getDeptId())); |
| | | if (null == isAddCandidate || !isAddCandidate) { |
| | | //根据部门获取所有用户数量 |
| | | QueryWrapper<User> queryWrapper = new QueryWrapper(); |
| | | queryWrapper.eq("dept_id", obj.getDeptId()); |
| | | List<User> deptUsers = userService.list(queryWrapper); |
| | | // 拿到设置部门所有用户数量 |
| | | int userByDeptIdCount = deptUsers.size(); |
| | | |
| | | // 拿到该部门的所有投票结果 |
| | | List<Long> userIds = new ArrayList<>(); |
| | | for (User deptUser:deptUsers) { |
| | | userIds.add(deptUser.getId()); |
| | | } |
| | | |
| | | //部门所有用户数量和部门的所有投票结果 |
| | | QueryWrapper<EvaluateResultEntity> resultEntityQueryWrapper = new QueryWrapper<>(); |
| | | resultEntityQueryWrapper.eq("evaluate_task_id", evaluateResult.getEvaluateTaskId()); |
| | | resultEntityQueryWrapper.in("score_user_id", userIds); //评分人 |
| | | Long evaluateResultCount = count(resultEntityQueryWrapper); |
| | | |
| | | if (userByDeptIdCount == evaluateResultCount) { //如果相等表示该部门所有人都投票完成 开始增加候选人 |
| | | // 是否已经增加了候选人 |
| | | |
| | | //开始增加候选人 |
| | | Integer val = obj.getVal(); |
| | | |
| | | Page<EvaluateResultVO> page = new Page<>(); |
| | | page.setCurrent(1); |
| | | page.setSize(val); |
| | | EvaluateResultVO vo = new EvaluateResultVO(); |
| | | vo.setType(0); |
| | | vo.setEvaluateTaskId(evaluateResult.getEvaluateTaskId()); |
| | | |
| | | IPage<EvaluateResultVO> evaluateResultVOIPage = selectEvaluateResultByScoreIdsGroupBeId(page,vo,userIds); |
| | | for (EvaluateResultVO resultVO:evaluateResultVOIPage.getRecords()) { |
| | | EvaluateCandidateEntity evaluateCandidate = new EvaluateCandidateEntity(); |
| | | evaluateCandidate.setEvaluateTaskId(evaluateResult.getEvaluateTaskId()); |
| | | evaluateCandidate.setEvaluateTaskName(taskPO.getTaskName()); |
| | | User user = UserCache.getUser(resultVO.getBeId()); |
| | | evaluateCandidate.setUserId(user.getId()); |
| | | evaluateCandidate.setUserName(user.getName()); |
| | | evaluateCandidate.setDeptName(SysCache.getDeptName(Long.valueOf(user.getDeptId()))); |
| | | evaluateCandidate.setPostName(SysCache.getPostName(Long.valueOf(user.getPostId()))); |
| | | evaluateCandidateService.save(evaluateCandidate); |
| | | bladeRedis.set(EVALUATE_CANDIDATE_DEPT_KEY + evaluateResult.getEvaluateTaskId() + obj.getDeptId(), true); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | //根据部门获取所有用户数量 |
| | |
| | | resultEntityQueryWrapper.eq("evaluate_task_id", evaluateResult.getEvaluateTaskId()); |
| | | Long evaluateResultCount = count(resultEntityQueryWrapper); |
| | | |
| | | // 相同需要设置任务状态为已完成 不同不处理 |
| | | // 相同需要设置任务状态为已完成 不同不处理 修改为一个部门投票结束就增加候选人 |
| | | if (userByDeptIdsCount == evaluateResultCount) { |
| | | taskPO.setCandidateState(2);//结束 |
| | | evaluateTaskService.updateById(taskPO); |
| | | |
| | | //保存候选人信息 |
| | | for (CandidateJsonObj obj:candidateJsonObjs) { |
| | | Integer val = obj.getVal(); |
| | | |
| | | Page<EvaluateResultVO> page = new Page<>(); |
| | | page.setCurrent(1); |
| | | page.setSize(val); |
| | | EvaluateResultVO vo = new EvaluateResultVO(); |
| | | vo.setType(0); |
| | | vo.setEvaluateTaskId(evaluateResult.getEvaluateTaskId()); |
| | | List<Long> userIds = new ArrayList<>(); |
| | | for (UserJsonObj userJsonObj:obj.getUsers()) { |
| | | userIds.add(userJsonObj.getId()); |
| | | } |
| | | |
| | | IPage<EvaluateResultVO> evaluateResultVOIPage = selectEvaluateResultGroupBeId(page,vo,userIds); |
| | | |
| | | for (EvaluateResultVO resultVO:evaluateResultVOIPage.getRecords()) { |
| | | EvaluateCandidateEntity evaluateCandidate = new EvaluateCandidateEntity(); |
| | | evaluateCandidate.setEvaluateTaskId(evaluateResult.getEvaluateTaskId()); |
| | | evaluateCandidate.setEvaluateTaskName(taskPO.getTaskName()); |
| | | User user = UserCache.getUser(resultVO.getBeId()); |
| | | evaluateCandidate.setUserId(user.getId()); |
| | | evaluateCandidate.setUserName(user.getName()); |
| | | evaluateCandidate.setDeptName(SysCache.getDeptName(Long.valueOf(user.getDeptId()))); |
| | | evaluateCandidate.setPostName(SysCache.getPostName(Long.valueOf(user.getPostId()))); |
| | | evaluateCandidateService.save(evaluateCandidate); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } else if (evaluateResult.getType() == 1) { |