From 385b687cc1a0a8f6de2320af6b6e0d654cd658ed Mon Sep 17 00:00:00 2001
From: liuhaonan <31457034@qq.com>
Date: 星期五, 18 十一月 2022 11:56:40 +0800
Subject: [PATCH] changes

---
 ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/led/NewNovaLedService.java |  231 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 227 insertions(+), 4 deletions(-)

diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/led/NewNovaLedService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/led/NewNovaLedService.java
index 4384438..71e0d50 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/led/NewNovaLedService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/led/NewNovaLedService.java
@@ -1,16 +1,26 @@
 package com.sandu.ximon.admin.newnova.led;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.pagehelper.PageHelper;
 import com.sandu.common.execption.BusinessException;
 import com.sandu.common.object.BaseConditionVO;
 import com.sandu.common.service.impl.BaseServiceImpl;
 import com.sandu.common.util.SpringContextHolder;
+import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5AtmosphereHeartbeatReportInnerFrame;
+import com.sandu.ximon.admin.newnova.conf.ProgramPathConfig;
 import com.sandu.ximon.admin.newnova.param.NewNovaLedParam;
+import com.sandu.ximon.admin.newnova.param.ProgramPrarm;
+import com.sandu.ximon.admin.newnova.program.NewNovaProgramService;
 import com.sandu.ximon.admin.newnova.utils.NovaAPIUtil;
+import com.sandu.ximon.admin.newnova.vo.ProWHVO;
+import com.sandu.ximon.admin.newnova.vo.StatusVO;
+import com.sandu.ximon.admin.newnova.vo.TrasfromStatusVO;
 import com.sandu.ximon.admin.security.SecurityUtils;
+import com.sandu.ximon.admin.service.AirDataService;
 import com.sandu.ximon.admin.service.PoleBindingService;
 import com.sandu.ximon.admin.service.PoleService;
+import com.sandu.ximon.dao.bo.NewNovaGroupListBo;
 import com.sandu.ximon.dao.domain.NewNovaLed;
 import com.sandu.ximon.dao.domain.Pole;
 import com.sandu.ximon.dao.domain.PoleBinding;
