dao/src/main/java/com/sandu/ximon/dao/domain/LightPoleHeeling.java
@@ -19,27 +19,12 @@ * */ @TableId(type = IdType.AUTO) private Long id; private Long warningNumber; /** * æå±äºº * 设å¤MACå°å */ private Long userId; /** * åè¦å· */ private String warningNumber; /** * ç¯æID */ private Long lightPoleId; /** * ç¯æåç§° */ private String lightPoleName; private String mac; /** * è¦åç级 dao/src/main/java/com/sandu/ximon/dao/mapper/LightPoleHeelingMapper.java
@@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import java.util.List; @Mapper public interface LightPoleHeelingMapper extends BaseMapper<LightPoleHeeling> { List<LightPoleHeeling> listLightPoleHeeling(String keyword, Integer processingState); } dao/src/main/resources/mapper/LightPoleHeelingMapper.xml
@@ -5,23 +5,36 @@ <mapper namespace="com.sandu.ximon.dao.mapper.LightPoleHeelingMapper"> <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.LightPoleHeeling"> <id property="id" column="id" jdbcType="BIGINT"/> <result property="userId" column="user_id" jdbcType="BIGINT"/> <result property="warningNumber" column="warning_number" jdbcType="VARCHAR"/> <result property="lightPoleId" column="light_pole_id" jdbcType="BIGINT"/> <result property="lightPoleName" column="light_pole_name" jdbcType="VARCHAR"/> <result property="warningLevel" column="warning_level" jdbcType="VARCHAR"/> <result property="theXAxis" column="the_x_axis" jdbcType="DOUBLE"/> <result property="theYAxis" column="the_y_axis" jdbcType="DOUBLE"/> <result property="theZAxis" column="the_z_axis" jdbcType="DOUBLE"/> <result property="processingState" column="processing_state" jdbcType="INTEGER"/> <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> <id property="warningNumber" column="warning_number" jdbcType="BIGINT"/> <result property="mac" column="mac" jdbcType="VARCHAR"/> <result property="warningLevel" column="warning_level" jdbcType="VARCHAR"/> <result property="theXAxis" column="the_x_axis" jdbcType="DOUBLE"/> <result property="theYAxis" column="the_y_axis" jdbcType="DOUBLE"/> <result property="theZAxis" column="the_z_axis" jdbcType="DOUBLE"/> <result property="processingState" column="processing_state" jdbcType="INTEGER"/> <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> </resultMap> <sql id="Base_Column_List"> id,user_id,warning_number, light_pole_id,light_pole_name,warning_level, the_x_axis,the_y_axis,the_z_axis, processing_state,create_time id,mac,warning_number, warning_level,the_x_axis,the_y_axis, the_z_axis,processing_state,create_time </sql> <select id="listLightPoleHeeling" resultType="com.sandu.ximon.dao.domain.LightPoleHeeling"> SELECT * FROM light_pole_heeling WHERE warning_number IN ( SELECT MAX(warning_number) FROM light_pole_heeling <where> <if test="keyword != null and keyword != ''"> AND warning_number LIKE CONCAT(CONCAT('%', #{keyword}), '%') </if> <if test="processingState != null and keyword != 2"> AND processing_state = #{processingState} </if> </where> GROUP BY mac ORDER BY warning_number DESC) </select> </mapper> ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LightPoleHeelingController.java
@@ -1,8 +1,10 @@ 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.param.C3ChargingParam; import com.sandu.ximon.admin.param.LightPoleHeelingListParam; import com.sandu.ximon.admin.param.LightPoleHeelingParam; import com.sandu.ximon.admin.service.LightPoleHeelingService; import com.sandu.ximon.dao.domain.LightPoleHeeling; @@ -32,9 +34,10 @@ * * @return */ @GetMapping("/listLightPoleHeelingByKeyword/{keyword}") public ResponseVO<Object> listLightPoleHeelingByKeyword(@PathVariable String keyword) { List<LightPoleHeeling> list = lightPoleHeelingService.listLightPoleHeelingByKeyword(keyword); @PostMapping("/listLightPoleHeelingByKeyword") public ResponseVO<Object> listLightPoleHeelingByKeyword(BaseConditionVO baseConditionVO , @RequestBody(required = false) LightPoleHeelingListParam lightPoleHeelingListParam) { List<LightPoleHeeling> list = lightPoleHeelingService.listLightPoleHeelingByKeyword(baseConditionVO, lightPoleHeelingListParam); return ResponseUtil.successPage(list); } @@ -67,8 +70,11 @@ */ @PostMapping("/RestartLightPoleHeeling") public ResponseVO<Object> RestartLightPoleHeeling(@RequestBody @Validated LightPoleHeelingParam lightPoleHeelingParam) { return ResponseUtil.success(lightPoleHeelingService.RestartLightPoleHeeling(lightPoleHeelingParam.getDeviceName())); if ("æä½æå".equals(lightPoleHeelingService.RestartLightPoleHeeling(lightPoleHeelingParam.getDeviceName()))) { return ResponseUtil.success(lightPoleHeelingService.RestartLightPoleHeeling(lightPoleHeelingParam.getDeviceName())); } else { return ResponseUtil.fail(lightPoleHeelingService.RestartLightPoleHeeling(lightPoleHeelingParam.getDeviceName())); } } /** @@ -76,8 +82,11 @@ */ @PostMapping("/SetHeartbeatPacketTime") public ResponseVO<Object> SetHeartbeatPacketTime(@RequestBody @Validated LightPoleHeelingParam lightPoleHeelingParam) { return ResponseUtil.success(lightPoleHeelingService.SetHeartbeatPacketTime(lightPoleHeelingParam.getDeviceName(), lightPoleHeelingParam.getTime())); if ("æä½æå".equals(lightPoleHeelingService.RestartLightPoleHeeling(lightPoleHeelingParam.getDeviceName()))) { return ResponseUtil.success(lightPoleHeelingService.SetHeartbeatPacketTime(lightPoleHeelingParam.getDeviceName(), lightPoleHeelingParam.getTime())); } else { return ResponseUtil.fail(lightPoleHeelingService.SetHeartbeatPacketTime(lightPoleHeelingParam.getDeviceName(), lightPoleHeelingParam.getTime())); } } /** @@ -85,7 +94,11 @@ */ @PostMapping("/SetSensorState") public ResponseVO<Object> SetSensorState(@RequestBody @Validated LightPoleHeelingParam lightPoleHeelingParam) { if ("æä½æå".equals(lightPoleHeelingService.RestartLightPoleHeeling(lightPoleHeelingParam.getDeviceName()))) { return ResponseUtil.success(lightPoleHeelingService.SetSensorState(lightPoleHeelingParam.getDeviceName())); } else { return ResponseUtil.fail(lightPoleHeelingService.SetSensorState(lightPoleHeelingParam.getDeviceName())); } return ResponseUtil.success(lightPoleHeelingService.SetSensorState(lightPoleHeelingParam.getDeviceName())); } } ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/AmqpMessageListener.java
@@ -3,6 +3,7 @@ import com.alibaba.fastjson.JSON; import com.sandu.ximon.admin.manager.iot.amqp.processor.AirDataProcessor; import com.sandu.ximon.admin.manager.iot.amqp.processor.LightDataProcessor; import com.sandu.ximon.admin.manager.iot.amqp.processor.PoleMonitorDataProcessor; import com.sandu.ximon.admin.manager.iot.amqp.processor.c3ChargingProcessor; import com.sandu.ximon.admin.manager.iot.frame.inner.report.*; import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame; @@ -106,6 +107,8 @@ // å¤§æ°æ°æ®æä»¤ä¸æ¥ AirDataProcessor.getInstance().process(productKey, deviceName, frame); // atmosphereAnalysis(productKey, deviceName, frame); } else if (frame.getOrderType().equals(A5OrderEnum.RESPONSE_POLE_MONITOR_DATA.getCode())) { PoleMonitorDataProcessor.getInstance().process(productKey, deviceName, frame); } } ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/AirDataProcessor.java
@@ -19,7 +19,7 @@ } public static AirDataProcessor getInstance() { return AirDataProcessor.AirDataProcessorHolder.INSTANCE; return AirDataProcessorHolder.INSTANCE; } private static class AirDataProcessorHolder { ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/PoleMonitorDataProcessor.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,46 @@ package com.sandu.ximon.admin.manager.iot.amqp.processor; import com.sandu.common.util.SpringContextHolder; import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5AtmosphereHeartbeatReportInnerFrame; import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5LightPoleHeelingHeartbeatReportInnerFrame; import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame; import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5AtmosphereReportEnum; import com.sandu.ximon.admin.manager.iot.rrpc.enums.LightPoleHeelingEnum; import com.sandu.ximon.admin.service.AirDataService; import com.sandu.ximon.admin.service.LightPoleHeelingService; import lombok.extern.slf4j.Slf4j; /** * @author ZZQ * @date 2022/3/24 9:45 */ @Slf4j public class PoleMonitorDataProcessor implements IMessageProcessor { public PoleMonitorDataProcessor() { } public static PoleMonitorDataProcessor getInstance() { return PoleMonitorDataProcessorHolder.INSTANCE; } private static class PoleMonitorDataProcessorHolder { private static final PoleMonitorDataProcessor INSTANCE = new PoleMonitorDataProcessor(); } @Override public void process(String productKey, String deviceName, CommonFrame frame) { String functionCode = frame.getPayload().substring(2, 4); if (LightPoleHeelingEnum.TheHeartbeatPackage.getCode().equals(functionCode)) { log.info("å¿è·³ç¸åºââç¯æå¾æ"); A5LightPoleHeelingHeartbeatReportInnerFrame heartbeatReportInnerFrame = new A5LightPoleHeelingHeartbeatReportInnerFrame().transformFrame(frame.getPayload()); log.info(heartbeatReportInnerFrame.toString()); SpringContextHolder.getBean(LightPoleHeelingService.class).saveLightPoleHeelingHeartbeat(deviceName, heartbeatReportInnerFrame.getHeartBeatDataPackage()); // SpringContextHolder.getBean(LightService.class).saveLight(deviceName,heartbeatReportInnerFrame.getHeartBeatDataPackage()); } } } ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5LightPoleHeelingOperationReportInnerFrame.java
@@ -36,9 +36,9 @@ // è´è·é¿åº¦(2) setPayloadLength(hex.substring(4, 8)); //MACå°å setMac(hex.substring(8, 16)); setMac(hex.substring(8, 12)); //硬件交äºååºç»æ setState(returnState(hex.substring(16, 18))); setState(returnState(hex.substring(12, 14))); setCrc32(hex.substring(hex.length() - 8)); // æ ¡éªCRC32 @@ -48,6 +48,7 @@ } public String returnState(String stateCode) { System.out.println(stateCode + " ++++"); String State = ""; switch (stateCode) { case "00": ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/LightPoleHeelingSetHeartbeatPacketTimeReqInnerFrame.java
@@ -28,14 +28,13 @@ } payload = data; payload = "FFFF" + data; } @Override public String getEncodeFrame() { String functionCode = LightPoleHeelingEnum.SetHeartbeatPacketTime.getCode(); String payloadLength = "0004"; String payload = "FFFF"; String frame = functionCode + payloadLength + payload; return MQTTConnectTypeEnum.SYNCHRONIZATION.getCode() + frame.toUpperCase() + CRC32Utils.getCRC32(frame.toUpperCase()); } ximon-admin/src/main/java/com/sandu/ximon/admin/param/LightPoleHeelingListParam.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package com.sandu.ximon.admin.param; import lombok.Data; import javax.validation.constraints.NotEmpty; /** * ç¯æå¾æ * * @author ZZQ * @date 2022/3/22 15:18 */ @Data public class LightPoleHeelingListParam { //ç¯æå¾æå表æ¥è¯¢å ³é®å private String keyword; //å¤çç¶æ private Integer processingState; } ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightPoleHeelingService.java
@@ -2,7 +2,9 @@ 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.manager.iot.frame.A5Frame; import com.sandu.ximon.admin.manager.iot.frame.inner.report.*; @@ -10,16 +12,20 @@ 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.param.LightPoleHeelingListParam; import com.sandu.ximon.dao.domain.LightPoleHeeling; import com.sandu.ximon.dao.mapper.LightPoleHeelingMapper; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; @Service @AllArgsConstructor public class LightPoleHeelingService extends BaseServiceImpl<LightPoleHeelingMapper, LightPoleHeeling> { private LightPoleHeelingMapper lightPoleHeelingMapper; /** * æ¥è¯¢å ¨é¨ç¯æå¾ä¾§åè¦ */ @@ -33,22 +39,14 @@ /** * æ¨¡ç³æ¥è¯¢ */ public List<LightPoleHeeling> listLightPoleHeelingByKeyword(String keyword) { LambdaQueryWrapper<LightPoleHeeling> wrapper = Wrappers.lambdaQuery(LightPoleHeeling.class); if (keyword != null) { wrapper.like(LightPoleHeeling::getLightPoleName, keyword).or( lambdaQueryWrapper -> { lambdaQueryWrapper.like(LightPoleHeeling::getLightPoleId, keyword); } ).or( lambdaQueryWrapper -> { lambdaQueryWrapper.like(LightPoleHeeling::getWarningNumber, keyword); } ); public List<LightPoleHeeling> listLightPoleHeelingByKeyword(BaseConditionVO baseConditionVO, LightPoleHeelingListParam lightPoleHeelingListParam) { PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); if (lightPoleHeelingListParam == null) { lightPoleHeelingListParam = new LightPoleHeelingListParam(); } List<LightPoleHeeling> forHelpList = list(wrapper); return forHelpList; List<LightPoleHeeling> lightPoleHeelings = lightPoleHeelingMapper.listLightPoleHeeling(lightPoleHeelingListParam.getKeyword(), lightPoleHeelingListParam.getProcessingState()); return lightPoleHeelings; } /** @@ -68,7 +66,12 @@ A5LightPoleHeelingHeartbeatReportInnerFrame heartbeatReportInnerFrame = new A5LightPoleHeelingHeartbeatReportInnerFrame().transformFrame(commonFrame.getPayload()); if (heartbeatReportInnerFrame.isValidate()) { //ç¯æå¾æå¿è·³å ä¿åæ°æ®åº saveLightPoleHeelingHeartbeat(deviceName, heartbeatReportInnerFrame.getHeartBeatDataPackage()); return heartbeatReportInnerFrame.getHeartBeatDataPackage(); } else { throw new BusinessException("æ°æ®æ ¡éªé误ï¼è¯·éæ°è¯·æ±"); @@ -176,4 +179,30 @@ throw new BusinessException("æ°æ®æ ¡éªé误ï¼è¯·éæ°è¯·æ±"); } } /** * ä¿åå¿è·³å æ°æ® * * @param deviceName * @param heartBeatDataPackage * @return */ public boolean saveLightPoleHeelingHeartbeat(String deviceName, A5LightPoleHeelingHeartbeatReportInnerFrame.HeartBeatDataPackage heartBeatDataPackage) { LightPoleHeeling lightPoleHeeling = new LightPoleHeeling(); lightPoleHeeling.setMac(deviceName); lightPoleHeeling.setTheXAxis(heartBeatDataPackage.getTheXAxis()); lightPoleHeeling.setTheYAxis(heartBeatDataPackage.getTheYAxis()); lightPoleHeeling.setTheZAxis(heartBeatDataPackage.getTheZAxis()); if (Math.abs(heartBeatDataPackage.getTheXAxis()) >= 10 || Math.abs(heartBeatDataPackage.getTheYAxis()) >= 10) { lightPoleHeeling.setWarningLevel("ä¸çº§è¦å"); } else if ((Math.abs(heartBeatDataPackage.getTheXAxis()) >= 5 && Math.abs(heartBeatDataPackage.getTheXAxis()) < 10) || (Math.abs(heartBeatDataPackage.getTheYAxis()) >= 5 && Math.abs(heartBeatDataPackage.getTheYAxis()) < 10)) { lightPoleHeeling.setWarningLevel("äºçº§è¦å"); } else { lightPoleHeeling.setWarningLevel("æ£å¸¸"); } return save(lightPoleHeeling); } }