瀏覽代碼

修复普适性相关BUG

yangxiaokun 3 年之前
父節點
當前提交
1f8eb82b46

+ 1 - 1
src/main/java/com/zy/bms/common/aspect/LogAspect.java

@@ -36,7 +36,7 @@ public class LogAspect {
     }
 
     private String buildMsg(ProceedingJoinPoint joinPoint) {
-        return "全局异常拦截 -- " + DateTimeUtil.now(DateTimeUtil.Pattern_YDMHMS)
+        return "全局异常拦截 -- " + DateTimeUtil.now(DateTimeUtil.Pattern_YMDHMS)
                 + ": Class:" + joinPoint.getSignature().getDeclaringTypeName()
                 + " Method:" + joinPoint.getSignature().getName()
                 + " Args:" + Arrays.toString(joinPoint.getArgs());

+ 2 - 4
src/main/java/com/zy/bms/entity/DeviceBase.java

@@ -1,6 +1,5 @@
 package com.zy.bms.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
@@ -39,9 +38,9 @@ public class DeviceBase implements Serializable {
     private String password;
 
     /**
-     * 设备组
+     * 设备组ID
      */
-    private String group;
+    private String groupId;
 
     /**
      * 设备SN码
@@ -58,5 +57,4 @@ public class DeviceBase implements Serializable {
      */
     private LocalDateTime updateTime;
 
-
 }

+ 12 - 9
src/main/java/com/zy/bms/handler/MqttCallbackHandler.java

@@ -21,6 +21,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
+import java.time.LocalDateTime;
 import java.util.Map;
 
 /**
@@ -57,6 +58,8 @@ public class MqttCallbackHandler {
      * @param payload 消息内容
      */
     public void handle(String topic, String payload) {
+        //设备码
+        String openNum = Constant.splitOpenNum(topic);
         MqttDTO mqttDTO;
         try {
             //解析消息
@@ -76,12 +79,12 @@ public class MqttCallbackHandler {
             }
             // 心跳包
             case Constant.M.UBI_HEARTBEAT: {
-                heartbeatHandler(mqttDTO);
+                heartbeatHandler(openNum, mqttDTO);
                 break;
             }
             // 获取设备设置信息
             case Constant.M.UBI_SET_INFO: {
-                deviceSetHandler(topic, mqttDTO);
+                deviceSetHandler(openNum, mqttDTO);
                 break;
             }
         }
@@ -103,7 +106,7 @@ public class MqttCallbackHandler {
         if (device == null) {
             device = new DeviceBase();
             device.setOpenNum(openNum);
-            device.setGroup(group);
+            device.setGroupId(group);
             device.setUsername("IMEI" + openNum);
             device.setPassword(MD5Util.encode(openNum));
             device.setSn("SN" + openNum);
@@ -118,15 +121,16 @@ public class MqttCallbackHandler {
     /**
      * 心跳协议
      */
-    private void heartbeatHandler(MqttDTO mqttDTO) {
+    private void heartbeatHandler(String openNum, MqttDTO mqttDTO) {
         try {
-            UbiInfoRecord entity = TransformEntity.tsf2UbiInfoRecord(mqttDTO);
+            UbiInfoRecord entity = TransformEntity.tsf2UbiInfoRecord(openNum, mqttDTO);
             //存储记录
             heartbeatRecordService.save(entity);
             //更新最新的记录
             UbiInfoState ubiInfoState = BeanUtil.cast(entity, UbiInfoState.class);
-            deviceDynamicService.saveOrUpdate(ubiInfoState, new QueryWrapper<UbiInfoState>()
-                    .eq("open_num", ubiInfoState.getOpenNum()));
+            ubiInfoState.setUpdateTime(LocalDateTime.now());
+            deviceDynamicService.saveOrUpdate(ubiInfoState,
+                    new QueryWrapper<UbiInfoState>().eq("open_num", ubiInfoState.getOpenNum()));
         } catch (Exception e) {
             log.error("解析设备心跳消息异常", e);
             throw new ApiRuntimeException("处理设备上传位置定位信息出错");
@@ -137,8 +141,7 @@ public class MqttCallbackHandler {
      * 普适性-设备设置信息
      */
     @SuppressWarnings("unchecked")
-    private void deviceSetHandler(String topic, MqttDTO mqttDTO) {
-        String openNum = Constant.splitOpenNum(topic);
+    private void deviceSetHandler(String openNum, MqttDTO mqttDTO) {
         // ntrip数据链路设置
         UbiNtrip client = TransformEntity.tsf2UbiNtrip((Map<String, String>) mqttDTO.getData().get("ntripclient"));
         UbiNtrip server = TransformEntity.tsf2UbiNtrip((Map<String, String>) mqttDTO.getData().get("ntripserver"));

+ 2 - 2
src/main/java/com/zy/bms/handler/TransformEntity.java

@@ -20,9 +20,9 @@ public class TransformEntity {
     /**
      * 转换为 普适性 - 心跳包记录
      */
-    public static UbiInfoRecord tsf2UbiInfoRecord(MqttDTO dto) {
+    public static UbiInfoRecord tsf2UbiInfoRecord(String openNum, MqttDTO dto) {
         UbiInfoRecord result = new UbiInfoRecord();
-        result.setOpenNum(dto.getString("deviceid"));
+        result.setOpenNum(openNum);
         result.setFreq(dto.getInt("freq"));
         result.setPowerVolt(dto.getDouble("powervolt"));
         result.setSatNum(dto.getInt("satnum"));

+ 4 - 0
src/main/java/com/zy/bms/mapper/lp/LpInfoStateMapper.java

@@ -2,6 +2,8 @@ package com.zy.bms.mapper.lp;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zy.bms.entity.lp.LpInfoState;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
 
 /**
  * <p>
@@ -11,6 +13,8 @@ import com.zy.bms.entity.lp.LpInfoState;
  * @author chenyi
  * @since 2021-06-22
  */
+@Mapper
+@Repository
 public interface LpInfoStateMapper extends BaseMapper<LpInfoState> {
 
 }

+ 6 - 1
src/main/java/com/zy/bms/pojo/dto/MqttDTO.java

@@ -94,7 +94,12 @@ public class MqttDTO {
      * 获取 日期数据 数据
      */
     public LocalDateTime getDate(String key) {
-        return isNull(key) ? null : DateTimeUtil.strToTime(data.get(key).toString());
+        if (isNull(key)) return null;
+        try {
+            return DateTimeUtil.strToTime(data.get(key).toString(), DateTimeUtil.Pattern_YMDHMS);
+        } catch (Exception e) {
+            return DateTimeUtil.strToTime(data.get(key).toString(), DateTimeUtil.Pattern_YMDHMS2);
+        }
     }
 
     /**

+ 1 - 1
src/main/java/com/zy/bms/service/impl/PostMqttMsgServiceImpl.java

@@ -45,7 +45,7 @@ public class PostMqttMsgServiceImpl implements IPostMqttMsgService {
         MqttDTO mqttDTO = new MqttDTO(Constant.M.HANDLE_REGISTER);
         mqttDTO.put("regnum", device.getOpenNum())
                 .put("password", device.getPassword())
-                .put("group", device.getGroup())
+                .put("group", device.getGroupId())
                 .put("sn", device.getSn());
         sendMqttMessage(Constant.TOPIC.REGISTER_CLIENT, mqttDTO.json());
     }

+ 4 - 3
src/main/java/com/zy/bms/utils/DateTimeUtil.java

@@ -11,7 +11,8 @@ import java.time.format.DateTimeFormatter;
  */
 public class DateTimeUtil {
 
-    public static final String Pattern_YDMHMS = "yyyy-MM-dd HH:mm:ss";
+    public static final String Pattern_YMDHMS = "yyyy-MM-dd HH:mm:ss";
+    public static final String Pattern_YMDHMS2 = "yyyy-M-dd HH:mm:ss";
     public static final String Pattern_YDM = "yyyy-MM-dd";
 
     /**
@@ -19,8 +20,8 @@ public class DateTimeUtil {
      *
      * @param str 字符串
      */
-    public static LocalDateTime strToTime(String str) {
-        return LocalDateTime.parse(str, DateTimeFormatter.ofPattern(DateTimeUtil.Pattern_YDMHMS));
+    public static LocalDateTime strToTime(String str, String pattern) {
+        return LocalDateTime.parse(str, DateTimeFormatter.ofPattern(pattern));
     }
 
     /**

+ 28 - 0
src/test/java/com/zy/bms/SendMsg.java

@@ -0,0 +1,28 @@
+package com.zy.bms;
+
+import com.zy.bms.config.mqtt.MqttGateway;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import javax.annotation.Resource;
+
+/**
+ * @author yang xiao kun
+ * create on 2021/7/12
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = BmsApplication.class,webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+public class SendMsg {
+    @Resource
+    private MqttGateway mqttGateway;
+
+    @Test
+    public void test() {
+        String msg1 = "{m: \"10\",data:{regnum:\"yxktest\"}}";
+        String msg2 = "{m:\"21\",data:{timee:\"2021-3-15 13:23:14\",freq:\"300\",powervolt:\"12.5\",satnum:\"12\",signal4g:\"26\",deviceid:\"none\",lon:\"104.456123\",lat:\"40.13654\",version:\"1.1.2\"}}";
+        String msg3 = "{m:\"30\",data:{deviceid:\"xxxx\",ntripserver:{en:\"on\",host:\"ntrip.ailishi.org\",port:\"2101\",mountpoint:\"xxx\",password:\"xxxx\",linkF:\"true\"},ntripclient:{en:\"on\",host:\"ntrip.ailishi.org\",port:\"2101\",mountpoint:\"xxx\",user:\"xxx\",password:\"xxxx\",linkF:\"true\"},tcplink1:{en:\"on\",host:\"111.2.1.34\",port:\"1234\",type:\"xyz\",linkF:\"true\"},tcplink2:{en:\"off\"},tcplink3:{en:\"on\",host:\"111.2.1.36\",port:\"3456\",type:\"xyz\",linkF:\"true\"}}}";
+        mqttGateway.sendMsgToMqtt(msg3,"$dtx2/IMEIyxktest");
+    }
+}