From 20cf08efd6f966f53f4dfebafb586b127204415a Mon Sep 17 00:00:00 2001
From: zhanzhiqin <895896009@qq.com>
Date: 星期二, 04 一月 2022 14:55:16 +0800
Subject: [PATCH] 大气设备查询

---
 dao/src/main/resources/mapper/AirEquipmentMapper.xml                                   |   55 ++++++++++++++++-----------
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirDataService.java            |    2 
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentService.java       |   25 ++++++------
 dao/src/main/java/com/sandu/ximon/dao/mapper/AirEquipmentMapper.java                   |    4 +-
 ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirEquipmentController.java |   17 +++-----
 5 files changed, 55 insertions(+), 48 deletions(-)

diff --git a/dao/src/main/java/com/sandu/ximon/dao/mapper/AirEquipmentMapper.java b/dao/src/main/java/com/sandu/ximon/dao/mapper/AirEquipmentMapper.java
index 7c334ff..3de24eb 100644
--- a/dao/src/main/java/com/sandu/ximon/dao/mapper/AirEquipmentMapper.java
+++ b/dao/src/main/java/com/sandu/ximon/dao/mapper/AirEquipmentMapper.java
@@ -12,9 +12,9 @@
  */
 @Mapper
 public interface AirEquipmentMapper extends BaseMapper<AirEquipment> {
-    List<AirEquipmentBo> listAirEquipment();
+    List<Long> listAirEquipmentId(String keyword, Long clientId);
 
-    List<AirEquipmentBo> listAirEquipmentByKeyword(String keyword);
+    List<AirEquipmentBo> listAirEquipmentByIds(List<Long> airEquipmentIdList);
 }
 
 
diff --git a/dao/src/main/resources/mapper/AirEquipmentMapper.xml b/dao/src/main/resources/mapper/AirEquipmentMapper.xml
index c087a54..485d81a 100644
--- a/dao/src/main/resources/mapper/AirEquipmentMapper.xml
+++ b/dao/src/main/resources/mapper/AirEquipmentMapper.xml
@@ -16,31 +16,42 @@
         mac
     </sql>
 
-    <select id="listAirEquipment" resultType="com.sandu.ximon.dao.bo.AirEquipmentBo">
+    <select id="listAirEquipmentId" resultType="java.lang.Long">
         SELECT
-	        t1.*, t2.pole_id,
-	        t3.pole_name
+        MAX(t1.id) AS air_equipment_id
         FROM
