‘liusuyi’
2023-08-10 ad89fdba09b8f0596ed41c5b31de6f34fe1ce620
src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java
@@ -32,7 +32,7 @@
 * @Date: 2023年02月15日 12:16
 * @Version: 1.0
 **/
@Slf4j(topic = "hiksdk")
@Slf4j(topic = "hikSdk")
public class FMSGCallBack implements HCNetSDK.FMSGCallBack_V31 {
    /**
@@ -52,16 +52,21 @@
        CameraEventInfo info;
        String sTime;//事件时间
        String url = "";//事件图片
        Boolean isSnapPic=true;
        //lCommand是传的报警类型
        log.debug("报警事件类型:lCommand:" + Integer.toHexString(lCommand));
        switch (lCommand) {
            case HCNetSDK.COMM_ALARM_V30:
                log.debug("移动侦测、视频丢失、遮挡、IO信号量等报警信息(暂不解析)");
            case HCNetSDK.COMM_ALARM_RULE:
                log.debug("行为分析信息报警信息上报");
                //region 行为分析信息
                ArdCameras ardCameras = new ArdCameras();
                ardCameras.setIp(sDeviceIP);
                ardCameras.setPort(wLinkPort);
                IArdCamerasService ardCamerasService = SpringTool.getApplicationContext().getBean(IArdCamerasService.class);
                ArdCameras ardcamere = ardCamerasService.selectArdCamerasList(ardCameras).get(0);
                log.debug("报警事件类型:lCommand:" + Integer.toHexString(lCommand));
                HCNetSDK.NET_VCA_RULE_ALARM strVcaAlarm = new HCNetSDK.NET_VCA_RULE_ALARM();
                strVcaAlarm.write();
                Pointer pVCAInfo = strVcaAlarm.getPointer();
@@ -129,24 +134,27 @@
                        //endregion
                        break;
                    default:
                        log.debug("未知行为事件类型:" + strVcaAlarm.struRuleInfo.wEventTypeEx);
                        printLog(info);
                       // log.debug("未知行为事件类型:" + strVcaAlarm.struRuleInfo.wEventTypeEx);
                        isSnapPic=false;
                        break;
                }
                //endregion
                //图片存入minio
                url = savePicture(info);
                info.setPicUrl(url);
                publishMqtt(info);
                if(isSnapPic) {
                    url = savePicture(info);
                    info.setPicUrl(url);
                    publishMqtt(info);
                }
                break;
            case HCNetSDK.COMM_UPLOAD_FACESNAP_RESULT:
                log.debug("人脸检测事件上报");
                log.debug("人脸检测事件上报(暂不解析)");
                break;
            case HCNetSDK.COMM_GISINFO_UPLOAD:
                log.debug("GPS报警信息上报");
                log.debug("GPS报警信息上报(暂不解析)");
                break;
            case HCNetSDK.COMM_ALARMHOST_CID_ALARM:
                log.debug("报警主机 CID 报告报警上传");
                log.debug("报警主机CID报告报警上报");
                //region 报警主机报警处理
                ArdEquipExternal ardEquipExternal = new ArdEquipExternal();
                ardEquipExternal.setIp(sDeviceIP);
@@ -245,8 +253,10 @@
                acsInfo.write(0, pAlarmInfo.getByteArray(0, strACSInfo.size()), 0, strACSInfo.size());
                strACSInfo.read();
                int dwMajor = strACSInfo.dwMajor;
                if (dwMajor != 5) {
                    //只获取事件
                    log.debug("非事件报警数据上报(暂不解析)");
                    break;
                }
                int dwMinor = strACSInfo.dwMinor;
@@ -347,7 +357,7 @@
                //endregion
                break;
            default:
                log.info("未知报警事件类型:lCommand:" + Integer.toHexString(lCommand));
                log.debug("未知报警事件类型:lCommand:" + Integer.toHexString(lCommand));
                break;
        }
@@ -395,6 +405,10 @@
    private String savePicture(CameraEventInfo info) {
        CameraCmd cmd = new CameraCmd();
        ArdCameras Cameras = GlobalVariable.cameraMap.get(info.getCameraIp());
        if(Cameras==null)
        {
            return "";
        }
        cmd.setCameraId(Cameras.getId());
        cmd.setChannelNum(info.getCameraChannel());
        cmd.setBucketName("pic");
@@ -409,7 +423,7 @@
     * 打印通用光电日志
     */
    private void printLog(CameraEventInfo info) {
        log.info("【规则】" + info.getAlarmName() + "【规则id】" + info.getRuleId() + "【类型】" + info.getAlarmType() +
        log.debug("【规则】" + info.getAlarmName() + "【规则id】" + info.getRuleId() + "【类型】" + info.getAlarmType() +
                "【时间】" + info.getAlarmTime() + "【相机id】" + info.getCameraId() + "【相机】" + info.getCameraName() +
                "【IP】" + info.getCameraIp() + "【通道】" + info.getCameraChannel() + "【型号】" + info.getCameraType() +
                "【图片】" + info.getPicUrl() + "【坐标】" + info.getLongitude() + "," + info.getLatitude());