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 f8d7d5e..8ec3e2f 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/MyTask.java +++ b/cloud/dahua/src/main/java/com/example/dahua/MyTask.java @@ -78,30 +78,27 @@ public class MyTask implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { -// 121.40.109.21 - // 打开工程,初始化 - LoginModule.init(disConnect, haveReConnect); - //自注册 - autoRegister(); - -// System.out.println(" sendRecordDao:"+sendRecordDao.getSenSuccess()); + /** + * 设备初始化、自注册 + */ + new MyTask(); } - - /** - * 设备自注册 - */ - private void autoRegister() { + private MyTask() { + /** + * 打开工程,初始化 + */ + LoginModule.init(disConnect, haveReConnect); /** * 开启监听服务 */ - - System.out.println("new Utils().getHostAddress():"+new Utils().getHostAddress()); + log.info("new Utils().getHostAddress(): " + new Utils().getHostAddress()); AutoRegisterModule.startServer(new Utils().getHostAddress(), 9500, servicCallback); } + // 设备断线回调: 通过 CLIENT_Init 设置该回调函数,当设备出现断线时,SDK会调用该函数 private class DisConnect implements NetSDKLib.fDisConnect { public void invoke(NetSDKLib.LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) { @@ -450,12 +447,8 @@ public class MyTask implements ApplicationRunner { //考勤成功 String content = "考勤成功!,设备:" + deviceId + "卡号:" + cardNo + "方向:" + (eventType == 1 ? "进门" : "出门") + "______" + eventTime; - //一体机设备,抓拍到人脸,将人脸发送数据看板 - if(null == mqttManager){ - mqttManager = new MqttManager(); - mqttManager.init(); - } - myScheduledTask.sendMQMess(content,deviceId); + //开始推送看板 + sendMQMess(content,deviceId,eventType); //记录学生考勤签到记录 FileUtils.getInstance().writeLogs(content, FileUtils.qiandaoSuccess); @@ -521,4 +514,52 @@ public class MyTask implements ApplicationRunner { } } } + + + /** + * 消息发送 + * @param deviceId + * @param cardNum + * @param eventType + */ + public void sendMQMess(String deviceId,String cardNum,int eventType) { + + //一体机设备,抓拍到人脸,将人脸发送数据看板 + if(null == mqttManager){ + mqttManager = new MqttManager(); + mqttManager.init(); + } + + String inOrOut = eventType == 1 ? "0" : "1"; + //获取寝室关联的场景id + String placeId = userDao.getPlaceIdWithKaoqinDevid(deviceId); + + if (null != placeId) { + //关联的显示看板设备 + List kanbanIds = userDao.getKanBanIdWithPlaceId(placeId); + + for (int i = 0; i < kanbanIds.size(); i++) { + String kanbanId = kanbanIds.get(i); + String data = "{\"cmd\":\"" + 34 + "\",\"clientId\":\"" + kanbanId + "\",\"data\":{\"cardNum\":\"" + cardNum + "\",\"inOrOut\":\"" + inOrOut + "\"}}"; + log.info("====== 开始推送看板======, kanbanId = {}, cardNum = {},content ={}",kanbanId,cardNum,data); + mqttManager.sendMqQD(kanbanId, data); + } + + } else { + + String schoolId = userDao.getSchoolIdWidthCardNum(cardNum); + if(StringUtils.isEmpty(schoolId)||Integer.parseInt(schoolId) <=0)return; + List clintIds = userDao.getClintIds(schoolId); + for (int i = 0; i < clintIds.size(); i++) { + String clintId = clintIds.get(i); + String data = "{\"cmd\":\"" + 34 + "\",\"clientId\":\"" + clintId + "\",\"data\":{\"cardNum\":\"" + cardNum + "\",\"inOrOut\":\"" + inOrOut + "\"}}"; + log.info("====== 开始推送看板======, deviceId = {}, cardNum = {},content ={}",clintId,cardNum,data); + mqttManager.sendMqQD(clintId, data); + } + } + + } } + + + 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 01fb111..f73bc48 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 @@ -204,7 +204,7 @@ public class MyScheduledTask { // System.out.println("indexLineNum:"+indexLineNum+" ----------readLineNum:"+readLineNum); if (indexLineNum >= readLineNum) { readLineNum++; - sendMQMess(content,""); + sendMQMess(content); } } @@ -235,18 +235,12 @@ public class MyScheduledTask { } - public void sendMQMess(String content,String deviceId) { + public void sendMQMess(String content) { String cardNum = content.substring(content.indexOf("卡号") + 3, content.indexOf("卡号") + 11); String inOrOut = content.substring(content.indexOf("方向:") + 3, content.indexOf("方向:") + 5).endsWith("进门") ? "0" : "1"; - //判断是否一体机,发送消息看板 - String qiandaoDevId=""; - if(StringUtils.isEmpty(deviceId)){ - qiandaoDevId = content.substring(content.indexOf("设备") + 3, content.indexOf("设备") + 12); - }else{ - qiandaoDevId =deviceId; - } + String qiandaoDevId = content.substring(content.indexOf("设备") + 3, content.indexOf("设备") + 12); //获取寝室关联的场景id String placeId = userDao.getPlaceIdWithKaoqinDevid(qiandaoDevId); diff --git a/cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java b/cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java index 521e6e5..86ee142 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java +++ b/cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java @@ -10,6 +10,7 @@ import com.example.dahua.lib.NetSDKLib; import com.example.dahua.lib.NetSDKLib.*; import com.example.dahua.lib.ToolKits; import com.sun.jna.Memory; +import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; import lombok.extern.slf4j.Slf4j; @@ -55,12 +56,10 @@ public class GateModule { } - private static NetSDKLib.NET_DEVICEINFO_Ex deviceInfo; + private static NetSDKLib.NET_DEVICEINFO_Ex deviceInfo = new NET_DEVICEINFO_Ex(); public static LLong realLoadPic2(int ChannelId, NetSDKLib.fAnalyzerDataCallBack m_AnalyzerDataCB, LLong lLong,String devcieId) { -// final NetSDKLib.NET_DEVICEINFO_Ex deviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex(); - // 设备ID System.arraycopy(devcieId.getBytes(), 0, deviceInfo.sSerialNumber, 0, devcieId.getBytes().length); @@ -682,12 +681,12 @@ public class GateModule { /** * 门禁卡记录集信息 */ - private static NET_RECORDSET_ACCESS_CTL_CARD accessCardInfo; + private static NET_RECORDSET_ACCESS_CTL_CARD accessCardInfo = new NET_RECORDSET_ACCESS_CTL_CARD(); /** * 记录集操作 */ - private static NET_CTRL_RECORDSET_PARAM update; + private static NET_CTRL_RECORDSET_PARAM update = new NET_CTRL_RECORDSET_PARAM(); /** * 修改设备卡信息 @@ -714,7 +713,7 @@ public class GateModule { /** * 门禁卡记录集信息 */ - accessCardInfo = new NET_RECORDSET_ACCESS_CTL_CARD(); +// accessCardInfo = new NET_RECORDSET_ACCESS_CTL_CARD(); // 记录集编号, 修改、删除卡信息必须填写 accessCardInfo.nRecNo = recordNo; @@ -784,7 +783,7 @@ public class GateModule { /** * 记录集操作 */ - update = new NET_CTRL_RECORDSET_PARAM(); +// update = new NET_CTRL_RECORDSET_PARAM(); update.emType = EM_NET_RECORD_TYPE.NET_RECORD_ACCESSCTLCARD; // 记录集信息类型 update.pBuf = accessCardInfo.getPointer(); diff --git a/cloud/dahua/src/test/java/com/example/dahua/mapper/SearchMapperTest.java b/cloud/dahua/src/test/java/com/example/dahua/mapper/SearchMapperTest.java index 807c791..e46bb63 100644 --- a/cloud/dahua/src/test/java/com/example/dahua/mapper/SearchMapperTest.java +++ b/cloud/dahua/src/test/java/com/example/dahua/mapper/SearchMapperTest.java @@ -1,6 +1,7 @@ package com.example.dahua.mapper; import com.alibaba.fastjson.JSON; +import com.example.dahua.MyTask; import com.example.dahua.Tester; import com.example.dahua.async.MyScheduledTask; import com.example.dahua.bean.CheckIn; @@ -99,7 +100,7 @@ public class SearchMapperTest extends Tester { private MqttManager mqttManager; @Autowired - private MyScheduledTask myScheduledTask; + private MyTask myTask; @Test public void test5(){ @@ -113,7 +114,7 @@ public class SearchMapperTest extends Tester { String cardNo =""; String content = "考勤成功!,设备:" + deviceId + "卡号:" + cardNo + "方向:进门" + "______" + eventTime; - myScheduledTask.sendMQMess(content,deviceId); + myTask.sendMQMess(deviceId,cardNo,1); System.out.println("发送成功"); } -- libgit2 0.21.0