package com.gunshi.project.ss.service; import com.gunshi.project.ss.entity.vo.ScreenPositionTrainingVo; import com.gunshi.project.ss.model.PersonnelPlan; import com.gunshi.project.ss.model.PersonnelPlanLog; import com.gunshi.project.ss.model.ResPerson; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Arrays; import java.util.List; @Slf4j @Service public class ScreenResponsibilityService { @Autowired private PersonnelPlanService personnelPlanService; @Autowired private PersonnelPlanLogService personnelPlanLogService; @Autowired private ResPersonService resPersonService; public ScreenPositionTrainingVo getTraining() { ScreenPositionTrainingVo vo = new ScreenPositionTrainingVo(); List list = personnelPlanService.lambdaQuery().orderByDesc(PersonnelPlan::getCreateTime).list(); vo.setTrainingCount(list.size()); List ids = list.stream().map(PersonnelPlan::getId).toList(); List logs = personnelPlanLogService.lambdaQuery().orderByDesc(PersonnelPlanLog::getCreateTime).list(); if(logs.isEmpty()){ vo.setTotalTraining(0); vo.setHasTraining(0L); vo.setHasNoTraining(0L); return vo; } vo.setLatestPersonnelLog(logs.getFirst()); vo.setTotalTraining(logs.stream().mapToInt(PersonnelPlanLog::getNumPeople).sum()); //已开展数量 Long hasTraining = logs.stream().map(PersonnelPlanLog::getPlanId).filter(planId ->ids.contains(planId)).distinct().count(); vo.setHasTraining(hasTraining); vo.setHasNoTraining(vo.getTrainingCount() - hasTraining); return vo; } public List getPerson() { List list = resPersonService.lambdaQuery().in(ResPerson::getType, Arrays.asList(1, 2, 3)) .orderByDesc(ResPerson::getCreateTime) .list(); return list; } public List getFxPerson() { List list = resPersonService.lambdaQuery().in(ResPerson::getType, Arrays.asList(1, 4, 5)) .orderByDesc(ResPerson::getCreateTime) .list(); return list; } }