|
@@ -30,13 +30,15 @@ public class IssueService {
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public boolean adds(List<Issue> list) {
|
|
|
log.info("save issues,size={}", list.size());
|
|
|
- List<Issue> data = issueDao.saveAll(list);
|
|
|
- for (Issue issue : data) {
|
|
|
- issueOptionService.addIssueOptions(issue.getId(), issue.getOptions());
|
|
|
+ issueDao.saveAll(list);
|
|
|
+ for (Issue issue : list) {
|
|
|
if (issue.getSection() == 3) {
|
|
|
issueLiteService.addIssueLites(issue.getId(), issue.getLites());
|
|
|
+ } else {
|
|
|
+ issueOptionService.addIssueOptions(issue.getId(), issue.getOptions());
|
|
|
}
|
|
|
}
|
|
|
+ log.info("add issues finish,size={}", list.size());
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -132,7 +134,7 @@ public class IssueService {
|
|
|
* @param section 2
|
|
|
* @return result
|
|
|
*/
|
|
|
- private List<Issue> listWithOption(Long subjectId, String grade, int section) {
|
|
|
+ public List<Issue> listWithOption(Long subjectId, String grade, int section) {
|
|
|
List<Issue> list = list(subjectId, grade, section);
|
|
|
List<IssueOption> options = issueOptionService.findByIssueIds(list.stream().map(Issue::getId).collect(Collectors.toList()));
|
|
|
options.sort(Comparator.comparing(IssueOption::getIssueId));
|
|
@@ -156,7 +158,9 @@ public class IssueService {
|
|
|
List<IssueLite> lites = issueLiteService.listAll(list.stream().map(Issue::getId).collect(Collectors.toList()));
|
|
|
Map<Long, List<IssueLite>> group = lites.stream().collect(Collectors.groupingBy(IssueLite::getIssueId));
|
|
|
for (Issue issue : list) {
|
|
|
- issue.setLites(group.getOrDefault(issue.getId(), new ArrayList<>()));
|
|
|
+ List<IssueLite> liteGroup = group.getOrDefault(issue.getId(), new ArrayList<>());
|
|
|
+ liteGroup.forEach(it -> it.setNumber((it.getNumber() - 1) % liteGroup.size() + 1));
|
|
|
+ issue.setLites(liteGroup);
|
|
|
}
|
|
|
return list;
|
|
|
}
|
|
@@ -184,4 +188,14 @@ public class IssueService {
|
|
|
return issueDao.findBySubjectIdAndGradeAndSection(subjectId, grade, section);
|
|
|
}
|
|
|
|
|
|
+ public List<Issue> listBySection(Long subjectId, String grade, int section) {
|
|
|
+ switch (section) {
|
|
|
+ case 1:
|
|
|
+ case 2:
|
|
|
+ return listWithOption(subjectId, grade, section);
|
|
|
+ case 3:
|
|
|
+ return listWithLite(subjectId, grade, section);
|
|
|
+ }
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
}
|