package com.gunshi.project.ss.service; import com.gunshi.project.ss.model.MentenceFarmerRecord; import com.gunshi.project.ss.model.MentenceStDetail; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Service @Slf4j public class ScreenMfrService { @Autowired private MentenceFarmerRecordService mentenceFarmerRecordService; @Autowired private MentenceStDetailService mentenceStDetailService; public Map get(Long year) { Map map = new HashMap<>(); Map idMapToName = new HashMap<>(); LocalDateTime start = LocalDateTime.of(year.intValue(),1,1,0,0,0); LocalDateTime end = LocalDateTime.of(year.intValue(),12,31,23,59,59); List farmerRecords = mentenceFarmerRecordService.lambdaQuery() .ge(MentenceFarmerRecord::getMentenceTimeBegin, start) .le(MentenceFarmerRecord::getMentenceTimeBegin, end) .list(); if(farmerRecords.isEmpty()){ return map; } List stDetailId = farmerRecords.stream().map(o -> o.getMentenceStDetailId()).distinct().collect(Collectors.toList()); List mentenceStDetail = mentenceStDetailService.lambdaQuery() .in(MentenceStDetail::getId, stDetailId).list(); for (MentenceStDetail stDetail : mentenceStDetail) { idMapToName.put(stDetail.getId(),stDetail.getStDetailName()); } for (MentenceFarmerRecord record : farmerRecords) { String name = idMapToName.get(record.getMentenceStDetailId()); map.put(name,map.getOrDefault(name,0L)+1L); } return map; } }