| ¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; |
| | | } |
| | |
| | | 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") |
| | |
| | | private LocalDateTime createTime; |
| | | |
| | | @TableField(exist = false) |
| | | private Integer state; |
| | | |
| | | @TableField(exist = false) |
| | | private static final long serialVersionUID = 1L; |
| | | } |
| | |
| | | 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鳿±å表"), |
| | |
| | | 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); |
| | | |
| | | } |
| | | |
| | |
| | | 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); |
| | | |
| | | } |
| | | |
| | |
| | | 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> |
| | |
| | | <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> |
| | |
| | | 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; |
| | |
| | | */ |
| | | |
| | | 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; |
| | |
| | | @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) { |
| | |
| | | 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); |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | 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)); |
| | | } |
| | | } |
| | |
| | | // 设置å¿è·³å
é´é |
| | | SettingHeartBeatTime("11"), |
| | | // 大æ°è®¾å¤å¿è·³å
åå¨(设å¤ç¶æ)) |
| | | AIR_HEARTBEAT("air_heartbeat"); |
| | | AIR_HEARTBEAT("air_heartbeat"), |
| | | // 大æ°è®¾å¤å¿è·³å
åå¨(设å¤ç¶æ))åè |
| | | AIR_HEARTBEAT_NONG_GENG("air_heartbeat_nong_geng"); |
| | | /** |
| | | * 大æ°ç»æï¼å¸æ¢¦èªç ï¼ |
| | | */ |
| | |
| | | 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; |
| | |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * å¤§æ°æ°æ®ï¼åè硬件 |
| | |
| | | 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; |
| | | |
| | | } |
| | | } |
| | |
| | | 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 |
| | |
| | | @Service |
| | | @AllArgsConstructor |
| | | public class AirEquipmentNongGengService extends BaseServiceImpl<AirEquipmentNongGengMapper, AirEquipmentNongGeng> { |
| | | private final AirEquipmentNongGengMapper airEquipmentNongGengMapper; |
| | | |
| | | |
| | | /** |
| | | * æ·»å 大æ°è®¾å¤æ°æ® |
| | | * |
| | |
| | | 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; |
| | | } |
| | | } |
| | |
| | | } |
| | | 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 |