1.更新设备的在线状态
This commit is contained in:
parent
c1dcf956e2
commit
8cf4a61856
|
@ -232,7 +232,7 @@ iot:
|
||||||
# 推送消息token
|
# 推送消息token
|
||||||
token: JZWgouXXNcgTbxCyRCLKbQkKQMhyUrfL
|
token: JZWgouXXNcgTbxCyRCLKbQkKQMhyUrfL
|
||||||
# 创建设备地址
|
# 创建设备地址
|
||||||
deviceUrl: https://iot-api.heclouds.com/device/create
|
deviceUrl: https://iot-api.heclouds.com/device
|
||||||
geo:
|
geo:
|
||||||
# 高德地图key web服务 手续费
|
# 高德地图key web服务 手续费
|
||||||
key: 834f1f029671d84272554528311ff0f1
|
key: 834f1f029671d84272554528311ff0f1
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
package com.ruoyi.common.utils.onenet;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class DeviceInfo {
|
||||||
|
|
||||||
|
private int code;
|
||||||
|
private Data data;
|
||||||
|
private String msg;
|
||||||
|
private String requestId;
|
||||||
|
|
||||||
|
@lombok.Data
|
||||||
|
public static class Data {
|
||||||
|
private long did;
|
||||||
|
private String pid;
|
||||||
|
private int accessPt;
|
||||||
|
private String authInfo;
|
||||||
|
private int dataPt;
|
||||||
|
private String name;
|
||||||
|
private String desc;
|
||||||
|
private int status; // 设备状态,0-离线,1-在线,2-未激活
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
private LocalDateTime activateTime;
|
||||||
|
private LocalDateTime lastTime;
|
||||||
|
private String imsi;
|
||||||
|
private String imei;
|
||||||
|
private String psk;
|
||||||
|
private String groupId;
|
||||||
|
private boolean enableStatus;
|
||||||
|
private List<String> tags;
|
||||||
|
private String lat;
|
||||||
|
private String lon;
|
||||||
|
private String authCode;
|
||||||
|
private String secKey;
|
||||||
|
private int chip;
|
||||||
|
private boolean obsv;
|
||||||
|
private boolean obsvSt;
|
||||||
|
private List<String> imsiOld;
|
||||||
|
private LocalDateTime imsiMt;
|
||||||
|
private int intelligentWay;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -19,4 +19,7 @@ public class AsDeviceVO {
|
||||||
/** 是否绑定 */
|
/** 是否绑定 */
|
||||||
@Excel(name = "是否绑定")
|
@Excel(name = "是否绑定")
|
||||||
private Boolean isBand;
|
private Boolean isBand;
|
||||||
|
|
||||||
|
@Excel(name = "在线状态")
|
||||||
|
private String onlineStatus;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.ruoyi.common.annotation.Log;
|
import com.ruoyi.common.annotation.Log;
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
import com.ruoyi.common.enums.BusinessType;
|
||||||
import com.ruoyi.system.domain.AsDevice;
|
import com.ruoyi.system.domain.AsDevice;
|
||||||
|
import com.ruoyi.system.domain.vo.AsDeviceVO;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -149,7 +150,7 @@ public interface AsDeviceMapper extends BaseMapper<AsDevice>
|
||||||
*/
|
*/
|
||||||
String getNoOrderDevice(@Param("timeStart") String timeStart, @Param("timeEnd") String timeEnd, @Param("areaId") String areaId);
|
String getNoOrderDevice(@Param("timeStart") String timeStart, @Param("timeEnd") String timeEnd, @Param("areaId") String areaId);
|
||||||
|
|
||||||
public int batchDisable(String[] sns);
|
// public int batchDisable(String[] sns);
|
||||||
|
|
||||||
|
|
||||||
AsDevice checkSNUnique(String sn);
|
AsDevice checkSNUnique(String sn);
|
||||||
|
@ -165,4 +166,9 @@ public interface AsDeviceMapper extends BaseMapper<AsDevice>
|
||||||
* 未绑定版本数
|
* 未绑定版本数
|
||||||
*/
|
*/
|
||||||
int countUnBoundNum(Long id);
|
int countUnBoundNum(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 未绑定版本数
|
||||||
|
*/
|
||||||
|
List<AsDeviceVO> selectAllDevice();
|
||||||
}
|
}
|
||||||
|
|
|
@ -2744,7 +2744,7 @@ public class AsDeviceServiceImpl extends ServiceImpl<AsDeviceMapper, AsDevice> i
|
||||||
CreateDeviceVo createDeviceVo = new CreateDeviceVo();
|
CreateDeviceVo createDeviceVo = new CreateDeviceVo();
|
||||||
createDeviceVo.setDevice_name(asDevice.getMac());
|
createDeviceVo.setDevice_name(asDevice.getMac());
|
||||||
createDeviceVo.setProduct_id(productId);
|
createDeviceVo.setProduct_id(productId);
|
||||||
String result = HttpUtils.sendPostWithToken(deviceUrl,JSON.toJSONString(createDeviceVo), Token.getToken());
|
String result = HttpUtils.sendPostWithToken(deviceUrl+"/create",JSON.toJSONString(createDeviceVo), Token.getToken());
|
||||||
log.info("【sn和mac号绑定】===>IOT请求调用结果:【{}】",result);
|
log.info("【sn和mac号绑定】===>IOT请求调用结果:【{}】",result);
|
||||||
JSONObject paramsObj = JSON.parseObject(result);
|
JSONObject paramsObj = JSON.parseObject(result);
|
||||||
String code = paramsObj.getString("code");
|
String code = paramsObj.getString("code");
|
||||||
|
|
|
@ -7,6 +7,7 @@ import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.ruoyi.common.constant.CacheConstants;
|
import com.ruoyi.common.constant.CacheConstants;
|
||||||
import com.ruoyi.common.constant.Constants;
|
import com.ruoyi.common.constant.Constants;
|
||||||
|
import com.ruoyi.common.constant.IotConstants;
|
||||||
import com.ruoyi.common.constant.ServiceConstants;
|
import com.ruoyi.common.constant.ServiceConstants;
|
||||||
import com.ruoyi.common.core.domain.entity.AsUser;
|
import com.ruoyi.common.core.domain.entity.AsUser;
|
||||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
||||||
|
@ -14,24 +15,34 @@ import com.ruoyi.common.core.redis.RedisCache;
|
||||||
import com.ruoyi.common.exception.ServiceException;
|
import com.ruoyi.common.exception.ServiceException;
|
||||||
import com.ruoyi.common.utils.CommonUtil;
|
import com.ruoyi.common.utils.CommonUtil;
|
||||||
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.DateUtils;
|
||||||
|
import com.ruoyi.common.utils.http.HttpUtils;
|
||||||
import com.ruoyi.common.utils.map.GeoUtils;
|
import com.ruoyi.common.utils.map.GeoUtils;
|
||||||
import com.ruoyi.common.utils.map.GpsCoordinateUtils;
|
import com.ruoyi.common.utils.map.GpsCoordinateUtils;
|
||||||
|
import com.ruoyi.common.utils.onenet.CreateDeviceVo;
|
||||||
|
import com.ruoyi.common.utils.onenet.DeviceInfo;
|
||||||
import com.ruoyi.common.utils.onenet.LogEntry;
|
import com.ruoyi.common.utils.onenet.LogEntry;
|
||||||
|
import com.ruoyi.common.utils.onenet.Token;
|
||||||
import com.ruoyi.common.utils.uuid.IdUtils;
|
import com.ruoyi.common.utils.uuid.IdUtils;
|
||||||
import com.ruoyi.system.domain.*;
|
import com.ruoyi.system.domain.*;
|
||||||
|
import com.ruoyi.system.domain.vo.AsDeviceVO;
|
||||||
|
import com.ruoyi.system.domain.vo.OperatingDataVo;
|
||||||
import com.ruoyi.system.mapper.*;
|
import com.ruoyi.system.mapper.*;
|
||||||
import com.ruoyi.system.service.*;
|
import com.ruoyi.system.service.*;
|
||||||
import com.wechat.pay.java.service.refund.model.Refund;
|
import com.wechat.pay.java.service.refund.model.Refund;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
|
import java.security.InvalidKeyException;
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
@ -94,6 +105,12 @@ public class EtTask {
|
||||||
@Resource
|
@Resource
|
||||||
private EtCouponClaimLogMapper etCouponClaimLogMapper;
|
private EtCouponClaimLogMapper etCouponClaimLogMapper;
|
||||||
|
|
||||||
|
@Value(value = "${iot.deviceUrl}")
|
||||||
|
private String deviceUrl;
|
||||||
|
|
||||||
|
@Value(value = "${iot.productId}")
|
||||||
|
private String productId;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 1.启动时判断是否有未取消预约的订单
|
* 1.启动时判断是否有未取消预约的订单
|
||||||
|
@ -740,10 +757,42 @@ public class EtTask {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 五分钟更新电动车的状态
|
* 更新设备的在线状态
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public void updateDeviceStatus(){
|
public void updateDeviceOnlineStatus(){
|
||||||
log.info("-------------------【定时任务】五分钟更新电动车的状态---开始----------------");
|
log.info("-------------------【定时任务】更新设备的在线状态---开始----------------");
|
||||||
|
List<AsDeviceVO> deviceVOS = asDeviceMapper.selectAllDevice();
|
||||||
|
for(AsDeviceVO deviceVO : deviceVOS){
|
||||||
|
CreateDeviceVo createDeviceVo = new CreateDeviceVo();
|
||||||
|
createDeviceVo.setDevice_name(deviceVO.getMac());
|
||||||
|
createDeviceVo.setProduct_id(productId);
|
||||||
|
try {
|
||||||
|
String param = "device_name=" + deviceVO.getMac() + "&product_id=" + productId;
|
||||||
|
String sendUrl = deviceUrl+"/detail" + "?"+param;
|
||||||
|
String result = HttpUtils.sendGetWithToken(sendUrl,null, Token.getToken());
|
||||||
|
log.info("【定时--更新设备的在线状态】===>IOT请求调用结果:【{}】",result);
|
||||||
|
DeviceInfo deviceInfo = JSON.parseObject(result, DeviceInfo.class);
|
||||||
|
int onlineStatus = Integer.parseInt(deviceVO.getOnlineStatus());
|
||||||
|
if(deviceInfo.getCode() != 0){
|
||||||
|
log.info("【定时--更新设备的在线状态】===>IOT请求调用失败");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
int onenetStatus = deviceInfo.getData().getStatus();
|
||||||
|
if(onenetStatus != onlineStatus ){
|
||||||
|
AsDevice device = new AsDevice();
|
||||||
|
device.setMac(deviceVO.getMac());
|
||||||
|
device.setOnlineStatus(onenetStatus+"");
|
||||||
|
int i = asDeviceMapper.updateAsDeviceByMac(device);
|
||||||
|
log.info("【定时--更新设备的在线状态】===>更新设备状态结果:【{}】",i);
|
||||||
|
}
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (NoSuchAlgorithmException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (InvalidKeyException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -171,6 +171,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
select count(1) from et_device where hardware_version_id = #{hardwareVersionId} and area_id is null
|
select count(1) from et_device where hardware_version_id = #{hardwareVersionId} and area_id is null
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectAllDevice" resultType="com.ruoyi.system.domain.vo.AsDeviceVO" >
|
||||||
|
select mac, sn, online_status onlineStatus from et_device
|
||||||
|
</select>
|
||||||
|
|
||||||
<insert id="insertAsDevice" parameterType="AsDevice" useGeneratedKeys="true" keyProperty="deviceId">
|
<insert id="insertAsDevice" parameterType="AsDevice" useGeneratedKeys="true" keyProperty="deviceId">
|
||||||
insert into et_device
|
insert into et_device
|
||||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
@ -362,6 +366,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<trim prefix="SET" suffixOverrides=",">
|
<trim prefix="SET" suffixOverrides=",">
|
||||||
<if test="sn != null">sn = #{sn},</if>
|
<if test="sn != null">sn = #{sn},</if>
|
||||||
<if test="hardwareVersionId != null">hardware_version_id = #{hardwareVersionId},</if>
|
<if test="hardwareVersionId != null">hardware_version_id = #{hardwareVersionId},</if>
|
||||||
|
<if test="onlineStatus != null">online_status = #{onlineStatus},</if>
|
||||||
</trim>
|
</trim>
|
||||||
where mac = #{mac}
|
where mac = #{mac}
|
||||||
</update>
|
</update>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user