From bfce748e37a753c729e15dd233600379f504d019 Mon Sep 17 00:00:00 2001
From: zhanzhiqin <895896009@qq.com>
Date: 星期四, 28 四月 2022 13:59:28 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
ximon-admin/src/main/java/com/sandu/ximon/admin/service/XiXunPlayerService.java | 380 +++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 278 insertions(+), 102 deletions(-)
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/XiXunPlayerService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/XiXunPlayerService.java
index c7f89fe..c4e6774 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/XiXunPlayerService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/XiXunPlayerService.java
@@ -1,107 +1,283 @@
-//package com.sandu.ximon.admin.service;
-//
-//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-//import com.google.gson.Gson;
-//import com.google.gson.GsonBuilder;
-//import com.sandu.common.service.impl.BaseServiceImpl;
-//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.security.SecurityUtils;
-//import com.sandu.ximon.admin.utils.JsonUtil;
-//import com.sandu.ximon.admin.utils.LightemitUtils;
-//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.springframework.stereotype.Service;
-//
-//import java.text.SimpleDateFormat;
-//import java.util.*;
-//
-//@Service
-//@AllArgsConstructor
-//public class XiXunPlayerService extends BaseServiceImpl<PoleXixunPlayerEntityMapper, PoleXixunPlayerEntity> {
-//
-// private final PoleXixunPlayerEntityMapper poleXixunPlayerEntityMapper;
-// private final XiXunConfig config;
-// private final LightemitUtils lightemitUtils;
-// private final RealtimeServerBean realtimeServerBean;
-//
-//
-// public void insert(ProgramPro programPro, Long userId) {
-// SimpleDateFormat sdf=new SimpleDateFormat("yy-MM-dd HH:mm:ss");
-// Date date = new Date();
-//// Program program = new Program();
-//// try {
-//// program = JsonUtil.convertJsonStringToObject(json,Program.class);
-//// } catch (Exception e) {
-//// e.printStackTrace();
-//// }
-// String json = JsonUtil.jsonObj2Sting(programPro);
-// PoleXixunPlayerEntity poleXixunPlayer = new PoleXixunPlayerEntity();
-// poleXixunPlayer.setProgramCode(programPro.get_id());
-// poleXixunPlayer.setProgramName(programPro.getName());
-// poleXixunPlayer.setHeight(programPro.getHeight());
-// poleXixunPlayer.setWidth(programPro.getWidth());
-// poleXixunPlayer.setTotalSize((float) programPro.getTotalSize()/1000000+"MB");
-// poleXixunPlayer.setRequestBody(json);
-// poleXixunPlayer.setCreatTime(sdf.format(date));
-// poleXixunPlayer.setCreateUserId(SecurityUtils.getClientId());
-//
-// this.save(poleXixunPlayer);
-// }
-//
-// public void videoXixunPlayer(long programId,Long[] lightemitIds) {
-//
-// ProgramPro pro = new ProgramPro();
-// ItemPro items = new ItemPro();
-// TaskPro taskPro = new TaskPro();
-// CommandPro command = new CommandPro();
-// XixunPlayerPro xixun = new XixunPlayerPro();
-// PoleXixunPlayerEntity poleXixunPlayerEntity = new PoleXixunPlayerEntity();
-// items.set_id(UUID.randomUUID().toString());
-// QueryWrapper<PoleXixunPlayerEntity> queryWrapper = new QueryWrapper<>();
-// queryWrapper.eq("program_id",programId);
-// poleXixunPlayerEntity = this.getOne(queryWrapper);
-// String json = poleXixunPlayerEntity.getRequestBody();
+package com.sandu.ximon.admin.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.sandu.common.execption.BusinessException;
+import com.sandu.common.service.impl.BaseServiceImpl;
+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.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.*;
+
+/**
+ * 鐔欒鑺傜洰
+ */
+@Service
+@AllArgsConstructor
+public class XiXunPlayerService extends BaseServiceImpl<PoleXixunPlayerEntityMapper, PoleXixunPlayerEntity> {
+
+ private final PoleXixunPlayerEntityMapper poleXixunPlayerEntityMapper;
+ private final XiXunConfig config;
+ private final LightemitUtils lightemitUtils;
+ private final RealtimeServerBean realtimeServerBean;
+ private final PoleLightemitService poleLightemitService;
+ private final ClientService clientService;
+ private final LedSFileService xiXunFileService;
+
+ //鐔欒鑺傜洰鍒楄〃
+ public LambdaQueryWrapper<PoleXixunPlayerEntity> XixunPlayerList(String keyword) {
+ if (SecurityUtils.getClientId() == null) {
+ if (keyword != null && keyword.isEmpty()) {
+ return Wrappers.lambdaQuery(PoleXixunPlayerEntity.class);
+ } else {
+ return Wrappers.lambdaQuery(PoleXixunPlayerEntity.class).like(PoleXixunPlayerEntity::getProgramName, keyword);
+ }
+
+ } else {
+ if (keyword != null && keyword.isEmpty()) {
+ return Wrappers.lambdaQuery(PoleXixunPlayerEntity.class).eq(PoleXixunPlayerEntity::getCreateUserId, SecurityUtils.getUserId())
+ .or(w -> {
+ w.eq(PoleXixunPlayerEntity::getClientId, SecurityUtils.getClientId());
+ });
+ } else {
+ return Wrappers.lambdaQuery(PoleXixunPlayerEntity.class).eq(PoleXixunPlayerEntity::getCreateUserId, SecurityUtils.getUserId())
+ .or(w -> {
+ w.eq(PoleXixunPlayerEntity::getClientId, SecurityUtils.getClientId());
+ }).like(PoleXixunPlayerEntity::getProgramName, keyword);
+ }
+ }
+ }
+
+ public boolean insert(ProgramPro programPro) {
+ String json = JsonUtil.jsonObj2Sting(programPro);
+ PoleXixunPlayerEntity poleXixunPlayer = new PoleXixunPlayerEntity();
+ poleXixunPlayer.setProgramCode(programPro.get_id());
+ poleXixunPlayer.setProgramName(programPro.getName());
+ poleXixunPlayer.setHeight(programPro.getHeight());
+ poleXixunPlayer.setWidth(programPro.getWidth());
+ poleXixunPlayer.setTotalSize((float) programPro.getTotalSize() / 1000000 + "MB");
+// poleXixunPlayer.setTotalSize( Long.parseLong(programPro.getTotalSize()) / 1000000 + "MB");
+// programPro.setProgramId(poleXixunPlayer.getProgramId());
+// System.out.println(poleXixunPlayer.getProgramId());
+ poleXixunPlayer.setRequestBody(json);
+ poleXixunPlayer.setScreenShot(programPro.getScreenShot());
+ // poleXixunPlayer.setCreatTime(sdf.format(date));
+ if (SecurityUtils.getClientId() != null) {
+ poleXixunPlayer.setCreateUserId(SecurityUtils.getUserId());
+ if (clientService.findClientId()) {
+ poleXixunPlayer.setClientId(clientService.getClientId());
+ }
+ }
+ return this.save(poleXixunPlayer);
+ }
+
+ public boolean deleteProgram(Long pid) {
+ PoleXixunPlayerEntity byId = getById(pid);
+ if (byId == null) {
+ throw new BusinessException("鏈壘鍒拌鑺傜洰");
+ }
+ return removeById(pid);
+ }
+
+ public Object getByPid(Long pid) {
+ PoleXixunPlayerEntity byId = getById(pid);
+ List<Long> fileIds = new ArrayList<>();
+ List<LedSFile> file = new ArrayList<>();
+ if (byId == null) {
+ throw new BusinessException("鏈壘鍒拌鑺傜洰");
+ }
+ String json = byId.getRequestBody();
+ ProgramPro programPro = new ProgramPro();
+ try {
+ programPro = JsonUtil.convertJsonStringToObject(json, ProgramPro.class);
+ programPro.setProgramId(pid);
+ programPro.setScreenShot(byId.getScreenShot());
+ programPro.getLayers().forEach(
+ layerPro -> {
+ layerPro.getSources().forEach(
+ sourcePro -> {
+ long fileId = Long.parseLong(sourcePro.getId());
+ file.add(xiXunFileService.getById(fileId));
+ }
+ );
+ }
+ );
+ programPro.setFileList(file);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return programPro;
+ }
+
+
+// public Object getProgram(String json) {
+//// PoleXixunPlayerEntity byId = getById(pid);
+// List<Long> fileIds = new ArrayList<>();
+// List<LedSFile> file = new ArrayList<>();
+// if (json == null) {
+// throw new BusinessException("鏈壘鍒拌鑺傜洰");
+// }
+// ProgramPro programPro = new ProgramPro();
// try {
-// pro = JsonUtil.convertJsonStringToObject(json, ProgramPro.class);
+// programPro = JsonUtil.convertJsonStringToObject(json, ProgramPro.class);
+// programPro.setProgramId(pid);
+// programPro.setScreenShot(byId.getScreenShot());
+// programPro.getLayers().forEach(
+// layerPro -> {
+// layerPro.getSources().forEach(
+// sourcePro -> {
+// long fileId = Long.parseLong(sourcePro.getId());
+// file.add(xiXunFileService.getById(fileId));
+// }
+// );
+// }
+// );
+// programPro.setFileList(file);
// } catch (Exception e) {
// e.printStackTrace();
// }
-// items.set_program(pro);
-// items.setRepeatTimes(1);
-// items.setSchedulePros(null);//瀹氭椂娈碉紝涓嶅仛瀹氭椂鍙负null
-// taskPro.set_id(UUID.randomUUID().toString());
-// taskPro.setName(poleXixunPlayerEntity.getProgramName());
-// List<ItemPro> list2=new ArrayList<ItemPro>();
-// list2.add(items);
-// taskPro.setItems(list2);
-// command.setId(UUID.randomUUID().toString());
-// //杩欓噷鏄笅鏂圭殑post鍥炶皟鍦板潃锛岄渶瑕佷慨鏀笽P鍦板潃
-// command.setNotificationURL("http://" + config.getIp() + ":" + config.getPort() + "/machine-fast/serv/download/getJSON");
-// //璧勬簮涓嬭浇閾炬帴鐨勮姹傚ご
-// command.setPreDownloadURL("http://" + config.getIp() + ":" + config.getPort() + "/machine-fast/serv/download/downliadFileById/");
-// command.setTask(taskPro);
-// xixun.set_id(UUID.randomUUID().toString());
-// xixun.setCommand(command);
-// xixun.setType("commandXixunPlayer"); //鍛戒护鍥哄畾绫诲瀷锛屼笉鍙洿鏀�
-//
-//
-// Gson gson = new GsonBuilder().disableHtmlEscaping().create();
-//// String jsondata = JSON.toJSONString(xixun);
-// String jsondata = gson.toJson(xixun);
-//
-//// Collection<PoleLightemitEntity> poleLightemitEntities = poleLightemitService.listByIds(Arrays.asList(lightemitIds));
-////
-//// if(poleLightemitEntities != null){
-//// for (PoleLightemitEntity entity: poleLightemitEntities) {
-//// lightemitUtils.clear(entity.getLightemitControlCode());
-//// poleLightemitService.updateRequestBody(entity.getLightemitControlCode(), jsondata);
-//// lightemitUtils.post(realtimeServerBean.getCommand() + entity.getLightemitControlCode(), jsondata);
-//// }
-//// }
+// return programPro;
// }
-//
-//}
+
+
+ /**
+ * 鎺ㄩ�佽妭鐩�
+ *
+ * @param programId
+ * @param lightemitIds
+ */
+ public void videoXixunPlayer(long programId, List<Long> lightemitIds) {
+
+ ProgramPro pro = new ProgramPro();
+ ItemPro items = new ItemPro();
+ TaskPro taskPro = new TaskPro();
+ CommandPro command = new CommandPro();
+ XixunPlayerPro xixun = new XixunPlayerPro();
+ PoleXixunPlayerEntity poleXixunPlayerEntity = new PoleXixunPlayerEntity();
+ items.set_id(UUID.randomUUID().toString());
+ QueryWrapper<PoleXixunPlayerEntity> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("program_id", programId);
+ poleXixunPlayerEntity = this.getOne(queryWrapper);
+ String json = poleXixunPlayerEntity.getRequestBody();
+
+// System.out.println( JSON.parseArray(json, ProgramPro.class));
+
+ try {
+ pro = JsonUtil.convertJsonStringToObject(json, ProgramPro.class);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ items.set_program(pro);
+ items.setRepeatTimes(1);
+ items.setSchedulePros(null);//瀹氭椂娈碉紝涓嶅仛瀹氭椂鍙负null
+ taskPro.set_id(UUID.randomUUID().toString());
+ taskPro.setName(poleXixunPlayerEntity.getProgramName());
+ List<ItemPro> list2 = new ArrayList<>();
+ list2.add(items);
+ taskPro.setItems(list2);
+ command.setId(UUID.randomUUID().toString());
+ //杩欓噷鏄笅鏂圭殑post鍥炶皟鍦板潃锛岄渶瑕佷慨鏀笽P鍦板潃
+ command.setNotificationURL("http://" + config.getIp() + ":" + config.getPort() + "/machine-fast/serv/download/getJSON");
+ //璧勬簮涓嬭浇閾炬帴鐨勮姹傚ご
+ command.setPreDownloadURL("http://" + config.getIp() + ":" + config.getPort() + "/machine-fast/serv/download/downliadFileById/");
+ command.setTask(taskPro);
+ xixun.set_id(UUID.randomUUID().toString());
+ xixun.setCommand(command);
+ xixun.setType("commandXixunPlayer"); //鍛戒护鍥哄畾绫诲瀷锛屼笉鍙洿鏀�
+
+
+ Gson gson = new GsonBuilder().disableHtmlEscaping().create();
+// String jsondata = JSON.toJSONString(xixun);
+ String jsondata = gson.toJson(xixun);
+
+ Collection<PoleLightemitEntity> poleLightemitEntities = poleLightemitService.listByIds(lightemitIds);
+
+ if (poleLightemitEntities != null) {
+ for (PoleLightemitEntity entity : poleLightemitEntities) {
+ lightemitUtils.clear(entity.getLightemitControlCode());
+ poleLightemitService.updateRequestBody(entity.getLightemitControlCode(), jsondata);
+ String post = lightemitUtils.post(realtimeServerBean.getCommand() + entity.getLightemitControlCode(), jsondata);
+ LogUtils.error("缁撴灉:" + post);
+ }
+ }
+ }
+
+
+ /**
+ * 鎺ㄩ�佸ぇ姘旀暟鎹埌鐔欒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);
+ }
+ }
+
+}
--
Gitblit v1.9.3