|
@@ -1,40 +1,32 @@
|
|
|
package com.ruoyi.web.hksdk;
|
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
-import cn.hutool.core.thread.ThreadUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import cn.hutool.extra.spring.SpringUtil;
|
|
|
import cn.hutool.http.HttpUtil;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
-import com.ruoyi.server.IReciveDataService;
|
|
|
-import com.ruoyi.server.ReciveDataService;
|
|
|
+import com.ruoyi.web.component.CaputreSetting;
|
|
|
import com.ruoyi.web.component.InterfaceUrl;
|
|
|
-import com.ruoyi.web.controller.TestController;
|
|
|
-import com.ruoyi.web.service.InterfaceService;
|
|
|
import com.ruoyi.web.service.ReqBO;
|
|
|
import com.sun.jna.Pointer;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.core.annotation.Order;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.nio.ByteBuffer;
|
|
|
-import java.time.LocalDateTime;
|
|
|
-import java.time.ZoneId;
|
|
|
-import java.time.ZoneOffset;
|
|
|
-import java.time.ZonedDateTime;
|
|
|
-import java.time.format.DateTimeFormatter;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.UUID;
|
|
|
+import java.time.*;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
@Component
|
|
|
@Slf4j
|
|
|
@Order(value = 999)
|
|
|
public class MessageCallBack implements HCNetSDK.FMSGCallBack_V31 {
|
|
|
|
|
|
-
|
|
|
-
|
|
|
+ @Resource
|
|
|
+ private CaputreSetting caputreSetting;
|
|
|
+ @Resource
|
|
|
+ private InterfaceUrl interfaceUrl;
|
|
|
|
|
|
@Override
|
|
|
public boolean invoke(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) {
|
|
@@ -48,9 +40,7 @@ public class MessageCallBack implements HCNetSDK.FMSGCallBack_V31 {
|
|
|
sIP = new String(pAlarmer.sDeviceIP).split("\0", 2);
|
|
|
//报警设备ip
|
|
|
String ip = sIP[0];
|
|
|
- String eventTime = DateUtil.now();
|
|
|
String employeeId = null;
|
|
|
-
|
|
|
Byte cardType = null;
|
|
|
|
|
|
HCNetSDK.NET_DVR_ACS_ALARM_INFO strACSInfo = new HCNetSDK.NET_DVR_ACS_ALARM_INFO();
|
|
@@ -62,6 +52,7 @@ public class MessageCallBack implements HCNetSDK.FMSGCallBack_V31 {
|
|
|
if (strACSInfo.dwMajor != 5) {
|
|
|
return;
|
|
|
}
|
|
|
+ /*
|
|
|
byte timeType = strACSInfo.byTimeType;
|
|
|
HCNetSDK.NET_DVR_TIME struTime = strACSInfo.struTime;
|
|
|
LocalDateTime uplaodTime = LocalDateTime.of(struTime.dwYear, struTime.dwMonth, struTime.dwDay, struTime.dwHour, struTime.dwMinute, struTime.dwSecond);
|
|
@@ -73,9 +64,7 @@ public class MessageCallBack implements HCNetSDK.FMSGCallBack_V31 {
|
|
|
eventTime = zonedDateTime.format(fmt);
|
|
|
} else {
|
|
|
log.info("上报时间不正确");
|
|
|
- }
|
|
|
- log.info("刷卡时间eventTime="+eventTime);
|
|
|
-
|
|
|
+ }*/
|
|
|
|
|
|
// cardNo = new String(strACSInfo.struAcsEventInfo.byCardNo).trim();
|
|
|
cardType = strACSInfo.struAcsEventInfo.byCardType;
|
|
@@ -94,8 +83,11 @@ public class MessageCallBack implements HCNetSDK.FMSGCallBack_V31 {
|
|
|
log.info("员工employeeId="+employeeId);
|
|
|
|
|
|
HkAdapter hkAdapter = SpringUtil.getBean(HkAdapter.class);
|
|
|
- String name = hkAdapter.eventUserInfo(employeeId);
|
|
|
+ Map<String, String> map = hkAdapter.eventUserInfo(employeeId);
|
|
|
+ String name = map.get("name");
|
|
|
log.info("员工姓名name="+name);
|
|
|
+ String roomNumber = map.get("roomNumber");
|
|
|
+ log.info("房间号="+roomNumber);
|
|
|
|
|
|
if (strACSInfo.dwPicDataLen > 0) {
|
|
|
long offset = 0;
|
|
@@ -106,10 +98,14 @@ public class MessageCallBack implements HCNetSDK.FMSGCallBack_V31 {
|
|
|
log.info("有图片");
|
|
|
}
|
|
|
String cardNo = employeeId;
|
|
|
+ String eventTime = DateUtil.now();
|
|
|
+ log.info("刷卡时间eventTime="+eventTime);
|
|
|
//密码认证通过
|
|
|
if (strACSInfo.dwMinor == 181) {
|
|
|
log.info("密码认证通过============dwMinor============"+strACSInfo.dwMinor);
|
|
|
- req(cardNo, name, eventTime);
|
|
|
+ if(StrUtil.equals(roomNumber,"1")) {//房间1即为编内人员,需发往总关
|
|
|
+ req(cardNo, name, eventTime);
|
|
|
+ }
|
|
|
}
|
|
|
//密码认证失败
|
|
|
else if (strACSInfo.dwMinor == 151) {
|
|
@@ -118,7 +114,9 @@ public class MessageCallBack implements HCNetSDK.FMSGCallBack_V31 {
|
|
|
//刷脸成功
|
|
|
else if (strACSInfo.dwMinor == 75) {
|
|
|
log.info("刷脸成功============dwMinor============"+strACSInfo.dwMinor);
|
|
|
- req(cardNo, name, eventTime);
|
|
|
+ if(StrUtil.equals(roomNumber,"1")) {//房间1即为编内人员,需发往总关
|
|
|
+ req(cardNo, name, eventTime);
|
|
|
+ }
|
|
|
}
|
|
|
//刷脸失败
|
|
|
else if (strACSInfo.dwMinor == 76) {
|
|
@@ -138,18 +136,40 @@ public class MessageCallBack implements HCNetSDK.FMSGCallBack_V31 {
|
|
|
}
|
|
|
else {
|
|
|
log.info("(不是刷脸也不是密码打卡,打卡无效)dwMinor============"+strACSInfo.dwMinor);
|
|
|
- req(cardNo, name, eventTime);
|
|
|
+ if(StrUtil.equals(roomNumber,"1")) {//房间1即为编内人员,需发往总关
|
|
|
+ req(cardNo, name, eventTime);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
public void req(String cardNo, String name, String eventTime) {
|
|
|
if (StrUtil.isEmpty(name)||StrUtil.isEmpty(cardNo)){
|
|
|
log.error("数据获取异常:{},{}",cardNo,name);
|
|
|
return;
|
|
|
}
|
|
|
- ReqBO reqBO = new ReqBO();
|
|
|
- reqBO.setCarNo(cardNo).setReqTime(eventTime).setName(name);
|
|
|
- log.info("reqBO:{}",JSONUtil.toJsonStr(reqBO));
|
|
|
- String resp = HttpUtil.post("http://127.0.0.1:9090/api/req", JSONUtil.toJsonStr(reqBO));
|
|
|
- log.info("resp:{}",resp);
|
|
|
+
|
|
|
+ String start = caputreSetting.getStarttime();
|
|
|
+ String[] startArr = start.split(":");
|
|
|
+ int startHour = Integer.parseInt(startArr[0]);
|
|
|
+ int startMinute = Integer.parseInt(startArr[1]);
|
|
|
+
|
|
|
+ String end = caputreSetting.getEndtime();
|
|
|
+ String[] endArr = end.split(":");
|
|
|
+ int endHour = Integer.parseInt(endArr[0]);
|
|
|
+ int endMinute = Integer.parseInt(endArr[1]);
|
|
|
+
|
|
|
+ LocalTime nowTime = LocalTime.now();
|
|
|
+ LocalTime startTime = LocalTime.of(startHour, startMinute);
|
|
|
+ LocalTime endTime = LocalTime.of(endHour, endMinute);
|
|
|
+
|
|
|
+ if(nowTime.isBefore(startTime) || nowTime.isAfter(endTime)) {
|
|
|
+ ReqBO reqBO = new ReqBO();
|
|
|
+ reqBO.setCarNo(cardNo).setReqTime(eventTime).setName(name);
|
|
|
+ log.info("reqBO:{}",JSONUtil.toJsonStr(reqBO));
|
|
|
+ String apiUrl = interfaceUrl.getApiUrl();
|
|
|
+ String resp = HttpUtil.post(apiUrl, JSONUtil.toJsonStr(reqBO));
|
|
|
+ log.info("resp:{}",resp);
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
}
|