ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PlayPlanNvController.java
@@ -65,12 +65,19 @@ return ResponseUtil.success(playPlanNvService.deletePlan(plianIds)); } @PostMapping(value = "/push/{plianId}", produces = "application/json;charset=UTF-8") public ResponseVO<Object> pushToLed(@PathVariable Long plianId, @RequestBody List<NovaPushResultVO> playerIds) { /** * 宿¶èç® * * @param planId * @param playerIds * @return */ @PostMapping(value = "/push/{planId}", produces = "application/json;charset=UTF-8") public ResponseVO<Object> pushToLed(@PathVariable Long planId, @RequestBody List<NovaPushResultVO> playerIds) { if (!permissionConfig.check(MenuEnum.LED_N_PLAY_PLAN_PUSH.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } return ResponseUtil.success(playPlanNvService.pushToLed(plianId, playerIds)); return ResponseUtil.success(playPlanNvService.pushToLed(planId, playerIds)); } @@ -83,6 +90,13 @@ } /** * 宿¶èç® * * @param pid * @param playerIds * @return */ @PostMapping(value = "/pushProgram/{pid}", produces = "application/json;charset=UTF-8") public ResponseVO<Object> pushProgram(@PathVariable Long pid, @RequestBody List<NovaPushResultVO> playerIds) { if (!permissionConfig.check(MenuEnum.LED_N_PLAY_PLAN_PUSH.getCode())) { @@ -91,21 +105,6 @@ return ResponseUtil.success(playPlanNvService.pushProgram(pid, playerIds)); } @PostMapping(value = "/pushWeather/{pid}", produces = "application/json;charset=UTF-8") public ResponseVO<Object> pushWeather(@PathVariable Long pid, @RequestBody List<NovaPushResultVO> playerIds) { if (!permissionConfig.check(MenuEnum.LED_N_PLAY_PLAN_PUSH.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } return ResponseUtil.success(playPlanNvService.pushProgram(pid, playerIds)); } @PostMapping(value = "/pushWeatherPlan/{id}", produces = "application/json;charset=UTF-8") public ResponseVO<Object> pushWeatherPlan(@PathVariable Long id, @RequestBody List<NovaPushResultVO> playerIds) { if (!permissionConfig.check(MenuEnum.LED_N_PLAY_PLAN_PUSH.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } return ResponseUtil.success(playPlanNvService.pushWeatherToLed(id, playerIds)); } @GetMapping("/listPlan") public ResponseVO<Object> list(BaseConditionVO baseConditionVO, ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/NormalProgramDto.java
ÎļþÒÑɾ³ý ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerProgram.java
@@ -5,7 +5,6 @@ import lombok.Data; import java.util.List; import java.util.Map; /** * æ®éèç® @@ -16,9 +15,9 @@ // éè¦å¤ççææ¾å¨IDéå,æå¤æ¯æ100ä¸ªææ¾å¨åæ¶å¤ç private List<String> playerIds; // ææ¾æ¶é´ææï¼å¦æä¸ºç©ºï¼ä¼å ¨å¤©24å°æ¶å¾ªç¯ææ¾ private Map schedule; private PlayerSchedule schedule; // éè¦ææ¾ç页é¢å 容éå private List<ProgramDto> pages ; private List<PlayerPage> pages; // èç®ä¸è½½è¿åº¦éç¥æ¥å£ï¼ä¼éè¿æ¤æ¥å£å°èç®çä¸è½½è¿åº¦åç»å®¢æ·ï¼æ¥å£çååºæ¶é´ä¸è½è¶ è¿3s private String noticeUrl; ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerSchedule.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package com.sandu.ximon.admin.dto.nova; import lombok.Data; import java.util.List; @Data public class PlayerSchedule { // ææ¾å¼å§æ¥æï¼å¦ï¼2020-04-12 private String startDate; // ææ¾ç»ææ¥æ ,å¦ï¼2020-12-22 private String endDate; // å ·ä½ææ¾è®¡å private List<PlayerSchedulePlans> plans; } ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerSchedulePlans.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package com.sandu.ximon.admin.dto.nova; import lombok.Data; import java.util.List; @Data public class PlayerSchedulePlans { // å¨å çææ¾æ¥æï¼0-卿¥ï¼1-å¨ä¸ï¼2-å¨äºï¼3-å¨ä¸ï¼4-å¨åï¼5-å¨äºï¼6-å¨å private List<Integer> weekDays; // å ·ä½å½æ¥å¼å§æ¶é´ï¼å¦ï¼08:00 private String startTime; // å ·ä½å½æ¥çç»ææ¶é´ï¼å¦ï¼18:00 private String endTime; } ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerWidget.java
@@ -19,6 +19,7 @@ //HTML - ç½é¡µåªä½ //STREAM_MEDIA - æµåªä½ //BOX - çªå£ //WEATHER - ç®æå¤©æ°ç»ä»¶ private PlayerWidgetType type; // å¾çåè§é¢ä¸ºå¿ 填项ï¼å 容为å¾çæè§é¢çmd5å¼ private String md5; @@ -47,12 +48,52 @@ // htmlç»ä»¶ç¦»çº¿ææ¾åªä½ï¼å®å¶åè½ï¼ private PlayerOffline offline; public PlayerWidget generateMediaWidget (String widgetName, Integer zIndex, PlayerWidgetType playerWidgetType, LEDProgramFile file, PlayerLayout playerLayout, PlayerAnimation animation) { private String address; private Double latitude; private Double longitude; private Integer width; private Integer height; private Integer refreshPeriod; private Integer fontSize; private Boolean bold; private Boolean italic; private Boolean underline; private String color; private Integer tempUnit; private Integer unitSymbol; private Boolean weatherEnable; private Boolean tempEnable; private Boolean windEnable; private Boolean humidEnable; private Boolean currentTempEnable; private Boolean isShowInOneLine; public PlayerWidget generateMediaWidget(String widgetName, Integer zIndex, PlayerWidgetType playerWidgetType, LEDProgramFile file, PlayerLayout playerLayout, PlayerAnimation animation) { this.setName(widgetName); this.setZIndex(zIndex); this.setType(playerWidgetType); @@ -65,13 +106,13 @@ return this; } public PlayerWidget generateScrollUpTextWidget (String widgetName, Integer zIndex, Long duration, List<String> content, String contentColor, Integer fontSize, PlayerLayout playerLayout) { 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); @@ -79,7 +120,7 @@ this.setBackgroundColor("#00000000"); this.setScrollAttribute( new PlayerWidgetScrollAttribute( PlayerWidgetScrollAttributeAnimation.MARQUEE_UP,1 PlayerWidgetScrollAttributeAnimation.MARQUEE_UP, 1 ) ); this.setDuration(duration); @@ -87,7 +128,7 @@ List<PlayerWidgetLine> playerWidgetLineList = new ArrayList<>(); for(String str: content) { for (String str : content) { PlayerWidgetLine playerWidgetLine = new PlayerWidgetLine(); List<PlayerWidgetLineTextAttributes> playerWidgetLineTextAttributesList = new ArrayList<>(); @@ -124,7 +165,7 @@ this.setBackgroundColor("#00000000"); this.setScrollAttribute( new PlayerWidgetScrollAttribute( PlayerWidgetScrollAttributeAnimation.MARQUEE_LEFT,2 PlayerWidgetScrollAttributeAnimation.MARQUEE_LEFT, 2 ) ); this.setDuration(duration); @@ -150,4 +191,7 @@ return this; } } ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerWidgetType.java
@@ -10,6 +10,7 @@ * HTML - ç½é¡µåªä½ * STREAM_MEDIA - æµåªä½ * BOX - çªå£ * WEATHER - ç®æå¤©æ°ç»ä»¶ */ PICTURE, VIDEO, @@ -17,6 +18,8 @@ SIMPLE_RSS, HTML, STREAM_MEDIA, BOX BOX, WEATHER } ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/ProgramDto.java
ÎļþÒÑɾ³ý ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/ProgramPush.java
ÎļþÒÑɾ³ý ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/WeatherDto.java
ÎļþÒÑɾ³ý ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/WeatherProgram.java
ÎļþÒÑɾ³ý ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/WratherPage.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,61 @@ package com.sandu.ximon.admin.dto.nova; import lombok.Data; import lombok.NoArgsConstructor; /** * @author LiuHaoNan * @date 2022/8/4 */ @NoArgsConstructor @Data public class WratherPage { private Integer zIndex; private String type; private String address; private Double latitude; private Double longitude; private Integer width; private Integer height; private Integer refreshPeriod; private Integer fontSize; private Boolean bold; private Boolean italic; private Boolean underline; private String color; private Integer tempUnit; private Integer unitSymbol; private Boolean weatherEnable; private Boolean tempEnable; private Boolean windEnable; private Boolean humidEnable; private Boolean currentTempEnable; private Boolean isShowInOneLine; private Integer duration; private PlayerLayout layout; } ximon-admin/src/main/java/com/sandu/ximon/admin/service/PlayPlanNvService.java
@@ -11,9 +11,9 @@ import com.sandu.ximon.admin.dto.PlanDto; import com.sandu.ximon.admin.dto.SchedulesDTO; import com.sandu.ximon.admin.dto.nova.*; import com.sandu.ximon.admin.entity.Plans; import com.sandu.ximon.admin.param.PlayPlanParam; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.admin.utils.LogUtils; import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils; import com.sandu.ximon.admin.utils.VnnoxAPIUtil; import com.sandu.ximon.admin.utils.VnnoxProgramAPIUtil; @@ -24,6 +24,7 @@ import com.sandu.ximon.dao.domain.*; import com.sandu.ximon.dao.mapper.PlayPlanNvMapper; import lombok.AllArgsConstructor; import org.aspectj.weaver.ast.Var; import org.springframework.stereotype.Service; import java.util.*; @@ -167,6 +168,7 @@ /** * æ¨é宿¶èç® * * @param planId * @param nova * @return @@ -194,18 +196,20 @@ //è·åèç®å®ä½ List<ProgramDto> programDtos = JSON.parseArray(pushToLed.getPages(), ProgramDto.class); List<PlayerPage> programDtos = JSON.parseArray(pushToLed.getPages(), PlayerPage.class); programDtos.forEach( programDto -> { programDto.getWidgets().forEach( widget -> { String url = widget.getUrl(); LEDProgramFile one = fileService.getOne(Wrappers.lambdaQuery(LEDProgramFile.class).eq(LEDProgramFile::getFileUrl, url)); if (one == null) { throw new BusinessException("èç®æä»¶å·²å¤±æ"); if (!PlayerWidgetType.WEATHER.equals(widget.getType())) { String url = widget.getUrl(); LEDProgramFile one = fileService.getOne(Wrappers.lambdaQuery(LEDProgramFile.class).eq(LEDProgramFile::getFileUrl, url)); if (one == null) { throw new BusinessException("èç®æä»¶å·²å¤±æ"); } widget.setMd5(one.getMd5()); widget.setSize(Long.parseLong(one.getSize())); } widget.setMd5(one.getMd5()); widget.setSize(one.getSize()); } ); } @@ -214,20 +218,21 @@ program.setPages(programDtos); //è·åèç®å®æ¶å®ä½ program.setSchedule((JSON.parseObject(pushToLed.getSchedule(), Map.class))); Map map = JSON.parseObject(pushToLed.getSchedule(), Map.class); map.get("plans"); List<Plans> plans = JSON.parseArray(map.get("plans").toString(), Plans.class); plans.forEach(p -> { //å é¤å两ä½å符串 p.setStartTime(p.getStartTime().substring(0, p.getStartTime().length() - 3)); p.setEndTime(p.getEndTime().substring(0, p.getEndTime().length() - 3)); }); System.out.println(plans + "plans11111"); map.put("plans", plans); program.setSchedule(map); PlayerSchedule playerSchedule = JSON.parseObject(pushToLed.getSchedule(), PlayerSchedule.class); //å 餿¶é´çåä¸ä½ List<PlayerSchedulePlans> plans = playerSchedule.getPlans(); plans.forEach( plan -> { plan.setStartTime(plan.getStartTime().substring(0, plan.getStartTime().length() - 3)); plan.setEndTime(plan.getEndTime().substring(0, plan.getEndTime().length() - 3)); } ); program.setSchedule(playerSchedule); program.setNoticeUrl(VnnoxConstant.NOTIFY_URL); LogUtils.error("èç®å 容+++++++++++" + JSON.toJSONString(program)); VnnoxResultResponse vnnoxResultResponse = vnnoxProgramAPIUtil.normalProgram(program); vnnoxAPIUtil.volChange(playerIds, Integer.valueOf(pushToLed.getVolume()).intValue()); @@ -428,30 +433,38 @@ playerIds.add(n.getPlayerId()); }); ProgramPush program = new ProgramPush(); List<ProgramDto> programDtos = JSON.parseArray(pages, ProgramDto.class); PlayerProgram program = new PlayerProgram(); List<PlayerPage> programDtos = JSON.parseArray(pages, PlayerPage.class); programDtos.forEach( programDto -> { programDto.getWidgets().forEach( widget -> { String url = widget.getUrl(); LEDProgramFile one = fileService.getOne(Wrappers.lambdaQuery(LEDProgramFile.class).eq(LEDProgramFile::getFileUrl, url)); if (one == null) { throw new BusinessException("èç®æä»¶å·²å¤±æ"); if (!PlayerWidgetType.WEATHER.equals(widget.getType())) { String url = widget.getUrl(); LEDProgramFile one = fileService.getOne(Wrappers.lambdaQuery(LEDProgramFile.class).eq(LEDProgramFile::getFileUrl, url)); if (one == null) { throw new BusinessException("èç®æä»¶å·²å¤±æ"); } widget.setMd5(one.getMd5()); widget.setSize(Long.parseLong(one.getSize())); }else { //WratherPage System.out.println(widget+"widget"); } widget.setMd5(one.getMd5()); widget.setSize(one.getSize()); } ); } ); program.setPlayerIds(playerIds); //è·åèç®å®ä½ program.setPages(programDtos); program.setNoticeUrl(VnnoxConstant.NOTIFY_URL); VnnoxResultResponse vnnoxResultResponse = vnnoxProgramAPIUtil.pushProgram(program); if (vnnoxResultResponse == null || vnnoxResultResponse.getData() == null) { throw new BusinessException("æ¨é失败"); } List<String> success = new ArrayList<>(); List<String> fail = new ArrayList<>(); @@ -499,103 +512,5 @@ return result; } /** * 宿¶æ¨éå¤©æ° * @param planId * @param nova * @return */ public Map<String, Object> pushWeatherToLed(Long planId, List<NovaPushResultVO> nova) { if (nova == null) { throw new BusinessException("è¯·éæ©æ£ç¡®çLEDå±"); } PushToLed pushToLed = playPlanMapper.pushToLed(planId); if (pushToLed.getPages() == null) { throw new BusinessException("èç®å 容丢失"); } PlayPlanNv byId = getById(planId); if (pushToLed == null) { throw new BusinessException("æªæ¾å°è¯¥ææ¾è®¡å"); } List<String> playerIds = new ArrayList<>(); nova.forEach(n -> { playerIds.add(n.getPlayerId()); }); WeatherProgram program = new WeatherProgram(); program.setPlayerIds(playerIds); //è·åèç®å®ä½ List<WeatherDto> programDtos = JSON.parseArray(pushToLed.getPages(), WeatherDto.class); program.setPages(programDtos); //è·åèç®å®æ¶å®ä½ program.setSchedule((JSON.parseObject(pushToLed.getSchedule(), Map.class))); Map map = JSON.parseObject(pushToLed.getSchedule(), Map.class); map.get("plans"); List<Plans> plans = JSON.parseArray(map.get("plans").toString(), Plans.class); plans.forEach(p -> { //å é¤å两ä½å符串 p.setStartTime(p.getStartTime().substring(0, p.getStartTime().length() - 3)); p.setEndTime(p.getEndTime().substring(0, p.getEndTime().length() - 3)); }); map.put("plans", plans); program.setSchedule(map); program.setNoticeUrl(VnnoxConstant.NOTIFY_URL); VnnoxResultResponse vnnoxResultResponse = vnnoxProgramAPIUtil.pushWeather(program); vnnoxAPIUtil.volChange(playerIds, Integer.valueOf(pushToLed.getVolume()).intValue()); List<String> success = new ArrayList<>(); List<String> fail = new ArrayList<>(); if (vnnoxResultResponse.getData() != null) { success = vnnoxResultResponse.getData().getSuccess(); fail = vnnoxResultResponse.getData().getFail(); } //æ¼æ¥æå失败çç»æ Map<String, Object> result = new HashMap<>(); List<NovaPushResultVO> successList = new ArrayList<>(); List<NovaPushResultVO> faileList = new ArrayList<>(); List<String> finalSuccess = success; List<String> finalFail = fail; nova.forEach(n -> { if (finalSuccess.contains(n.getPlayerId())) { successList.add(n); } else if (finalFail.contains(n.getPlayerId())) { faileList.add(n); } }); result.put("success", successList); result.put("fail", faileList); /** * è¯ºç¦æ¨éèç®æ¥å¿è®°å½å¼å§ */ List<LedPlayerEntity> list = SpringContextHolder.getBean(LedPlayerEntityService.class) .list(Wrappers.lambdaQuery(LedPlayerEntity.class).in(LedPlayerEntity::getId, nova.stream().map(NovaPushResultVO::getPlayerId).toArray())); List<String> listCode = new ArrayList<>(); for (LedPlayerEntity temp : list) { listCode.add(temp.getSn()); } String content = "{èç®IDï¼" + planId + "ï¼ èç®åç§°ï¼" + byId.getName() + "}," + " æ¨éç»æï¼" + result + " }"; StoreOperationRecordsUtils.storeOperationData(listCode, null, "è¯ºç¦æ¨éææ¾è®¡å", content); /** * è¯ºç¦æ¨éèç®æ¥å¿è®°å½ç»æ */ return result; } } ximon-admin/src/main/java/com/sandu/ximon/admin/utils/VnnoxProgramAPIUtil.java
@@ -2,7 +2,9 @@ import com.alibaba.fastjson.JSON; import com.sandu.ximon.admin.config.VnnoxUrl; import com.sandu.ximon.admin.dto.nova.*; import com.sandu.ximon.admin.dto.nova.AirDataProgram; import com.sandu.ximon.admin.dto.nova.PlayerProgram; 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 org.springframework.beans.factory.annotation.Autowired; @@ -15,13 +17,14 @@ @Autowired private RedisUtils redisUtils; public static VnnoxProgramAPIUtil getBean(){ public static VnnoxProgramAPIUtil getBean() { return (VnnoxProgramAPIUtil) SpringContextUtil.getBean("VnnoxProgramAPIUtil"); } /** * 大æ°ä¿¡æ¯æ¨é * * @param * @return */ @@ -33,48 +36,51 @@ new CommonHeader(CommonHeader.JSON, true) ); System.out.println(program.toJson()); LogUtils.error("èç®ææ¾response:"+result); return JSON.parseObject(result,VnnoxResultResponse.class); LogUtils.error("èç®ææ¾response:" + result); return JSON.parseObject(result, VnnoxResultResponse.class); } /** * æ®éèç®ææ¾ * * @param * @return */ public VnnoxResultResponse normalProgram(PlayerProgram program) { String result = VnnoxRequestUtil.PostWithHeader( VnnoxUrl.getUrl(VnnoxUrl.NORMAL_PROGRAM), VnnoxUrl.getUrl(VnnoxUrl.WEATHER), program.toJson(), new CommonHeader(CommonHeader.JSON, true) ); System.out.println(program.toJson()); LogUtils.error("æ®éèç®ææ¾response:"+result); return JSON.parseObject(result,VnnoxResultResponse.class); LogUtils.error("æ®éèç®ææ¾response:" + result); return JSON.parseObject(result, VnnoxResultResponse.class); } /** * 宿¶èç®ææ¾ * * @param * @return */ public VnnoxResultResponse pushProgram(ProgramPush program) { public VnnoxResultResponse pushProgram(PlayerProgram program) { String result = VnnoxRequestUtil.PostWithHeader( VnnoxUrl.getUrl(VnnoxUrl.NORMAL_PROGRAM), VnnoxUrl.getUrl(VnnoxUrl.WEATHER), program.toJson(), new CommonHeader(CommonHeader.JSON, true) ); System.out.println(program.toJson()); LogUtils.error("æ®éèç®ææ¾response:"+result); return JSON.parseObject(result,VnnoxResultResponse.class); LogUtils.error("æ®éèç®ææ¾response:" + result); return JSON.parseObject(result, VnnoxResultResponse.class); } /** * 宿¶èç®ææ¾ * * @param program * @return */ @@ -84,27 +90,11 @@ program.toJson(), new CommonHeader(CommonHeader.JSON, true) ); LogUtils.error("宿¶ä»»å¡response:"+result); return JSON.parseObject(result,VnnoxResultResponse.class); LogUtils.error("宿¶ä»»å¡response:" + result); return JSON.parseObject(result, VnnoxResultResponse.class); } /** * å¤©æ° * @param program * @return */ public VnnoxResultResponse pushWeather(WeatherProgram program) { String result = VnnoxRequestUtil.PostWithHeader( VnnoxUrl.getUrl(VnnoxUrl.WEATHER), program.toJson(), new CommonHeader(CommonHeader.JSON, true) ); System.out.println(program.toJson()); LogUtils.error("天æ°èç®ææ¾response:"+result); return JSON.parseObject(result,VnnoxResultResponse.class); } } ximon-admin/src/main/java/com/sandu/ximon/admin/utils/VnnoxRequestUtil.java
@@ -92,7 +92,6 @@ public static String PostWithHeader (String URL, String json, CommonHeader header) { System.out.println(json); System.out.println("****************************************"); CloseableHttpClient client = HttpClients.createDefault(); HttpPost post = new HttpPost(URL);