@@ -18,8 +28,12 @@
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.io.File;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -30,6 +44,8 @@
 @AllArgsConstructor
 public class NewNovaLedService extends BaseServiceImpl<NewNovaLedMapper, NewNovaLed> {
 
+    private final PoleBindingService poleBindingService;
+    private ProgramPathConfig filePathConfig;
 
     /**
      * 灞忓箷娉ㄥ唽
@@ -101,17 +117,18 @@
      *
      * @param baseConditionVO
      * @param keyword
+     * @param groupId
      * @param onlineStatus
      * @return
      */
-    public List<NewNovaLed> listLed(BaseConditionVO baseConditionVO, String keyword, boolean onlineStatus) {
+    public List<NewNovaLed> listLed(BaseConditionVO baseConditionVO, String keyword, Long groupId, boolean onlineStatus) {
 
         NovaAPIUtil instanceUtil = NovaAPIUtil.getInstanceUtil();
         //鎺掑簭
         PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
-        List<NewNovaLed> newNovaListBos = baseMapper.listLed(keyword, SecurityUtils.getClientId());
+        List<NewNovaLed> newNovaListBos = baseMapper.listLed(keyword, groupId, SecurityUtils.getClientId());
         //鑾峰彇鍦ㄧ嚎鐘舵��
-        instanceUtil.getOnlineStatus(newNovaListBos);
+        instanceUtil.getOnlineStatus(newNovaListBos, onlineStatus);
         //鑾峰彇灞忓箷寮�鍏�
         instanceUtil.getScreenPowerState(newNovaListBos);
         //鑾峰彇闊抽噺
@@ -141,7 +158,7 @@
         List<NewNovaLed> list = new ArrayList<>();
         list.add(byId);
         //鑾峰彇鍦ㄧ嚎鐘舵��
-        instanceUtil.getOnlineStatus(list);
+        instanceUtil.getOnlineStatus(list, false);
         //鑾峰彇灞忓箷寮�鍏�
         instanceUtil.getScreenPowerState(list);
         //鑾峰彇闊抽噺
@@ -154,4 +171,210 @@
         instanceUtil.getInfo(byId);
         return list.get(0);
     }
+
+    /**
+     * 鑾峰彇鏁寸粍鐨勫睆骞�
+     *
+     * @param groupId
+     */
+    public List<NewNovaGroupListBo> getListByGroupId(Long groupId) {
+        List<NewNovaGroupListBo> listByGroupId = baseMapper.getListByGroupId(groupId, SecurityUtils.getClientId());
+        return listByGroupId;
+    }
+
+    /**
+     * 鎺ㄩ�佸ぇ姘�
+     *
+     * @param id
+     * @param duration
+     * @param fontSize
+     */
+    public Object pushAirData(Long id, Long duration, Long fontSize) throws InterruptedException {
+        NovaAPIUtil apiUtil = NovaAPIUtil.getInstanceUtil();
+        NewNovaLed byId = getById(id);
+        PoleBinding nova = poleBindingService.getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceCode, byId.getSn()).eq(PoleBinding::getDeviceType, 12));
+        if (nova == null) {
+            throw new BusinessException("鏈粦瀹氳鐡﹁澶�");
+        }
+        PoleBinding air = poleBindingService.getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getPoleId, nova.getPoleId()).eq(PoleBinding::getDeviceType, 3));
+        if (air == null) {
+            throw new BusinessException("鏈粦瀹氬ぇ姘旇澶�");
+        }
+
+        //鑾峰彇澶ф皵鐩戞祴鏁版嵁
+        A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage data = SpringContextHolder.getBean(AirDataService.class).getDataByPoleid(nova.getPoleId());
+
+        //瑙f瀽澶ф皵鏁版嵁
+        Map pageInfo = parseData(data, duration,fontSize);
+        ProgramPrarm page = new ProgramPrarm();
+        page.setPageInfo(pageInfo);
+        page.setInsertPlay(true);
+        ProWHVO whvo = new ProWHVO("澶ф皵鐩戞祴", 128, 256);
+        page.setProgramMsg(whvo);
+        StatusVO createPro = apiUtil.createPro(whvo);
+        Integer pid = Integer.valueOf(createPro.getStatusData());
+        page.setProgramID(pid);
+
+        StatusVO editPro = apiUtil.editProgram(pid, pageInfo);
+        if(editPro.getStatusCode()!=0){
+            throw new BusinessException(editPro.getStatusData());
+        }
+        StatusVO genVO = apiUtil.genrateProgram(pid);
+        if(genVO.getStatusCode()!=0){
+            throw new BusinessException(genVO.getStatusData());
+        }
+        page.setProgramID(Integer.valueOf(createPro.getStatusData()));
+        page.setStartPlayAfterTransferred(true);
+        List<String> sns = new ArrayList<String>();
+        sns.add(byId.getSn());
+        page.setSnList(sns);
+
+        List<TrasfromStatusVO> trasfromStatusVOS = apiUtil.trasfromProgram(page);
+
+        File file = new File(filePathConfig.getOutPutPath() + "/program" + pid);
+        SpringContextHolder.getBean(NewNovaProgramService.class).deleteFile(file);
+
+        return trasfromStatusVOS;
+    }
+
+    /**
+     * 澶勭悊澶ф皵鏁版嵁
+     *
+     * @param data
+     * @param duration
+     * @param fontSize
+     * @return
+     */
+
+    private Map parseData(A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage data, Long duration, Long fontSize) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z+8:00'");
+        Date end = new Date();
+        end.setTime(end.getTime()+duration);
+        String str = "{\n" +
+                "        \"name\": \"澶ф皵鐩戞祴\",\n" +
+                "        \"widgetContainers\": [\n" +
+                "            {\n" +
+                "                \"contents\": {\n" +
+                "                    \"widgets\": [\n" +
+                "                        {\n" +
+                "                            \"constraints\": [\n" +
+                "                                {\n" +
+                "                                    \"cron\": [\n" +
+                "                                        \"\"\n" +
+                "                                    ],\n" +
+                "                                    \"endTime\": \"" + sdf.format(end) + "\",\n" +
+                "                                    \"startTime\": \"" + sdf.format(new Date()) + "\"\n" +
+                "                                }\n" +
+                "                            ],\n" +
+                "                            \"duration\":" + duration + ",\n" +
+                "                            \"metadata\": {\n" +
+                "                                \"content\": {\n" +
+                "                                    \"autoPaging\": true,\n" +
+                "                                    \"backgroundMusic\": {\n" +
+                "                                        \"duration\": 0,\n" +
+                "                                        \"isTextSync\": false\n" +
+                "                                    },\n" +
+                "                                    \"displayStyle\": {\n" +
+                "                                        \"scrollAttributes\": {\n" +
+                "                                            \"effects\": {\n" +
+                "                                                \"animation\": \"MARQUEE_LEFT\",\n" +
+                "                                                \"speed\": 3\n" +
+                "                                            }\n" +
+                "                                        },\n" +
+                "                                        \"type\": \"STATIC\"\n" +
+                "                                    },\n" +
+                "                                    \"paragraphs\": [\n" +
+                "                                        {\n" +
+                "                                            \"backgroundColor\": \"#00000000\",\n" +
+                "                                            \"horizontalAlignment\": \"LEFT\",\n" +
+                "                                            \"letterSpacing\": 0,\n" +
+                "                                            \"lineSpacing\": 0,\n" +
+                "                                            \"lines\": [\n" +
+                "                                                {\n" +
+                "                                                    \"segs\": [\n" +
+                "                                                        {\n" +
+                "                                                            \"content\": \"鐜鐩戞祴锛歕"\n" +
+                "                                                        }\n" +
+                "                                                    ]\n" +
+                "                                                },\n" +
+                "                                                {\n" +
+                "                                                    \"segs\": [\n" +
+                "                                                        {\n" +
+                "                                                            \"content\": \"娓╁害锛�" + (data == null || data.getTemperature() == null ? " - " : data.getTemperature()) + "掳\"" + "\n" +
+                "                                                        }\n" +
+                "                                                    ]\n" +
+                "                                                },\n" +
+                "                                                {\n" +
+                "                                                    \"segs\": [\n" +
+                "                                                        {\n" +
+                "                                                            \"content\": \"婀垮害锛�" + (data == null || data.getHumidity() == null ? " - " : data.getHumidity()) + "%\"" + "\n" +
+                "                                                        }\n" +
+                "                                                    ]\n" +
+                "                                                },\n" +
+                "                                                {\n" +
+                "                                                    \"segs\": [\n" +
+                "                                                        {\n" +
+                "                                                            \"content\": \"pm25锛�" + (data == null || data.getPm25() == null ? " - " : data.getPm25()) + "渭g/m鲁\"" + "\n" +
+                "                                                        }\n" +
+                "                                                    ]\n" +
+                "                                                },\n" +
+                "                                                {\n" +
+                "                                                    \"segs\": [\n" +
+                "                                                        {\n" +
+                "                                                            \"content\": \"pm10锛�" + (data == null || data.getPm10() == null ? " - " : data.getPm10()) + "渭g/m鲁\"" + "\n" +
+                "                                                        }\n" +
+                "                                                    ]\n" +
+                "                                                },\n" +
+                "                                                {\n" +
+                "                                                    \"segs\": [\n" +
+                "                                                        {\n" +
+                "                                                            \"content\": \"鐢查啗锛�" + (data == null || data.getEch2o() == null ? " - " : data.getEch2o()) + "渭g/m鲁\"" + "\n" +
+                "                                                        }\n" +
+                "                                                    ]\n" +
+                "                                                },\n" +
+                "                                                {\n" +
+                "                                                    \"segs\": [\n" +
+                "                                                        {\n" +
+                "                                                            \"content\": \"CO2锛�" + (data == null || data.getCo2() == null ? " - " : data.getCo2()) + "ppm\"" + "\n" +
+                "                                                        }\n" +
+                "                                                    ]\n" +
+                "                                                }\n" +
+                "                                            ],\n" +
+                "                                            \"verticalAlignment\": \"TOP\"\n" +
+                "                                        }\n" +
+                "                                    ],\n" +
+                "                                    \"textAttributes\": [\n" +
+                "                                        {\n" +
+                "                                            \"backgroundColor\": \"#ff000000\",\n" +
+                "                                            \"attributes\": {\n" +
+                "                                                \"font\": {\n" +
+                "                                                    \"family\": [\n" +
+                "                                                        \"Helvetica\"\n" +
+                "                                                    ],\n" +
+                "                                                    \"isUnderline\": false,\n" +
+                "                                                    \"size\": "+fontSize+",\n" +
+                "                                                    \"style\": \"NORMAL\"\n" +
+                "                                                },\n" +
+                "                                                \"letterSpacing\": 0,\n" +
+                "                                                \"textColor\": \"#ffff0000\"\n" +
+                "                                            }\n" +
+                "                                        }\n" +
+                "                                    ]\n" +
+                "                                }\n" +
+                "                            },\n" +
+                "                            \"name\": \"鐜鐩戞祴\",\n" +
+                "                            \"type\": \"ARCH_TEXT\"\n" +
+                "                        }\n" +
+                "                    ]\n" +
+                "                },\n" +
+                "                \"id\": 1,\n" +
+                "                \"name\": \"widgetContainers1\"\n" +
+                "            }\n" +
+                "        ]\n" +
+                "    }";
+
+        return JSON.parseObject(str, Map.class);
+    }
+
+
 }

--
Gitblit v1.9.3