|
|
@ -17,6 +17,7 @@ import cc.yunxi.utils.RedisTool;
|
|
|
|
import cc.yunxi.utils.UserContext;
|
|
|
|
import cc.yunxi.utils.UserContext;
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
|
|
|
import cn.hutool.json.JSONObject;
|
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
|
import io.swagger.annotations.Api;
|
|
|
|
import io.swagger.annotations.Api;
|
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
@ -326,8 +327,10 @@ public class DeviceController {
|
|
|
|
return "";
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for (Snap snap : snaps) {
|
|
|
|
for (Snap snap : snaps) {
|
|
|
|
FileUploadRespVO uploadRespVO = fileService.uploadImage(snap.getImage(), snap.getFileName());
|
|
|
|
if (null != snap && StrUtil.isNotEmpty(snap.getImage())) {
|
|
|
|
list.add(uploadRespVO);
|
|
|
|
FileUploadRespVO uploadRespVO = fileService.uploadImage(snap.getImage(), snap.getFileName());
|
|
|
|
|
|
|
|
list.add(uploadRespVO);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return JSONUtil.toJsonStr(list);
|
|
|
|
return JSONUtil.toJsonStr(list);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -519,12 +522,12 @@ public class DeviceController {
|
|
|
|
order.setBagNo(orderVO.getBagNo());
|
|
|
|
order.setBagNo(orderVO.getBagNo());
|
|
|
|
order.setLoginType("2");
|
|
|
|
order.setLoginType("2");
|
|
|
|
List<Snap> images = orderVO.getImages();
|
|
|
|
List<Snap> images = orderVO.getImages();
|
|
|
|
if (images == null || images.size() == 0) {
|
|
|
|
// if (images == null || images.size() == 0) {
|
|
|
|
throw new BizIllegalException("上传失败:未上传抓拍图片!!");
|
|
|
|
// throw new BizIllegalException("上传失败:未上传抓拍图片!!");
|
|
|
|
} else {
|
|
|
|
// } else {
|
|
|
|
String result = uploadImages(images);
|
|
|
|
String result = uploadImages(images);
|
|
|
|
order.setPhoto(result);
|
|
|
|
order.setPhoto(result);
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
order.setAdjustSet(Integer.valueOf(adjustSet));
|
|
|
|
order.setAdjustSet(Integer.valueOf(adjustSet));
|
|
|
|
//审核
|
|
|
|
//审核
|
|
|
|
if ("1".equals(adjustSet)) {
|
|
|
|
if ("1".equals(adjustSet)) {
|
|
|
@ -621,14 +624,6 @@ public class DeviceController {
|
|
|
|
if (!exist) {
|
|
|
|
if (!exist) {
|
|
|
|
return CommonResult.error(400, "设备不在线,命令不能下发!");
|
|
|
|
return CommonResult.error(400, "设备不在线,命令不能下发!");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Object value = redisTool.getValue(deviceCode);
|
|
|
|
|
|
|
|
// Long expire = redisTool.getKeyExpire(deviceCode, TimeUnit.SECONDS);
|
|
|
|
|
|
|
|
// log.info("@@@@@ 过期时间:{}", expire);
|
|
|
|
|
|
|
|
// if (null == value) return CommonResult.error(400, "设备不在线");
|
|
|
|
|
|
|
|
// DeviceStatus status = JSONUtil.toBean(value.toString(), DeviceStatus.class);
|
|
|
|
|
|
|
|
// // 判断设备是否在线
|
|
|
|
|
|
|
|
// boolean online = status.isOnline();
|
|
|
|
|
|
|
|
// if (!online) return CommonResult.error(400, "设备不在线");
|
|
|
|
|
|
|
|
boolean connected = mqttClient.isConnected();
|
|
|
|
boolean connected = mqttClient.isConnected();
|
|
|
|
if (!connected) return CommonResult.error(400, "与mqtt服务器连接中断,请稍后重试!");
|
|
|
|
if (!connected) return CommonResult.error(400, "与mqtt服务器连接中断,请稍后重试!");
|
|
|
|
// 下发指令
|
|
|
|
// 下发指令
|
|
|
@ -638,7 +633,11 @@ public class DeviceController {
|
|
|
|
event.setDeviceCode(deviceCode);
|
|
|
|
event.setDeviceCode(deviceCode);
|
|
|
|
event.setBucketCode("");//桶编码
|
|
|
|
event.setBucketCode("");//桶编码
|
|
|
|
if (null != cmd.getData() && StrUtil.isNotEmpty(cmd.getData().toString())) {
|
|
|
|
if (null != cmd.getData() && StrUtil.isNotEmpty(cmd.getData().toString())) {
|
|
|
|
event.setBucketCode(cmd.getData().toString());//桶编码
|
|
|
|
JSONObject _data = JSONUtil.parseObj(cmd.getData());
|
|
|
|
|
|
|
|
String bucketCode = _data.getStr("bucketCode");
|
|
|
|
|
|
|
|
if (StrUtil.isNotEmpty(bucketCode)) {
|
|
|
|
|
|
|
|
event.setBucketCode(bucketCode.toString());
|
|
|
|
|
|
|
|
}//桶编码
|
|
|
|
}
|
|
|
|
}
|
|
|
|
RecycleDevice device = deviceService.getByDeviceCode(deviceCode);
|
|
|
|
RecycleDevice device = deviceService.getByDeviceCode(deviceCode);
|
|
|
|
event.setEventType(cmd.getCmd().getValue());
|
|
|
|
event.setEventType(cmd.getCmd().getValue());
|
|
|
@ -663,14 +662,20 @@ public class DeviceController {
|
|
|
|
List<Snap> list = snapVO.getSnapList();
|
|
|
|
List<Snap> list = snapVO.getSnapList();
|
|
|
|
if (list == null || list.size() == 0) {
|
|
|
|
if (list == null || list.size() == 0) {
|
|
|
|
log.error("上传失败,图片为空!deviceCode{},orderNo{}", deviceCode, orderNo);
|
|
|
|
log.error("上传失败,图片为空!deviceCode{},orderNo{}", deviceCode, orderNo);
|
|
|
|
return CommonResult.error(400, "上传失败,图片为空!");
|
|
|
|
// return CommonResult.error(400, "上传失败,图片为空!");
|
|
|
|
|
|
|
|
return CommonResult.success("");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
ArrayList<FileUploadRespVO> result = new ArrayList<>();
|
|
|
|
ArrayList<FileUploadRespVO> result = new ArrayList<>();
|
|
|
|
list.forEach(snap -> {
|
|
|
|
list.forEach(snap -> {
|
|
|
|
FileUploadRespVO respVO = fileService.uploadImage(snap.getImage(), snap.getFileName());
|
|
|
|
if (null == snap || StrUtil.isEmpty(snap.getImage())) {
|
|
|
|
result.add(respVO);
|
|
|
|
log.error("上传失败,图片为空!deviceCode{},orderNo{}", deviceCode, orderNo);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
FileUploadRespVO respVO = fileService.uploadImage(snap.getImage(), snap.getFileName());
|
|
|
|
|
|
|
|
result.add(respVO);
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
log.info("上传成功,orderNo{},json", orderNo, JSONUtil.toJsonStr(result));
|
|
|
|
Duration duration = Duration.ofSeconds(60 * 10);//3分钟过期
|
|
|
|
Duration duration = Duration.ofSeconds(60 * 10);//3分钟过期
|
|
|
|
if (StrUtil.isNotEmpty(orderNo)) {
|
|
|
|
if (StrUtil.isNotEmpty(orderNo)) {
|
|
|
|
if (orderNo.contains(BusinessCodeEnum.DELIVERY.getCode())) {
|
|
|
|
if (orderNo.contains(BusinessCodeEnum.DELIVERY.getCode())) {
|
|
|
@ -745,50 +750,6 @@ public class DeviceController {
|
|
|
|
bucketService.updateStatus(status);
|
|
|
|
bucketService.updateStatus(status);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// des.setOnline(true);//在线
|
|
|
|
|
|
|
|
// log.info("设备编码:{},状态上报:{}", deviceCode, JSONUtil.toJsonStr(des));
|
|
|
|
|
|
|
|
// Object value = redisTool.getValue(deviceCode);
|
|
|
|
|
|
|
|
// if (value == null) {
|
|
|
|
|
|
|
|
// //更新设备状态
|
|
|
|
|
|
|
|
//// deviceService.updateDevice(des);
|
|
|
|
|
|
|
|
// log.info("首次更新设备状态:{},详情:{}", des.getDeviceCode(), JSONUtil.toJsonStr(des));
|
|
|
|
|
|
|
|
// //更新桶配置
|
|
|
|
|
|
|
|
// des.getBucketList().forEach(bucket -> {
|
|
|
|
|
|
|
|
// bucketService.updateStatus(bucket);
|
|
|
|
|
|
|
|
// log.info("首次更新桶状态:{},详情:{}", bucket.getBucketCode(), JSONUtil.toJsonStr(bucket));
|
|
|
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
// } else {
|
|
|
|
|
|
|
|
// DeviceStatus status = JSONUtil.toBean(value.toString(), DeviceStatus.class);
|
|
|
|
|
|
|
|
// //判断是否发生了改变
|
|
|
|
|
|
|
|
// boolean changed = deviceService.isChanged(status, des);
|
|
|
|
|
|
|
|
// if (changed) {
|
|
|
|
|
|
|
|
// deviceService.updateDevice(des);
|
|
|
|
|
|
|
|
// log.info("更新设备状态:{},详情:{}", des.getDeviceCode(), JSONUtil.toJsonStr(des));
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//更新设备状态
|
|
|
|
|
|
|
|
// List<BucketStatus> oldList = status.getBucketList();
|
|
|
|
|
|
|
|
// List<BucketStatus> newList = des.getBucketList();
|
|
|
|
|
|
|
|
// for (BucketStatus now : newList) {
|
|
|
|
|
|
|
|
// //判断是否在旧桶列表中
|
|
|
|
|
|
|
|
// Optional<BucketStatus> first = oldList.stream()
|
|
|
|
|
|
|
|
// .filter(old -> old.getBucketCode().equals(now.getBucketCode()))
|
|
|
|
|
|
|
|
// .findFirst();
|
|
|
|
|
|
|
|
// if (first.isPresent()) {
|
|
|
|
|
|
|
|
// BucketStatus old = first.get();
|
|
|
|
|
|
|
|
// boolean flag = bucketService.isChanged(old, now);
|
|
|
|
|
|
|
|
// if (flag) {
|
|
|
|
|
|
|
|
// bucketService.updateStatus(now);
|
|
|
|
|
|
|
|
// log.info("更新桶状态:{},详情:{}", now.getBucketCode(), JSONUtil.toJsonStr(now));
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// } else {
|
|
|
|
|
|
|
|
// bucketService.updateStatus(now);
|
|
|
|
|
|
|
|
// log.info("首次更新桶状态:{},详情:{}", now.getBucketCode(), JSONUtil.toJsonStr(now));
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// redisTool.setValue(deviceCode, JSONUtil.toJsonStr(des), 1000 * 60 * 5L);//5分钟
|
|
|
|
|
|
|
|
// CommonResult<String> success = CommonResult.success(deviceCode);
|
|
|
|
|
|
|
|
// success.setMsg("success");
|
|
|
|
|
|
|
|
Duration duration = Duration.ofSeconds(60 * 3);
|
|
|
|
Duration duration = Duration.ofSeconds(60 * 3);
|
|
|
|
redisTool.setValueNow("status_" + bucketCode, JSONUtil.toJsonStr(status), duration);//3分钟
|
|
|
|
redisTool.setValueNow("status_" + bucketCode, JSONUtil.toJsonStr(status), duration);//3分钟
|
|
|
|
return CommonResult.success(bucketCode, "success");
|
|
|
|
return CommonResult.success(bucketCode, "success");
|
|
|
@ -799,7 +760,7 @@ public class DeviceController {
|
|
|
|
public CommonResult<String> weight(@RequestBody WeightVO weight) {
|
|
|
|
public CommonResult<String> weight(@RequestBody WeightVO weight) {
|
|
|
|
String key = "weight_" + weight.getDeviceCode() + "_" + weight.getBucketCode();
|
|
|
|
String key = "weight_" + weight.getDeviceCode() + "_" + weight.getBucketCode();
|
|
|
|
// redisTool.
|
|
|
|
// redisTool.
|
|
|
|
Duration duration = Duration.ofSeconds(60*3);//3分钟过期
|
|
|
|
Duration duration = Duration.ofSeconds(60 * 3);//3分钟过期
|
|
|
|
redisTool.setValueNow(key, JSONUtil.toJsonStr(weight), duration);
|
|
|
|
redisTool.setValueNow(key, JSONUtil.toJsonStr(weight), duration);
|
|
|
|
log.info("上传重量:{}", JSONUtil.toJsonStr(weight));
|
|
|
|
log.info("上传重量:{}", JSONUtil.toJsonStr(weight));
|
|
|
|
return CommonResult.success("success");
|
|
|
|
return CommonResult.success("success");
|
|
|
@ -863,6 +824,7 @@ public class DeviceController {
|
|
|
|
String deviceCode = authVO.getDeviceCode();
|
|
|
|
String deviceCode = authVO.getDeviceCode();
|
|
|
|
Duration duration = Duration.ofSeconds(60 * 3);
|
|
|
|
Duration duration = Duration.ofSeconds(60 * 3);
|
|
|
|
redisTool.setValueNow("auth_" + deviceCode, JSONUtil.toJsonStr(authVO), duration);
|
|
|
|
redisTool.setValueNow("auth_" + deviceCode, JSONUtil.toJsonStr(authVO), duration);
|
|
|
|
|
|
|
|
log.info("写入控制权:{}", JSONUtil.toJsonStr(authVO));
|
|
|
|
return CommonResult.success("success");
|
|
|
|
return CommonResult.success("success");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -871,10 +833,10 @@ public class DeviceController {
|
|
|
|
public CommonResult<ControlAuthVO> getControlAuth(@RequestBody DeviceVO deviceVO) {
|
|
|
|
public CommonResult<ControlAuthVO> getControlAuth(@RequestBody DeviceVO deviceVO) {
|
|
|
|
String deviceCode = deviceVO.getDeviceCode();
|
|
|
|
String deviceCode = deviceVO.getDeviceCode();
|
|
|
|
Object value = redisTool.getValue("auth_" + deviceCode);
|
|
|
|
Object value = redisTool.getValue("auth_" + deviceCode);
|
|
|
|
long expire = redisTool.getKeyExpire("auth_" + deviceCode, TimeUnit.SECONDS);
|
|
|
|
if (null == value) {
|
|
|
|
if (null == value || expire <= 0) {
|
|
|
|
|
|
|
|
return CommonResult.error(400, "获取控制权失败");
|
|
|
|
return CommonResult.error(400, "获取控制权失败");
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
|
|
|
|
log.info("读取控制权:value:{}", value);
|
|
|
|
ControlAuthVO bean = JSONUtil.toBean(value.toString(), ControlAuthVO.class);
|
|
|
|
ControlAuthVO bean = JSONUtil.toBean(value.toString(), ControlAuthVO.class);
|
|
|
|
return CommonResult.success(bean);
|
|
|
|
return CommonResult.success(bean);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -946,7 +908,8 @@ public class DeviceController {
|
|
|
|
//抓拍信息
|
|
|
|
//抓拍信息
|
|
|
|
Object value = redisTool.getValue(orderNo);
|
|
|
|
Object value = redisTool.getValue(orderNo);
|
|
|
|
if (null != value) {
|
|
|
|
if (null != value) {
|
|
|
|
order.setPhoto(value.toString());
|
|
|
|
log.info("投递成功,获取到抓拍信息:{}", value);
|
|
|
|
|
|
|
|
order.setPhoto(JSONUtil.toJsonStr(value));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//审核信息
|
|
|
|
//审核信息
|
|
|
|
order.setAdjustSet(Integer.valueOf(adjustSet));
|
|
|
|
order.setAdjustSet(Integer.valueOf(adjustSet));
|
|
|
|