dao/src/main/java/com/sandu/ximon/dao/domain/WaterQualityData.java
@@ -11,20 +11,18 @@ public class WaterQualityData implements Serializable { @TableId(type = IdType.AUTO) private Long id; //设å¤ID private Long equipmentId; //水质设å¤ç¼ç private String waterQualityEquipmentCode; //æå±ç¯æ private String belongTo; //æ°´è´¨é ¸ç¢±åº¦pH private Double waterQualityPh; private String waterQualityPh; //水质溶解度DOï¼mg/Lï¼ private Double waterQualityDo; private String waterQualityDo; //æ°´è´¨çµå¯¼çEC(10^(-6)S) private Double waterQualityEc; private String waterQualityEc; //æ°´è´¨æµåº¦ï¼NTUï¼ private Double waterQualityNtu; private String waterQualityNtu; //䏿¥æ¶é´ private LocalDateTime updateTime; //å建æ¶é´ dao/src/main/java/com/sandu/ximon/dao/domain/WaterQualityEquipment.java
@@ -20,6 +20,4 @@ private int equipmentState; //æ¥å ¥æ¶é´ private LocalDateTime createTime; //æå±äºº private Long userId; } dao/src/main/java/com/sandu/ximon/dao/domain/YSY_MonitorDto.java
ÎļþÒÑɾ³ý dao/src/main/resources/mapper/WaterQualityDataMapper.xml
@@ -6,13 +6,12 @@ <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.WaterQualityData"> <id property="id" column="id" jdbcType="BIGINT"/> <result property="equipmentId" column="equipment_id" jdbcType="BIGINT"/> <result property="waterQualityEquipmentCode" column="water_quality_equipment_code" jdbcType="VARCHAR"/> <result property="belongTo" column="belong_to" jdbcType="VARCHAR"/> <result property="waterQualityPh" column="water_quality_ph" jdbcType="DOUBLE"/> <result property="waterQualityDo" column="water_quality_do" jdbcType="DOUBLE"/> <result property="waterQualityEc" column="water_quality_ec" jdbcType="DOUBLE"/> <result property="waterQualityNtu" column="water_quality_ntu" jdbcType="DOUBLE"/> <result property="waterQualityPh" column="water_quality_ph" jdbcType="VARCHAR"/> <result property="waterQualityDo" column="water_quality_do" jdbcType="VARCHAR"/> <result property="waterQualityEc" column="water_quality_ec" jdbcType="VARCHAR"/> <result property="waterQualityNtu" column="water_quality_ntu" jdbcType="VARCHAR"/> <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/> <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> </resultMap> dao/src/main/resources/mapper/WaterQualityEquipmentMapper.xml
@@ -10,7 +10,6 @@ <result property="waterQualityEquipmentCode" column="water_quality_equipment_code" jdbcType="VARCHAR"/> <result property="equipmentState" column="equipment_state" jdbcType="INTEGER"/> <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> <result property="userId" column="user_id" jdbcType="BIGINT"/> </resultMap> </mapper> ximon-admin/src/main/java/com/sandu/ximon/admin/controller/MonitorController.java
@@ -1,11 +1,12 @@ package com.sandu.ximon.admin.controller; import com.sandu.common.domain.ResponseVO; import com.sandu.common.execption.BusinessException; import com.sandu.common.util.ResponseUtil; import com.sandu.ximon.admin.param.MonitorParam; import com.sandu.ximon.admin.service.MonitorService; import com.sandu.ximon.dao.domain.Monitor; import com.sandu.ximon.dao.domain.YSY_MonitorDto; import com.sandu.ximon.admin.dto.YSY_MonitorDto; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; @@ -78,8 +79,14 @@ return ResponseUtil.success(addMonitorDto); } else if ("20017".equals(addMonitorDto.getCode())) { //å·²ç»è¢«èªå·±æ·»å çæå头éè¦æ·»å å°æ°æ®åº getYSYMonitorInfoAndaddMonitorToTable(monitorParam); return ResponseUtil.error(20017, addMonitorDto.getMsg()); boolean falg = getYSYMonitorInfoAndaddMonitorToTable(monitorParam); if (falg) { return ResponseUtil.success("æ·»å æå头æåï¼"); } else { return ResponseUtil.fail("æ·»å æå头失败ï¼"); } } else { return ResponseUtil.fail(addMonitorDto.getMsg()); } @@ -124,7 +131,7 @@ * @return */ @GetMapping("/getYSYMonitorInfoAndaddMonitorToTable") public ResponseVO<Object> getYSYMonitorInfoAndaddMonitorToTable(@RequestBody MonitorParam monitorParam) { public boolean getYSYMonitorInfoAndaddMonitorToTable(@RequestBody MonitorParam monitorParam) { YSY_MonitorDto getMonitorDto = monitorService.getYSYMonitorInfo(monitorParam.getAccessToken(), monitorParam.getDeviceSerial()); if ("200".equals(getMonitorDto.getCode())) { @@ -137,26 +144,15 @@ monitor.setIsEncrypt(getMonitorDto.getData().getIsEncrypt()); monitor.setAddTime(getMonitorDto.getData().getUpdateTime()); monitor.setNetAddress(getMonitorDto.getData().getNetAddress()); boolean flag = monitorService.addMonitorInfoToTable(monitor); if (flag) { return ResponseUtil.success("å¨åæå头设å¤ä¿¡æ¯æåï¼"); } else { return ResponseUtil.fail("å¨åæå头设å¤ä¿¡æ¯å¤±è´¥!"); } return monitorService.addMonitorInfoToTable(monitor); } else { return ResponseUtil.fail(getMonitorDto.getMsg()); throw new BusinessException(getMonitorDto.getMsg()); } } /** * ç¼è¾æå头设å¤ä¿¡æ¯ */ /** * è·åå个设å¤ä¿¡æ¯ getYSYMonitorInfo * ç¼è¾æå头设å¤ä¿¡æ¯ */ @PostMapping("/UpDateMonitorInfo") public ResponseVO<Object> UpDateMonitorInfo(@RequestBody MonitorParam monitorParam) { @@ -176,4 +172,14 @@ } } /** * ç¼è¾æå头设å¤ä¿¡æ¯ */ @GetMapping("/getMonitorVideoUrl") public ResponseVO<Object> getMonitorVideoUrl(@RequestBody MonitorParam monitorParam) { String URL = monitorService.getMonitorVideoUrl(monitorParam.getAccessToken(), monitorParam.getDeviceSerial(), monitorParam.getProtocol()); return ResponseUtil.success(URL); } } ximon-admin/src/main/java/com/sandu/ximon/admin/controller/WaterQualityDataController.java
@@ -2,13 +2,11 @@ import com.sandu.common.domain.ResponseVO; import com.sandu.common.util.ResponseUtil; import com.sandu.ximon.admin.dto.WaterQualityDataDto; import com.sandu.ximon.admin.service.WaterQualityDataService; import com.sandu.ximon.dao.domain.WaterQualityData; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -38,4 +36,10 @@ return ResponseUtil.successPage(list); } @PostMapping("/getWaterQualityDataInfo/{waterQualityEquipmentCode}") public ResponseVO<Object> getWaterQualityDataInfo(@PathVariable String waterQualityEquipmentCode) { WaterQualityDataDto waterQualityDataDto = waterQualityDataService.getWaterQualityDataInfo(waterQualityEquipmentCode); return ResponseUtil.success(waterQualityDataDto); } } ximon-admin/src/main/java/com/sandu/ximon/admin/controller/WaterQualityEquipmentController.java
@@ -2,6 +2,7 @@ import com.sandu.common.domain.ResponseVO; import com.sandu.common.util.ResponseUtil; import com.sandu.ximon.admin.param.WaterQualityEquipmentParam; import com.sandu.ximon.admin.service.WaterQualityEquipmentService; import com.sandu.ximon.dao.domain.WaterQualityEquipment; import lombok.AllArgsConstructor; @@ -44,4 +45,15 @@ return ResponseUtil.fail("æä½å¤±è´¥"); } } @PostMapping("/add") public ResponseVO<Object> addQualityEquipment(@RequestBody WaterQualityEquipment waterQualityEquipment) { boolean result = waterQualityEquipmentService.addWaterQualityEquipment(waterQualityEquipment); if (result) { return ResponseUtil.success(null); } else { return ResponseUtil.fail("æä½å¤±è´¥"); } } } ximon-admin/src/main/java/com/sandu/ximon/admin/dto/WaterQualityDataDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,59 @@ package com.sandu.ximon.admin.dto; import lombok.Data; import java.io.Serializable; import java.util.List; /** * @author ZZQ * @date 2021/12/22 17:05 */ @Data public class WaterQualityDataDto { private String code; private String msg; private String did; private List<WaterQualityBean> data; public class WaterQualityBean { private String unit; private String code; private String name; private String value; public String getUnit() { return unit; } public void setUnit(String unit) { this.unit = unit; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } } } ximon-admin/src/main/java/com/sandu/ximon/admin/dto/YSY_AccessTokenDto.java
ÎļþÃû´Ó dao/src/main/java/com/sandu/ximon/dao/domain/YSY_AccessTokenDto.java ÐÞ¸Ä @@ -1,4 +1,4 @@ package com.sandu.ximon.dao.domain; package com.sandu.ximon.admin.dto; import lombok.Data; ximon-admin/src/main/java/com/sandu/ximon/admin/dto/YSY_MonitorDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,129 @@ package com.sandu.ximon.admin.dto; import lombok.Data; import lombok.NoArgsConstructor; import java.time.LocalDateTime; /** * @author ZZQ * @date 2021/12/17 15:46 */ @Data public class YSY_MonitorDto { private String code; private String msg; private MonitorDto data; @NoArgsConstructor @Data public class MonitorDto { /** * è¤ç³äºæå头ç¸å ³åæ°å¼å§ */ private String deviceSerial; private String deviceName; private String model; private Integer status; private Integer isEncrypt; private LocalDateTime updateTime; private String netAddress; public String getDeviceSerial() { return deviceSerial; } public void setDeviceSerial(String deviceSerial) { this.deviceSerial = deviceSerial; } public String getDeviceName() { return deviceName; } public void setDeviceName(String deviceName) { this.deviceName = deviceName; } public String getModel() { return model; } public void setModel(String model) { this.model = model; } public Integer getStatus() { return status; } public void setStatus(Integer status) { this.status = status; } public Integer getIsEncrypt() { return isEncrypt; } public void setIsEncrypt(Integer isEncrypt) { this.isEncrypt = isEncrypt; } public LocalDateTime getUpdateTime() { return updateTime; } public void setUpdateTime(LocalDateTime updateTime) { this.updateTime = updateTime; } public String getNetAddress() { return netAddress; } public void setNetAddress(String netAddress) { this.netAddress = netAddress; } /** * è¤ç³äºæå头ç¸å ³åæ°ç»æ */ /** * è¤ç³äºæåå¤´ææ¾å°åç¸å ³åæ°å¼å§ */ private String id; private String url; private String expireTime; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getExpireTime() { return expireTime; } public void setExpireTime(String expireTime) { this.expireTime = expireTime; } /** * è¤ç³äºæåå¤´ææ¾å°åç¸å ³åæ°ç»æ */ } } ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/AmqpMessageListener.java
@@ -109,18 +109,28 @@ String functionCode = frame.getPayload().substring(2, 4); if (A5C3ReportEnum.NETWORK_REQUEST.getCode().equals(functionCode)) { A5C3CommonReportInnerFrame netRequestFrame = new A5C3CommonReportInnerFrame().transformFrame(frame.getPayload()); log.info("C3å çµæ¡©ä¸æ¥å¤ç_netRequestFrame"); log.info(netRequestFrame.toString()); } else if (A5C3ReportEnum.QR_CODE_REQUEST.getCode().equals(functionCode)) { A5C3CommonReportInnerFrame codeRequestFrame = new A5C3CommonReportInnerFrame().transformFrame(frame.getPayload()); log.info("C3å çµæ¡©ä¸æ¥å¤ç_codeRequestFrame"); log.info(codeRequestFrame.toString()); } else if (A5C3ReportEnum.HEART_BEAT.getCode().equals(functionCode)) { A5C3HeartbeatReportInnerFrame heartbeatReportInnerFrame = new A5C3HeartbeatReportInnerFrame().transformFrame(frame.getPayload()); log.info("C3å çµæ¡©ä¸æ¥å¤ç_heartbeatReportInnerFrame"); log.info(heartbeatReportInnerFrame.toString()); } else if (A5C3ReportEnum.CHARGE_COMPLETE.getCode().equals(functionCode)) { A5C3CommonReportInnerFrame completeRequestFrame = new A5C3CommonReportInnerFrame().transformFrame(frame.getPayload()); log.info("C3å çµæ¡©ä¸æ¥å¤ç_completeRequestFrame"); log.info(completeRequestFrame.toString()); } else if (A5C3ReportEnum.CHARGE_STOP.getCode().equals(functionCode)) { A5C3CommonReportInnerFrame stopRequestFrame = new A5C3CommonReportInnerFrame().transformFrame(frame.getPayload()); log.info("C3å çµæ¡©ä¸æ¥å¤ç_stopRequestFrame"); log.info(stopRequestFrame.toString()); } else if (A5C3ReportEnum.ERROR_CODE.getCode().equals(functionCode)) { A5C3ErrorCodeReportInnerFrame errorCodeRequestFrame = new A5C3ErrorCodeReportInnerFrame().transformFrame(frame.getPayload()); log.info("C3å çµæ¡©ä¸æ¥å¤ç_errorCodeRequestFrame"); log.info(errorCodeRequestFrame.toString()); } } ximon-admin/src/main/java/com/sandu/ximon/admin/param/MonitorParam.java
@@ -28,4 +28,13 @@ /** * ç»æè¤ç³äºæå头ç¸å ³åæ° */ /** * å¼å§è¤ç³äºæåå¤´ææ¾å°åç¸å ³åæ° */ //æµææ¾åè®®ï¼1-ezopenã2-hlsã3-rtmpã4-flvï¼é»è®¤ä¸º1 private int protocol; /** * ç»æè¤ç³äºæåå¤´ææ¾å°åç¸å ³åæ° */ } ximon-admin/src/main/java/com/sandu/ximon/admin/param/WaterQualityEquipmentParam.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ package com.sandu.ximon.admin.param; import lombok.Data; /** * @author ZZQ * @date 2021/12/22 11:03 */ @Data public class WaterQualityEquipmentParam { private String waterQualityEquipmentCode; private int equipmentState; private String belongTo; } ximon-admin/src/main/java/com/sandu/ximon/admin/schedule/WaterQualityDataSchedule.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,33 @@ package com.sandu.ximon.admin.schedule; import com.sandu.ximon.admin.service.WaterQualityDataService; import com.sandu.ximon.admin.service.WaterQualityEquipmentService; import com.sandu.ximon.dao.domain.WaterQualityEquipment; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.List; /** * @author ZZQ * @date 2021/12/23 14:45 */ @Component @Slf4j @AllArgsConstructor @EnableScheduling public class WaterQualityDataSchedule { private WaterQualityEquipmentService waterQualityEquipmentService; private WaterQualityDataService waterQualityDataService; @Scheduled(cron = "0 0 0/1 * * ?") public void UserSubjectRefund() { List<WaterQualityEquipment> waterQualityEquipmentList = waterQualityEquipmentService.listWaterQualityEquipment(); for (WaterQualityEquipment waterQualityEquipment : waterQualityEquipmentList) { waterQualityDataService.getWaterQualityDataInfo(waterQualityEquipment.getWaterQualityEquipmentCode()); } } } ximon-admin/src/main/java/com/sandu/ximon/admin/service/MonitorService.java
@@ -9,8 +9,8 @@ import com.sandu.common.service.impl.BaseServiceImpl; import com.sandu.ximon.admin.param.MonitorParam; import com.sandu.ximon.dao.domain.Monitor; import com.sandu.ximon.dao.domain.YSY_AccessTokenDto; import com.sandu.ximon.dao.domain.YSY_MonitorDto; import com.sandu.ximon.admin.dto.YSY_AccessTokenDto; import com.sandu.ximon.admin.dto.YSY_MonitorDto; import com.sandu.ximon.dao.mapper.MonitorMapper; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; @@ -38,6 +38,8 @@ private static final String DELETE_DEVICE_URL = "/device/delete"; //è·åè¤ç³äºå个设å¤ä¿¡æ¯ private static final String GET_DEVICE_URL = "/device/info"; //è·åè¤ç³äºæåå¤´ææ¾å°åURL private static final String GET_VEDIO_URL = "/v2/live/address/get"; /** * æ¥è¯¢å ¨é¨æå头 @@ -173,6 +175,7 @@ if (one == null) { return save(monitor); } else { monitor.setId(one.getId()); return updateById(monitor); } } @@ -200,5 +203,27 @@ return updateById(monitor); } /** * è¿åæå头宿¶ç»é¢ææ¾å°å * * @param accessToken * @param deviceSerial * @return */ public String getMonitorVideoUrl(String accessToken, String deviceSerial, int protocol) { Map<String, Object> paramMap = new HashMap<>(); paramMap.put("accessToken", accessToken); paramMap.put("deviceSerial", deviceSerial); paramMap.put("protocol", protocol); String s = HttpUtil.post(YSY_URL + GET_VEDIO_URL, paramMap); System.out.println(s); YSY_MonitorDto monitor = JSON.parseObject(s, YSY_MonitorDto.class); if ("200".equals(monitor.getCode())) { return monitor.getData().getUrl(); } else { throw new BusinessException(monitor.getMsg()); } } } ximon-admin/src/main/java/com/sandu/ximon/admin/service/WaterQualityDataService.java
@@ -1,13 +1,14 @@ package com.sandu.ximon.admin.service; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.sandu.common.execption.BusinessException; import com.sandu.common.service.impl.BaseServiceImpl; import com.sandu.ximon.admin.dto.WaterQualityDataDto; import com.sandu.ximon.dao.domain.WaterQualityData; import com.sandu.ximon.dao.domain.WaterQualityEquipment; import com.sandu.ximon.dao.mapper.WaterQualityDataMapper; import com.sandu.ximon.dao.mapper.WaterQualityEquipmentMapper; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; @@ -16,6 +17,8 @@ @Service @AllArgsConstructor public class WaterQualityDataService extends BaseServiceImpl<WaterQualityDataMapper, WaterQualityData> { //æ°´è´¨åæ°è·åç½åï¼ä¾å¦ï¼"http://iot.ainongye.cn/json/设å¤ç¼å·.json" private final String WATER_QUALITY_DATA_URL = "http://iot.ainongye.cn/json/"; /** * æ¥è¯¢å ¨é¨æ°´è´¨è®¾å¤æ°æ® @@ -33,12 +36,50 @@ public List<WaterQualityData> listWaterQualityDataByKeyword(String keyword) { LambdaQueryWrapper<WaterQualityData> wrapper = Wrappers.lambdaQuery(WaterQualityData.class); if(keyword != null){ wrapper.like(WaterQualityData::getBelongTo,keyword); if (keyword != null) { wrapper.like(WaterQualityData::getBelongTo, keyword); } List<WaterQualityData> waterQualityDataList = list(wrapper); return waterQualityDataList; } /** * è·åæ°´è´¨æ°æ® * * @param waterQualityEquipmentCode 设å¤ç¼å· */ public WaterQualityDataDto getWaterQualityDataInfo(String waterQualityEquipmentCode) { WaterQualityDataDto waterQualityDataDto = null; try { String s = HttpUtil.get(WATER_QUALITY_DATA_URL + waterQualityEquipmentCode + ".json"); System.out.println(s); waterQualityDataDto = JSON.parseObject(s, WaterQualityDataDto.class); WaterQualityData waterQualityData = new WaterQualityData(); for (WaterQualityDataDto.WaterQualityBean bean : waterQualityDataDto.getData()) { switch (bean.getCode()) { case "A211"://æ°´è´¨PH waterQualityData.setWaterQualityPh(bean.getValue()); break; case "A203"://水质溶解氧 waterQualityData.setWaterQualityDo(bean.getValue()); break; case "A343"://æµåº¦ waterQualityData.setWaterQualityNtu(bean.getValue()); break; case "A209"://çµå¯¼ç waterQualityData.setWaterQualityEc(bean.getValue()); break; default: } } waterQualityData.setWaterQualityEquipmentCode(waterQualityDataDto.getDid()); save(waterQualityData); } catch (Exception e) { e.printStackTrace(); throw new BusinessException("水质设å¤å·ä¸æ£ç¡®"); } return waterQualityDataDto; } } ximon-admin/src/main/java/com/sandu/ximon/admin/service/WaterQualityEquipmentService.java
@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.sandu.common.execption.BusinessException; import com.sandu.common.service.impl.BaseServiceImpl; import com.sandu.ximon.admin.param.WaterQualityEquipmentParam; import com.sandu.ximon.dao.domain.AirEquipment; import com.sandu.ximon.dao.domain.Monitor; import com.sandu.ximon.dao.domain.WaterQualityEquipment; import com.sandu.ximon.dao.mapper.AirEquipmentMapper; import com.sandu.ximon.dao.mapper.WaterQualityEquipmentMapper; @@ -33,8 +35,8 @@ public List<WaterQualityEquipment> listWaterQualityEquipmentByKeyword(String keyword) { LambdaQueryWrapper<WaterQualityEquipment> wrapper = Wrappers.lambdaQuery(WaterQualityEquipment.class); if(keyword != null){ wrapper.like(WaterQualityEquipment::getBelongTo,keyword); if (keyword != null) { wrapper.like(WaterQualityEquipment::getBelongTo, keyword); } List<WaterQualityEquipment> airDataList = list(wrapper); return airDataList; @@ -53,4 +55,25 @@ } return removeById(Id); } /** * æ·»å æ°´è´¨è®¾å¤ * * @param waterQualityEquipment * @return */ public boolean addWaterQualityEquipment(WaterQualityEquipment waterQualityEquipment) { if (waterQualityEquipment.getWaterQualityEquipmentCode() == null) { throw new BusinessException("ç¼ºå°æ°´è´¨è®¾å¤å·åæ°"); } WaterQualityEquipment one = getOne(Wrappers.lambdaQuery(WaterQualityEquipment.class).eq(WaterQualityEquipment::getWaterQualityEquipmentCode, waterQualityEquipment.getWaterQualityEquipmentCode())); if (one == null) { return save(waterQualityEquipment); } else { waterQualityEquipment.setId(one.getId()); return updateById(waterQualityEquipment); } } }