| | |
| | | package com.sandu.ximon.admin.service; |
| | | |
| | | import cn.hutool.core.collection.CollectionUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.aliyuncs.iot.model.v20180120.BatchGetDeviceStateResponse; |
| | | import com.aliyuncs.iot.model.v20180120.QueryDeviceDetailResponse; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.sandu.common.execption.BusinessException; |
| | | import com.sandu.common.redis.RedisService; |
| | | import com.sandu.common.service.impl.BaseServiceImpl; |
| | | import com.sandu.ximon.admin.dto.DeviceStatus; |
| | | import com.sandu.ximon.admin.manager.iot.frame.A1Frame; |
| | | import com.sandu.ximon.admin.manager.iot.frame.FrameBuilder; |
| | | import com.sandu.ximon.admin.manager.iot.frame.IRequestFrame; |
| | |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.enums.A1OrderEnum; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.enums.A2OrderEnum; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5OrderEnum; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.enums.DeviceStateEnum; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.mainboard.MainBoardInvokeSyncService; |
| | | import com.sandu.ximon.admin.param.PoleBindingParam; |
| | | import com.sandu.ximon.admin.param.PoleParam; |
| | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 灯杆相关 |
| | |
| | | } |
| | | return setMac; |
| | | } |
| | | |
| | | public List<String> listDeviceCodeByIds(List<Long> poleIdList) { |
| | | if(CollectionUtil.isEmpty(poleIdList)){ |
| | | return null; |
| | | } |
| | | return list(Wrappers.lambdaQuery(Pole.class).in(Pole::getId, poleIdList).select(Pole::getDeviceCode)) |
| | | .stream().map(Pole::getDeviceCode).filter(StrUtil::isNotEmpty).collect(Collectors.toList()); |
| | | } |
| | | |
| | | /** |
| | | * 批量获取阿里云设备的状态 |
| | | * @param deviceCodeList 阿里云设备码 |
| | | * @return 设备状态列表 |
| | | */ |
| | | public List<DeviceStatus> listStatusByDeviceCode(ArrayList<String> deviceCodeList) { |
| | | // 最大只能查50个 |
| | | List<List<String>> split = CollectionUtil.split(deviceCodeList, 50); |
| | | List<DeviceStatus> statusList = new ArrayList<>(); |
| | | for (List<String> list : split) { |
| | | List<BatchGetDeviceStateResponse.DeviceStatus> deviceStatuses = MainBoardInvokeSyncService.getInstance().batchGetDeviceState(list); |
| | | if(CollectionUtil.isNotEmpty(deviceStatuses)){ |
| | | for (BatchGetDeviceStateResponse.DeviceStatus d : deviceStatuses) { |
| | | DeviceStatus deviceStatus = new DeviceStatus(); |
| | | deviceStatus.setDeviceCode(d.getDeviceName()); |
| | | deviceStatus.setStatus(DeviceStateEnum.getCode(d.getStatus())); |
| | | statusList.add(deviceStatus); |
| | | } |
| | | } |
| | | } |
| | | return statusList; |
| | | } |
| | | } |