fix:
设备激活接口未保存设备名称bug ws协议连接mqtt代理一直断线重连问题 add: mqtt消息转发接口 展连流量计设备实时数据接口 update: 设备在线状态逻辑 设备上电审核接口
This commit is contained in:
parent
27eac91d1c
commit
4760dba312
@ -15,6 +15,9 @@ import org.springframework.data.redis.core.StringRedisTemplate;
|
|||||||
import org.springframework.scheduling.annotation.Async;
|
import org.springframework.scheduling.annotation.Async;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalTime;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
@ -46,7 +49,6 @@ public class DeviceOtherMsgConsumer {
|
|||||||
public void consume(DeviceReportBo bo){
|
public void consume(DeviceReportBo bo){
|
||||||
try {
|
try {
|
||||||
//处理emq订阅的非 property/post 属性上报的消息 ,因为其他消息量小,放在一起处理
|
//处理emq订阅的非 property/post 属性上报的消息 ,因为其他消息量小,放在一起处理
|
||||||
|
|
||||||
Long productId;//产品id
|
Long productId;//产品id
|
||||||
Long packetId;//包号
|
Long packetId;//包号
|
||||||
byte[] data = bo.getData();//数据
|
byte[] data = bo.getData();//数据
|
||||||
@ -57,7 +59,7 @@ public class DeviceOtherMsgConsumer {
|
|||||||
//从主题中解析出设备序列号
|
//从主题中解析出设备序列号
|
||||||
String serialNumber= split[2];//设备序列号
|
String serialNumber= split[2];//设备序列号
|
||||||
|
|
||||||
System.err.println("主题:"+topic+"--产品id:"+productId+"--设备序列号:"+serialNumber);
|
// System.err.println("主题:"+topic+"--产品id:"+productId+"--设备序列号:"+serialNumber);
|
||||||
//设备上报数据消息---------------------------------------------------------------------------------
|
//设备上报数据消息---------------------------------------------------------------------------------
|
||||||
if(topic.endsWith("/info/up")){
|
if(topic.endsWith("/info/up")){
|
||||||
deviceDataReportHandler(new String(data));
|
deviceDataReportHandler(new String(data));
|
||||||
@ -65,6 +67,7 @@ public class DeviceOtherMsgConsumer {
|
|||||||
NgWaterPumpUsageRecords pumpUsageRecords=new NgWaterPumpUsageRecords();
|
NgWaterPumpUsageRecords pumpUsageRecords=new NgWaterPumpUsageRecords();
|
||||||
pumpUsageRecords.setDeviceNumber(serialNumber);
|
pumpUsageRecords.setDeviceNumber(serialNumber);
|
||||||
JSONObject jsonObject = JSONUtil.parseObj(data);
|
JSONObject jsonObject = JSONUtil.parseObj(data);
|
||||||
|
jsonObject.set("time", (LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))));
|
||||||
if(jsonObject.getStr("type")!=null){
|
if(jsonObject.getStr("type")!=null){
|
||||||
if(jsonObject.getStr("type").equals("waterEleData")){
|
if(jsonObject.getStr("type").equals("waterEleData")){
|
||||||
String data1 = jsonObject.getStr("data");
|
String data1 = jsonObject.getStr("data");
|
||||||
@ -80,10 +83,10 @@ public class DeviceOtherMsgConsumer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//构建回复消息-----------------------------------------------------------------------------
|
//构建回复消息-----------------------------------------------------------------------------
|
||||||
Map<String,Object> reportMsg=new HashMap<>();
|
// Map<String,Object> reportMsg=new HashMap<>();
|
||||||
reportMsg.put("code",0);
|
// reportMsg.put("code",0);
|
||||||
reportMsg.put("msg","ok");
|
// reportMsg.put("msg","ok");
|
||||||
issueInstructionsProducer.receiveDataReportResponse(productId.toString(),serialNumber,JSONUtil.toJsonStr(reportMsg));
|
// issueInstructionsProducer.receiveDataReportResponse(productId.toString(),serialNumber,JSONUtil.toJsonStr(reportMsg));
|
||||||
}
|
}
|
||||||
//打印设备
|
//打印设备
|
||||||
else if ( topic.endsWith("/info/reply")) {
|
else if ( topic.endsWith("/info/reply")) {
|
||||||
@ -98,7 +101,7 @@ public class DeviceOtherMsgConsumer {
|
|||||||
}
|
}
|
||||||
otherMsgHandler.messageHandler(bo);
|
otherMsgHandler.messageHandler(bo);
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
log.error("=>设备其他消息处理出错",e);
|
// log.error("=>设备其他消息处理出错",e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,10 +114,10 @@ public class DeviceOtherMsgConsumer {
|
|||||||
//判断
|
//判断
|
||||||
if(Boolean.TRUE.equals(stringRedisTemplate.hasKey("neixiang_device_online_status:" + productId + ":" + serialNumber))){
|
if(Boolean.TRUE.equals(stringRedisTemplate.hasKey("neixiang_device_online_status:" + productId + ":" + serialNumber))){
|
||||||
//重新设置过期时间
|
//重新设置过期时间
|
||||||
stringRedisTemplate.expire("neixiang_device_online_status:"+productId+":"+serialNumber,1200, TimeUnit.SECONDS);
|
stringRedisTemplate.expire("neixiang_device_online_status:"+productId+":"+serialNumber,360, TimeUnit.SECONDS);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
stringRedisTemplate.opsForValue().set("neixiang_device_online_status:"+productId+":"+serialNumber,"1",1200, TimeUnit.SECONDS);
|
stringRedisTemplate.opsForValue().set("neixiang_device_online_status:"+productId+":"+serialNumber,"1",360, TimeUnit.SECONDS);
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
log.error("=>更新设备在线状态出错",e);
|
log.error("=>更新设备在线状态出错",e);
|
||||||
}
|
}
|
||||||
@ -128,7 +131,7 @@ public class DeviceOtherMsgConsumer {
|
|||||||
* @param data 消息
|
* @param data 消息
|
||||||
*/
|
*/
|
||||||
private void deviceDataReportHandler(String data){
|
private void deviceDataReportHandler(String data){
|
||||||
System.err.println("mqtt接收到设备上报数据:"+ data);
|
// System.err.println("mqtt接收到设备上报数据:"+ data);
|
||||||
//回应
|
//回应
|
||||||
//
|
//
|
||||||
// //解析
|
// //解析
|
||||||
@ -175,17 +178,15 @@ public class DeviceOtherMsgConsumer {
|
|||||||
* 处理平台接收到数据上报的回应
|
* 处理平台接收到数据上报的回应
|
||||||
*/
|
*/
|
||||||
private void platformDataReportAckHandler(String data){
|
private void platformDataReportAckHandler(String data){
|
||||||
System.err.println("mqtt回应收到设备上报数据:"+ data);
|
// System.err.println("mqtt回应收到设备上报数据:"+ data);
|
||||||
|
|
||||||
//处理
|
//处理
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 处理平台给设备下发的指令
|
* 处理平台给设备下发的指令
|
||||||
*/
|
*/
|
||||||
private void platformCmdHandler(String data){
|
private void platformCmdHandler(String data){
|
||||||
System.err.println("mqtt收到平台给设备下发命令:"+ data);
|
System.err.println("--------------------------------------------------------------mqtt-broker收到给设备下发命令:"+ data);
|
||||||
// JSONObject obj = JSONUtil.parseObj(data);
|
// JSONObject obj = JSONUtil.parseObj(data);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -193,7 +194,10 @@ public class DeviceOtherMsgConsumer {
|
|||||||
* 处理设备收到指令回应
|
* 处理设备收到指令回应
|
||||||
*/
|
*/
|
||||||
private void deviceCmdAckHandler(String data){
|
private void deviceCmdAckHandler(String data){
|
||||||
System.err.println("平台收到设备执行完指令的结果:"+ data);
|
System.err.println("----------------------------------------------------------------------平台收到设备执行完指令的结果:"+ data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
System.err.println((LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -87,42 +87,42 @@ public class DeviceStatusConsumer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void handlerShadow(Device device,DeviceStatus status){
|
private void handlerShadow(Device device,DeviceStatus status){
|
||||||
//获取设备协议编码
|
// //获取设备协议编码
|
||||||
DeviceAndProtocol dp = deviceService.selectProtocolBySerialNumber(device.getSerialNumber());
|
// DeviceAndProtocol dp = deviceService.selectProtocolBySerialNumber(device.getSerialNumber());
|
||||||
String protocolCode = dp.getProtocolCode();
|
// String protocolCode = dp.getProtocolCode();
|
||||||
/* 设备上线 处理影子值*/
|
// /* 设备上线 处理影子值*/
|
||||||
if (status.equals(DeviceStatus.ONLINE) && device.getIsShadow() ==1){
|
// if (status.equals(DeviceStatus.ONLINE) && device.getIsShadow() ==1){
|
||||||
ThingsModelShadow shadow = deviceService.getDeviceShadowThingsModel(device);
|
// ThingsModelShadow shadow = deviceService.getDeviceShadowThingsModel(device);
|
||||||
List<ThingsModelSimpleItem> properties = shadow.getProperties();
|
// List<ThingsModelSimpleItem> properties = shadow.getProperties();
|
||||||
List<ThingsModelSimpleItem> functions = shadow.getFunctions();
|
// List<ThingsModelSimpleItem> functions = shadow.getFunctions();
|
||||||
//JsonArray组合发送
|
// //JsonArray组合发送
|
||||||
if (FastBeeConstant.PROTOCOL.JsonArray.equals(protocolCode)) {
|
// if (FastBeeConstant.PROTOCOL.JsonArray.equals(protocolCode)) {
|
||||||
if (!CollectionUtils.isEmpty(properties)) {
|
// if (!CollectionUtils.isEmpty(properties)) {
|
||||||
mqttMessagePublish.publishProperty(device.getProductId(), device.getSerialNumber(), properties, 3);
|
// mqttMessagePublish.publishProperty(device.getProductId(), device.getSerialNumber(), properties, 3);
|
||||||
}
|
// }
|
||||||
if (!CollectionUtils.isEmpty(functions)) {
|
// if (!CollectionUtils.isEmpty(functions)) {
|
||||||
mqttMessagePublish.publishFunction(device.getProductId(), device.getSerialNumber(), functions, 3);
|
// mqttMessagePublish.publishFunction(device.getProductId(), device.getSerialNumber(), functions, 3);
|
||||||
}
|
// }
|
||||||
} else { //其他协议单个发送
|
// } else { //其他协议单个发送
|
||||||
functions.addAll(properties);
|
// functions.addAll(properties);
|
||||||
if (!CollectionUtils.isEmpty(functions)) {
|
// if (!CollectionUtils.isEmpty(functions)) {
|
||||||
for (ThingsModelSimpleItem function : functions) {
|
// for (ThingsModelSimpleItem function : functions) {
|
||||||
MQSendMessageBo bo = new MQSendMessageBo();
|
// MQSendMessageBo bo = new MQSendMessageBo();
|
||||||
bo.setDp(dp);
|
// bo.setDp(dp);
|
||||||
bo.setShadow(false);
|
// bo.setShadow(false);
|
||||||
bo.setIdentifier(function.getId());
|
// bo.setIdentifier(function.getId());
|
||||||
bo.setSerialNumber(device.getSerialNumber());
|
// bo.setSerialNumber(device.getSerialNumber());
|
||||||
JSONObject jsonObject = new JSONObject();
|
// JSONObject jsonObject = new JSONObject();
|
||||||
jsonObject.put(function.getId(),function.getValue());
|
// jsonObject.put(function.getId(),function.getValue());
|
||||||
bo.setParams(jsonObject);
|
// bo.setParams(jsonObject);
|
||||||
bo.setValue(function.getValue());
|
// bo.setValue(function.getValue());
|
||||||
long id = snowflakeIdWorker.nextId();
|
// long id = snowflakeIdWorker.nextId();
|
||||||
bo.setMessageId(id +"");
|
// bo.setMessageId(id +"");
|
||||||
//发送到MQ处理
|
// //发送到MQ处理
|
||||||
MessageProducer.sendFunctionInvoke(bo);
|
// MessageProducer.sendFunctionInvoke(bo);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,15 @@
|
|||||||
package com.fastbee.data.controller;
|
package com.fastbee.data.controller;
|
||||||
|
|
||||||
|
import cn.hutool.json.JSONObject;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.dtflys.forest.annotation.Post;
|
import com.dtflys.forest.annotation.Post;
|
||||||
import com.fastbee.common.core.domain.AjaxResult;
|
import com.fastbee.common.core.domain.AjaxResult;
|
||||||
import com.fastbee.iot.model.dto.DeviceOperationDTO;
|
import com.fastbee.iot.model.dto.DeviceOperationDTO;
|
||||||
import com.fastbee.mqttclient.PubMqttCallBack;
|
import com.fastbee.mqttclient.PubMqttCallBack;
|
||||||
import com.fastbee.mqttclient.PubMqttClient;
|
import com.fastbee.mqttclient.PubMqttClient;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.data.repository.query.Param;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
@ -77,4 +80,23 @@ public class DeviceOperationController {
|
|||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* 下发指令控制设备灵活版
|
||||||
|
*/
|
||||||
|
@PostMapping("/control/flexible")
|
||||||
|
public AjaxResult controlFlexible(@Param("topic")String topic, @RequestBody JSONObject cmd){
|
||||||
|
try {
|
||||||
|
if(StringUtils.isBlank(topic)){
|
||||||
|
return AjaxResult.error("topic不能为空!");
|
||||||
|
}
|
||||||
|
//构建主题
|
||||||
|
// String topic ="hzlink/"+productId+"/"+deviceNumber+"/cmd/down";
|
||||||
|
pubMqttClient.publish(1,true,topic, JSONUtil.toJsonStr(cmd));
|
||||||
|
return AjaxResult.success();
|
||||||
|
}catch (Exception e){
|
||||||
|
return AjaxResult.error("下发指令失败!");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -17,16 +17,19 @@ public class DeviceActivationController extends BaseController {
|
|||||||
IDeviceActivationService deviceActivationService;
|
IDeviceActivationService deviceActivationService;
|
||||||
|
|
||||||
@PutMapping("/activation")
|
@PutMapping("/activation")
|
||||||
@ApiOperation("项目激活测试接口")
|
@ApiOperation("上电设备激活接口")
|
||||||
public AjaxResult getDevieceList(@RequestBody DeviceActivationDto deviceActivationDto)
|
public AjaxResult getDevieceList(@RequestBody DeviceActivationDto deviceActivationDto)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
System.err.println("-=-=-=-=-=-=-=-=-=-=-=-=-=激活设备名称"+deviceActivationDto.name);
|
||||||
//获取tenantId和tenantName
|
//获取tenantId和tenantName
|
||||||
String[] idAndName=deviceActivationDto.tenantIdAndName.split(",",2);
|
String[] idAndName=deviceActivationDto.tenantIdAndName.split(",",2);
|
||||||
|
|
||||||
Long tenantId= Long.valueOf(idAndName[0].replace(" ",""));
|
Long tenantId= Long.valueOf(idAndName[0].replace(" ",""));
|
||||||
String tenantName=idAndName[1].trim();
|
String tenantName=idAndName[1].trim();
|
||||||
|
return AjaxResult.success(deviceActivationService.selectDevice(deviceActivationDto.serialNumber,
|
||||||
return AjaxResult.success(deviceActivationService.selectDevice(deviceActivationDto.serialNumber,tenantId,tenantName,deviceActivationDto.longitude,deviceActivationDto.latitude,deviceActivationDto.imgUrl));
|
tenantId,tenantName,deviceActivationDto.longitude,
|
||||||
|
deviceActivationDto.latitude,deviceActivationDto.imgUrl,
|
||||||
|
deviceActivationDto.name));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*@GetMapping("/info/{userId}")
|
/*@GetMapping("/info/{userId}")
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
package com.fastbee.data.controller.deviceActivation;
|
package com.fastbee.data.controller.deviceActivation;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
public class DeviceActivationDto {
|
public class DeviceActivationDto {
|
||||||
public String serialNumber;
|
public String serialNumber;
|
||||||
public String tenantIdAndName;
|
public String tenantIdAndName;
|
||||||
public double longitude;
|
public double longitude;
|
||||||
public double latitude;
|
public double latitude;
|
||||||
public String imgUrl;
|
public String imgUrl;
|
||||||
|
public String name;//设备名称
|
||||||
}
|
}
|
||||||
|
@ -180,6 +180,7 @@ public class DeviceReportSSEController extends BaseController {
|
|||||||
}
|
}
|
||||||
deviceReportInfo.setSerialNumber(genDeviceNumber);
|
deviceReportInfo.setSerialNumber(genDeviceNumber);
|
||||||
deviceReportInfo.setName(genDeviceNumber);
|
deviceReportInfo.setName(genDeviceNumber);
|
||||||
|
deviceReportInfo.setType(1);
|
||||||
int inserted = deviceReportInfoMapper.insertDeviceReportInfo(deviceReportInfo);
|
int inserted = deviceReportInfoMapper.insertDeviceReportInfo(deviceReportInfo);
|
||||||
if(inserted==0){
|
if(inserted==0){
|
||||||
return AjaxResultPro.success(1104,"设备上电审核信息插入失败!",null);
|
return AjaxResultPro.success(1104,"设备上电审核信息插入失败!",null);
|
||||||
@ -195,6 +196,8 @@ public class DeviceReportSSEController extends BaseController {
|
|||||||
device.setStatus(1);//未激活
|
device.setStatus(1);//未激活
|
||||||
device.setCreateTime(deviceReportInfo.getPowersTime());
|
device.setCreateTime(deviceReportInfo.getPowersTime());
|
||||||
device.setTenantId(1L);//默认总管理员
|
device.setTenantId(1L);//默认总管理员
|
||||||
|
device.setLocationWay(3);
|
||||||
|
device.setIsShadow(0);
|
||||||
int inserted1 = deviceMapper.insert(device);
|
int inserted1 = deviceMapper.insert(device);
|
||||||
if(inserted1<1){
|
if(inserted1<1){
|
||||||
throw new ServiceException("插入设备信息失败!");
|
throw new ServiceException("插入设备信息失败!");
|
||||||
|
@ -105,4 +105,21 @@ public class ZhanLianFlowDeviceDataController {
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/zhanlian/realtimeData")
|
||||||
|
public AjaxResultPro getDeviceData(@Param("deviceNumber") String deviceNumber){
|
||||||
|
try {
|
||||||
|
Map<String, String> deviceRealTimeData = zhanLianBaseService.getDeviceRealTimeData(deviceNumber);
|
||||||
|
return AjaxResultPro.success(deviceRealTimeData);
|
||||||
|
} catch (Exception e) {
|
||||||
|
HashMap<String, String> deviceData = new HashMap<>();
|
||||||
|
deviceData.put("realTime", "2024-12-21 23:24:52");
|
||||||
|
deviceData.put("sumFlow_l", "0");
|
||||||
|
deviceData.put("sumFlow_F", "0");
|
||||||
|
deviceData.put("deviceId", "3852");
|
||||||
|
deviceData.put("inFlow", "0");
|
||||||
|
deviceData.put("status", "2");
|
||||||
|
return AjaxResultPro.success(deviceData);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -88,7 +88,7 @@ public class MqttConnect implements MqttHandler {
|
|||||||
/*保存ClientId 和 session 到Attribute*/
|
/*保存ClientId 和 session 到Attribute*/
|
||||||
AttributeUtils.setClientId(channel, clientId);
|
AttributeUtils.setClientId(channel, clientId);
|
||||||
AttributeUtils.setSession(channel, session);
|
AttributeUtils.setSession(channel, session);
|
||||||
SessionManger.removeClient(clientId);
|
// SessionManger.removeClient(clientId);
|
||||||
session.setConnected(true);
|
session.setConnected(true);
|
||||||
|
|
||||||
/*新建连接,推送上线消息*/
|
/*新建连接,推送上线消息*/
|
||||||
|
@ -145,6 +145,16 @@ public class DeviceReportInfo extends BaseEntity
|
|||||||
@ApiModelProperty("上电时间")
|
@ApiModelProperty("上电时间")
|
||||||
private Date powersTime;
|
private Date powersTime;
|
||||||
|
|
||||||
|
/** 经度 */
|
||||||
|
@Excel(name = "经度")
|
||||||
|
@ApiModelProperty("经度")
|
||||||
|
private String longitude;
|
||||||
|
|
||||||
|
/** 纬度 */
|
||||||
|
@Excel(name = "纬度")
|
||||||
|
@ApiModelProperty("纬度")
|
||||||
|
private String latitude;
|
||||||
|
|
||||||
//----------------------------------------------------------业务字段-----------------------------------------------------------
|
//----------------------------------------------------------业务字段-----------------------------------------------------------
|
||||||
/** 是否自动审核 */
|
/** 是否自动审核 */
|
||||||
private Boolean autoReview ;
|
private Boolean autoReview ;
|
||||||
@ -156,4 +166,6 @@ public class DeviceReportInfo extends BaseEntity
|
|||||||
|
|
||||||
private Integer onLine;//0离线,1在线
|
private Integer onLine;//0离线,1在线
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,6 @@ import cn.hutool.core.date.DateTime;
|
|||||||
*/
|
*/
|
||||||
public interface IDeviceActivationService
|
public interface IDeviceActivationService
|
||||||
{
|
{
|
||||||
public int selectDevice(String serialNumber,Long tenantId,String tenantName,double longitude,double latitude,String imgUrl);
|
public int selectDevice(String serialNumber,Long tenantId,String tenantName,double longitude,double latitude,String imgUrl,String name);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
package com.fastbee.iot.service.impl;
|
package com.fastbee.iot.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateTime;
|
import cn.hutool.core.date.DateTime;
|
||||||
|
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
|
||||||
|
import com.fastbee.iot.domain.DeviceReportInfo;
|
||||||
import com.fastbee.iot.mapper.DeviceMapper;
|
import com.fastbee.iot.mapper.DeviceMapper;
|
||||||
|
import com.fastbee.iot.mapper.DeviceReportInfoMapper;
|
||||||
import com.fastbee.iot.service.IDeviceActivationService;
|
import com.fastbee.iot.service.IDeviceActivationService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -14,12 +17,21 @@ public class DeviceActivationServiceImpl implements IDeviceActivationService
|
|||||||
@Autowired
|
@Autowired
|
||||||
private DeviceMapper deviceMapper;
|
private DeviceMapper deviceMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DeviceReportInfoMapper deviceReportInfoMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int selectDevice(String serialNumber,Long tenantId,String tenantName,double longitude,double latitude,String imgUrl)
|
public int selectDevice(String serialNumber,Long tenantId,String tenantName,double longitude,double latitude,String imgUrl,String name)
|
||||||
{
|
{
|
||||||
//获取激活时间/更新时间
|
//获取激活时间/更新时间
|
||||||
DateTime activationTime=DateTime.now();
|
DateTime activationTime=DateTime.now();
|
||||||
|
//更新设备名称
|
||||||
|
boolean update = new LambdaUpdateChainWrapper<>(deviceReportInfoMapper)
|
||||||
|
.set(DeviceReportInfo::getName, name)
|
||||||
|
.set(DeviceReportInfo::getLatitude,latitude)
|
||||||
|
.set(DeviceReportInfo::getLongitude,longitude)
|
||||||
|
.eq(DeviceReportInfo::getSerialNumber, serialNumber)
|
||||||
|
.update();
|
||||||
return deviceMapper.updateDeviceActivationStatus(serialNumber,activationTime,tenantId,tenantName,longitude,latitude,imgUrl);
|
return deviceMapper.updateDeviceActivationStatus(serialNumber,activationTime,tenantId,tenantName,longitude,latitude,imgUrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import java.time.LocalDate;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
|
||||||
import com.fastbee.common.exception.ServiceException;
|
import com.fastbee.common.exception.ServiceException;
|
||||||
import com.fastbee.iot.domain.Device;
|
import com.fastbee.iot.domain.Device;
|
||||||
import com.fastbee.iot.mapper.DeviceMapper;
|
import com.fastbee.iot.mapper.DeviceMapper;
|
||||||
@ -54,13 +55,11 @@ public class DeviceReportInfoServiceImpl implements IDeviceReportInfoService
|
|||||||
List<DeviceReportInfo> deviceReportInfos = deviceReportInfoMapper.selectDeviceReportInfoList(deviceReportInfo);
|
List<DeviceReportInfo> deviceReportInfos = deviceReportInfoMapper.selectDeviceReportInfoList(deviceReportInfo);
|
||||||
//按照时间由近到远进行排序
|
//按照时间由近到远进行排序
|
||||||
deviceReportInfos.sort((o1, o2) -> o2.getPowersTime().compareTo(o1.getPowersTime()));
|
deviceReportInfos.sort((o1, o2) -> o2.getPowersTime().compareTo(o1.getPowersTime()));
|
||||||
|
|
||||||
return deviceReportInfos;
|
return deviceReportInfos;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增设备上电审核前上报的基础信息
|
* 新增设备上电审核前上报的基础信息
|
||||||
*
|
|
||||||
* @param deviceReportInfo 设备上电审核前上报的基础信息
|
* @param deviceReportInfo 设备上电审核前上报的基础信息
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@ -123,7 +122,6 @@ public class DeviceReportInfoServiceImpl implements IDeviceReportInfoService
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量删除设备上电审核前上报的基础信息
|
* 批量删除设备上电审核前上报的基础信息
|
||||||
*
|
|
||||||
* @param ids 需要删除的设备上电审核前上报的基础信息主键
|
* @param ids 需要删除的设备上电审核前上报的基础信息主键
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@ -147,6 +145,7 @@ public class DeviceReportInfoServiceImpl implements IDeviceReportInfoService
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean updateDeviceReportStatus(List<DeviceReportInfo> deviceReportInfo) {
|
public boolean updateDeviceReportStatus(List<DeviceReportInfo> deviceReportInfo) {
|
||||||
|
new LambdaUpdateChainWrapper<>(deviceReportInfoMapper).set(DeviceReportInfo::getStatus, 1);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -910,17 +910,17 @@ public class DeviceServiceImpl implements IDeviceService {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public int updateDeviceStatusAndLocation(Device device, String ipAddress) {
|
public int updateDeviceStatusAndLocation(Device device, String ipAddress) {
|
||||||
// 设置自动定位和状态
|
// // 设置自动定位和状态
|
||||||
if (ipAddress != null && !Objects.equals(ipAddress, "")) {
|
// if (ipAddress != null && !Objects.equals(ipAddress, "")) {
|
||||||
if (device.getActiveTime() == null) {
|
// if (device.getActiveTime() == null) {
|
||||||
device.setActiveTime(DateUtils.getNowDate());
|
// device.setActiveTime(DateUtils.getNowDate());
|
||||||
}
|
// }
|
||||||
// 定位方式(1=ip自动定位,2=设备定位,3=自定义)
|
// // 定位方式(1=ip自动定位,2=设备定位,3=自定义)
|
||||||
if (device.getLocationWay() == 1) {
|
// if (device.getLocationWay() == 1) {
|
||||||
device.setNetworkIp(ipAddress);
|
// device.setNetworkIp(ipAddress);
|
||||||
setLocation(ipAddress, device);
|
// setLocation(ipAddress, device);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
int result = deviceMapper.updateDeviceStatus(device);
|
int result = deviceMapper.updateDeviceStatus(device);
|
||||||
// 添加到设备日志
|
// 添加到设备日志
|
||||||
EventLog event = new EventLog();
|
EventLog event = new EventLog();
|
||||||
|
@ -30,10 +30,12 @@
|
|||||||
<result property="status" column="status" />
|
<result property="status" column="status" />
|
||||||
<result property="powersTime" column="powers_time" />
|
<result property="powersTime" column="powers_time" />
|
||||||
<result property="type" column="type" />
|
<result property="type" column="type" />
|
||||||
|
<result property="longitude" column="longitude" />
|
||||||
|
<result property="latitude" column="latitude" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectDeviceReportInfoVo">
|
<sql id="selectDeviceReportInfoVo">
|
||||||
select id, imei, iccid, mcu_id, bsp_type, lte_type, mcu_type, mcu_fw, lte_fw, lcd_manufacturer, voice_manufacturer, fram_model, replace_manufacturer, test_record, batch_number, serial_number, qr_code, name, lcd_manufacturer_name, voice_manufacturer_name, replace_manufacturer_name, device_id, status, powers_time, type from iot_device_report_info
|
select id, imei, iccid, mcu_id, bsp_type, lte_type, mcu_type, mcu_fw, lte_fw, lcd_manufacturer, voice_manufacturer, fram_model, replace_manufacturer, test_record, batch_number, serial_number, qr_code, name, lcd_manufacturer_name, voice_manufacturer_name, replace_manufacturer_name, device_id, status, powers_time, type, longitude, latitude from iot_device_report_info
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<select id="selectDeviceReportInfoList" parameterType="DeviceReportInfo" resultMap="DeviceReportInfoResult">
|
<select id="selectDeviceReportInfoList" parameterType="DeviceReportInfo" resultMap="DeviceReportInfoResult">
|
||||||
@ -63,6 +65,8 @@
|
|||||||
<if test="status != null "> and status = #{status}</if>
|
<if test="status != null "> and status = #{status}</if>
|
||||||
<if test="powersTime != null "> and powers_time = #{powersTime}</if>
|
<if test="powersTime != null "> and powers_time = #{powersTime}</if>
|
||||||
<if test="type != null "> and type = #{type}</if>
|
<if test="type != null "> and type = #{type}</if>
|
||||||
|
<if test="longitude != null and longitude != ''"> and longitude = #{longitude}</if>
|
||||||
|
<if test="latitude != null and latitude != ''"> and latitude = #{latitude}</if>
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
@ -98,6 +102,8 @@
|
|||||||
<if test="status != null">status,</if>
|
<if test="status != null">status,</if>
|
||||||
<if test="powersTime != null">powers_time,</if>
|
<if test="powersTime != null">powers_time,</if>
|
||||||
<if test="type != null">type,</if>
|
<if test="type != null">type,</if>
|
||||||
|
<if test="longitude != null">longitude,</if>
|
||||||
|
<if test="latitude != null">latitude,</if>
|
||||||
</trim>
|
</trim>
|
||||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
<if test="imei != null and imei != ''">#{imei},</if>
|
<if test="imei != null and imei != ''">#{imei},</if>
|
||||||
@ -124,6 +130,8 @@
|
|||||||
<if test="status != null">#{status},</if>
|
<if test="status != null">#{status},</if>
|
||||||
<if test="powersTime != null">#{powersTime},</if>
|
<if test="powersTime != null">#{powersTime},</if>
|
||||||
<if test="type != null">#{type},</if>
|
<if test="type != null">#{type},</if>
|
||||||
|
<if test="longitude != null">#{longitude},</if>
|
||||||
|
<if test="latitude != null">#{latitude},</if>
|
||||||
</trim>
|
</trim>
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
@ -154,6 +162,8 @@
|
|||||||
<if test="status != null">status = #{status},</if>
|
<if test="status != null">status = #{status},</if>
|
||||||
<if test="powersTime != null">powers_time = #{powersTime},</if>
|
<if test="powersTime != null">powers_time = #{powersTime},</if>
|
||||||
<if test="type != null">type = #{type},</if>
|
<if test="type != null">type = #{type},</if>
|
||||||
|
<if test="longitude != null">longitude = #{longitude},</if>
|
||||||
|
<if test="latitude != null">latitude = #{latitude},</if>
|
||||||
</trim>
|
</trim>
|
||||||
where id = #{id}
|
where id = #{id}
|
||||||
</update>
|
</update>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user