package com.sandu.ximon.admin.controller; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.sandu.common.domain.CommonPage; import com.sandu.common.domain.ResponseVO; import com.sandu.common.execption.BusinessException; import com.sandu.common.object.BaseConditionVO; import com.sandu.common.util.ResponseUtil; import com.sandu.common.util.SpringContextHolder; import com.sandu.ximon.admin.entity.ProgramPro; import com.sandu.ximon.admin.param.LEDScheduleParam_xixun; import com.sandu.ximon.admin.param.SetBrightnessParam; import com.sandu.ximon.admin.param.SetScreenOpenParam; import com.sandu.ximon.admin.param.SetVolumeParam; import com.sandu.ximon.admin.security.PermissionConfig; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.admin.service.*; import com.sandu.ximon.admin.utils.LightemitUtils; import com.sandu.ximon.admin.utils.ListPagingUtils; import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils; import com.sandu.ximon.admin.vo.LedScheduleVO; import com.sandu.ximon.dao.domain.PoleLightemitEntity; import com.sandu.ximon.dao.domain.PoleXixunPlayerEntity; import com.sandu.ximon.dao.enums.MenuEnum; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.*; /** * @Author liuhaonan * @Date 2022/2/22 13:55 * @Version 1.0 */ @RestController @AllArgsConstructor @RequestMapping("/v1/xixun") public class XiXunController { private final XiXunPlayerService xiXunPlayerService; private final ClientService clientService; private final PoleLightemitService poleLightemitService; private final LightemitUtils lightemitUtils; private final LedScheduleService scheduleService; private PermissionConfig permissionConfig; // private final ListPageUtil listPageUtil; /** * 新增节目 * * @param programPro * @return */ @PostMapping("/addProgram") public ResponseVO addProgram(@RequestBody ProgramPro programPro) { if (!permissionConfig.check(MenuEnum.XIXUN_PROGRAM_ADD.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } return ResponseUtil.success(xiXunPlayerService.insert(programPro)); } /** * 修改 */ @PostMapping("/updateProgram") public ResponseVO update(@RequestBody ProgramPro programPro) { if (!permissionConfig.check(MenuEnum.XIXUN_PROGRAM_UPDATE.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } PoleXixunPlayerEntity byId = xiXunPlayerService.getById(programPro.getProgramId()); if (byId == null) { throw new BusinessException("未选择LED屏"); } boolean update = xiXunPlayerService.update(programPro); if (update) { return ResponseUtil.success("编辑成功!"); } else { return ResponseUtil.fail("编辑失败!"); } } /** * 删除节目 * * @param pid * @return */ @PostMapping("/deleteProgram/{pid}") public ResponseVO deleteProgram(@PathVariable Long pid) { if (!permissionConfig.check(MenuEnum.XIXUN_PROGRAM_DELETE.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } return ResponseUtil.success(xiXunPlayerService.deleteProgram(pid)); } /** * 获取节目详情 * * @param pid * @return */ @GetMapping("/getByPid/{pid}") public ResponseVO getByPid(@PathVariable Long pid) { if (!permissionConfig.check(MenuEnum.XIXUN_PROGRAM_DETAIL.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } return ResponseUtil.success(xiXunPlayerService.getByPid(pid)); } /** * 节目列表 * * @param baseConditionVO * @param keyword * @return */ @GetMapping("/list") public ResponseVO list(BaseConditionVO baseConditionVO, @RequestParam(value = "order", required = false) Integer order, @RequestParam(value = "seq", required = false) Integer seq, @RequestParam(value = "keyword", required = false) String keyword) { if (!permissionConfig.check(MenuEnum.LED_PROGRAM_LIST.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } List list = xiXunPlayerService.listProgram(baseConditionVO, order, seq, keyword); return ResponseUtil.success(list); } /** * 节目推送 * * @param pid * @param lightemitIds * @return */ @PostMapping("/pushToXixun/{pid}") public ResponseVO pushByPid(@PathVariable Long pid, @RequestBody List lightemitIds) { if (!permissionConfig.check(MenuEnum.XIXUN_PROGRAM_PUSH.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } return ResponseUtil.success(xiXunPlayerService.videoXixunPlayer(pid, lightemitIds)); } //执行中的节目 @GetMapping("/getProgram/{lightemitId}") public ResponseVO getProgram(@PathVariable Long lightemitId) { if (!permissionConfig.check(MenuEnum.XIXUN_PROGRAM_PLAYING.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } return ResponseUtil.success(xiXunPlayerService.getByPid(lightemitId)); } /** * LED屏幕新增 * * @param poleLightemit * @return */ @PostMapping("/saveLed") public ResponseVO save(@RequestBody PoleLightemitEntity poleLightemit) { if (!permissionConfig.check(MenuEnum.XIXUN_LED_ADD.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } int count = poleLightemitService.count(new QueryWrapper().eq("lightemit_control_code", poleLightemit.getLightemitControlCode())); if (count != 0) { throw new BusinessException("LED控制卡编号不能重复"); } if (SecurityUtils.getClientId() == null) { poleLightemit.setClientId(clientService.getClientId()); poleLightemit.setUserId(SecurityUtils.getUserId()); poleLightemit.setCreateUserId(SecurityUtils.getUserId()); } poleLightemitService.savePoleLightemit(poleLightemit); return ResponseUtil.success("新增成功"); } /** * LED屏幕修改 * * @param ledId * @param poleLightemit * @return */ @PostMapping("/updateLed/{ledId}") public ResponseVO updatePoleLightemit(@PathVariable Long ledId, @RequestBody PoleLightemitEntity poleLightemit) { if (!permissionConfig.check(MenuEnum.XIXUN_LED_UPDATE.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } poleLightemitService.updatePoleLightemit(ledId, poleLightemit); return ResponseUtil.success("修改成功"); } /** * LED屏幕删除 * * @param ledIds * @return */ @PostMapping("/deleteLed") public ResponseVO deleteLed(@RequestBody List ledIds) { if (!permissionConfig.check(MenuEnum.XIXUN_LED_DELETE.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } boolean b = poleLightemitService.deletePoleLightemit(ledIds); if (b) { return ResponseUtil.success("删除成功"); } else { return ResponseUtil.success("删除失败"); } } /** * LED屏幕列表 * * @param baseConditionVO * @param keyword * @return */ @GetMapping("/listLed") public ResponseVO listLed(BaseConditionVO baseConditionVO, @RequestParam(value = "order", required = false) Integer order, @RequestParam(value = "seq", required = false) Integer seq, @RequestParam(value = "keyword", required = false) String keyword, @RequestParam(value = "isOnLine", required = false) boolean isOnLine) { if (!permissionConfig.check(MenuEnum.LED_LIST.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } List poleLightemitEntityList = poleLightemitService.listLed(keyword, order, seq, isOnLine); CommonPage commonPage = ListPagingUtils.pages(poleLightemitEntityList, baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); return ResponseUtil.success(commonPage); } /** * @param * @return */ @GetMapping("/getbycode") public ResponseVO getLedByLightControlCode(String lightemitControlCode) { return ResponseUtil.success(poleLightemitService.getLedByLightControlCode(lightemitControlCode)); } /** * 设置屏幕开关 */ @PostMapping("/setScreenOpen") public ResponseVO setScreenOpen(@RequestBody SetScreenOpenParam setScreenOpenEntity) { if (!permissionConfig.check(MenuEnum.XIXUN_ON_OFF.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } if (setScreenOpenEntity.getIds() == null || setScreenOpenEntity.getIds().length == 0 || setScreenOpenEntity.getBool() == null) { throw new BusinessException("未选择LED屏"); } Collection poleLightemitControllers = poleLightemitService.listByIds(Arrays.asList(setScreenOpenEntity.getIds())); if (!poleLightemitControllers.isEmpty()) { Map map = new HashMap<>(); Iterator iterator = poleLightemitControllers.iterator(); while (iterator.hasNext()) { PoleLightemitEntity poleLightemitEntity = (PoleLightemitEntity) iterator.next(); //结果查询 String result = lightemitUtils.setScreenOpen(poleLightemitEntity.getLightemitControlCode(), setScreenOpenEntity.getBool()); System.out.println("result:---------------------" + result); if (result.isEmpty() || !"true".equals(result)) { } map.put(poleLightemitEntity.getLightemitId(), result); } return ResponseUtil.success(map); } else { throw new BusinessException("未正确选择LED屏"); } } /* 获取led实时画面 */ @GetMapping("/getPicture/{id}") public ResponseVO getPicture(@PathVariable Long id) { if (!permissionConfig.check(MenuEnum.XIXUN_SCREENSHOT.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } if (id == null) { throw new BusinessException("未选择LED屏"); } PoleLightemitEntity poleLightemitEntity = poleLightemitService.getById(id); if (poleLightemitEntity != null) { String result = lightemitUtils.getPicture(poleLightemitEntity.getLightemitControlCode()); return ResponseUtil.success(result); } else { throw new BusinessException("未选择LED屏"); } } /* 获取音量 */ @PostMapping("/getVolume/{id}") public ResponseVO getVolume(@PathVariable Long id) { if (!permissionConfig.check(MenuEnum.XIXUN_VOL_CHANGE.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } if (id == null) { throw new BusinessException("未选择LED屏"); } PoleLightemitEntity poleLightemitEntity = poleLightemitService.getById(id); if (poleLightemitEntity != null) { String result = lightemitUtils.getVoiume(poleLightemitEntity.getLightemitControlCode()); return ResponseUtil.success(result); } else { throw new BusinessException("未选择LED屏"); } } /* 设置亮度 */ @PostMapping("/setBrightness") public ResponseVO setBrightness(@RequestBody SetBrightnessParam setBrightnessParam) { if (!permissionConfig.check(MenuEnum.XIXUN_BRIGHTNESS_CHANGE.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } if (setBrightnessParam == null || setBrightnessParam.getIds() == null || setBrightnessParam.getBrightness() > 255) { throw new BusinessException("参数错误为空或亮度不能超过255"); } Collection poleLightemitControllers = poleLightemitService.listByIds(Arrays.asList(setBrightnessParam.getIds())); if (!poleLightemitControllers.isEmpty()) { Iterator iterator = poleLightemitControllers.iterator(); while (iterator.hasNext()) { PoleLightemitEntity poleLightemitEntity = (PoleLightemitEntity) iterator.next(); poleLightemitService.setBrightness(poleLightemitEntity.getLightemitControlCode(), setBrightnessParam.getBrightness()); } return ResponseUtil.success("设置亮度成功"); } else { throw new BusinessException("未选择LED屏"); } } /* 设置音量 */ @PostMapping("/setVolume") public ResponseVO setVolume(@RequestBody SetVolumeParam setVolumeEntity) { if (!permissionConfig.check(MenuEnum.XIXUN_VOL_CHANGE.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } if (setVolumeEntity == null || setVolumeEntity.getIds() == null || setVolumeEntity.getVolume() > 15) { throw new BusinessException("音量范围为0---15"); } Collection poleLightemitControllers = poleLightemitService.listByIds(Arrays.asList(setVolumeEntity.getIds())); if (!poleLightemitControllers.isEmpty()) { Iterator iterator = poleLightemitControllers.iterator(); while (iterator.hasNext()) { PoleLightemitEntity poleLightemitEntity = (PoleLightemitEntity) iterator.next(); poleLightemitService.setVolume(poleLightemitEntity.getLightemitControlCode(), setVolumeEntity.getVolume()); } return ResponseUtil.success("设置音量成功"); } else { throw new BusinessException("未选择LED屏"); } } @PostMapping("/addSchedule") public ResponseVO addSchedule(@RequestBody LEDScheduleParam_xixun ledEntity) { if (!permissionConfig.check(MenuEnum.XIXUN_PLAN_ADD.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } return ResponseUtil.success(scheduleService.insert(ledEntity)); } @PostMapping("/updateSchedule") public ResponseVO updateSchedule(@RequestBody LEDScheduleParam_xixun ledEntity) { if (!permissionConfig.check(MenuEnum.XIXUN_PLAN_UPDATE.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } return ResponseUtil.success(scheduleService.updateSchedule(ledEntity)); } @PostMapping("/deleteSchedule") public ResponseVO deleteSchedule(@RequestBody List ids) { if (!permissionConfig.check(MenuEnum.XIXUN_PLAN_DELETE.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } /** * 熙汛定时删除 日志记录开始 */ String content = "{删除的熙汛定时id:" + ids + " }"; StoreOperationRecordsUtils.storeOperationData(null, null, "熙汛定时任务删除", content); /** * 熙汛定时删除 日志记录结束 */ return ResponseUtil.success(scheduleService.removeByIds(ids)); } @GetMapping("/getSchedule/{id}") public ResponseVO getSchedule(@PathVariable Integer id) { if (!permissionConfig.check(MenuEnum.XIXUN_PLAN_DETAIL.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } return ResponseUtil.success(scheduleService.getSchedule(id)); } @GetMapping("/listSchedule") public ResponseVO listSchedule(BaseConditionVO baseConditionVO, @RequestParam(value = "order", required = false) Integer order, @RequestParam(value = "seq", required = false) Integer seq, @RequestParam(value = "keyword", required = false) String keyword) { if (!permissionConfig.check(MenuEnum.PLAYPLAN_LIST.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); return ResponseUtil.success(scheduleService.listSchedule(baseConditionVO, order, seq, keyword)); } /** * 设置定时 * * @param id * @param lightemitIds * @return */ @PostMapping("/pushSchedule/{id}") public ResponseVO pushSchedule(@PathVariable Integer id, @RequestBody Long[] lightemitIds) { if (!permissionConfig.check(MenuEnum.XIXUN_PLAN_PUSH_SCHEDULE.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } scheduleService.ledschedulepush(id, lightemitIds); return ResponseUtil.success("设置成功"); } /** * 获取执行中的定时 * * @param * @return */ @PostMapping("/getPushSchedule") public ResponseVO getPushSchedule(@RequestBody List ids) { if (!permissionConfig.check(MenuEnum.XIXUN_PLAN_SCHEDULE.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } if (ids.isEmpty()) { throw new BusinessException("未选择LED屏"); } List list = new ArrayList<>(); for (Long id : ids) { LedScheduleVO ledScheduleVO = scheduleService.getledschedules(id); list.add(ledScheduleVO); } return ResponseUtil.success(list); } /** * 关闭天气推送 */ @GetMapping("/closeWeatherPush/{id}") public ResponseVO closeWeatherPush(@PathVariable Long id) { if (!permissionConfig.check(MenuEnum.XIXUN_CLOSE_AIR.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } if (id == null) { throw new BusinessException("未选择LED屏"); } SpringContextHolder.getBean(PoleService.class).closeXiXunAirPush(id); return ResponseUtil.success("关闭成功"); } /** * 清屏操作 */ @PostMapping("/clearScreen") public ResponseVO clearScreen(@RequestBody List ids) { if (!permissionConfig.check(MenuEnum.XIXUN_CLEAN.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } List list = poleLightemitService.listByIds(ids); if (ids.isEmpty() && list.isEmpty()) { throw new BusinessException("未选择LED屏"); } for (PoleLightemitEntity playerId : list) { String clear = lightemitUtils.clear(playerId.getLightemitControlCode()); lightemitUtils.clearPlayerTask(playerId.getLightemitControlCode()); } /** * 熙汛清屏 日志记录开始 */ //获取listCode List listCode = new ArrayList<>(); List msg = new ArrayList<>(); for (PoleLightemitEntity poleLightemitEntity : list) { listCode.add(poleLightemitEntity.getLightemitControlCode()); msg.add("[屏幕名称" + poleLightemitEntity.getLightemitName() + "设备编码" + poleLightemitEntity.getLightemitControlCode() + "],"); } String content = JSON.toJSONString(msg); StoreOperationRecordsUtils.storeOperationData(listCode, null, "熙汛清屏", content); /** * 熙汛清屏 日志记录结束 */ return ResponseUtil.success("清屏成功"); } }