Browse Source

修改路牌的接口

yangxiaokun 3 years ago
parent
commit
a8025bb089

+ 12 - 0
src/main/java/com/zy/bms/controller/UbiLpWxController.java

@@ -5,10 +5,12 @@ import com.zy.bms.common.ServerResponse;
 import com.zy.bms.entity.DeviceBase;
 import com.zy.bms.entity.UserPrivilege;
 import com.zy.bms.entity.lp.LpInfoState;
+import com.zy.bms.pojo.io.LpInfoRecordIO;
 import com.zy.bms.service.IDeviceBaseService;
 import com.zy.bms.service.IGroupService;
 import com.zy.bms.service.IPostMqttMsgService;
 import com.zy.bms.service.IUserPrivilegeService;
+import com.zy.bms.service.lp.ILpInfoRecordService;
 import com.zy.bms.service.lp.ILpInfoStateService;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -34,6 +36,8 @@ public class UbiLpWxController extends BaseController {
     private IPostMqttMsgService postMqttMsgService;
     @Resource
     private ILpInfoStateService lpInfoStateService;
+    @Resource
+    private ILpInfoRecordService lpInfoRecordService;
 
     /**
      * 查看用户拥有权限的设备组列表
@@ -113,4 +117,12 @@ public class UbiLpWxController extends BaseController {
         postMqttMsgService.requestHeartbeatUbi(openNum);
         return ServerResponse.success();
     }
+
+    /**
+     * 查询路牌设备历史记录
+     */
+    @GetMapping("getLpHistoryData.do")
+    public ServerResponse getLpHistoryData(LpInfoRecordIO io) {
+        return ServerResponse.success(lpInfoRecordService.getHistoryList(io));
+    }
 }

+ 0 - 35
src/main/java/com/zy/bms/entity/lp/LpInfoRecord.java

