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