From 6972afbf3b2cab802671a80aa2e858a329b5f55f Mon Sep 17 00:00:00 2001
From: zengh <123456>
Date: Sun, 25 Apr 2021 21:21:20 +0800
Subject: [PATCH] websocket测试

---
 blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyServer/ServerHandler.java |  172 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 168 insertions(+), 4 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 cc30ca9..5f89e58 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
@@ -12,6 +12,11 @@
 import org.springblade.jfpt.animalheat.service.AnimalHeatService;
 import org.springblade.jfpt.catalog.service.catalogService;
 import org.springblade.jfpt.equipment.service.IEquipmentService;
+import org.springblade.jfpt.message.entity.Message;
+import org.springblade.jfpt.message.service.IMessageService;
+import org.springblade.jfpt.operation.service.IOperationService;
+import org.springblade.jfpt.operation.vo.OperationVO;
+import org.springblade.jfpt.webscoket.service.IPushMsgService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -39,6 +44,8 @@
 
 	@Autowired
 	private org.springblade.jfpt.Netty.service.nettyService nettyService;
+	@Autowired
+	private  IMessageService messageService;
 
 	@Autowired
 	private IEquipmentService equipmentService;
@@ -48,6 +55,12 @@
 
 	@Autowired
 	private IAlarmService alarmService;
+
+	@Autowired
+	private IPushMsgService pushMsgService;
+
+	@Autowired
+	private IOperationService operationService;
 
 	private static ServerHandler serverHandler;
 
