package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.mapper.TExperimentDispatchParticipantsMapper;
import com.ruoyi.system.mapper.TResultWorkEvaluateMapper;
import com.ruoyi.system.model.TExperimentDispatchParticipants;
import com.ruoyi.system.model.TResultWorkEvaluate;
import com.ruoyi.system.query.ResultEvaluateChemistTesterQuery;
import com.ruoyi.system.query.TResultWorkEvaluateQuery;
import com.ruoyi.system.service.TResultWorkEvaluateService;
import com.ruoyi.system.vo.ResultEvaluateChemistTesterVO;
import com.ruoyi.system.vo.TResultWorkEvaluateVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
*
* 实验员工作评定 服务实现类
*
*
* @author xiaochen
* @since 2025-04-08
*/
@Service
public class TTesterWorkEvaluateServiceImpl extends ServiceImpl implements TResultWorkEvaluateService {
@Autowired
private SysUserMapper sysUserMapper;
@Autowired
private TExperimentDispatchParticipantsMapper experimentDispatchParticipantsMapper;
@Override
public PageInfo pageList(TResultWorkEvaluateQuery query) {
PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
if(CollectionUtils.isEmpty(query.getTeamIds())){
return pageInfo;
}
List list = this.baseMapper.pageList(query,pageInfo);
List tResultWorkEvaluates = this.baseMapper.selectList(new LambdaQueryWrapper()
.orderByDesc(TResultWorkEvaluate::getEvaluateTime)
.isNotNull(TResultWorkEvaluate::getTeamId));
for (TResultWorkEvaluateVO tResultWorkEvaluateVO : list) {
List collect = tResultWorkEvaluates.stream().filter(e ->
// e.getEvaluateOne()!=null&&
// e.getEvaluateTwo()!=null&&
// e.getEvaluateThree()!=null&&
// e.getEvaluateFour()!=null&&
// e.getEvaluateFive()!=null&&
// e.getEvaluateSix()!=null&&
e.getStatus()==1&&
e.getTeamId().equals(tResultWorkEvaluateVO.getTeamId())).collect(Collectors.toList());
if (!collect.isEmpty()){
tResultWorkEvaluateVO.setEndTime(collect.get(0).getEvaluateTime());
}
int temp1=0;
int temp2=0;
int temp3=0;
int temp4=0;
for (TResultWorkEvaluate tResultWorkEvaluate : collect) {
Integer evaluateOne = tResultWorkEvaluate.getEvaluateOne();
switch (evaluateOne){
case 1:
if (tResultWorkEvaluate.getEvaluateType()==1){
temp2+=2;
}
if (tResultWorkEvaluate.getEvaluateType()==2){
temp3+=2;
}
if (tResultWorkEvaluate.getEvaluateType()==3){
temp4+=2;
}
temp1+=2;
break;
case 2:
temp1+=1;
if (tResultWorkEvaluate.getEvaluateType()==1){
temp2+=1;
}
if (tResultWorkEvaluate.getEvaluateType()==2){
temp3+=1;
}
if (tResultWorkEvaluate.getEvaluateType()==3){
temp4+=1;
}
break;
}
Integer evaluateTwo = tResultWorkEvaluate.getEvaluateTwo();
switch (evaluateTwo){
case 1:
temp1+=2;
if (tResultWorkEvaluate.getEvaluateType()==1){
temp2+=2;
}
if (tResultWorkEvaluate.getEvaluateType()==2){
temp3+=2;
}
if (tResultWorkEvaluate.getEvaluateType()==3){
temp4+=2;
}
break;
case 2:
temp1+=1;
if (tResultWorkEvaluate.getEvaluateType()==1){
temp2+=1;
}
if (tResultWorkEvaluate.getEvaluateType()==2){
temp3+=1;
}
if (tResultWorkEvaluate.getEvaluateType()==3){
temp4+=1;
}
break;
}
Integer evaluateThree = tResultWorkEvaluate.getEvaluateThree();
switch (evaluateThree){
case 1:
temp1+=2;
if (tResultWorkEvaluate.getEvaluateType()==1){
temp2+=2;
}
if (tResultWorkEvaluate.getEvaluateType()==2){
temp3+=2;
}
if (tResultWorkEvaluate.getEvaluateType()==3){
temp4+=2;
}
break;
case 2:
temp1+=1;
if (tResultWorkEvaluate.getEvaluateType()==1){
temp2+=1;
}
if (tResultWorkEvaluate.getEvaluateType()==2){
temp3+=1;
}
if (tResultWorkEvaluate.getEvaluateType()==3){
temp4+=1;
}
break;
}
Integer evaluateFour = tResultWorkEvaluate.getEvaluateFour();
switch (evaluateFour){
case 1:
temp1+=2;
if (tResultWorkEvaluate.getEvaluateType()==1){
temp2+=2;
}
if (tResultWorkEvaluate.getEvaluateType()==2){
temp3+=2;
}
if (tResultWorkEvaluate.getEvaluateType()==3){
temp4+=2;
}
break;
case 2:
temp1+=1;
if (tResultWorkEvaluate.getEvaluateType()==1){
temp2+=1;
}
if (tResultWorkEvaluate.getEvaluateType()==2){
temp3+=1;
}
if (tResultWorkEvaluate.getEvaluateType()==3){
temp4+=1;
}
break;
}
Integer evaluateFive = tResultWorkEvaluate.getEvaluateFive();
switch (evaluateFive){
case 1:
temp1+=2;
if (tResultWorkEvaluate.getEvaluateType()==1){
temp2+=2;
}
if (tResultWorkEvaluate.getEvaluateType()==2){
temp3+=2;
}
if (tResultWorkEvaluate.getEvaluateType()==3){
temp4+=2;
}
break;
case 2:
temp1+=1;
if (tResultWorkEvaluate.getEvaluateType()==1){
temp2+=1;
}
if (tResultWorkEvaluate.getEvaluateType()==2){
temp3+=1;
}
if (tResultWorkEvaluate.getEvaluateType()==3){
temp4+=1;
}
break;
}
Integer evaluateSix = tResultWorkEvaluate.getEvaluateSix();
switch (evaluateSix){
case 1:
temp1+=2;
if (tResultWorkEvaluate.getEvaluateType()==1){
temp2-=3;
}
if (tResultWorkEvaluate.getEvaluateType()==2){
temp3-=3;
}
if (tResultWorkEvaluate.getEvaluateType()==3){
temp4-=3;
}
break;
}
}
tResultWorkEvaluateVO.setTeamIntegral(temp1);
tResultWorkEvaluateVO.setEngineerIntegral(temp2);
tResultWorkEvaluateVO.setChemistIntegral(temp3);
tResultWorkEvaluateVO.setTesterIntegral(temp4);
}
pageInfo.setRecords(list);
return pageInfo;
}
@Override
public PageInfo chemistEvaluateList(TResultWorkEvaluateQuery query) {
PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
if(CollectionUtils.isEmpty(query.getTeamIds())){
return pageInfo;
}
List list = this.baseMapper.chemistEvaluateList(query,pageInfo);
if(CollectionUtils.isEmpty(list)){
return pageInfo;
}
List userIds = list.stream().map(TResultWorkEvaluateVO::getUserId).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(userIds)){
List sysUsers = sysUserMapper.selectUserByIds(userIds);
list.forEach(tResultWorkEvaluateVO -> {
SysUser sysUser = sysUsers.stream().filter(user -> user.getUserId().equals(tResultWorkEvaluateVO.getUserId())).findFirst().orElse(null);
if(sysUser != null){
tResultWorkEvaluateVO.setChemistName(sysUser.getNickName());
}
});
}
pageInfo.setRecords(list);
return pageInfo;
}
@Override
public PageInfo testerEvaluateList(TResultWorkEvaluateQuery query) {
PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
if(CollectionUtils.isEmpty(query.getTeamIds())){
return pageInfo;
}
List list = this.baseMapper.testerEvaluateList(query,pageInfo);
if(CollectionUtils.isEmpty(list)){
return pageInfo;
}
List userIds = list.stream().map(TResultWorkEvaluateVO::getUserId).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(userIds)){
List sysUsers = sysUserMapper.selectUserByIds(userIds);
list.forEach(tResultWorkEvaluateVO -> {
SysUser sysUser = sysUsers.stream().filter(user -> user.getUserId().equals(tResultWorkEvaluateVO.getUserId())).findFirst().orElse(null);
if(sysUser != null){
tResultWorkEvaluateVO.setTesterName(sysUser.getNickName());
}
});
}
pageInfo.setRecords(list);
return pageInfo;
}
@Override
public PageInfo getEvaluateChemistPageList(ResultEvaluateChemistTesterQuery query) {
PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
List list = this.baseMapper.getEvaluateChemistPageList(query,pageInfo);
if(!CollectionUtils.isEmpty(list)){
// 查询工艺工程师的名称
List dispatchIds = list.stream().map(ResultEvaluateChemistTesterVO::getDispatchId).collect(Collectors.toList());
List experimentDispatchParticipants = experimentDispatchParticipantsMapper.selectList(new LambdaQueryWrapper()
.in(TExperimentDispatchParticipants::getDispatchId, dispatchIds)
.eq(TExperimentDispatchParticipants::getRoleType, 3));
List userIds = experimentDispatchParticipants.stream().map(TExperimentDispatchParticipants::getUserId).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(userIds)){
List sysUsers = sysUserMapper.selectUserByIds(userIds);
for (ResultEvaluateChemistTesterVO resultEvaluateChemistTesterVO : list) {
TExperimentDispatchParticipants dispatchParticipants = experimentDispatchParticipants.stream().filter(experimentDispatchParticipant -> experimentDispatchParticipant.getDispatchId().equals(resultEvaluateChemistTesterVO.getDispatchId())).findFirst().orElse(null);
if(Objects.nonNull(dispatchParticipants)){
sysUsers.stream().filter(sysUser -> sysUser.getUserId().equals(dispatchParticipants.getUserId())).findFirst().ifPresent(sysUser -> {
resultEvaluateChemistTesterVO.setProcessEngineerName(sysUser.getNickName());
});
}
}
}
}
pageInfo.setRecords(list);
return pageInfo;
}
@Override
public PageInfo getEvaluateTesterPageList(ResultEvaluateChemistTesterQuery query) {
PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
List list = this.baseMapper.getEvaluateTesterPageList(query,pageInfo);
if(!CollectionUtils.isEmpty(list)){
// 查询工艺工程师的名称
List dispatchIds = list.stream().map(ResultEvaluateChemistTesterVO::getDispatchId).collect(Collectors.toList());
List experimentDispatchParticipants = experimentDispatchParticipantsMapper.selectList(new LambdaQueryWrapper()
.in(TExperimentDispatchParticipants::getDispatchId, dispatchIds)
.eq(TExperimentDispatchParticipants::getRoleType, 3));
List userIds = experimentDispatchParticipants.stream().map(TExperimentDispatchParticipants::getUserId).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(userIds)){
List sysUsers = sysUserMapper.selectUserByIds(userIds);
for (ResultEvaluateChemistTesterVO resultEvaluateChemistTesterVO : list) {
TExperimentDispatchParticipants dispatchParticipants = experimentDispatchParticipants.stream().filter(experimentDispatchParticipant -> experimentDispatchParticipant.getDispatchId().equals(resultEvaluateChemistTesterVO.getDispatchId())).findFirst().orElse(null);
if(Objects.nonNull(dispatchParticipants)){
sysUsers.stream().filter(sysUser -> sysUser.getUserId().equals(dispatchParticipants.getUserId())).findFirst().ifPresent(sysUser -> {
resultEvaluateChemistTesterVO.setProcessEngineerName(sysUser.getNickName());
});
}
}
}
}
pageInfo.setRecords(list);
return pageInfo;
}
}