-	        air_equipment t1
-        LEFT JOIN pole_binding t2 ON t1.mac = t2.device_code
-        AND t2.device_type = 4
-        LEFT JOIN pole t3 ON t3.id = t2.pole_id
-		ORDER BY
-			t1.id DESC
+        air_equipment t1
+        <if test="keyword != null and keyword != ''">
+            LEFT JOIN pole_binding t2 ON t1.mac = t2.device_code
+            AND t2.device_type = 3
+            LEFT JOIN pole t3 ON t3.id = t2.pole_id
+        </if>
+        <where>
+            <if test="keyword != null and keyword != ''">
+                AND t3.pole_name LIKE CONCAT(CONCAT('%', #{keyword}), '%')
+            </if>
+            <if test="clientId != null">
+                AND t3.client_id = #{clientId}
+            </if>
+        </where>
+        GROUP BY
+        t1.mac
     </select>
-    <select id="listAirEquipmentByKeyword" resultType="com.sandu.ximon.dao.bo.AirEquipmentBo">
-        SELECT
-	        t1.*, t2.pole_id,
-	        t3.pole_name
-        FROM
-	        air_equipment t1
-        LEFT JOIN pole_binding t2 ON t1.mac = t2.device_code
-        AND t2.device_type = 4
-        LEFT JOIN pole t3 ON t3.id = t2.pole_id
-        WHERE
-		    t3.pole_name LIKE CONCAT(CONCAT('%', #{keyword}), '%')
-		ORDER BY
-			t1.id DESC
 
+    <select id="listAirEquipmentByIds" resultType="com.sandu.ximon.dao.bo.AirEquipmentBo">
+        SELECT
+        t1.*, t2.pole_id,
+        t3.pole_name
+        FROM
+        air_equipment t1
+        LEFT JOIN pole_binding t2 ON t1.mac = t2.device_code
+        AND t2.device_type = 3
+        LEFT JOIN pole t3 ON t3.id = t2.pole_id
+        <where>
+            t1.id IN
+            <foreach collection="airEquipmentIdList" open="(" close=")" item="airId" separator=",">
+                #{airId}
+            </foreach>
+        </where>
     </select>
 </mapper>
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirEquipmentController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirEquipmentController.java
index b75bc35..33be8db 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirEquipmentController.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirEquipmentController.java
@@ -1,6 +1,7 @@
 package com.sandu.ximon.admin.controller;
 
 import com.sandu.common.domain.ResponseVO;
+import com.sandu.common.object.BaseConditionVO;
 import com.sandu.common.util.ResponseUtil;
 import com.sandu.ximon.admin.service.AirEquipmentService;
 import com.sandu.ximon.dao.bo.AirEquipmentBo;
@@ -19,21 +20,15 @@
 public class AirEquipmentController {
     private final AirEquipmentService airEquipmentService;
 
-    @GetMapping
-    public ResponseVO<Object> listAirEquipment() {
-        List<AirEquipmentBo> list = airEquipmentService.listAirEquipment();
-        return ResponseUtil.success(list);
-    }
-
     /**
-     * 妯$硦鏌ヨ
+     * 鏌ヨ澶ф皵璁惧
      *
      * @return
      */
-    @GetMapping("/listAirEquipmentByKeyword/{keyword}")
-    public ResponseVO<Object> listAirEquipmentByKeyword(@PathVariable String keyword) {
-        List<AirEquipmentBo> list = airEquipmentService.listAirEquipmentByKeyword(keyword);
-        return ResponseUtil.success(list);
+    @GetMapping("/listAirEquipment")
+    public ResponseVO<Object> listAirEquipmentByKeyword(BaseConditionVO baseConditionVO, @RequestParam(required = false) String keyword) {
+        List<AirEquipmentBo> list = airEquipmentService.listAirEquipmentByKeyword(baseConditionVO, keyword);
+        return ResponseUtil.successPage(list);
     }
 
     @PostMapping("/delete/{id}")
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirDataService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirDataService.java
index 5cabbbc..efe3bc9 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirDataService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirDataService.java
@@ -52,7 +52,7 @@
         PageHelper.startPage(baseConditionVO.getPageNo(),baseConditionVO.getPageSize());
         List<Long> listAirId = baseMapper.listAirId(keyword,clientId);
         if(CollUtil.isEmpty(listAirId)){
-            return null;
+            return CollUtil.newArrayList();
         }
         List<AirDataBo> airDataBos = baseMapper.listAirDataByIds(listAirId);
         return airDataBos;
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentService.java
index 69b2386..2bb2a4b 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentService.java
@@ -1,9 +1,14 @@
 package com.sandu.ximon.admin.service;
 
+import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.pagehelper.PageHelper;
 import com.sandu.common.execption.BusinessException;
+import com.sandu.common.object.BaseConditionVO;
 import com.sandu.common.service.impl.BaseServiceImpl;
+import com.sandu.ximon.admin.security.SecurityUtils;
+import com.sandu.ximon.dao.bo.AirDataBo;
 import com.sandu.ximon.dao.bo.AirEquipmentBo;
 import com.sandu.ximon.dao.domain.AirData;
 import com.sandu.ximon.dao.domain.AirEquipment;
@@ -21,23 +26,19 @@
 
     private final AirEquipmentMapper airEquipmentMapper;
 
-    /**
-     * 鏌ヨ鍏ㄩ儴澶ф皵璁惧鏁版嵁
-     */
-    public List<AirEquipmentBo> listAirEquipment() {
-        return airEquipmentMapper.listAirEquipment();
-    }
 
     /**
      * 妯$硦鏌ヨ
      */
-    public List<AirEquipmentBo> listAirEquipmentByKeyword(String keyword) {
-        if (keyword == null || keyword.trim().length() == 0) {
-            return listAirEquipment();
-        } else {
-            return airEquipmentMapper.listAirEquipmentByKeyword(keyword);
+    public List<AirEquipmentBo> listAirEquipmentByKeyword(BaseConditionVO baseConditionVO, String keyword) {
+        Long clientId = SecurityUtils.getClientId();
+        PageHelper.startPage(baseConditionVO.getPageNo(),baseConditionVO.getPageSize());
+        List<Long> listAirEquipmentId = airEquipmentMapper.listAirEquipmentId(keyword,clientId);
+        if(CollUtil.isEmpty(listAirEquipmentId)){
+            return CollUtil.newArrayList();
         }
-
+        List<AirEquipmentBo> airEquipmentBos = airEquipmentMapper.listAirEquipmentByIds(listAirEquipmentId);
+        return airEquipmentBos;
     }
 
     /**

--
Gitblit v1.9.3