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 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/{poleId}") public ResponseVO deletePole(@PathVariable Long poleId) { if (!permissionConfig.check(MenuEnum.POLE_DELETE.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } return ResponseUtil.success(poleService.deletePole(poleId)); } @PostMapping("/listDetail") public ResponseVO listPoleDetail(BaseConditionVO baseConditionVO, @RequestBody PoleStatesParam param) { if (!permissionConfig.check(MenuEnum.POLE_LIST.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } CommonPage commonPage = poleService.queryAllStatesAndList(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(), param); 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) { if (!permissionConfig.check(MenuEnum.POLE_LIST.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } CommonPage commonPage = poleService.queryAllStatesAndList(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(), param); 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); } /** * 在线数量 */ @GetMapping("/online") public ResponseVO online() { return ResponseUtil.success(poleService.poleCount()); } /** * 设置三元码 */ @PostMapping("/setMac/{baseMac}") public ResponseVO 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 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()); 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 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); } @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("/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)); } /** * 推送大气设备到诺瓦 */ @GetMapping("/pushAidDataToNova/{poleId}") public ResponseVO pushAirDataToNova(@PathVariable Long poleId) { if (!permissionConfig.check(MenuEnum.PUSH_AIR_DATA_TO_NOVA.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } return ResponseUtil.success(poleService.pushAirDataToNova(poleId)); } /** * 推送大气设备到熙讯 */ @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)); } }