package com.sandu.ximon.admin.controller;
|
|
import cn.hutool.core.util.StrUtil;
|
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.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.ximon.admin.entity.ProgramPro;
|
import com.sandu.ximon.admin.param.LEDScheduleParam_xixun;
|
import com.sandu.ximon.admin.param.SetScreenOpenParam;
|
import com.sandu.ximon.admin.param.SetVolumeParam;
|
import com.sandu.ximon.admin.security.SecurityUtils;
|
import com.sandu.ximon.admin.service.*;
|
import com.sandu.ximon.admin.utils.LightemitUtils;
|
import com.sandu.ximon.dao.domain.Pole;
|
import com.sandu.ximon.dao.domain.PoleBinding;
|
import com.sandu.ximon.dao.domain.PoleLightemitEntity;
|
import com.sandu.ximon.dao.domain.PoleXixunPlayerEntity;
|
import com.sandu.ximon.dao.enums.AdministratorEnums;
|
import lombok.AllArgsConstructor;
|
import org.springframework.validation.annotation.Validated;
|
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 final PoleBindingService bindingService;
|
private final PoleService poleService;
|
// private final ListPageUtil listPageUtil;
|
|
/**
|
* 新增节目
|
*
|
* @param programPro
|
* @return
|
*/
|
@PostMapping("/addProgram")
|
public ResponseVO<Object> addProgram(@RequestBody ProgramPro programPro) {
|
return ResponseUtil.success(xiXunPlayerService.insert(programPro));
|
}
|
|
/**
|
* 修改
|
*/
|
@PostMapping("/updateProgram")
|
// @RequiresPermissions("pole:polexixunplayer:update")
|
public ResponseVO<Object> update(@RequestBody ProgramPro programPro) {
|
PoleXixunPlayerEntity byId = xiXunPlayerService.getById(programPro.getProgramId());
|
if (byId == null) {
|
throw new BusinessException("未选择LED屏");
|
}
|
// QueryWrapper<PoleXixunPlayerEntity> queryWrapper = new QueryWrapper<>();
|
// queryWrapper.eq("program_code", programPro.get_id());
|
boolean insert = false;
|
if (xiXunPlayerService.removeById(programPro.getProgramId())) {
|
insert = xiXunPlayerService.insert(programPro);
|
}
|
;
|
return ResponseUtil.success(insert);
|
}
|
|
/**
|
* 删除节目
|
*
|
* @param pid
|
* @return
|
*/
|
@PostMapping("/deleteProgram/{pid}")
|
public ResponseVO<Object> deleteProgram(@PathVariable Long pid) {
|
return ResponseUtil.success(xiXunPlayerService.deleteProgram(pid));
|
}
|
|
/**
|
* 获取节目详情
|
*
|
* @param pid
|
* @return
|
*/
|
@GetMapping("/getByPid/{pid}")
|
public ResponseVO<Object> getByPid(@PathVariable Long pid) {
|
return ResponseUtil.success(xiXunPlayerService.getByPid(pid));
|
}
|
|
/**
|
* 节目列表
|
*
|
* @param baseConditionVO
|
* @param keyword
|
* @return
|
*/
|
@GetMapping("/list")
|
public ResponseVO<Object> list(BaseConditionVO baseConditionVO, @RequestParam(value = "keyword", required = false) String keyword) {
|
PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
|
|
LambdaQueryWrapper<PoleXixunPlayerEntity> wrapper = Wrappers.lambdaQuery(PoleXixunPlayerEntity.class).like(PoleXixunPlayerEntity::getProgramName, keyword);
|
// if(AdministratorEnums.CUSTOMER.getCode().equals(SecurityUtils.getAdministratorIdentity())){
|
// boolean clientId = clientService.findClientId();
|
// if(clientId){
|
// wrapper= wrapper.eq(PoleXixunPlayerEntity::getUserId,SecurityUtils.getUserId());
|
// }
|
// wrapper= wrapper.eq(PoleXixunPlayerEntity::getClientId,clientService.getClientId());
|
// }
|
// wrapper=Wrappers.lambdaQuery(PoleXixunPlayerEntity.class);
|
// if(StrUtil.isNotBlank(keyword)){
|
// wrapper.like(PoleXixunPlayerEntity::getLightemitName,keyword).or(
|
// lambdaQueryWrapper -> {
|
// lambdaQueryWrapper.like(PoleXixunPlayerEntity::getLightemitControlCode, keyword);
|
// }
|
// );
|
// }
|
// return ResponseUtil.success(poleLightemitService.list(wrapper));
|
if (AdministratorEnums.CUSTOMER.getCode().equals(SecurityUtils.getAdministratorIdentity())) {
|
|
return ResponseUtil.success(xiXunPlayerService.list(wrapper)); // todo
|
} else {
|
return ResponseUtil.success(xiXunPlayerService.list(wrapper));
|
}
|
}
|
|
|
/**
|
* 节目推送
|
*
|
* @param pid
|
* @param lightemitIds
|
* @return
|
*/
|
@GetMapping("/pushToXixun/{pid}")
|
public ResponseVO<Object> getByPid(@PathVariable Long pid, @RequestBody List<Long> lightemitIds) {
|
xiXunPlayerService.videoXixunPlayer(pid, lightemitIds);
|
return ResponseUtil.success("推送成功");
|
}
|
|
/**
|
* LED屏幕新增
|
*
|
* @param poleLightemit
|
* @return
|
*/
|
@PostMapping("/saveLed")
|
public ResponseVO<Object> save(@RequestBody PoleLightemitEntity poleLightemit) {
|
int count = poleLightemitService.count(new QueryWrapper<PoleLightemitEntity>().eq("lightemit_control_code", poleLightemit.getLightemitControlCode()));
|
if (count != 0) {
|
throw new BusinessException("LED控制卡编号不能重复");
|
}
|
|
poleLightemit.setCreateUserId(SecurityUtils.getClientId());
|
|
poleLightemitService.savePoleLightemit(poleLightemit);
|
|
|
return ResponseUtil.success("新增成功");
|
}
|
|
/**
|
* LED屏幕修改
|
*
|
* @param ledId
|
* @param poleLightemit
|
* @return
|
*/
|
@PostMapping("/updateLed/{ledId}")
|
public ResponseVO<Object> updatePoleLightemit(@PathVariable Long ledId, @RequestBody PoleLightemitEntity poleLightemit) {
|
poleLightemitService.updatePoleLightemit(ledId, poleLightemit);
|
return ResponseUtil.success("修改成功");
|
}
|
|
/**
|
* LED屏幕删除
|
*
|
* @param ledIds
|
* @return
|
*/
|
@PostMapping("/deleteLed")
|
public ResponseVO<Object> deleteLed(@RequestBody List<Long> ledIds) {
|
boolean b = poleLightemitService.deletePoleLightemit(ledIds);
|
if (b) {
|
return ResponseUtil.success("删除成功");
|
} else {
|
return ResponseUtil.success("删除失败");
|
}
|
}
|
|
/**
|
* LED屏幕列表
|
*
|
* @param baseConditionVO
|
* @param keyword
|
* @return
|
*/
|
@GetMapping("/listLed")
|
public ResponseVO<Object> listLed(BaseConditionVO baseConditionVO, @RequestParam(value = "keyword", required = false) String keyword,
|
@RequestParam(value = "isOnLine", required = false) boolean isOnLine) {
|
PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
|
LambdaQueryWrapper<PoleLightemitEntity> wrapper = Wrappers.lambdaQuery(PoleLightemitEntity.class);
|
if (AdministratorEnums.CUSTOMER.getCode().equals(SecurityUtils.getAdministratorIdentity())) {
|
boolean clientId = clientService.findClientId();
|
if (clientId) {
|
wrapper = wrapper.eq(PoleLightemitEntity::getUserId, SecurityUtils.getUserId());
|
}
|
wrapper = wrapper.eq(PoleLightemitEntity::getClientId, clientService.getClientId());
|
}
|
wrapper = Wrappers.lambdaQuery(PoleLightemitEntity.class);
|
if (StrUtil.isNotBlank(keyword)) {
|
wrapper.like(PoleLightemitEntity::getLightemitName, keyword).or(
|
lambdaQueryWrapper -> {
|
lambdaQueryWrapper.like(PoleLightemitEntity::getLightemitControlCode, keyword);
|
}
|
);
|
}
|
List<PoleBinding> bindings = bindingService.list(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceType, 1));
|
List<PoleLightemitEntity> list = poleLightemitService.list(wrapper);
|
if (isOnLine) {
|
List<PoleLightemitEntity> results = poleLightemitService.ledOnline(list);
|
results.forEach(
|
led -> {
|
bindings.forEach(
|
bind -> {
|
if (bind.getDeviceCode() != null && led.getLightemitControlCode() == bind.getDeviceCode()) {
|
led.setStreetlightId(bind.getPoleId());
|
System.out.println("有没有运行到这里?---------------" + bind.getPoleId());
|
led.setStreetlightName(poleService.getOne(Wrappers.lambdaQuery(Pole.class).eq(Pole::getId, bind.getPoleId())).getPoleName());
|
}
|
}
|
);
|
}
|
);
|
CommonPage commonPage = CommonPage.restPage(results);
|
int size = results.size();
|
commonPage.setTotal((long) size);
|
commonPage.setTotalPage(size / baseConditionVO.getPageSize() + 1);
|
if (size % baseConditionVO.getPageSize() == 0) {
|
commonPage.setTotalPage(size / baseConditionVO.getPageSize());
|
}
|
return ResponseUtil.success(commonPage);
|
} else {
|
poleLightemitService.ledOnlineCheck(list);
|
list.forEach(
|
led -> {
|
bindings.forEach(
|
bind -> {
|
if (bind.getDeviceCode() != null && led.getLightemitControlCode().equals(bind.getDeviceCode())) {
|
led.setStreetlightId(bind.getPoleId());
|
System.out.println("有没有运行到这里?---------------" + bind.getPoleId());
|
led.setStreetlightName(poleService.getOne(Wrappers.lambdaQuery(Pole.class).eq(Pole::getId, bind.getPoleId())).getPoleName());
|
}
|
}
|
);
|
}
|
);
|
CommonPage commonPage = CommonPage.restPage(list);
|
int size = list.size();
|
commonPage.setTotal((long) size);
|
commonPage.setTotalPage(size / baseConditionVO.getPageSize() + 1);
|
if (size % baseConditionVO.getPageSize() == 0) {
|
commonPage.setTotalPage(size / baseConditionVO.getPageSize());
|
}
|
return ResponseUtil.success(commonPage);
|
// return ResponseUtil.success(list);
|
}
|
// return ResponseUtil.success(poleLightemitService.list(wrapper));
|
}
|
|
/*
|
设置屏幕开关
|
*/
|
|
@PostMapping("/setScreenOpen")
|
public ResponseVO<Object> setScreenOpen(@RequestBody SetScreenOpenParam setScreenOpenEntity) {
|
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<Long, Object> 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<Object> getPicture(@PathVariable Long id) {
|
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<Object> getVolume(@PathVariable Long id) {
|
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("/setVolume")
|
public ResponseVO<Object> setVolume(@RequestBody SetVolumeParam setVolumeEntity) {
|
|
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<Object> addSchedule(@RequestBody LEDScheduleParam_xixun ledEntity) {
|
return ResponseUtil.success(scheduleService.insert(ledEntity));
|
}
|
|
@PostMapping("/updateSchedule")
|
public ResponseVO<Object> updateSchedule(@RequestBody LEDScheduleParam_xixun ledEntity) {
|
return ResponseUtil.success(scheduleService.updateSchedule(ledEntity));
|
}
|
|
@PostMapping("/deleteSchedule")
|
public ResponseVO<Object> deleteSchedule(@RequestBody List<Integer> ids) {
|
return ResponseUtil.success(scheduleService.removeByIds(ids));
|
}
|
|
@GetMapping("/getSchedule/{id}")
|
public ResponseVO<Object> getSchedule(@PathVariable Integer id) {
|
return ResponseUtil.success(scheduleService.getSchedule(id));
|
}
|
|
|
@GetMapping("/listSchedule")
|
public ResponseVO<Object> listSchedule(BaseConditionVO baseConditionVO, @RequestParam(value = "keyword", required = false) String keyword) {
|
PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
|
return ResponseUtil.success(scheduleService.listSchedule(baseConditionVO, keyword));
|
}
|
|
|
/**
|
* 设置定时
|
*
|
* @param id
|
* @param lightemitIds
|
* @return
|
*/
|
@PostMapping("/pushSchedule/{id}")
|
public ResponseVO<Object> pushSchedule(@PathVariable Integer id, @RequestBody Long[] lightemitIds) {
|
scheduleService.ledschedulepush(id, lightemitIds);
|
return ResponseUtil.success("设置成功");
|
}
|
|
|
}
|