refactor(sis): 开启海康抓拍上报,比对通过后,梯控下发权限功能
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run
This commit is contained in:
parent
c8e199e68e
commit
5028649266
@ -8,18 +8,14 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.dubbo.config.annotation.DubboReference;
|
import org.apache.dubbo.config.annotation.DubboReference;
|
||||||
import org.dromara.property.api.RemoteFloorService;
|
import org.dromara.property.api.RemoteFloorService;
|
||||||
import org.dromara.sis.domain.vo.SisAccessControlVo;
|
import org.dromara.property.api.domain.vo.RemoteFloorVo;
|
||||||
import org.dromara.sis.domain.vo.SisAuthGroupRefVo;
|
import org.dromara.sis.domain.vo.*;
|
||||||
import org.dromara.sis.domain.vo.SisAuthRecordVo;
|
|
||||||
import org.dromara.sis.domain.vo.SisDeviceBindRefVo;
|
|
||||||
import org.dromara.sis.sdk.e8.E8PlatformApi;
|
import org.dromara.sis.sdk.e8.E8PlatformApi;
|
||||||
import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq;
|
import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq;
|
||||||
import org.dromara.sis.sdk.hik.HCNetSDK;
|
import org.dromara.sis.sdk.hik.HCNetSDK;
|
||||||
|
import org.dromara.sis.sdk.hik.HikApiService;
|
||||||
import org.dromara.sis.sdk.huawei.HuaWeiBoxApi;
|
import org.dromara.sis.sdk.huawei.HuaWeiBoxApi;
|
||||||
import org.dromara.sis.service.ISisAccessControlService;
|
import org.dromara.sis.service.*;
|
||||||
import org.dromara.sis.service.ISisAuthGroupRefService;
|
|
||||||
import org.dromara.sis.service.ISisAuthRecordService;
|
|
||||||
import org.dromara.sis.service.ISisDeviceBindRefService;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
@ -30,6 +26,9 @@ import java.text.SimpleDateFormat;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
import static org.dromara.sis.sdk.hik.HCNetSDK.*;
|
import static org.dromara.sis.sdk.hik.HCNetSDK.*;
|
||||||
|
|
||||||
@ -40,9 +39,11 @@ public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 {
|
|||||||
|
|
||||||
private final HuaWeiBoxApi huaWeiBoxApi;
|
private final HuaWeiBoxApi huaWeiBoxApi;
|
||||||
private final ISisAuthRecordService authRecordService;
|
private final ISisAuthRecordService authRecordService;
|
||||||
|
private final ISisElevatorInfoService elevatorInfoService;
|
||||||
private final ISisAuthGroupRefService authGroupRefService;
|
private final ISisAuthGroupRefService authGroupRefService;
|
||||||
private final ISisDeviceBindRefService deviceBindRefService;
|
private final ISisDeviceBindRefService deviceBindRefService;
|
||||||
private final ISisAccessControlService accessControlService;
|
private final ISisAccessControlService accessControlService;
|
||||||
|
private final ISisElevatorFloorRefService elevatorFloorRefService;
|
||||||
private final E8PlatformApi e8PlatformApi;
|
private final E8PlatformApi e8PlatformApi;
|
||||||
|
|
||||||
@DubboReference
|
@DubboReference
|
||||||
@ -362,71 +363,61 @@ public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 授权记录
|
|
||||||
// List<SisAuthRecordVo> authVoList = authRecordService.checkAuth(person);
|
|
||||||
// 获取门禁id
|
|
||||||
// Collection<Long> acIds = authVoList.stream().filter(vo -> vo.getDeviceType() == 1).map(SisAuthRecordVo::getDeviceId).toList();
|
|
||||||
// if (CollUtil.isNotEmpty(acIds)) {
|
|
||||||
// acIds.forEach(id -> {
|
|
||||||
// Long deviceId = bindRefList.stream().filter(vo -> vo.getBindId().equals(id)).findFirst().map(SisDeviceBindRefVo::getDeviceId).orElse(null);
|
|
||||||
// SisAccessControlVo ac = accessControlService.queryById(deviceId);
|
|
||||||
// if (ac != null) {
|
|
||||||
// log.info("调用门禁服务远程开门,doorName:{}", ac.getAccessName());
|
|
||||||
// RemoteOpenDoorReq req = new RemoteOpenDoorReq();
|
|
||||||
// req.setType(0);
|
|
||||||
// RemoteOpenDoorReq.ControlData data = new RemoteOpenDoorReq.ControlData();
|
|
||||||
// data.setDeviceId(Long.parseLong(ac.getOutCode()));
|
|
||||||
// data.setDoorId(Long.parseLong(ac.getOutCode()));
|
|
||||||
// req.setControlList(List.of(data));
|
|
||||||
// Boolean flag = e8PlatformApi.remoteOpenDoor(req);
|
|
||||||
// log.info("远程开门结果,result={}", flag);
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
// 获取电梯ids
|
// 获取电梯ids
|
||||||
// Collection<Long> eleIds = authVoList.stream().filter(vo -> vo.getDeviceType() == 2).map(SisAuthRecordVo::getDeviceId).toList();
|
Collection<Long> eleIds = authGroupRefVos.stream().filter(vo -> vo.getDeviceType() == 2).map(SisAuthGroupRefVo::getDeviceId).toList();
|
||||||
// if (CollUtil.isNotEmpty(eleIds)) {
|
if (CollUtil.isNotEmpty(eleIds)) {
|
||||||
// eleIds.forEach(id -> {
|
|
||||||
// Long deviceId = bindRefList.stream().filter(vo -> vo.getBindId().equals(id)).findFirst().map(SisDeviceBindRefVo::getDeviceId).orElse(null);
|
// 创建线程池,处理关闭梯控
|
||||||
// SisElevatorInfoVo ele = elevatorInfoService.queryById(deviceId);
|
int optimalPoolSize = Runtime.getRuntime().availableProcessors() + 1;
|
||||||
// if (ele != null) {
|
ExecutorService executor = Executors.newFixedThreadPool(optimalPoolSize);
|
||||||
// log.info("下发电梯权限");
|
|
||||||
// // 根据单元ID获取楼层信息
|
eleIds.forEach(id -> {
|
||||||
// List<RemoteFloorVo> floorInfo = remoteFloorService.queryByUnitId(ele.getUnitId());
|
Long deviceId = bindRefList.stream().filter(vo -> vo.getBindId().equals(id) && vo.getControlType() != 1).findFirst().map(SisDeviceBindRefVo::getBindId).orElse(null);
|
||||||
// // 获取电梯⇄楼层关联信息
|
if (deviceId != null) {
|
||||||
// List<SisElevatorFloorRefVo> floorRefList = elevatorFloorRefService.queryByAuthGroupId(deviceId);
|
log.info("下发电梯权限");
|
||||||
// // 获取楼层数组
|
// 获取电梯信息
|
||||||
// List<Long> layerArray = floorInfo.stream().map(RemoteFloorVo::getId).sorted().toList();
|
SisElevatorInfoVo ele = elevatorInfoService.queryById(deviceId);
|
||||||
//
|
// 根据单元ID获取楼层信息
|
||||||
// layerArray.forEach(layer -> {
|
List<RemoteFloorVo> floorInfo = remoteFloorService.queryByUnitId(deviceId);
|
||||||
// SisElevatorFloorRefVo floorRef = floorRefList.stream()
|
// 获取电梯⇄楼层关联信息
|
||||||
// .filter(vo -> Objects.equals(vo.getFloorId(), layer)) // 直接使用 layer
|
List<SisElevatorFloorRefVo> floorRefList = elevatorFloorRefService.queryByAuthGroupId(authRecord.getGroupId());
|
||||||
// .findFirst()
|
// 获取楼层数组
|
||||||
// .orElse(null);
|
List<Long> layerArray = floorInfo.stream().map(RemoteFloorVo::getId).sorted().toList();
|
||||||
// if (floorRef == null) {
|
|
||||||
// HikApiService.getInstance().controlGateway(ele.getControlIp(), layer.intValue(), 3);
|
layerArray.forEach(layer -> {
|
||||||
// } else {
|
SisElevatorFloorRefVo floorRef = floorRefList.stream()
|
||||||
// HikApiService.getInstance().controlGateway(ele.getControlIp(), layer.intValue(), 2);
|
.filter(vo -> Objects.equals(vo.getFloorId(), layer)) // 直接使用 layer
|
||||||
// }
|
.findFirst()
|
||||||
// });
|
.orElse(null);
|
||||||
// }
|
if (floorRef == null) {
|
||||||
// });
|
HikApiService.getInstance().controlGateway(ele.getControlIp(), layer.intValue(), 3);
|
||||||
// }
|
} else {
|
||||||
|
HikApiService.getInstance().controlGateway(ele.getControlIp(), layer.intValue(), 2);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// todo 做延时队列,关闭梯控授权
|
||||||
|
// 提交任务到线程池
|
||||||
|
executor.execute(() -> {
|
||||||
|
try {
|
||||||
|
// 5秒后清除权限
|
||||||
|
Thread.sleep(5000L);
|
||||||
|
for (int i = 0; i < layerArray.size(); i++) {
|
||||||
|
HikApiService.getInstance().controlGateway(ele.getControlIp(), (i + 1), 3);
|
||||||
|
}
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 关闭线程池
|
||||||
|
executor.shutdown();
|
||||||
|
}
|
||||||
log.info("权限下发执行完成,耗时:{}", System.currentTimeMillis() - s);
|
log.info("权限下发执行完成,耗时:{}", System.currentTimeMillis() - s);
|
||||||
// todo 做延时队列,关闭梯控授权
|
|
||||||
|
|
||||||
|
|
||||||
// try {
|
|
||||||
// Thread.sleep(10000L);
|
|
||||||
// List<Integer> ass = Arrays.asList(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3);
|
|
||||||
// for (int i = 0; i < ass.size(); i++) {
|
|
||||||
// HikApiService.getInstance().controlGateway("192.168.24.188", (i + 1), ass.get(i));
|
|
||||||
// }
|
|
||||||
// } catch (InterruptedException e) {
|
|
||||||
// throw new RuntimeException(e);
|
|
||||||
// }
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user