diff --git a/src/main/java/com/iflytop/gd/app/controller/PhotoController.java b/src/main/java/com/iflytop/gd/app/controller/PhotoController.java index 6cf9f97..76c61d0 100644 --- a/src/main/java/com/iflytop/gd/app/controller/PhotoController.java +++ b/src/main/java/com/iflytop/gd/app/controller/PhotoController.java @@ -1,6 +1,7 @@ package com.iflytop.gd.app.controller; import com.iflytop.gd.app.model.dto.PhotoSaveDTO; +import com.iflytop.gd.app.model.dto.PhotoTakeDTO; import com.iflytop.gd.app.model.vo.PhotoListVO; import com.iflytop.gd.app.model.vo.PhotoVO; import com.iflytop.gd.app.service.api.PhotosService; @@ -41,8 +42,8 @@ public class PhotoController { @Operation(summary = "拍摄一张照片") @GetMapping("/take") - public Result take() { - return Result.success(photosService.take()); + public Result take(@RequestBody PhotoTakeDTO photoTakeDTO) throws Exception { + return Result.success(photosService.take(photoTakeDTO)); } diff --git a/src/main/java/com/iflytop/gd/app/model/dto/PhotoTakeDTO.java b/src/main/java/com/iflytop/gd/app/model/dto/PhotoTakeDTO.java new file mode 100644 index 0000000..99e76e2 --- /dev/null +++ b/src/main/java/com/iflytop/gd/app/model/dto/PhotoTakeDTO.java @@ -0,0 +1,12 @@ +package com.iflytop.gd.app.model.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class PhotoTakeDTO { + + @Schema(description = "补光灯强度,如不需要开启补光灯需要传null") + private Double lightIntensity; + +} diff --git a/src/main/java/com/iflytop/gd/app/service/api/PhotosService.java b/src/main/java/com/iflytop/gd/app/service/api/PhotosService.java index e5082d3..e50bd2c 100644 --- a/src/main/java/com/iflytop/gd/app/service/api/PhotosService.java +++ b/src/main/java/com/iflytop/gd/app/service/api/PhotosService.java @@ -5,15 +5,22 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.iflytop.gd.app.mapper.PhotosMapper; +import com.iflytop.gd.app.model.dto.PhotoSaveDTO; +import com.iflytop.gd.app.model.dto.PhotoTakeDTO; import com.iflytop.gd.app.model.entity.Photos; import com.iflytop.gd.app.model.vo.PhotoListVO; import com.iflytop.gd.app.model.vo.PhotoVO; +import com.iflytop.gd.app.service.device.module.SolutionModuleService; import com.iflytop.gd.common.base.BasePageQuery; import com.iflytop.gd.hardware.drivers.CameraBaslerDriver; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -26,6 +33,7 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class PhotosService extends ServiceImpl { private final CameraBaslerDriver driver; + private final SolutionModuleService solutionModuleService; @Value("${photo.url}") private String url; @@ -50,9 +58,9 @@ public class PhotosService extends ServiceImpl { return dataList; } - public PhotoVO get(Long id){ + public PhotoVO get(Long id) { Photos photos = this.getById(id); - if(photos != null){ + if (photos != null) { PhotoVO photoVO = new PhotoVO(); photoVO.setId(photos.getId()); photoVO.setMode(photos.getMode()); @@ -68,7 +76,10 @@ public class PhotosService extends ServiceImpl { return null; } - public String take() { + public String take(PhotoTakeDTO photoTakeDTO) throws Exception { + if (photoTakeDTO.getLightIntensity() != null) { + solutionModuleService.fillLightOpen(photoTakeDTO.getLightIntensity()); + } try { String filePath = path + "/temp/" + System.currentTimeMillis() + ".png"; driver.enable(); @@ -76,6 +87,20 @@ public class PhotosService extends ServiceImpl { return url + filePath; } finally { driver.disable(); + if (photoTakeDTO.getLightIntensity() != null) { + solutionModuleService.fillLightClose(); + } + } + } + + public void save(PhotoSaveDTO photoSaveDTO) { + Path sourcePath = Paths.get(path + "/temp/" + photoSaveDTO.getFileName()); + Path targetPath = Paths.get(path + "/data/" + photoSaveDTO.getFileName()); + try { + Files.move(sourcePath, targetPath, StandardCopyOption.REPLACE_EXISTING); + System.out.println("文件已成功移动!"); + } catch (Exception e) { + System.err.println("文件移动失败: " + e.getMessage()); } }