#311 Код-ревью сервиса создания подтверждающего документа
Сделать код-ревью:
@Service
public class ConfirmDocService {
@Autowired
private ConfirmDocMapper confirmDocMapper;
@Autowired
private ConfirmDocRepository confirmDocRepository;
@Autowired
private ConfirmDocStateMachineService confirmDocStateMachineService;
@Autowired
private StateMachineFactory<DocStatusState, DocStatusEvent> confirmDocStateMachineFactory;
@Transactional
public ConfirmDocDto createConfirmDoc(ConfirmDocDto confirmDocDto) {
ConfirmDoc confirmDoc = confirmDocMapper.toEntity(confirmDocDto);
StateMachine<DocStatusState, DocStatusEvent> sm =
confirmDocStateMachineFactory.getStateMachine();
sm.getExtendedState()
.getVariables()
.put("CONFIRM_DOC_TO_BE_SAVED", confirmDoc);
sm.start();
confirmDoc.setDocStatusId(sm.getState().getId());
ConfirmDoc savedConfirmDoc = saveOrUpdate(confirmDoc);
return confirmDocMapper.toDto(savedConfirmDoc);
}
@Transactional
public ConfirmDoc saveOrUpdate(ConfirmDoc confirmDoc) {
if (confirmDocRepository.findAll()
.stream()
.filter(it -> it.getId().equals(confirmDoc.getId()))
.count() == 1) {
ConfirmDoc confirmDocFromDb =
confirmDocRepository.findById(confirmDoc.getId()).orElse(null);
ConfirmDoc updatedConfirmDoc =
confirmDocMapper.update(confirmDocFromDb, confirmDoc);
return confirmDocRepository.save(updatedConfirmDoc);
} else {
return confirmDocRepository.save(confirmDoc);
}
}
}
Разбор вопроса
Войди, чтобы начать диалог
Ментор ведёт диалог по текущему вопросу и учитывает предыдущие сообщения.
Войти
Доступно с Premium
Это лишь одно из решений, доступных с Premium. А ещё:
- 250+ продвинутых лекций
- 1300+ практических заданий
- 500+ решений задач с реальных собеседований
- Именные сертификаты Java Hub
- Расширенный доступ к AI-ментору