@@ -100,6 +113,9 @@
 	 */
 	@Override
 	public void channelRead(ChannelHandlerContext channelHandlerContext, Object info) throws Exception {
+		long startTime1 = System.currentTimeMillis();
+		Date day = new Date();
+		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 		System.out.println("接收到了:" + info);
 		ByteBuf buf = (ByteBuf) info;
 		byte[] req = new byte[buf.readableBytes()];
@@ -107,6 +123,8 @@
 		String body = new String(req, "UTF-8");
 		String content = body;
 		System.out.println("接收客户端数据:" + body);
+		String state="系统故障"; //设备故障状态
+		String reason=null; //故障原因
 		//获取字符串的长度
 		int length = content.length();
 		//当字符串长度大于200时,采集体温数据,小于则采集报警数据
@@ -118,6 +136,12 @@
 			}
 		} else {
 			String ChannelName = content.substring(10, 22);//设备编码
+			//报文内容保存
+			Message message = new Message();
+			message.setEnumber(ChannelName);
+			message.setContent(body);
+			message.setTime(df.format(day));
+			serverHandler.messageService.save(message);
 			String sub = content.substring(23, 27);
 			ConcurrentHashMap<String, Channel> channelHashMap = ChannelMap.getChannelHashMap();
 			if (channelHashMap == null) {
@@ -138,6 +162,7 @@
 			List<String> outData = new ArrayList<>();
 			switch (content.substring(0, 2)) {
 				case "LA": {
+					System.out.println("按下按钮+++++++++++++++++++++++++++++++++");
 					String devId = content.substring(10, 22);
 					//String fqbm = content.substring(24, 26);
 					String d = content.substring(26, 27);
@@ -148,8 +173,6 @@
 					Alarm alarm = new Alarm();
 					alarm.setAlarmType("一键报警");
 					alarm.setGalarmPeople("报警主机");
-					Date day = new Date();
-					SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 					alarm.setAlarmTime(df.format(day));
 					alarm.setPlace((String) list.get(0).get("streeName"));//事发地址
 					alarm.setDeviceNumber((String) list.get(0).get("deviceNumber"));//设备编号
@@ -361,36 +384,56 @@
 							} else if (fqbm.equals("1")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("交流电故障");
+								reason="交流电故障";
+								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							} else if (fqbm.equals("2")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("备电偏低");
+								reason="备电偏低";
+								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							} else if (fqbm.equals("3")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("RAM校验错误");
+								reason="RAM校验错误";
+								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							} else if (fqbm.equals("4")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("ROM校验错误");
+								reason="ROM校验错误";
+								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							} else if (fqbm.equals("5")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("远程编程");
+								reason="远程编程";
+								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							} else if (fqbm.equals("6")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("主机设置更改");
+								reason="主机设置更改";
+								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							} else if (fqbm.equals("7")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("自检失败");
+								reason="自检失败";
+								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							} else if (fqbm.equals("8")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("系统关闭");
+								reason="系统关闭";
+								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							} else if (fqbm.equals("9")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("备电故障");
+								reason="备电故障";
+								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							}
 							break;
 						case "31":
 							if (fqbm.equals("0")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("接地故障");
+								reason="接地故障";
+								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							}
 							break;
 						case "32":
@@ -418,51 +461,79 @@
 							if (fqbm.equals("0")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("系统周边");
+								reason="系统周边";
+								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							} else if (fqbm.equals("1")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("回路断开");
+								reason="回路断开";
+								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							} else if (fqbm.equals("2")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("回路短路");
+								reason="回路短路";
+								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							} else if (fqbm.equals("3")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("扩展模块故障");
+//								reason="扩展模块故障";
+//								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							} else if (fqbm.equals("4")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("中继器故障");
+//								reason="中继器故障";
+//								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							} else if (fqbm.equals("5")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("打印机缺纸");
+//								reason="打印机缺纸";
+//								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							} else if (fqbm.equals("6")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("打印机故障");
+//								reason="打印机故障";
+//								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							} else if (fqbm.equals("7")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("扩展模块无直流");
+//								reason="扩展模块无直流";
+//								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							} else if (fqbm.equals("8")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("扩展模块低电压");
+								reason="扩展模块低电压";
+								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							} else if (fqbm.equals("9")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("扩展模块复位");
+//								reason="扩展模块复位";
+//								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							}
 							break;
 						case "34":
 							if (fqbm.equals("1")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("扩展模块防拆触发");
+//								reason="扩展模块防拆触发";
+//								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							}
 							break;
 						case "35":
 							if (fqbm.equals("0")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("通讯故障");
+								reason="通讯故障";
+								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							} else if (fqbm.equals("1")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("电话线故障");
+								reason="电话线故障";
+								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							} else if (fqbm.equals("2")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("电话接口2故障");
+//								reason="电话接口2故障";
+//								serverHandler.equipmentService.updateExstate(state,reason,devId);
 							} else if (fqbm.equals("3")) {
 								alarm.setWaringType("通讯故障");
 								alarm.setContent("远距离无线通讯");
@@ -1302,10 +1373,14 @@
 							if (fqbm.equals("0")) {
 								alarm.setWaringType("系统故障-恢复");
 								alarm.setContent("电话线故障-通讯故障(转发)");
+								reason="";
+								serverHandler.equipmentService.updateExstate("",reason,devId);
 							}
 							else if (fqbm.equals("1")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("交流电故障-通讯故障(转发)");
+								reason="";
+								serverHandler.equipmentService.updateExstate("",reason,devId);
 							}
 							else if (fqbm.equals("2")) {
 								alarm.setWaringType("系统故障");
@@ -1314,6 +1389,7 @@
 							else if (fqbm.equals("3")) {
 								alarm.setWaringType("系统故障");
 								alarm.setContent("警号/继电器故障-通讯故障(转发)");
+
 							}
 							else if (fqbm.equals("4")) {
 								alarm.setWaringType("系统故障");
@@ -1330,6 +1406,8 @@
 							else if (fqbm.equals("7")) {
 								alarm.setWaringType("系统故障-恢复");
 								alarm.setContent("交流电故障恢复-通讯故障(转发)");
+								reason="";
+								serverHandler.equipmentService.updateExstate("",reason,devId);
 							}
 							else if (fqbm.equals("8")) {
 								alarm.setWaringType("系统故障-恢复");
@@ -1342,14 +1420,20 @@
 							else if (fqbm.equals("A")) {
 								alarm.setWaringType("系统故障-恢复");
 								alarm.setContent("电话线故障-通讯故障(转发)");
+								reason="";
+								serverHandler.equipmentService.updateExstate("",reason,devId);
 							}
 							else if (fqbm.equals("B")) {
 								alarm.setWaringType("系统故障-恢复");
 								alarm.setContent("回路短路故障恢复-通讯故障(转发)");
+								reason="";
+								serverHandler.equipmentService.updateExstate("",reason,devId);
 							}
 							else if (fqbm.equals("C")) {
 								alarm.setWaringType("系统故障-恢复");
 								alarm.setContent("无线监控恢复-通讯故障(转发)");
+								reason="";
+								serverHandler.equipmentService.updateExstate("",reason,devId);
 							}
 							else if (fqbm.equals("E")) {
 								alarm.setWaringType("系统故障");
@@ -1358,6 +1442,8 @@
 							else if (fqbm.equals("F")) {
 								alarm.setWaringType("系统故障-恢复");
 								alarm.setContent("无线监控故障恢复-通讯故障(转发)");
+								reason="";
+								serverHandler.equipmentService.updateExstate("",reason,devId);
 							}
 							break;
 						case "9B":
@@ -1642,9 +1728,87 @@
 							break;
 					}
 
-					serverHandler.alarmService.s(alarm);
-					outData.add("LEOK#@");
 
+					if(alarm.getWaringType().equals("紧急求救")){
+						//警情分发测试代码
+						//查询所有闲置的接警员
+						List<Map<String, Object>> policeList = serverHandler.alarmService.queryPolice();
+						List<Map<String, Object>> online_police = new ArrayList<>();
+						List<Map<String, Object>> zx_police = new ArrayList<>();
+						for (int i = 0; i < policeList.size(); i++) {
+							//System.out.println(policeList.get(i).get("real_name"));
+							if(policeList.get(i).get("online_status").equals(1)){
+									zx_police.add(policeList.get(i));
+								if (policeList.get(i).get("work_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).get("id"));
+						}
+
+						//通过id计算接警员最后一次接警时间,倒序返回闲置最久的人员,派发任务
+						List<Map<String, Object>> police = serverHandler.alarmService.queryPoliceTime(policeIdArr);
+
+						if (police.size() != 0){
+							alarm.setAlarmId( police.get(0).get("alarmId").toString());
+							alarm.setAlarmPeople( police.get(0).get("alarmPeople").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).get("alarmId").toString(),"1");
+						}else {
+							alarm.setAlarmId( online_police.get(0).get("id").toString());
+							alarm.setAlarmPeople(online_police.get(0).get("name").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).get("id").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());
+					}
+
+					outData.add("LEOK#@");
+					long endTime1 = System.currentTimeMillis();    //获取结束时间
+
+					System.out.println("代码运行时间:" + (endTime1 - startTime1) + "ms");    //输出程序运行时间
 					break;
 				}
 				case "LD": {

--
Gitblit v1.9.3