@@ -65,46 +65,11 @@ public class LpInfoRecord implements Serializable {
      */
     private String temp;
 
-    /**
-     * 经度
-     */
-    private Double lon;
-
-    /**
-     * 纬度
-     */
-    private Double lat;
-
-    /**
-     * 经度(Gcj)
-     */
-    private Double lonGcj;
-
-    /**
-     * 纬度(Gcj)
-     */
-    private Double latGcj;
-
-    /**
-     * 格式化位置
-     */
-    private String site;
-
-    /**
-     * 定位模式 1:GPS 2:基站
-     */
-    private Integer mode;
-
     /**
      * 上传类型
      */
     private String dataType;
 
-    /**
-     * 状态 0:离线 1:在线
-     */
-    private Integer status;
-
     /**
      * 数据上传时间
      */

+ 30 - 27
src/main/java/com/zy/bms/handler/LpHandlers.java

@@ -36,40 +36,34 @@ public class LpHandlers {
      * 基本信息上传
      */
     public void deviceInfoHandler(String openNum, MqttDTO mqttDTO) {
-        try {
-            LpInfoState local = lpInfoStateService.getByOpenNum(openNum);
-            //存储历史记录
-            LpInfoRecord record = TransformEntity.tsf2LpInfoRecord(openNum, mqttDTO);
-            lpInfoRecordService.save(record);
-            //远程数据
-            LpInfoState remote = BeanUtil.cast(record, LpInfoState.class);
-            remote.setUpdateTime(record.getUploadTime());
-            //若数据库中不存在设备信息直接插入
-            if (local == null) {
-                lpInfoStateService.save(remote);
-                return;
-            }
-            setWakeAndThreshLp(openNum, local, remote);
-            //更新数据库设备状态信息
-            lpInfoStateService.update(remote, new QueryWrapper<LpInfoState>().eq("open_num", openNum));
-        } catch (Exception e) {
-            log.error("路牌上传基本信息异常", e);
+        //本地数据库信息
+        LpInfoState local = lpInfoStateService.getByOpenNum(openNum);
+        //接收远程设备信息
+        LpInfoRecord record = TransformEntity.tsf2LpInfoRecord(openNum, mqttDTO);
+        //存储历史记录
+        lpInfoRecordService.save(record);
+        //转换状态数据
+        LpInfoState remote = BeanUtil.cast(record, LpInfoState.class);
+        remote.setUpdateTime(record.getUploadTime());
+        //若数据库中不存在设备信息直接插入
+        if (local == null) {
+            lpInfoStateService.save(remote);
+            return;
         }
+        setWakeAndThreshLp(openNum, local, remote);
+        //更新数据库设备状态信息
+        updateLpInfoStateService(openNum, remote);
     }
 
     /**
      * 定位信息上传
      */
     public void deviceLocationHandler(String openNum, MqttDTO mqttDTO) {
-        try {
-            LpInfoState device = TransformEntity.tsf2LpInfoState(openNum, mqttDTO);
-            //收到定位信息,修改状态为0
-            device.setUpdateLocationFlag(0);
-            // 更新数据库设备状态信息
-            lpInfoStateService.update(device, new QueryWrapper<LpInfoState>().eq("open_num", openNum));
-        } catch (Exception e) {
-            log.error("路牌上传位置信息异常", e);
-        }
+        LpInfoState device = TransformEntity.tsf2LpInfoStateLocation(openNum, mqttDTO);
+        //收到定位信息,修改状态为0
+        device.setUpdateLocationFlag(0);
+        // 更新数据库设备状态信息
+        updateLpInfoStateService(openNum, device);
     }
 
     /**
@@ -96,4 +90,13 @@ public class LpHandlers {
         dto.setSetf((dto.getWakeInt() != null || dto.getThresh() != null) ? Constant.STATUS.TRUE : Constant.STATUS.FALSE);
         postMqttMsgService.setWakeAndThreshLp(dto);
     }
+
+    /**
+     * 更新状态信息
+     */
+    private void updateLpInfoStateService(String openNum, LpInfoState lpInfoState) {
+        //不更新设备码字段
+        lpInfoState.setOpenNum(null);
+        lpInfoStateService.update(lpInfoState, new QueryWrapper<LpInfoState>().eq("open_num", openNum));
+    }
 }

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

@@ -90,31 +90,15 @@ public class TransformEntity {
         result.setAnglez(dto.getString("anglez"));
         result.setTemp(dto.getString("temp"));
         result.setUploadTime(LocalDateTime.now());
-        //经纬度
-        Double lon = dto.getDouble("lon");
-        Double lat = dto.getDouble("lat");
-        if (lon != null && lat != null) {
-            result.setMode(dto.getInt("mode"));
-            result.setLon(lon);
-            result.setLat(lat);
-            //转换后的坐标
-            double[] gcj = CoordTransformUtil.wgs84toGcj02(lon, lat);
-            result.setLonGcj(gcj[0]);
-            result.setLatGcj(gcj[1]);
-            // 逆地理位置解析
-            result.setSite(GaoDeApiUtil.regeo(lon.toString(), lat.toString()));
-        }
         return result;
     }
 
     /**
      * 路牌 - 状态信息
      */
-    public static LpInfoState tsf2LpInfoState(String openNum, MqttDTO dto) {
+    public static LpInfoState tsf2LpInfoStateLocation(String openNum, MqttDTO dto) {
         LpInfoState result = new LpInfoState();
         result.setOpenNum(openNum);
-        result.setUpdateTime(LocalDateTime.now());
-        //经纬度
         Double lon = dto.getDouble("lon");
         Double lat = dto.getDouble("lat");
         result.setMode(dto.getInt("mode"));
@@ -126,6 +110,7 @@ public class TransformEntity {
         result.setLatGcj(gcj[1]);
         // 逆地理位置解析
         result.setSite(GaoDeApiUtil.regeo(lon.toString(), lat.toString()));
+        result.setUpdateTime(LocalDateTime.now());
         return result;
     }
 }

+ 11 - 16
src/main/java/com/zy/bms/handler/UbiHandlers.java

@@ -43,22 +43,17 @@ public class UbiHandlers {
      * 心跳协议
      */
     public void heartbeatHandler(String openNum, MqttDTO mqttDTO) {
-        try {
-            UbiInfoRecord entity = TransformEntity.tsf2UbiInfoRecord(openNum, mqttDTO);
-            //存储记录
-            heartbeatRecordService.save(entity);
-            //更新最新的记录
-            UbiInfoState ubiInfoState = BeanUtil.cast(entity, UbiInfoState.class);
-            //设置更新时间
-            ubiInfoState.setUpdateTime(LocalDateTime.now());
-            //设置在线状态
-            ubiInfoState.setStatus(1);
-            deviceDynamicService.saveOrUpdate(ubiInfoState,
-                    new QueryWrapper<UbiInfoState>().eq("open_num", ubiInfoState.getOpenNum()));
-        } catch (Exception e) {
-            log.error("解析设备心跳消息异常", e);
-            throw new ApiRuntimeException("处理设备上传位置定位信息出错");
-        }
+        UbiInfoRecord entity = TransformEntity.tsf2UbiInfoRecord(openNum, mqttDTO);
+        //存储记录
+        heartbeatRecordService.save(entity);
+        //更新最新的记录
+        UbiInfoState ubiInfoState = BeanUtil.cast(entity, UbiInfoState.class);
+        //设置更新时间
+        ubiInfoState.setUpdateTime(LocalDateTime.now());
+        //设置在线状态
+        ubiInfoState.setStatus(1);
+        deviceDynamicService.saveOrUpdate(ubiInfoState,
+                new QueryWrapper<UbiInfoState>().eq("open_num", ubiInfoState.getOpenNum()));
     }
 
     /**

+ 10 - 0
src/main/java/com/zy/bms/mapper/lp/LpInfoRecordMapper.java

@@ -2,6 +2,10 @@ package com.zy.bms.mapper.lp;
 
 import com.zy.bms.entity.lp.LpInfoRecord;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zy.bms.pojo.io.LpInfoRecordIO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 设备-路牌-历史记录表 Mapper 接口
@@ -11,4 +15,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface LpInfoRecordMapper extends BaseMapper<LpInfoRecord> {
 
+    /**
+     * 查询历史数据记录
+     *
+     * @param io 查询参数
+     */
+    List<LpInfoRecord> getHistoryList(@Param("io") LpInfoRecordIO io);
 }

+ 33 - 0
src/main/java/com/zy/bms/pojo/io/LpInfoRecordIO.java

@@ -0,0 +1,33 @@
+package com.zy.bms.pojo.io;
+
+import lombok.Data;
+
+/**
+ * 路牌-历史记录入参
+ *
+ * @author yang xiao kun
+ * create on 2021/8/27
+ */
+@Data
+public class LpInfoRecordIO {
+
+    /**
+     * 开始时间
+     */
+    private String beginTime;
+
+    /**
+     * 结束时间
+     */
+    private String endTime;
+
+    /**
+     * 设备码
+     */
+    private String openNum;
+
+    /**
+     * 数据量大小
+     */
+    private Integer size;
+}

+ 0 - 2
src/main/java/com/zy/bms/service/IPostMqttMsgService.java

@@ -4,8 +4,6 @@ import com.zy.bms.entity.DeviceBase;
 import com.zy.bms.pojo.dto.WakeAndThreshLpDTO;
 import com.zy.bms.pojo.io.set.SetIO;
 
-import java.math.BigDecimal;
-
 /**
  * 向设备发送协议消息 服务类
  *

+ 0 - 2
src/main/java/com/zy/bms/service/IUserPrivilegeService.java

@@ -8,9 +8,7 @@ import java.util.List;
 import java.util.Map;
 
 /**
- * <p>
  * 用户查看手机设备权限表 服务类
- * </p>
  *
  * @author chenyi
  * @since 2021-07-13

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

@@ -11,7 +11,6 @@ import com.zy.bms.service.IPostMqttMsgService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.math.BigDecimal;
 
 /**
  * 向设备发送协议消息 服务类

+ 9 - 2
src/main/java/com/zy/bms/service/lp/ILpInfoRecordService.java

@@ -2,15 +2,22 @@ package com.zy.bms.service.lp;
 
 import com.zy.bms.entity.lp.LpInfoRecord;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zy.bms.pojo.io.LpInfoRecordIO;
+
+import java.util.List;
 
 /**
- * <p>
  * 设备-路牌-历史记录表 服务类
- * </p>
  *
  * @author chenyi
  * @since 2021-08-26
  */
 public interface ILpInfoRecordService extends IService<LpInfoRecord> {
 
+    /**
+     * 获取该设备历史记录数据
+     *
+     * @param io 入参
+     */
+    List<LpInfoRecord> getHistoryList(LpInfoRecordIO io);
 }

+ 7 - 0
src/main/java/com/zy/bms/service/lp/impl/LpInfoRecordServiceImpl.java

@@ -2,10 +2,13 @@ package com.zy.bms.service.lp.impl;
 
 import com.zy.bms.entity.lp.LpInfoRecord;
 import com.zy.bms.mapper.lp.LpInfoRecordMapper;
+import com.zy.bms.pojo.io.LpInfoRecordIO;
 import com.zy.bms.service.lp.ILpInfoRecordService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 设备-路牌-历史记录表 服务实现类
  *
@@ -15,4 +18,8 @@ import org.springframework.stereotype.Service;
 @Service
 public class LpInfoRecordServiceImpl extends ServiceImpl<LpInfoRecordMapper, LpInfoRecord> implements ILpInfoRecordService {
 
+    @Override
+    public List<LpInfoRecord> getHistoryList(LpInfoRecordIO io) {
+        return baseMapper.getHistoryList(io);
+    }
 }

+ 16 - 0
src/main/resources/mapper/LpInfoRecordMapper.xml

@@ -2,4 +2,20 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zy.bms.mapper.lp.LpInfoRecordMapper">
 
+    <select id="getHistoryList" resultType="com.zy.bms.entity.lp.LpInfoRecord">
+        SELECT
+        x,y,z,anglex,angley,anglez
+        FROM
+        lp_info_record
+        WHERE
+        open_num = #{openNum}
+        <if test="io.beginTime != null and io.beginTime != ''">
+            AND upload_time >= #{io.beginTime}
+        </if>
+        <if test="io.endTime != null and io.endTime != ''">
+            AND upload_time &lt;= #{io.endTime}
+        </if>
+        ORDER BY upload_time DESC
+        LIMIT ${io.size}
+    </select>
 </mapper>