| | |
| | | package com.sandu.ximon.admin.service; |
| | | |
| | | import cn.hutool.core.collection.CollectionUtil; |
| | | import cn.hutool.core.date.DatePattern; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import com.alibaba.fastjson.JSON; |
| | |
| | | import com.sandu.ximon.dao.domain.*; |
| | | import com.sandu.ximon.dao.mapper.PlayPlanNvMapper; |
| | | import lombok.AllArgsConstructor; |
| | | import org.aspectj.weaver.ast.Var; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 播放计划 |
| | |
| | | nova.forEach(n -> { |
| | | playerIds.add(n.getPlayerId()); |
| | | }); |
| | | |
| | | PlayerProgram program = new PlayerProgram(); |
| | | program.setPlayerIds(playerIds); |
| | | |
| | | //获取节目实体 |
| | | |
| | | |
| | | List<PlayerPage> programDtos = JSON.parseArray(pushToLed.getPages(), PlayerPage.class); |
| | | programDtos.forEach( |
| | | programDto -> { |
| | | programDto.getWidgets().forEach( |
| | | widget -> { |
| | | if (!PlayerWidgetType.WEATHER.equals(widget.getType())) { |
| | | String url = widget.getUrl(); |
| | | LEDProgramFile one = fileService.getOne(Wrappers.lambdaQuery(LEDProgramFile.class).eq(LEDProgramFile::getFileUrl, url)); |
| | | if (one == null) { |
| | | throw new BusinessException("节目文件已失效"); |
| | | } |
| | | widget.setMd5(one.getMd5()); |
| | | widget.setSize(Long.parseLong(one.getSize())); |
| | | } |
| | | } |
| | | ); |
| | | } |
| | | ); |
| | | |
| | | program.setPages(programDtos); |
| | | |
| | | //获取节目定时实体 |
| | | PlayerSchedule playerSchedule = JSON.parseObject(pushToLed.getSchedule(), PlayerSchedule.class); |
| | | //删除时间的后三位 |
| | | List<PlayerSchedulePlans> plans = playerSchedule.getPlans(); |
| | | plans.forEach( |
| | | plan -> { |
| | | plan.setStartTime(plan.getStartTime().substring(0, plan.getStartTime().length() - 3)); |
| | | plan.setEndTime(plan.getEndTime().substring(0, plan.getEndTime().length() - 3)); |
| | | } |
| | | ); |
| | | program.setSchedule(playerSchedule); |
| | | |
| | | |
| | | |
| | | program.setNoticeUrl(VnnoxConstant.NOTIFY_URL); |
| | | LogUtils.error("节目内容+++++++++++" + JSON.toJSONString(program)); |
| | | VnnoxResultResponse vnnoxResultResponse = vnnoxProgramAPIUtil.normalProgram(program); |
| | | vnnoxAPIUtil.volChange(playerIds, Integer.valueOf(pushToLed.getVolume()).intValue()); |
| | | |
| | | List<String> success = new ArrayList<>(); |
| | | List<String> fail = new ArrayList<>(); |
| | | if (vnnoxResultResponse.getData() != null) { |
| | | success = vnnoxResultResponse.getData().getSuccess(); |
| | | fail = vnnoxResultResponse.getData().getFail(); |
| | | } |
| | | |
| | | //拼接成功失败的结果 |
| | | Map<String, Object> result = new HashMap<>(); |
| | | List<NovaPushResultVO> successList = new ArrayList<>(); |
| | | List<NovaPushResultVO> faileList = new ArrayList<>(); |
| | | List<String> finalSuccess = success; |
| | | List<String> finalFail = fail; |
| | | nova.forEach(n -> { |
| | | if (finalSuccess.contains(n.getPlayerId())) { |
| | | successList.add(n); |
| | | } else if (finalFail.contains(n.getPlayerId())) { |
| | | faileList.add(n); |
| | | |
| | | |
| | | List<List<String>> split = CollectionUtil.split(playerIds, 100); |
| | | for (List<String> playIds : split) { |
| | | PlayerProgram program = new PlayerProgram(); |
| | | program.setPlayerIds(playIds); |
| | | |
| | | //获取节目实体 |
| | | |
| | | List<PlayerPage> programDtos = JSON.parseArray(pushToLed.getPages(), PlayerPage.class); |
| | | programDtos.forEach( |
| | | programDto -> { |
| | | programDto.getWidgets().forEach( |
| | | widget -> { |
| | | if (PlayerWidgetType.PICTURE.equals(widget.getType()) || PlayerWidgetType.VIDEO.equals(widget.getType())) { |
| | | String url = widget.getUrl(); |
| | | LEDProgramFile one = fileService.getOne(Wrappers.lambdaQuery(LEDProgramFile.class).eq(LEDProgramFile::getFileUrl, url)); |
| | | if (one == null) { |
| | | throw new BusinessException("节目文件已失效"); |
| | | } |
| | | widget.setMd5(one.getMd5()); |
| | | widget.setSize(Long.parseLong(one.getSize())); |
| | | } |
| | | } |
| | | ); |
| | | } |
| | | ); |
| | | |
| | | program.setPages(programDtos); |
| | | |
| | | //获取节目定时实体 |
| | | PlayerSchedule playerSchedule = JSON.parseObject(pushToLed.getSchedule(), PlayerSchedule.class); |
| | | //删除时间的后三位 |
| | | List<PlayerSchedulePlans> plans = playerSchedule.getPlans(); |
| | | plans.forEach( |
| | | plan -> { |
| | | plan.setStartTime(plan.getStartTime().substring(0, plan.getStartTime().length() - 3)); |
| | | plan.setEndTime(plan.getEndTime().substring(0, plan.getEndTime().length() - 3)); |
| | | } |
| | | ); |
| | | program.setSchedule(playerSchedule); |
| | | |
| | | |
| | | program.setNoticeUrl(VnnoxConstant.NOTIFY_URL); |
| | | LogUtils.error("节目内容+++++++++++" + JSON.toJSONString(program)); |
| | | VnnoxResultResponse vnnoxResultResponse = vnnoxProgramAPIUtil.normalProgram(program); |
| | | vnnoxAPIUtil.volChange(playerIds, Integer.valueOf(pushToLed.getVolume()).intValue()); |
| | | |
| | | |
| | | if (vnnoxResultResponse.getData() != null) { |
| | | success = vnnoxResultResponse.getData().getSuccess(); |
| | | fail = vnnoxResultResponse.getData().getFail(); |
| | | } |
| | | }); |
| | | |
| | | List<String> finalSuccess = success; |
| | | List<String> finalFail = fail; |
| | | nova.forEach(n -> { |
| | | if (finalSuccess.contains(n.getPlayerId())) { |
| | | successList.add(n); |
| | | } else if (finalFail.contains(n.getPlayerId())) { |
| | | faileList.add(n); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | result.put("success", successList); |
| | | result.put("fail", faileList); |
| | |
| | | throw new BusinessException("未找到节目"); |
| | | } |
| | | List<SchedulesDTO> schedulesDTOS = JSON.parseArray(one.getSchedules(), SchedulesDTO.class); |
| | | ProgramSchedule programSchedule = new ProgramSchedule(); |
| | | programSchedule.setSchedules(schedulesDTOS); |
| | | List<String> playerIds = new ArrayList<>(); |
| | | nova.forEach( |
| | | n -> { |
| | | playerIds.add(n.getPlayerId()); |
| | | } |
| | | ); |
| | | //设置 |
| | | programSchedule.setPlayerIds(playerIds); |
| | | VnnoxResultResponse vnnoxResultResponse = vnnoxProgramAPIUtil.timeProgram(programSchedule); |
| | | |
| | | List<String> success = new ArrayList<>(); |
| | | List<String> fail = new ArrayList<>(); |
| | | if (vnnoxResultResponse.getData() != null) { |
| | | success = vnnoxResultResponse.getData().getSuccess(); |
| | | fail = vnnoxResultResponse.getData().getFail(); |
| | | } |
| | | |
| | | //拼接成功失败的结果 |
| | | Map<String, Object> result = new HashMap<>(); |
| | | List<NovaPushResultVO> successList = new ArrayList<>(); |
| | | List<NovaPushResultVO> faileList = new ArrayList<>(); |
| | | List<String> finalSuccess = success; |
| | | List<String> finalFail = fail; |
| | | nova.forEach( |
| | | n -> { |
| | | if (finalSuccess.contains(n.getPlayerId())) { |
| | | successList.add(n); |
| | | } else if (finalFail.contains(n.getPlayerId())) { |
| | | faileList.add(n); |
| | | } |
| | | } |
| | | |
| | | ); |
| | | List<List<String>> split = CollectionUtil.split(nova.stream().map(NovaPushResultVO::getPlayerId).collect(Collectors.toList()), 100); |
| | | for (List<String> playerIds : split) { |
| | | //设置 |
| | | ProgramSchedule programSchedule = new ProgramSchedule(); |
| | | programSchedule.setSchedules(schedulesDTOS); |
| | | programSchedule.setPlayerIds(playerIds); |
| | | VnnoxResultResponse vnnoxResultResponse = vnnoxProgramAPIUtil.timeProgram(programSchedule); |
| | | |
| | | |
| | | if (vnnoxResultResponse.getData() != null) { |
| | | success = vnnoxResultResponse.getData().getSuccess(); |
| | | fail = vnnoxResultResponse.getData().getFail(); |
| | | } |
| | | List<String> finalSuccess = success; |
| | | List<String> finalFail = fail; |
| | | |
| | | nova.forEach( |
| | | n -> { |
| | | if (finalSuccess.contains(n.getPlayerId())) { |
| | | successList.add(n); |
| | | } else if (finalFail.contains(n.getPlayerId())) { |
| | | faileList.add(n); |
| | | } |
| | | } |
| | | |
| | | ); |
| | | } |
| | | |
| | | result.put("success", successList); |
| | | result.put("fail", faileList); |
| | |
| | | if (ledProgram.getPages() == null) { |
| | | throw new BusinessException("节目内容丢失"); |
| | | } |
| | | if (SecurityUtils.getClientId() != null && !Objects.equals(ledProgram.getClientId(), SecurityUtils.getUserId()) && !Objects.equals(ledProgram.getClientId(), SecurityUtils.getClientId())) { |
| | | if (SecurityUtils.getClientId() != null |
| | | && !Objects.equals(ledProgram.getClientId(), SecurityUtils.getUserId()) |
| | | && !Objects.equals(ledProgram.getUserId(), SecurityUtils.getUserId())) { |
| | | throw new BusinessException("请不要操作其他人的节目"); |
| | | } |
| | | String pages = ledProgram.getPages(); |
| | | List<String> playerIds = new ArrayList<>(); |
| | | nova.forEach(n -> { |
| | | playerIds.add(n.getPlayerId()); |
| | | }); |
| | | |
| | | PlayerProgram program = new PlayerProgram(); |
| | | List<PlayerPage> programDtos = JSON.parseArray(pages, PlayerPage.class); |
| | | programDtos.forEach( |
| | | programDto -> { |
| | | programDto.getWidgets().forEach( |
| | | widget -> { |
| | | if (!PlayerWidgetType.WEATHER.equals(widget.getType())) { |
| | | String url = widget.getUrl(); |
| | | LEDProgramFile one = fileService.getOne(Wrappers.lambdaQuery(LEDProgramFile.class).eq(LEDProgramFile::getFileUrl, url)); |
| | | if (one == null) { |
| | | throw new BusinessException("节目文件已失效"); |
| | | } |
| | | widget.setMd5(one.getMd5()); |
| | | widget.setSize(Long.parseLong(one.getSize())); |
| | | }else { |
| | | //WratherPage |
| | | System.out.println(widget+"widget"); |
| | | } |
| | | } |
| | | ); |
| | | } |
| | | ); |
| | | program.setPlayerIds(playerIds); |
| | | //获取节目实体 |
| | | program.setPages(programDtos); |
| | | |
| | | program.setNoticeUrl(VnnoxConstant.NOTIFY_URL); |
| | | VnnoxResultResponse vnnoxResultResponse = vnnoxProgramAPIUtil.pushProgram(program); |
| | | |
| | | if (vnnoxResultResponse == null || vnnoxResultResponse.getData() == null) { |
| | | throw new BusinessException("推送失败"); |
| | | } |
| | | |
| | | List<String> success = new ArrayList<>(); |
| | | List<String> fail = new ArrayList<>(); |
| | | if (vnnoxResultResponse.getData() != null) { |
| | | success = vnnoxResultResponse.getData().getSuccess(); |
| | | fail = vnnoxResultResponse.getData().getFail(); |
| | | } |
| | | |
| | | //拼接成功失败的结果 |
| | | Map<String, Object> result = new HashMap<>(); |
| | | List<NovaPushResultVO> successList = new ArrayList<>(); |
| | | List<NovaPushResultVO> faileList = new ArrayList<>(); |
| | | List<String> finalSuccess = success; |
| | | List<String> finalFail = fail; |
| | | nova.forEach(n -> { |
| | | if (finalSuccess.contains(n.getPlayerId())) { |
| | | successList.add(n); |
| | | } else if (finalFail.contains(n.getPlayerId())) { |
| | | faileList.add(n); |
| | | } |
| | | }); |
| | | |
| | | result.put("success", successList); |
| | | result.put("fail", faileList); |
| | | |
| | | /** |
| | | * 诺瓦推送节目日志记录开始 |
| | | */ |
| | | List<LedPlayerEntity> list = SpringContextHolder.getBean(LedPlayerEntityService.class) |
| | | .list(Wrappers.lambdaQuery(LedPlayerEntity.class).in(LedPlayerEntity::getId, nova.stream().map(NovaPushResultVO::getPlayerId).toArray())); |
| | | List<String> listCode = new ArrayList<>(); |
| | | for (LedPlayerEntity temp : list) { |
| | | listCode.add(temp.getSn()); |
| | | } |
| | | |
| | | String content = "{节目ID:" + pid |
| | | + ", 节目名称:" + ledProgram.getName() |
| | | + "}," + " 推送结果:" + result |
| | | + " }"; |
| | | StoreOperationRecordsUtils.storeOperationData(listCode, null, "诺瓦推送节目", content); |
| | | /** |
| | | * 诺瓦推送节目日志记录结束 |
| | | */ |
| | | |
| | | return result; |
| | | return null; |
| | | // String pages = ledProgram.getPages(); |
| | | // |
| | | // |
| | | // List<String> success = new ArrayList<>(); |
| | | // List<String> fail = new ArrayList<>(); |
| | | // //拼接成功失败的结果 |
| | | // Map<String, Object> result = new HashMap<>(); |
| | | // List<NovaPushResultVO> successList = new ArrayList<>(); |
| | | // List<NovaPushResultVO> faileList = new ArrayList<>(); |
| | | // |
| | | // |
| | | // List<List<String>> split = CollectionUtil.split(nova.stream().map(NovaPushResultVO::getPlayerId).collect(Collectors.toList()), 100); |
| | | // |
| | | // for (List<String> playerIds : split) { |
| | | // PlayerProgram program = new PlayerProgram(); |
| | | // List<PlayerPage> programDtos = JSON.parseArray(pages, PlayerPage.class); |
| | | // programDtos.forEach( |
| | | // programDto -> { |
| | | // programDto.getWidgets().forEach( |
| | | // widget -> { |
| | | // if (PlayerWidgetType.PICTURE.equals(widget.getType()) || PlayerWidgetType.VIDEO.equals(widget.getType())) { |
| | | // String url = widget.getUrl(); |
| | | // LEDProgramFile one = fileService.getOne(Wrappers.lambdaQuery(LEDProgramFile.class).eq(LEDProgramFile::getFileUrl, url)); |
| | | // if (one == null) { |
| | | // throw new BusinessException("节目文件已失效"); |
| | | // } |
| | | // widget.setMd5(one.getMd5()); |
| | | // widget.setSize(Long.parseLong(one.getSize())); |
| | | // } |
| | | // } |
| | | // ); |
| | | // } |
| | | // ); |
| | | // program.setPlayerIds(playerIds); |
| | | // //获取节目实体 |
| | | // program.setPages(programDtos); |
| | | // |
| | | // program.setNoticeUrl(VnnoxConstant.NOTIFY_URL); |
| | | // VnnoxResultResponse vnnoxResultResponse = vnnoxProgramAPIUtil.pushProgram(program); |
| | | // |
| | | // if (vnnoxResultResponse == null || vnnoxResultResponse.getData() == null) { |
| | | // throw new BusinessException("推送失败"); |
| | | // } |
| | | // |
| | | // |
| | | // if (vnnoxResultResponse.getData() != null) { |
| | | // success = vnnoxResultResponse.getData().getSuccess(); |
| | | // fail = vnnoxResultResponse.getData().getFail(); |
| | | // } |
| | | // |
| | | // List<String> finalSuccess = success; |
| | | // List<String> finalFail = fail; |
| | | // nova.forEach(n -> { |
| | | // if (finalSuccess.contains(n.getPlayerId())) { |
| | | // successList.add(n); |
| | | // } else if (finalFail.contains(n.getPlayerId())) { |
| | | // faileList.add(n); |
| | | // } |
| | | // }); |
| | | // } |
| | | // |
| | | // result.put("success", successList); |
| | | // result.put("fail", faileList); |
| | | // |
| | | // /** |
| | | // * 诺瓦推送节目日志记录开始 |
| | | // */ |
| | | // List<LedPlayerEntity> list = SpringContextHolder.getBean(LedPlayerEntityService.class) |
| | | // .list(Wrappers.lambdaQuery(LedPlayerEntity.class).in(LedPlayerEntity::getId, nova.stream().map(NovaPushResultVO::getPlayerId).toArray())); |
| | | // List<String> listCode = new ArrayList<>(); |
| | | // for (LedPlayerEntity temp : list) { |
| | | // listCode.add(temp.getSn()); |
| | | // } |
| | | // |
| | | // String content = "{节目ID:" + pid |
| | | // + ", 节目名称:" + ledProgram.getName() |
| | | // + "}," + " 推送结果:" + result |
| | | // + " }"; |
| | | // StoreOperationRecordsUtils.storeOperationData(listCode, null, "诺瓦推送节目", content); |
| | | // /** |
| | | // * 诺瓦推送节目日志记录结束 |
| | | // */ |
| | | // |
| | | // return result; |
| | | } |
| | | |
| | | |