xieb
2024-01-02 d2cf8a7f7bcf49ace058d9eec587d75c4f764a2e
src/main/java/org/springblade/modules/evaluate/service/impl/EvaluateResultServiceImpl.java
@@ -23,8 +23,11 @@
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 org.springblade.modules.evaluate.entity.EvaluateCandidateEntity;
import org.springblade.modules.evaluate.entity.EvaluateResultEntity;
import org.springblade.modules.evaluate.entity.EvaluateTaskEntity;
@@ -45,7 +48,10 @@
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import static org.springblade.common.cache.CacheNames.EVALUATE_CANDIDATE_DEPT_KEY;
/**
 * 评优结果 服务实现类
@@ -63,14 +69,21 @@
   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) {
      return page.setRecords(EvaluateResultWrapper.build().listVO(baseMapper.selectEvaluateResultGroupBeId(page, evaluateResult)));
   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
@@ -85,88 +98,8 @@
   @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);
            String deptIdsStr = "";
            for (CandidateJsonObj obj:candidateJsonObjs) {
               if (StringUtil.isNotBlank(deptIdsStr)) {
                  deptIdsStr += "," + obj.getDeptId();
               } else {
                  deptIdsStr = obj.getDeptId() + "";
               }
            }
            //根据部门获取所有用户数量
            QueryWrapper<User> queryWrapper = new QueryWrapper();
            queryWrapper.in("dept_id", deptIdsStr);
            // 拿到设置部门所有用户数量
            Long userByDeptIdsCount = userService.count(queryWrapper);
            //用户数量和评优数据进行匹配 相同需要设置任务状态为已完成
            QueryWrapper<EvaluateResultEntity> resultEntityQueryWrapper = new QueryWrapper<>();
            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());
                  IPage<EvaluateResultVO> evaluateResultVOIPage = selectEvaluateResultGroupBeId(page,vo);
                  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) {
            QueryWrapper<EvaluateResultEntity> resultEntityQueryWrapper = new QueryWrapper<>();
            resultEntityQueryWrapper.eq("evaluate_task_id", evaluateResult.getEvaluateTaskId());
            Long evaluateResultCount = count(resultEntityQueryWrapper);
            //部门评优数量和所有用户匹配
            QueryWrapper<User> queryWrapper = new QueryWrapper();
            queryWrapper.in("user_type", 2);//员工用户
            // 拿到设置部门所有用户数量
            Long userByDeptIdsCount = userService.count(queryWrapper);
            // 相同需要设置任务状态为已完成 不同不处理
            if (userByDeptIdsCount == evaluateResultCount) {
               taskPO.setCandidateState(2);//结束
               evaluateTaskService.updateById(taskPO);
            }
         }
      }
      return ret;
      return super.saveOrUpdate(evaluateResult);
   }
}