|
|
@@ -1,9 +1,12 @@
|
|
|
package com.izouma.wenlvju.service.performance;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.izouma.wenlvju.domain.ArtType;
|
|
|
import com.izouma.wenlvju.domain.performance.Arrange;
|
|
|
+import com.izouma.wenlvju.domain.performance.Programme;
|
|
|
import com.izouma.wenlvju.dto.ArrangeDTO;
|
|
|
import com.izouma.wenlvju.dto.PageQuery;
|
|
|
+import com.izouma.wenlvju.exception.BusinessException;
|
|
|
import com.izouma.wenlvju.repo.ArtTypeRepo;
|
|
|
import com.izouma.wenlvju.repo.performance.ArrangeRepo;
|
|
|
import com.izouma.wenlvju.utils.JpaUtils;
|
|
|
@@ -16,6 +19,7 @@ import java.time.LocalDate;
|
|
|
import java.time.LocalTime;
|
|
|
import java.time.Period;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
+import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -61,10 +65,83 @@ public class ArrangeService {
|
|
|
int group = (int) Math.ceil((double) total / (time + 10));
|
|
|
|
|
|
LocalDate date = dto.getStartDate();
|
|
|
- LocalTime startTime = dto.getMorningStartTime();
|
|
|
DateTimeFormatter format = DateTimeFormatter.ofPattern("MM月dd日");
|
|
|
String[] arr = {"一", "二", "三", "四", "五", "六", "七", "八", "九", "十"};
|
|
|
- String amPm = "上午";
|
|
|
+ String format1 = format.format(date);
|
|
|
+
|
|
|
+ if (dto.isMorning() && dto.isAfternoon()) {
|
|
|
+ this.saveArrange(dto, group, time, format1, arr);
|
|
|
+ } else {
|
|
|
+ LocalTime startAt;
|
|
|
+ LocalTime endAt;
|
|
|
+ LocalTime startTime;
|
|
|
+ boolean morning = true;
|
|
|
+ String amPm = "上午";
|
|
|
+
|
|
|
+ if (dto.isMorning()) {
|
|
|
+ startTime = dto.getMorningStartTime();
|
|
|
+ startAt = dto.getMorningStartTime();
|
|
|
+ endAt = dto.getMorningEndTime();
|
|
|
+ } else if (dto.isAfternoon()) {
|
|
|
+ startTime = dto.getAfternoonStartTime();
|
|
|
+ morning = false;
|
|
|
+ startAt = dto.getAfternoonStartTime();
|
|
|
+ endAt = dto.getAfternoonEndTime();
|
|
|
+ amPm = "下午";
|
|
|
+ } else {
|
|
|
+ throw new BusinessException("时间安排不能为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int i = 0; i < group; i++) {
|
|
|
+ LocalTime endTime = startTime.plusMinutes(time);
|
|
|
+
|
|
|
+ String name = format1 + amPm + "第" + arr[i] + "场";
|
|
|
+ Arrange arrange = Arrange.builder()
|
|
|
+ .address(dto.getAddress())
|
|
|
+ .duration(dto.getDuration())
|
|
|
+ .performanceId(dto.getPerformanceId())
|
|
|
+ .quantity(dto.getQuantity())
|
|
|
+ .date(date)
|
|
|
+ .startTime(startTime)
|
|
|
+ .endTime(endTime)
|
|
|
+ .duration(dto.getDuration())
|
|
|
+ .specialtyId(dto.getSpecialtyId())
|
|
|
+ .name(name)
|
|
|
+ .morning(morning)
|
|
|
+ .build();
|
|
|
+
|
|
|
+ Map<String, String> programmes = programmeService.group(arrange);
|
|
|
+ List<Programme> programmeList = JSONObject.parseArray(programmes.get("programmes"), Programme.class);
|
|
|
+ List<Long> ids = programmeList.stream()
|
|
|
+ .map(Programme::getSpecialtyId)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ arrange.setSpecialtyId(ids);
|
|
|
+ arrange.setQuantity(programmeList.size());
|
|
|
+ arrange = arrangeRepo.save(arrange);
|
|
|
+
|
|
|
+ programmeService.saveAll(programmeList, arrange.getId());
|
|
|
+
|
|
|
+ // 插入节目
|
|
|
+ if (!Boolean.parseBoolean(programmes.get("flag"))) {
|
|
|
+ //不需要这么多分组
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ startTime = endTime.plusMinutes(10);
|
|
|
+ if (startTime.isAfter(endAt)) {
|
|
|
+ date = date.plusDays(1);
|
|
|
+ startTime = startAt;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public void saveArrange(ArrangeDTO dto, int group, int time, String format1, String[] arr) {
|
|
|
+ LocalDate date = dto.getStartDate();
|
|
|
+ LocalTime startTime = dto.getMorningStartTime();
|
|
|
+ boolean morning = true;
|
|
|
int j = 0;
|
|
|
for (int i = 0; i < group; i++) {
|
|
|
LocalTime endTime = startTime.plusMinutes(time);
|
|
|
@@ -73,7 +150,8 @@ public class ArrangeService {
|
|
|
//
|
|
|
// }
|
|
|
// }
|
|
|
- String name = format.format(date) + amPm + "第" + arr[j] + "场";
|
|
|
+ String amPm = morning ? "上午" : "下午";
|
|
|
+ String name = format1 + amPm + "第" + arr[j] + "场";
|
|
|
Arrange arrange = Arrange.builder()
|
|
|
.address(dto.getAddress())
|
|
|
.duration(dto.getDuration())
|
|
|
@@ -85,12 +163,24 @@ public class ArrangeService {
|
|
|
.duration(dto.getDuration())
|
|
|
.specialtyId(dto.getSpecialtyId())
|
|
|
.name(name)
|
|
|
+ .morning(morning)
|
|
|
.build();
|
|
|
+
|
|
|
+ Map<String, String> programmes = programmeService.group(arrange);
|
|
|
+ List<Programme> programmeList = JSONObject.parseArray(programmes.get("programmes"), Programme.class);
|
|
|
+ List<Long> ids = programmeList.stream()
|
|
|
+ .map(Programme::getSpecialtyId)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ arrange.setSpecialtyId(ids);
|
|
|
+ arrange.setQuantity(programmeList.size());
|
|
|
arrange = arrangeRepo.save(arrange);
|
|
|
|
|
|
+ programmeService.saveAll(programmeList, arrange.getId());
|
|
|
+
|
|
|
// 插入节目
|
|
|
- if (!programmeService.group(arrange)) {
|
|
|
- // 不需要这么多分组
|
|
|
+ if (!Boolean.parseBoolean(programmes.get("flag"))) {
|
|
|
+ //不需要这么多分组
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
@@ -98,15 +188,14 @@ public class ArrangeService {
|
|
|
if (startTime.isAfter(dto.getMorningEndTime()) && startTime.isBefore(dto.getAfternoonStartTime())) {
|
|
|
startTime = dto.getAfternoonStartTime();
|
|
|
j = 0;
|
|
|
- amPm = "下午";
|
|
|
+ morning = false;
|
|
|
} else if (startTime.isAfter(dto.getAfternoonEndTime())) {
|
|
|
date = date.plusDays(1);
|
|
|
startTime = dto.getMorningStartTime();
|
|
|
j = 0;
|
|
|
- amPm = "上午";
|
|
|
+ morning = true;
|
|
|
}
|
|
|
j++;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
}
|