From a6129a274b46d94f24fda3c7493ef766cf614e96 Mon Sep 17 00:00:00 2001
From: zengh <123456>
Date: Wed, 19 May 2021 17:57:04 +0800
Subject: [PATCH] 海康报文保存

---
 blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyServer/ServerHandler.java |  162 +++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 155 insertions(+), 7 deletions(-)

diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyServer/ServerHandler.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyServer/ServerHandler.java
index 5f656a0..37756c3 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyServer/ServerHandler.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyServer/ServerHandler.java
@@ -141,13 +141,71 @@
 				serverHandler.animalHeatService.save(body);
 			}
 		} else if (CSType.equals("HK")) {
-			//报文内容保存
-			String ChannelName = "";//设备编码
-			Message message = new Message();
-			message.setEnumber(ChannelName);
-			message.setContent(body);
-			message.setTime(df.format(day));
-			serverHandler.messageService.save(message);
+
+			List<String> outData = new ArrayList<>();
+
+			switch (content.substring(0, 2)) {
+				case "BJ":
+					//报警信息
+					String devId = content.substring(12, 24);
+					List<Map<String, Object>> list = serverHandler.equipmentService.selectInfos(devId);
+					Alarm alarm = new Alarm();
+					alarm.setWaringType("紧急求救");
+					alarm.setAlarmType("一键报警");
+					alarm.setGalarmPeople("报警主机");
+					alarm.setAlarmTime(df.format(day));
+					alarm.setPlace((String) list.get(0).get("streeName"));//事发地址
+					alarm.setDeviceNumber((String) list.get(0).get("deviceNumber"));//设备编号
+					alarm.setDistrict((String) list.get(0).get("district"));//县区
+					alarm.setProvince((String) list.get(0).get("province"));//市
+					alarm.setCity((String) list.get(0).get("city"));
+					alarm.setJd((String) list.get(0).get("jd"));//经度
+					alarm.setWd((String) list.get(0).get("wd"));//纬度
+					alarm.setCid(String.valueOf(1));//警情代码
+					alarm.setJtype("0");
+
+					setAlarmData(alarm,list);
+
+					outData.add("BJOK");
+
+					//报文内容保存
+					String ChannelName = "";//设备编码
+					Message message = new Message();
+					message.setEnumber(ChannelName);
+					message.setContent(body);
+					message.setTime(df.format(day));
+					serverHandler.messageService.save(message);
+
+					break;
+
+				case "XT":
+					//心跳信息
+					String devIds = content.substring(12, 24);
+					Date d = new Date();
+					SimpleDateFormat sbf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+					String format = sbf.format(d);
+					serverHandler.equipmentService.updateChannel(format, devIds);
+					outData.add("XTOK");
+					break;
+
+				case "JS":
+					//校时信息
+					Date sj = new Date();
+					SimpleDateFormat js = new SimpleDateFormat("yyyyMMddHHmmss");
+					outData.add("JSOK" + js.format(sj) );
+					break;
+
+				case "ZT":
+					//状态信息
+					outData.add("ZTOK");
+					break;
+			}
+
+			for (int i = 0; i < outData.size(); i++) {
+				channelHandlerContext.writeAndFlush(Unpooled.copiedBuffer(outData.get(i), CharsetUtil.UTF_8));
+			}
+
+
 		} else {
 			String ChannelName = content.substring(10, 22);//设备编码
 			String sub = content.substring(23, 27);
@@ -1728,4 +1786,94 @@
 	}
 
 
+	//警情信息录入并派发
+	public void setAlarmData(Alarm alarm,List<Map<String, Object>> list){
+		if (alarm.getWaringType().equals("紧急求救")) {
+
+			//修改设备状态
+			serverHandler.equipmentService.updateExstate("一键报警", null, (String) list.get(0).get("deviceNumber"));
+
+			//警情分发测试代码
+			//查询所有闲置的接警员
+			List<User> policeList = serverHandler.alarmService.queryPolice();
+			List<User> online_police = new ArrayList<>();
+			List<User> zx_police = new ArrayList<>();
+			for (int i = 0; i < policeList.size(); i++) {
+				//System.out.println(policeList.get(i).get("real_name"));
+				if (null != policeList.get(i).getOnline_status()) {
+					if (policeList.get(i).getOnline_status().equals("1")) {
+						zx_police.add(policeList.get(i));
+						if (null != policeList.get(i).getWork_status()) {
+							if (policeList.get(i).getWork_status().equals("0")) {
+								online_police.add(policeList.get(i));
+							}
+						}
+					}
+				}
+			}
+
+			//如果无在线闲置人员
+			if (online_police.size() == 0) {
+
+				//判断是否有在线人员
+				if (zx_police.size() == 0) {
+					//无在线人员,选取所有接警员
+					online_police = policeList;
+				} else {
+					//有在线人员
+					online_police = zx_police;
+				}
+
+			}
+
+			List policeIdArr = new ArrayList();
+
+			//将闲置状态的人员id存入数组
+			for (int i = 0; i < online_police.size(); i++) {
+				policeIdArr.add(online_police.get(i).getId());
+			}
+
+			//通过id计算接警员最后一次接警时间,倒序返回闲置最久的人员,派发任务
+			List<AlarmVO> police = serverHandler.alarmService.queryPoliceTime(policeIdArr);
+
+			if (police.size() != 0) {
+				alarm.setAlarmId(police.get(0).getAlarmId().toString());
+				alarm.setAlarmPeople(police.get(0).getAlarmPeople().toString());
+				alarm.setPhoneNumber(police.get(0).getPhoneNumber().toString());
+				Date date = new Date();
+				SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+				alarm.setJjTime(dateFormat.format(date));
+
+				serverHandler.alarmService.updatePoliceStatus(police.get(0).getAlarmId().toString(), "1");
+			} else {
+				alarm.setAlarmId(online_police.get(0).getId().toString());
+				alarm.setAlarmPeople(online_police.get(0).getName().toString());
+				alarm.setPhoneNumber(online_police.get(0).getPhone().toString());
+				Date date = new Date();
+				SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+				alarm.setJjTime(dateFormat.format(date));
+
+				serverHandler.alarmService.updatePoliceStatus(online_police.get(0).getId().toString(), "1");
+			}
+		}
+
+
+		serverHandler.alarmService.s(alarm);
+
+		if (alarm.getWaringType().equals("紧急求救")) {
+			OperationVO operation = new OperationVO();
+			operation.setSnumber(alarm.getAlarmId());
+			operation.setSname(alarm.getAlarmPeople());
+			operation.setJid(alarm.getId().toString());
+			operation.setZc("接警");
+			operation.setZctime(alarm.getJjTime());
+			serverHandler.operationService.save(operation);
+
+			//通过websocket给前端接警员发送信息
+			serverHandler.pushMsgService.pushMsg(alarm.getAlarmId(), alarm.getId().toString());
+		}
+
+	}
+
+
 }

--
Gitblit v1.9.3