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