|
|
@ -27,6 +27,7 @@ import ru.ulstu.user.service.UserService;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.text.MessageFormat;
|
|
|
|
import java.text.MessageFormat;
|
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
|
|
|
import java.util.Collections;
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.HashSet;
|
|
|
|
import java.util.HashSet;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
@ -131,9 +132,11 @@ public class PaperService {
|
|
|
|
paper.setUpdateDate(new Date());
|
|
|
|
paper.setUpdateDate(new Date());
|
|
|
|
paper.setDeadlines(deadlineService.saveOrCreate(paperDto.getDeadlines()));
|
|
|
|
paper.setDeadlines(deadlineService.saveOrCreate(paperDto.getDeadlines()));
|
|
|
|
paper.setReferences(saveOrCreateReferences(paperDto.getReferences()));
|
|
|
|
paper.setReferences(saveOrCreateReferences(paperDto.getReferences()));
|
|
|
|
paper.setFiles(fileService.saveOrCreate(paperDto.getFiles().stream()
|
|
|
|
if (paperDto.getFiles() != null) {
|
|
|
|
.filter(f -> !f.isDeleted())
|
|
|
|
paper.setFiles(fileService.saveOrCreate(paperDto.getFiles().stream()
|
|
|
|
.collect(toList())));
|
|
|
|
.filter(f -> !f.isDeleted())
|
|
|
|
|
|
|
|
.collect(toList())));
|
|
|
|
|
|
|
|
}
|
|
|
|
paper.getAuthors().clear();
|
|
|
|
paper.getAuthors().clear();
|
|
|
|
if (paperDto.getAuthorIds() != null && !paperDto.getAuthorIds().isEmpty()) {
|
|
|
|
if (paperDto.getAuthorIds() != null && !paperDto.getAuthorIds().isEmpty()) {
|
|
|
|
paperDto.getAuthorIds().forEach(authorIds -> paper.getAuthors().add(userService.findById(authorIds)));
|
|
|
|
paperDto.getAuthorIds().forEach(authorIds -> paper.getAuthors().add(userService.findById(authorIds)));
|
|
|
@ -142,7 +145,9 @@ public class PaperService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private List<Reference> saveOrCreateReferences(List<ReferenceDto> references) {
|
|
|
|
private List<Reference> saveOrCreateReferences(List<ReferenceDto> references) {
|
|
|
|
return references
|
|
|
|
return references == null
|
|
|
|
|
|
|
|
? Collections.emptyList()
|
|
|
|
|
|
|
|
: references
|
|
|
|
.stream()
|
|
|
|
.stream()
|
|
|
|
.filter(reference -> !reference.getDeleted())
|
|
|
|
.filter(reference -> !reference.getDeleted())
|
|
|
|
.map(reference -> reference.getId() != null ? updateReference(reference) : createReference(reference))
|
|
|
|
.map(reference -> reference.getId() != null ? updateReference(reference) : createReference(reference))
|
|
|
@ -182,16 +187,20 @@ public class PaperService {
|
|
|
|
Paper.PaperStatus oldStatus = paper.getStatus();
|
|
|
|
Paper.PaperStatus oldStatus = paper.getStatus();
|
|
|
|
Set<User> oldAuthors = new HashSet<>(paper.getAuthors());
|
|
|
|
Set<User> oldAuthors = new HashSet<>(paper.getAuthors());
|
|
|
|
|
|
|
|
|
|
|
|
for (FileDataDto file : paperDto.getFiles().stream()
|
|
|
|
if (paperDto.getFiles() != null) {
|
|
|
|
.filter(f -> f.isDeleted() && f.getId() != null)
|
|
|
|
for (FileDataDto file : paperDto.getFiles().stream()
|
|
|
|
.collect(toList())) {
|
|
|
|
.filter(f -> f.isDeleted() && f.getId() != null)
|
|
|
|
fileService.delete(file.getId());
|
|
|
|
.collect(toList())) {
|
|
|
|
|
|
|
|
fileService.delete(file.getId());
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
paperRepository.save(copyFromDto(paper, paperDto));
|
|
|
|
paperRepository.save(copyFromDto(paper, paperDto));
|
|
|
|
for (ReferenceDto referenceDto : paperDto.getReferences().stream()
|
|
|
|
if (paperDto.getReferences() != null) {
|
|
|
|
.filter(f -> f.getDeleted() && f.getId() != null)
|
|
|
|
for (ReferenceDto referenceDto : paperDto.getReferences().stream()
|
|
|
|
.collect(toList())) {
|
|
|
|
.filter(f -> f.getDeleted() && f.getId() != null)
|
|
|
|
referenceRepository.deleteById(referenceDto.getId());
|
|
|
|
.collect(toList())) {
|
|
|
|
|
|
|
|
referenceRepository.deleteById(referenceDto.getId());
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
eventService.updatePaperDeadlines(paper);
|
|
|
|
eventService.updatePaperDeadlines(paper);
|
|
|
|
|
|
|
|
|
|
|
|