|
@@ -9,15 +9,18 @@ import com.izouma.wenlvju.domain.GradingOrganization;
|
|
|
import com.izouma.wenlvju.domain.Organization;
|
|
import com.izouma.wenlvju.domain.Organization;
|
|
|
import com.izouma.wenlvju.domain.Setting;
|
|
import com.izouma.wenlvju.domain.Setting;
|
|
|
import com.izouma.wenlvju.domain.performance.Participant;
|
|
import com.izouma.wenlvju.domain.performance.Participant;
|
|
|
|
|
+import com.izouma.wenlvju.domain.performance.Performance;
|
|
|
import com.izouma.wenlvju.domain.performance.Programme;
|
|
import com.izouma.wenlvju.domain.performance.Programme;
|
|
|
import com.izouma.wenlvju.dto.PageQuery;
|
|
import com.izouma.wenlvju.dto.PageQuery;
|
|
|
import com.izouma.wenlvju.dto.ProgrammeDTO;
|
|
import com.izouma.wenlvju.dto.ProgrammeDTO;
|
|
|
|
|
+import com.izouma.wenlvju.enums.CompetitionGroup;
|
|
|
import com.izouma.wenlvju.exception.BusinessException;
|
|
import com.izouma.wenlvju.exception.BusinessException;
|
|
|
import com.izouma.wenlvju.repo.ArtTypeRepo;
|
|
import com.izouma.wenlvju.repo.ArtTypeRepo;
|
|
|
import com.izouma.wenlvju.repo.GradingOrganizationRepo;
|
|
import com.izouma.wenlvju.repo.GradingOrganizationRepo;
|
|
|
import com.izouma.wenlvju.repo.OrganizationRepo;
|
|
import com.izouma.wenlvju.repo.OrganizationRepo;
|
|
|
import com.izouma.wenlvju.repo.SettingRepo;
|
|
import com.izouma.wenlvju.repo.SettingRepo;
|
|
|
import com.izouma.wenlvju.repo.performance.ParticipantRepo;
|
|
import com.izouma.wenlvju.repo.performance.ParticipantRepo;
|
|
|
|
|
+import com.izouma.wenlvju.repo.performance.PerformanceRepo;
|
|
|
import com.izouma.wenlvju.repo.performance.ProgrammeRepo;
|
|
import com.izouma.wenlvju.repo.performance.ProgrammeRepo;
|
|
|
import com.izouma.wenlvju.service.ArtTypeService;
|
|
import com.izouma.wenlvju.service.ArtTypeService;
|
|
|
import com.izouma.wenlvju.utils.JpaUtils;
|
|
import com.izouma.wenlvju.utils.JpaUtils;
|
|
@@ -48,6 +51,7 @@ public class ProgrammeService {
|
|
|
private ArtTypeRepo artTypeRepo;
|
|
private ArtTypeRepo artTypeRepo;
|
|
|
private SettingRepo settingRepo;
|
|
private SettingRepo settingRepo;
|
|
|
private ArtTypeService artTypeService;
|
|
private ArtTypeService artTypeService;
|
|
|
|
|
+ private PerformanceRepo performanceRepo;
|
|
|
|
|
|
|
|
public Page<Programme> all(PageQuery pageQuery) {
|
|
public Page<Programme> all(PageQuery pageQuery) {
|
|
|
return programmeRepo.findAll(JpaUtils.toSpecification(pageQuery, Programme.class), JpaUtils.toPageRequest(pageQuery));
|
|
return programmeRepo.findAll(JpaUtils.toSpecification(pageQuery, Programme.class), JpaUtils.toPageRequest(pageQuery));
|
|
@@ -86,6 +90,10 @@ public class ProgrammeService {
|
|
|
settingIds.add(programme.getLevelSettingId());
|
|
settingIds.add(programme.getLevelSettingId());
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+ Map<Long, String> performanceMap = performanceRepo.findAll()
|
|
|
|
|
+ .stream()
|
|
|
|
|
+ .collect(Collectors.toMap(Performance::getId, Performance::getName));
|
|
|
|
|
+
|
|
|
Map<Long, String> organizationMap = organizationRepo.findAll()
|
|
Map<Long, String> organizationMap = organizationRepo.findAll()
|
|
|
.stream()
|
|
.stream()
|
|
|
.collect(Collectors.toMap(Organization::getId, Organization::getName));
|
|
.collect(Collectors.toMap(Organization::getId, Organization::getName));
|
|
@@ -103,22 +111,25 @@ public class ProgrammeService {
|
|
|
.collect(Collectors.groupingBy(Participant::getProgrammeId, Collectors.counting()));
|
|
.collect(Collectors.groupingBy(Participant::getProgrammeId, Collectors.counting()));
|
|
|
return all.map(programme -> {
|
|
return all.map(programme -> {
|
|
|
if (participantMap.containsKey(programme.getId())) {
|
|
if (participantMap.containsKey(programme.getId())) {
|
|
|
- return toDTO(programme, organizationMap.get(programme.getOrganizationId()),
|
|
|
|
|
|
|
+ return toDTO(programme, performanceMap.get(programme.getPerformanceId()),
|
|
|
|
|
+ organizationMap.get(programme.getOrganizationId()),
|
|
|
gradingOrganizationMap.get(programme.getGradingOrganizationId()),
|
|
gradingOrganizationMap.get(programme.getGradingOrganizationId()),
|
|
|
artTypeMap.get(programme.getSpecialtyId()),
|
|
artTypeMap.get(programme.getSpecialtyId()),
|
|
|
settingMap.get(programme.getLevelSettingId()),
|
|
settingMap.get(programme.getLevelSettingId()),
|
|
|
participantMap.get(programme.getId()));
|
|
participantMap.get(programme.getId()));
|
|
|
}
|
|
}
|
|
|
- return toDTO(programme, organizationMap.get(programme.getOrganizationId()),
|
|
|
|
|
|
|
+ return toDTO(programme, performanceMap.get(programme.getPerformanceId()),
|
|
|
|
|
+ organizationMap.get(programme.getOrganizationId()),
|
|
|
gradingOrganizationMap.get(programme.getGradingOrganizationId()),
|
|
gradingOrganizationMap.get(programme.getGradingOrganizationId()),
|
|
|
artTypeMap.get(programme.getSpecialtyId()),
|
|
artTypeMap.get(programme.getSpecialtyId()),
|
|
|
settingMap.get(programme.getLevelSettingId()), 0);
|
|
settingMap.get(programme.getLevelSettingId()), 0);
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public ProgrammeDTO toDTO(Programme programme, String organization, String gradingOrganization, String artType,
|
|
|
|
|
|
|
+ public ProgrammeDTO toDTO(Programme programme, String performance, String organization, String gradingOrganization, String artType,
|
|
|
String setting, long participant) {
|
|
String setting, long participant) {
|
|
|
ProgrammeDTO dto = new ProgrammeDTO(programme);
|
|
ProgrammeDTO dto = new ProgrammeDTO(programme);
|
|
|
|
|
+ dto.setPerformance(performance);
|
|
|
dto.setOrganization(organization);
|
|
dto.setOrganization(organization);
|
|
|
dto.setGradingOrganization(gradingOrganization);
|
|
dto.setGradingOrganization(gradingOrganization);
|
|
|
dto.setSpecialty(artType);
|
|
dto.setSpecialty(artType);
|
|
@@ -128,11 +139,12 @@ public class ProgrammeService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public List<ProgrammeDTO> toDTOList(List<Programme> programmes) {
|
|
public List<ProgrammeDTO> toDTOList(List<Programme> programmes) {
|
|
|
- List<Long> ids = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
- programmes.forEach(programme -> {
|
|
|
|
|
- ids.add(programme.getId());
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ List<Long> ids = programmes.stream().map(Programme::getId).collect(Collectors.toList());
|
|
|
|
|
+
|
|
|
|
|
+ Map<Long, String> performanceMap = performanceRepo.findAll()
|
|
|
|
|
+ .stream()
|
|
|
|
|
+ .collect(Collectors.toMap(Performance::getId, Performance::getName));
|
|
|
|
|
|
|
|
Map<Long, String> organizationMap = organizationRepo.findAll()
|
|
Map<Long, String> organizationMap = organizationRepo.findAll()
|
|
|
.stream()
|
|
.stream()
|
|
@@ -153,13 +165,15 @@ public class ProgrammeService {
|
|
|
|
|
|
|
|
return programmes.stream().map(programme -> {
|
|
return programmes.stream().map(programme -> {
|
|
|
if (participantMap.containsKey(programme.getId())) {
|
|
if (participantMap.containsKey(programme.getId())) {
|
|
|
- return toDTO(programme, organizationMap.get(programme.getOrganizationId()),
|
|
|
|
|
|
|
+ return toDTO(programme, performanceMap.get(programme.getPerformanceId()),
|
|
|
|
|
+ organizationMap.get(programme.getOrganizationId()),
|
|
|
gradingOrganizationMap.get(programme.getGradingOrganizationId()),
|
|
gradingOrganizationMap.get(programme.getGradingOrganizationId()),
|
|
|
artTypeMap.get(programme.getSpecialtyId()),
|
|
artTypeMap.get(programme.getSpecialtyId()),
|
|
|
settingMap.get(programme.getLevelSettingId()),
|
|
settingMap.get(programme.getLevelSettingId()),
|
|
|
participantMap.get(programme.getId()));
|
|
participantMap.get(programme.getId()));
|
|
|
}
|
|
}
|
|
|
- return toDTO(programme, organizationMap.get(programme.getOrganizationId()),
|
|
|
|
|
|
|
+ return toDTO(programme, performanceMap.get(programme.getPerformanceId()),
|
|
|
|
|
+ organizationMap.get(programme.getOrganizationId()),
|
|
|
gradingOrganizationMap.get(programme.getGradingOrganizationId()),
|
|
gradingOrganizationMap.get(programme.getGradingOrganizationId()),
|
|
|
artTypeMap.get(programme.getSpecialtyId()),
|
|
artTypeMap.get(programme.getSpecialtyId()),
|
|
|
settingMap.get(programme.getLevelSettingId()), 0);
|
|
settingMap.get(programme.getLevelSettingId()), 0);
|
|
@@ -168,7 +182,7 @@ public class ProgrammeService {
|
|
|
|
|
|
|
|
@Transactional(rollbackOn = Exception.class)
|
|
@Transactional(rollbackOn = Exception.class)
|
|
|
public void upload(InputStream is, Long userId) throws IOException {
|
|
public void upload(InputStream is, Long userId) throws IOException {
|
|
|
- organizationRepo.findByUserId(userId).orElseThrow(new BusinessException("无记录"));
|
|
|
|
|
|
|
+ Organization organization = organizationRepo.findByUserId(userId).orElseThrow(new BusinessException("无记录"));
|
|
|
|
|
|
|
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
|
|
|
|
|
|
@@ -182,6 +196,39 @@ public class ProgrammeService {
|
|
|
InputStream indicatorStream = new ByteArrayInputStream(baos.toByteArray());
|
|
InputStream indicatorStream = new ByteArrayInputStream(baos.toByteArray());
|
|
|
List<ProgrammeDTO> dtos = ExcelUtils.readExcel(indicatorStream, ProgrammeDTO.class, 1, 1);
|
|
List<ProgrammeDTO> dtos = ExcelUtils.readExcel(indicatorStream, ProgrammeDTO.class, 1, 1);
|
|
|
|
|
|
|
|
- settingRepo.findAllByFlagIn(CollUtil.newArrayList(3, 4));
|
|
|
|
|
|
|
+ Map<String, Long> performanceMap = performanceRepo.findAll()
|
|
|
|
|
+ .stream()
|
|
|
|
|
+ .collect(Collectors.toMap(Performance::getName, Performance::getId));
|
|
|
|
|
+
|
|
|
|
|
+ Map<Integer, Map<String, Long>> mapMap = settingRepo.findAllByFlagIn(CollUtil.newArrayList(3, 4))
|
|
|
|
|
+ .stream()
|
|
|
|
|
+ .collect(Collectors.groupingBy(Setting::getFlag, Collectors.toMap(Setting::getName, Setting::getId)));
|
|
|
|
|
+
|
|
|
|
|
+ Map<String, Long> gradeMap = gradingOrganizationRepo.findAll()
|
|
|
|
|
+ .stream()
|
|
|
|
|
+ .collect(Collectors.toMap(GradingOrganization::getName, GradingOrganization::getId));
|
|
|
|
|
+
|
|
|
|
|
+ Map<String, Long> artTypeMap = artTypeRepo.findAll()
|
|
|
|
|
+ .stream()
|
|
|
|
|
+ .collect(Collectors.toMap(ArtType::getName, ArtType::getId));
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ List<Programme> programmes = new ArrayList<>();
|
|
|
|
|
+ dtos.forEach(dto -> {
|
|
|
|
|
+ Programme programme = new Programme(dto);
|
|
|
|
|
+ programme.setOrganizationId(organization.getId());
|
|
|
|
|
+ programme.setGradingOrganizationId(gradeMap.get(dto.getGradingOrganization()));
|
|
|
|
|
+ programme.setPerformanceId(performanceMap.get(dto.getPerformance()));
|
|
|
|
|
+ programme.setSpecialtyId(artTypeMap.get(dto.getSpecialty()));
|
|
|
|
|
+ if (dto.getCompetitionGroup().equals(CompetitionGroup.SINGLE)) {
|
|
|
|
|
+ programme.setLevelSettingId(mapMap.get(3).get(dto.getLevel()));
|
|
|
|
|
+ } else if (dto.getCompetitionGroup().equals(CompetitionGroup.COLLECTIVE)) {
|
|
|
|
|
+ programme.setLevelSettingId(mapMap.get(4).get(dto.getLevel()));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ programmes.add(programme);
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ programmeRepo.saveAll(programmes);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|