Commit 41b5b3f843e4e08980f36c8aea8937336357f509
1 parent
fd892de1
Exists in
master
考勤修改
Showing
4 changed files
with
88 additions
and
17 deletions
Show diff stats
cloud/dahua/src/main/java/com/example/dahua/MyTask.java
@@ -3,6 +3,7 @@ package com.example.dahua; | @@ -3,6 +3,7 @@ package com.example.dahua; | ||
3 | import com.example.dahua.async.MyScheduledTask; | 3 | import com.example.dahua.async.MyScheduledTask; |
4 | import com.example.dahua.bean.*; | 4 | import com.example.dahua.bean.*; |
5 | import com.example.dahua.dao.UserDao; | 5 | import com.example.dahua.dao.UserDao; |
6 | +import com.example.dahua.enums.EnumDeviceType; | ||
6 | import com.example.dahua.enums.EnumSendFaceType; | 7 | import com.example.dahua.enums.EnumSendFaceType; |
7 | import com.example.dahua.enums.EnumSzBusinessType; | 8 | import com.example.dahua.enums.EnumSzBusinessType; |
8 | import com.example.dahua.lib.NetSDKLib; | 9 | import com.example.dahua.lib.NetSDKLib; |
@@ -58,7 +59,7 @@ public class MyTask implements ApplicationRunner { | @@ -58,7 +59,7 @@ public class MyTask implements ApplicationRunner { | ||
58 | public static String password = "q12345678"; | 59 | public static String password = "q12345678"; |
59 | 60 | ||
60 | //在线设备信息集合 | 61 | //在线设备信息集合 |
61 | - private List<DeviceInfoBean> deviceInfoBeans = new ArrayList<>(); | 62 | + private static List<DeviceInfoBean> deviceInfoBeans = new ArrayList<>(); |
62 | 63 | ||
63 | //存放登录句柄 | 64 | //存放登录句柄 |
64 | public static Map<String, NetSDKLib.LLong> lLongMap = new HashMap<>(); | 65 | public static Map<String, NetSDKLib.LLong> lLongMap = new HashMap<>(); |
@@ -327,9 +328,9 @@ public class MyTask implements ApplicationRunner { | @@ -327,9 +328,9 @@ public class MyTask implements ApplicationRunner { | ||
327 | return 0; | 328 | return 0; |
328 | } | 329 | } |
329 | int schoolId=0; | 330 | int schoolId=0; |
330 | - String schoolIdStr=userDao.getSchoolIdbyClint_id(szSn); | ||
331 | - if(org.apache.commons.lang.StringUtils.isNotBlank(schoolIdStr)){ | ||
332 | - schoolId=Integer.parseInt(schoolIdStr); | 331 | + AttendanceBean attendanceBean =userDao.getTypeByClint_id(szSn); |
332 | + if(org.apache.commons.lang.StringUtils.isNotBlank(attendanceBean.getSchool_id())){ | ||
333 | + schoolId=Integer.parseInt(attendanceBean.getSchool_id()); | ||
333 | } | 334 | } |
334 | /** | 335 | /** |
335 | * 卡号取反(大写) | 336 | * 卡号取反(大写) |
@@ -359,17 +360,19 @@ public class MyTask implements ApplicationRunner { | @@ -359,17 +360,19 @@ public class MyTask implements ApplicationRunner { | ||
359 | } | 360 | } |
360 | 361 | ||
361 | if(szSn.startsWith("ytj")) { | 362 | if(szSn.startsWith("ytj")) { |
363 | + //门禁进出类型:1进0出 | ||
364 | + int eventType = EnumSzBusinessType.EnumDeviceInAndOut.INT.code; | ||
365 | + if(attendanceBean.getOutOrIn() != EnumSzBusinessType.EnumDeviceInAndOut.INT.code){ | ||
366 | + eventType = EnumSzBusinessType.EnumDeviceInAndOut.OUT.code; | ||
367 | + } | ||
362 | // TODO 考勤记录 | 368 | // TODO 考勤记录 |
363 | //刷卡结果,1表示成功, 0表示失败 | 369 | //刷卡结果,1表示成功, 0表示失败 |
364 | int status = msg.bStatus; | 370 | int status = msg.bStatus; |
365 | - | ||
366 | - //门禁事件类型:1进2出 | ||
367 | - int eventType = msg.emEventType; | ||
368 | //刷卡时间 | 371 | //刷卡时间 |
369 | String eventTime = DateUtils.date2String(new Date(), DateUtils.format2); | 372 | String eventTime = DateUtils.date2String(new Date(), DateUtils.format2); |
370 | 373 | ||
371 | //保存考勤记录 | 374 | //保存考勤记录 |
372 | - kaoQinRecord(status, eventType, card, szSn, eventTime, snapPicPath, messageCode); | 375 | + kaoQinRecord(status, eventType, card, szSn, eventTime, snapPicPath, messageCode,lAnalyzerHandle); |
373 | } | 376 | } |
374 | } | 377 | } |
375 | 378 | ||
@@ -434,14 +437,14 @@ public class MyTask implements ApplicationRunner { | @@ -434,14 +437,14 @@ public class MyTask implements ApplicationRunner { | ||
434 | * @param eventTime | 437 | * @param eventTime |
435 | * @param imageUrl | 438 | * @param imageUrl |
436 | */ | 439 | */ |
437 | - public void kaoQinRecord(int status,int eventType,String cardNo,String deviceId,String eventTime,String imageUrl,int messageCode) { | 440 | + public void kaoQinRecord(int status,int eventType,String cardNo,String deviceId,String eventTime,String imageUrl,int messageCode,NetSDKLib.LLong lLong) { |
438 | if (status == 1) { | 441 | if (status == 1) { |
439 | //有效刷卡调考勤存储过程 | 442 | //有效刷卡调考勤存储过程 |
440 | CheckIn checkIn = new CheckIn(); | 443 | CheckIn checkIn = new CheckIn(); |
441 | checkIn.setDeviceId(deviceId); | 444 | checkIn.setDeviceId(deviceId); |
442 | checkIn.setCardNo(cardNo); | 445 | checkIn.setCardNo(cardNo); |
443 | checkIn.setFunNo(8); | 446 | checkIn.setFunNo(8); |
444 | - checkIn.setFlag(eventType == 2 ? 1 : 0); | 447 | + checkIn.setFlag(eventType == EnumSzBusinessType.EnumDeviceInAndOut.INT.code ? 0:1); |
445 | checkIn.setCheckTime(eventTime); | 448 | checkIn.setCheckTime(eventTime); |
446 | searchMapper.checkIn(checkIn); | 449 | searchMapper.checkIn(checkIn); |
447 | 450 | ||
@@ -481,6 +484,10 @@ public class MyTask implements ApplicationRunner { | @@ -481,6 +484,10 @@ public class MyTask implements ApplicationRunner { | ||
481 | shortMsg.setMsg(mobileMessage.getName() + "家长您好,你的孩子于" + DateUtils.date2String(new Date(), DateUtils.format2) + "请假后进校,请知晓;"); | 484 | shortMsg.setMsg(mobileMessage.getName() + "家长您好,你的孩子于" + DateUtils.date2String(new Date(), DateUtils.format2) + "请假后进校,请知晓;"); |
482 | } | 485 | } |
483 | userDao.insertMessage(shortMsg.getTableName(),shortMsg.getSchoolId()+"",shortMsg.getMobile(),shortMsg.getMsg()); | 486 | userDao.insertMessage(shortMsg.getTableName(),shortMsg.getSchoolId()+"",shortMsg.getMobile(),shortMsg.getMsg()); |
487 | + /** | ||
488 | + * 远程开门 | ||
489 | + */ | ||
490 | + openDoor(lLong); | ||
484 | } | 491 | } |
485 | } else { | 492 | } else { |
486 | //若即不成功,也不是请假,则按刷卡异常处理 | 493 | //若即不成功,也不是请假,则按刷卡异常处理 |
@@ -532,27 +539,36 @@ public class MyTask implements ApplicationRunner { | @@ -532,27 +539,36 @@ public class MyTask implements ApplicationRunner { | ||
532 | mqttManager = new MqttManager(); | 539 | mqttManager = new MqttManager(); |
533 | mqttManager.init(); | 540 | mqttManager.init(); |
534 | } | 541 | } |
535 | - | 542 | + // inOrOut:1出门0进门 |
536 | String inOrOut = eventType == 1 ? "0" : "1"; | 543 | String inOrOut = eventType == 1 ? "0" : "1"; |
537 | - //获取寝室关联的场景id | 544 | + //获取设备关联的场景id |
538 | String placeId = userDao.getPlaceIdWithKaoqinDevid(deviceId); | 545 | String placeId = userDao.getPlaceIdWithKaoqinDevid(deviceId); |
539 | 546 | ||
540 | if (null != placeId) { | 547 | if (null != placeId) { |
541 | //关联的显示看板设备 | 548 | //关联的显示看板设备 |
542 | List<String> kanbanIds = userDao.getKanBanIdWithPlaceId(placeId); | 549 | List<String> kanbanIds = userDao.getKanBanIdWithPlaceId(placeId); |
550 | + if(kanbanIds.size()<1){ | ||
551 | + log.info("设备id: {},关联placeId: {},未查询到关联看板设备。",deviceId,placeId); | ||
552 | + return; | ||
553 | + } | ||
543 | log.info("设备ID集: "+ JsonUtils.nonDefaultMapper().toJson(kanbanIds)); | 554 | log.info("设备ID集: "+ JsonUtils.nonDefaultMapper().toJson(kanbanIds)); |
544 | - for (int i = 0; i < kanbanIds.size(); i++) { | ||
545 | - String kanbanId = kanbanIds.get(i); | 555 | + for (String kanbanId : kanbanIds) { |
546 | String data = "{\"cmd\":\"" + 34 + "\",\"clientId\":\"" + kanbanId + "\",\"data\":{\"cardNum\":\"" + cardNum + "\",\"inOrOut\":\"" + inOrOut + "\"}}"; | 556 | String data = "{\"cmd\":\"" + 34 + "\",\"clientId\":\"" + kanbanId + "\",\"data\":{\"cardNum\":\"" + cardNum + "\",\"inOrOut\":\"" + inOrOut + "\"}}"; |
547 | log.info("====== 开始推送看板======, kanbanId = {}, cardNum = {},content ={}",kanbanId,cardNum,data); | 557 | log.info("====== 开始推送看板======, kanbanId = {}, cardNum = {},content ={}",kanbanId,cardNum,data); |
548 | mqttManager.sendMqQD(kanbanId, data); | 558 | mqttManager.sendMqQD(kanbanId, data); |
549 | } | 559 | } |
550 | - | ||
551 | } else { | 560 | } else { |
552 | - | ||
553 | String schoolId = userDao.getSchoolIdWidthCardNum(cardNum); | 561 | String schoolId = userDao.getSchoolIdWidthCardNum(cardNum); |
554 | - if(StringUtils.isEmpty(schoolId)||Integer.parseInt(schoolId) <=0)return; | 562 | + if(StringUtils.isEmpty(schoolId)||Integer.parseInt(schoolId) <=0){ |
563 | + log.info("卡号未查询到对应学校。卡号: {}",cardNum); | ||
564 | + return; | ||
565 | + } | ||
566 | + //查询学校看板设备ID | ||
555 | List<String> clintIds = userDao.getClintIds(schoolId); | 567 | List<String> clintIds = userDao.getClintIds(schoolId); |
568 | + if(clintIds.size()<1){ | ||
569 | + log.info("学校下未查询到看板信息,学校id: {}",schoolId); | ||
570 | + return; | ||
571 | + } | ||
556 | log.info("设备ID集: "+ JsonUtils.nonDefaultMapper().toJson(clintIds)); | 572 | log.info("设备ID集: "+ JsonUtils.nonDefaultMapper().toJson(clintIds)); |
557 | for (int i = 0; i < clintIds.size(); i++) { | 573 | for (int i = 0; i < clintIds.size(); i++) { |
558 | String clintId = clintIds.get(i); | 574 | String clintId = clintIds.get(i); |
@@ -561,8 +577,28 @@ public class MyTask implements ApplicationRunner { | @@ -561,8 +577,28 @@ public class MyTask implements ApplicationRunner { | ||
561 | mqttManager.sendMqQD(clintId, data); | 577 | mqttManager.sendMqQD(clintId, data); |
562 | } | 578 | } |
563 | } | 579 | } |
580 | + } | ||
581 | + | ||
582 | + /** | ||
583 | + * 远程开门 | ||
584 | + */ | ||
585 | + private static NetSDKLib.NET_CTRL_ACCESS_OPEN open = new NetSDKLib.NET_CTRL_ACCESS_OPEN(); | ||
586 | + public static NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE; | ||
587 | + | ||
588 | + public static boolean openDoor(NetSDKLib.LLong lLong) { | ||
589 | + open.nChannelID = 0; | ||
564 | 590 | ||
591 | + open.write(); | ||
592 | + boolean openSuccess = LoginModule.netsdk.CLIENT_ControlDeviceEx(lLong, NetSDKLib.CtrlType.CTRLTYPE_CTRL_ACCESS_OPEN, open.getPointer(), null, 5000); | ||
593 | + open.read(); | ||
594 | + | ||
595 | + if (!openSuccess) { | ||
596 | + log.warn("open Door error: 0x: "+ Long.toHexString(LoginModule.netsdk.CLIENT_GetLastError())); | ||
597 | + return false; | ||
598 | + } | ||
599 | + return true; | ||
565 | } | 600 | } |
601 | + | ||
566 | } | 602 | } |
567 | 603 | ||
568 | 604 |
cloud/dahua/src/main/java/com/example/dahua/bean/AttendanceBean.java
@@ -16,6 +16,8 @@ public class AttendanceBean implements Serializable { | @@ -16,6 +16,8 @@ public class AttendanceBean implements Serializable { | ||
16 | private String intime; | 16 | private String intime; |
17 | 17 | ||
18 | private String school_id; | 18 | private String school_id; |
19 | + //进出方向 | ||
20 | + private int OutOrIn; | ||
19 | 21 | ||
20 | public String getClint_id() { | 22 | public String getClint_id() { |
21 | return clint_id; | 23 | return clint_id; |
@@ -57,6 +59,14 @@ public class AttendanceBean implements Serializable { | @@ -57,6 +59,14 @@ public class AttendanceBean implements Serializable { | ||
57 | this.school_id = school_id; | 59 | this.school_id = school_id; |
58 | } | 60 | } |
59 | 61 | ||
62 | + public int getOutOrIn() { | ||
63 | + return OutOrIn; | ||
64 | + } | ||
65 | + | ||
66 | + public void setOutOrIn(int outOrIn) { | ||
67 | + OutOrIn = outOrIn; | ||
68 | + } | ||
69 | + | ||
60 | @Override | 70 | @Override |
61 | public String toString() { | 71 | public String toString() { |
62 | return "AttendanceBean{" + | 72 | return "AttendanceBean{" + |
cloud/dahua/src/main/java/com/example/dahua/dao/UserDao.java
@@ -16,6 +16,14 @@ public interface UserDao { | @@ -16,6 +16,14 @@ public interface UserDao { | ||
16 | @Select("select school_id from SZ_Attendance where clint_id = #{clint_id} ") | 16 | @Select("select school_id from SZ_Attendance where clint_id = #{clint_id} ") |
17 | String getSchoolIdbyClint_id( @Param("clint_id") String clint_id); | 17 | String getSchoolIdbyClint_id( @Param("clint_id") String clint_id); |
18 | 18 | ||
19 | + /** | ||
20 | + * 获取设备出入类型 | ||
21 | + * @param clint_id | ||
22 | + * @return | ||
23 | + */ | ||
24 | + @Select("select * from SZ_Attendance where clint_id = #{clint_id} ") | ||
25 | + AttendanceBean getTypeByClint_id( @Param("clint_id") String clint_id); | ||
26 | + | ||
19 | @Select("select * from SZ_Attendance where school_id = #{school_id} and clint_type = #{clint_type}") | 27 | @Select("select * from SZ_Attendance where school_id = #{school_id} and clint_type = #{clint_type}") |
20 | List<AttendanceBean> getAttendanceBeans(@Param("school_id") String school_id, @Param("clint_type") String clint_type); | 28 | List<AttendanceBean> getAttendanceBeans(@Param("school_id") String school_id, @Param("clint_type") String clint_type); |
21 | 29 |
cloud/dahua/src/main/java/com/example/dahua/enums/EnumSzBusinessType.java
@@ -47,4 +47,21 @@ public interface EnumSzBusinessType { | @@ -47,4 +47,21 @@ public interface EnumSzBusinessType { | ||
47 | } | 47 | } |
48 | } | 48 | } |
49 | 49 | ||
50 | + /** | ||
51 | + * 设备出入类型 | ||
52 | + */ | ||
53 | + public enum EnumDeviceInAndOut { | ||
54 | + | ||
55 | + INT(1, "进校"), | ||
56 | + OUT(0, "出校"); | ||
57 | + | ||
58 | + public final int code; | ||
59 | + public final String name; | ||
60 | + | ||
61 | + EnumDeviceInAndOut(int code, String name) { | ||
62 | + this.code = code; | ||
63 | + this.name = name; | ||
64 | + } | ||
65 | + } | ||
66 | + | ||
50 | } | 67 | } |