From a14c387388ddeb00f730a4b2ad3c21dcf223ff20 Mon Sep 17 00:00:00 2001
From: zhanzhiqin <895896009@qq.com>
Date: 星期一, 25 四月 2022 15:55:22 +0800
Subject: [PATCH] 大气设备、数据(农耕)

---
 dao/src/main/resources/mapper/AirDataNongGengMapper.xml                                        |   76 +++++++++---
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirDataNongGengService.java            |   31 ++++
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentNongGengService.java       |   58 +++++++++
 dao/src/main/java/com/sandu/ximon/dao/domain/AirEquipmentNongGeng.java                         |   10 +
 dao/src/main/java/com/sandu/ximon/dao/mapper/AirEquipmentNongGengMapper.java                   |    4 
 ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirDataController.java              |    1 
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java                       |   10 +
 dao/src/main/java/com/sandu/ximon/dao/bo/AirDataNongGengBo.java                                |   12 ++
 ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirDataNongGengController.java      |   27 +++
 dao/src/main/resources/mapper/AirEquipmentNongGengMapper.xml                                   |   24 +++
 ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirEquipmentNongGengController.java |   56 +++++++++
 dao/src/main/java/com/sandu/ximon/dao/enums/MenuEnum.java                                      |    2 
 dao/src/main/java/com/sandu/ximon/dao/mapper/AirDataNongGengMapper.java                        |    7 +
 dao/src/main/java/com/sandu/ximon/dao/bo/AirEquipmentNongGengBo.java                           |   15 ++
 ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/AtmoFunctionCode.java   |    4 
 15 files changed, 303 insertions(+), 34 deletions(-)

diff --git a/dao/src/main/java/com/sandu/ximon/dao/bo/AirDataNongGengBo.java b/dao/src/main/java/com/sandu/ximon/dao/bo/AirDataNongGengBo.java
new file mode 100644
index 0000000..6de3c6c
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/bo/AirDataNongGengBo.java
@@ -0,0 +1,12 @@
+package com.sandu.ximon.dao.bo;
+
+import com.sandu.ximon.dao.domain.AirDataNongGeng;
+
+/**
+ * @author ZZQ
+ * @date 2022/4/25 15:10
+ */
+public class AirDataNongGengBo extends AirDataNongGeng {
+    private String poleId;
+    private String PoleName;
+}
diff --git a/dao/src/main/java/com/sandu/ximon/dao/bo/AirEquipmentNongGengBo.java b/dao/src/main/java/com/sandu/ximon/dao/bo/AirEquipmentNongGengBo.java
new file mode 100644
index 0000000..92ef87b
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/bo/AirEquipmentNongGengBo.java
@@ -0,0 +1,15 @@
+package com.sandu.ximon.dao.bo;
+
+import com.sandu.ximon.dao.domain.AirEquipment;
+import com.sandu.ximon.dao.domain.AirEquipmentNongGeng;
+import lombok.Data;
+
+/**
+ * @author ZZQ
+ * @date 2022/4/25 15:21
+ */
+@Data
+public class AirEquipmentNongGengBo extends AirEquipmentNongGeng {
+    private String poleId;
+    private String PoleName;
+}
diff --git a/dao/src/main/java/com/sandu/ximon/dao/domain/AirEquipmentNongGeng.java b/dao/src/main/java/com/sandu/ximon/dao/domain/AirEquipmentNongGeng.java
index 13d1994..90f0d1d 100644
--- a/dao/src/main/java/com/sandu/ximon/dao/domain/AirEquipmentNongGeng.java
+++ b/dao/src/main/java/com/sandu/ximon/dao/domain/AirEquipmentNongGeng.java
@@ -4,19 +4,20 @@
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+
 import java.io.Serializable;
 import java.time.LocalDateTime;
+
 import lombok.Data;
 
 /**
- * 
  * @TableName air_equipment_nong_geng
  */
