package com.sincere.haikangface.utils; import com.sincere.haikangface.bean.FaceWaterRecoder; import com.sincere.haikangface.dao.DeviceDao; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import java.text.SimpleDateFormat; import java.util.Date; /** * 报警事件处理 */ public class AlarmUtils { private static AlarmUtils alarmUtils; private DeviceDao deviceDao; private AlarmCallBack alarmCallBack; // public static AlarmUtils getInstance(DeviceDao deviceDao) { // if (alarmUtils == null) { // synchronized (AlarmUtils.class) { // if (null == alarmUtils) alarmUtils = new AlarmUtils(deviceDao); // } // } // return alarmUtils; // } public AlarmUtils(DeviceDao deviceDao) { this.deviceDao = deviceDao; } public void setCallBack(AlarmCallBack alarmCallBack) { this.alarmCallBack = alarmCallBack; } public interface AlarmCallBack { void callBack(String minorType, String deviceID, String cardNo, String time, String picDataUrlId); } public void deleAlarm(String strXML) { if (strXML.contains("FACESNAPREPORT")) {//人脸抓拍机器 } else {//人脸识别 //主类型 String majirType = strXML.substring(strXML.indexOf("MajorType"), strXML.lastIndexOf("MajorType")).trim(); majirType = majirType.replace("MajorType>", ""); majirType = majirType.replace("", ""); minorType = minorType.replace("", ""); cardNo = cardNo.replace("", ""); deviceID = deviceID.replace("", ""); time = time.replace("", ""); picDataUrl = picDataUrl.replace("1) { String picDataUrlId = picDataUrl.split("id=")[1]; FileUtils.getInstance().writeLogs("0x4bdeviceID:" + deviceID + " cardNo:" + cardNo + " time:" + time + " picDataUrlId:" + picDataUrlId, FileUtils.faceSuccess); content = "人脸认证通过"; if (null != alarmCallBack) alarmCallBack.callBack(minorType, deviceID, cardNo, time, picDataUrlId); } break; case "0x4c"://人脸认证失败 content = "人脸认证失败"; break; case "0x50"://人脸不存在 content = "人脸不存在"; break; case "0x68"://真人检测失败 content = "真人检测失败"; break; case "0x69"://人证比对通过 if (!StringUtils.isEmpty(picDataUrl)&&picDataUrl.split("id=").length>1) { String picDataUrlId = picDataUrl.split("id=")[1]; FileUtils.getInstance().writeLogs("0x69deviceID:" + deviceID + " cardNo:" + cardNo + " time:" + time + " picDataUrlId:" + picDataUrlId, FileUtils.faceSuccess); content = "人脸认证通过"; if (null != alarmCallBack) alarmCallBack.callBack(minorType, deviceID, cardNo, time, picDataUrlId); } break; case "0x70"://认证比对失败 FileUtils.getInstance().writeLogs("deviceID:" + deviceID + " cardNo:" + cardNo + " time:" + time, FileUtils.faceFail); break; } saveWater(content, minorType, deviceID, cardNo, time, "0x05"); } /** * 操作次类型 * * @param minorType * @param deviceID * @param time */ private void caozuo(String minorType, String deviceID, String time) { String content = ""; switch (minorType) { case "0x70"://远程登录 content = "远程登录"; break; case "0x71"://远程注销登录 content = "远程注销登录"; break; case "0x7b"://远程重启 content = "远程重启"; break; case "0x400"://远程开门 content = "远程开门"; break; case "0x401"://远程关门 content = "远程关门"; break; case "0x404"://远程手动校时 content = "远程手动校时"; break; case "0x406"://远程清空卡号 content = "远程清空卡号"; break; case "0x40b"://远程抓拍 content = "远程抓拍"; break; } saveWater(content, minorType, deviceID, "", time, "0x03"); } /** * 异常次类型 * * @param minorType * @param deviceID * @param time */ private void yichang(String minorType, String deviceID, String time) { String content = ""; switch (minorType) { case "0x3a"://网络断开 content = "网络断开"; break; case "0x400"://设备上电启动 content = "设备上电启动"; break; case "0x401"://设备掉电关闭 content = "设备掉电关闭"; break; case "0x403"://蓄电池电压低 content = "蓄电池电压低"; break; case "0x404"://蓄电池电压恢复正常 content = "蓄电池电压恢复正常"; break; case "0x405"://交流电断电 content = "交流电断电"; break; case "0x406"://交流电恢复 content = "交流电恢复"; break; case "0x407"://网络恢复 content = "网络恢复"; break; case "0x421"://摄像头未连接 content = "摄像头未连接"; break; case "0x422"://摄像头连接恢复 content = "摄像头连接恢复"; break; case "0x426"://人证设备在线 content = "人证设备在线"; if (null != alarmCallBack) alarmCallBack.callBack(minorType, deviceID, "", time, ""); break; case "0x427"://人证设备离线 content = "人证设备离线"; if (null != alarmCallBack) alarmCallBack.callBack(minorType, deviceID, "", time, ""); break; } saveWater(content, minorType, deviceID, "", time, "0x02"); } /** * 报警次类型 * * @param minorType * @param deviceID * @param time */ private void baojing(String minorType, String deviceID, String time) { switch (minorType) { case "0x413"://人脸图像画质低 break; case "0x40d"://SD卡存储满报警 break; case "0x40b"://离线事件满90%报警 break; } } /** * 存储流水记录 * * @param content * @param minorType * @param deviceID * @param cardNo * @param time * @param majorType */ private void saveWater(String content, String minorType, String deviceID, String cardNo, String time, String majorType) { FaceWaterRecoder faceWaterRecoder = new FaceWaterRecoder(); faceWaterRecoder.setContent(content); faceWaterRecoder.setDeviceId(deviceID); faceWaterRecoder.setDeviceType(18); faceWaterRecoder.setMajorType(majorType); faceWaterRecoder.setMinorType(minorType); faceWaterRecoder.setTime(time); faceWaterRecoder.setCardNo(cardNo); faceWaterRecoder.setSystime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); // System.out.println("deviceDao:" + deviceDao); // System.out.println("faceWaterRecoder:" + faceWaterRecoder); deviceDao.saveFaceWaterRecoder(faceWaterRecoder.getDeviceId(), faceWaterRecoder.getDeviceType() + "", faceWaterRecoder.getMinorType(), faceWaterRecoder.getContent(), faceWaterRecoder.getMajorType(), faceWaterRecoder.getTime(), faceWaterRecoder.getCardNo(), faceWaterRecoder.getSystime()); } }