From cd2cfd37366002f790a2ed1435962d4eff7d5cec Mon Sep 17 00:00:00 2001
From: zengh <123456>
Date: Tue, 01 Jun 2021 09:39:30 +0800
Subject: [PATCH] 版本合并
---
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/nettyServer/ServerHandler.java | 189 ++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 178 insertions(+), 11 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..c4c4ca8 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
@@ -1,5 +1,6 @@
package org.springblade.jfpt.nettyServer;
+import com.alibaba.fastjson.JSONObject;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.Channel;
@@ -17,6 +18,7 @@
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.parcel.util.HttpClientUtils;
import org.springblade.jfpt.webscoket.service.IPushMsgService;
import org.springblade.system.user.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
@@ -24,10 +26,7 @@
import javax.annotation.PostConstruct;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@Component
@@ -141,13 +140,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);
@@ -1647,6 +1704,26 @@
//通过websocket给前端接警员发送信息
serverHandler.pushMsgService.pushMsg(alarm.getAlarmId(), alarm.getId().toString());
+
+ Map<String, String> map = new HashMap<>();
+ map.put("deviceCode", (String) list.get(0).get("serialNumber"));
+ map.put("chl", (String) list.get(0).get("channelNumber"));
+
+
+ //请求视频播放地址
+ String params = HttpClientUtils.doGet("https://web.byisf.com:18000/GetPlayUrl", map);
+
+ Map<String, Object> data = (Map<String, Object>) JSONObject.parse(params);
+ if (!data.get("code").toString().equals("-1")){
+ Map<String, Object> datas = (Map<String, Object>) JSONObject.parse(data.get("data").toString());
+ String m3u8 = datas.get("m3u8").toString();
+
+ Map<String, String> rmap = new HashMap<>();
+ rmap.put("url", m3u8);
+
+ //请求视频录制
+ //String rvideo = HttpClientUtils.doPost("https://web.byisf.com/api/blade-jfpts/rvideo/rVoids", rmap);
+ }
}
outData.add("LEOK#@");
@@ -1728,4 +1805,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