From 03388da14240d0173cd22c332ba3905b57c2d870 Mon Sep 17 00:00:00 2001
From: xieb <vip_xiaobin810@163.com>
Date: Mon, 25 Dec 2023 17:44:33 +0800
Subject: [PATCH] 解决选出候选人不正确问题

---
 src/main/java/org/springblade/modules/evaluate/mapper/EvaluateResultMapper.java            |    2 
 src/main/java/org/springblade/modules/evaluate/mapper/EvaluateResultMapper.xml             |    7 +++
 src/main/java/org/springblade/modules/assessment/wrapper/AssessmentSetWrapper.java         |   27 +++++++++----
 src/main/java/org/springblade/modules/evaluate/service/impl/EvaluateResultServiceImpl.java |   38 ++++++++++--------
 src/main/java/org/springblade/modules/evaluate/service/IEvaluateResultService.java         |    2 
 5 files changed, 47 insertions(+), 29 deletions(-)

diff --git a/src/main/java/org/springblade/modules/assessment/wrapper/AssessmentSetWrapper.java b/src/main/java/org/springblade/modules/assessment/wrapper/AssessmentSetWrapper.java
index 60228ed..f76170d 100644
--- a/src/main/java/org/springblade/modules/assessment/wrapper/AssessmentSetWrapper.java
+++ b/src/main/java/org/springblade/modules/assessment/wrapper/AssessmentSetWrapper.java
@@ -70,6 +70,11 @@
 		assessmentSetVO.setDeptName(SysCache.getDeptName(Long.valueOf(user.getDeptId())));
 		assessmentSetVO.setPostName(SysCache.getPostName(Long.valueOf(user.getPostId())));
 
+		user = UserCache.getUser(assessmentSetVO.getToUserId()); //考核人
+		assessmentSetVO.setToUserName(user.getName());
+		assessmentSetVO.setToDeptName(SysCache.getDeptName(Long.valueOf(user.getDeptId())));
+		assessmentSetVO.setToPostName(SysCache.getPostName(Long.valueOf(user.getPostId())));
+
 		return assessmentSetVO;
 	}
 
@@ -98,15 +103,19 @@
 				vo.setAssessmentTaskVO(null);
 
 
-			QueryWrapper<AssessmentScoreEntity> setEntityQueryWrapper = new QueryWrapper<>();
-			setEntityQueryWrapper.eq("score_user_id", vo.getToUserId()); //考核人id
-			setEntityQueryWrapper.eq("be_id", vo.getUserId()); //被考核人id
-			setEntityQueryWrapper.eq("assessment_task_id", vo.getAssessmentTaskVO().getId());//考核任务
-			List<AssessmentScoreEntity> assessmentScoreEntityList = assessmentScoreService.list(setEntityQueryWrapper);
-			if (assessmentScoreEntityList.size() > 0)
-				vo.setAssessmentScoreVO(AssessmentScoreWrapper.build().entityVO(assessmentScoreEntityList.get(0)));
-			else
-				vo.setAssessmentScoreVO(null);
+			if(null != vo.getAssessmentTaskVO()) {
+				QueryWrapper<AssessmentScoreEntity> setEntityQueryWrapper = new QueryWrapper<>();
+				setEntityQueryWrapper.eq("score_user_id", vo.getToUserId()); //考核人id
+				setEntityQueryWrapper.eq("be_id", vo.getUserId()); //被考核人id
+				setEntityQueryWrapper.eq("assessment_task_id", vo.getAssessmentTaskVO().getId());//考核任务
+				List<AssessmentScoreEntity> assessmentScoreEntityList = assessmentScoreService.list(setEntityQueryWrapper);
+				if (assessmentScoreEntityList.size() > 0)
+					vo.setAssessmentScoreVO(AssessmentScoreWrapper.build().entityVO(assessmentScoreEntityList.get(0)));
+				else
+					vo.setAssessmentScoreVO(null);
+			}
+
+
 		}
 		IPage<AssessmentSetVO> pageVo = new Page<>(pages.getCurrent(), pages.getSize(), pages.getTotal());
 		pageVo.setRecords(records);
diff --git a/src/main/java/org/springblade/modules/evaluate/mapper/EvaluateResultMapper.java b/src/main/java/org/springblade/modules/evaluate/mapper/EvaluateResultMapper.java
index b87d7ec..c79a61c 100644
--- a/src/main/java/org/springblade/modules/evaluate/mapper/EvaluateResultMapper.java
+++ b/src/main/java/org/springblade/modules/evaluate/mapper/EvaluateResultMapper.java
@@ -42,7 +42,7 @@
 	 */
 	List<EvaluateResultVO> selectEvaluateResultPage(IPage page, EvaluateResultVO evaluateResult);
 
