Bladeren bron

代码更新

linbl 7 maanden geleden
bovenliggende
commit
7914f49a20

+ 5 - 0
src/main/java/com/ruoyi/web/component/CaputreSetting.java

@@ -17,4 +17,9 @@ public class CaputreSetting {
     private int brand;
     private String username;
     private String pwd;
+
+    //中午打卡开始时间
+    private String starttime;
+    //中午打卡结束时间
+    private String endtime;
 }

+ 2 - 0
src/main/java/com/ruoyi/web/component/InterfaceUrl.java

@@ -16,4 +16,6 @@ public class InterfaceUrl {
 
     private String appid;
     private String serverUrl;
+
+    private String apiUrl;
 }

+ 0 - 3
src/main/java/com/ruoyi/web/controller/TestController.java

@@ -1,21 +1,18 @@
 package com.ruoyi.web.controller;
 
 import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.thread.ThreadUtil;
 import cn.hutool.http.HttpResponse;
 import cn.hutool.http.HttpUtil;
 import cn.hutool.http.webservice.SoapClient;
 import cn.hutool.json.JSONUtil;
 import com.ruoyi.server.IReciveDataService;
 import com.ruoyi.server.ReciveDataService;
-import com.ruoyi.web.service.InterfaceService;
 import com.ruoyi.web.service.ReqBO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.annotation.Resource;
 import java.util.UUID;
 
 @RestController

+ 10 - 2
src/main/java/com/ruoyi/web/hksdk/HkAdapter.java

@@ -16,6 +16,8 @@ import org.springframework.util.ObjectUtils;
 
 import javax.annotation.Resource;
 import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
 
 @Component
 @Slf4j
@@ -31,7 +33,7 @@ public class HkAdapter {
     /**
      * 查询人员信息
      */
-    public String eventUserInfo(String equipmentNo) {
+    public Map<String,String> eventUserInfo(String equipmentNo) {
         log.info("---------------------查询人员信息---开始----------------------------");
         int userId= CacheManager.getUserId();
         //int userId = hkUtils.Login_V40(caputreSetting.getHost(), (short) caputreSetting.getPort(), caputreSetting.getUsername(), caputreSetting.getPwd(), hcNetSDK);
@@ -103,8 +105,14 @@ public class HkAdapter {
                         JsonNode userInfo = userInfoSearch.get("UserInfo");
                         JsonNode userInfoOne = userInfo.get(0);
                         JsonNode name = userInfoOne.get("name");
+                        JsonNode roomNumber = userInfoOne.get("roomNumber");
+                        JsonNode floorNumber = userInfoOne.get("floorNumber");
+                        Map<String,String> map = new HashMap<>();
+                        map.put("name",name.asText());
+                        map.put("roomNumber",roomNumber.asText());
+                        map.put("floorNumber",floorNumber.asText());
                         log.info("---------------------查询人员信息---结束1----------------------------");
-                        return name.asText();
+                        return map;
                     } catch (JsonProcessingException e) {
                         log.info("查询人员信息报错:{}",e.getMessage());
                         log.info("---------------------查询人员信息---结束2----------------------------");

+ 49 - 29
src/main/java/com/ruoyi/web/hksdk/MessageCallBack.java

@@ -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);
+        }
     }
+
 }

+ 6 - 16
src/main/java/com/ruoyi/web/service/InterfaceService.java

@@ -1,34 +1,20 @@
 package com.ruoyi.web.service;
 
-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.HttpResponse;
 import cn.hutool.http.HttpUtil;
-import cn.hutool.http.webservice.SoapClient;
 import cn.hutool.json.JSONUtil;
-import com.ruoyi.server.IReciveDataService;
-import com.ruoyi.server.ReciveDataService;
-import com.ruoyi.web.component.InterfaceUrl;
-
 import com.ruoyi.web.hksdk.HCNetSDK;
 import com.ruoyi.web.hksdk.HkAdapter;
 import com.sun.jna.Pointer;
 import lombok.extern.slf4j.Slf4j;
 
-import org.springframework.stereotype.Service;
-
-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.UUID;
+import java.util.Map;
 
 @Slf4j
 public class InterfaceService implements Runnable {
@@ -88,7 +74,11 @@ public class InterfaceService implements Runnable {
             employeeId = new String(test.byEmployeeNo).trim();
         }
         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;

+ 7 - 5
src/main/resources/application.yml

@@ -6,16 +6,18 @@ server:
 #门禁设备配置
 menjin:
   enable: true
-  host: 10.10.4.88
+  host: 192.168.3.99
   port: 8000
   username: 'admin'
-  pwd: z1234567
+  pwd: ABCabc123
   brand: 5000
+  starttime: '16:00'
+  endtime: '17:00'
 
 #海康sdk配置
 hksdk:
-  log-home: E:\libs\hk\logs
-  lib-home: E:\libs\hklib
+  log-home: D:\huijinyucode\bianminhushi\hklib\logs
+  lib-home: D:\huijinyucode\bianminhushi\hklib
   lib-path: ${hksdk.lib-home}\HCNetSDK.dll
   linux-libcrypto-path: ${hksdk.lib-home}/libcrypto.so.1.1
   linux-libssl-path: ${hksdk.lib-home}/libssl.so.1.1
@@ -24,7 +26,7 @@ interface:
   url: http://10.85.5.178:9918/ReciveDataService.svc
   appid: fb3c0825-c726-4f4b-b072-bc19f4c7378f
   server-url: http://kms-neikong-01.kmc.intra.customs.gov.cn:9918/ReciveDataService.svc
-
+  api-url: http://127.0.0.1:9595/api/req