| | |
| | | package com.sandu.ximon.admin.service; |
| | | |
| | | import cn.hutool.json.JSONUtil; |
| | | 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.github.pagehelper.PageHelper; |
| | | import com.google.gson.Gson; |
| | | import com.google.gson.GsonBuilder; |
| | | import com.sandu.common.execption.BusinessException; |
| | | import com.sandu.common.object.BaseConditionVO; |
| | | 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.dao.domain.Pole; |
| | | import com.sandu.ximon.dao.domain.PoleLightemitEntity; |
| | | import com.sandu.ximon.dao.domain.PoleXixunPlayerEntity; |
| | | import com.sandu.ximon.dao.enums.OrderByEnums; |
| | | import com.sandu.ximon.dao.mapper.PoleXixunPlayerEntityMapper; |
| | | import lombok.AllArgsConstructor; |
| | | import org.apache.commons.lang.StringUtils; |
| | |
| | | @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; |
| | |
| | | } |
| | | } |
| | | |
| | | public List<PoleXixunPlayerEntity> listProgram(BaseConditionVO baseConditionVO, Integer order, Integer seq, String keyword) { |
| | | LambdaQueryWrapper<PoleXixunPlayerEntity> wrapper = XixunPlayerList(keyword); |
| | | //排序字段 |
| | | String orderByResult = "program_id"; |
| | | //正序、倒叙 |
| | | String orderBySeq = OrderByEnums.ASC.getCode(); |
| | | if (order != null) { |
| | | switch (order) { |
| | | case 1: |
| | | orderByResult = OrderByEnums.LED_S_PROGRAM_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 (baseConditionVO != null) { |
| | | PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(), orderBy); |
| | | } |
| | | return list(wrapper); |
| | | } |
| | | |
| | | public boolean insert(ProgramPro programPro) { |
| | | programPro.getLayers().forEach( |
| | | layerPro -> { |
| | | layerPro.getSources().forEach( |
| | | sourcePro -> { |
| | | long fileId = Long.parseLong(sourcePro.getId()); |
| | | LedSFile file = xiXunFileService.getById(fileId); |
| | | String fileUrl = file.getFileUrl(); |
| | | String[] split = fileUrl.split("/"); |
| | | sourcePro.setId(split[split.length-1]); |
| | | sourcePro.setMd5(file.getMd5()); |
| | | } |
| | | ); |
| | | } |
| | | ); |
| | | String json = JsonUtil.jsonObj2Sting(programPro); |
| | | Gson gson = new GsonBuilder().disableHtmlEscaping().create(); |
| | | String json = gson.toJson(programPro); |
| | | PoleXixunPlayerEntity poleXixunPlayer = new PoleXixunPlayerEntity(); |
| | | poleXixunPlayer.setProgramCode(programPro.get_id()); |
| | | poleXixunPlayer.setProgramName(programPro.getName()); |
| | |
| | | + ", 节目名称:" + poleXixunPlayer.getProgramName() |
| | | + ", 节目内容:" + json |
| | | + " }"; |
| | | StoreOperationRecordsUtils.storeOperationData(null, null, "熙汛节目更改", content); |
| | | StoreOperationRecordsUtils.storeOperationData(null, null, "熙汛节目添加", content); |
| | | /** |
| | | * 熙汛节目新增日志记录结束 |
| | | */ |
| | | return save; |
| | | } |
| | | |
| | | /** |
| | | * 编辑 |
| | | * |
| | | * @param programPro |
| | | * @return |
| | | */ |
| | | public boolean update(ProgramPro programPro) { |
| | | Gson gson = new GsonBuilder().disableHtmlEscaping().create(); |
| | | String json = gson.toJson(programPro); |
| | | // String jsondata = 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.setScreenShot(programPro.getScreenShot()); |
| | | if (SecurityUtils.getClientId() != null) { |
| | | poleXixunPlayer.setCreateUserId(SecurityUtils.getUserId()); |
| | | if (clientService.findClientId()) { |
| | | poleXixunPlayer.setClientId(clientService.getClientId()); |
| | | } |
| | | } |
| | | poleXixunPlayer.setProgramId(programPro.getProgramId()); |
| | | boolean updateResult = updateById(poleXixunPlayer); |
| | | /** |
| | | * 熙汛节目新增日志记录开始 |
| | | */ |
| | | String content = "{节目id:" + poleXixunPlayer.getProgramId() |
| | | + ", 节目名称:" + poleXixunPlayer.getProgramName() |
| | | + ", 节目内容:" + json |
| | | + " }"; |
| | | StoreOperationRecordsUtils.storeOperationData(null, null, "熙汛节目编辑", content); |
| | | /** |
| | | * 熙汛节目新增日志记录结束 |
| | | */ |
| | | return updateResult; |
| | | } |
| | | |
| | | public boolean deleteProgram(Long pid) { |
| | |
| | | String json = byId.getRequestBody(); |
| | | ProgramPro programPro = new ProgramPro(); |
| | | try { |
| | | programPro = JsonUtil.convertJsonStringToObject(json, ProgramPro.class); |
| | | Gson gson = new GsonBuilder().disableHtmlEscaping().create(); |
| | | // programPro = JsonUtil.convertJsonStringToObject(json, ProgramPro.class); |
| | | programPro = gson.fromJson(json, ProgramPro.class); |
| | | programPro.setProgramId(pid); |
| | | programPro.setScreenShot(byId.getScreenShot()); |
| | | programPro.getLayers().forEach( |
| | |
| | | * @param programId |
| | | * @param lightemitIds |
| | | */ |
| | | public void videoXixunPlayer(long programId, List<Long> lightemitIds) { |
| | | public List<Map> videoXixunPlayer(long programId, List<Long> lightemitIds) { |
| | | //记录操作结果 |
| | | List<Map> mapList = new ArrayList<>(); |
| | | |
| | | ProgramPro pro = new ProgramPro(); |
| | | |
| | | ItemPro items = new ItemPro(); |
| | | TaskPro taskPro = new TaskPro(); |
| | | CommandPro command = new CommandPro(); |
| | | XixunPlayerPro xixun = new XixunPlayerPro(); |
| | | PoleXixunPlayerEntity poleXixunPlayerEntity = new PoleXixunPlayerEntity(); |
| | | |
| | | PoleXixunPlayerEntity poleXixunPlayerEntity; |
| | | items.set_id(UUID.randomUUID().toString()); |
| | | QueryWrapper<PoleXixunPlayerEntity> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("program_id", programId); |
| | | poleXixunPlayerEntity = this.getOne(queryWrapper); |
| | | if (poleXixunPlayerEntity == null) { |
| | | throw new BusinessException("节目数据异常!"); |
| | | } |
| | | |
| | | String json = poleXixunPlayerEntity.getRequestBody(); |
| | | if (StringUtils.isEmpty(json)) { |
| | | throw new BusinessException("节目数据异常!"); |
| | | } |
| | | |
| | | // System.out.println( JSON.parseArray(json, ProgramPro.class)); |
| | | |
| | | ProgramPro pro; |
| | | try { |
| | | pro = JsonUtil.convertJsonStringToObject(json, ProgramPro.class); |
| | | pro.getLayers().forEach(layerPro -> { |
| | | layerPro.getSources().forEach(sourcePro -> { |
| | | long fileId = Long.parseLong(sourcePro.getId()); |
| | | LedSFile file = xiXunFileService.getById(fileId); |
| | | if (file != null) { |
| | | String fileUrl = file.getFileUrl(); |
| | | String[] split = fileUrl.split("/"); |
| | | sourcePro.setId(split[split.length - 1]); |
| | | sourcePro.setMd5(file.getMd5()); |
| | | } |
| | | }); |
| | | }); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | throw new BusinessException("节目数据异常!"); |
| | | } |
| | | items.set_program(pro); |
| | | items.setRepeatTimes(1); |
| | | items.setSchedulePros(null);//定时段,不做定时可为null |
| | | //定时段,不做定时可为null |
| | | items.setSchedulePros(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回调地址,需要修改IP地址 |
| | | //这里是下方的post回调地址,需要修改IP地址 |
| | | command.setNotificationURL(""); |
| | | //资源下载链接的请求头 |
| | | //资源下载链接的请求头,阿里云图片下载地址头 |
| | | command.setPreDownloadURL("https://ximonsmart.oss-cn-shanghai.aliyuncs.com/"); |
| | | command.setTask(taskPro); |
| | | |
| | | xixun.set_id(UUID.randomUUID().toString()); |
| | | xixun.setCommand(command); |
| | | xixun.setType("commandXixunPlayer"); //命令固定类型,不可更改 |
| | | //命令固定类型,不可更改 |
| | | xixun.setType("commandXixunPlayer"); |
| | | |
| | | |
| | | Gson gson = new GsonBuilder().disableHtmlEscaping().create(); |
| | | // String jsondata = JSON.toJSONString(xixun); |
| | | String jsondata = gson.toJson(xixun); |
| | | System.out.println("推送内容" + JSONUtil.toJsonStr(jsondata)); |
| | | |
| | | |
| | | Collection<PoleLightemitEntity> poleLightemitEntities = poleLightemitService.listByIds(lightemitIds); |
| | | |
| | | if (poleLightemitEntities != null) { |
| | | Map map; |
| | | 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); |
| | | map = new LinkedHashMap(); |
| | | String clearResult = lightemitUtils.clear(entity.getLightemitControlCode()); |
| | | if (clearResult.contains("does not exist")) { |
| | | map.put("LightemitId", entity.getLightemitId()); |
| | | map.put("Result", "失败"); |
| | | mapList.add(map); |
| | | } else { |
| | | poleLightemitService.updateRequestBody(entity.getLightemitControlCode(), jsondata); |
| | | String post = lightemitUtils.post(realtimeServerBean.getCommand() + entity.getLightemitControlCode(), jsondata); |
| | | //{"_type":"success","_id":"ce8dc3ff-dc88-43b7-8f55-60abd8700f1a","timestamp":1653555160535} |
| | | if (post.startsWith("{") && post.endsWith("}") && post.contains("_type\":\"success")) { |
| | | map.put("LightemitId", entity.getLightemitId()); |
| | | map.put("Result", "成功"); |
| | | mapList.add(map); |
| | | } else { |
| | | map.put("LightemitId", entity.getLightemitId()); |
| | | map.put("Result", "失败"); |
| | | mapList.add(map); |
| | | } |
| | | LogUtils.error("结果:" + post); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | /** |
| | | * 熙汛节目推送日志记录结束 |
| | | */ |
| | | |
| | | return mapList; |
| | | } |
| | | |
| | | |
| | |
| | | Integer screenHeight = Integer.parseInt(lightemitUtils.getScreenHeight(lightemitControlCode)); |
| | | String size = String.valueOf(screenHeight / 18); |
| | | //字幕主体拼接 |
| | | //TODO |
| | | String body = |
| | | "<head><style type=\"text/css\">body{background-color:#000;}</style></head>" + |
| | | "<p style=\"font-size:" + size + "px;line-height:17px;color:#fff\">" + |