dao/src/main/java/com/sandu/ximon/dao/domain/PoleBinding.java
@@ -37,7 +37,7 @@ private String deviceCode; /** * 设å¤ç±»åï¼0è·¯ç¯ï¼1诺ç¦ï¼2å çµæ¡©ï¼3大æ°çæµï¼4æ°´è´¨çæµï¼5ip鳿±ï¼6lcdå¹¿åæºï¼7æå头ï¼8æä½å¾æµï¼9ä¸é®æå© ,10 ç讯 * 设å¤ç±»åï¼0è·¯ç¯ï¼1诺ç¦ï¼2å çµæ¡©ï¼3大æ°çæµï¼4æ°´è´¨çæµï¼5ip鳿±ï¼6lcdå¹¿åæºï¼7æå头ï¼8æä½å¾æµï¼9ä¸é®æå© ,10 ç讯 11大æ°åè */ private Integer deviceType; dao/src/main/java/com/sandu/ximon/dao/mapper/AirDataMapper.java
@@ -19,7 +19,7 @@ List<AirDataBo> listAirDataByIds(List<Long> airIdList); String getCodeByPoleId(Long poleId ,Long userId); String getCodeByPoleId(Long poleId ,Long clientId); } dao/src/main/resources/mapper/AirDataMapper.xml
@@ -80,10 +80,10 @@ from pole_binding t1 left join pole t2 on t1.pole_id = t2.id where t1.device_type = 3 t1.pole_id = #{poleId} <if test="userId != null"> and t1.pole_id = #{poleId} <if test="clientId != null"> AND (t2.user_id = #{clientId} OR t2.client_id = #{clientId}) </if> </select> </mapper> </select> </mapper> ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AirDataController.java
@@ -2,6 +2,7 @@ import com.sandu.common.domain.ResponseVO; import com.sandu.common.object.BaseConditionVO; import com.sandu.common.security.annotation.AnonymousAccess; 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; @@ -57,6 +58,17 @@ return ResponseUtil.success(list); } /** * æ ¹æ®ç¯ææ¥è¯¢å¤§æ°æ°æ® * @param * @return */ @AnonymousAccess @GetMapping("/listAirDataByLamp") public ResponseVO<Object> listAirDataByLamp(@RequestParam Long lampId) { return ResponseUtil.success(airDataService.getDataByPoleid(lampId)); } @PostMapping("/updateAirEquipmentInfo") public ResponseVO<Object> updataAirEquipmentInfo(@RequestBody List<String> listMac) { AirDataReqInnerFrame airDataReqInnerFrame = new AirDataReqInnerFrame(); ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleController.java
@@ -263,4 +263,20 @@ } /** * æ¨é大æ°è®¾å¤å°è¯ºç¦ */ @GetMapping("/pushAidDataToNova/{poleId}") public ResponseVO<Object> pushAirDataToNova(@PathVariable Long poleId) { return ResponseUtil.success(poleService.pushAirDataToNova(poleId)); } /** * æ¨é大æ°è®¾å¤å°ç讯 */ @GetMapping("/pushAirDataToXiXun/{poleId}") public ResponseVO<Object> pushAirDataToXiXun(@PathVariable Long poleId) { return ResponseUtil.success(poleService.pushAirDataToXiXun(poleId)); } } ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/AirDataProgram.javacopy from ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/PlayerProgram.java copy to ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/AirDataProgram.java
Îļþ´Ó ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/PlayerProgram.java ¸´ÖÆ @@ -1,7 +1,8 @@ package com.sandu.ximon.admin.utils.request; package com.sandu.ximon.admin.dto.nova; import com.sandu.ximon.admin.config.VnnoxConstant; import com.sandu.ximon.admin.dto.SchedulesDTO; import com.sandu.ximon.admin.utils.request.VnnoxRequest; import lombok.Data; import java.util.List; @@ -9,9 +10,10 @@ /** * æ®éèç® * æ¨é大æ°ç¨ */ @Data public class PlayerProgram implements VnnoxRequest { public class AirDataProgram implements VnnoxRequest { // éè¦å¤ççææ¾å¨IDéå,æå¤æ¯æ100ä¸ªææ¾å¨åæ¶å¤ç private List<String> playerIds; @@ -19,7 +21,7 @@ // private List<SchedulesDTO> schedules; private List<SchedulesDTO> schedules; // éè¦ææ¾ç页é¢å 容éå private List<Map<String,Object>> pages ; private List pages ; // èç®ä¸è½½è¿åº¦éç¥æ¥å£ï¼ä¼éè¿æ¤æ¥å£å°èç®çä¸è½½è¿åº¦åç»å®¢æ·ï¼æ¥å£çååºæ¶é´ä¸è½è¶ è¿3s private String noticeUrl; ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerAnimation.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package com.sandu.ximon.admin.dto.nova; import lombok.Data; /** * inAnimation åæ° */ @Data public class PlayerAnimation { // ç¹æçç±»å private PlayerAnimationType type; // ç¹æçæç»æ¶é¿ï¼å使¯«ç§ private Long duration; public PlayerAnimation(PlayerAnimationType type, Long durantion) { this.type = type; this.duration = durantion; } } ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerAnimationType.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,12 @@ package com.sandu.ximon.admin.dto.nova; public enum PlayerAnimationType { /** * ç¹æçç±»å * NONE-æ ç¹æ * RANDOM-éæºç¹æ */ NONE, RANDOM } ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerLayout.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ package com.sandu.ximon.admin.dto.nova; import lombok.Data; @Data public class PlayerLayout { private String x; private String y; private String width; private String height; public PlayerLayout(String x,String y,String width,String height) { this.x = x; this.y = y; this.width = width; this.height = height; } } ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerMedia.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,25 @@ package com.sandu.ximon.admin.dto.nova; import lombok.Data; /** * çªå£çå 容 */ @Data public class PlayerMedia { private Integer zIndex; private PlayerWidgetType type; private Long size; private String md5; private Long duration; private String url; private PlayerAnimation inAnimation; } ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerOffline.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ package com.sandu.ximon.admin.dto.nova; import lombok.Data; @Data public class PlayerOffline { private String url; private Long size; private String md5; } ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerPage.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,15 @@ package com.sandu.ximon.admin.dto.nova; import lombok.Data; import java.util.List; @Data public class PlayerPage { // 页é¢åç§° private String name; // 页é¢ä¸çç»ä»¶ private List<PlayerWidget> widgets; } ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerProgram.java
ÎļþÃû´Ó ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/PlayerProgram.java ÐÞ¸Ä @@ -1,7 +1,8 @@ package com.sandu.ximon.admin.utils.request; package com.sandu.ximon.admin.dto.nova; import com.sandu.ximon.admin.config.VnnoxConstant; import com.sandu.ximon.admin.dto.SchedulesDTO; import com.sandu.ximon.admin.utils.request.VnnoxRequest; import lombok.Data; import java.util.List; ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerWidget.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,153 @@ package com.sandu.ximon.admin.dto.nova; import com.sandu.ximon.admin.config.VnnoxConstant; import com.sandu.ximon.dao.domain.LEDProgramFile; import lombok.Data; import java.util.ArrayList; import java.util.List; @Data public class PlayerWidget { // ç»ä»¶åç§°ï¼ç¨äºæ¥å¿æ¥è¯¢ä½¿ç¨ï¼è¥ä¸å¡«åï¼æ¥å¿æ¥è¯¢æ¶å¾é¾åºå private String name; // ç»ä»¶ç±»å //PICTURE - å¾ç //VIDEO-è§é¢ //ARCH_TEXT- ææ¬ //SIMPLE_RSS - rssåªä½ //HTML - ç½é¡µåªä½ //STREAM_MEDIA - æµåªä½ //BOX - çªå£ private PlayerWidgetType type; // å¾çåè§é¢ä¸ºå¿ 填项ï¼å 容为å¾çæè§é¢çmd5å¼ private String md5; // å¾çæè§é¢ç大å°byte private PlayerWidgetDisplayType displayType; // æåæ´ä½èæ¯é¢è²ï¼#00000000代表éæè² private String backgroundColor; // å½ææ¾æ¹å¼ä¸ºâæ»å¨âæ¶å¿ å¡« private PlayerWidgetScrollAttribute scrollAttribute; // å¤è¡æåæ¾ç¤ºéå private List<PlayerWidgetLine> lines; // å¾çæè§é¢ç大å°byte private Long size; // ç»ä»¶çææ¾æ¶é¿ï¼ç²¾ç¡®å°æ¯«ç§ private Long duration; // å¾ç\è§é¢\rss\ç½é¡µåªä½\æµåªä½ç访é®å°å, éè¦èªè¡éªè¯å°åçæææ§ private String url; // ç»ä»¶çä¸ä¸è¦ç顺åºï¼æ°åè¶å¤§å¾å±è¶å¾ä¸ï¼é»è®¤0 private Integer zIndex; // ç»ä»¶å¨é¡µé¢çä½ç½® private PlayerLayout layout; // ç»ä»¶çå ¥åºç¹æï¼é»è®¤æ ç¹æ private PlayerAnimation inAnimation; // çªå£çå 容,ç±»å为çªå£æ¶å¿ å¡«ï¼åèWidgetç屿§ï¼ä¹å¯ä»¥åèä¸é¢çç¤ºä¾ private List<PlayerMedia> mediaList; // htmlç»ä»¶ç¦»çº¿ææ¾åªä½ï¼å®å¶åè½ï¼ private PlayerOffline offline; public PlayerWidget generateMediaWidget (String widgetName, Integer zIndex, PlayerWidgetType playerWidgetType, LEDProgramFile file, PlayerLayout playerLayout, PlayerAnimation animation) { this.setName(widgetName); this.setZIndex(zIndex); this.setType(playerWidgetType); this.setSize(Long.getLong(file.getSize())); this.setMd5(file.getMd5()); this.setDuration(VnnoxConstant.REDIS_MAX_SAVE_TIME); this.setUrl(file.getFileUrl()); this.setLayout(playerLayout); this.setInAnimation(animation); return this; } public PlayerWidget generateScrollUpTextWidget (String widgetName, Integer zIndex, Long duration, List<String> content, String contentColor, Integer fontSize, PlayerLayout playerLayout) { this.setName(widgetName); this.setZIndex(zIndex); this.setType(PlayerWidgetType.ARCH_TEXT); this.setDisplayType(PlayerWidgetDisplayType.SCROLL); this.setBackgroundColor("#00000000"); this.setScrollAttribute( new PlayerWidgetScrollAttribute( PlayerWidgetScrollAttributeAnimation.MARQUEE_UP,1 ) ); this.setDuration(duration); List<PlayerWidgetLine> playerWidgetLineList = new ArrayList<>(); for(String str: content) { PlayerWidgetLine playerWidgetLine = new PlayerWidgetLine(); List<PlayerWidgetLineTextAttributes> playerWidgetLineTextAttributesList = new ArrayList<>(); PlayerWidgetLineTextAttributes playerWidgetLineTextAttributes = new PlayerWidgetLineTextAttributes(); playerWidgetLineTextAttributes.setContent(str); playerWidgetLineTextAttributes.setTextColor(contentColor); // "#337FE5" playerWidgetLineTextAttributes.setFontSize(fontSize); playerWidgetLineTextAttributes.setBold(true); playerWidgetLineTextAttributes.setUnderline(false); playerWidgetLineTextAttributesList.add(playerWidgetLineTextAttributes); playerWidgetLine.setTextAttributes(playerWidgetLineTextAttributesList); playerWidgetLineList.add(playerWidgetLine); } this.setLines(playerWidgetLineList); this.setLayout(playerLayout); return this; } public PlayerWidget generateLeftScrollTextWidget( String widgetName, Integer zIndex, Long duration, String content, String contentColor, Integer fontSize, PlayerLayout playerLayout ) { this.setName(widgetName); this.setZIndex(zIndex); this.setType(PlayerWidgetType.ARCH_TEXT); this.setDisplayType(PlayerWidgetDisplayType.SCROLL); this.setBackgroundColor("#00000000"); this.setScrollAttribute( new PlayerWidgetScrollAttribute( PlayerWidgetScrollAttributeAnimation.MARQUEE_LEFT,2 ) ); this.setDuration(duration); List<PlayerWidgetLine> playerWidgetLineList = new ArrayList<>(); List<PlayerWidgetLineTextAttributes> playerWidgetLineTextAttributesList = new ArrayList<>(); PlayerWidgetLine playerWidgetLine = new PlayerWidgetLine(); PlayerWidgetLineTextAttributes playerWidgetLineTextAttributes = new PlayerWidgetLineTextAttributes(); playerWidgetLineTextAttributes.setContent(content); playerWidgetLineTextAttributes.setTextColor(contentColor); // "#337FE5" playerWidgetLineTextAttributes.setFontSize(fontSize); playerWidgetLineTextAttributes.setBold(true); playerWidgetLineTextAttributesList.add(playerWidgetLineTextAttributes); playerWidgetLine.setTextAttributes(playerWidgetLineTextAttributesList); playerWidgetLineList.add(playerWidgetLine); this.setLines(playerWidgetLineList); this.setLayout(playerLayout); return this; } } ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerWidgetDisplayType.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,15 @@ package com.sandu.ximon.admin.dto.nova; public enum PlayerWidgetDisplayType { /** * ææ¾æ¹å¼ * PAGE_SWITCH - 翻页 * SCROLL - æ»å¨ * STATIC -鿢ï¼è¥æåå 容大äºå±å¹ï¼ä» æ¾ç¤ºç¬¬ä¸å±ï¼ */ PAGE_SWITCH, SCROLL, STATIC } ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerWidgetLine.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,15 @@ package com.sandu.ximon.admin.dto.nova; import lombok.Data; import java.util.List; @Data public class PlayerWidgetLine { private List<PlayerWidgetLineTextAttributes> textAttributes; public PlayerWidgetLine(){ } } ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerWidgetLineTextAttributes.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.sandu.ximon.admin.dto.nova; import lombok.Data; @Data public class PlayerWidgetLineTextAttributes { private String content; private Integer fontSize; private String textColor; private boolean isBold; private PlayerWidgetLineTextAttributesFontFamily fontFamily; private boolean isUnderline; private String backgroundColor; } ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerWidgetLineTextAttributesFontFamily.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.sandu.ximon.admin.dto.nova; public enum PlayerWidgetLineTextAttributesFontFamily { /*** * æååä½ï¼é»è®¤ï¼Arialï¼,ææ¾å¨æ¯æçåä½ï¼ * SimSun - å®ä½ * Microsoft YaHei - 微软é é» * KaiTi - æ¥·ä½ * Arial - Arialåä½ * Wingdings2 * Calibri */ SimSun, Microsoft, KaiTi, Arial, Wingdings2, Calibri } ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerWidgetScrollAttribute.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,40 @@ package com.sandu.ximon.admin.dto.nova; public class PlayerWidgetScrollAttribute { private PlayerWidgetScrollAttributeAnimation animation; private Integer speed; private boolean isHeadTail; public PlayerWidgetScrollAttribute(PlayerWidgetScrollAttributeAnimation attributeAnimation, Integer speed) { this.animation = attributeAnimation; this.speed = speed; setHeadTail(true); } public boolean isHeadTail() { return isHeadTail; } public void setHeadTail(boolean isHeadTail) { this.isHeadTail = isHeadTail; } public PlayerWidgetScrollAttributeAnimation getAnimation() { return animation; } public void setAnimation(PlayerWidgetScrollAttributeAnimation animation) { this.animation = animation; } public Integer getSpeed() { return speed; } public void setSpeed(Integer speed) { this.speed = speed; } } ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerWidgetScrollAttributeAnimation.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ package com.sandu.ximon.admin.dto.nova; public enum PlayerWidgetScrollAttributeAnimation { /** * æ»å¨æ¹å * MARQUEE_LEFT -åå·¦æ»å¨ * MARQUEE_UP -å䏿»å¨ */ MARQUEE_LEFT, MARQUEE_UP } ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerWidgetType.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.sandu.ximon.admin.dto.nova; public enum PlayerWidgetType { /** * ç»ä»¶ç±»å * PICTURE - å¾ç * VIDEO-è§é¢ * ARCH_TEXT- ææ¬ * SIMPLE_RSS - rssåªä½ * HTML - ç½é¡µåªä½ * STREAM_MEDIA - æµåªä½ * BOX - çªå£ */ PICTURE, VIDEO, ARCH_TEXT, SIMPLE_RSS, HTML, STREAM_MEDIA, BOX } ximon-admin/src/main/java/com/sandu/ximon/admin/security/test.java
@@ -4,6 +4,7 @@ import org.springframework.security.crypto.password.PasswordEncoder; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; /** * @Author liuhaonan @@ -12,20 +13,29 @@ */ public class test { public static void main(String[] args) { String s="123456";//$2a$10$t0t9gaLuWT/1XFDfbjbUueWcj2G/Dx5vQCrtyRKWNlqkz6C/y.oXK PasswordEncoder pw= new BCryptPasswordEncoder(); //å å¯ String encode=pw.encode(s); System.out.println(encode); //æ¯è¾å¯ç boolean matches=pw.matches(s,encode); System.out.println("=============================="); System.out.println(matches); // LocalDateTime now = LocalDateTime.now(); // Integer week = now.getDayOfWeek().getValue(); // System.out.println("è·åå½åå¨:" + week); // // String s="123456";//$2a$10$t0t9gaLuWT/1XFDfbjbUueWcj2G/Dx5vQCrtyRKWNlqkz6C/y.oXK // PasswordEncoder pw= new BCryptPasswordEncoder(); // //å å¯ // String encode=pw.encode(s); // System.out.println(encode); // //æ¯è¾å¯ç // boolean matches=pw.matches(s,encode); // System.out.println("=============================="); // System.out.println(matches); // // // LocalDateTime now = LocalDateTime.now(); //// Integer week = now.getDayOfWeek().getValue(); //// System.out.println("è·åå½åå¨:" + week); //// String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); System.out.println(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); /** * æ¶é´å符串转为LocalDateTime */ LocalDateTime parse = LocalDateTime.parse(format, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); System.out.println(parse); } } ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirDataService.java
@@ -80,7 +80,7 @@ * + * æ ¹æ®ç¯æidæ¥è¯¢å¤§æ°æ°æ® */ public A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage listAirDataByLightPoleId(Long poleId) { public A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage getDataByPoleid(Long poleId) { String code; if (SecurityUtils.getClientId() != null) { code = baseMapper.getCodeByPoleId(poleId, SecurityUtils.getUserId()); ximon-admin/src/main/java/com/sandu/ximon/admin/service/PlayPlanNvService.java
@@ -11,14 +11,13 @@ import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.admin.utils.VnnoxAPIUtil; import com.sandu.ximon.admin.utils.VnnoxProgramAPIUtil; import com.sandu.ximon.admin.utils.request.PlayerProgram; import com.sandu.ximon.admin.dto.nova.PlayerProgram; import com.sandu.ximon.admin.utils.response.VnnoxResult; import com.sandu.ximon.admin.utils.response.VnnoxResultResponse; import com.sandu.ximon.admin.vo.NovaOpenVO; import com.sandu.ximon.admin.vo.NovaPushResultVO; import com.sandu.ximon.admin.vo.PlansVO; import com.sandu.ximon.dao.domain.LEDProgram; import com.sandu.ximon.dao.domain.LedPlayerEntity; import com.sandu.ximon.dao.domain.PlayPlanNv; import com.sandu.ximon.dao.domain.PushToLed; import com.sandu.ximon.dao.mapper.PlayPlanNvMapper; ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
@@ -17,6 +17,7 @@ import com.sandu.ximon.admin.manager.iot.frame.A1Frame; import com.sandu.ximon.admin.manager.iot.frame.FrameBuilder; import com.sandu.ximon.admin.manager.iot.frame.IRequestFrame; import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5AtmosphereHeartbeatReportInnerFrame; import com.sandu.ximon.admin.manager.iot.frame.inner.request.A1TernaryCodeReqInnerFrame; import com.sandu.ximon.admin.manager.iot.frame.inner.request.A5LightResetReqInnerFrame; import com.sandu.ximon.admin.manager.iot.frame.inner.request.EmptyRequestInnerFrame; @@ -30,10 +31,10 @@ import com.sandu.ximon.admin.redis.LightKey; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.admin.utils.RedisUtils; import com.sandu.ximon.admin.utils.response.VnnoxResult; import com.sandu.ximon.admin.vo.PoleBindVO; import com.sandu.ximon.dao.bo.*; import com.sandu.ximon.dao.domain.*; import com.sandu.ximon.dao.mapper.MonitorMapper; import com.sandu.ximon.dao.mapper.PoleMapper; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -866,4 +867,51 @@ return poleMapper.updateDeviceCode(poleId); } /** * æ¨é大æ°çæµæ°æ®å°novaLED */ public boolean pushAirDataToXiXun(Long poleId) { Pole pole = getById(poleId); PoleBinding air = poleBindingService.getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getPoleId, poleId).eq(PoleBinding::getDeviceType, 3)); PoleBinding xixun = poleBindingService.getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getPoleId, poleId).eq(PoleBinding::getDeviceType, 10)); if (pole == null) { throw new BusinessException("ç¯æä¸åå¨"); } if (air == null) { throw new BusinessException("æªç»å®å¤§æ°çæµè®¾å¤"); } if (xixun == null) { throw new BusinessException("æªç»å®xixun设å¤"); } //è·å大æ°çæµæ°æ® A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage data = SpringContextHolder.getBean(AirDataService.class).getDataByPoleid(poleId); //æ¨éæ°æ® return SpringContextHolder.getBean(XiXunPlayerService.class).pushWeather(xixun.getDeviceCode(), data, pole); } /** * æ¨é大æ°çæµæ°æ®å°novaLED */ public VnnoxResult pushAirDataToNova(Long poleId) { 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)); LedPlayerEntity LED = SpringContextHolder.getBean(LedPlayerEntityService.class).getOne(Wrappers.lambdaQuery(LedPlayerEntity.class).eq(LedPlayerEntity::getSn, nova.getDeviceCode())); if (pole == null) { throw new BusinessException("ç¯æä¸åå¨"); } if (air == null) { throw new BusinessException("æªç»å®å¤§æ°çæµè®¾å¤"); } if (nova == null) { throw new BusinessException("æªç»å®nova设å¤"); } //è·å大æ°çæµæ°æ® A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage data = SpringContextHolder.getBean(AirDataService.class).getDataByPoleid(poleId); //æ¨éæ°æ® return SpringContextHolder.getBean(VnnoxService.class).publishWaterData(LED.getPlayerId(), data); } } ximon-admin/src/main/java/com/sandu/ximon/admin/service/VnnoxService.java
@@ -2,8 +2,14 @@ import com.sandu.common.execption.BusinessException; import com.sandu.ximon.admin.config.VnnoxConstant; import com.sandu.ximon.admin.dto.nova.AirDataProgram; import com.sandu.ximon.admin.dto.nova.PlayerLayout; import com.sandu.ximon.admin.dto.nova.PlayerPage; import com.sandu.ximon.admin.dto.nova.PlayerWidget; import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5AtmosphereHeartbeatReportInnerFrame; import com.sandu.ximon.admin.utils.RedisUtils; import com.sandu.ximon.admin.utils.VnnoxAPIUtil; import com.sandu.ximon.admin.utils.VnnoxProgramAPIUtil; import com.sandu.ximon.admin.utils.request.VnnoxScreenStatusType; import com.sandu.ximon.admin.utils.response.VnnoxPlayerListResponse; import com.sandu.ximon.admin.utils.response.VnnoxPlayerResponse; @@ -16,10 +22,7 @@ import org.springframework.transaction.annotation.Transactional; import java.net.URISyntaxException; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.*; import java.util.stream.Collectors; /** @@ -37,6 +40,8 @@ private RedisUtils redisUtils; // @Autowired private LedPlayerEntityService ledPlayerEntityService; // @Autowired private VnnoxProgramAPIUtil vnnoxProgramAPIUtil; /** * è®¾å¤æ ¡éªæ³¨å @@ -200,20 +205,22 @@ /** * åæ¥ææ¾ * * @param * @return */ public VnnoxResult syncPlay(List<String> playerList,Integer option) { return vnnoxAPIUtil.syncPlay(playerList,option); public VnnoxResult syncPlay(List<String> playerList, Integer option) { return vnnoxAPIUtil.syncPlay(playerList, option); } /** * å¯¹æ¶ * * @param * @return */ public VnnoxResult ntpSync(List<String> playerList,boolean enable) { return vnnoxAPIUtil.ntpSync(playerList,enable); public VnnoxResult ntpSync(List<String> playerList, boolean enable) { return vnnoxAPIUtil.ntpSync(playerList, enable); } @@ -273,4 +280,57 @@ } return list; } public VnnoxResult publishWaterData(String playerId, A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage poleSensorEntity) { List<String> playerIds = new ArrayList<>(); playerIds.add(playerId); AirDataProgram playerProgram = new AirDataProgram(); 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); return vnnoxProgramAPIUtil.normalProgram(playerProgram).getData(); } private List<PlayerWidget> generateWaterAndSensorWidget(A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage poleSensorEntity) { List widgetList = new ArrayList<>(); List<String> list = new ArrayList<>(); // if (Objects.nonNull(waterDataEntity)) { // list.add("æ°´è´¨ç¯å¢çæµå®æ¶æ°æ®ï¼"); // list.add("phï¼"+waterDataEntity.getPh()); // list.add("溶解氧ï¼"+waterDataEntity.getDoData() + "(mg/L)"); // list.add("çµå¯¼çï¼"+waterDataEntity.getEc() + "(10^(-6)S)"); // list.add("æµåº¦ï¼"+waterDataEntity.getNtu() + "NTU"); // } if (Objects.nonNull(poleSensorEntity)) { // list.add("ç¯å¢çæµï¼"); list.add("温度ï¼" + poleSensorEntity.getTemperature() + "°"); list.add("湿度ï¼" + poleSensorEntity.getHumidity() + "%"); list.add("pm25ï¼" + poleSensorEntity.getPm25() + "μg/m³"); list.add("pm10ï¼" + poleSensorEntity.getPm10() + "μg/m³"); list.add("ç²éï¼" + poleSensorEntity.getEch2o() + "μg/m³"); list.add("CO2ï¼" + poleSensorEntity.getCo2() + "ppm"); } widgetList.add(new PlayerWidget().generateScrollUpTextWidget( "water", 1, 100000L, list, "#FFFFFF", 15, new PlayerLayout("0%", "5%", "100%", "100%") )); return widgetList; } } ximon-admin/src/main/java/com/sandu/ximon/admin/service/XiXunPlayerService.java
@@ -10,22 +10,23 @@ import com.sandu.ximon.admin.config.RealtimeServerBean; import com.sandu.ximon.admin.config.XiXunConfig; import com.sandu.ximon.admin.entity.*; import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5AtmosphereHeartbeatReportInnerFrame; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.admin.utils.JsonUtil; import com.sandu.ximon.admin.utils.LightemitUtils; import com.sandu.ximon.admin.utils.LogUtils; import com.sandu.ximon.dao.domain.LEDProgram; import com.sandu.ximon.admin.utils.request.SubTitleSet; import com.sandu.ximon.dao.domain.LedSFile; import com.sandu.ximon.dao.domain.Pole; import com.sandu.ximon.dao.domain.PoleLightemitEntity; import com.sandu.ximon.dao.domain.PoleXixunPlayerEntity; import com.sandu.ximon.dao.mapper.PoleXixunPlayerEntityMapper; import lombok.AllArgsConstructor; import org.apache.commons.lang.StringUtils; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.UUID; import java.util.*; /** * ç讯èç® @@ -129,7 +130,6 @@ } // public Object getProgram(String json) { //// PoleXixunPlayerEntity byId = getById(pid); // List<Long> fileIds = new ArrayList<>(); @@ -226,7 +226,59 @@ /** * æ¨éå¤§æ°æ°æ®å°ç讯LED */ @Async("taskExecutor") public Boolean pushWeather(String lightemitControlCode, A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage sensorEntity, Pole streetlightEntity) { if (StringUtils.isBlank(lightemitControlCode)) { return Boolean.valueOf(false); } Integer screenHeight = Integer.parseInt(lightemitUtils.getScreenHeight(lightemitControlCode)); String size = String.valueOf(screenHeight / 18); //åå¹ä¸»ä½æ¼æ¥ String body = "<head><style type=\"text/css\">body{background-color:#000;}</style></head>" + "<p style=\"font-size:" + size + "px;line-height:17px;color:#fff\">" + (streetlightEntity == null || streetlightEntity.getCity() == null ? "" : streetlightEntity.getCity().replace("å¸", "")) + "<br/>" + "温度ï¼" + (sensorEntity == null || sensorEntity.getTemperature() == null ? " -" : sensorEntity.getTemperature()) + "â<br/>" + "湿度ï¼" + (sensorEntity == null || sensorEntity.getHumidity() == null ? "-" : sensorEntity.getHumidity()) + "%RH<br/>" + "亮度ï¼" + (sensorEntity == null || sensorEntity.getLightIntensity() == null ? "-" : sensorEntity.getLightIntensity()) + "lux<br/>" + "é£éï¼" + (sensorEntity == null || sensorEntity.getWindSpeed() == null ? "-" : sensorEntity.getWindSpeed()) + "m/s<br/>" + "CO2ï¼" + (sensorEntity == null || sensorEntity.getCo2() == null ? "-" : sensorEntity.getCo2()) + "ppm<br/>" + "ç²éï¼" + (sensorEntity == null || sensorEntity.getEch2o() == null ? "-" : sensorEntity.getEch2o()) + "mg/m³<br/>" + "TVOCï¼" + (sensorEntity == null || sensorEntity.getTvoc() == null ? "-" : sensorEntity.getTvoc()) + "mg/m³<br/>" + "PM25ï¼" + (sensorEntity == null || sensorEntity.getPm25() == null ? "-" : sensorEntity.getPm25()) + "mg/m³<br/>" + "PM10ï¼" + (sensorEntity == null || sensorEntity.getPm10() == null ? "-" : sensorEntity.getPm10()) + "mg/m³<br/>"; //ç»è£ 请æ±åæ° SubTitleSet subTitleSet = new SubTitleSet(); subTitleSet.html = body; subTitleSet.num = 1; //æ¸ å±æä½ lightemitUtils.clear(lightemitControlCode); //æ¸ é¤ææ¾å表 lightemitUtils.clearVideoPlay(lightemitControlCode); //æ¸ é¤èç®å表 lightemitUtils.clearPlayerTask(lightemitControlCode); try { lightemitUtils.subTitleSet(subTitleSet, lightemitControlCode, false); return true; } catch (Exception e) { return false; } finally { //ä¸åé忏 é¤å±å¹ new Timer().schedule(new TimerTask() { @Override public void run() { lightemitUtils.clear(lightemitControlCode); //æ¸ é¤ææ¾å表 lightemitUtils.clearVideoPlay(lightemitControlCode); //æ¸ é¤èç®å表 lightemitUtils.clearPlayerTask(lightemitControlCode); //æ¨éæåå½ä»¤ lightemitUtils.sendLastCommand(lightemitControlCode); } }, 60 * 1000); } } } ximon-admin/src/main/java/com/sandu/ximon/admin/utils/LightemitUtils.java
@@ -6,6 +6,7 @@ import com.sandu.ximon.admin.config.RealtimeServerBean; import com.sandu.ximon.admin.service.PoleLightemitService; import com.sandu.ximon.admin.utils.request.*; import com.sandu.ximon.dao.domain.PoleLightemitEntity; import com.squareup.okhttp.*; import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils; @@ -232,6 +233,18 @@ } /** * åéææ°çæ°æ® * @param lightemitControlCode */ public void sendLastCommand(String lightemitControlCode) { PoleLightemitEntity poleLightemitEntity = poleLightemitService.getLedByLightControlCode(lightemitControlCode); if (poleLightemitEntity == null || StringUtils.isBlank(poleLightemitEntity.getRequestBody())) { return; } this.post(realtimeServerBean.getCommand() + lightemitControlCode, poleLightemitEntity.getRequestBody()); } /** * è·åledå±ç»é¢ * * @param ledCode ximon-admin/src/main/java/com/sandu/ximon/admin/utils/VnnoxProgramAPIUtil.java
@@ -2,8 +2,9 @@ import com.alibaba.fastjson.JSON; import com.sandu.ximon.admin.config.VnnoxUrl; import com.sandu.ximon.admin.dto.nova.AirDataProgram; import com.sandu.ximon.admin.utils.request.CommonHeader; import com.sandu.ximon.admin.utils.request.PlayerProgram; import com.sandu.ximon.admin.dto.nova.PlayerProgram; import com.sandu.ximon.admin.utils.response.VnnoxResultResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -26,7 +27,7 @@ * @return */ //public VnnoxResultResponse normalProgram(Map<String,Object> program) { public VnnoxResultResponse normalProgram(PlayerProgram program) { public VnnoxResultResponse normalProgram(AirDataProgram program) { String result = VnnoxRequestUtil.PostWithHeader( VnnoxUrl.getUrl(VnnoxUrl.NORMAL_PROGRAM),