| | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.sandu.common.domain.CommonPage; |
| | | import com.sandu.common.execption.BusinessException; |
| | | import com.sandu.common.object.BaseConditionVO; |
| | | import com.sandu.common.redis.RedisService; |
| | |
| | | import com.sandu.ximon.admin.redis.LightKey; |
| | | import com.sandu.ximon.admin.security.SecurityUtils; |
| | | import com.sandu.ximon.admin.utils.LightemitUtils; |
| | | import com.sandu.ximon.admin.utils.ListPagingUtils; |
| | | import com.sandu.ximon.admin.utils.RedisUtils; |
| | | import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils; |
| | | import com.sandu.ximon.admin.utils.response.VnnoxResult; |
| | | import com.sandu.ximon.admin.vo.PoleBindVO; |
| | | import com.sandu.ximon.dao.bo.*; |
| | |
| | | BeanUtils.copyProperties(param, pole); |
| | | pole.setPoleCode(generatePoleCode()); |
| | | pole.setDeviceType(-1); |
| | | return save(pole); |
| | | boolean save = save(pole); |
| | | |
| | | /** |
| | | * 新增虚拟灯杆日志记录开始 |
| | | */ |
| | | String content = "{灯杆ID:" + pole.getId() + ", 灯杆名:" + param.getPoleName() + "}"; |
| | | StoreOperationRecordsUtils.storeOperationData(null, null, "新增虚拟灯杆", content); |
| | | /** |
| | | * 新增虚拟灯杆日志记录结束 |
| | | */ |
| | | return save; |
| | | } |
| | | |
| | | public boolean updatePole(Long poleId, PoleParam param) { |
| | |
| | | if (pole == null) { |
| | | throw new BusinessException("未找到该灯杆"); |
| | | } |
| | | Long clientId = SecurityUtils.getClientId(); |
| | | //非超管 |
| | | if (clientId != null) { |
| | | if (!Objects.equals(SecurityUtils.getUserId(), pole.getUserId()) && !Objects.equals(SecurityUtils.getUserId(), pole.getClientId())) { |
| | | throw new BusinessException("该灯杆不属于您"); |
| | | } |
| | | } |
| | | Pole update = new Pole(); |
| | | BeanUtils.copyProperties(param, update); |
| | | update.setId(poleId); |
| | | /** |
| | | * 修改灯杆日志记录开始 |
| | | */ |
| | | String content = "编辑灯杆:" + poleId; |
| | | StoreOperationRecordsUtils.storeOperationData(null, null, "编辑灯杆", content); |
| | | /** |
| | | * 修改灯杆日志记录结束 |
| | | */ |
| | | return updateById(update); |
| | | } |
| | | |
| | |
| | | } |
| | | // 删除灯杆绑定关系 |
| | | poleBindingService.remove(Wrappers.<PoleBinding>lambdaQuery().eq(PoleBinding::getPoleId, poleId)); |
| | | |
| | | /** |
| | | * 删除灯杆日志记录开始 |
| | | */ |
| | | String content = "{灯杆Code:" + pole.getDeviceCode() + ", 灯杆名称:" + pole.getPoleName() + " }"; |
| | | |
| | | StoreOperationRecordsUtils.storeOperationData(null, null, "删除灯杆", content); |
| | | /** |
| | | * 删除灯杆日志记录结束 |
| | | */ |
| | | return removeById(poleId); |
| | | } |
| | | |
| | |
| | | if (SecurityUtils.getClientId() == null) { |
| | | wrapper = Wrappers.lambdaQuery(Pole.class); |
| | | } else { |
| | | wrapper = Wrappers.lambdaQuery(Pole.class).eq(Pole::getClientId, SecurityUtils.getUserId()).or( |
| | | w -> { |
| | | w.eq(Pole::getUserId, SecurityUtils.getUserId()); |
| | | }); |
| | | wrapper = Wrappers.lambdaQuery(Pole.class).eq(Pole::getClientId, SecurityUtils.getUserId()).or(w -> { |
| | | w.eq(Pole::getUserId, SecurityUtils.getUserId()); |
| | | }); |
| | | } |
| | | //灯杆 |
| | | List<Pole> list = list(wrapper); |
| | |
| | | BroadcastTerminalV2Param broadcastTerminalV2Param = new BroadcastTerminalV2Param(); |
| | | broadcastTerminalV2Param.setBindingState(2); |
| | | broadcastTerminalV2Param.setWorkState(2); |
| | | List<BroadcastTerminalV2EntityBo> broadcastTerminalList |
| | | = SpringContextHolder.getBean(IpVolumeService.class).getBroadcastTerminalList(null, broadcastTerminalV2Param); |
| | | List<BroadcastTerminalV2EntityBo> broadcastTerminalList = SpringContextHolder.getBean(IpVolumeService.class).getBroadcastTerminalList(null, broadcastTerminalV2Param); |
| | | for (BroadcastTerminalV2EntityBo bean : broadcastTerminalList) { |
| | | if (bean.getStatus() == 1 || bean.getStatus() == 0) { |
| | | number++; |
| | |
| | | result.put("AirEquipmentNongGengTotalCount", airEquipmentNongGengBos.size()); |
| | | //水质 |
| | | number = 0; |
| | | List<WaterQualityEquipmentBo> waterQualityEquipments |
| | | = SpringContextHolder.getBean(WaterQualityEquipmentService.class).listWaterQualityEquipmentByKeyword(null, null); |
| | | List<WaterQualityEquipmentBo> waterQualityEquipments = SpringContextHolder.getBean(WaterQualityEquipmentService.class).listWaterQualityEquipmentByKeyword(null, null); |
| | | |
| | | for (WaterQualityEquipmentBo waterQualityEquipmentBo : waterQualityEquipments) { |
| | | WaterQualityDataDto waterQualityDataDto |
| | | = SpringContextHolder.getBean(WaterQualityDataService.class).getWaterQualityDataInfo(waterQualityEquipmentBo.getWaterQualityEquipmentCode()); |
| | | WaterQualityDataDto waterQualityDataDto = SpringContextHolder.getBean(WaterQualityDataService.class).getWaterQualityDataInfo(waterQualityEquipmentBo.getWaterQualityEquipmentCode()); |
| | | if (waterQualityDataDto != null) { |
| | | number++; |
| | | } |
| | |
| | | result.put("WaterQualityEquipmentTotalCount", waterQualityEquipments.size()); |
| | | //灯杆倾斜 |
| | | number = 0; |
| | | List<LightPoleHeeling> lightPoleHeelings |
| | | = SpringContextHolder.getBean(LightPoleHeelingService.class).listLightPoleHeelingByKeyword(null, null); |
| | | List<LightPoleHeeling> lightPoleHeelings = SpringContextHolder.getBean(LightPoleHeelingService.class).listLightPoleHeelingByKeyword(null, null); |
| | | |
| | | for (LightPoleHeeling lightPoleHeeling : lightPoleHeelings) { |
| | | if (RedisUtils.getBean().get(LightPoleHeelingEnum.LIGHT_POLE_HEELING_STATE.getCode() + lightPoleHeeling.getMac()) != null) { |
| | |
| | | |
| | | //熙讯 |
| | | List<PoleLightemitEntity> poleLightemitEntities = SpringContextHolder.getBean(PoleLightemitService.class).listLed(null, false); |
| | | List<PoleLightemitEntity> poleLightemitEntityOnlineList = SpringContextHolder.getBean(PoleLightemitService.class).ledOnline(poleLightemitEntities); |
| | | List<PoleLightemitEntity> poleLightemitEntityOnlineList = SpringContextHolder.getBean(PoleLightemitService.class).listLed(null, true); |
| | | |
| | | result.put("XiXunOnlineCount", poleLightemitEntityOnlineList.size()); |
| | | result.put("XiXunTotalCount", poleLightemitEntities.size()); |
| | |
| | | return result; |
| | | } |
| | | |
| | | public List<Pole> queryAllStatesAndList(Integer pageNo, Integer pageSize, PoleStatesParam param) { |
| | | |
| | | List<Pole> list = new ArrayList<>(); |
| | | LambdaQueryWrapper<Pole> wrapper = new LambdaQueryWrapper<>(); |
| | | public CommonPage queryAllStatesAndList(Integer pageNo, Integer pageSize, PoleStatesParam param) { |
| | | if (param == null) { |
| | | param = new PoleStatesParam(); |
| | | } |
| | | System.out.println(param); |
| | | List<Pole> poleList; |
| | | if (SecurityUtils.getClientId() == null) { |
| | | wrapper = Wrappers.lambdaQuery(Pole.class); |
| | | poleList = poleMapper.queryPoleOnLineStatesList(null, param.getIsTrue(), param.getBingStates(), param.getGroupid(), param.getKeyword()); |
| | | } else { |
| | | wrapper = Wrappers.lambdaQuery(Pole.class).eq(Pole::getClientId, SecurityUtils.getUserId()).or( |
| | | w -> { |
| | | w.eq(Pole::getUserId, SecurityUtils.getUserId()); |
| | | }); |
| | | } |
| | | if (param.getKeyword() != null && !param.getKeyword().isEmpty()) { |
| | | wrapper.like(Pole::getPoleCode, param.getKeyword()).or( |
| | | wrappers -> { |
| | | wrappers.like(Pole::getPoleName, param.getKeyword()); |
| | | } |
| | | ); |
| | | poleList = poleMapper.queryPoleOnLineStatesList(SecurityUtils.getUserId(), param.getIsTrue(), param.getBingStates(), param.getGroupid(), param.getKeyword()); |
| | | } |
| | | |
| | | PageHelper.startPage(pageNo, pageSize); |
| | | list = list(wrapper); |
| | | if (param.getGroupid() != null) { |
| | | // List<Long> poleIds = new ArrayList<>(); |
| | | List<Pole> pole = new ArrayList<>(); |
| | | List<PoleGroupRelation> relations = groupRelationService.list(Wrappers.lambdaQuery(PoleGroupRelation.class) |
| | | .eq(PoleGroupRelation::getPoleGroupId, param.getGroupid())); |
| | | relations.forEach(relation -> { |
| | | pole.add(getById(relation.getPoleId())); |
| | | } |
| | | ); |
| | | list = pole; |
| | | } |
| | | //是否绑定 |
| | | if (param.getBingStates() != 2) { |
| | | // 绑定/未绑定 |
| | | list = isBind(list, param); |
| | | //已绑定的是否是真实灯杆 |
| | | if (param.getIsTrue() != 2) { |
| | | list = isTrue(list, param); |
| | | //绑定的真实灯杆是否在线 |
| | | if (param.getOnLineStates() != 2) { |
| | | list = isOnLine(list, param); |
| | | } |
| | | } |
| | | //全部灯杆 实体/虚拟 |
| | | else { |
| | | //查询全部灯杆是否在线 |
| | | if (param.getOnLineStates() != 2) { |
| | | list = isOnLine(list, param); |
| | | } |
| | | } |
| | | } |
| | | //全部 绑定/未绑定 |
| | | else { |
| | | // 判断灯杆类型 |
| | | if (param.getIsTrue() != 2) { |
| | | // 实体/虚拟 |
| | | list = isTrue(list, param); |
| | | // 灯杆的在线判断 |
| | | if (param.getOnLineStates() != 2) { |
| | | //在线/离线 |
| | | list = isOnLine(list, param); |
| | | } |
| | | } |
| | | //全类型灯杆 |
| | | else { |
| | | //判断在线状态 |
| | | if (param.getOnLineStates() != 2) { |
| | | //在线/离线 |
| | | list = isOnLine(list, param); |
| | | } |
| | | } |
| | | } |
| | | List<Pole> PoleResult = isOnLine(poleList, param); |
| | | setCount(PoleResult); |
| | | |
| | | setCount(list); |
| | | return list; |
| | | CommonPage commonPage = ListPagingUtils.pages(PoleResult, pageNo, pageSize); |
| | | |
| | | return commonPage; |
| | | } |
| | | |
| | | /** |
| | |
| | | wrapper = Wrappers.lambdaQuery(Pole.class).eq(Pole::getClientId, SecurityUtils.getUserId()); |
| | | } |
| | | if (!keyword.isEmpty()) { |
| | | wrapper.like(Pole::getPoleCode, keyword).or( |
| | | wrappers -> { |
| | | wrappers.like(Pole::getPoleName, keyword); |
| | | } |
| | | ); |
| | | wrapper.like(Pole::getPoleCode, keyword).or(wrappers -> { |
| | | wrappers.like(Pole::getPoleName, keyword); |
| | | }); |
| | | } |
| | | list = list(wrapper); |
| | | List<String> MacCodes = new ArrayList<>(); |
| | |
| | | if (deviceName.isEmpty()) { |
| | | throw new BusinessException("该灯杆Mca为空"); |
| | | } |
| | | IRequestFrame build = FrameBuilder.builderA5() |
| | | .orderType(A5OrderEnum.REQUEST_LIGHT_DATA.getCode()) |
| | | .innerFrame(new A5LightResetReqInnerFrame()) |
| | | .build(); |
| | | CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance() |
| | | .sendRRPC(deviceName, build); |
| | | IRequestFrame build = FrameBuilder.builderA5().orderType(A5OrderEnum.REQUEST_LIGHT_DATA.getCode()).innerFrame(new A5LightResetReqInnerFrame()).build(); |
| | | CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(deviceName, build); |
| | | |
| | | System.out.println(commonFrame.toString()); |
| | | |
| | | CommonFrame rebootFrame = MainBoardInvokeSyncService.getInstance() |
| | | .sendRRPC(deviceName, |
| | | FrameBuilder.builderA2().innerFrame(new EmptyRequestInnerFrame()) |
| | | .orderType(A2OrderEnum.REQUEST_MAIN_BOARD_RESET.getCode()).build()); |
| | | CommonFrame rebootFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(deviceName, FrameBuilder.builderA2().innerFrame(new EmptyRequestInnerFrame()).orderType(A2OrderEnum.REQUEST_MAIN_BOARD_RESET.getCode()).build()); |
| | | |
| | | |
| | | boolean b = false; |
| | |
| | | b = updateById(byId); |
| | | System.out.println("重启成功"); |
| | | } |
| | | /** |
| | | * 灯杆恢复出厂设置日志记录开始 |
| | | */ |
| | | String content = "{灯杆ID:" + id + " }"; |
| | | StoreOperationRecordsUtils.storeOperationData(null, null, "灯杆恢复出厂设置", content); |
| | | /** |
| | | * 灯杆恢复出厂设置日志记录结束 |
| | | */ |
| | | return b; |
| | | } |
| | | |
| | |
| | | boolean setMac = false; |
| | | //String baseMac = "baseDevice"; |
| | | A1Frame a1Frame = new A1Frame(A1OrderEnum.REQUEST_READ_DEVICE_UNIQUE_MAC.getCode(), new EmptyRequestInnerFrame()); |
| | | CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance() |
| | | .sendRRPC(baseMac, a1Frame); |
| | | CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(baseMac, a1Frame); |
| | | if (commonFrame == null) { |
| | | throw new BusinessException("读取设备唯一ID失败"); |
| | | } |
| | |
| | | log.info(deviceDetail.toString()); |
| | | |
| | | // 4 配置Mac① |
| | | WrapResponseCommonFrame<A1TernaryCodeRespInnerFrame> productKeyResp = MainBoardInvokeSyncService.getInstance() |
| | | .sendRRPC(baseMac, |
| | | FrameBuilder.builderA1().innerFrame(new A1TernaryCodeReqInnerFrame(MainBoardInvokeSyncService.getInstance().getProductKey())) |
| | | .orderType(A1OrderEnum.REQUEST_SET_PRODUCT_KEY.getCode()).build(), |
| | | A1TernaryCodeRespInnerFrame.class); |
| | | WrapResponseCommonFrame<A1TernaryCodeRespInnerFrame> productKeyResp = MainBoardInvokeSyncService.getInstance().sendRRPC(baseMac, FrameBuilder.builderA1().innerFrame(new A1TernaryCodeReqInnerFrame(MainBoardInvokeSyncService.getInstance().getProductKey())).orderType(A1OrderEnum.REQUEST_SET_PRODUCT_KEY.getCode()).build(), A1TernaryCodeRespInnerFrame.class); |
| | | A1TernaryCodeRespInnerFrame responseInnerFrame = productKeyResp.getResponseInnerFrame(); |
| | | if (!MainBoardInvokeSyncService.getInstance().getProductKey().equals(responseInnerFrame.getTernaryCode())) { |
| | | throw new BusinessException("设备配置ProductKey失败"); |
| | | } |
| | | |
| | | // 5 配置Mac② |
| | | WrapResponseCommonFrame<A1TernaryCodeRespInnerFrame> responseCommonFrame = MainBoardInvokeSyncService.getInstance() |
| | | .sendRRPC(baseMac, |
| | | FrameBuilder.builderA1().innerFrame(new A1TernaryCodeReqInnerFrame(uniqueMac)) |
| | | .orderType(A1OrderEnum.REQUEST_SET_DEVICE_NAME.getCode()).build(), |
| | | A1TernaryCodeRespInnerFrame.class); |
| | | WrapResponseCommonFrame<A1TernaryCodeRespInnerFrame> responseCommonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(baseMac, FrameBuilder.builderA1().innerFrame(new A1TernaryCodeReqInnerFrame(uniqueMac)).orderType(A1OrderEnum.REQUEST_SET_DEVICE_NAME.getCode()).build(), A1TernaryCodeRespInnerFrame.class); |
| | | A1TernaryCodeRespInnerFrame deviceNameFrame = responseCommonFrame.getResponseInnerFrame(); |
| | | if (!uniqueMac.equals(deviceNameFrame.getTernaryCode())) { |
| | | throw new BusinessException("设备配置名失败"); |
| | | } |
| | | |
| | | // 6 配置Mac③ |
| | | WrapResponseCommonFrame<A1TernaryCodeRespInnerFrame> wrapResponseCommonFrame = MainBoardInvokeSyncService.getInstance() |
| | | .sendRRPC(baseMac, |
| | | FrameBuilder.builderA1().innerFrame(new A1TernaryCodeReqInnerFrame(deviceDetail.getDeviceSecret())) |
| | | .orderType(A1OrderEnum.REQUEST_SET_DEVICE_SECRET.getCode()).build(), |
| | | A1TernaryCodeRespInnerFrame.class); |
| | | WrapResponseCommonFrame<A1TernaryCodeRespInnerFrame> wrapResponseCommonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(baseMac, FrameBuilder.builderA1().innerFrame(new A1TernaryCodeReqInnerFrame(deviceDetail.getDeviceSecret())).orderType(A1OrderEnum.REQUEST_SET_DEVICE_SECRET.getCode()).build(), A1TernaryCodeRespInnerFrame.class); |
| | | A1TernaryCodeRespInnerFrame deviceSecretFrame = wrapResponseCommonFrame.getResponseInnerFrame(); |
| | | if (!deviceDetail.getDeviceSecret().equals(deviceSecretFrame.getTernaryCode())) { |
| | | throw new BusinessException("设备密钥失败"); |
| | |
| | | |
| | | |
| | | // 7 重启设备 并使用新的Mac |
| | | CommonFrame rebootFrame = MainBoardInvokeSyncService.getInstance() |
| | | .sendRRPC(baseMac, |
| | | FrameBuilder.builderA2().innerFrame(new EmptyRequestInnerFrame()) |
| | | .orderType(A2OrderEnum.REQUEST_MAIN_BOARD_RESET.getCode()).build()); |
| | | CommonFrame rebootFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(baseMac, FrameBuilder.builderA2().innerFrame(new EmptyRequestInnerFrame()).orderType(A2OrderEnum.REQUEST_MAIN_BOARD_RESET.getCode()).build()); |
| | | if ("00".equals(rebootFrame.getPayload())) { |
| | | // pole.setDeviceCode(uniqueMac); |
| | | |
| | |
| | | System.out.println("重启成功"); |
| | | } |
| | | |
| | | Pole pole = new Pole(); |
| | | |
| | | Pole pole = getOne(Wrappers.lambdaQuery(Pole.class).eq(Pole::getDeviceCode, uniqueMac)); |
| | | if (pole == null) { |
| | | pole = new Pole(); |
| | | } |
| | | /* String type = uniqueMac.substring(uniqueMac.length() - 2, uniqueMac.length()); |
| | | String Code = uniqueMac.substring(0, uniqueMac.length() - 2);*/ |
| | | pole.setDeviceCode(uniqueMac); |
| | |
| | | } |
| | | |
| | | pole.setPoleCode(generatePoleCode()); |
| | | Pole one = getOne(Wrappers.lambdaQuery(Pole.class).eq(Pole::getDeviceCode, uniqueMac)); |
| | | // setMac = save(pole); |
| | | if (one == null) { |
| | | return save(pole); |
| | | } else { |
| | | pole.setId(one.getId()); |
| | | return updateById(pole); |
| | | } |
| | | |
| | | boolean result = saveOrUpdate(pole); |
| | | |
| | | /** |
| | | * 实体灯杆注册日志记录开始 |
| | | */ |
| | | String content = "{灯杆ID:" + pole.getId() + ",灯杆编号:" + pole.getPoleCode() + ",灯杆名称:" + pole.getPoleName() + ",灯杆类型:" + pole.getDeviceType() + ",灯杆MAC:" + pole.getDeviceCode() + " }"; |
| | | StoreOperationRecordsUtils.storeOperationData(null, null, "实体灯杆注册", content); |
| | | /** |
| | | * 实体灯杆注册日志记录结束 |
| | | */ |
| | | |
| | | return result; |
| | | } |
| | | |
| | | public List<String> listDeviceCodeByIds(List<Long> poleIdList) { |
| | |
| | | return null; |
| | | } |
| | | List<Pole> list = list(Wrappers.lambdaQuery(Pole.class).in(Pole::getId, poleIdList).select(Pole::getDeviceCode)); |
| | | return list |
| | | .stream().filter(Objects::nonNull).map(Pole::getDeviceCode).filter(StrUtil::isNotEmpty).collect(Collectors.toList()); |
| | | return list.stream().filter(Objects::nonNull).map(Pole::getDeviceCode).filter(StrUtil::isNotEmpty).collect(Collectors.toList()); |
| | | } |
| | | |
| | | /** |
| | |
| | | eq = Wrappers.lambdaQuery(Pole.class).eq(Pole::getUserId, cilentId); |
| | | } else { |
| | | PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); |
| | | eq = Wrappers.lambdaQuery(Pole.class).eq(Pole::getClientId, cilentId) |
| | | .or( |
| | | pole -> { |
| | | pole.eq(Pole::getUserId, cilentId); |
| | | } |
| | | ); |
| | | eq = Wrappers.lambdaQuery(Pole.class).eq(Pole::getClientId, cilentId).or(pole -> { |
| | | pole.eq(Pole::getUserId, cilentId); |
| | | }); |
| | | } |
| | | |
| | | // }else { |
| | |
| | | // } |
| | | PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); |
| | | if (!keyword.isEmpty()) { |
| | | eq.like(Pole::getPoleName, keyword).or( |
| | | code -> { |
| | | code.like(Pole::getPoleCode, keyword); |
| | | } |
| | | ).or( |
| | | deviceCode -> { |
| | | deviceCode.like(Pole::getDeviceCode, keyword); |
| | | } |
| | | ); |
| | | eq.like(Pole::getPoleName, keyword).or(code -> { |
| | | code.like(Pole::getPoleCode, keyword); |
| | | }).or(deviceCode -> { |
| | | deviceCode.like(Pole::getDeviceCode, keyword); |
| | | }); |
| | | } |
| | | List<Pole> list; |
| | | list = list(eq); |