Browse Source

feat:保存照片

master
白凤吉 2 months ago
parent
commit
e93301756d
  1. 1
      src/main/java/com/iflytop/gd/app/controller/PhotoController.java
  2. 3
      src/main/java/com/iflytop/gd/app/model/entity/Photos.java
  3. 3
      src/main/java/com/iflytop/gd/app/model/vo/PhotoListVO.java
  4. 3
      src/main/java/com/iflytop/gd/app/model/vo/PhotoVO.java
  5. 38
      src/main/java/com/iflytop/gd/app/service/api/PhotosService.java
  6. 18
      src/main/java/com/iflytop/gd/common/enums/PhotoModeType.java

1
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();
}

3
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;

3
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;

3
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;

38
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<PhotosMapper, Photos> {
@ -94,14 +101,31 @@ public class PhotosService extends ServiceImpl<PhotosMapper, Photos> {
}
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) {

18
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
}
Loading…
Cancel
Save