-@TableName(value ="air_equipment_nong_geng")
+@TableName(value = "air_equipment_nong_geng")
 @Data
 public class AirEquipmentNongGeng implements Serializable {
     /**
-     * 
+     *
      */
     @TableId
     private Long id;
@@ -32,5 +33,8 @@
     private LocalDateTime createTime;
 
     @TableField(exist = false)
+    private Integer state;
+
+    @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 }
\ No newline at end of file
diff --git a/dao/src/main/java/com/sandu/ximon/dao/enums/MenuEnum.java b/dao/src/main/java/com/sandu/ximon/dao/enums/MenuEnum.java
index e1158e1..aea6008 100644
--- a/dao/src/main/java/com/sandu/ximon/dao/enums/MenuEnum.java
+++ b/dao/src/main/java/com/sandu/ximon/dao/enums/MenuEnum.java
@@ -33,6 +33,8 @@
     LED_FILE_LIST("LED灞忕礌鏉愬垪琛�"),
     AIR_EQUIPMENT_LIST("澶ф皵璁惧鍒楄〃"),
     AIR_DATA_LIST("澶ф皵鏁版嵁鍒楄〃"),
+    AIR_EQUIPMENT_NONG_GENG_LIST("澶ф皵璁惧鍐滆�曞垪琛�"),
+    AIR_DATA__NONG_GENG_LIST("澶ф皵鏁版嵁鍐滆�曞垪琛�"),
     WATER_EQUIPMENT_LIST("姘磋川璁惧鍒楄〃"),
     WATER_DATA_LIST("姘磋川鏁版嵁鍒楄〃"),
     IP_BROADCAST_LIST("IP闊虫煴鍒楄〃"),
diff --git a/dao/src/main/java/com/sandu/ximon/dao/mapper/AirDataNongGengMapper.java b/dao/src/main/java/com/sandu/ximon/dao/mapper/AirDataNongGengMapper.java
index 2ef3669..1c53f0c 100644
--- a/dao/src/main/java/com/sandu/ximon/dao/mapper/AirDataNongGengMapper.java
+++ b/dao/src/main/java/com/sandu/ximon/dao/mapper/AirDataNongGengMapper.java
@@ -1,14 +1,21 @@
 package com.sandu.ximon.dao.mapper;
 
+import com.sandu.ximon.dao.bo.AirDataBo;
+import com.sandu.ximon.dao.bo.AirDataNongGengBo;
 import com.sandu.ximon.dao.domain.AirDataNongGeng;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
 
 /**
  * @Entity com.sandu.ximon.dao.domain.AirDataNongGeng
  */
 @Mapper
 public interface AirDataNongGengMapper extends BaseMapper<AirDataNongGeng> {
+    List<Long> listAirId(String keyword, Long userid);
+
+    List<AirDataNongGengBo> listAirDataByIds(List<Long> airIdList);
 
 }
 
diff --git a/dao/src/main/java/com/sandu/ximon/dao/mapper/AirEquipmentNongGengMapper.java b/dao/src/main/java/com/sandu/ximon/dao/mapper/AirEquipmentNongGengMapper.java
index c6a7d60..f7ff70a 100644
--- a/dao/src/main/java/com/sandu/ximon/dao/mapper/AirEquipmentNongGengMapper.java
+++ b/dao/src/main/java/com/sandu/ximon/dao/mapper/AirEquipmentNongGengMapper.java
@@ -1,14 +1,18 @@
 package com.sandu.ximon.dao.mapper;
 
+import com.sandu.ximon.dao.bo.AirEquipmentNongGengBo;
 import com.sandu.ximon.dao.domain.AirEquipmentNongGeng;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
 
 /**
  * @Entity com.sandu.ximon.dao.domain.AirEquipmentNongGeng
  */
 @Mapper
 public interface AirEquipmentNongGengMapper extends BaseMapper<AirEquipmentNongGeng> {
+    List<AirEquipmentNongGengBo> listAirEquipmentByIds(String keyword, Long userid);
 
 }
 
