抓拍上传

master
guochaojie 4 months ago
parent 32e3afb2a7
commit bb0d13c92b

@ -6,6 +6,7 @@ import cc.yunxi.common.exception.BizIllegalException;
import cc.yunxi.domain.dto.UserDTO; import cc.yunxi.domain.dto.UserDTO;
import cc.yunxi.domain.po.*; import cc.yunxi.domain.po.*;
import cc.yunxi.domain.vo.device.*; import cc.yunxi.domain.vo.device.*;
import cc.yunxi.domain.vo.file.FileUploadReqVO;
import cc.yunxi.domain.vo.file.FileUploadRespVO; import cc.yunxi.domain.vo.file.FileUploadRespVO;
import cc.yunxi.service.*; import cc.yunxi.service.*;
import cc.yunxi.utils.CustomerMqttClient; import cc.yunxi.utils.CustomerMqttClient;
@ -17,10 +18,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -298,7 +296,7 @@ public class DeviceController {
} }
@PostMapping("/login") @PostMapping("/login")
@ApiOperation("清运员手机号登录") @ApiOperation("用户手机号登录")
public CommonResult<LoginRespVO> login(@RequestBody LoginReqVO loginReqVO) { public CommonResult<LoginRespVO> login(@RequestBody LoginReqVO loginReqVO) {
RecycleDevice device = deviceService.getByDeviceCode(loginReqVO.getDeviceCode()); RecycleDevice device = deviceService.getByDeviceCode(loginReqVO.getDeviceCode());
if (device == null) { if (device == null) {
@ -523,6 +521,28 @@ public class DeviceController {
return CommonResult.success("指令下发成功"); return CommonResult.success("指令下发成功");
} }
@ApiOperation("上传抓拍图片")
@PostMapping("/uploadImage")
public CommonResult<String> uploadSnap(@RequestBody SnapVO snapVO) {
String orderNo = snapVO.getOrderNo();
String deviceCode = snapVO.getDeviceCode();
// 先上传
List<Snap> list = snapVO.getSnapList();
if (list == null || list.size() == 0) return CommonResult.error(400, "上传失败,图片为空!");
ArrayList<FileUploadRespVO> 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("获取设备状态") @ApiOperation("获取设备状态")
@PostMapping("/getStatus") @PostMapping("/getStatus")
public CommonResult<String> getStatus(@RequestBody DeviceVO deviceVO) { public CommonResult<String> getStatus(@RequestBody DeviceVO deviceVO) {

@ -11,6 +11,7 @@ import lombok.Getter;
public enum CMDEnum { public enum CMDEnum {
login("login", "登录成功"), login("login", "登录成功"),
change("change", "配置更新"),
reboot("reboot", "重启设备"), reboot("reboot", "重启设备"),
restart("restart", "重启应用"), restart("restart", "重启应用"),
update("update", "更新应用"), update("update", "更新应用"),

@ -24,5 +24,10 @@ public class CommandVO {
private String optTime; private String optTime;
@ApiModelProperty(value = "备注", example = "重启设备") @ApiModelProperty(value = "备注", example = "重启设备")
private String remark; 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;
} }

@ -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<Snap> snapList;
}

@ -9,12 +9,13 @@ import java.math.BigDecimal;
@Data @Data
@ApiModel("实时重量") @ApiModel("实时重量")
public class WeightVO { public class WeightVO {
@ApiModelProperty(value = "设备编码",required = true)
@ApiModelProperty(value = "设备编码", required = true)
private String deviceCode; private String deviceCode;
@ApiModelProperty(value = "桶编码",required = true) @ApiModelProperty(value = "桶编码", required = true)
private String bucketCode; private String bucketCode;
@ApiModelProperty(value = "重量",required = true) @ApiModelProperty(value = "重量", required = true)
private BigDecimal weight; private BigDecimal weight;
@ApiModelProperty(value = "称重完成",required = true) @ApiModelProperty(value = "订单号", required = true)
private boolean finish; private String orderNo;
} }

@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.List;
/** /**
* <p> * <p>
@ -36,6 +37,8 @@ public interface IFileService extends IService<File> {
*/ */
FileUploadRespVO uploadImage(@Valid FileUploadReqVO uploadReqVO); FileUploadRespVO uploadImage(@Valid FileUploadReqVO uploadReqVO);
List<FileUploadRespVO> uploadImages(@Valid FileUploadReqVO[] uploadReqVO);
/** /**
* base64 * base64
* *

@ -9,6 +9,7 @@ import cc.yunxi.enums.FileStyleEnum;
import cc.yunxi.mapper.FileMapper; import cc.yunxi.mapper.FileMapper;
import cc.yunxi.service.IFileService; import cc.yunxi.service.IFileService;
import cc.yunxi.utils.UserContext; import cc.yunxi.utils.UserContext;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.io.FileTypeUtil; import cn.hutool.core.io.FileTypeUtil;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil; import cn.hutool.core.io.IoUtil;
@ -27,12 +28,14 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid;
import java.io.BufferedOutputStream; import java.io.BufferedOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Base64; import java.util.Base64;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
@ -94,14 +97,26 @@ public class FileServiceImpl extends ServiceImpl<FileMapper, File> implements IF
return upload(uploadReqVO.getFile(), FileStyleEnum.IMAGE); return upload(uploadReqVO.getFile(), FileStyleEnum.IMAGE);
} }
@Override
public List<FileUploadRespVO> uploadImages(@Valid FileUploadReqVO[] files) {
List<FileUploadRespVO> 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 @Override
public byte[] download(String url) { public byte[] download(String url) {
// 默认为本地存储拉取 todo // 默认为本地存储拉取 todo
String filePath = System.getProperty("user.dir")+ url; String filePath = System.getProperty("user.dir") + url;
String osName = System.getProperty("os.name").toLowerCase(); String osName = System.getProperty("os.name").toLowerCase();
if(osName.contains("win")){ if (osName.contains("win")) {
filePath = filePath.replace("/","\\"); filePath = filePath.replace("/", "\\");
} }
if (!FileUtil.exist(filePath)) { if (!FileUtil.exist(filePath)) {
throw new BizIllegalException("下载资源不存在"); throw new BizIllegalException("下载资源不存在");
@ -189,6 +204,7 @@ public class FileServiceImpl extends ServiceImpl<FileMapper, File> implements IF
byte[] image = decodeToBase64(image64); byte[] image = decodeToBase64(image64);
return base64ImageUpload(image, fileName, FileStyleEnum.IMAGE); return base64ImageUpload(image, fileName, FileStyleEnum.IMAGE);
} }
@Override @Override
public FileUploadRespVO uploadImage(byte[] image, String fileName) { public FileUploadRespVO uploadImage(byte[] image, String fileName) {
return base64ImageUpload(image, fileName, FileStyleEnum.IMAGE); return base64ImageUpload(image, fileName, FileStyleEnum.IMAGE);

Loading…
Cancel
Save