|
|
|
@@ -8,10 +8,11 @@ import lombok.RequiredArgsConstructor;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
|
|
import org.dromara.property.api.RemoteFloorService;
|
|
|
|
|
import org.dromara.property.api.domain.vo.RemoteFloorVo;
|
|
|
|
|
import org.dromara.sis.domain.vo.*;
|
|
|
|
|
import org.dromara.sis.producer.CleanLiftAuthRocketProducer;
|
|
|
|
|
import org.dromara.sis.sdk.e8.E8PlatformApi;
|
|
|
|
|
import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq;
|
|
|
|
|
import org.dromara.sis.sdk.hik.HikApiService;
|
|
|
|
|
import org.dromara.sis.sdk.huawei.HuaWeiBoxApi;
|
|
|
|
|
import org.dromara.sis.sdk.huawei.domain.HWResult;
|
|
|
|
|
import org.dromara.sis.service.*;
|
|
|
|
@@ -42,6 +43,8 @@ public class ZeroSensationPassageServiceImpl implements IZeroSensationPassageSer
|
|
|
|
|
private final E8PlatformApi e8PlatformApi;
|
|
|
|
|
private final ISisAlarmEventsService alarmEventsService;
|
|
|
|
|
|
|
|
|
|
private final CleanLiftAuthRocketProducer cleanLiftAuthRocketProducer;
|
|
|
|
|
|
|
|
|
|
@DubboReference
|
|
|
|
|
private RemoteFloorService remoteFloorService;
|
|
|
|
|
|
|
|
|
@@ -102,9 +105,9 @@ public class ZeroSensationPassageServiceImpl implements IZeroSensationPassageSer
|
|
|
|
|
if (item.getControlType() == 1) { // 门禁
|
|
|
|
|
handleAc(item.getDeviceId());
|
|
|
|
|
} else if (item.getControlType() == 2) { // 电梯外面面板权限
|
|
|
|
|
handleEle(item.getDeviceId(), r.getAuthGroupId(), 2);
|
|
|
|
|
handleEle(item.getDeviceId(), r.getAuthGroupId(), 2, item.getDeviceFloorId());
|
|
|
|
|
} else if (item.getControlType() == 3) { // 电梯里面的面板
|
|
|
|
|
handleEle(item.getDeviceId(), r.getAuthGroupId(), 3);
|
|
|
|
|
handleEle(item.getDeviceId(), r.getAuthGroupId(), 3, item.getDeviceFloorId());
|
|
|
|
|
} else {
|
|
|
|
|
log.info("设备绑定了未知的控制类型[{}],不处理", item.getControlType());
|
|
|
|
|
}
|
|
|
|
@@ -140,21 +143,32 @@ public class ZeroSensationPassageServiceImpl implements IZeroSensationPassageSer
|
|
|
|
|
/**
|
|
|
|
|
* 验证电梯权限
|
|
|
|
|
*/
|
|
|
|
|
public void handleEle(Long deviceId, Long groupId, Integer controlType) {
|
|
|
|
|
log.info("开始下发梯控权限....");
|
|
|
|
|
// 获取电梯信息
|
|
|
|
|
// 获取电梯信息
|
|
|
|
|
public void handleEle(Long deviceId, Long groupId, Integer controlType, Long deviceFloorId) {
|
|
|
|
|
|
|
|
|
|
// 获取当前电梯信息
|
|
|
|
|
SisElevatorInfoVo ele = elevatorInfoService.queryById(deviceId);
|
|
|
|
|
// 根据单元ID获取楼层信息
|
|
|
|
|
List<RemoteFloorVo> floorInfo = remoteFloorService.queryByBuildingId(ele.getBuildingId());
|
|
|
|
|
// 获取电梯⇄楼层关联信息
|
|
|
|
|
List<SisElevatorFloorRefVo> floorRefList = elevatorFloorRefService.queryByAuthGroupId(groupId);
|
|
|
|
|
|
|
|
|
|
for (SisElevatorFloorRefVo sisElevatorFloorRefVo : floorRefList) {
|
|
|
|
|
//todo 下发梯控权限
|
|
|
|
|
// HikApiService.getInstance().controlGateway(ele.getControlIp(), sisElevatorFloorRefVo.getFloorId(), 2);
|
|
|
|
|
// 获取权限组下电梯⇄楼层关联信息
|
|
|
|
|
List<SisElevatorFloorRefVo> groupRef = elevatorFloorRefService.queryByAuthGroupId(groupId);
|
|
|
|
|
|
|
|
|
|
// 取出当前电梯的楼层授权信息
|
|
|
|
|
List<SisElevatorFloorRefVo> eleRef = groupRef.stream().filter(o -> Objects.equals(o.getElevatorId(), deviceId)).toList();
|
|
|
|
|
|
|
|
|
|
for (SisElevatorFloorRefVo ref : eleRef){
|
|
|
|
|
if (controlType == 2){
|
|
|
|
|
log.info("开始下发外面版梯控权限....");
|
|
|
|
|
if (ref.getOutChannel() != null && Objects.equals(ref.getFloorId(), deviceFloorId)) {
|
|
|
|
|
HikApiService.getInstance().controlGateway(ele.getControlIp(), ref.getOutChannel().intValue(), 2);
|
|
|
|
|
}
|
|
|
|
|
}else {
|
|
|
|
|
log.info("开始下发里面版梯控权限....");
|
|
|
|
|
if (ref.getInChannel() != null && Objects.equals(ref.getFloorId(), deviceFloorId)) {
|
|
|
|
|
HikApiService.getInstance().controlGateway(ele.getControlIp(), ref.getInChannel().intValue(), 2);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
log.info("梯控下发权限完成");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cleanLiftAuthRocketProducer.sendMessage(deviceId, groupId, deviceFloorId, "清除电梯" + deviceId + "梯控权限", 3);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|