diff --git a/dao/src/main/resources/mapper/AirDataNongGengMapper.xml b/dao/src/main/resources/mapper/AirDataNongGengMapper.xml
index e0616e9..b6d1dc9 100644
--- a/dao/src/main/resources/mapper/AirDataNongGengMapper.xml
+++ b/dao/src/main/resources/mapper/AirDataNongGengMapper.xml
@@ -5,25 +5,25 @@
 <mapper namespace="com.sandu.ximon.dao.mapper.AirDataNongGengMapper">
 
     <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.AirDataNongGeng">
-            <id property="id" column="id" jdbcType="BIGINT"/>
-            <result property="mac" column="mac" jdbcType="VARCHAR"/>
-            <result property="noise" column="noise" jdbcType="DECIMAL"/>
-            <result property="hydrogenSulfide" column="hydrogen_sulfide" jdbcType="DECIMAL"/>
-            <result property="so2" column="so2" jdbcType="DECIMAL"/>
-            <result property="no2" column="no2" jdbcType="DECIMAL"/>
-            <result property="co" column="co" jdbcType="DECIMAL"/>
-            <result property="o3" column="o3" jdbcType="DECIMAL"/>
-            <result property="pm2point5" column="pm2point5" jdbcType="DECIMAL"/>
-            <result property="pm10" column="pm10" jdbcType="DECIMAL"/>
-            <result property="airTemperature" column="air_temperature" jdbcType="DECIMAL"/>
-            <result property="airHumidity" column="air_humidity" jdbcType="DECIMAL"/>
-            <result property="airPressure" column="air_pressure" jdbcType="DECIMAL"/>
-            <result property="windDirection" column="wind_direction" jdbcType="DECIMAL"/>
-            <result property="windSpeed" column="wind_speed" jdbcType="DECIMAL"/>
-            <result property="tenRainfallMin" column="ten_rainfall_min" jdbcType="DECIMAL"/>
-            <result property="radiation" column="radiation" jdbcType="DECIMAL"/>
-            <result property="illumination" column="illumination" jdbcType="DECIMAL"/>
-            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+        <id property="id" column="id" jdbcType="BIGINT"/>
+        <result property="mac" column="mac" jdbcType="VARCHAR"/>
+        <result property="noise" column="noise" jdbcType="DECIMAL"/>
+        <result property="hydrogenSulfide" column="hydrogen_sulfide" jdbcType="DECIMAL"/>
+        <result property="so2" column="so2" jdbcType="DECIMAL"/>
+        <result property="no2" column="no2" jdbcType="DECIMAL"/>
+        <result property="co" column="co" jdbcType="DECIMAL"/>
+        <result property="o3" column="o3" jdbcType="DECIMAL"/>
+        <result property="pm2point5" column="pm2point5" jdbcType="DECIMAL"/>
+        <result property="pm10" column="pm10" jdbcType="DECIMAL"/>
+        <result property="airTemperature" column="air_temperature" jdbcType="DECIMAL"/>
+        <result property="airHumidity" column="air_humidity" jdbcType="DECIMAL"/>
+        <result property="airPressure" column="air_pressure" jdbcType="DECIMAL"/>
+        <result property="windDirection" column="wind_direction" jdbcType="DECIMAL"/>
+        <result property="windSpeed" column="wind_speed" jdbcType="DECIMAL"/>
+        <result property="tenRainfallMin" column="ten_rainfall_min" jdbcType="DECIMAL"/>
+        <result property="radiation" column="radiation" jdbcType="DECIMAL"/>
+        <result property="illumination" column="illumination" jdbcType="DECIMAL"/>
+        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
     </resultMap>
 
     <sql id="Base_Column_List">
@@ -35,4 +35,42 @@
         ten_rainfall_min,radiation,illumination,
         create_time
     </sql>
