From 60fc84976142a9019effbbb79c4d43bc4a4a3b36 Mon Sep 17 00:00:00 2001
From: liuhaonan <31457034@qq.com>
Date: 星期四, 15 九月 2022 18:26:56 +0800
Subject: [PATCH] changes

---
 ximon-admin/src/main/java/com/sandu/ximon/admin/utils/VnnoxProgramAPIUtil.java    |   21 ++++
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java          |    7 +
 ximon-admin/src/main/java/com/sandu/ximon/admin/param/PushAirDataToNovaParam.java |   22 ++++
 ximon-admin/src/main/java/com/sandu/ximon/admin/vo/NovaWeatherVO.java             |  110 ++++++++++++++++++++++
 ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleController.java    |   15 +-
 ximon-admin/src/main/java/com/sandu/ximon/admin/config/VnnoxUrl.java              |    2 
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/VnnoxService.java         |   79 +++++++++++----
 7 files changed, 222 insertions(+), 34 deletions(-)

diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/config/VnnoxUrl.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/config/VnnoxUrl.java
index 14ff9b9..fe64536 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/config/VnnoxUrl.java
+++ b/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";
     //  閲嶅惎
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleController.java
index 823041d..4da3f81 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleController.java
+++ b/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));
     }
 
     /**
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/param/PushAirDataToNovaParam.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/param/PushAirDataToNovaParam.java
new file mode 100644
index 0000000..61ad741
--- /dev/null
+++ b/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;
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
index c65a4ff..fb5656d 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
+++ b/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);
     }
 
 
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/VnnoxService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/VnnoxService.java
index 9c399f8..c845b76 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/VnnoxService.java
+++ b/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;
     }
 
 
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/VnnoxProgramAPIUtil.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/VnnoxProgramAPIUtil.java
index 3f5f0d8..e1c7df7 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/VnnoxProgramAPIUtil.java
+++ b/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),
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/vo/NovaWeatherVO.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/vo/NovaWeatherVO.java
new file mode 100644
index 0000000..272d8a0
--- /dev/null
+++ b/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);
+    }
+}

--
Gitblit v1.9.3