package com.ruoyi.system.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; 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.StringUtils; import com.ruoyi.system.mapper.SysUserMapper; import com.ruoyi.system.mapper.TFeasibilityStudyReportMapper; import com.ruoyi.system.model.TFeasibilityStudyReport; import com.ruoyi.system.query.TFeasibilityStudyReportQuery; import com.ruoyi.system.service.TFeasibilityStudyReportService; import com.ruoyi.system.vo.TFeasibilityStudyReportVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** *

* 可研、可行、工艺开发工具、验证发布报告 服务实现类 *

* * @author xiaochen * @since 2025-04-08 */ @Service public class TFeasibilityStudyReportServiceImpl extends ServiceImpl implements TFeasibilityStudyReportService { @Autowired private SysUserMapper sysUserMapper; @Override public PageInfo pageList(TFeasibilityStudyReportQuery query) { PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); if(CollectionUtils.isEmpty(query.getTeamIds())){ return pageInfo; } List list = this.baseMapper.pageList(query,pageInfo); if(CollectionUtils.isEmpty(list)){ return pageInfo; } List userIds = list.stream().map(TFeasibilityStudyReportVO::getEvaluatePersonId).collect(Collectors.toList()); List sysUsers = sysUserMapper.selectUserByIds(userIds); // 查询项目组 List teamIds = list.stream().map(TFeasibilityStudyReportVO::getTeamId).collect(Collectors.toList()); List feasibilityStudyReports = this.list(Wrappers.lambdaQuery(TFeasibilityStudyReport.class) .in(TFeasibilityStudyReport::getTeamId, teamIds)); for (TFeasibilityStudyReportVO tFeasibilityStudyReportVO : list) { List feasibilityStudyReportList = feasibilityStudyReports.stream() .filter(feasibilityStudyReport -> feasibilityStudyReport.getTeamId().equals(tFeasibilityStudyReportVO.getTeamId())).collect(Collectors.toList()); if (CollectionUtils.isEmpty(feasibilityStudyReportList)) { tFeasibilityStudyReportVO.setTotalScore(0); continue; } // 将feasibilityStudyReportList列表中所有的分数进行累加 List scoreList = feasibilityStudyReportList.stream().filter(e -> StringUtils.isNotBlank(e.getEvaluateScore())) .map(TFeasibilityStudyReport::getEvaluateScore).collect(Collectors.toList()); // 使用 Stream 累加分数 int totalSum = 0; for (String scoreStr : scoreList) { int sum = Arrays.stream(scoreStr.split(",")) .mapToInt(Integer::parseInt).sum(); totalSum+=sum; } tFeasibilityStudyReportVO.setTotalScore(totalSum); sysUsers.stream() .filter(sysUser -> sysUser.getUserId().equals(tFeasibilityStudyReportVO.getEvaluatePersonId())) .findFirst() .ifPresent(sysUser -> tFeasibilityStudyReportVO.setEvaluatePersonName(sysUser.getNickName())); } pageInfo.setRecords(list); return pageInfo; } @Override public PageInfo evaluatePageList(TFeasibilityStudyReportQuery query) { PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List list = this.baseMapper.evaluatePageList(query,pageInfo); for (TFeasibilityStudyReportVO tFeasibilityStudyReportVO : list) { String scoreStr = tFeasibilityStudyReportVO.getEvaluateScore(); if (scoreStr == null || scoreStr.isEmpty()) { tFeasibilityStudyReportVO.setTotalScore(0); continue; } try { // 使用 Stream 累加分数 int sum = Arrays.stream(scoreStr.split(",")) .mapToInt(Integer::parseInt) .sum(); tFeasibilityStudyReportVO.setTotalScore(sum); } catch (NumberFormatException e) { tFeasibilityStudyReportVO.setTotalScore(0); } } pageInfo.setRecords(list); return pageInfo; } @Override public Map evaluateCount(TFeasibilityStudyReportQuery query) { if(CollectionUtils.isEmpty(query.getTeamIds())){ return new HashMap<>(); } Map map = this.baseMapper.evaluateCount(query); return map; } }