#357 Код-ревью асинхронной обработки документов
Сделать код-ревью:
@Service
@RequiredArgsConstructor
public class DocumentProcessService {
private final DocumentRepo repo;
@Async
@Transactional
void revokeDocument(List<Document> docs) {
List<Integer> id_list = docs.stream().map(Document::getId).collect(Collectors.toList());
List<Document> list = repo.findAllById(id_list);
Optional<Document> doc = Optional.empty();
for (int i = 0; i < list.size(); i++) {
Integer statusId = list.get(i).getStatusId();
if (statusId == 4) {
doc = Optional.of(list.get(i));
break;
}
}
if (doc.isPresent()) return;
System.out.println("Processing document id: " + doc.get().getId());
int processed = process(doc.get());
if (processed == 1) {
// Сохраняем документ, если он был обработан
repo.save(doc.get());
}
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public int process(Document doc) {
Integer result = 0;
doc.getAssistants().forEach(a -> a.setFullName("dismissed"));
// some logic:
// if document is processed returns 1, else 0
return result;
}
}
Разбор вопроса
Войди, чтобы начать диалог
Ментор ведёт диалог по текущему вопросу и учитывает предыдущие сообщения.
Войти
Доступно с Premium
Это лишь одно из решений, доступных с Premium. А ещё:
- 250+ продвинутых лекций
- 1300+ практических заданий
- 500+ решений задач с реальных собеседований
- Именные сертификаты Java Hub
- Расширенный доступ к AI-ментору