2021与蓝度共同重构项目,服务端
zhanzhiqin
2022-04-25 a14c387388ddeb00f730a4b2ad3c21dcf223ff20
大气设备、数据(农耕)
已添加3个文件
已修改12个文件
337 ■■■■ 文件已修改
dao/src/main/java/com/sandu/ximon/dao/bo/AirDataNongGengBo.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/bo/AirEquipmentNongGengBo.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/domain/AirEquipmentNongGeng.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/enums/MenuEnum.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/mapper/AirDataNongGengMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/mapper/AirEquipmentNongGengMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/resources/mapper/AirDataNongGengMapper.xml 76 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/resources/mapper/AirEquipmentNongGengMapper.xml 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirDataController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirDataNongGengController.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirEquipmentNongGengController.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/AtmoFunctionCode.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirDataNongGengService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentNongGengService.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
}
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;
}
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;
}
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音柱列表"),
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);
}
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);
}
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>
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>
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;
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);
    }
}
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));
    }
}
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");
    /**
     * å¤§æ°”结束(希梦自研)
     */
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;
    }
}
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;
    }
}
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