diff --git a/cloud/dahua/src/main/java/com/example/dahua/MyTask.java b/cloud/dahua/src/main/java/com/example/dahua/MyTask.java index 650f2f7..ef354f7 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/MyTask.java +++ b/cloud/dahua/src/main/java/com/example/dahua/MyTask.java @@ -1,5 +1,6 @@ package com.example.dahua; +import com.example.dahua.async.MyScheduledTask; import com.example.dahua.bean.*; import com.example.dahua.dao.UserDao; import com.example.dahua.enums.EnumSendFaceType; @@ -10,6 +11,7 @@ import com.example.dahua.lib.Utils; import com.example.dahua.module.AutoRegisterModule; import com.example.dahua.module.GateModule; import com.example.dahua.module.LoginModule; +import com.example.dahua.mqtt.MqttManager; import com.example.dahua.service.AttendanceService; import com.example.dahua.utils.DateUtils; import com.example.dahua.utils.FileUtils; @@ -71,6 +73,9 @@ public class MyTask implements ApplicationRunner { public boolean isHasNewDevice = false;//判断是否有新设备上线 + @Autowired + private MyScheduledTask myScheduledTask; + @Override public void run(ApplicationArguments args) throws Exception { // 121.40.109.21 @@ -307,7 +312,8 @@ public class MyTask implements ApplicationRunner { ImageIO.write(gateBufferedImage, "png", new File(snapPicPath)); } log.info("设备ID: {},卡号: {},抓拍照片存储地址:{}" ,szSn,card,snapPicPath); - if(isMatch(REGEX_POSITIVE_Symbol, szSn)){//验证设备id是否存在特殊字符 + //验证设备id是否存在特殊字符 + if(isMatch(REGEX_POSITIVE_Symbol, szSn)){ log.info("—设备ID异常: {},卡号: {}",szSn,card); return 0; } @@ -316,12 +322,13 @@ public class MyTask implements ApplicationRunner { if(org.apache.commons.lang.StringUtils.isNotBlank(schoolIdStr)){ schoolId=Integer.parseInt(schoolIdStr); } - //卡号取反(大写) - //if(!szSn.startsWith("ytj")||(szSn.startsWith("ytj")&&schoolId==126&&schoolId==393)){ + /** + * 卡号取反(大写) + * 注:若设备为一体机、且非"126上虞城东小学、393上虞实验中学"学校,卡则取反 + */ if(szSn.startsWith("ytj")&&schoolId!=126&&schoolId!=393){ card = card; - } - else{ + } else{ card = cardNo(card); } //根据卡号获取卡身份信息 @@ -342,10 +349,10 @@ public class MyTask implements ApplicationRunner { } if(szSn.startsWith("ytj")) { - // TODO 考勤记录 //刷卡结果,1表示成功, 0表示失败 int status = msg.bStatus; + //门禁事件类型:1进2出 int eventType = msg.emEventType; //刷卡时间 @@ -407,6 +414,7 @@ public class MyTask implements ApplicationRunner { return isNum.matches(); } + private static MqttManager mqttManager; /** * 大华设备考勤记录 * @param status @@ -429,6 +437,14 @@ public class MyTask implements ApplicationRunner { if (checkIn.getIsSuccess() == 1) { //考勤成功 String content = "考勤成功!,设备:" + deviceId + "卡号:" + cardNo + "方向:" + (eventType == 1 ? "进门" : "出门") + "______" + eventTime; + + //一体机设备,抓拍到人脸,将人脸发送数据看板 + if(null == mqttManager){ + mqttManager = new MqttManager(); + mqttManager.init(); + } + myScheduledTask.sendMQMess(content); + //记录学生考勤签到记录 FileUtils.getInstance().writeLogs(content, FileUtils.qiandaoSuccess); } else { @@ -462,7 +478,7 @@ public class MyTask implements ApplicationRunner { //若即不成功,也不是请假,则按刷卡异常处理 List users = userDao.selectUserByCardNum(cardNo); if(users.size()<1){ - log.warn("考勤记录:卡号: {}没找到对应学生或老师,考勤时间: {}",cardNo,DateUtils.date2String(new Date(), DateUtils.format2)); + log.warn("考勤记录:卡号: {},没找到对应学生或老师,考勤时间: {}",cardNo,DateUtils.date2String(new Date(), DateUtils.format2)); return; } User user = users.get(0); diff --git a/cloud/dahua/src/main/java/com/example/dahua/async/MyScheduledTask.java b/cloud/dahua/src/main/java/com/example/dahua/async/MyScheduledTask.java index cb97198..15b627d 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/async/MyScheduledTask.java +++ b/cloud/dahua/src/main/java/com/example/dahua/async/MyScheduledTask.java @@ -235,7 +235,7 @@ public class MyScheduledTask { } - private void sendMQMess(String content) { + public void sendMQMess(String content) { String cardNum = content.substring(content.indexOf("卡号") + 3, content.indexOf("卡号") + 11); // System.out.println("cardNum:" + cardNum); -- libgit2 0.21.0