package com.sandu.ximon.admin.service;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.google.gson.Gson;
|
import com.sandu.common.service.impl.BaseServiceImpl;
|
import com.sandu.ximon.admin.config.NginxConfigBean;
|
import com.sandu.ximon.admin.config.RealtimeServerBean;
|
import com.sandu.ximon.admin.entity.*;
|
import com.sandu.ximon.admin.utils.Constant;
|
import com.sandu.ximon.admin.utils.FileUtil;
|
import com.sandu.ximon.admin.utils.HtmlTemplateUtils;
|
import com.sandu.ximon.admin.utils.LightemitUtils;
|
import com.sandu.ximon.admin.utils.request.SubTitleSet;
|
import com.sandu.ximon.dao.domain.PoleLightemitEntity;
|
import com.sandu.ximon.dao.mapper.PoleLightemitEntityMapper;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.cache.annotation.EnableCaching;
|
import org.springframework.context.ApplicationContext;
|
import org.springframework.scheduling.annotation.Async;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.PostConstruct;
|
import java.io.File;
|
import java.io.IOException;
|
import java.util.*;
|
|
|
@Service
|
@EnableCaching
|
public class PoleLightemitService extends BaseServiceImpl<PoleLightemitEntityMapper, PoleLightemitEntity> {
|
|
// @Autowired
|
// PoleStreetlightLightemitService poleStreetlightLightemitService;
|
|
LightemitUtils lightemitUtils;
|
@Autowired
|
private RealtimeServerBean realtimeServerBean;
|
@Value("${server.port}")
|
private String port;
|
@Autowired
|
ApplicationContext applicationContext;
|
// @Autowired
|
// FfmpegUtils ffmpegUtils;
|
// @Autowired
|
// FileUploadPathBean fileUploadPathBean;
|
@Autowired
|
NginxConfigBean nginxConfigBean;
|
|
@Autowired
|
PoleLightemitEntityMapper poleLightemitDao;
|
|
@PostConstruct
|
public void init() {
|
//重新获取单例
|
lightemitUtils = applicationContext.getBean(LightemitUtils.class);
|
}
|
|
/*@Override
|
public PageUtils queryPage(Map<String, Object> params, Long userId) {
|
|
String key = (String)params.get("key");
|
|
Long groupId = StringUtils.isNotBlank((String)params.get("group"))? Long.valueOf((String)params.get("group")): null;
|
|
String order = (String)params.get("order");
|
|
String column = (String)params.get("sortby");
|
|
IPage<PoleLightemitEntity> page = new Page<>();
|
//获取角色列表
|
Long roleId = (sysUserRoleService.queryRoleId(userId));
|
|
if(roleId == null || roleId == 0){
|
return null;
|
}
|
|
if(roleId.longValue() == Constant.SUPER_ADMIN){
|
// page = this.page(
|
// new Query<PoleLightemitEntity>().getPage(params),
|
// new QueryWrapper<PoleLightemitEntity>().like(StringUtils.isNotBlank(key),"lightemit_name", key));
|
if (order != null && order.equals("ASC") && column.equals("isOpen")) {
|
Map<String, Object> map = new HashMap<>();
|
Integer pg = 1;
|
Integer size = 200;
|
map.put("page",pg);
|
params.put("limit",size);
|
page = baseMapper.superAdminSelectPageVo(PageTransform.transformPage(params),key,groupId,order,column);
|
ledOnlineCheck(page.getRecords());
|
page.setRecords(page.getRecords().stream().filter(h-> h.getIsOpen().equals(true)).collect(Collectors.toList()));
|
return new PageUtils(page);
|
}else if (order != null && order.equals("DESC") && column.equals("isOpen")){
|
Map<String, Object> map = new HashMap<>();
|
Integer pg = 1;
|
Integer size = 200;
|
map.put("page",pg);
|
params.put("limit",size);
|
page = baseMapper.superAdminSelectPageVo(PageTransform.transformPage(params),key,groupId,order,column);
|
ledOnlineCheck(page.getRecords());
|
page.setRecords(page.getRecords().stream().filter(h-> h.getIsOpen().equals(false)).collect(Collectors.toList()));
|
return new PageUtils(page);
|
}else {
|
page = baseMapper.superAdminSelectPageVo(PageTransform.transformPage(params), key, groupId,order,column);
|
}
|
|
}else if(roleId.longValue() == Constant.ADMIN){
|
if (order != null && order.equals("ASC") && column.equals("isOpen")) {
|
Map<String, Object> map = new HashMap<>();
|
Integer pg = 1;
|
Integer size = 200;
|
map.put("page",pg);
|
params.put("limit",size);
|
page = baseMapper.adminSelectPageVo(PageTransform.transformPage(params), userId, key, groupId,order,column);
|
ledOnlineCheck(page.getRecords());
|
page.setRecords(page.getRecords().stream().filter(h-> h.getIsOpen().equals(true)).collect(Collectors.toList()));
|
return new PageUtils(page);
|
}else if (order != null && order.equals("DESC") && column.equals("isOpen")){
|
Map<String, Object> map = new HashMap<>();
|
Integer pg = 1;
|
Integer size = 200;
|
map.put("page",pg);
|
params.put("limit",size);
|
page = baseMapper.adminSelectPageVo(PageTransform.transformPage(params), userId, key, groupId,order,column);
|
ledOnlineCheck(page.getRecords());
|
page.setRecords(page.getRecords().stream().filter(h-> h.getIsOpen().equals(false)).collect(Collectors.toList()));
|
return new PageUtils(page);
|
}else {
|
page = baseMapper.adminSelectPageVo(PageTransform.transformPage(params), userId, key, groupId,order,column);
|
}
|
|
}else if(roleId.longValue() == Constant.USER){
|
if (order != null && order.equals("ASC") && column.equals("isOpen")) {
|
Map<String, Object> map = new HashMap<>();
|
Integer pg = 1;
|
Integer size = 200;
|
map.put("page",pg);
|
params.put("limit",size);
|
page = baseMapper.userSelectPageVo(PageTransform.transformPage(params), userId, key, groupId,order,column);
|
ledOnlineCheck(page.getRecords());
|
page.setRecords(page.getRecords().stream().filter(h-> h.getIsOpen().equals(true)).collect(Collectors.toList()));
|
return new PageUtils(page);
|
}else if (order != null && order.equals("DESC") && column.equals("isOpen")){
|
Map<String, Object> map = new HashMap<>();
|
Integer pg = 1;
|
Integer size = 200;
|
map.put("page",pg);
|
params.put("limit",size);
|
page = baseMapper.userSelectPageVo(PageTransform.transformPage(params), userId, key, groupId,order,column);
|
ledOnlineCheck(page.getRecords());
|
page.setRecords(page.getRecords().stream().filter(h-> h.getIsOpen().equals(false)).collect(Collectors.toList()));
|
return new PageUtils(page);
|
}else {
|
page = baseMapper.userSelectPageVo(PageTransform.transformPage(params), userId, key, groupId,order,column);
|
}
|
|
}
|
ledOnlineCheck(page.getRecords());
|
return new PageUtils(page);
|
}
|
*//*
|
@Override
|
public List<PoleLightemitEntity> getAll(Long userId) {
|
//获取角色列表
|
Long roleId = (sysUserRoleService.queryRoleId(userId));
|
|
if(roleId == null || roleId == 0){
|
return null;
|
}
|
List<PoleLightemitEntity> list = null;
|
if(roleId.longValue() == Constant.SUPER_ADMIN){
|
list = poleLightemitDao.selectAll();
|
}else if(roleId.longValue() == Constant.ADMIN){
|
list = poleLightemitDao.selectAllByCompany(userId);
|
}else if(roleId.longValue() == Constant.USER){
|
list = poleLightemitDao.selectAllByUser(userId);
|
}
|
return list;
|
}
|
*/
|
|
/* public void ledOnlineCheck(List<PoleLightemitEntity> list) {
|
|
for(PoleLightemitEntity poleLightemitEntity : list){
|
poleLightemitEntity.setIsOpen(lightemitUtils.getIsScreenOpen(poleLightemitEntity.getLightemitControlCode()).contains("true"));
|
}
|
}*/
|
|
|
public void savePoleLightemit(PoleLightemitEntity poleLightemit) {
|
boolean save = this.save(poleLightemit);
|
// 绑定灯杆
|
if(save&&!("").equals(poleLightemit.getStreetlightId())){
|
System.out.println("-------------");
|
}
|
// poleStreetlightLightemitService.saveStreetlightLightemit(poleLightemit.getLightemitId(),poleLightemit.getStreetlightId());
|
}
|
|
|
/* public void updatePoleLightemit(PoleLightemitEntity poleLightemit) {
|
this.updateById(poleLightemit);
|
poleStreetlightLightemitService.saveStreetlightLightemit(poleLightemit.getLightemitId(),poleLightemit.getStreetlightId());
|
}*/
|
|
/**
|
* 查询权限范围内的所有led屏信息
|
*
|
* @param
|
* @return
|
*/
|
/* public List<PoleLightemitEntity> selectLightemitByUserId(Long userId) {
|
List<PoleLightemitEntity> list = new ArrayList<>();
|
|
Long roleId = sysUserRoleService.queryRoleId(userId);
|
|
if(roleId == null || roleId == 0){
|
return new ArrayList<>();
|
}
|
if(roleId.longValue() == Constant.SUPER_ADMIN){
|
list = this.list();
|
}else if(roleId.longValue() == Constant.ADMIN){
|
list = baseMapper.selectCompanyLightemitByUserId(userId);
|
}else if(roleId.longValue() == Constant.USER){
|
list = baseMapper.selectLightemitByUserId(userId);
|
}
|
return list;
|
}
|
*/
|
/*
|
通过屏幕编码查询
|
*/
|
public PoleLightemitEntity selectByLightemitControlCode(String lightemitControlCode) {
|
QueryWrapper<PoleLightemitEntity> queryWrapper = new QueryWrapper<>();
|
queryWrapper.eq("lightemit_control_code", lightemitControlCode);
|
return this.getOne(queryWrapper);
|
}
|
|
/*
|
led上传图片
|
*/
|
@Async("taskExecutor")
|
public void photoUpload(String lightemitControlCode, String path, List<String> filenameList, String userName) throws IOException {
|
//获取屏幕宽
|
String screenWidth = lightemitUtils.getScreenWidth(lightemitControlCode);
|
String screenHeight = lightemitUtils.getScreenHeight(lightemitControlCode);
|
|
//html地址
|
String filenameTemp = path + userName + "_" + lightemitControlCode + ".html";
|
File htmlFile = new File(filenameTemp);
|
if (!htmlFile.exists() || htmlFile.delete()) {
|
htmlFile.createNewFile();
|
}
|
|
//获取body的html
|
Map<String, Object> params = new HashMap<>();
|
params.put("imgList", filenameList);
|
params.put("screenWidth", screenWidth);
|
params.put("screenHeight", screenHeight);
|
|
String body = new HtmlTemplateUtils().renderPath("classpath:templates/lightemitTemplates/photoTemplates.html", params);
|
|
boolean flag = new FileUtil().writeToFile(body, filenameTemp);
|
|
if (flag) {
|
//清屏操作
|
lightemitUtils.clear(lightemitControlCode);
|
//清除播放列表
|
lightemitUtils.clearVideoPlay(lightemitControlCode);
|
//清除节目列表
|
lightemitUtils.clearPlayerTask(lightemitControlCode);
|
//推送图片
|
lightemitUtils.postHtml(lightemitControlCode, userName);
|
}
|
}
|
|
/*
|
led上传视频
|
*/
|
|
@Async("taskExecutor")
|
public void videoUpload(String lightemitControlCode, String filename, String path, String userName) throws IOException {
|
//获取屏幕宽
|
String screenWidth = lightemitUtils.getScreenWidth(lightemitControlCode);
|
String screenHeight = lightemitUtils.getScreenHeight(lightemitControlCode);
|
|
//发送视频至开发板并播放
|
lightemitUtils.postVideo(screenWidth, screenHeight, filename, lightemitControlCode);
|
|
//清屏
|
lightemitUtils.clear(lightemitControlCode);
|
|
}
|
|
/**
|
* LED上传单行字幕
|
*/
|
@Async("taskExecutor")
|
public Boolean subTitleSet(SubTitleSetEntity subTitleSetEntity, String path, String userName) {
|
if (subTitleSetEntity == null) {
|
return false;
|
}
|
if (subTitleSetEntity.getDirection().equals(Constant.LEFT) || subTitleSetEntity.getDirection().equals(Constant.RIGHT)) {
|
//字幕横向滚动
|
this.BuildHorizonSingSubTitleText(subTitleSetEntity);
|
} else if (subTitleSetEntity.getDirection().equals(Constant.UP) || subTitleSetEntity.getDirection().equals(Constant.DOWN)) {
|
//字幕纵向滚动
|
try {
|
this.BuildVerticalSingSubTitleText(subTitleSetEntity, path, userName);
|
} catch (IOException e) {
|
return false;
|
}
|
}
|
return true;
|
}
|
|
/**
|
* LED上传多行字幕
|
*/
|
@Async("taskExecutor")
|
public Boolean subMultiTitleSet(SubTitleSetEntity subTitleSetEntity, String path, String userName) {
|
try {
|
this.BuildVerticalMultiSubTitleText(subTitleSetEntity, path, userName);
|
return true;
|
} catch (IOException e) {
|
return false;
|
}
|
}
|
|
/*
|
删除
|
*/
|
|
/* public void deleteByIds(List<Long> lightemitIds) {
|
this.removeByIds(lightemitIds);
|
//删除关系表中的数据
|
poleStreetlightLightemitService.remove(
|
new UpdateWrapper<PoleStreetlightLightemitEntity>().in("lightemit_id", lightemitIds.toArray()));
|
}*/
|
|
/*
|
熙讯视频设置
|
*/
|
|
@Async("taskExecutor")
|
public void videoXixunPlayer(String lightemitControlCode, String ip, String filename, Long filesize, Integer videoTime) {
|
//获取屏幕宽
|
Integer screenWidth = Integer.valueOf(lightemitUtils.getScreenWidth(lightemitControlCode));
|
Integer screenHeight = Integer.valueOf(lightemitUtils.getScreenHeight(lightemitControlCode));
|
Source source = new Source();
|
Layer layer = new Layer();
|
Program pro = new Program();
|
TaskItem items = new TaskItem();
|
ProgramsTask task = new ProgramsTask();
|
Command command = new Command();
|
XixunPlayer xixun = new XixunPlayer();
|
source.set_id(UUID.randomUUID().toString());//所有_id都可用UUID随机生成
|
source.setId(filename);//请求头拼接该ID为该资源的完整下载地址
|
source.set_type("Video"); //设置资源类型,其他资源类型请参考xixunplayer节目json说明文档
|
source.setFileExt(".mp4"); //资源后缀名
|
source.setHeight(screenHeight); //资源高度
|
source.setWidth(screenWidth); //资源宽度
|
source.setLeft(0); //距左
|
source.setMd5("dd135d5d2d44d619a542db773ab529a4");
|
source.setMime("video/mp4");
|
source.setName(filename);
|
source.setPlayTime(0); //播放起始时间
|
source.setSize(filesize); //资源字节数,要精准
|
source.setTimeSpan(videoTime); //该资源播放时长
|
source.setTop(0); //距顶
|
List<Source> list = new ArrayList<Source>();
|
list.add(source);
|
layer.setSources(list);
|
pro.set_id(UUID.randomUUID().toString());
|
pro.setHeight(screenHeight); //节目高度
|
List<Layer> list1 = new ArrayList<Layer>();
|
list1.add(layer);
|
pro.setLayers(list1);
|
pro.setName("demo"); //节目名称
|
pro.setOthers(true);//如果为true,则该节目来自第三方接口,不是来自我们自己的web,二次开发请务必赋值为true
|
pro.setTotalSize(filesize); //所有资源总字节数
|
pro.setVersion(0); //高级节目=0,简易节目=2
|
pro.setWidth(screenWidth); //节目宽度
|
items.set_id(UUID.randomUUID().toString());
|
items.set_program(pro);
|
items.setRepeatTimes(1);
|
items.setSchedules(null);//定时段,不做定时可为null
|
task.set_id(UUID.randomUUID().toString());
|
task.setName("这是一个示例");
|
List<TaskItem> list2 = new ArrayList<TaskItem>();
|
list2.add(items);
|
task.setItems(list2);
|
command.setId(UUID.randomUUID().toString());
|
//这里是下方的post回调地址,需要修改IP地址
|
command.setNotificationURL("http://" + ip + ":" + port + "/machine-fast/serv/download/getJSON");
|
//资源下载链接的请求头
|
command.setPreDownloadURL("http://" + ip + ":" + port + "/machine-fast/serv/download/downloadFile/");
|
command.setTask(task);
|
xixun.set_id(UUID.randomUUID().toString());
|
xixun.setCommand(command);
|
xixun.setType("commandXixunPlayer"); //命令固定类型,不可更改
|
String jsondata = new Gson().toJson(xixun);
|
lightemitUtils.clear(lightemitControlCode);
|
poleLightemitDao.updateRequestBody(lightemitControlCode, jsondata);
|
lightemitUtils.post(realtimeServerBean.getCommand() + lightemitControlCode, jsondata);
|
}
|
|
/*
|
推送天气数据
|
*/
|
|
//@Async("taskExecutor")
|
/* public Boolean pushWeather(String lightemitControlCode, PoleSensorEntity sensorEntity, PoleStreetlightEntity 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.getBrightness() == null? "-": sensorEntity.getBrightness()) + "lux<br/>" +
|
"风速:" + (sensorEntity == null || sensorEntity.getWindSpeed() == null? "-": sensorEntity.getWindSpeed()) + "m/s<br/>" +
|
"CO2:" + (sensorEntity == null || sensorEntity.getEco2() == null? "-": sensorEntity.getEco2()) + "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);
|
}
|
}*/
|
|
/*
|
更新请求数据
|
*/
|
|
public void updateRequestBody(String ledCode, String postBody) {
|
baseMapper.updateRequestBody(ledCode, postBody);
|
}
|
|
/*
|
根据led屏编码获取灯杆所有信息
|
*/
|
|
// public PoleStreetlightEntity getStreetlightByLedCode(String ledCode) {
|
// return baseMapper.getStreetlightByLedCode(ledCode);
|
// }
|
|
/*
|
根据led屏编码设置音量
|
*/
|
|
@Async("taskExecutor")
|
public void setVolume(String lightemitControlCode, Integer volume) {
|
lightemitUtils.setVoiume(lightemitControlCode, volume);
|
}
|
|
|
// public List<PoleLightemitEntity> listOfStreetlight(String streetlightId) {
|
// return baseMapper.listOfStreetlight(streetlightId);
|
// }
|
|
|
// public List<PoleLightemitEntity> selectLedByStreetlightId(String streetlightId) {
|
// return baseMapper.getLedByStreetlightId(streetlightId);
|
// }
|
|
/*
|
上传水平滚动单行字幕
|
*/
|
private void BuildHorizonSingSubTitleText(SubTitleSetEntity subTitleSetEntity) {
|
//拼装LED屏幕设置请求body
|
SubTitleSet subTitleSet = new SubTitleSet();
|
subTitleSet.num = subTitleSetEntity.getNum() != null ? subTitleSetEntity.getNum() : subTitleSet.num;
|
subTitleSet.interval = subTitleSetEntity.getInterval() != null ? subTitleSetEntity.getInterval() : subTitleSet.interval;
|
subTitleSet.step = subTitleSetEntity.getStep() != null ? subTitleSetEntity.getStep() : subTitleSet.step;
|
subTitleSet.direction = subTitleSetEntity.getDirection() != null ? subTitleSetEntity.getDirection() : subTitleSet.direction;
|
subTitleSet.align = subTitleSetEntity.getAlign() != null ? subTitleSetEntity.getAlign() : subTitleSet.align;
|
//拼接html 背景默认显色为白色
|
subTitleSet.html = "<head><style type=\"text/css\">body{background-color:" +
|
(subTitleSetEntity.getColor() != null && StringUtils.isNotBlank(subTitleSetEntity.getColor()) ? subTitleSetEntity.getColor() : "#000000") +
|
"}</style></head><i style=\"color:" +
|
(subTitleSetEntity.getFontColor() != null && StringUtils.isNotBlank(subTitleSetEntity.getFontColor()) ? subTitleSetEntity.getFontColor() : "#ffffff")
|
+ "; font-size: " +
|
(subTitleSetEntity.getFontSize() != null && StringUtils.isNotBlank(subTitleSetEntity.getFontSize()) ? subTitleSetEntity.getFontSize() : "1")
|
+ "em\">" + subTitleSetEntity.getContent() + "</i>";
|
|
//获取所有led数据
|
Collection poleLightemitControllers = this.listByIds(Arrays.asList(subTitleSetEntity.getId()));
|
if (!poleLightemitControllers.isEmpty()) {
|
Iterator iterator = poleLightemitControllers.iterator();
|
while (iterator.hasNext()) {
|
PoleLightemitEntity poleLightemitEntity = (PoleLightemitEntity) iterator.next();
|
//清屏操作
|
lightemitUtils.clear(poleLightemitEntity.getLightemitControlCode());
|
//清除播放列表
|
lightemitUtils.clearVideoPlay(poleLightemitEntity.getLightemitControlCode());
|
//清除节目列表
|
lightemitUtils.clearPlayerTask(poleLightemitEntity.getLightemitControlCode());
|
//发送字幕设置请求
|
lightemitUtils.subTitleSet(subTitleSet, poleLightemitEntity.getLightemitControlCode(), true);
|
}
|
}
|
}
|
|
/*
|
上传垂直滚动单行字幕
|
*/
|
private void BuildVerticalSingSubTitleText(SubTitleSetEntity subTitleSetEntity, String path, String userName) throws IOException {
|
//html地址
|
//获取所有led数据
|
Collection poleLightemitControllers = this.listByIds(Arrays.asList(subTitleSetEntity.getId()));
|
if (!poleLightemitControllers.isEmpty()) {
|
Iterator iterator = poleLightemitControllers.iterator();
|
while (iterator.hasNext()) {
|
PoleLightemitEntity poleLightemitEntity = (PoleLightemitEntity) iterator.next();
|
|
String lightemitControlCode = poleLightemitEntity.getLightemitControlCode();
|
|
//获取屏幕宽
|
Integer screenWidth = Integer.valueOf(lightemitUtils.getScreenWidth(lightemitControlCode));
|
Integer screenHeight = Integer.valueOf(lightemitUtils.getScreenHeight(lightemitControlCode));
|
|
String filenameTemp = path + userName + "_" + lightemitControlCode + ".html";
|
File htmlFile = new File(filenameTemp);
|
if (!htmlFile.exists() || htmlFile.delete()) {
|
htmlFile.createNewFile();
|
}
|
|
//若向下滚动,文字顺序相反
|
if (Constant.DOWN.equals(subTitleSetEntity.getDirection())) {
|
subTitleSetEntity.setContent(StringUtils.reverse(subTitleSetEntity.getContent()));
|
}
|
|
Map<String, Object> params = new HashMap<>();
|
params.put("direction", subTitleSetEntity.getDirection());
|
params.put("screenWidth", screenWidth);
|
params.put("screenHeight", screenHeight);
|
params.put("fontSize", subTitleSetEntity.getFontSize() != null && StringUtils.isNotBlank(subTitleSetEntity.getFontSize()) ? subTitleSetEntity.getFontSize() : "1");
|
params.put("align", subTitleSetEntity.getAlign());
|
params.put("fontColor", subTitleSetEntity.getFontColor() != null && StringUtils.isNotBlank(subTitleSetEntity.getFontColor()) ? subTitleSetEntity.getFontColor() : "#ffffff");
|
params.put("backgroundColor", subTitleSetEntity.getColor() != null && StringUtils.isNotBlank(subTitleSetEntity.getColor()) ? subTitleSetEntity.getColor() : "#000000");
|
params.put("interval", subTitleSetEntity.getInterval() != null ? subTitleSetEntity.getInterval() : 50);
|
params.put("step", subTitleSetEntity.getStep() != null ? subTitleSetEntity.getStep() : 1);
|
params.put("num", subTitleSetEntity.getNum() != null ? subTitleSetEntity.getNum() : -1);
|
params.put("contentArray", subTitleSetEntity.getContent().toCharArray());
|
|
String body = new HtmlTemplateUtils().renderPath("classpath:templates/lightemitTemplates/buildVerticalSingSubTitleTemplates.html", params);
|
|
boolean flag = new FileUtil().writeToFile(body, filenameTemp);
|
|
if (flag) {
|
//清屏操作
|
lightemitUtils.clear(lightemitControlCode);
|
//清除播放列表
|
lightemitUtils.clearVideoPlay(lightemitControlCode);
|
//清除节目列表
|
lightemitUtils.clearPlayerTask(lightemitControlCode);
|
//推送
|
lightemitUtils.postHtmlUseNginx(lightemitControlCode, userName);
|
}
|
}
|
}
|
}
|
|
|
/*
|
上传垂直滚动多行字幕
|
*/
|
private void BuildVerticalMultiSubTitleText(SubTitleSetEntity subTitleSetEntity, String path, String userName) throws IOException {
|
//html地址
|
//获取所有led数据
|
Collection poleLightemitControllers = this.listByIds(Arrays.asList(subTitleSetEntity.getId()));
|
if (!poleLightemitControllers.isEmpty()) {
|
Iterator iterator = poleLightemitControllers.iterator();
|
while (iterator.hasNext()) {
|
PoleLightemitEntity poleLightemitEntity = (PoleLightemitEntity) iterator.next();
|
|
String lightemitControlCode = poleLightemitEntity.getLightemitControlCode();
|
|
//获取屏幕宽
|
Integer screenWidth = Integer.valueOf(lightemitUtils.getScreenWidth(lightemitControlCode));
|
Integer screenHeight = Integer.valueOf(lightemitUtils.getScreenHeight(lightemitControlCode));
|
|
String filenameTemp = path + userName + "_" + lightemitControlCode + ".html";
|
File htmlFile = new File(filenameTemp);
|
if (!htmlFile.exists() || htmlFile.delete()) {
|
htmlFile.createNewFile();
|
}
|
|
Map<String, Object> params = new HashMap<>();
|
params.put("direction", subTitleSetEntity.getDirection());
|
params.put("screenWidth", screenWidth);
|
params.put("screenHeight", screenHeight);
|
params.put("fontSize", subTitleSetEntity.getFontSize() != null && StringUtils.isNotBlank(subTitleSetEntity.getFontSize()) ? subTitleSetEntity.getFontSize() : "1");
|
params.put("align", subTitleSetEntity.getAlign());
|
params.put("fontColor", subTitleSetEntity.getFontColor() != null && StringUtils.isNotBlank(subTitleSetEntity.getFontColor()) ? subTitleSetEntity.getFontColor() : "#ffffff");
|
params.put("backgroundColor", subTitleSetEntity.getColor() != null && StringUtils.isNotBlank(subTitleSetEntity.getColor()) ? subTitleSetEntity.getColor() : "#000000");
|
params.put("interval", subTitleSetEntity.getInterval() != null ? subTitleSetEntity.getInterval() : 50);
|
params.put("step", subTitleSetEntity.getStep() != null ? subTitleSetEntity.getStep() : 1);
|
params.put("num", subTitleSetEntity.getNum() != null ? subTitleSetEntity.getNum() : -1);
|
params.put("contentArray", subTitleSetEntity.getContent().split("\n"));
|
|
String body = new HtmlTemplateUtils().renderPath("classpath:templates/lightemitTemplates/buildVerticalSingSubTitleTemplates.html", params);
|
|
boolean flag = new FileUtil().writeToFile(body, filenameTemp);
|
|
if (flag) {
|
//清屏操作
|
lightemitUtils.clear(lightemitControlCode);
|
//清除播放列表
|
lightemitUtils.clearVideoPlay(lightemitControlCode);
|
//清除节目列表
|
lightemitUtils.clearPlayerTask(lightemitControlCode);
|
//推送
|
lightemitUtils.postHtmlUseNginx(lightemitControlCode, userName);
|
}
|
}
|
}
|
}
|
|
// @Override
|
public void xixunplaySetting(String lightemitControlCode) {
|
//获取屏幕宽
|
// Integer screenWidth = Integer.valueOf(lightemitUtils.getScreenWidth(lightemitControlCode));
|
// Integer screenHeight = Integer.valueOf(lightemitUtils.getScreenHeight(lightemitControlCode));
|
// Source source = new Source();
|
// Layer layer = new Layer();
|
// Program pro = new Program();
|
// TaskItem items = new TaskItem();
|
// ProgramsTask task = new ProgramsTask();
|
// Command payload = new Command();
|
// XixunPlayer xixun = new XixunPlayer();
|
// source.set_id(UUID.randomUUID().toString());//所有_id都可用UUID随机生成
|
// source.setId(filename);//请求头拼接该ID为该资源的完整下载地址
|
// source.set_type("Video"); //设置资源类型,其他资源类型请参考xixunplayer节目json说明文档
|
// source.setFileExt(".mp4"); //资源后缀名
|
// source.setHeight(screenHeight); //资源高度
|
// source.setWidth(screenWidth); //资源宽度
|
// source.setLeft(0); //距左
|
// source.setMd5("dd135d5d2d44d619a542db773ab529a4");
|
// source.setMime("video/mp4");
|
// source.setName(filename);
|
// source.setPlayTime(0); //播放起始时间
|
// source.setSize(filesize); //资源字节数,要精准
|
// source.setTimeSpan(videoTime); //该资源播放时长
|
// source.setTop(0); //距顶
|
// List<Source> list = new ArrayList<Source>();
|
// list.add(source);
|
// layer.setSources(list);
|
// pro.set_id(UUID.randomUUID().toString());
|
// pro.setHeight(screenHeight); //节目高度
|
// List<Layer> list1=new ArrayList<Layer>();
|
// list1.add(layer);
|
// pro.setLayers(list1);
|
// pro.setName("demo"); //节目名称
|
// pro.setOthers(true);//如果为true,则该节目来自第三方接口,不是来自我们自己的web,二次开发请务必赋值为true
|
// pro.setTotalSize(filesize); //所有资源总字节数
|
// pro.setVersion(0); //高级节目=0,简易节目=2
|
// pro.setWidth(screenWidth); //节目宽度
|
// items.set_id(UUID.randomUUID().toString());
|
// items.set_program(pro);
|
// items.setRepeatTimes(1);
|
// items.setSchedules(null);//定时段,不做定时可为null
|
// task.set_id(UUID.randomUUID().toString());
|
// task.setName("这是一个示例");
|
// List<TaskItem> list2=new ArrayList<TaskItem>();
|
// list2.add(items);
|
// task.setItems(list2);
|
// payload.setId(UUID.randomUUID().toString());
|
// //这里是下方的post回调地址,需要修改IP地址
|
// payload.setNotificationURL("http://" + ip + ":" + port + "/machine-fast/serv/download/getJSON");
|
// //资源下载链接的请求头
|
// payload.setPreDownloadURL("http://" + ip + ":" + port + "/machine-fast/serv/download/downloadFile/");
|
// payload.setTask(task);
|
// xixun.set_id(UUID.randomUUID().toString());
|
// xixun.setCommand(payload);
|
// xixun.setType("commandXixunPlayer"); //命令固定类型,不可更改
|
// String jsondata = new Gson().toJson(xixun);
|
// lightemitUtils.clear(lightemitControlCode);
|
// this.updateRequestBody(lightemitControlCode,jsondata);
|
// lightemitUtils.post(realtimeServerBean.getCommand() + lightemitControlCode,jsondata);
|
}
|
}
|