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.TProjectTeam;
|
import com.ruoyi.system.model.TProjectTeamStaff;
|
import com.ruoyi.system.model.TResultWorkEvaluate;
|
import com.ruoyi.system.query.ResultEvaluateChemistTesterQuery;
|
import com.ruoyi.system.query.TResultWorkEvaluateQuery;
|
import com.ruoyi.system.service.ISysUserService;
|
import com.ruoyi.system.service.TProjectTeamService;
|
import com.ruoyi.system.service.TProjectTeamStaffService;
|
import com.ruoyi.system.service.TResultWorkEvaluateService;
|
import com.ruoyi.system.vo.ResultEvaluateChemistTesterVO;
|
import com.ruoyi.system.vo.TResultWorkEvaluateDetailVO;
|
import com.ruoyi.system.vo.TResultWorkEvaluateVO;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.CollectionUtils;
|
|
import javax.annotation.Resource;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Objects;
|
import java.util.Optional;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 实验员工作评定 服务实现类
|
* </p>
|
*
|
* @author xiaochen
|
* @since 2025-04-08
|
*/
|
@Service
|
public class TTesterWorkEvaluateServiceImpl extends ServiceImpl<TResultWorkEvaluateMapper, TResultWorkEvaluate> implements TResultWorkEvaluateService {
|
|
@Autowired
|
private SysUserMapper sysUserMapper;
|
@Autowired
|
private TExperimentDispatchParticipantsMapper experimentDispatchParticipantsMapper;
|
@Resource
|
private TResultWorkEvaluateService tResultWorkEvaluateService;
|
@Autowired
|
private TProjectTeamService projectTeamService;
|
@Autowired
|
private TProjectTeamStaffService projectTeamStaffService;
|
@Autowired
|
private ISysUserService sysUserService;
|
@Autowired
|
private WorkEvaluateService workEvaluateCalculateService;
|
|
@Override
|
public PageInfo<TResultWorkEvaluateVO> pageList(TResultWorkEvaluateQuery query) {
|
PageInfo<TResultWorkEvaluateVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
|
if(CollectionUtils.isEmpty(query.getTeamIds())){
|
return pageInfo;
|
}
|
List<TResultWorkEvaluateVO> list = this.baseMapper.pageList(query,pageInfo);
|
List<TResultWorkEvaluate> tResultWorkEvaluates = this.baseMapper.selectList(new LambdaQueryWrapper<TResultWorkEvaluate>()
|
.orderByDesc(TResultWorkEvaluate::getEvaluateTime)
|
.isNotNull(TResultWorkEvaluate::getTeamId));
|
for (TResultWorkEvaluateVO tResultWorkEvaluateVO : list) {
|
String id = tResultWorkEvaluateVO.getId();
|
|
TResultWorkEvaluate resultWorkEvaluate = tResultWorkEvaluateService.getById(id);
|
TProjectTeam projectTeam = projectTeamService.getById(resultWorkEvaluate.getTeamId());
|
tResultWorkEvaluateVO.setStartTime(projectTeam.getCreateTime());
|
List<Long> role4 = projectTeamStaffService.lambdaQuery()
|
.eq(TProjectTeamStaff::getRoleType, 4).eq(TProjectTeamStaff::getTeamId, resultWorkEvaluate.getTeamId()).list()
|
.stream().map(TProjectTeamStaff::getUserId).collect(Collectors.toList());
|
List<Long> role5 = projectTeamStaffService.lambdaQuery()
|
.eq(TProjectTeamStaff::getRoleType, 5).eq(TProjectTeamStaff::getTeamId, resultWorkEvaluate.getTeamId()).list()
|
.stream().map(TProjectTeamStaff::getUserId).collect(Collectors.toList());
|
|
List<SysUser> user4 = new ArrayList<>();
|
List<SysUser> user5 = new ArrayList<>();
|
|
for (Long l : role4) {
|
SysUser sysUser = sysUserService.selectUserById(l);
|
if (sysUser != null) {
|
user4.add(sysUser);
|
}
|
}
|
for (Long l : role5) {
|
SysUser sysUser = sysUserService.selectUserById(l);
|
if (sysUser != null) {
|
user5.add(sysUser);
|
}
|
}
|
|
int engineerIntegral = 0; // 工艺工程师总积分
|
int chemistIntegral = 0; // 化验师总积分
|
int testerIntegral = 0; // 实验员总积分
|
|
// 单独获取各角色积分
|
TResultWorkEvaluateDetailVO engineerEvaluateDetail = workEvaluateCalculateService.getProcessEngineerEvaluateDetail(id);//工艺工程师
|
if (engineerEvaluateDetail != null && engineerEvaluateDetail.getEngineerList() != null) {
|
engineerIntegral = engineerEvaluateDetail.getEngineerList().stream()
|
.mapToInt(vo -> Optional.ofNullable(vo.getIntegral()).orElse(0))
|
.sum();
|
}
|
|
TResultWorkEvaluateDetailVO chemistEvaluateDetail = workEvaluateCalculateService.getChemistEvaluateDetail(id);//4 化验师
|
if (chemistEvaluateDetail != null && chemistEvaluateDetail.getChemistList() != null) {
|
chemistIntegral = chemistEvaluateDetail.getChemistList().stream()
|
.filter(user -> user.getList() != null)
|
.flatMap(user -> user.getList().stream())
|
.mapToInt(vo -> Optional.ofNullable(vo.getIntegral()).orElse(0))
|
.sum();
|
}
|
|
TResultWorkEvaluateDetailVO testerEvaluateDetail = workEvaluateCalculateService.getTesterEvaluateDetail(id);// 5 实验员
|
if (testerEvaluateDetail != null && testerEvaluateDetail.getTesterList() != null) {
|
testerIntegral = testerEvaluateDetail.getTesterList().stream()
|
.filter(user -> user.getList() != null)
|
.flatMap(user -> user.getList().stream())
|
.mapToInt(vo -> Optional.ofNullable(vo.getIntegral()).orElse(0))
|
.sum();
|
}
|
|
// 计算项目组总积分
|
int teamIntegral = engineerIntegral + chemistIntegral + testerIntegral;
|
|
//查询最后一条数据的时间
|
TResultWorkEvaluate tResultWorkEvaluate = tResultWorkEvaluateService.lambdaQuery()
|
.eq(TResultWorkEvaluate::getTeamId, projectTeam.getId())
|
.eq(TResultWorkEvaluate::getDisabled, 0)//未删除
|
.orderByDesc(TResultWorkEvaluate::getEvaluateTime)// 按评定时间倒序排序
|
.last("limit 1")// 取第一条
|
.one();
|
if (tResultWorkEvaluate != null) {
|
tResultWorkEvaluateVO.setEndTime(tResultWorkEvaluate.getEvaluateTime());
|
}
|
|
tResultWorkEvaluateVO.setTeamIntegral(teamIntegral);
|
tResultWorkEvaluateVO.setEngineerIntegral(engineerIntegral);
|
tResultWorkEvaluateVO.setChemistIntegral(chemistIntegral);
|
tResultWorkEvaluateVO.setTesterIntegral(testerIntegral);
|
}
|
pageInfo.setRecords(list);
|
return pageInfo;
|
}
|
|
@Override
|
public PageInfo<TResultWorkEvaluateVO> chemistEvaluateList(TResultWorkEvaluateQuery query) {
|
PageInfo<TResultWorkEvaluateVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
|
if(CollectionUtils.isEmpty(query.getTeamIds())){
|
return pageInfo;
|
}
|
List<TResultWorkEvaluateVO> list = this.baseMapper.chemistEvaluateList(query,pageInfo);
|
if(CollectionUtils.isEmpty(list)){
|
return pageInfo;
|
}
|
|
List<Long> userIds = list.stream().map(TResultWorkEvaluateVO::getUserId).collect(Collectors.toList());
|
if(!CollectionUtils.isEmpty(userIds)){
|
List<SysUser> 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<TResultWorkEvaluateVO> testerEvaluateList(TResultWorkEvaluateQuery query) {
|
PageInfo<TResultWorkEvaluateVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
|
if(CollectionUtils.isEmpty(query.getTeamIds())){
|
return pageInfo;
|
}
|
List<TResultWorkEvaluateVO> list = this.baseMapper.testerEvaluateList(query,pageInfo);
|
if(CollectionUtils.isEmpty(list)){
|
return pageInfo;
|
}
|
|
List<Long> userIds = list.stream().map(TResultWorkEvaluateVO::getUserId).collect(Collectors.toList());
|
if(!CollectionUtils.isEmpty(userIds)){
|
List<SysUser> 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<ResultEvaluateChemistTesterVO> getEvaluateChemistPageList(ResultEvaluateChemistTesterQuery query) {
|
PageInfo<ResultEvaluateChemistTesterVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
|
List<ResultEvaluateChemistTesterVO> list = this.baseMapper.getEvaluateChemistPageList(query,pageInfo);
|
if(!CollectionUtils.isEmpty(list)){
|
// 查询工艺工程师的名称
|
List<String> dispatchIds = list.stream().map(ResultEvaluateChemistTesterVO::getDispatchId).collect(Collectors.toList());
|
List<TExperimentDispatchParticipants> experimentDispatchParticipants = experimentDispatchParticipantsMapper.selectList(new LambdaQueryWrapper<TExperimentDispatchParticipants>()
|
.in(TExperimentDispatchParticipants::getDispatchId, dispatchIds)
|
.eq(TExperimentDispatchParticipants::getRoleType, 3));
|
List<Long> userIds = experimentDispatchParticipants.stream().map(TExperimentDispatchParticipants::getUserId).collect(Collectors.toList());
|
if(!CollectionUtils.isEmpty(userIds)){
|
List<SysUser> 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<ResultEvaluateChemistTesterVO> getEvaluateTesterPageList(ResultEvaluateChemistTesterQuery query) {
|
PageInfo<ResultEvaluateChemistTesterVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
|
List<ResultEvaluateChemistTesterVO> list = this.baseMapper.getEvaluateTesterPageList(query,pageInfo);
|
if(!CollectionUtils.isEmpty(list)){
|
// 查询工艺工程师的名称
|
List<String> dispatchIds = list.stream().map(ResultEvaluateChemistTesterVO::getDispatchId).collect(Collectors.toList());
|
List<TExperimentDispatchParticipants> experimentDispatchParticipants = experimentDispatchParticipantsMapper.selectList(new LambdaQueryWrapper<TExperimentDispatchParticipants>()
|
.in(TExperimentDispatchParticipants::getDispatchId, dispatchIds)
|
.eq(TExperimentDispatchParticipants::getRoleType, 3));
|
List<Long> userIds = experimentDispatchParticipants.stream().map(TExperimentDispatchParticipants::getUserId).collect(Collectors.toList());
|
if(!CollectionUtils.isEmpty(userIds)){
|
List<SysUser> 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;
|
}
|
}
|