| ximon-admin/src/main/java/com/sandu/ximon/admin/config/VnnoxUrl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ximon-admin/src/main/java/com/sandu/ximon/admin/param/PushAirDataToNovaParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ximon-admin/src/main/java/com/sandu/ximon/admin/service/VnnoxService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ximon-admin/src/main/java/com/sandu/ximon/admin/utils/VnnoxProgramAPIUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ximon-admin/src/main/java/com/sandu/ximon/admin/vo/NovaWeatherVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ximon-admin/src/main/java/com/sandu/ximon/admin/config/VnnoxUrl.java
@@ -17,6 +17,8 @@ public static String CHANGE_BRIGHTNESS = "/v1/player/immediateControl/brightness"; // æ®éèç® public static String NORMAL_PROGRAM = "/v1/player/program/normal"; //æ¨é天æ°ä½¿ç¨ å页紧æ¥ä»»å¡ public static String EMERGENCY_PROGRAM = "/v1/player/program/emergency"; // æªå¾ public static String SCREEN_SHOT = "/v1/player/control/screenshot"; // éå¯ ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleController.java
@@ -6,15 +6,13 @@ import com.github.pagehelper.PageHelper; import com.sandu.common.domain.CommonPage; import com.sandu.common.domain.ResponseVO; import com.sandu.common.execption.BusinessException; import com.sandu.common.object.BaseConditionVO; import com.sandu.common.security.annotation.AnonymousAccess; import com.sandu.common.util.ResponseUtil; import com.sandu.ximon.admin.dto.DeviceStatus; import com.sandu.ximon.admin.dto.DeviceStatusDto; import com.sandu.ximon.admin.param.PoleBindParam; import com.sandu.ximon.admin.param.PoleBindingParam; import com.sandu.ximon.admin.param.PoleParam; import com.sandu.ximon.admin.param.PoleStatesParam; import com.sandu.ximon.admin.param.*; import com.sandu.ximon.admin.security.PermissionConfig; import com.sandu.ximon.admin.service.AirEquipmentService; import com.sandu.ximon.admin.service.IpVolumeService; @@ -388,12 +386,15 @@ /** * æ¨é大æ°è®¾å¤å°è¯ºç¦ */ @GetMapping("/pushAidDataToNova/{poleId}") public ResponseVO<Object> pushAirDataToNova(@PathVariable Long poleId) { @GetMapping("/pushAidDataToNova") public ResponseVO<Object> pushAirDataToNova(@RequestBody @Validated PushAirDataToNovaParam param) { if (!permissionConfig.check(MenuEnum.PUSH_AIR_DATA_TO_NOVA.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } return ResponseUtil.success(poleService.pushAirDataToNova(poleId)); if (param.getDuration() <= 0 || param.getDuration() > 86400000) { throw new BusinessException("ææ¾æ¶é´é大äºé¶ä¸å°äº86400000 !"); } return ResponseUtil.success(poleService.pushAirDataToNova(param)); } /** ximon-admin/src/main/java/com/sandu/ximon/admin/param/PushAirDataToNovaParam.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.sandu.ximon.admin.param; import lombok.Data; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; /** * @author LiuHaoNan * @date 2022/9/15 * æ¨éå¤§æ°æ°æ®å°çè®¯åæ°æ¥æ¶ */ @Data public class PushAirDataToNovaParam { @NotNull(message = "ç¯ææ¶é´ä¸è½ä¸ºç©º") private Long poleId; @NotNull(message = "ææ¾æ¶é´(毫ç§)ä¸è½ä¸ºç©ºä¸å¤§äº0") // @Min(value = 0, message = "ææ¾æ¶é´(毫ç§)ä¸è½ä¸ºç©ºä¸å¤§äº0") private Long duration; } ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
@@ -32,6 +32,7 @@ import com.sandu.ximon.admin.param.PoleBindingParam; import com.sandu.ximon.admin.param.PoleParam; import com.sandu.ximon.admin.param.PoleStatesParam; import com.sandu.ximon.admin.param.PushAirDataToNovaParam; import com.sandu.ximon.admin.redis.LightKey; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.admin.utils.LightemitUtils; @@ -937,7 +938,8 @@ /** * æ¨é大æ°çæµæ°æ®å°novaLED */ public VnnoxResult pushAirDataToNova(Long poleId) { public VnnoxResult pushAirDataToNova(PushAirDataToNovaParam param) { Long poleId=param.getPoleId(); Pole pole = getById(poleId); PoleBinding air = poleBindingService.getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getPoleId, poleId).eq(PoleBinding::getDeviceType, 3)); PoleBinding nova = poleBindingService.getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getPoleId, poleId).eq(PoleBinding::getDeviceType, 1)); @@ -954,7 +956,8 @@ //è·å大æ°çæµæ°æ® A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage data = SpringContextHolder.getBean(AirDataService.class).getDataByPoleid(poleId); //æ¨éæ°æ® return SpringContextHolder.getBean(VnnoxService.class).publishWaterData(LED.getPlayerId(), data); // return SpringContextHolder.getBean(VnnoxService.class).publishWaterData(LED.getPlayerId(),param.getDuration(), data); return SpringContextHolder.getBean(VnnoxService.class).WaterData(LED.getPlayerId(),param.getDuration(), data); } ximon-admin/src/main/java/com/sandu/ximon/admin/service/VnnoxService.java
@@ -18,6 +18,7 @@ import com.sandu.ximon.admin.utils.response.VnnoxResultResponse; import com.sandu.ximon.admin.vo.NovaPushResultVO; import com.sandu.ximon.admin.vo.NovaScreenShorUrlVO; import com.sandu.ximon.admin.vo.NovaWeatherVO; import com.sandu.ximon.dao.domain.LedPlayerEntity; import com.sandu.ximon.dao.domain.LedPlayerInfoEntity; import com.sandu.ximon.dao.domain.LedV2RegisterResultEntity; @@ -173,7 +174,7 @@ VnnoxResult vnnoxResult = vnnoxAPIUtil.volChange(playerList.stream().map(item -> item.getPlayerId()).collect(Collectors.toList()), vol); // æ ¹æ®é³éè°æ´REDISæ è¯ä½ for (String playerId : vnnoxResult.getSuccess()) { redisUtils.set(VnnoxConstant.REDIS_VOL + playerId, vol,VnnoxConstant.STATUS_TIME); redisUtils.set(VnnoxConstant.REDIS_VOL + playerId, vol, VnnoxConstant.STATUS_TIME); } List<String> success = vnnoxResult.getSuccess(); List<String> fail = vnnoxResult.getFail(); @@ -563,35 +564,27 @@ } public VnnoxResult publishWaterData(String playerId, A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage poleSensorEntity) { public VnnoxResult WaterData(String playerId, Long duration, A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage poleSensorEntity) { List<String> playerIds = new ArrayList<>(); playerIds.add(playerId); AirDataProgram playerProgram = new AirDataProgram(); NovaWeatherVO playerProgram = new NovaWeatherVO(); playerProgram.setPlayerIds(playerIds); PlayerPage playerPage = new PlayerPage(); playerPage.setName("AirData page"); List<PlayerWidget> widgetList = generateWaterAndSensorWidget(poleSensorEntity); playerPage.setWidgets(widgetList); List<PlayerPage> list = new ArrayList<>(); list.add(playerPage); playerProgram.setPages(list); playerProgram.setNoticeUrl(VnnoxConstant.NOTIFY_URL); /** * è¯ºç¦æ¨éå¤§æ°æ°æ® æ¥å¿è®°å½å¼å§ //// */ // String content = "{诺ç¦playerIdï¼" + playerId + ",èç®å 容ï¼" + JSON.toJSONString(playerProgram) + " }"; // StoreOperationRecordsUtils.storeOperationData(null, null, "å¤§æ°æ°æ®æ¨éå°è¯ºç¦", content); /** * è¯ºç¦æ¨éå¤§æ°æ°æ® æ¥å¿è®°å½ç»æ */ return vnnoxProgramAPIUtil.normalProgram(playerProgram).getData(); NovaWeatherVO.AttributeDTO attributeDTO = new NovaWeatherVO.AttributeDTO(); attributeDTO.setDuration(duration); playerProgram.setAttribute(attributeDTO); List<NovaWeatherVO.PageDTO.WidgetsDTO> widgets = setWeather(duration, poleSensorEntity); NovaWeatherVO.PageDTO page = new NovaWeatherVO.PageDTO(); page.setWidgets(widgets); playerProgram.setPage(page); return vnnoxProgramAPIUtil.emergencyProgram(playerProgram).getData(); } private List<PlayerWidget> generateWaterAndSensorWidget(A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage poleSensorEntity) { private List<NovaWeatherVO.PageDTO.WidgetsDTO> setWeather(Long duration, A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage poleSensorEntity) { List widgetList = new ArrayList<>(); List<NovaWeatherVO.PageDTO.WidgetsDTO> widgets = new ArrayList<>(); List<String> list = new ArrayList<>(); if (Objects.nonNull(poleSensorEntity)) { list.add("ç¯å¢çæµï¼"); @@ -601,11 +594,49 @@ list.add("pm10ï¼" + poleSensorEntity.getPm10() + "μg/m³"); list.add("ç²éï¼" + poleSensorEntity.getEch2o() + "μg/m³"); list.add("CO2ï¼" + poleSensorEntity.getCo2() + "ppm"); } else { list.add("大æ°è®¾å¤ä¸å¨çº¿"); list.add("ç®åæ¯åºå®æ°æ®ï¼"); list.add("ç¯å¢çæµï¼"); list.add("æ¸©åº¦ï¼ 40°"); list.add("æ¹¿åº¦ï¼ 60%"); list.add("pm25ï¼0.58 μg/m³"); list.add("pm10ï¼0.58 μg/m³"); list.add("ç²éï¼99.9 μg/m³"); list.add("CO2ï¼200 ppm"); } widgetList.add(new PlayerWidget().generateScrollUpTextWidget("weather", 1, 100000L, list, "#FFFFFF", 15, new PlayerLayout("0%", "5%", "100%", "100%"))); return widgetList; List<NovaWeatherVO.PageDTO.WidgetsDTO.LinesDTO> lines = new ArrayList<>(); list.forEach( txt -> { List<NovaWeatherVO.PageDTO.WidgetsDTO.LinesDTO.TextAttributesDTO> textAttributes = new ArrayList<>(); NovaWeatherVO.PageDTO.WidgetsDTO.LinesDTO linesDTO = new NovaWeatherVO.PageDTO.WidgetsDTO.LinesDTO(); NovaWeatherVO.PageDTO.WidgetsDTO.LinesDTO.TextAttributesDTO textAttributesDTO = new NovaWeatherVO.PageDTO.WidgetsDTO.LinesDTO.TextAttributesDTO(); textAttributesDTO.setContent(txt); textAttributes.add(textAttributesDTO); System.out.println(txt + "ææ¬å 容"); linesDTO.setTextAttributes(textAttributes); lines.add(linesDTO); } ); NovaWeatherVO.PageDTO.WidgetsDTO widgetsDTO = new NovaWeatherVO.PageDTO.WidgetsDTO(); NovaWeatherVO.PageDTO.WidgetsDTO.ScrollAttributeDTO scrollAttribute = new NovaWeatherVO.PageDTO.WidgetsDTO.ScrollAttributeDTO(); NovaWeatherVO.PageDTO.WidgetsDTO.LayoutDTO layout = new NovaWeatherVO.PageDTO.WidgetsDTO.LayoutDTO(); widgetsDTO.setScrollAttribute(scrollAttribute); widgetsDTO.setLayout(layout); widgetsDTO.setLines(lines); widgetsDTO.setDuration(duration); widgets.add(widgetsDTO); System.out.println(lines + "ææ¾å 容"); return widgets; } ximon-admin/src/main/java/com/sandu/ximon/admin/utils/VnnoxProgramAPIUtil.java
@@ -7,6 +7,7 @@ import com.sandu.ximon.admin.dto.nova.ProgramSchedule; import com.sandu.ximon.admin.utils.request.CommonHeader; import com.sandu.ximon.admin.utils.response.VnnoxResultResponse; import com.sandu.ximon.admin.vo.NovaWeatherVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -28,7 +29,25 @@ * @param * @return */ public VnnoxResultResponse normalProgram(AirDataProgram program) { public VnnoxResultResponse emergencyProgram(NovaWeatherVO program) { String result = VnnoxRequestUtil.PostWithHeader( VnnoxUrl.getUrl(VnnoxUrl.EMERGENCY_PROGRAM), program.toJson(), new CommonHeader(CommonHeader.JSON, true) ); System.out.println(program.toJson()); LogUtils.error("èç®ææ¾response:" + result); return JSON.parseObject(result, VnnoxResultResponse.class); } /** * 大æ°ä¿¡æ¯æ¨é * * @param * @return */ public VnnoxResultResponse emergencyProgram(AirDataProgram program) { String result = VnnoxRequestUtil.PostWithHeader( VnnoxUrl.getUrl(VnnoxUrl.NORMAL_PROGRAM), ximon-admin/src/main/java/com/sandu/ximon/admin/vo/NovaWeatherVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,110 @@ package com.sandu.ximon.admin.vo; import com.sandu.ximon.admin.config.VnnoxConstant; import com.sandu.ximon.admin.utils.request.VnnoxRequest; import lombok.Data; import lombok.NoArgsConstructor; import java.util.List; /** * @author LiuHaoNan * @date 2022/9/15 */ @NoArgsConstructor @Data public class NovaWeatherVO implements VnnoxRequest { private List<String> playerIds; private AttributeDTO attribute; private PageDTO page; @NoArgsConstructor @Data public static class AttributeDTO { private String spotsType = "IMMEDIATELY"; private String normalProgramStatus = "PAUSE"; private Long duration; } @Data public static class PageDTO { private String name = "weateher_page"; private List<WidgetsDTO> widgets; @NoArgsConstructor @Data public static class WidgetsDTO { private String type = "ARCH_TEXT"; private String displayType = "SCROLL"; private String backgroundColor = "#00000000"; private ScrollAttributeDTO scrollAttribute; private Long duration; private List<LinesDTO> lines; private LayoutDTO layout; @NoArgsConstructor @Data public static class ScrollAttributeDTO { private String animation = "MARQUEE_UP"; private Integer speed = 1; } @NoArgsConstructor @Data public static class LayoutDTO { private String x = "0%"; private String y = "5%"; private String width = "100%"; private String height = "100%"; } @NoArgsConstructor @Data public static class LinesDTO { private List<TextAttributesDTO> textAttributes; @NoArgsConstructor @Data public static class TextAttributesDTO { private String content; private Integer fontSize = 15; private String textColor = "#FFFFFF"; private Boolean isUnderline = false; } } } } @Override public String toJson() { return VnnoxConstant.GSON.toJson(this); } }