| | |
| | | //package com.sandu.ximon.admin.service; |
| | | // |
| | | //import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | //import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | //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 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<PoleLightemitDao, PoleLightemitEntity> { |
| | | // |
| | | // @Autowired |
| | | // PoleStreetlightLightemitService poleStreetlightLightemitService; |
| | | // LightemitUtils lightemitUtils; |
| | | // @Autowired |
| | | // RealtimeServerBean realtimeServerBean; |
| | | // @Value("${server.port}") |
| | | // private String port; |
| | | // @Autowired |
| | | // ApplicationContext applicationContext; |
| | | // @Autowired |
| | | // FfmpegUtils ffmpegUtils; |
| | | // @Autowired |
| | | // FileUploadPathBean fileUploadPathBean; |
| | | // @Autowired |
| | | // NginxConfigBean nginxConfigBean; |
| | | // @Autowired |
| | | // PoleLightemitDao 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); |
| | | package com.sandu.ximon.admin.service; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.google.gson.Gson; |
| | | import com.sandu.common.execption.BusinessException; |
| | | import com.sandu.common.file.FileUploadDto; |
| | | import com.sandu.common.service.impl.BaseServiceImpl; |
| | | import com.sandu.common.util.SpringContextHolder; |
| | | import com.sandu.ximon.admin.config.RealtimeServerBean; |
| | | import com.sandu.ximon.admin.entity.*; |
| | | import com.sandu.ximon.admin.param.PoleBindingParam; |
| | | import com.sandu.ximon.admin.redis.DeviceRedisKey; |
| | | import com.sandu.ximon.admin.security.SecurityUtils; |
| | | import com.sandu.ximon.admin.utils.*; |
| | | import com.sandu.ximon.admin.vo.EquipmentInfomation; |
| | | import com.sandu.ximon.admin.vo.RedisDeviceStatus; |
| | | import com.sandu.ximon.dao.domain.Pole; |
| | | import com.sandu.ximon.dao.domain.PoleLightemitEntity; |
| | | import com.sandu.ximon.dao.enums.OrderByEnums; |
| | | import com.sandu.ximon.dao.enums.PoleBindingEnums; |
| | | import com.sandu.ximon.dao.mapper.PoleLightemitEntityMapper; |
| | | 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 |
| | | private PoleBindingService poleBindingService; |
| | | |
| | | LightemitUtils lightemitUtils; |
| | | @Autowired |
| | | private RealtimeServerBean realtimeServerBean; |
| | | @Value("${server.port}") |
| | | private String port; |
| | | @Autowired |
| | | ApplicationContext applicationContext; |
| | | |
| | | @Autowired |
| | | PoleLightemitEntityMapper poleLightemitDao; |
| | | |
| | | @Autowired |
| | | LedSFileService xiXunFileService; |
| | | |
| | | @Autowired |
| | | RedisUtils redisUtils; |
| | | |
| | | @PostConstruct |
| | | public void init() { |
| | | //重新获取单例 |
| | | lightemitUtils = applicationContext.getBean(LightemitUtils.class); |
| | | } |
| | | |
| | | /** |
| | | * 熙讯list |
| | | * |
| | | * @param keyword |
| | | * @param isOnLine |
| | | * @return |
| | | */ |
| | | public List<PoleLightemitEntity> listLed(String keyword, Integer order, Integer seq, boolean isOnLine) { |
| | | List<PoleLightemitEntity> poleLightemitEntityList; |
| | | //排序字段 |
| | | String orderByResult = "id"; |
| | | //正序、倒叙 |
| | | String orderBySeq = OrderByEnums.ASC.getCode(); |
| | | if (order != null) { |
| | | switch (order) { |
| | | case 1: |
| | | orderByResult = OrderByEnums.LED_S_CODE.getCode(); |
| | | break; |
| | | case 2: |
| | | orderByResult = OrderByEnums.LED_S_NAME.getCode(); |
| | | break; |
| | | case 3: |
| | | orderByResult = OrderByEnums.LED_S_POLE_NAME.getCode(); |
| | | break; |
| | | case 4: |
| | | orderByResult = OrderByEnums.LED_S_CREATE_TIME.getCode(); |
| | | break; |
| | | default: |
| | | } |
| | | } |
| | | if (seq != null) { |
| | | switch (seq) { |
| | | case 1: |
| | | orderBySeq = " ASC"; |
| | | break; |
| | | case 2: |
| | | orderBySeq = " DESC"; |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | //排序方式 |
| | | String orderBy = orderByResult + " " + orderBySeq; |
| | | |
| | | //超管 |
| | | if (SecurityUtils.getClientId() == null) { |
| | | poleLightemitEntityList = poleLightemitDao.listLed(keyword, null, orderBy); |
| | | } else { |
| | | poleLightemitEntityList = poleLightemitDao.listLed(keyword, SecurityUtils.getUserId(), orderBy); |
| | | } |
| | | |
| | | List<PoleLightemitEntity> temp = new ArrayList<>(); |
| | | for (PoleLightemitEntity poleLightemitEntity : poleLightemitEntityList) { |
| | | //查询设备在线状态 |
| | | boolean onLine = lightemitUtils.getLedOnLine(poleLightemitEntity.getLightemitControlCode()); |
| | | //查询屏幕的开启状态 |
| | | String isOpen = lightemitUtils.getIsScreenOpen(poleLightemitEntity.getLightemitControlCode()); |
| | | poleLightemitEntity.setIsOpen(String.valueOf(isOpen)); |
| | | poleLightemitEntity.setOnLine(onLine); |
| | | if (!isOnLine || onLine) { |
| | | temp.add(poleLightemitEntity); |
| | | } |
| | | } |
| | | return temp; |
| | | } |
| | | |
| | | /** |
| | | * 熙讯设备列表(用于首页数据统计) |
| | | * |
| | | * @return |
| | | */ |
| | | public List<PoleLightemitEntity> listLedOnHome() { |
| | | List<PoleLightemitEntity> poleLightemitEntityList; |
| | | //超管 |
| | | if (SecurityUtils.getClientId() == null) { |
| | | poleLightemitEntityList = poleLightemitDao.listLed(null, null, null); |
| | | } else { |
| | | poleLightemitEntityList = poleLightemitDao.listLed(null, SecurityUtils.getUserId(), null); |
| | | } |
| | | |
| | | return poleLightemitEntityList; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 绑定使用 |
| | | * |
| | | * @param keyword |
| | | * @return |
| | | */ |
| | | public List<PoleLightemitEntity> listLedOnBinding(String keyword) { |
| | | List<PoleLightemitEntity> poleLightemitEntityList; |
| | | |
| | | |
| | | //超管 |
| | | if (SecurityUtils.getClientId() == null) { |
| | | poleLightemitEntityList = poleLightemitDao.listLedOnBinding(keyword, null); |
| | | } else { |
| | | poleLightemitEntityList = poleLightemitDao.listLedOnBinding(keyword, SecurityUtils.getUserId()); |
| | | } |
| | | |
| | | for (PoleLightemitEntity poleLightemitEntity : poleLightemitEntityList) { |
| | | //查询设备在线状态 |
| | | boolean onLine = lightemitUtils.getLedOnLine(poleLightemitEntity.getLightemitControlCode()); |
| | | //查询屏幕的开启状态 |
| | | String isOpen = lightemitUtils.getIsScreenOpen(poleLightemitEntity.getLightemitControlCode()); |
| | | poleLightemitEntity.setIsOpen(String.valueOf(isOpen)); |
| | | poleLightemitEntity.setOnLine(onLine); |
| | | } |
| | | return poleLightemitEntityList; |
| | | } |
| | | |
| | | /** |
| | | * 取出在线的熙讯 |
| | | * |
| | | * @param list |
| | | * @return |
| | | */ |
| | | public List<PoleLightemitEntity> ledOnline(List<PoleLightemitEntity> list) { |
| | | List<PoleLightemitEntity> onLineList = new ArrayList<>(); |
| | | for (PoleLightemitEntity poleLightemitEntity : list) { |
| | | // if(lightemitUtils.getIsScreenOpen(poleLightemitEntity.getLightemitControlCode()).contains("true")){ |
| | | // poleLightemitEntity.setIsOpen(lightemitUtils.getIsScreenOpen(poleLightemitEntity.getLightemitControlCode()).contains("true")); |
| | | // } |
| | | // |
| | | // }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) { |
| | | // this.save(poleLightemit); |
| | | // 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); |
| | | // this.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); |
| | | // } |
| | | //} |
| | | poleLightemitEntity.setIsOpen(lightemitUtils.getIsScreenOpen(poleLightemitEntity.getLightemitControlCode())); |
| | | boolean ledOnLine = lightemitUtils.getLedOnLine(poleLightemitEntity.getLightemitControlCode()); |
| | | if (ledOnLine) { |
| | | poleLightemitEntity.setOnLine(true); |
| | | onLineList.add(poleLightemitEntity); |
| | | } else { |
| | | poleLightemitEntity.setOnLine(false); |
| | | } |
| | | } |
| | | return onLineList; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 设置在线状态 |
| | | * |
| | | * @param list |
| | | */ |
| | | public void ledOnlineCheck(List<PoleLightemitEntity> list) { |
| | | for (PoleLightemitEntity poleLightemitEntity : list) { |
| | | poleLightemitEntity.setIsOpen(lightemitUtils.getIsScreenOpen(poleLightemitEntity.getLightemitControlCode())); |
| | | poleLightemitEntity.setOnLine(lightemitUtils.getLedOnLine(poleLightemitEntity.getLightemitControlCode())); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 查询单个LED |
| | | * |
| | | * @param lightControlCode |
| | | * @return |
| | | */ |
| | | public PoleLightemitEntity getLedByLightControlCode(String lightControlCode) { |
| | | PoleLightemitEntity xiXun = getOne(Wrappers.lambdaQuery(PoleLightemitEntity.class).eq(PoleLightemitEntity::getLightemitControlCode, lightControlCode)); |
| | | Pole getpole = poleLightemitDao.getpole(lightControlCode); |
| | | if (xiXun == null) { |
| | | return null; |
| | | } |
| | | boolean isScreenOpen = lightemitUtils.getLedOnLine(xiXun.getLightemitControlCode()); |
| | | |
| | | xiXun.setIsOpen(lightemitUtils.getIsScreenOpen(lightControlCode)); |
| | | xiXun.setOnLine(isScreenOpen); |
| | | xiXun.setStreetlightName(getpole.getPoleName()); |
| | | xiXun.setStreetlightId(getpole.getId()); |
| | | |
| | | return xiXun; |
| | | } |
| | | |
| | | /** |
| | | * 首页灯杆绑定信息 |
| | | */ |
| | | public EquipmentInfomation getLedByLightControlCodeInfo(String lightControlCode) { |
| | | EquipmentInfomation equipmentInfo = new EquipmentInfomation(); |
| | | equipmentInfo.setEquipmentType("SLED"); |
| | | if (lightControlCode == null || lightControlCode.trim().length() == 0) { |
| | | return equipmentInfo; |
| | | } |
| | | |
| | | PoleLightemitEntity xiXun = getOne(Wrappers.lambdaQuery(PoleLightemitEntity.class).eq(PoleLightemitEntity::getLightemitControlCode, lightControlCode)); |
| | | boolean isScreenOpen = false; |
| | | if (xiXun != null) { |
| | | equipmentInfo.setEquipmentCreateTime(xiXun.getCreateTime()); |
| | | equipmentInfo.setEquipmentMac(xiXun.getLightemitControlCode()); |
| | | equipmentInfo.setEquipmentName(xiXun.getLightemitName()); |
| | | isScreenOpen = lightemitUtils.getLedOnLine(xiXun.getLightemitControlCode()); |
| | | } |
| | | if (isScreenOpen) { |
| | | equipmentInfo.setEquipmentState("在线"); |
| | | } else { |
| | | equipmentInfo.setEquipmentState("离线"); |
| | | } |
| | | |
| | | return equipmentInfo; |
| | | } |
| | | |
| | | |
| | | public void savePoleLightemit(PoleLightemitEntity poleLightemit) { |
| | | boolean save = this.save(poleLightemit); |
| | | // 绑定灯杆 |
| | | |
| | | if (save && poleLightemit.getStreetlightId() != null) { |
| | | PoleBindingParam poleBindingParam = new PoleBindingParam(); |
| | | poleBindingParam.setDeviceCode(poleLightemit.getLightemitControlCode()); |
| | | poleBindingParam.setDeviceType(1); |
| | | poleBindingParam.setDeviceName(poleLightemit.getLightemitName()); |
| | | poleBindingService.bindPole(poleLightemit.getStreetlightId(), poleBindingParam); |
| | | } |
| | | |
| | | /** |
| | | * 熙汛led新增日志记录开始 |
| | | */ |
| | | List<String> listCode = new ArrayList<>(); |
| | | listCode.add(poleLightemit.getLightemitControlCode()); |
| | | String content = "{屏幕id:" + poleLightemit.getLightemitId() + ", 屏幕名称:" + poleLightemit.getLightemitName() + ", 屏幕编码:" + poleLightemit.getLightemitControlCode() + " }"; |
| | | StoreOperationRecordsUtils.storeOperationData(listCode, null, "熙汛LED新增", content); |
| | | /** |
| | | * 熙汛led新增日志记录结束 |
| | | */ |
| | | // poleStreetlightLightemitService.saveStreetlightLightemit(poleLightemit.getLightemitId(),poleLightemit.getStreetlightId()); |
| | | } |
| | | |
| | | |
| | | public void updatePoleLightemit(Long ledId, PoleLightemitEntity poleLightemit) { |
| | | PoleLightemitEntity byId = getById(ledId); |
| | | if (byId == null) { |
| | | throw new BusinessException("未找到LED屏"); |
| | | } |
| | | |
| | | if (SecurityUtils.getClientId() != null) { |
| | | boolean belong = SpringContextHolder.getBean(PoleBindingService.class).isBelong(byId.getLightemitControlCode(), PoleBindingEnums.XIXUN); |
| | | if (!belong) { |
| | | throw new BusinessException("该设备不属于您,不能修改设备信息"); |
| | | } |
| | | } |
| | | poleLightemit.setLightemitId(ledId); |
| | | boolean b = this.updateById(poleLightemit); |
| | | // 绑定灯杆 |
| | | |
| | | if (b && poleLightemit.getStreetlightId() != null) { |
| | | //先删除绑定关系 |
| | | poleBindingService.unBindPole(null, poleLightemit.getLightemitControlCode()); |
| | | //再绑定 |
| | | PoleBindingParam poleBindingParam = new PoleBindingParam(); |
| | | poleBindingParam.setDeviceCode(poleLightemit.getLightemitControlCode()); |
| | | poleBindingParam.setDeviceType(10); |
| | | poleBindingParam.setDeviceName(poleLightemit.getLightemitName()); |
| | | poleBindingService.bindPole(poleLightemit.getStreetlightId(), poleBindingParam); |
| | | } |
| | | |
| | | /** |
| | | * 熙汛led编辑日志记录开始 |
| | | */ |
| | | List<String> listCode = new ArrayList<>(); |
| | | listCode.add(byId.getLightemitControlCode()); |
| | | String content = "{屏幕id:" + byId.getLightemitId() + ", 屏幕原名:" + byId.getLightemitName() + ", 屏幕名称:" + poleLightemit.getLightemitName() + ", 屏幕编码:" + byId.getLightemitControlCode() + " }"; |
| | | StoreOperationRecordsUtils.storeOperationData(listCode, null, "熙汛LED编辑", content); |
| | | /** |
| | | * 熙汛led编辑日志记录结束 |
| | | */ |
| | | // poleStreetlightLightemitService.saveStreetlightLightemit(poleLightemit.getLightemitId(),poleLightemit.getStreetlightId()); |
| | | } |
| | | |
| | | public boolean deletePoleLightemit(List<Long> ledIds) { |
| | | |
| | | List<PoleLightemitEntity> poleLightemitEntities = listByIds(ledIds); |
| | | if (poleLightemitEntities != null && poleLightemitEntities.size() != 0) { |
| | | throw new BusinessException("设备不存在"); |
| | | } |
| | | |
| | | List<String> listCode = new ArrayList<>(); |
| | | // 删除设备绑定 |
| | | if (poleLightemitEntities != null && poleLightemitEntities.size() != 0) { |
| | | for (PoleLightemitEntity poleLightemitEntitie : poleLightemitEntities) { |
| | | if (poleLightemitEntitie.getLightemitControlCode() != null) { |
| | | //删除绑定关系//先删除绑定关系 |
| | | listCode.add(poleLightemitEntitie.getLightemitControlCode()); |
| | | poleBindingService.unBindPole(poleLightemitEntitie.getLightemitControlCode()); |
| | | } |
| | | } |
| | | } |
| | | //删除设备 |
| | | boolean b = removeByIds(ledIds); |
| | | |
| | | /** |
| | | * 熙汛led删除日志记录开始 |
| | | */ |
| | | List<String> nameList = new ArrayList<>(); |
| | | for (PoleLightemitEntity poleLightemitEntitie : poleLightemitEntities) { |
| | | nameList.add(poleLightemitEntitie.getLightemitName()); |
| | | } |
| | | |
| | | String content = "{删除熙汛LED的设备信息:" + nameList.toString() + " }"; |
| | | StoreOperationRecordsUtils.storeOperationData(listCode, null, "熙汛LED删除", content); |
| | | /** |
| | | * 熙汛led删除日志记录结束 |
| | | */ |
| | | return b; |
| | | // poleStreetlightLightemitService.saveStreetlightLightemit(poleLightemit.getLightemitId(),poleLightemit.getStreetlightId()); |
| | | } |
| | | |
| | | /** |
| | | * led上传图片 |
| | | * |
| | | * @param lightemitControlCode |
| | | * @param path |
| | | * @param filenameList |
| | | * @param userName |
| | | * @throws IOException |
| | | */ |
| | | @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上传视频 |
| | | * |
| | | * @param lightemitControlCode |
| | | */ |
| | | @Async("taskExecutor") |
| | | public String videoUpload(String lightemitControlCode, FileUploadDto fileUploadDto, Integer type) { |
| | | //获取屏幕宽 |
| | | String screenWidth = lightemitUtils.getScreenWidth(lightemitControlCode); |
| | | String screenHeight = lightemitUtils.getScreenHeight(lightemitControlCode); |
| | | |
| | | //发送视频至开发板并播放 |
| | | String fileUrl = fileUploadDto.getFileUrl(); |
| | | String[] split = fileUrl.split("/"); |
| | | String id = split[split.length - 1]; |
| | | String result = this.videoXixunPlayer(lightemitControlCode, id, fileUploadDto.getFileSize(), fileUploadDto.getMd5(), type, fileUploadDto.getFileType(), 999999); |
| | | |
| | | LogUtils.error("上传播放结果:" + result); |
| | | return result; |
| | | } |
| | | |
| | | |
| | | @Async("taskExecutor") |
| | | public String videoXixunPlayer(String lightemitControlCode, String filename, Long filesize, String md5, Integer type, String fileType, 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(); |
| | | //所有_id都可用UUID随机生成 |
| | | source.set_id(UUID.randomUUID().toString()); |
| | | //请求头拼接该ID为该资源的完整下载地址 |
| | | source.setId(filename); |
| | | if (type == 1) { |
| | | //设置资源类型,其他资源类型请参考xixunplayer节目json说明文档 |
| | | source.set_type("Video"); |
| | | source.setMime("video/mp4"); |
| | | } else { |
| | | source.set_type("Image"); |
| | | source.setMime("image/jpeg"); |
| | | } |
| | | //资源后缀名 |
| | | source.setFileExt(fileType); |
| | | //资源高度 |
| | | source.setHeight(screenHeight); |
| | | //资源宽度 |
| | | source.setWidth(screenWidth); |
| | | //距左 |
| | | source.setLeft(0); |
| | | source.setMd5(md5); |
| | | 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("文件上传播放"); //节目名称 |
| | | 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(""); |
| | | //资源下载链接的请求头 |
| | | command.setPreDownloadURL("https://ximonsmart.oss-cn-shanghai.aliyuncs.com/"); |
| | | command.setTask(task); |
| | | xixun.set_id(UUID.randomUUID().toString()); |
| | | xixun.setCommand(command); |
| | | xixun.setType("commandXixunPlayer"); //命令固定类型,不可更改 |
| | | String jsondata = new Gson().toJson(xixun); |
| | | String clearResult = lightemitUtils.clear(lightemitControlCode); |
| | | if (clearResult.contains("does not exist")) { |
| | | return "推送失败"; |
| | | } else { |
| | | poleLightemitDao.updateRequestBody(lightemitControlCode, jsondata); |
| | | String post = lightemitUtils.post(realtimeServerBean.getCommand() + lightemitControlCode, jsondata); |
| | | LogUtils.error("结果:" + post); |
| | | //{"_type":"success","_id":"ce8dc3ff-dc88-43b7-8f55-60abd8700f1a","timestamp":1653555160535} |
| | | if (post.startsWith("{") && post.endsWith("}") && post.contains("_type\":\"success")) { |
| | | return "推送成功"; |
| | | } else { |
| | | return "推送失败"; |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 更新请求数据 |
| | | * |
| | | * @param ledCode |
| | | * @param postBody |
| | | */ |
| | | public void updateRequestBody(String ledCode, String postBody) { |
| | | baseMapper.updateRequestBody(ledCode, postBody); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 根据led屏编码设置音量 |
| | | * |
| | | * @param lightemitControlCode |
| | | * @param volume |
| | | */ |
| | | @Async("taskExecutor") |
| | | public void setVolume(String lightemitControlCode, Integer volume) { |
| | | lightemitUtils.setVoiume(lightemitControlCode, volume); |
| | | } |
| | | |
| | | /** |
| | | * 根据led屏编码设置亮度 |
| | | * |
| | | * @param lightemitControlCode |
| | | * @param brightness |
| | | */ |
| | | @Async("taskExecutor") |
| | | public void setBrightness(String lightemitControlCode, Integer brightness) { |
| | | lightemitUtils.setBrightness(lightemitControlCode, brightness); |
| | | } |
| | | |
| | | public Object getProgram(Long lightemitId) { |
| | | PoleLightemitEntity xiXun = getById(lightemitId); |
| | | |
| | | String requestBody = xiXun.getRequestBody(); |
| | | if (requestBody == null || requestBody.isEmpty()) { |
| | | throw new BusinessException("未找到节目"); |
| | | } |
| | | |
| | | Map map = JSON.parseObject(requestBody, Map.class); |
| | | return map; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 向Redis中存入设备状态 |
| | | */ |
| | | public void setCacheData() { |
| | | list().forEach( |
| | | xiXun -> { |
| | | RedisDeviceStatus deviceStatus = new RedisDeviceStatus(); |
| | | boolean ledOnLine = lightemitUtils.getLedOnLine(xiXun.getLightemitControlCode()); |
| | | if (ledOnLine) { |
| | | deviceStatus.setStatus(0); |
| | | } else { |
| | | deviceStatus.setStatus(1); |
| | | } |
| | | redisUtils.set(DeviceRedisKey.XIXUN + xiXun.getLightemitControlCode(), deviceStatus); |
| | | } |
| | | ); |
| | | } |
| | | } |