Commit c95dfc74d3585a8625f35bad4c276e34e30454ac

Authored by 徐泉
1 parent 59207196
Exists in master

发送看板修改

cloud/dahua/src/main/java/com/example/dahua/MyTask.java
... ... @@ -78,30 +78,27 @@ public class MyTask implements ApplicationRunner {
78 78  
79 79 @Override
80 80 public void run(ApplicationArguments args) throws Exception {
81   -// 121.40.109.21
82   - // 打开工程,初始化
83   - LoginModule.init(disConnect, haveReConnect);
84   - //自注册
85   - autoRegister();
86   -
87   -// System.out.println(" sendRecordDao:"+sendRecordDao.getSenSuccess());
  81 + /**
  82 + * 设备初始化、自注册
  83 + */
  84 + new MyTask();
88 85 }
89 86  
90   -
91   - /**
92   - * 设备自注册
93   - */
94   - private void autoRegister() {
  87 + private MyTask() {
  88 + /**
  89 + * 打开工程,初始化
  90 + */
  91 + LoginModule.init(disConnect, haveReConnect);
95 92  
96 93 /**
97 94 * 开启监听服务
98 95 */
99   -
100   - System.out.println("new Utils().getHostAddress():"+new Utils().getHostAddress());
  96 + log.info("new Utils().getHostAddress(): " + new Utils().getHostAddress());
101 97 AutoRegisterModule.startServer(new Utils().getHostAddress(), 9500, servicCallback);
102 98  
103 99 }
104 100  
  101 +
105 102 // 设备断线回调: 通过 CLIENT_Init 设置该回调函数,当设备出现断线时,SDK会调用该函数
106 103 private class DisConnect implements NetSDKLib.fDisConnect {
107 104 public void invoke(NetSDKLib.LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
... ... @@ -450,12 +447,8 @@ public class MyTask implements ApplicationRunner {
450 447 //考勤成功
451 448 String content = "考勤成功!,设备:" + deviceId + "卡号:" + cardNo + "方向:" + (eventType == 1 ? "进门" : "出门") + "______" + eventTime;
452 449  
453   - //一体机设备,抓拍到人脸,将人脸发送数据看板
454   - if(null == mqttManager){
455   - mqttManager = new MqttManager();
456   - mqttManager.init();
457   - }
458   - myScheduledTask.sendMQMess(content,deviceId);
  450 + //开始推送看板
  451 + sendMQMess(content,deviceId,eventType);
459 452  
460 453 //记录学生考勤签到记录
461 454 FileUtils.getInstance().writeLogs(content, FileUtils.qiandaoSuccess);
... ... @@ -521,4 +514,52 @@ public class MyTask implements ApplicationRunner {
521 514 }
522 515 }
523 516 }
  517 +
  518 +
  519 + /**
  520 + * 消息发送
  521 + * @param deviceId
  522 + * @param cardNum
  523 + * @param eventType
  524 + */
  525 + public void sendMQMess(String deviceId,String cardNum,int eventType) {
  526 +
  527 + //一体机设备,抓拍到人脸,将人脸发送数据看板
  528 + if(null == mqttManager){
  529 + mqttManager = new MqttManager();
  530 + mqttManager.init();
  531 + }
  532 +
  533 + String inOrOut = eventType == 1 ? "0" : "1";
  534 + //获取寝室关联的场景id
  535 + String placeId = userDao.getPlaceIdWithKaoqinDevid(deviceId);
  536 +
  537 + if (null != placeId) {
  538 + //关联的显示看板设备
  539 + List<String> kanbanIds = userDao.getKanBanIdWithPlaceId(placeId);
  540 +
  541 + for (int i = 0; i < kanbanIds.size(); i++) {
  542 + String kanbanId = kanbanIds.get(i);
  543 + String data = "{\"cmd\":\"" + 34 + "\",\"clientId\":\"" + kanbanId + "\",\"data\":{\"cardNum\":\"" + cardNum + "\",\"inOrOut\":\"" + inOrOut + "\"}}";
  544 + log.info("====== 开始推送看板======, kanbanId = {}, cardNum = {},content ={}",kanbanId,cardNum,data);
  545 + mqttManager.sendMqQD(kanbanId, data);
  546 + }
  547 +
  548 + } else {
  549 +
  550 + String schoolId = userDao.getSchoolIdWidthCardNum(cardNum);
  551 + if(StringUtils.isEmpty(schoolId)||Integer.parseInt(schoolId) <=0)return;
  552 + List<String> clintIds = userDao.getClintIds(schoolId);
  553 + for (int i = 0; i < clintIds.size(); i++) {
  554 + String clintId = clintIds.get(i);
  555 + String data = "{\"cmd\":\"" + 34 + "\",\"clientId\":\"" + clintId + "\",\"data\":{\"cardNum\":\"" + cardNum + "\",\"inOrOut\":\"" + inOrOut + "\"}}";
  556 + log.info("====== 开始推送看板======, deviceId = {}, cardNum = {},content ={}",clintId,cardNum,data);
  557 + mqttManager.sendMqQD(clintId, data);
  558 + }
  559 + }
  560 +
  561 + }
524 562 }
  563 +
  564 +
  565 +
... ...
cloud/dahua/src/main/java/com/example/dahua/async/MyScheduledTask.java
... ... @@ -204,7 +204,7 @@ public class MyScheduledTask {
204 204 // System.out.println("indexLineNum:"+indexLineNum+" ----------readLineNum:"+readLineNum);
205 205 if (indexLineNum >= readLineNum) {
206 206 readLineNum++;
207   - sendMQMess(content,"");
  207 + sendMQMess(content);
208 208 }
209 209  
210 210 }
... ... @@ -235,18 +235,12 @@ public class MyScheduledTask {
235 235  
236 236 }
237 237  
238   - public void sendMQMess(String content,String deviceId) {
  238 + public void sendMQMess(String content) {
239 239 String cardNum = content.substring(content.indexOf("卡号") + 3, content.indexOf("卡号") + 11);
240 240  
241 241 String inOrOut = content.substring(content.indexOf("方向:") + 3, content.indexOf("方向:") + 5).endsWith("进门") ? "0" : "1";
242 242  
243   - //判断是否一体机,发送消息看板
244   - String qiandaoDevId="";
245   - if(StringUtils.isEmpty(deviceId)){
246   - qiandaoDevId = content.substring(content.indexOf("设备") + 3, content.indexOf("设备") + 12);
247   - }else{
248   - qiandaoDevId =deviceId;
249   - }
  243 + String qiandaoDevId = content.substring(content.indexOf("设备") + 3, content.indexOf("设备") + 12);
250 244  
251 245 //获取寝室关联的场景id
252 246 String placeId = userDao.getPlaceIdWithKaoqinDevid(qiandaoDevId);
... ...
cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java
... ... @@ -10,6 +10,7 @@ import com.example.dahua.lib.NetSDKLib;
10 10 import com.example.dahua.lib.NetSDKLib.*;
11 11 import com.example.dahua.lib.ToolKits;
12 12 import com.sun.jna.Memory;
  13 +import com.sun.jna.Pointer;
13 14 import com.sun.jna.ptr.IntByReference;
14 15 import lombok.extern.slf4j.Slf4j;
15 16  
... ... @@ -55,12 +56,10 @@ public class GateModule {
55 56 }
56 57  
57 58  
58   - private static NetSDKLib.NET_DEVICEINFO_Ex deviceInfo;
  59 + private static NetSDKLib.NET_DEVICEINFO_Ex deviceInfo = new NET_DEVICEINFO_Ex();
59 60  
60 61 public static LLong realLoadPic2(int ChannelId, NetSDKLib.fAnalyzerDataCallBack m_AnalyzerDataCB, LLong lLong,String devcieId) {
61 62  
62   -// final NetSDKLib.NET_DEVICEINFO_Ex deviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex();
63   -
64 63 // 设备ID
65 64 System.arraycopy(devcieId.getBytes(), 0, deviceInfo.sSerialNumber, 0, devcieId.getBytes().length);
66 65  
... ... @@ -682,12 +681,12 @@ public class GateModule {
682 681 /**
683 682 * 门禁卡记录集信息
684 683 */
685   - private static NET_RECORDSET_ACCESS_CTL_CARD accessCardInfo;
  684 + private static NET_RECORDSET_ACCESS_CTL_CARD accessCardInfo = new NET_RECORDSET_ACCESS_CTL_CARD();
686 685  
687 686 /**
688 687 * 记录集操作
689 688 */
690   - private static NET_CTRL_RECORDSET_PARAM update;
  689 + private static NET_CTRL_RECORDSET_PARAM update = new NET_CTRL_RECORDSET_PARAM();
691 690  
692 691 /**
693 692 * 修改设备卡信息
... ... @@ -714,7 +713,7 @@ public class GateModule {
714 713 /**
715 714 * 门禁卡记录集信息
716 715 */
717   - accessCardInfo = new NET_RECORDSET_ACCESS_CTL_CARD();
  716 +// accessCardInfo = new NET_RECORDSET_ACCESS_CTL_CARD();
718 717 // 记录集编号, 修改、删除卡信息必须填写
719 718 accessCardInfo.nRecNo = recordNo;
720 719  
... ... @@ -784,7 +783,7 @@ public class GateModule {
784 783 /**
785 784 * 记录集操作
786 785 */
787   - update = new NET_CTRL_RECORDSET_PARAM();
  786 +// update = new NET_CTRL_RECORDSET_PARAM();
788 787  
789 788 update.emType = EM_NET_RECORD_TYPE.NET_RECORD_ACCESSCTLCARD; // 记录集信息类型
790 789 update.pBuf = accessCardInfo.getPointer();
... ...
cloud/dahua/src/test/java/com/example/dahua/mapper/SearchMapperTest.java
1 1 package com.example.dahua.mapper;
2 2  
3 3 import com.alibaba.fastjson.JSON;
  4 +import com.example.dahua.MyTask;
4 5 import com.example.dahua.Tester;
5 6 import com.example.dahua.async.MyScheduledTask;
6 7 import com.example.dahua.bean.CheckIn;
... ... @@ -99,7 +100,7 @@ public class SearchMapperTest extends Tester {
99 100 private MqttManager mqttManager;
100 101  
101 102 @Autowired
102   - private MyScheduledTask myScheduledTask;
  103 + private MyTask myTask;
103 104  
104 105 @Test
105 106 public void test5(){
... ... @@ -113,7 +114,7 @@ public class SearchMapperTest extends Tester {
113 114 String cardNo ="";
114 115 String content = "考勤成功!,设备:" + deviceId + "卡号:" + cardNo + "方向:进门" + "______" + eventTime;
115 116  
116   - myScheduledTask.sendMQMess(content,deviceId);
  117 + myTask.sendMQMess(deviceId,cardNo,1);
117 118 System.out.println("发送成功");
118 119 }
119 120  
... ...