From 1f9f1f3f29805171e4dd645cc25e45a0abc17052 Mon Sep 17 00:00:00 2001
From: xieb <vip_xiaobin810@163.com>
Date: Sat, 23 Dec 2023 14:36:53 +0800
Subject: [PATCH] 候选人

---
 src/main/java/org/springblade/modules/evaluate/service/impl/EvaluateResultServiceImpl.java |  118 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 118 insertions(+), 0 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 420625b..376bd25 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
@@ -16,15 +16,35 @@
  */
 package org.springblade.modules.evaluate.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.AllArgsConstructor;
+import org.springblade.common.cache.SysCache;
+import org.springblade.common.cache.UserCache;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.modules.assessment.wrapper.CandidateJsonObj;
+import org.springblade.modules.evaluate.entity.EvaluateCandidateEntity;
 import org.springblade.modules.evaluate.entity.EvaluateResultEntity;
+import org.springblade.modules.evaluate.entity.EvaluateTaskEntity;
+import org.springblade.modules.evaluate.entity.EvaluateTaskSetEntity;
+import org.springblade.modules.evaluate.service.IEvaluateCandidateService;
+import org.springblade.modules.evaluate.service.IEvaluateTaskService;
+import org.springblade.modules.evaluate.service.IEvaluateTaskSetService;
 import org.springblade.modules.evaluate.vo.EvaluateResultVO;
 import org.springblade.modules.evaluate.excel.EvaluateResultExcel;
 import org.springblade.modules.evaluate.mapper.EvaluateResultMapper;
 import org.springblade.modules.evaluate.service.IEvaluateResultService;
+import org.springblade.modules.evaluate.wrapper.EvaluateResultWrapper;
+import org.springblade.modules.system.entity.User;
+import org.springblade.modules.system.service.IUserService;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
+
 import java.util.List;
 
 /**
@@ -34,13 +54,24 @@
  * @since 2023-12-18
  */
 @Service
+@AllArgsConstructor
 public class EvaluateResultServiceImpl extends BaseServiceImpl<EvaluateResultMapper, EvaluateResultEntity> implements IEvaluateResultService {
+
+	private final IEvaluateTaskService evaluateTaskService;
+
+	private final IUserService userService;
+
+	private final IEvaluateCandidateService evaluateCandidateService;
 
 	@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)));
+	}
 
 	@Override
 	public List<EvaluateResultExcel> exportEvaluateResult(Wrapper<EvaluateResultEntity> queryWrapper) {
@@ -51,4 +82,91 @@
 		return evaluateResultList;
 	}
 
+	@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;
+	}
+
 }

--
Gitblit v1.9.3