|
@@ -6,6 +6,7 @@ import com.izouma.wenlvju.domain.ArtType;
|
|
|
import com.izouma.wenlvju.domain.Award;
|
|
import com.izouma.wenlvju.domain.Award;
|
|
|
import com.izouma.wenlvju.domain.performance.Programme;
|
|
import com.izouma.wenlvju.domain.performance.Programme;
|
|
|
import com.izouma.wenlvju.domain.performance.ProgrammeAward;
|
|
import com.izouma.wenlvju.domain.performance.ProgrammeAward;
|
|
|
|
|
+import com.izouma.wenlvju.dto.AwardDTO;
|
|
|
import com.izouma.wenlvju.dto.PageQuery;
|
|
import com.izouma.wenlvju.dto.PageQuery;
|
|
|
import com.izouma.wenlvju.dto.ProgrammeAwardDTO;
|
|
import com.izouma.wenlvju.dto.ProgrammeAwardDTO;
|
|
|
import com.izouma.wenlvju.repo.ArtTypeRepo;
|
|
import com.izouma.wenlvju.repo.ArtTypeRepo;
|
|
@@ -17,9 +18,7 @@ import lombok.AllArgsConstructor;
|
|
|
import org.springframework.data.domain.Page;
|
|
import org.springframework.data.domain.Page;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
|
|
-import java.util.List;
|
|
|
|
|
-import java.util.Map;
|
|
|
|
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
@Service
|
|
@Service
|
|
@@ -36,32 +35,41 @@ public class ProgrammeAwardService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public List<ProgrammeAwardDTO> getAll(Long performanceId) {
|
|
public List<ProgrammeAwardDTO> getAll(Long performanceId) {
|
|
|
|
|
+ //找出所有节目奖项设置
|
|
|
PageQuery pageQuery = new PageQuery();
|
|
PageQuery pageQuery = new PageQuery();
|
|
|
pageQuery.setSize(100);
|
|
pageQuery.setSize(100);
|
|
|
pageQuery.setSort("specialtyId,asc");
|
|
pageQuery.setSort("specialtyId,asc");
|
|
|
pageQuery.getQuery().put("performanceId", performanceId);
|
|
pageQuery.getQuery().put("performanceId", performanceId);
|
|
|
List<ProgrammeAward> programmeAwards = this.all(pageQuery).getContent();
|
|
List<ProgrammeAward> programmeAwards = this.all(pageQuery).getContent();
|
|
|
|
|
|
|
|
|
|
+ // 奖项
|
|
|
|
|
+ List<Award> awardList = awardRepo.findAll();
|
|
|
|
|
+
|
|
|
|
|
+ //专业
|
|
|
List<ArtType> all = artTypeRepo.findAll();
|
|
List<ArtType> all = artTypeRepo.findAll();
|
|
|
Map<Long, String> artTypeMap = all
|
|
Map<Long, String> artTypeMap = all
|
|
|
.stream()
|
|
.stream()
|
|
|
.collect(Collectors.toMap(ArtType::getId, ArtType::getName));
|
|
.collect(Collectors.toMap(ArtType::getId, ArtType::getName));
|
|
|
|
|
|
|
|
|
|
+ //已经设置完成
|
|
|
if (CollUtil.isNotEmpty(programmeAwards)) {
|
|
if (CollUtil.isNotEmpty(programmeAwards)) {
|
|
|
|
|
+ Map<Long, String> awardMap = awardList.stream().collect(Collectors.toMap(Award::getId, Award::getName));
|
|
|
return programmeAwards.stream()
|
|
return programmeAwards.stream()
|
|
|
.map(award -> {
|
|
.map(award -> {
|
|
|
ProgrammeAwardDTO dto = new ProgrammeAwardDTO(award);
|
|
ProgrammeAwardDTO dto = new ProgrammeAwardDTO(award);
|
|
|
dto.setSpecialty(artTypeMap.get(award.getSpecialtyId()));
|
|
dto.setSpecialty(artTypeMap.get(award.getSpecialtyId()));
|
|
|
|
|
+ dto.setAward(awardMap.get(award.getAwardId()));
|
|
|
return dto;
|
|
return dto;
|
|
|
})
|
|
})
|
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ //总节目
|
|
|
List<Programme> programmeList = programmeRepo.findAllByPerformanceIdAndStatus(performanceId, 2);
|
|
List<Programme> programmeList = programmeRepo.findAllByPerformanceIdAndStatus(performanceId, 2);
|
|
|
List<ArtType> artTypes = all.stream()
|
|
List<ArtType> artTypes = all.stream()
|
|
|
.filter(artType -> ObjectUtil.isNull(artType.getParent()))
|
|
.filter(artType -> ObjectUtil.isNull(artType.getParent()))
|
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
|
- List<Award> awardList = awardRepo.findAll();
|
|
|
|
|
|
|
+
|
|
|
List<ProgrammeAwardDTO> dtos = new ArrayList<>();
|
|
List<ProgrammeAwardDTO> dtos = new ArrayList<>();
|
|
|
|
|
|
|
|
artTypes.forEach(artType -> {
|
|
artTypes.forEach(artType -> {
|
|
@@ -75,7 +83,9 @@ public class ProgrammeAwardService {
|
|
|
|
|
|
|
|
awardList.forEach(award -> {
|
|
awardList.forEach(award -> {
|
|
|
ProgrammeAwardDTO dto = new ProgrammeAwardDTO();
|
|
ProgrammeAwardDTO dto = new ProgrammeAwardDTO();
|
|
|
|
|
+ dto.setSpecialtyId(artType.getId());
|
|
|
dto.setSpecialty(artType.getName());
|
|
dto.setSpecialty(artType.getName());
|
|
|
|
|
+ dto.setAwardId(award.getId());
|
|
|
dto.setAward(award.getName());
|
|
dto.setAward(award.getName());
|
|
|
dto.setPerformanceId(performanceId);
|
|
dto.setPerformanceId(performanceId);
|
|
|
dto.setProgrammeNum(count);
|
|
dto.setProgrammeNum(count);
|
|
@@ -84,4 +94,107 @@ public class ProgrammeAwardService {
|
|
|
});
|
|
});
|
|
|
return dtos;
|
|
return dtos;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ public List<ProgrammeAwardDTO> getAll2(Long performanceId) {
|
|
|
|
|
+ PageQuery pageQuery = new PageQuery();
|
|
|
|
|
+ pageQuery.setSize(100);
|
|
|
|
|
+ pageQuery.setSort("specialtyId,asc");
|
|
|
|
|
+ pageQuery.getQuery().put("performanceId", performanceId);
|
|
|
|
|
+ List<ProgrammeAward> programmeAwards = this.all(pageQuery).getContent();
|
|
|
|
|
+
|
|
|
|
|
+ List<Award> awardList = awardRepo.findAll();
|
|
|
|
|
+
|
|
|
|
|
+ List<ArtType> all = artTypeRepo.findAll();
|
|
|
|
|
+ Map<Long, String> artTypeMap = all
|
|
|
|
|
+ .stream()
|
|
|
|
|
+ .collect(Collectors.toMap(ArtType::getId, ArtType::getName));
|
|
|
|
|
+
|
|
|
|
|
+ List<ProgrammeAwardDTO> dtos = new ArrayList<>();
|
|
|
|
|
+ if (CollUtil.isNotEmpty(programmeAwards)) {
|
|
|
|
|
+ Map<Long, List<ProgrammeAward>> longListMap = programmeAwards.stream()
|
|
|
|
|
+ .collect(Collectors.groupingBy(ProgrammeAward::getSpecialtyId));
|
|
|
|
|
+ Map<Long, String> awardMap = awardList.stream().collect(Collectors.toMap(Award::getId, Award::getName));
|
|
|
|
|
+
|
|
|
|
|
+ longListMap.forEach((k, v) -> {
|
|
|
|
|
+ ProgrammeAwardDTO dto = new ProgrammeAwardDTO(v.get(0));
|
|
|
|
|
+ dto.setSpecialty(artTypeMap.get(k));
|
|
|
|
|
+ dto.setAwardDTOS(v.stream().map(award -> {
|
|
|
|
|
+ AwardDTO awardDTO = new AwardDTO(award);
|
|
|
|
|
+ awardDTO.setAward(awardMap.get(award.getAwardId()));
|
|
|
|
|
+ return awardDTO;
|
|
|
|
|
+ }).collect(Collectors.toList()));
|
|
|
|
|
+ dtos.add(dto);
|
|
|
|
|
+ });
|
|
|
|
|
+ return dtos;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ List<Programme> programmeList = programmeRepo.findAllByPerformanceIdAndStatus(performanceId, 2);
|
|
|
|
|
+ List<ArtType> artTypes = all.stream()
|
|
|
|
|
+ .filter(artType -> ObjectUtil.isNull(artType.getParent()))
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ artTypes.forEach(artType -> {
|
|
|
|
|
+
|
|
|
|
|
+ List<Long> artTypeIds = all.stream()
|
|
|
|
|
+ .filter(at -> at.getCode().startsWith(artType.getCode()))
|
|
|
|
|
+ .map(ArtType::getId)
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
+ long count = programmeList.stream()
|
|
|
|
|
+ .filter(programme -> artTypeIds.contains(programme.getSpecialtyId()))
|
|
|
|
|
+ .count();
|
|
|
|
|
+ ProgrammeAwardDTO dto = ProgrammeAwardDTO.builder()
|
|
|
|
|
+ .programmeNum(count)
|
|
|
|
|
+ .specialty(artType.getName())
|
|
|
|
|
+ .performanceId(performanceId)
|
|
|
|
|
+ .build();
|
|
|
|
|
+
|
|
|
|
|
+ List<AwardDTO> awardDTOS = new ArrayList<>();
|
|
|
|
|
+ awardList.forEach(award -> {
|
|
|
|
|
+ AwardDTO awardDTO = new AwardDTO();
|
|
|
|
|
+ awardDTO.setAward(award.getName());
|
|
|
|
|
+ awardDTOS.add(awardDTO);
|
|
|
|
|
+ });
|
|
|
|
|
+ dto.setAwardDTOS(awardDTOS);
|
|
|
|
|
+ dtos.add(dto);
|
|
|
|
|
+ });
|
|
|
|
|
+ return dtos;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public void batchSave(List<ProgrammeAwardDTO> dtos) {
|
|
|
|
|
+ List<ProgrammeAward> programmeAwards = dtos.stream().map(ProgrammeAward::new).collect(Collectors.toList());
|
|
|
|
|
+ programmeAwardRepo.saveAll(programmeAwards);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public void saveProgramme(List<ProgrammeAwardDTO> dtos) {
|
|
|
|
|
+ List<Programme> programmeList = programmeRepo.findAllByPerformanceIdAndStatus(dtos.get(0)
|
|
|
|
|
+ .getPerformanceId(), 2);
|
|
|
|
|
+
|
|
|
|
|
+ //按专业分组
|
|
|
|
|
+
|
|
|
|
|
+ //按成绩排序
|
|
|
|
|
+ programmeList.sort(Comparator.comparingDouble(Programme::getScore));
|
|
|
|
|
+
|
|
|
|
|
+ //获得奖项优先级
|
|
|
|
|
+ List<Award> awards = awardRepo.findAll();
|
|
|
|
|
+ awards.sort(Comparator.comparingInt(Award::getLevel));
|
|
|
|
|
+
|
|
|
|
|
+ //按专业区分再按奖项区分
|
|
|
|
|
+ Map<Long, Map<Long, List<ProgrammeAwardDTO>>> mapMap = dtos.stream()
|
|
|
|
|
+ .collect(Collectors.groupingBy(ProgrammeAwardDTO::getSpecialtyId, Collectors.groupingBy(ProgrammeAwardDTO::getAwardId)));
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ mapMap.forEach((k, v) -> {
|
|
|
|
|
+ int start = 0;
|
|
|
|
|
+ awards.forEach(award -> {
|
|
|
|
|
+ ProgrammeAwardDTO pa = v.get(award.getId()).get(0);
|
|
|
|
|
+ if (pa.getNum() > 0) {
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|