| package com.ruoyi.device.hiksdk.util.hikSdkUtil; | 
|   | 
| import com.ruoyi.alarm.global.domain.GuidePriorityQueue; | 
| import com.ruoyi.alarm.global.domain.GuideTask; | 
| import com.ruoyi.common.utils.spring.SpringUtils; | 
| import com.ruoyi.device.camera.domain.ArdCameras; | 
| import com.ruoyi.device.camera.service.IArdCamerasService; | 
| import com.ruoyi.device.hiksdk.common.GlobalVariable; | 
| import com.sun.jna.Pointer; | 
| import lombok.extern.slf4j.Slf4j; | 
|   | 
| import java.util.Comparator; | 
| import java.util.concurrent.PriorityBlockingQueue; | 
|   | 
| /** | 
|  * @Description: 异步登录回调 | 
|  * @ClassName: FLoginResultCallBack | 
|  * @Author: 刘苏义 | 
|  * @Date: 2023年06月12日13:34 | 
|  * @Version: 1.0 | 
|  **/ | 
| @Slf4j(topic = "hikSdk") | 
| public class LoginResultCallBack implements HCNetSDK.FLoginResultCallBack { | 
|   | 
|     private ArdCameras camera; | 
|   | 
|     public LoginResultCallBack(ArdCameras camera) { | 
|         this.camera = camera; | 
|     } | 
|   | 
|     @Override | 
|     public int invoke(int lUserID, int dwResult, HCNetSDK.NET_DVR_DEVICEINFO_V30 lpDeviceinfo, Pointer pUser) { | 
|         if (GlobalVariable.loginMap.containsKey(camera.getId())) { | 
|             GlobalVariable.loginMap.remove(camera.getId()); | 
|         } | 
|         if (dwResult == 1) { | 
|             GlobalVariable.loginMap.put(camera.getId(), lUserID); | 
|             log.debug(camera.getIp() + ":" + camera.getPort() + "登录成功"); | 
|             camera.setLoginId(lUserID); | 
|             camera.setChannel((int) lpDeviceinfo.byChanNum); | 
|             //创建引导队列 | 
|             Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator(); | 
|             PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000,comparator); | 
|             GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue); | 
|         } else { | 
|             log.debug(camera.getIp() + ":" + camera.getPort() + "登录失败"); | 
|             camera.setChannel(0); | 
|             camera.setLoginId(-1); | 
|         } | 
|         IArdCamerasService ardCamerasService = SpringUtils.getBean(IArdCamerasService.class); | 
|         ardCamerasService.updateArdCameras(camera); | 
|         return 1; | 
|     } | 
| } |