From e93301756ddb262343f117c1fa2209ac61b85566 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Fri, 13 Jun 2025 13:42:01 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E4=BF=9D=E5=AD=98=E7=85=A7=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iflytop/gd/app/controller/PhotoController.java | 1 + .../com/iflytop/gd/app/model/entity/Photos.java | 3 +- .../com/iflytop/gd/app/model/vo/PhotoListVO.java | 3 +- .../java/com/iflytop/gd/app/model/vo/PhotoVO.java | 3 +- .../iflytop/gd/app/service/api/PhotosService.java | 38 ++++++++++++++++++---- .../com/iflytop/gd/common/enums/PhotoModeType.java | 18 ++++++++++ 6 files changed, 56 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/iflytop/gd/common/enums/PhotoModeType.java 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 d257c68..79c2ca8 100644 --- a/src/main/java/com/iflytop/gd/app/controller/PhotoController.java +++ b/src/main/java/com/iflytop/gd/app/controller/PhotoController.java @@ -50,6 +50,7 @@ public class PhotoController { @Operation(summary = "保存照片") @PostMapping("/save") public Result save(@RequestBody PhotoSaveDTO photoSaveDTO) { + photosService.save(photoSaveDTO); return Result.success(); } diff --git a/src/main/java/com/iflytop/gd/app/model/entity/Photos.java b/src/main/java/com/iflytop/gd/app/model/entity/Photos.java index 823ef69..b567f8e 100644 --- a/src/main/java/com/iflytop/gd/app/model/entity/Photos.java +++ b/src/main/java/com/iflytop/gd/app/model/entity/Photos.java @@ -3,6 +3,7 @@ package com.iflytop.gd.app.model.entity; import com.baomidou.mybatisplus.annotation.TableName; import com.iflytop.gd.common.base.BaseEntity; +import com.iflytop.gd.common.enums.PhotoModeType; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -14,7 +15,7 @@ import lombok.EqualsAndHashCode; public class Photos extends BaseEntity { @Schema(description = "模式(手动、自动)") - private String mode; + private PhotoModeType mode; @Schema(description = "矿石ID") private Long oreId; diff --git a/src/main/java/com/iflytop/gd/app/model/vo/PhotoListVO.java b/src/main/java/com/iflytop/gd/app/model/vo/PhotoListVO.java index 7c83c37..d875f73 100644 --- a/src/main/java/com/iflytop/gd/app/model/vo/PhotoListVO.java +++ b/src/main/java/com/iflytop/gd/app/model/vo/PhotoListVO.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import com.iflytop.gd.app.model.entity.Tasks; +import com.iflytop.gd.common.enums.PhotoModeType; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -16,7 +17,7 @@ public class PhotoListVO{ private Long id; @Schema(description = "模式(手动、自动)") - private String mode; + private PhotoModeType mode; @Schema(description = "矿石名称") private String oreName; diff --git a/src/main/java/com/iflytop/gd/app/model/vo/PhotoVO.java b/src/main/java/com/iflytop/gd/app/model/vo/PhotoVO.java index fa262a3..7aaab2c 100644 --- a/src/main/java/com/iflytop/gd/app/model/vo/PhotoVO.java +++ b/src/main/java/com/iflytop/gd/app/model/vo/PhotoVO.java @@ -3,6 +3,7 @@ package com.iflytop.gd.app.model.vo; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; +import com.iflytop.gd.common.enums.PhotoModeType; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -15,7 +16,7 @@ public class PhotoVO { private Long id; @Schema(description = "模式(手动、自动)") - private String mode; + private PhotoModeType mode; @Schema(description = "矿石ID") private Long oreId; 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 e50bd2c..ce65d46 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 @@ -12,8 +12,12 @@ 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.common.enums.PhotoModeType; +import com.iflytop.gd.common.exception.AppException; +import com.iflytop.gd.common.result.ResultCode; import com.iflytop.gd.hardware.drivers.CameraBaslerDriver; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -21,6 +25,8 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -29,6 +35,7 @@ import java.util.stream.Collectors; /** * 照片接口服务 */ +@Slf4j @Service @RequiredArgsConstructor public class PhotosService extends ServiceImpl { @@ -94,14 +101,31 @@ public class PhotosService extends ServiceImpl { } 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()); + Photos photos = this.getById(photoSaveDTO.getId()); + if (photos == null) {//新增 + String todayDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); + String imagePath = "/data/" + todayDate + "/" + photoSaveDTO.getFileName(); + try { + Path sourcePath = Paths.get(path + "/temp/" + photoSaveDTO.getFileName()); + Path targetPath = Paths.get(path + imagePath); + Path targetDirectory = targetPath.getParent(); + if (!Files.exists(targetDirectory)) { + Files.createDirectories(targetDirectory); + } + Files.move(sourcePath, targetPath, StandardCopyOption.REPLACE_EXISTING); + log.info("照片文件已成功移动!"); + } catch (Exception e) { + log.error("照片文件已成功移动失败 ", e); + throw new AppException(ResultCode.SYSTEM_ERROR); + } + photos = new Photos(); + photos.setImagePath(imagePath); + photos.setMode(PhotoModeType.manual); } + photos.setOreId(photoSaveDTO.getOreId()); + photos.setProblem(photoSaveDTO.getProblem()); + photos.setRemarks(photoSaveDTO.getRemarks()); + this.saveOrUpdate(photos); } public boolean deletePhoto(String idsStr) { diff --git a/src/main/java/com/iflytop/gd/common/enums/PhotoModeType.java b/src/main/java/com/iflytop/gd/common/enums/PhotoModeType.java new file mode 100644 index 0000000..9a0f921 --- /dev/null +++ b/src/main/java/com/iflytop/gd/common/enums/PhotoModeType.java @@ -0,0 +1,18 @@ +package com.iflytop.gd.common.enums; + +import lombok.Getter; + +/** + * 照片数据类型 + */ +@Getter +public enum PhotoModeType { + /** + * 工艺 + */ + crafts, + /** + * 手动 + */ + manual +}