|
|
@ -8,7 +8,7 @@ import cc.yunxi.domain.po.*;
|
|
|
|
import cc.yunxi.domain.vo.device.*;
|
|
|
|
import cc.yunxi.domain.vo.device.*;
|
|
|
|
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.CommandUtil;
|
|
|
|
import cc.yunxi.utils.CustomerMqttClient;
|
|
|
|
import cc.yunxi.utils.RedisTool;
|
|
|
|
import cc.yunxi.utils.RedisTool;
|
|
|
|
import cc.yunxi.utils.UserContext;
|
|
|
|
import cc.yunxi.utils.UserContext;
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
@ -67,11 +67,10 @@ public class DeviceController {
|
|
|
|
private ICommonService commonService;
|
|
|
|
private ICommonService commonService;
|
|
|
|
@Resource
|
|
|
|
@Resource
|
|
|
|
private RedisTool redisTool;
|
|
|
|
private RedisTool redisTool;
|
|
|
|
@Resource
|
|
|
|
|
|
|
|
private CommandUtil commandUtil;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
@Resource
|
|
|
|
private IFileService fileService;
|
|
|
|
private IFileService fileService;
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
|
|
private CustomerMqttClient mqttClient;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ApiOperation("小程序获取设备配置")
|
|
|
|
@ApiOperation("小程序获取设备配置")
|
|
|
@ -219,7 +218,6 @@ public class DeviceController {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void fillQrCode(String qrCode, DeviceRespVO respVO) {
|
|
|
|
private void fillQrCode(String qrCode, DeviceRespVO respVO) {
|
|
|
|
ArrayList<DeviceRespVO.Poster> posters = new ArrayList<>();
|
|
|
|
|
|
|
|
List<FileUploadRespVO> files = JSONUtil.toList(qrCode, FileUploadRespVO.class);
|
|
|
|
List<FileUploadRespVO> files = JSONUtil.toList(qrCode, FileUploadRespVO.class);
|
|
|
|
if (files.size() > 0) {
|
|
|
|
if (files.size() > 0) {
|
|
|
|
FileUploadRespVO file = files.get(0);
|
|
|
|
FileUploadRespVO file = files.get(0);
|
|
|
@ -501,64 +499,53 @@ public class DeviceController {
|
|
|
|
@ApiOperation("设备命令下发")
|
|
|
|
@ApiOperation("设备命令下发")
|
|
|
|
@PostMapping("/command")
|
|
|
|
@PostMapping("/command")
|
|
|
|
public CommonResult<String> command(@RequestBody CommandVO cmd) {
|
|
|
|
public CommonResult<String> command(@RequestBody CommandVO cmd) {
|
|
|
|
|
|
|
|
UserDTO user = UserContext.getUser();
|
|
|
|
String deviceCode = cmd.getDeviceCode();
|
|
|
|
String deviceCode = cmd.getDeviceCode();
|
|
|
|
Object value = redisTool.getValue(deviceCode);
|
|
|
|
Object value = redisTool.getValue(deviceCode);
|
|
|
|
if (null == value) {
|
|
|
|
if (null == value) return CommonResult.error(400, "设备不在线");
|
|
|
|
return CommonResult.error(400, "设备不在线");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
DeviceStatus status = JSONUtil.toBean(value.toString(), DeviceStatus.class);
|
|
|
|
DeviceStatus status = JSONUtil.toBean(value.toString(), DeviceStatus.class);
|
|
|
|
// 判断设备是否在线
|
|
|
|
// 判断设备是否在线
|
|
|
|
Boolean online = status.getOnline();
|
|
|
|
boolean online = status.isOnline();
|
|
|
|
if (!online) return CommonResult.error(400, "设备不在线");
|
|
|
|
if (!online) return CommonResult.error(400, "设备不在线");
|
|
|
|
|
|
|
|
boolean connected = mqttClient.isConnected();
|
|
|
|
|
|
|
|
if (!connected) throw new BizIllegalException("与mqtt服务器连接中断,请稍后重试!");
|
|
|
|
// 下发指令
|
|
|
|
// 下发指令
|
|
|
|
String ip = status.getIp();
|
|
|
|
mqttClient.publish(deviceCode + "/command", JSONUtil.toJsonStr(cmd));
|
|
|
|
CommonResult _result = commandUtil.sendCommand(cmd, ip);
|
|
|
|
|
|
|
|
// 记录指令下发事件
|
|
|
|
// 记录指令下发事件
|
|
|
|
RecycleDeviceEvent event = new RecycleDeviceEvent();
|
|
|
|
RecycleDeviceEvent event = new RecycleDeviceEvent();
|
|
|
|
event.setDeviceCode(deviceCode);
|
|
|
|
event.setDeviceCode(deviceCode);
|
|
|
|
event.setBucketCode("");//
|
|
|
|
event.setBucketCode("");//桶编码
|
|
|
|
event.setDoorNum(0);//
|
|
|
|
if (StrUtil.isNotEmpty(cmd.getData())) {
|
|
|
|
|
|
|
|
event.setBucketCode(cmd.getData());//桶编码
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
event.setEventType(deviceCode);
|
|
|
|
event.setEventType(deviceCode);
|
|
|
|
event.setEventDesc("设备命令下发");
|
|
|
|
event.setEventDesc("设备命令下发");
|
|
|
|
event.setEventTime(new Date());
|
|
|
|
event.setEventTime(new Date());
|
|
|
|
event.setIsLocal("0");//远程调用
|
|
|
|
event.setIsLocal("0");//远程调用
|
|
|
|
|
|
|
|
|
|
|
|
if (_result.getCode() != 200) {
|
|
|
|
|
|
|
|
event.setEventResult("1");
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
event.setEventResult("0");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
UserDTO user = UserContext.getUser();
|
|
|
|
|
|
|
|
event.setCreateUserId(user.getId());
|
|
|
|
event.setCreateUserId(user.getId());
|
|
|
|
event.setCreateTime(new Date());
|
|
|
|
event.setCreateTime(new Date());
|
|
|
|
event.setCompanyId(user.getCompanyId());
|
|
|
|
event.setCompanyId(user.getCompanyId());
|
|
|
|
event.setOrganizeJsonId("");
|
|
|
|
|
|
|
|
eventService.save(event);
|
|
|
|
eventService.save(event);
|
|
|
|
|
|
|
|
|
|
|
|
return _result;
|
|
|
|
return CommonResult.success("指令下发成功");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ApiOperation("获取设备状态")
|
|
|
|
@ApiOperation("获取设备状态")
|
|
|
|
@PostMapping("/getStatus")
|
|
|
|
@PostMapping("/getStatus")
|
|
|
|
public CommonResult<String> getStatus(@RequestBody DeviceVO deviceVO) {
|
|
|
|
public CommonResult<String> getStatus(@RequestBody DeviceVO deviceVO) {
|
|
|
|
Object value = redisTool.getValue(deviceVO.getDeviceCode());
|
|
|
|
Object value = redisTool.getValue(deviceVO.getDeviceCode());
|
|
|
|
if (value == null) {
|
|
|
|
if (value == null) return CommonResult.error(400, "获取失败,设备不在线!");
|
|
|
|
return CommonResult.error(400, "获取失败,设备不在线!");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
DeviceStatus status = JSONUtil.toBean(value.toString(), DeviceStatus.class);
|
|
|
|
DeviceStatus status = JSONUtil.toBean(value.toString(), DeviceStatus.class);
|
|
|
|
|
|
|
|
if (status.isOnline()) return CommonResult.error(400, "获取失败,设备不在线!");
|
|
|
|
CommandVO command = new CommandVO();
|
|
|
|
CommandVO command = new CommandVO();
|
|
|
|
command.setCmd(CMDEnum.status);
|
|
|
|
command.setCmd(CMDEnum.status);
|
|
|
|
command.setDeviceCode(deviceVO.getDeviceCode());
|
|
|
|
command.setDeviceCode(deviceVO.getDeviceCode());
|
|
|
|
command.setOptTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
|
|
command.setOptTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
|
|
command.setData("");
|
|
|
|
command.setData("");
|
|
|
|
command.setRemark("");
|
|
|
|
command.setRemark("");
|
|
|
|
CommonResult commonResult = commandUtil.sendCommand(command, status.getIp());
|
|
|
|
if (!mqttClient.isConnected()) throw new BizIllegalException("与mqtt服务器连接中断,请稍后重试!");
|
|
|
|
Object data = commonResult.getData();
|
|
|
|
mqttClient.publish(deviceVO.getDeviceCode() + "/command", JSONUtil.toJsonStr(command));
|
|
|
|
DeviceStatus status1 = JSONUtil.toBean(data.toString(), DeviceStatus.class);
|
|
|
|
|
|
|
|
deviceService.updateDevice(status1);
|
|
|
|
|
|
|
|
status1.getBucketList().forEach(bucket -> {
|
|
|
|
|
|
|
|
bucketService.updateStatus(bucket);
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
return CommonResult.success("获取成功!");
|
|
|
|
return CommonResult.success("获取成功!");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -609,7 +596,7 @@ public class DeviceController {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
redisTool.setValue(deviceCode, JSONUtil.toJsonStr(des), 1000 * 60 * 60l);
|
|
|
|
redisTool.setValue(deviceCode, JSONUtil.toJsonStr(des), 1000 * 60 * 60L);
|
|
|
|
CommonResult<String> success = CommonResult.success(deviceCode);
|
|
|
|
CommonResult<String> success = CommonResult.success(deviceCode);
|
|
|
|
success.setMsg("success");
|
|
|
|
success.setMsg("success");
|
|
|
|
return success;
|
|
|
|
return success;
|
|
|
@ -632,7 +619,7 @@ public class DeviceController {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
redisTool.setValue(weight.getBucketCode(), JSONUtil.toJsonStr(weight), 1000 * 60l);//一分钟过期
|
|
|
|
redisTool.setValue(weight.getBucketCode(), JSONUtil.toJsonStr(weight), 1000 * 60L);//一分钟过期
|
|
|
|
return CommonResult.success("success");
|
|
|
|
return CommonResult.success("success");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|