From 9d8243be2ea2f56259bc41b74daaa392a05f9a4a Mon Sep 17 00:00:00 2001
From: xieb <vip_xiaobin810@163.com>
Date: Wed, 27 Dec 2023 09:16:18 +0800
Subject: [PATCH] 评优结果
---
src/main/java/org/springblade/modules/evaluate/service/impl/EvaluateResultServiceImpl.java | 145 ++++++++++++++++++++++++++++++++++--------------
1 files changed, 102 insertions(+), 43 deletions(-)
diff --git a/src/main/java/org/springblade/modules/evaluate/service/impl/EvaluateResultServiceImpl.java b/src/main/java/org/springblade/modules/evaluate/service/impl/EvaluateResultServiceImpl.java
index 376bd25..35009ae 100644
--- a/src/main/java/org/springblade/modules/evaluate/service/impl/EvaluateResultServiceImpl.java
+++ b/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,66 +98,94 @@
@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 = "";
+ List<CandidateJsonObj> candidateJsonObjs = JSONArray.parseArray(JSON.toJSONString(taskPO.getCandidateNum()),CandidateJsonObj.class);
+
+ List<Long> deptIds = new ArrayList<>();
for (CandidateJsonObj obj:candidateJsonObjs) {
- if (StringUtil.isNotBlank(deptIdsStr)) {
- deptIdsStr += "," + obj.getDeptId();
- } else {
- deptIdsStr = obj.getDeptId() + "";
+
+ // 用户判断是否所有部门所有用户投票完成,改变任务状态使用
+ deptIds.add(obj.getDeptId());
+
+ //该部门是否投票完成,投票完成增加候选人信息 isAddCandidate已经增加了候选人信息不在增加数据
+ 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);
+ }
+ }
}
+
}
//根据部门获取所有用户数量
QueryWrapper<User> queryWrapper = new QueryWrapper();
- queryWrapper.in("dept_id", deptIdsStr);
+ queryWrapper.in("dept_id", deptIds);
// 拿到设置部门所有用户数量
Long userByDeptIdsCount = userService.count(queryWrapper);
//用户数量和评优数据进行匹配 相同需要设置任务状态为已完成
QueryWrapper<EvaluateResultEntity> resultEntityQueryWrapper = new QueryWrapper<>();
resultEntityQueryWrapper.eq("evaluate_task_id", evaluateResult.getEvaluateTaskId());
+ resultEntityQueryWrapper.eq("type", 0);
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) {
@@ -152,15 +193,33 @@
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);
+ //部门评优数量和所有用户匹配 修改为选定的评定人
+ List<CandidateJsonObj> candidateJsonObjs = JSONArray.parseArray(JSON.toJSONString(taskPO.getCandidateNum()),CandidateJsonObj.class);
+ int setUserCount = 0;
+ for (CandidateJsonObj obj:candidateJsonObjs) {
+ List<UserJsonObj> userJsonObjs = obj.getUsers();
+ setUserCount += userJsonObjs.size();
+ }
// 相同需要设置任务状态为已完成 不同不处理
- if (userByDeptIdsCount == evaluateResultCount) {
- taskPO.setCandidateState(2);//结束
+ if (setUserCount == evaluateResultCount) {
+ taskPO.setEvaluateState(2);//结束
+ evaluateTaskService.updateById(taskPO);
+ }
+ } else if (evaluateResult.getType() == 2) {
+ QueryWrapper<EvaluateResultEntity> resultEntityQueryWrapper = new QueryWrapper<>();
+ resultEntityQueryWrapper.eq("evaluate_task_id", evaluateResult.getEvaluateTaskId());
+ resultEntityQueryWrapper.eq("type", 2);
+ Long evaluateResultCount = count(resultEntityQueryWrapper);
+
+ //公司评优数量和所有员工用户数量比对,相同则表示评分完成
+ QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
+ userQueryWrapper.eq("user_type", 2);
+ Long setUserCount = userService.count(userQueryWrapper);
+
+ // 相同需要设置任务状态为已完成 不同不处理
+ if (setUserCount == evaluateResultCount) {
+ taskPO.setEvaluateState(2);//结束
evaluateTaskService.updateById(taskPO);
}
}
--
Gitblit v1.9.3