diff --git a/electripper-admin/src/main/resources/application.yml b/electripper-admin/src/main/resources/application.yml index 0a90f7a..9bb91c4 100644 --- a/electripper-admin/src/main/resources/application.yml +++ b/electripper-admin/src/main/resources/application.yml @@ -232,7 +232,7 @@ iot: # 推送消息token token: JZWgouXXNcgTbxCyRCLKbQkKQMhyUrfL # 创建设备地址 - deviceUrl: https://iot-api.heclouds.com/device/create + deviceUrl: https://iot-api.heclouds.com/device geo: # 高德地图key web服务 手续费 key: 834f1f029671d84272554528311ff0f1 diff --git a/electripper-common/src/main/java/com/ruoyi/common/utils/onenet/DeviceInfo.java b/electripper-common/src/main/java/com/ruoyi/common/utils/onenet/DeviceInfo.java new file mode 100644 index 0000000..f145958 --- /dev/null +++ b/electripper-common/src/main/java/com/ruoyi/common/utils/onenet/DeviceInfo.java @@ -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 tags; + private String lat; + private String lon; + private String authCode; + private String secKey; + private int chip; + private boolean obsv; + private boolean obsvSt; + private List imsiOld; + private LocalDateTime imsiMt; + private int intelligentWay; + + } +} diff --git a/electripper-system/src/main/java/com/ruoyi/system/domain/vo/AsDeviceVO.java b/electripper-system/src/main/java/com/ruoyi/system/domain/vo/AsDeviceVO.java index 51cb810..5931641 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/domain/vo/AsDeviceVO.java +++ b/electripper-system/src/main/java/com/ruoyi/system/domain/vo/AsDeviceVO.java @@ -19,4 +19,7 @@ public class AsDeviceVO { /** 是否绑定 */ @Excel(name = "是否绑定") private Boolean isBand; + + @Excel(name = "在线状态") + private String onlineStatus; } diff --git a/electripper-system/src/main/java/com/ruoyi/system/mapper/AsDeviceMapper.java b/electripper-system/src/main/java/com/ruoyi/system/mapper/AsDeviceMapper.java index ce421ca..d4dccef 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/mapper/AsDeviceMapper.java +++ b/electripper-system/src/main/java/com/ruoyi/system/mapper/AsDeviceMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.system.domain.AsDevice; +import com.ruoyi.system.domain.vo.AsDeviceVO; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -149,7 +150,7 @@ public interface AsDeviceMapper extends BaseMapper */ 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); @@ -165,4 +166,9 @@ public interface AsDeviceMapper extends BaseMapper * 未绑定版本数 */ int countUnBoundNum(Long id); + + /** + * 未绑定版本数 + */ + List selectAllDevice(); } diff --git a/electripper-system/src/main/java/com/ruoyi/system/service/impl/AsDeviceServiceImpl.java b/electripper-system/src/main/java/com/ruoyi/system/service/impl/AsDeviceServiceImpl.java index 02d8012..e4bcfcb 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/service/impl/AsDeviceServiceImpl.java +++ b/electripper-system/src/main/java/com/ruoyi/system/service/impl/AsDeviceServiceImpl.java @@ -2744,7 +2744,7 @@ public class AsDeviceServiceImpl extends ServiceImpl i CreateDeviceVo createDeviceVo = new CreateDeviceVo(); createDeviceVo.setDevice_name(asDevice.getMac()); 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); JSONObject paramsObj = JSON.parseObject(result); String code = paramsObj.getString("code"); diff --git a/electripper-system/src/main/java/com/ruoyi/system/task/EtTask.java b/electripper-system/src/main/java/com/ruoyi/system/task/EtTask.java index 27bb948..27b1717 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/task/EtTask.java +++ b/electripper-system/src/main/java/com/ruoyi/system/task/EtTask.java @@ -7,6 +7,7 @@ import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.constant.CacheConstants; import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.constant.IotConstants; import com.ruoyi.common.constant.ServiceConstants; import com.ruoyi.common.core.domain.entity.AsUser; 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.utils.CommonUtil; 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.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.Token; import com.ruoyi.common.utils.uuid.IdUtils; 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.service.*; import com.wechat.pay.java.service.refund.model.Refund; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.math.RoundingMode; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.*; @@ -94,6 +105,12 @@ public class EtTask { @Resource private EtCouponClaimLogMapper etCouponClaimLogMapper; + @Value(value = "${iot.deviceUrl}") + private String deviceUrl; + + @Value(value = "${iot.productId}") + private String productId; + /** * 1.启动时判断是否有未取消预约的订单 @@ -740,10 +757,42 @@ public class EtTask { } /** - * 五分钟更新电动车的状态 + * 更新设备的在线状态 * */ - public void updateDeviceStatus(){ - log.info("-------------------【定时任务】五分钟更新电动车的状态---开始----------------"); + public void updateDeviceOnlineStatus(){ + log.info("-------------------【定时任务】更新设备的在线状态---开始----------------"); + List 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(); + } + } } } diff --git a/electripper-system/src/main/resources/mapper/system/AsDeviceMapper.xml b/electripper-system/src/main/resources/mapper/system/AsDeviceMapper.xml index 4ca4157..a3c8730 100644 --- a/electripper-system/src/main/resources/mapper/system/AsDeviceMapper.xml +++ b/electripper-system/src/main/resources/mapper/system/AsDeviceMapper.xml @@ -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 + + insert into et_device @@ -362,6 +366,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sn = #{sn}, hardware_version_id = #{hardwareVersionId}, + online_status = #{onlineStatus}, where mac = #{mac}