package com.sandu.ximon.admin.controller;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.util.ArrayUtil;
|
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.object.BaseConditionVO;
|
import com.sandu.common.security.annotation.AnonymousAccess;
|
import com.sandu.common.util.ResponseUtil;
|
import com.sandu.ximon.admin.dto.DeviceStatus;
|
import com.sandu.ximon.admin.param.PoleBindParam;
|
import com.sandu.ximon.admin.param.PoleBindingParam;
|
import com.sandu.ximon.admin.param.PoleParam;
|
import com.sandu.ximon.admin.param.PoleStatesParam;
|
import com.sandu.ximon.admin.security.PermissionConfig;
|
import com.sandu.ximon.admin.service.AirEquipmentService;
|
import com.sandu.ximon.admin.service.IpVolumeService;
|
import com.sandu.ximon.admin.service.MonitorService;
|
import com.sandu.ximon.admin.service.PoleService;
|
import com.sandu.ximon.admin.vo.PoleBindVO;
|
import com.sandu.ximon.dao.domain.Pole;
|
import com.sandu.ximon.dao.enums.MenuEnum;
|
import com.sandu.ximon.dao.enums.PoleBindingEnums;
|
import lombok.AllArgsConstructor;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* 灯杆模块以及设置分组到对应灯杆
|
*
|
* @author chenjiantian
|
*/
|
@RestController
|
@AllArgsConstructor
|
@RequestMapping("/v1/pole")
|
public class PoleController {
|
|
private final PoleService poleService;
|
private MonitorService monitorService;
|
private IpVolumeService broadcastTerminalV2Service;
|
private AirEquipmentService airEquipmentService;
|
private final PermissionConfig permissionConfig;
|
|
@PostMapping("/add")
|
public ResponseVO<Object> addPole(@RequestBody @Validated PoleParam param) {
|
if (!permissionConfig.check(MenuEnum.POLE_VIRTUAL_ADD.getCode())) {
|
return ResponseUtil.fail("缺少对应用户权限");
|
}
|
return ResponseUtil.success(poleService.addPole(param));
|
}
|
|
@PostMapping("/update/{poleId}")
|
public ResponseVO<Object> updatePole(@PathVariable Long poleId, @RequestBody @Validated PoleParam param) {
|
if (!permissionConfig.check(MenuEnum.POLE_UPDATE.getCode())) {
|
return ResponseUtil.fail("缺少对应用户权限");
|
}
|
return ResponseUtil.success(poleService.updatePole(poleId, param));
|
}
|
|
@PostMapping("/delete/{poleId}")
|
public ResponseVO<Object> deletePole(@PathVariable Long poleId) {
|
if (!permissionConfig.check(MenuEnum.POLE_DELETE.getCode())) {
|
return ResponseUtil.fail("缺少对应用户权限");
|
}
|
return ResponseUtil.success(poleService.deletePole(poleId));
|
}
|
|
@PostMapping("/listDetail")
|
public ResponseVO<Object> listPoleDetail(BaseConditionVO baseConditionVO, @RequestBody PoleStatesParam param) {
|
if (!permissionConfig.check(MenuEnum.POLE_LIST.getCode())) {
|
return ResponseUtil.fail("缺少对应用户权限");
|
}
|
PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
|
List<Pole> results = poleService.queryAllStatesAndList(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(), param);
|
|
List<PoleBindVO> listResult = new ArrayList<>();
|
for (Pole pole : results) {
|
PoleBindVO bindByPoleId = poleService.getBindByPoleId(pole.getId());
|
bindByPoleId.setPole(pole);
|
listResult.add(bindByPoleId);
|
}
|
|
CommonPage commonPage = CommonPage.restPage(listResult);
|
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);
|
}
|
|
@PostMapping("/list")
|
public ResponseVO<Object> listPole(BaseConditionVO baseConditionVO, @RequestBody PoleStatesParam param) {
|
if (!permissionConfig.check(MenuEnum.POLE_LIST.getCode())) {
|
return ResponseUtil.fail("缺少对应用户权限");
|
}
|
PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
|
List<Pole> results = poleService.queryAllStatesAndList(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(), param);
|
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);
|
}
|
|
@GetMapping("/listPoleAndState")
|
public ResponseVO<Object> listPoleAndState(BaseConditionVO baseConditionVO, @RequestParam(value = "keyword", required = false) String keyword,
|
@RequestParam(value = "groupid", required = false) Long groupid) {
|
if (!permissionConfig.check(MenuEnum.POLE_LIST.getCode())) {
|
return ResponseUtil.fail("缺少对应用户权限");
|
}
|
PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
|
List<Pole> poles = poleService.queryStatesAndList(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(), keyword, groupid);
|
return ResponseUtil.successPage(poles);
|
}
|
|
/**
|
* 在线数量
|
*/
|
@AnonymousAccess
|
@GetMapping("/online")
|
public ResponseVO<Object> online() {
|
return ResponseUtil.success(poleService.poleCount());
|
}
|
|
|
/**
|
* 设置三元码
|
*/
|
@PostMapping("/setMac/{baseMac}")
|
public ResponseVO<Object> setMac(@PathVariable String baseMac) {
|
if (!permissionConfig.check(MenuEnum.POLE_REAL_ADD.getCode())) {
|
return ResponseUtil.fail("缺少对应用户权限");
|
}
|
return ResponseUtil.success(poleService.setMac(baseMac));
|
}
|
|
/**
|
* 恢复灯杆出厂设置
|
*/
|
@PostMapping("/poleReset/{poleId}")
|
public ResponseVO<Object> poleReset(@PathVariable Long poleId) {
|
if (!permissionConfig.check(MenuEnum.POLE_REAL_RESET.getCode())) {
|
return ResponseUtil.fail("缺少对应用户权限");
|
}
|
return ResponseUtil.success(poleService.poleReset(poleId));
|
}
|
|
//TODO 设备的绑定解绑都要单独重新处理
|
|
/**
|
* 灯杆绑定设备
|
*/
|
@PostMapping("/bind/{poleId}")
|
public ResponseVO<Object> bindPole(@PathVariable Long poleId, @RequestBody @Validated PoleBindingParam param) {
|
if (!permissionConfig.check(MenuEnum.BINDING.getCode())) {
|
return ResponseUtil.fail("缺少对应用户权限");
|
}
|
boolean result = poleService.bindPole(poleId, param);
|
if (result) {
|
//设备类型,0路灯,1nove,2充电桩,3大气监测,4水质监测,5ip音柱,6lcd广告机,7摄像头,8杆体倾测,9一键救助, 10熙讯, 11农耕
|
switch (param.getDeviceType().toString()) {
|
case PoleBindingEnums.LIGHT:
|
Pole pole = poleService.getById(poleId);
|
if (pole != null) {
|
pole.setPoleName(param.getDeviceName());
|
pole.setDeviceCode(param.getDeviceCode());
|
poleService.updateById(pole);
|
}
|
break;
|
case PoleBindingEnums.VONNOX:
|
break;
|
case PoleBindingEnums.CHARGING_PILE:
|
break;
|
case PoleBindingEnums.ATMOSPHERIC:
|
break;
|
case PoleBindingEnums.WATER:
|
break;
|
case PoleBindingEnums.IPVOLUME:
|
broadcastTerminalV2Service.updateBingdingState(true, Integer.valueOf(param.getDeviceCode()).intValue());
|
break;
|
case PoleBindingEnums.LCD_ADVERTISING:
|
break;
|
case PoleBindingEnums.MONITOR:
|
monitorService.updateBingdingState(true, param.getDeviceCode());
|
break;
|
case PoleBindingEnums.LIGHTPOLEHEELING:
|
break;
|
case PoleBindingEnums.FOR_HELP:
|
break;
|
case PoleBindingEnums.XIXUN:
|
break;
|
case PoleBindingEnums.ATMOSPHERIC_NONG_GENG:
|
break;
|
default:
|
break;
|
}
|
|
return ResponseUtil.success("绑定成功");
|
} else {
|
return ResponseUtil.fail("绑定失败");
|
}
|
}
|
|
/**
|
* 灯杆绑定设备
|
*/
|
@PostMapping("/unBind/{poleId}")
|
public ResponseVO<Object> unBindPole(@PathVariable Long poleId, @RequestBody @Validated PoleBindingParam param) {
|
if (!permissionConfig.check(MenuEnum.UNBIND.getCode())) {
|
return ResponseUtil.fail("缺少对应用户权限");
|
}
|
boolean result = poleService.unBindPole(poleId, param.getDeviceCode());
|
if (result) {
|
//设备类型,0路灯,1led屏幕,2充电桩,3大气监测,4水质监测,5ip音柱,6lcd广告机,7摄像头,8杆体倾测,9一键救助, 10熙讯, 11农耕
|
switch (param.getDeviceType().toString()) {
|
case PoleBindingEnums.LIGHT:
|
//删除灯杆的devicescode
|
Pole pole = poleService.getOne(Wrappers.lambdaQuery(Pole.class).eq(Pole::getId, poleId));
|
if (pole != null) {
|
poleService.updateDeviceCode(pole.getId());
|
}
|
break;
|
case PoleBindingEnums.VONNOX:
|
break;
|
case PoleBindingEnums.CHARGING_PILE:
|
break;
|
case PoleBindingEnums.ATMOSPHERIC:
|
break;
|
case PoleBindingEnums.WATER:
|
break;
|
case PoleBindingEnums.IPVOLUME:
|
broadcastTerminalV2Service.updateBingdingState(false, Integer.valueOf(param.getDeviceCode()).intValue());
|
break;
|
case PoleBindingEnums.LCD_ADVERTISING:
|
break;
|
case PoleBindingEnums.MONITOR:
|
monitorService.updateBingdingState(false, param.getDeviceCode());
|
break;
|
case PoleBindingEnums.LIGHTPOLEHEELING:
|
break;
|
case PoleBindingEnums.FOR_HELP:
|
break;
|
case PoleBindingEnums.XIXUN:
|
break;
|
case PoleBindingEnums.ATMOSPHERIC_NONG_GENG:
|
break;
|
default:
|
break;
|
}
|
|
return ResponseUtil.success("解绑成功");
|
} else {
|
return ResponseUtil.fail("解绑失败");
|
}
|
}
|
|
@PostMapping("/listStatusByDeviceCode")
|
public ResponseVO<Object> getStatusById(@RequestBody String[] deviceCodeList) {
|
if (!permissionConfig.check(MenuEnum.GET_STATE_BY_DEVICECODE.getCode())) {
|
return ResponseUtil.fail("缺少对应用户权限");
|
}
|
for (String s : deviceCodeList) {
|
if (s == null) {
|
return ResponseUtil.fail("参数不能为空");
|
}
|
|
}
|
if (ArrayUtil.isEmpty(deviceCodeList)) {
|
return ResponseUtil.fail("参数不能为空");
|
}
|
List<DeviceStatus> statusList = poleService.listStatusByDeviceCode(CollectionUtil.toList(deviceCodeList));
|
return ResponseUtil.success(statusList);
|
}
|
|
@PostMapping("/ClientBindingPole")
|
public ResponseVO<Object> ClientBindingPole(@RequestBody PoleBindParam param) {
|
if (!permissionConfig.check(MenuEnum.CLIENT_BINDING_POLE.getCode())) {
|
return ResponseUtil.fail("缺少对应用户权限");
|
}
|
return ResponseUtil.success(poleService.ClientBindingPole(param.getClientId(), param.getPoleIds()));
|
}
|
|
|
/**
|
* 查找自己拥有的灯杆
|
*/
|
@PostMapping("/getOwnerPole/{cilentId}")
|
public ResponseVO<Object> getOwnerPole(BaseConditionVO baseConditionVO, @RequestParam(value = "keyword", required = false) String keyword
|
, @PathVariable Long cilentId) {
|
if (!permissionConfig.check(MenuEnum.GET_CLIENT_POLE.getCode())) {
|
return ResponseUtil.fail("缺少对应用户权限");
|
}
|
List<Pole> results = poleService.getOwnerPole(baseConditionVO, keyword, cilentId);
|
return ResponseUtil.success(results);
|
}
|
|
/**
|
* 查看灯杆绑定的设备
|
*/
|
@AnonymousAccess
|
@PostMapping("/getPoleBindDevice/{poleId}")
|
public ResponseVO<Object> getPoleBindDevice(@PathVariable Long poleId) {
|
if (!permissionConfig.check(MenuEnum.GET_POLE_BINDING.getCode())) {
|
return ResponseUtil.fail("缺少对应用户权限");
|
}
|
return ResponseUtil.success(poleService.getBindByPoleId(poleId));
|
}
|
|
|
/**
|
* 推送大气设备到诺瓦
|
*/
|
@AnonymousAccess
|
@GetMapping("/pushAidDataToNova/{poleId}")
|
public ResponseVO<Object> pushAirDataToNova(@PathVariable Long poleId) {
|
if (!permissionConfig.check(MenuEnum.PUSH_AIR_DATA_TO_NOVA.getCode())) {
|
return ResponseUtil.fail("缺少对应用户权限");
|
}
|
return ResponseUtil.success(poleService.pushAirDataToNova(poleId));
|
}
|
|
/**
|
* 推送大气设备到熙讯
|
*/
|
@AnonymousAccess
|
@GetMapping("/pushAirDataToXiXun/{poleId}")
|
public ResponseVO<Object> pushAirDataToXiXun(@PathVariable Long poleId) {
|
if (!permissionConfig.check(MenuEnum.PUSH_AIR_DATA_TO_XIXUN.getCode())) {
|
return ResponseUtil.fail("缺少对应用户权限");
|
}
|
return ResponseUtil.success(poleService.pushAirDataToXiXun(poleId));
|
}
|
|
}
|