-	List<EvaluateResultEntity> selectEvaluateResultGroupBeId(IPage page,EvaluateResultVO evaluateResult);
+	List<EvaluateResultEntity> selectEvaluateResultGroupBeId(IPage page,EvaluateResultVO evaluateResult, List<Long> userIds);
 
 
 	/**
diff --git a/src/main/java/org/springblade/modules/evaluate/mapper/EvaluateResultMapper.xml b/src/main/java/org/springblade/modules/evaluate/mapper/EvaluateResultMapper.xml
index 3ac169a..0b3f72b 100644
--- a/src/main/java/org/springblade/modules/evaluate/mapper/EvaluateResultMapper.xml
+++ b/src/main/java/org/springblade/modules/evaluate/mapper/EvaluateResultMapper.xml
@@ -34,7 +34,12 @@
         <if test="evaluateResult.evaluateTaskId !=null and evaluateResult.evaluateTaskId!=''">
             AND evaluate_task_id = #{evaluateResult.evaluateTaskId}
         </if>
-        GROUP BY be_id
+        AND be_id in
+        <foreach collection="userIds" item="userId" index="index"
+                 open="(" close=")" separator=",">
+            #{userId}
+        </foreach>
+        GROUP BY be_id ORDER BY count(*) desc
     </select>
 
 
diff --git a/src/main/java/org/springblade/modules/evaluate/service/IEvaluateResultService.java b/src/main/java/org/springblade/modules/evaluate/service/IEvaluateResultService.java
index 0035f3d..83ecd6e 100644
--- a/src/main/java/org/springblade/modules/evaluate/service/IEvaluateResultService.java
+++ b/src/main/java/org/springblade/modules/evaluate/service/IEvaluateResultService.java
@@ -40,7 +40,7 @@
 	 */
 	IPage<EvaluateResultVO> selectEvaluateResultPage(IPage<EvaluateResultVO> page, EvaluateResultVO evaluateResult);
 
-	IPage<EvaluateResultVO> selectEvaluateResultGroupBeId(IPage<EvaluateResultVO> page, EvaluateResultVO evaluateResult);
+	IPage<EvaluateResultVO> selectEvaluateResultGroupBeId(IPage<EvaluateResultVO> page, EvaluateResultVO evaluateResult, List<Long> userIds);
 
 
 	/**
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 65e4451..2f0f5da 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
@@ -25,6 +25,7 @@
 import org.springblade.common.cache.UserCache;
 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,6 +46,7 @@
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -69,8 +71,8 @@
 	}
 
 	@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
@@ -94,19 +96,14 @@
 			//判断评分是否完成   0:type 判断设置的部门员工是否完成评分    1:type 判断设置的部门是否完成评分
 			if (evaluateResult.getType() == 0) {
 				List<CandidateJsonObj> candidateJsonObjs = JSONArray.parseArray(JSON.toJSONString(taskPO.getCandidateNum()),CandidateJsonObj.class);
-				String deptIdsStr = "";
-
+				List<Long> deptIds = new ArrayList<>();
 				for (CandidateJsonObj obj:candidateJsonObjs) {
-					if (StringUtil.isNotBlank(deptIdsStr)) {
-						deptIdsStr += "," + obj.getDeptId();
-					} else {
-						deptIdsStr = obj.getDeptId() + "";
-					}
+					deptIds.add(obj.getDeptId());
 				}
 
 				//根据部门获取所有用户数量
 				QueryWrapper<User> queryWrapper = new QueryWrapper();
-				queryWrapper.in("dept_id", deptIdsStr);
+				queryWrapper.in("dept_id", deptIds);
 				// 拿到设置部门所有用户数量
 				Long userByDeptIdsCount = userService.count(queryWrapper);
 
@@ -130,7 +127,12 @@
 						EvaluateResultVO vo = new EvaluateResultVO();
 						vo.setType(0);
 						vo.setEvaluateTaskId(evaluateResult.getEvaluateTaskId());
-						IPage<EvaluateResultVO> evaluateResultVOIPage = selectEvaluateResultGroupBeId(page,vo);
+						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();
@@ -152,14 +154,16 @@
 				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) {
+				if (setUserCount == evaluateResultCount) {
 					taskPO.setEvaluateState(2);//结束
 					evaluateTaskService.updateById(taskPO);
 				}

--
Gitblit v1.9.3