From bb0d13c92be5302950220474eeaf629dbb7e9dad Mon Sep 17 00:00:00 2001 From: guochaojie Date: Thu, 27 Jun 2024 12:17:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=93=E6=8B=8D=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cc/yunxi/controller/DeviceController.java | 30 +++++++++++++++---- .../cc/yunxi/domain/vo/device/CMDEnum.java | 1 + .../cc/yunxi/domain/vo/device/CommandVO.java | 5 ++++ .../cc/yunxi/domain/vo/device/SnapVO.java | 17 +++++++++++ .../cc/yunxi/domain/vo/device/WeightVO.java | 11 +++---- .../java/cc/yunxi/service/IFileService.java | 3 ++ .../yunxi/service/impl/FileServiceImpl.java | 22 ++++++++++++-- 7 files changed, 76 insertions(+), 13 deletions(-) create mode 100644 nxhs-service/src/main/java/cc/yunxi/domain/vo/device/SnapVO.java diff --git a/nxhs-service/src/main/java/cc/yunxi/controller/DeviceController.java b/nxhs-service/src/main/java/cc/yunxi/controller/DeviceController.java index fa2262a..336c6ae 100644 --- a/nxhs-service/src/main/java/cc/yunxi/controller/DeviceController.java +++ b/nxhs-service/src/main/java/cc/yunxi/controller/DeviceController.java @@ -6,6 +6,7 @@ import cc.yunxi.common.exception.BizIllegalException; import cc.yunxi.domain.dto.UserDTO; import cc.yunxi.domain.po.*; import cc.yunxi.domain.vo.device.*; +import cc.yunxi.domain.vo.file.FileUploadReqVO; import cc.yunxi.domain.vo.file.FileUploadRespVO; import cc.yunxi.service.*; import cc.yunxi.utils.CustomerMqttClient; @@ -17,10 +18,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; @@ -298,7 +296,7 @@ public class DeviceController { } @PostMapping("/login") - @ApiOperation("清运员手机号登录") + @ApiOperation("用户手机号登录") public CommonResult login(@RequestBody LoginReqVO loginReqVO) { RecycleDevice device = deviceService.getByDeviceCode(loginReqVO.getDeviceCode()); if (device == null) { @@ -523,6 +521,28 @@ public class DeviceController { return CommonResult.success("指令下发成功"); } + + @ApiOperation("上传抓拍图片") + @PostMapping("/uploadImage") + public CommonResult uploadSnap(@RequestBody SnapVO snapVO) { + String orderNo = snapVO.getOrderNo(); + String deviceCode = snapVO.getDeviceCode(); + // 先上传 + List list = snapVO.getSnapList(); + if (list == null || list.size() == 0) return CommonResult.error(400, "上传失败,图片为空!"); + ArrayList result = new ArrayList<>(); + list.forEach(snap -> { + FileUploadRespVO respVO = fileService.uploadImage(snap.getImage(), snap.getFileName()); + result.add(respVO); + }); + if (StrUtil.isNotEmpty(orderNo)) { + redisTool.setValue(orderNo, result, 10 * 60 * 1000L);//业务抓拍 + } else { + redisTool.setValue("snap_" + deviceCode, result, 3 * 60 * 1000L);//临时抓拍 + } + return CommonResult.success("上传成功"); + } + @ApiOperation("获取设备状态") @PostMapping("/getStatus") public CommonResult getStatus(@RequestBody DeviceVO deviceVO) { diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/CMDEnum.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/CMDEnum.java index 5bbd818..6a7a20d 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/CMDEnum.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/CMDEnum.java @@ -11,6 +11,7 @@ import lombok.Getter; public enum CMDEnum { login("login", "登录成功"), + change("change", "配置更新"), reboot("reboot", "重启设备"), restart("restart", "重启应用"), update("update", "更新应用"), diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/CommandVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/CommandVO.java index b424a66..1b09fb4 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/CommandVO.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/CommandVO.java @@ -24,5 +24,10 @@ public class CommandVO { private String optTime; @ApiModelProperty(value = "备注", example = "重启设备") private String remark; + @ApiModelProperty(value = "单号", example = "D12345678") + private String orderNo; + // @ApiModelProperty(value = "命令原因",allowableValues = "control,clean,delivery",required = true, example = "control") +// @NotBlank(message = "命令原因不能为空") +// private String reason; } diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/SnapVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/SnapVO.java new file mode 100644 index 0000000..a9ea852 --- /dev/null +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/SnapVO.java @@ -0,0 +1,17 @@ +package cc.yunxi.domain.vo.device; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.util.List; + +@Data +@ApiModel("抓拍信息") +public class SnapVO { + @ApiModelProperty("设备编码") + private String deviceCode; + @ApiModelProperty("单号") + private String orderNo; + @ApiModelProperty("抓拍图片") + private List snapList; +} diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/WeightVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/WeightVO.java index 8900c4c..ea459c8 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/WeightVO.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/WeightVO.java @@ -9,12 +9,13 @@ import java.math.BigDecimal; @Data @ApiModel("实时重量") public class WeightVO { - @ApiModelProperty(value = "设备编码",required = true) + + @ApiModelProperty(value = "设备编码", required = true) private String deviceCode; - @ApiModelProperty(value = "桶编码",required = true) + @ApiModelProperty(value = "桶编码", required = true) private String bucketCode; - @ApiModelProperty(value = "重量",required = true) + @ApiModelProperty(value = "重量", required = true) private BigDecimal weight; - @ApiModelProperty(value = "称重完成",required = true) - private boolean finish; + @ApiModelProperty(value = "订单号", required = true) + private String orderNo; } diff --git a/nxhs-service/src/main/java/cc/yunxi/service/IFileService.java b/nxhs-service/src/main/java/cc/yunxi/service/IFileService.java index 7f1eee8..86c562c 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/IFileService.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/IFileService.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import javax.validation.Valid; +import java.util.List; /** *

@@ -36,6 +37,8 @@ public interface IFileService extends IService { */ FileUploadRespVO uploadImage(@Valid FileUploadReqVO uploadReqVO); + List uploadImages(@Valid FileUploadReqVO[] uploadReqVO); + /** * 将图片文件转换成base64 * diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/FileServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/FileServiceImpl.java index 5a03a3d..42b0c1c 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/impl/FileServiceImpl.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/impl/FileServiceImpl.java @@ -9,6 +9,7 @@ import cc.yunxi.enums.FileStyleEnum; import cc.yunxi.mapper.FileMapper; import cc.yunxi.service.IFileService; import cc.yunxi.utils.UserContext; +import cn.hutool.core.collection.ListUtil; import cn.hutool.core.io.FileTypeUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IoUtil; @@ -27,12 +28,14 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import javax.validation.Valid; import java.io.BufferedOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.InetAddress; import java.net.UnknownHostException; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.Base64; import java.util.List; import java.util.Optional; @@ -94,14 +97,26 @@ public class FileServiceImpl extends ServiceImpl implements IF return upload(uploadReqVO.getFile(), FileStyleEnum.IMAGE); } + @Override + public List uploadImages(@Valid FileUploadReqVO[] files) { + List list = new ArrayList<>(); + if (files.length == 0) return list; + for (int i = 0; i < files.length; i++) { + FileUploadReqVO file = files[i]; + FileUploadRespVO respVO = uploadImage(file); + list.add(respVO); + } + return list; + } + @Override public byte[] download(String url) { // 默认为本地存储拉取 todo - String filePath = System.getProperty("user.dir")+ url; + String filePath = System.getProperty("user.dir") + url; String osName = System.getProperty("os.name").toLowerCase(); - if(osName.contains("win")){ - filePath = filePath.replace("/","\\"); + if (osName.contains("win")) { + filePath = filePath.replace("/", "\\"); } if (!FileUtil.exist(filePath)) { throw new BizIllegalException("下载资源不存在"); @@ -189,6 +204,7 @@ public class FileServiceImpl extends ServiceImpl implements IF byte[] image = decodeToBase64(image64); return base64ImageUpload(image, fileName, FileStyleEnum.IMAGE); } + @Override public FileUploadRespVO uploadImage(byte[] image, String fileName) { return base64ImageUpload(image, fileName, FileStyleEnum.IMAGE);