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.system.mapper.TClinicalTrialPointsMapper; import com.ruoyi.system.model.TClinicalTrialPoints; import com.ruoyi.system.query.TClinicalTrialPointsQuery; import com.ruoyi.system.service.TClinicalTrialPointsService; import com.ruoyi.system.vo.TClinicalTrialPointsVO; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.List; import java.util.stream.Collectors; /** *

* 临床试验积分 服务实现类 *

* * @author xiaochen * @since 2025-04-08 */ @Service public class TClinicalTrialPointsServiceImpl extends ServiceImpl implements TClinicalTrialPointsService { @Override public PageInfo pageList(TClinicalTrialPointsQuery query) { PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List list = this.baseMapper.pageList(query,pageInfo); // 统计当前项目组累计分数 List teamIds = list.stream().map(TClinicalTrialPointsVO::getTeamId).distinct().collect(Collectors.toList()); List teamList = this.list(Wrappers.lambdaQuery(TClinicalTrialPoints.class) .in(TClinicalTrialPoints::getTeamId,teamIds)); for (TClinicalTrialPointsVO clinicalTrialPointsVO : list) { List clinicalTrialPoints = teamList.stream().filter(item -> item.getTeamId().equals(clinicalTrialPointsVO.getTeamId())).collect(Collectors.toList()); if(CollectionUtils.isEmpty(clinicalTrialPoints)){ clinicalTrialPointsVO.setTotalScore(0.0); }else { clinicalTrialPointsVO.setTotalScore(clinicalTrialPoints.stream().mapToDouble(TClinicalTrialPoints::getEvaluateScore).sum()); } } pageInfo.setRecords(list); return pageInfo; } }