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.execption.BusinessException; 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.dto.DeviceStatusDto; import com.sandu.ximon.admin.param.*; 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.utils.response.VnnoxResult; 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 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 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") public ResponseVO deletePole(@RequestBody List poleIds) { if (!permissionConfig.check(MenuEnum.POLE_DELETE.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } return ResponseUtil.success(poleService.deletePole(poleIds)); } @PostMapping("/listDetail") public ResponseVO listPoleDetail(BaseConditionVO baseConditionVO, @RequestBody PoleStatesParam param, @RequestParam(value = "order", required = false) Integer order, @RequestParam(value = "seq", required = false) Integer seq) { if (!permissionConfig.check(MenuEnum.POLE_LIST.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } CommonPage commonPage = poleService.queryAllStatesAndList(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(), param, order, seq); List listCommonPage = (List) commonPage.getList(); List listResult = new ArrayList<>(); for (Pole pole : listCommonPage) { PoleBindVO bindByPoleId = poleService.getBindByPoleId(pole.getId()); bindByPoleId.setPole(pole); listResult.add(bindByPoleId); } commonPage.setList(listResult); return ResponseUtil.success(commonPage); } @PostMapping("/list") public ResponseVO listPole(BaseConditionVO baseConditionVO, @RequestBody PoleStatesParam param, @RequestParam(value = "order", required = false) Integer order, @RequestParam(value = "seq", required = false) Integer seq) { if (!permissionConfig.check(MenuEnum.POLE_LIST.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } CommonPage commonPage = poleService.queryAllStatesAndList(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(), param, order, seq); return ResponseUtil.success(commonPage); } //已启用 @GetMapping("/listPoleAndState") public ResponseVO 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 poles = poleService.queryStatesAndList(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(), keyword, groupid); return ResponseUtil.successPage(poles); } /** * 在线数量 */ // @AnonymousAccess @GetMapping("/online") public ResponseVO online() { return ResponseUtil.success(poleService.poleCount()); } /** * 设置三元码 */ @AnonymousAccess @PostMapping("/setMac/{baseMac}") public ResponseVO setMac(@PathVariable String baseMac) { //判断是否是有设置三元码权限 if (!permissionConfig.check(MenuEnum.BASE_DEVICE_01.getCode()) && MenuEnum.BASE_DEVICE_01.getCode().equals(baseMac)) { return ResponseUtil.fail("缺少对应用户权限"); } else if (!permissionConfig.check(MenuEnum.BASE_DEVICE_02.getCode()) && MenuEnum.BASE_DEVICE_02.getCode().equals(baseMac)) { return ResponseUtil.fail("缺少对应用户权限"); } else if (!permissionConfig.check(MenuEnum.BASE_DEVICE_03.getCode()) && MenuEnum.BASE_DEVICE_03.getCode().equals(baseMac)) { return ResponseUtil.fail("缺少对应用户权限"); } else if (!permissionConfig.check(MenuEnum.BASE_DEVICE_04.getCode()) && MenuEnum.BASE_DEVICE_04.getCode().equals(baseMac)) { return ResponseUtil.fail("缺少对应用户权限"); } else if (!permissionConfig.check(MenuEnum.BASE_DEVICE_05.getCode()) && MenuEnum.BASE_DEVICE_05.getCode().equals(baseMac)) { return ResponseUtil.fail("缺少对应用户权限"); } return ResponseUtil.success(poleService.setMac(baseMac)); } /** * 恢复灯杆出厂设置 */ @AnonymousAccess @PostMapping("/poleReset/{poleId}") public ResponseVO poleReset(@PathVariable Long poleId) { if (!permissionConfig.check(MenuEnum.POLE_REAL_RESET.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } return ResponseUtil.success(poleService.poleReset(poleId)); } /** * 灯杆绑定设备 */ @PostMapping("/bind/{poleId}") public ResponseVO 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 unBindPole(@PathVariable Long poleId, @RequestBody @Validated PoleBindingParam param) { if (!permissionConfig.check(MenuEnum.UNBIND.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } boolean result = poleService.unBindPole(poleId, param.getDeviceCode(), param.getDeviceType()); if (result) { //设备类型,0路灯,1led屏幕,2充电桩,3大气监测,4水质监测,5ip音柱,6lcd广告机,7摄像头,8杆体倾测,9一键救助, 10熙讯, 11农耕, 12新诺瓦 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; case PoleBindingEnums.NEW_NOVA: break; default: break; } return ResponseUtil.success("解绑成功"); } else { return ResponseUtil.fail("解绑失败"); } } @AnonymousAccess @PostMapping("/listStatusByDeviceCode") public ResponseVO 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 statusList = poleService.listStatusByDeviceCode(CollectionUtil.toList(deviceCodeList)); return ResponseUtil.success(statusList); } /** * 查询是否存在可注册设备 * * @param * @return */ @AnonymousAccess @PostMapping("/isRegisterByCode") public ResponseVO getStatusByCode() { if (!permissionConfig.check(MenuEnum.GET_STATE_BY_DEVICECODE.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } ArrayList deviceCodeList = new ArrayList<>(); deviceCodeList.add("baseDevice01"); deviceCodeList.add("baseDevice02"); deviceCodeList.add("baseDevice03"); deviceCodeList.add("baseDevice04"); deviceCodeList.add("baseDevice05"); for (String s : deviceCodeList) { if (s == null) { return ResponseUtil.fail("参数不能为空"); } } if (ArrayUtil.isEmpty(deviceCodeList)) { return ResponseUtil.fail("参数不能为空"); } List statusList = poleService.listStatusByDeviceCode(deviceCodeList); List list = new ArrayList<>(); String s = "baseDevice0"; for (int i = 0; i < deviceCodeList.size(); i++) { DeviceStatusDto dto = new DeviceStatusDto(); dto.setDeviceCode(s + (i + 1)); dto.setName(s + (i + 1)); list.add(dto); } statusList.forEach( status -> { list.forEach( dto -> { if (status.getDeviceCode().equals(dto.getDeviceCode())) { //status=1时 设备可以注册 if (status.getStatus() == 1) { dto.setStatus(1); } } } ); } ); return ResponseUtil.success(list); } @PostMapping("/ClientBindingPole") public ResponseVO 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("/ClientUnBindingPole") public ResponseVO ClientUnBindingPole(@RequestBody PoleBindParam param) { if (!permissionConfig.check(MenuEnum.CLIENT_UNBINDING_POLE.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } return ResponseUtil.success(poleService.ClientUnBindingPole(param.getClientId(), param.getPoleIds())); } /** * 查找拥有的灯杆 */ @PostMapping("/getOwnerPole/{cilentId}") public ResponseVO 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 results = poleService.getOwnerPole(baseConditionVO, keyword, cilentId); return ResponseUtil.success(results); } /** * 查看灯杆绑定的设备 //已合并到列表功能 此接口已废弃 */ @PostMapping("/getPoleBindDevice/{poleId}") public ResponseVO getPoleBindDevice(@PathVariable Long poleId) { if (!permissionConfig.check(MenuEnum.GET_POLE_BINDING.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } return ResponseUtil.success(poleService.getBindByPoleId(poleId)); } /** * 推送大气设备到诺瓦 */ @PostMapping("/pushAidDataToNova") public ResponseVO pushAirDataToNova(@RequestBody @Validated PushAirDataToNovaParam param) { if (!permissionConfig.check(MenuEnum.PUSH_AIR_DATA_TO_NOVA.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } if (param.getDuration() <= 0 || param.getDuration() > 86400000) { throw new BusinessException("播放时间需大于零且小于86400000 !"); } VnnoxResult vnnoxResult = poleService.pushAirDataToNova(param); if (vnnoxResult != null && vnnoxResult.getSuccess() != null && !vnnoxResult.getSuccess().isEmpty()) { return ResponseUtil.success("推送成功"); } else { return ResponseUtil.fail("推送失败"); } } /** * 推送大气设备到熙讯 */ @GetMapping("/pushAirDataToXiXun/{poleId}") public ResponseVO pushAirDataToXiXun(@PathVariable Long poleId) { if (!permissionConfig.check(MenuEnum.PUSH_AIR_DATA_TO_XIXUN.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } return ResponseUtil.success(poleService.pushAirDataToXiXun(poleId)); } @AnonymousAccess @PostMapping("/setRedis") public ResponseVO pushAirDataToXiXun() { poleService.setRedis(); return ResponseUtil.success("更新状态完成"); } }