Browse Source

修改微信小程序接口

yangxiaokun 3 years ago
parent
commit
65289230aa

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

@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.PostMapping;
 
 import javax.annotation.Resource;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 /**
@@ -58,13 +59,23 @@ public class UbiLpWxController extends BaseController {
     /**
      * 通过设备组ID查询设备列表
      */
-    @GetMapping("getDevices.do")
+    @GetMapping("getDevicesByGroupId.do")
     public ServerResponse getDevicesByGroupId(String groupId) {
         Set<String> groupIds = new HashSet<>(userPrivilegeService.getGroupIdsByUserId(userId()));
         if (!groupIds.contains(groupId)) return ServerResponse.warning("无权限");
         return ServerResponse.success(deviceBaseService.listByGroupIdWx(groupId));
     }
 
+    /**
+     * 分组查询设备列表
+     */
+    @GetMapping("getDevicesByUserId.do")
+    public ServerResponse getDevicesByGroupId() {
+        List<String> groupIds = userPrivilegeService.getGroupIdsByUserId(userId());
+        if (groupIds.isEmpty()) return ServerResponse.success(null);
+        return ServerResponse.success(deviceBaseService.listByGroupIdsWx(groupIds));
+    }
+
     /**
      * 扫码查询
      */

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

@@ -2,10 +2,13 @@ package com.zy.bms.mapper;
 
 import com.zy.bms.entity.DeviceBase;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zy.bms.pojo.vo.DeviceWxListVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
  * 设备静态信息 Mapper 接口
  *
@@ -29,4 +32,11 @@ public interface DeviceBaseMapper extends BaseMapper<DeviceBase> {
      * @param groupId 设备组
      */
     String getTypeByGroupId(String groupId);
+
+    /**
+     * 通过设备组集合查询全部设备
+     *
+     * @param groupIds 设备组集合
+     */
+    List<DeviceWxListVo> listByGroupIds(@Param("groupIds") List<String> groupIds);
 }

+ 35 - 0
src/main/java/com/zy/bms/pojo/vo/DeviceWxListVo.java

@@ -0,0 +1,35 @@
+package com.zy.bms.pojo.vo;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * 微信设备列表视图
+ *
+ * @author yang xiao kun
+ * create on 2021/8/30
+ */
+@Data
+public class DeviceWxListVo {
+    /**
+     * 设备码
+     */
+    private String openNum;
+    /**
+     * 设备组
+     */
+    private String groupId;
+    /**
+     * 设备类型
+     */
+    private String type;
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+    /**
+     * 状态 0:离线 1:在线
+     */
+    private Integer status;
+}

+ 10 - 0
src/main/java/com/zy/bms/service/IDeviceBaseService.java

@@ -2,8 +2,10 @@ package com.zy.bms.service;
 
 import com.zy.bms.entity.DeviceBase;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zy.bms.pojo.vo.DeviceWxListVo;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 设备静态信息 服务类
@@ -28,6 +30,14 @@ public interface IDeviceBaseService extends IService<DeviceBase> {
      */
     List listByGroupIdWx(String groupId);
 
+    /**
+     * 微信
+     * 通过设备组集合查询全部设备
+     *
+     * @param groupIds 设备组ID集合
+     */
+    Map<String, List<DeviceWxListVo>> listByGroupIdsWx(List<String> groupIds);
+
     /**
      * 微信
      * 获取设备详情

+ 14 - 4
src/main/java/com/zy/bms/service/impl/DeviceBaseServiceImpl.java

@@ -5,6 +5,7 @@ import com.zy.bms.common.Constant;
 import com.zy.bms.entity.DeviceBase;
 import com.zy.bms.entity.lp.LpInfoState;
 import com.zy.bms.mapper.DeviceBaseMapper;
+import com.zy.bms.pojo.vo.DeviceWxListVo;
 import com.zy.bms.service.IDeviceBaseService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zy.bms.service.lp.ILpInfoStateService;
@@ -13,6 +14,8 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 设备静态信息 服务实现类
@@ -38,24 +41,31 @@ public class DeviceBaseServiceImpl extends ServiceImpl<DeviceBaseMapper, DeviceB
     public List listByGroupIdWx(String groupId) {
         String type = baseMapper.getTypeByGroupId(groupId);
         switch (type) {
-            case Constant.TYPE.UBI: {
+            case Constant.DEVICE_TYPE.UBI: {
                 return ubiInfoStateService.listByGroupIdWx(groupId);
             }
-            case Constant.TYPE.LP: {
+            case Constant.DEVICE_TYPE.LP: {
                 return lpInfoStateService.listByGroupIdWx(groupId);
             }
         }
         return null;
     }
 
+    @Override
+    public Map<String, List<DeviceWxListVo>> listByGroupIdsWx(List<String> groupIds) {
+        List<DeviceWxListVo> list = baseMapper.listByGroupIds(groupIds);
+        if (list.isEmpty()) return null;
+        return list.stream().collect(Collectors.groupingBy(DeviceWxListVo::getGroupId));
+    }
+
     @Override
     public Object getDetailWx(String openNum) {
         String type = baseMapper.selectOne(new QueryWrapper<DeviceBase>().eq("open_num", openNum)).getType();
         switch (type) {
-            case Constant.TYPE.UBI: {
+            case Constant.DEVICE_TYPE.UBI: {
                 return ubiInfoStateService.getDetailWx(openNum);
             }
-            case Constant.TYPE.LP: {
+            case Constant.DEVICE_TYPE.LP: {
                 return lpInfoStateService.getOne(new QueryWrapper<LpInfoState>().eq("open_num", openNum));
             }
         }

+ 33 - 0
src/main/resources/mapper/DeviceBaseMapper.xml

@@ -9,4 +9,37 @@
     <select id="getTypeByGroupId" resultType="java.lang.String">
         SELECT type FROM device_base WHERE group_id = #{group_id} LIMIT 1
     </select>
+
+    <select id="listByGroupIds" resultType="com.zy.bms.pojo.vo.DeviceWxListVo">
+        SELECT
+        t1.open_num,
+        t1.group_id,
+        t1.type,
+        t2.update_time,
+        IF(TIMESTAMPDIFF(SECOND, t2.update_time, NOW()) > t2.wake_int * 3600 + 180,0,1) AS `status`
+        FROM
+        device_base t1
+        INNER JOIN lp_info_state t2 ON t1.open_num = t2.open_num AND t1.type = 'lupai'
+        WHERE
+         t1.group_id IN
+        <foreach collection="groupIds" open="(" separator="," close=")" item="groupId">
+            #{groupId}
+        </foreach>
+        UNION
+        SELECT
+        t1.open_num,
+        t1.group_id,
+        t1.type,
+        t2.update_time,
+        IF(TIMESTAMPDIFF(SECOND, t2.update_time, NOW()) > IFNULL(t2.freq, 0) + 180,0,1) AS `status`
+        FROM
+        device_base t1
+        INNER JOIN ubi_info_state t2 ON t1.open_num = t2.open_num AND t1.type = 'gnss'
+        WHERE
+        t1.group_id IN
+        <foreach collection="groupIds" open="(" separator="," close=")" item="groupId">
+            #{groupId}
+        </foreach>
+    </select>
+
 </mapper>

+ 1 - 1
src/main/resources/mapper/UserPrivilegeMapper.xml

@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zy.bms.mapper.UserPrivilegeMapper">
 
-    <select id="ownGroupIds" resultType="java.lang.String">
+    <select id="getGroupIdsByUserId" resultType="java.lang.String">
         SELECT
             group_id
         FROM