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;
}
}