/
Sturon
/
Diplom
Обзор
Документация
Войти
/
Sturon
/
Diplom
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/src/main/java/ru/diplom/vision/service/InspectionRunService.java
58 строк
2 KB
Sturon
Initial
03 июн 2026, 15:01
03 июн 2026, 15:01
17b44a2
Код
Авторство
О чём код?
package ru.diplom.vision.service; import java.time.LocalDateTime; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.server.ResponseStatusException; import ru.diplom.vision.domain.InspectionItem; import ru.diplom.vision.domain.InspectionProfile; import ru.diplom.vision.domain.InspectionStatus; import ru.diplom.vision.domain.ProfileStatus; import ru.diplom.vision.repository.InspectionItemRepository; import static org.springframework.http.HttpStatus.BAD_REQUEST; @Service @Transactional public class InspectionRunService { private final InspectionProfileService inspectionProfileService; private final ReferenceImageService referenceImageService; private final InspectionItemRepository inspectionItemRepository; public InspectionRunService( InspectionProfileService inspectionProfileService, ReferenceImageService referenceImageService, InspectionItemRepository inspectionItemRepository ) { this.inspectionProfileService = inspectionProfileService; this.referenceImageService = referenceImageService; this.inspectionItemRepository = inspectionItemRepository; } public InspectionItem run(Long profileId) { InspectionProfile profile = inspectionProfileService.getRequired(profileId); validateProfile(profile); InspectionItem item = new InspectionItem(); item.setProfile(profile); item.setInspectedAt(LocalDateTime.now()); item.setStatus(InspectionStatus.PENDING); item.setSourceImagePath(""); item.setDefectCount(0); item.setProcessingTimeMs(0); item.setSummary("Ожидание кадра от локального анализатора"); return inspectionItemRepository.save(item); } private void validateProfile(InspectionProfile profile) { if (profile.getStatus() != ProfileStatus.ACTIVE) { throw new ResponseStatusException(BAD_REQUEST, "Точка контроля неактивна"); } if (!profile.getCameraSource().isActive()) { throw new ResponseStatusException(BAD_REQUEST, "Выбранная камера неактивна"); } if (referenceImageService.getEffectiveRegionsOfInterest(profile.getReferenceImage()).isEmpty()) { throw new ResponseStatusException(BAD_REQUEST, "Для эталона не задана область интереса"); } } }