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.common.utils.bean.BeanUtils; import com.ruoyi.system.mapper.SysUserMapper; import com.ruoyi.system.mapper.TProjectTeamMapper; import com.ruoyi.system.mapper.TStrainReportDetailMapper; import com.ruoyi.system.mapper.TStrainReportMapper; import com.ruoyi.system.model.TProjectTeam; import com.ruoyi.system.model.TStrainReport; import com.ruoyi.system.model.TStrainReportDetail; import com.ruoyi.system.model.TTrainLibrary; import com.ruoyi.system.query.TProjectTeamQuery; import com.ruoyi.system.query.TStrainReportProjectQuery; import com.ruoyi.system.query.TStrainReportQuery; import com.ruoyi.system.query.TTrainLibraryQuery; import com.ruoyi.system.service.TStrainReportDetailService; import com.ruoyi.system.service.TStrainReportService; import com.ruoyi.system.vo.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.List; import java.util.stream.Collectors; /** *

* 菌种报告库 服务实现类 *

* * @author 无关风月 * @since 2025-04-12 */ @Service public class TStrainReportServiceImpl extends ServiceImpl implements TStrainReportService { @Resource private TProjectTeamMapper projectTeamMapper; @Resource private TStrainReportDetailMapper strainReportDetailMapper; @Resource private SysUserMapper sysUserMapper; @Override public PageInfo pageList(TStrainReportQuery query) { PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List list = this.baseMapper.pageList(query,pageInfo); pageInfo.setRecords(list); return pageInfo; } @Override public PageInfo pageListProject(TStrainReportProjectQuery query) { PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List list = this.baseMapper.pageListProject(query,pageInfo); List tStrainReports = this.baseMapper.selectList(new LambdaQueryWrapper().eq(TStrainReport::getStatus,3)); List tStrainReportDetails = strainReportDetailMapper.selectList(new LambdaQueryWrapper()); for (TStrainReportProjectVO tStrainReportProjectVO : list) { List collect = tStrainReports.stream().filter(e -> e.getProjectId().equals(tStrainReportProjectVO.getProjectId())).collect(Collectors.toList()); BigDecimal sum = new BigDecimal("0"); BigDecimal sum1 = new BigDecimal("0"); BigDecimal sum2 = new BigDecimal("0"); Integer temp = 0; for (TStrainReport tStrainReport : collect) { List collect1 = tStrainReportDetails.stream() .filter(e -> e.getReportId().equals(tStrainReport.getId())&& e.getEvaluateHumanType()==1).collect(Collectors.toList()); List collect2 = tStrainReportDetails.stream() .filter(e -> e.getReportId().equals(tStrainReport.getId())&& e.getEvaluateHumanType()==2).collect(Collectors.toList()); // 菌种工程积分 sum1 = collect2.stream() .filter(e -> e.getEvaluateHumanType().equals(1)) .map(TStrainReportDetail::getEvaluateTotal) .reduce(BigDecimal::add) .orElse(BigDecimal.ZERO); // 菌种实验员积分 sum2 = collect1.stream() .filter(e -> e.getEvaluateHumanType().equals(2)) .map(TStrainReportDetail::getEvaluateTotal) .reduce(BigDecimal::add) .orElse(BigDecimal.ZERO); List collect3 = tStrainReportDetails.stream().filter(e -> e.getReportType() == 1).collect(Collectors.toList()); for (TStrainReportDetail tStrainReportDetail : collect3) { // 根据评定等级统计失败次数 if (StringUtils.hasLength(tStrainReportDetail.getEvaluate())&& tStrainReportDetail.getEvaluate().split(",").length>=5){ if (tStrainReportDetail.getEvaluate().split(",")[4].equals("2")){ temp++; } } } } tStrainReportProjectVO.setTeamIntegral(sum1.add(sum2)); tStrainReportProjectVO.setEngineerIntegral(sum1); tStrainReportProjectVO.setExperimenterIntegral(sum2); tStrainReportProjectVO.setFailCount(temp); List collect1 = tStrainReports.stream().filter(e -> e.getProjectId().equals(tStrainReportProjectVO.getProjectId())).collect(Collectors.toList()); if (!collect1.isEmpty()){ tStrainReportProjectVO.setEndTime(collect1.get(0).getEvaluateTime()); } TProjectTeam projectTeam = projectTeamMapper.selectById(tStrainReportProjectVO.getProjectId()); tStrainReportProjectVO.setStartTime(projectTeam.getCreateTime()); } pageInfo.setRecords(list); return pageInfo; } @Override public PageInfo pageListAll(TStrainReportQuery query) { PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List list = this.baseMapper.pageListAll(query,pageInfo); List tStrainReportDetails = strainReportDetailMapper.selectList(null); for (TStrainReportVO tStrainReportVO : list) { List collect = tStrainReportDetails.stream().filter(e -> e.getReportId().equals(tStrainReportVO.getId())).collect(Collectors.toList()); for (TStrainReportDetail tStrainReportDetail : collect) { if (tStrainReportDetail.getEvaluateHumanType()==1){ if (tStrainReportDetail.getExperimentId()!=null){ SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(tStrainReportDetail.getExperimentId())); tStrainReportVO.setExperimentName(sysUser.getNickName()); } }else if (tStrainReportDetail.getEvaluateHumanType()==2){ if (tStrainReportDetail.getExperimentId()!=null){ SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(tStrainReportDetail.getExperimentId())); tStrainReportVO.setExperimentName(sysUser.getNickName()); } } } } pageInfo.setRecords(list); return pageInfo; } }