/
Sturon
/
Diplom
Обзор
Документация
Войти
/
Sturon
/
Diplom
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/src/main/java/ru/diplom/vision/service/DemoDataInitializer.java
93 строки
4 KB
Sturon
Initial
03 июн 2026, 15:01
03 июн 2026, 15:01
17b44a2
Код
Авторство
О чём код?
package ru.diplom.vision.service; import java.awt.image.BufferedImage; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; import ru.diplom.vision.domain.CameraSource; import ru.diplom.vision.domain.CameraSourceType; import ru.diplom.vision.domain.DetectorMode; import ru.diplom.vision.domain.InspectionProfile; import ru.diplom.vision.domain.ProfileStatus; import ru.diplom.vision.domain.ReferenceImage; import ru.diplom.vision.domain.RegionOfInterest; import ru.diplom.vision.repository.CameraSourceRepository; import ru.diplom.vision.repository.InspectionProfileRepository; import ru.diplom.vision.repository.ReferenceImageRepository; @Component public class DemoDataInitializer implements ApplicationRunner { private final boolean seedDemoData; private final CameraSourceRepository cameraSourceRepository; private final ReferenceImageRepository referenceImageRepository; private final InspectionProfileRepository inspectionProfileRepository; private final MockCameraCaptureService mockCameraCaptureService; private final StorageService storageService; public DemoDataInitializer( @Value("${app.seed-demo-data:true}") boolean seedDemoData, CameraSourceRepository cameraSourceRepository, ReferenceImageRepository referenceImageRepository, InspectionProfileRepository inspectionProfileRepository, MockCameraCaptureService mockCameraCaptureService, StorageService storageService ) { this.seedDemoData = seedDemoData; this.cameraSourceRepository = cameraSourceRepository; this.referenceImageRepository = referenceImageRepository; this.inspectionProfileRepository = inspectionProfileRepository; this.mockCameraCaptureService = mockCameraCaptureService; this.storageService = storageService; } @Override public void run(ApplicationArguments args) { if (!seedDemoData) { return; } CameraSource camera = cameraSourceRepository.findAll().stream().findFirst().orElseGet(() -> { CameraSource source = new CameraSource(); source.setName("Demo mock camera"); source.setType(CameraSourceType.MOCK_REFERENCE); source.setActive(true); source.setNotes("Генерирует кадры из эталонного изображения"); return cameraSourceRepository.save(source); }); ReferenceImage referenceImage = referenceImageRepository.findAll().stream().findFirst().orElseGet(() -> { BufferedImage demo = mockCameraCaptureService.createDemoReferenceImage(); String storagePath = storageService.storeBufferedImage("reference-images", demo, "demo-reference"); ReferenceImage image = new ReferenceImage(); image.setName("Demo brass valve"); image.setStoragePath(storagePath); image.setMimeType("image/png"); image.setWidth(demo.getWidth()); image.setHeight(demo.getHeight()); RegionOfInterest roi = new RegionOfInterest(); roi.setName("Корпус клапана"); roi.setZoneOrder(0); roi.setX(420); roi.setY(230); roi.setWidth(560); roi.setHeight(420); image.addRegionOfInterest(roi); return referenceImageRepository.save(image); }); if (inspectionProfileRepository.count() == 0) { InspectionProfile profile = new InspectionProfile(); profile.setName("Линия штамповки A1"); profile.setDescription("Демо-точка контроля для запуска mock-проверки и просмотра результатов."); profile.setStatus(ProfileStatus.ACTIVE); profile.setDetectorMode(DetectorMode.MOCK); profile.setCameraSource(camera); profile.setReferenceImage(referenceImage); inspectionProfileRepository.save(profile); } } }