+    <select id="listAirId" resultType="java.lang.Long">
+        SELECT
+        MAX(t1.id) AS air_id
+        FROM
+        air_data_nong_geng t1
+        <if test="keyword != null and keyword != ''">
+            LEFT JOIN pole_binding t2 ON t1.mac = t2.device_code
+            AND t2.device_type = 11
+            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="userid != null">
+                AND (t3.user_id = #{userid} OR t3.client_id = #{userid})
+            </if>
+        </where>
+        GROUP BY
+        t1.mac
+    </select>
+    <select id="listAirDataByIds" resultType="com.sandu.ximon.dao.bo.AirDataNongGengBo">
+        SELECT
+        t1.*, t2.pole_id,
+        t3.pole_name
+        FROM
+        air_data_nong_geng t1
+        LEFT JOIN pole_binding t2 ON t1.mac = t2.device_code
+        AND t2.device_type = 11
+        LEFT JOIN pole t3 ON t3.id = t2.pole_id
+        <where>
+            t1.id IN
+            <foreach collection="airIdList" open="(" close=")" item="airId" separator=",">
+                #{airId}
+            </foreach>
+        </where>
+    </select>
+
 </mapper>
diff --git a/dao/src/main/resources/mapper/AirEquipmentNongGengMapper.xml b/dao/src/main/resources/mapper/AirEquipmentNongGengMapper.xml
index a855823..6a34be8 100644
--- a/dao/src/main/resources/mapper/AirEquipmentNongGengMapper.xml
+++ b/dao/src/main/resources/mapper/AirEquipmentNongGengMapper.xml
@@ -5,12 +5,30 @@
 <mapper namespace="com.sandu.ximon.dao.mapper.AirEquipmentNongGengMapper">
 
     <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.AirEquipmentNongGeng">
-            <id property="id" column="id" jdbcType="BIGINT"/>
-            <result property="mac" column="mac" jdbcType="VARCHAR"/>
-            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+        <id property="id" column="id" jdbcType="BIGINT"/>
+        <result property="mac" column="mac" jdbcType="VARCHAR"/>
+        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
     </resultMap>
 
     <sql id="Base_Column_List">
         id,mac,create_time
     </sql>
+    <select id="listAirEquipmentByIds" resultType="com.sandu.ximon.dao.bo.AirEquipmentNongGengBo">
+        SELECT
+        t1.*, t2.pole_id,
+        t3.pole_name
+        FROM
+        air_equipment_nong_geng t1
+        LEFT JOIN pole_binding t2 ON t1.mac = t2.device_code
+        AND t2.device_type = 11
+        LEFT JOIN pole t3 ON t3.id = t2.pole_id
+        <where>
+            <if test="keyword != null and keyword != ''">
+                AND t3.pole_name LIKE CONCAT(CONCAT('%', #{keyword}), '%')
+            </if>
+            <if test="userid != null">
+                AND (t3.user_id = #{userid} OR t3.client_id = #{userid})
+            </if>
+        </where>
+    </select>
 </mapper>
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirDataController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirDataController.java
index 65b269e..85920e3 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirDataController.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirDataController.java
@@ -1,6 +1,5 @@
 package com.sandu.ximon.admin.controller;
 
-import com.alibaba.fastjson.JSON;
 import com.sandu.common.domain.ResponseVO;
 import com.sandu.common.object.BaseConditionVO;
 import com.sandu.common.util.ResponseUtil;
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirDataNongGengController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirDataNongGengController.java
index b9c0fbd..eca554a 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirDataNongGengController.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirDataNongGengController.java
@@ -6,19 +6,20 @@
  */
 
 import com.sandu.common.domain.ResponseVO;
+import com.sandu.common.object.BaseConditionVO;
 import com.sandu.common.util.ResponseUtil;
 import com.sandu.ximon.admin.manager.iot.amqp.processor.AirDataProcessor;
 import com.sandu.ximon.admin.manager.iot.frame.A5Frame;
 import com.sandu.ximon.admin.manager.iot.frame.inner.request.AirDataNewReqInnerFrame;
-import com.sandu.ximon.admin.manager.iot.frame.inner.request.AirDataReqInnerFrame;
 import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame;
 import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5OrderEnum;
 import com.sandu.ximon.admin.manager.iot.rrpc.mainboard.MainBoardInvokeSyncService;
+import com.sandu.ximon.admin.security.PermissionConfig;
+import com.sandu.ximon.admin.service.AirDataNongGengService;
+import com.sandu.ximon.dao.bo.AirDataNongGengBo;
+import com.sandu.ximon.dao.enums.MenuEnum;
 import lombok.AllArgsConstructor;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -32,6 +33,8 @@
 @AllArgsConstructor
 @RequestMapping("/v1/admin/airdata_nonggeng")
 public class AirDataNongGengController {
+    private PermissionConfig permissionConfig;
+    private final AirDataNongGengService airDataNongGengService;
 
     @PostMapping("/updateAirEquipmentInfo")
     public ResponseVO<Object> updataAirEquipmentInfo(@RequestBody List<String> listMac) {
@@ -61,6 +64,20 @@
         resultMap.put("success", success);
         resultMap.put("failed", failed);
         return ResponseUtil.success(resultMap);
+    }
 
+    /**
+     * 鏌ヨ澶ф皵鏁版嵁妯$硦鏌ヨ
+     *
+     * @param keyword 鍏抽敭瀛�
+     * @return
+     */
+    @GetMapping("/listAirData")
+    public ResponseVO<Object> listAirDataByKeyword(BaseConditionVO baseConditionVO, @RequestParam(required = false) String keyword) {
+        if (!permissionConfig.check(MenuEnum.AIR_DATA__NONG_GENG_LIST.getCode())) {
+            return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
+        }
+        List<AirDataNongGengBo> list = airDataNongGengService.listAirDataByKeyword(baseConditionVO, keyword);
+        return ResponseUtil.successPage(list);
     }
 }
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirEquipmentNongGengController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirEquipmentNongGengController.java
new file mode 100644
index 0000000..23cdf9b
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirEquipmentNongGengController.java
@@ -0,0 +1,56 @@
+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.security.PermissionConfig;
+import com.sandu.ximon.admin.service.AirEquipmentNongGengService;
+import com.sandu.ximon.dao.bo.AirEquipmentNongGengBo;
+import com.sandu.ximon.dao.enums.MenuEnum;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 澶ф皵璁惧锛堝啘鑰曪級
+ *
+ * @author ZZQ
+ * @date 2022/4/25 15:19
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/v1/admin/airequipment_nonggeng")
+public class AirEquipmentNongGengController {
+    private final AirEquipmentNongGengService airEquipmentNongGengService;
+    private PermissionConfig permissionConfig;
+
+    /**
+     * 鏌ヨ澶ф皵璁惧
+     *
+     * @return
+     */
+    @GetMapping("/listAirEquipment")
+    public ResponseVO<Object> listAirEquipmentByKeyword(BaseConditionVO baseConditionVO, @RequestParam(required = false) String keyword) {
+        if (!permissionConfig.check(MenuEnum.AIR_EQUIPMENT_LIST.getCode())) {
+            return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
+        }
+        List<AirEquipmentNongGengBo> list = airEquipmentNongGengService.listAirEquipmentByKeyword(baseConditionVO, keyword);
+        return ResponseUtil.successPage(list);
+    }
+
+    @PostMapping("/delete/{id}")
+    public ResponseVO<Object> deleteAirEquipment(@PathVariable Long id) {
+        boolean result = airEquipmentNongGengService.deleteAirEquipment(id);
+        if (result) {
+            return ResponseUtil.success(null);
+        } else {
+            return ResponseUtil.fail("鎿嶄綔澶辫触");
+        }
+    }
+
+    @GetMapping("/getAirEquipment/{mac}")
+    public ResponseVO<Object> getAirEquipment(@PathVariable String mac) {
+        return ResponseUtil.success(airEquipmentNongGengService.getAirEquipment(mac));
+    }
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/AtmoFunctionCode.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/AtmoFunctionCode.java
index 5873bba..f1d7dcb 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/AtmoFunctionCode.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/AtmoFunctionCode.java
@@ -16,7 +16,9 @@
     //  璁剧疆蹇冭烦鍖呴棿闅�
     SettingHeartBeatTime("11"),
     //  澶ф皵璁惧蹇冭烦鍖呭瓨鍌�(璁惧鐘舵��))
-    AIR_HEARTBEAT("air_heartbeat");
+    AIR_HEARTBEAT("air_heartbeat"),
+    //  澶ф皵璁惧蹇冭烦鍖呭瓨鍌�(璁惧鐘舵��))鍐滆��
+    AIR_HEARTBEAT_NONG_GENG("air_heartbeat_nong_geng");
     /**
      * 澶ф皵缁撴潫锛堝笇姊﹁嚜鐮旓級
      */
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirDataNongGengService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirDataNongGengService.java
index 407ba53..86ebc33 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirDataNongGengService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirDataNongGengService.java
@@ -1,10 +1,16 @@
 package com.sandu.ximon.admin.service;
 
+import cn.hutool.core.collection.CollUtil;
+import com.github.pagehelper.PageHelper;
+import com.sandu.common.object.BaseConditionVO;
 import com.sandu.common.service.impl.BaseServiceImpl;
 import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5AtmosphereHeartbeatReportInnerFrame;
 import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5AtmosphereNewHeartbeatReportInnerFrame;
 import com.sandu.ximon.admin.manager.iot.rrpc.enums.AtmoFunctionCode;
+import com.sandu.ximon.admin.security.SecurityUtils;
 import com.sandu.ximon.admin.utils.RedisUtils;
+import com.sandu.ximon.dao.bo.AirDataBo;
+import com.sandu.ximon.dao.bo.AirDataNongGengBo;
 import com.sandu.ximon.dao.domain.AirData;
 import com.sandu.ximon.dao.domain.AirDataNongGeng;
 import com.sandu.ximon.dao.domain.AirEquipment;
@@ -13,6 +19,8 @@
 import lombok.AllArgsConstructor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 /**
  * 澶ф皵鏁版嵁锛屽啘鑰曠‖浠�
@@ -43,9 +51,28 @@
         airEquipmentNongGeng.setCreateTime(airDataNongGeng.getCreateTime());
         airEquipmentNongGengService.addAirEquipment(airEquipmentNongGeng);
 
-//        //瀛樼紦瀛�
-//        RedisUtils.getBean().set(AtmoFunctionCode.AIR_HEARTBEAT.getCode() + deviceName, heartBeatDataPackage, 300L);
+        //瀛樼紦瀛�
+        RedisUtils.getBean().set(AtmoFunctionCode.AIR_HEARTBEAT_NONG_GENG.getCode() + deviceName, heartBeatDataPackage, 300L);
 
         return save(airDataNongGeng);
     }
+
+    /**
+     * 鏌ヨ澶ф皵鏁版嵁(妯$硦鏌ヨ)
+     */
+    public List<AirDataNongGengBo> listAirDataByKeyword(BaseConditionVO baseConditionVO, String keyword) {
+        PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
+        List<Long> listAirId;
+        if (SecurityUtils.getClientId() == null) {
+            listAirId = baseMapper.listAirId(keyword, null);
+        } else {
+            listAirId = baseMapper.listAirId(keyword, SecurityUtils.getUserId());
+        }
+        if (CollUtil.isEmpty(listAirId)) {
+            return CollUtil.newArrayList();
+        }
+        List<AirDataNongGengBo> airDataBos = baseMapper.listAirDataByIds(listAirId);
+        return airDataBos;
+
+    }
 }
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentNongGengService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentNongGengService.java
index ceb5e2a..bfb4547 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentNongGengService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentNongGengService.java
@@ -1,12 +1,23 @@
 package com.sandu.ximon.admin.service;
 
 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.manager.iot.rrpc.enums.AtmoFunctionCode;
+import com.sandu.ximon.admin.security.SecurityUtils;
+import com.sandu.ximon.admin.utils.RedisUtils;
+import com.sandu.ximon.dao.bo.AirEquipmentBo;
+import com.sandu.ximon.dao.bo.AirEquipmentNongGengBo;
 import com.sandu.ximon.dao.domain.AirEquipment;
 import com.sandu.ximon.dao.domain.AirEquipmentNongGeng;
+import com.sandu.ximon.dao.mapper.AirEquipmentMapper;
 import com.sandu.ximon.dao.mapper.AirEquipmentNongGengMapper;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 /**
  * @author ZZQ
@@ -15,6 +26,9 @@
 @Service
 @AllArgsConstructor
 public class AirEquipmentNongGengService extends BaseServiceImpl<AirEquipmentNongGengMapper, AirEquipmentNongGeng> {
+    private final AirEquipmentNongGengMapper airEquipmentNongGengMapper;
+
+
     /**
      * 娣诲姞澶ф皵璁惧鏁版嵁
      *
@@ -26,4 +40,48 @@
             save(airEquipmentNongGeng);
         }
     }
+
+    /**
+     * 妯$硦鏌ヨ
+     */
+    public List<AirEquipmentNongGengBo> listAirEquipmentByKeyword(BaseConditionVO baseConditionVO, String keyword) {
+        if (baseConditionVO != null) {
+            PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
+        }
+        List<AirEquipmentNongGengBo> airEquipmentBos;
+        if (SecurityUtils.getClientId() == null) {
+            airEquipmentBos = airEquipmentNongGengMapper.listAirEquipmentByIds(keyword, null);
+        } else {
+            airEquipmentBos = airEquipmentNongGengMapper.listAirEquipmentByIds(keyword, SecurityUtils.getUserId());
+        }
+
+        return airEquipmentBos;
+    }
+
+    /**
+     * 鍒犻櫎澶ф皵璁惧鏁版嵁
+     *
+     * @param Id
+     * @return
+     */
+    public boolean deleteAirEquipment(Long Id) {
+        AirEquipmentNongGeng airEquipmentNongGeng = getById(Id);
+        if (airEquipmentNongGeng == null) {
+            throw new BusinessException("鎵句笉鍒板ぇ姘旇澶囨暟鎹�");
+        }
+        return removeById(Id);
+    }
+
+    /**
+     * 鏍规嵁Mac澶ф皵璁惧鏁版嵁璇︽儏
+     */
+    public AirEquipmentNongGeng getAirEquipment(String mac) {
+        AirEquipmentNongGeng one = getOne(Wrappers.lambdaQuery(AirEquipmentNongGeng.class).eq(AirEquipmentNongGeng::getMac, mac));
+        if (RedisUtils.getBean().get(AtmoFunctionCode.AIR_HEARTBEAT_NONG_GENG.getCode() + mac) != null) {
+            one.setState(1);
+        } else {
+            one.setState(0);
+        }
+        return one;
+    }
 }
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
index 5e8e708..e317fe5 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
@@ -204,6 +204,16 @@
         }
         result.put("AirEquipmentOnlineCount", number);
         result.put("AirEquipmentTotalCount", airEquipments.size());
+        //澶ф皵(鍐滆��)
+        number = 0;
+        List<AirEquipmentNongGengBo> airEquipmentNongGengBos = SpringContextHolder.getBean(AirEquipmentNongGengService.class).listAirEquipmentByKeyword(null, null);
+        for (AirEquipmentNongGengBo airEquipmentNongGengBo : airEquipmentNongGengBos) {
+            if (RedisUtils.getBean().get(AtmoFunctionCode.AIR_HEARTBEAT_NONG_GENG.getCode() + airEquipmentNongGengBo.getMac()) != null) {
+                number++;
+            }
+        }
+        result.put("AirEquipmentNongGengOnlineCount", number);
+        result.put("AirEquipmentNongGengTotalCount", airEquipmentNongGengBos.size());
         //姘磋川
         number = 0;
         List<WaterQualityEquipmentBo> waterQualityEquipments

--
Gitblit v1.9.3