2023年11月2日15:10:40

main
litao 2 years ago
parent c74c2be7ae
commit 7ebbbbf331
  1. 2
      src/main/java/org/springblade/hospital/agent/utils/QueueUtils.java
  2. 12
      src/main/java/org/springblade/hospital/controller/AlarmInformationController.java
  3. 25
      src/main/java/org/springblade/hospital/controller/AppDataController.java
  4. 10
      src/main/java/org/springblade/hospital/hik/alarm/Alarm.java
  5. 31
      src/main/java/org/springblade/hospital/newalarm/communicationCom/HTTPClientUtil.java
  6. 6
      src/main/java/org/springblade/hospital/utils/CornJobUtil.java
  7. 38
      src/main/java/org/springblade/hospital/utils/ExternalUtils.java
  8. 8
      src/main/java/org/springblade/hospital/websocket/WebSocketServer.java

@ -56,7 +56,7 @@ public class QueueUtils {
public boolean saveQueueDataStatus(Point point) {
//存放数据
System.out.println("队列数据数量:"+blockingQueue_status.size());
// System.out.println("队列数据数量:"+blockingQueue_status.size());
return blockingQueue_status.offer(point);
}

@ -66,7 +66,7 @@ public class AlarmInformationController extends BladeController {
@PostMapping("/hikRemote")
public R hikRemote(@RequestBody Map<String, Object> params) {
System.out.println("-------params:" + params);
// System.out.println("-------params:" + params);
// String data = params.get("data");
// System.out.println("-------data:" + data);
// Point point = new Gson().fromJson(JSON.toJSONString(params), Point.class);
@ -82,13 +82,13 @@ public class AlarmInformationController extends BladeController {
// .setPntTypeValue(Integer.parseInt(String.valueOf(params.get("pntTypeValue_"))))
.build();
System.out.println("-------point:" + point);
// System.out.println("-------point:" + point);
if (point == null) {
return R.success("请求参数不能为空");
}
// 上报海信iot平台
System.out.println(point);
// System.out.println(point);
boolean b = queueUtils.saveQueueDataStatus(point);
return R.status(b);
}
@ -161,7 +161,7 @@ public class AlarmInformationController extends BladeController {
@GetMapping("/playback")
public R playback(String cameraIndexCode, String beginTime, String endTime) throws Exception {
String result = ArtemisPostTest.callPostApiGetRegions(cameraIndexCode, beginTime, endTime);
System.out.println("res:" + result);
// System.out.println("res:" + result);
Map map = JSON.parseObject(result, Map.class);
if ("0".equals(map.get("code"))) {
Map url = (Map) map.get("data");
@ -182,13 +182,13 @@ public class AlarmInformationController extends BladeController {
if (map2.get("type") != null && "device_event".equals(map2.get("type").toString())) {
Map map3 = JSON.parseObject(map2.get("data").toString(), Map.class);
System.out.println("map3:" + map3);
// System.out.println("map3:" + map3);
// 报警信息数据过滤
if (map3.get("eventList") != null) {
List eventList = JSON.parseObject(map3.get("eventList").toString(), List.class);
if ("manualAlarm".equals(eventList.get(0))) {
System.out.println("ruku:--------------");
// System.out.println("ruku:--------------");
AlarmInformation alarmInformation = new AlarmInformation();
alarmInformation.setType("device_event");
alarmInformation.setReportTime(new Date(Long.parseLong(map.get("time").toString())));

@ -118,8 +118,8 @@ public class AppDataController extends BladeController {
String url = paramService.getValue("url");
// 设置请求Header
String appKey = "aS6T6X0u";
String appSecret = "F5pFaRzKdUA7jBzQWlg4UV36Hvej5AdntqjqkWRigio=";
String appKey = "BLjfCFWB";
String appSecret = "V/VznZDAm7v+8NF2f53p9SYpTZQvaS5lyntQOqQFV6Q=";
String zfcAll = "1234567890";
char[] zfc = zfcAll.toCharArray();
@ -408,18 +408,19 @@ public class AppDataController extends BladeController {
//
public static void main(String[] args) {
try {
RestTemplate restTemplate = new RestTemplate();
String url = "http://171.16.8.58:8080/prod-api/api/safeCare/callBack/getDeviceCamera?sn=1918FC32532E";
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
HttpEntity request = new HttpEntity(headers);
// 发送get请求,并输出结果
ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.GET, request, String.class);
// 返回数据
Map cameraMap = JSONObject.parseObject(exchange.getBody(), Map.class);
// RestTemplate restTemplate = new RestTemplate();
// String url = "http://171.16.8.58:8080/prod-api/api/safeCare/callBack/getDeviceCamera?sn=1918FC32532E";
// HttpHeaders headers = new HttpHeaders();
// headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
// HttpEntity request = new HttpEntity(headers);
// // 发送get请求,并输出结果
// ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.GET, request, String.class);
// // 返回数据
// Map cameraMap = JSONObject.parseObject(exchange.getBody(), Map.class);
// String rzUrl = "http://" + HTTPClientUtil.strIP + ":" + HTTPClientUtil.iPort + "/ISAPI/System/deviceInfo";
// String renzheng = HTTPClientUtil.renzheng(rzUrl, HTTPClientUtil.client);
String rzUrl = "http://171.16.206.140:80/ISAPI/System/deviceInfo";
String renzheng = HTTPClientUtil.renzheng(rzUrl, HTTPClientUtil.client);
// System.out.println(renzheng.contains("DS-PWA32-H20230524AACHQ25788522WU1"));
// System.out.println("shuchu:" + HTTPClientUtil.renzheng(rzUrl, HTTPClientUtil.client));

@ -29,7 +29,6 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.stream.Collectors;
/**
@ -47,7 +46,7 @@ public class Alarm implements CommandLineRunner {
static FMSGCallBack_V31 fMSFCallBack_V31 = null;
static FMSGCallBack fMSFCallBack;
static Map<String, Integer> numMap;
static Map<String, HttpClient> clientMap = new HashMap<>();
// static Map<String, HttpClient> clientMap = new HashMap<>();
public static Map<String, String> ipMap;
public static Map<String, String> portMap;
public static Map<String, String> macMap;
@ -521,9 +520,6 @@ public class Alarm implements CommandLineRunner {
@Override
public void run(String... args) {
try {
if (clientMap == null) {
clientMap = new HashMap<>();
}
if (ipMap == null) {
ipMap = new HashMap<>();
}
@ -538,6 +534,7 @@ public class Alarm implements CommandLineRunner {
AtomicInteger size = new AtomicInteger(0);
List<Thread> threadList = new ArrayList<>();
ScheduledFuture<?> scheduledFuture = scheduled.scheduleAtFixedRate(() -> {
log.info("我执行了1");
List<Map> list = externalUtils.getList(0, 0, null, null, "105", null);
log.info("获取报警主机列表数量为:" + list.size());
if (list.size() != size.get()) {
@ -554,7 +551,6 @@ public class Alarm implements CommandLineRunner {
}, 0, 1, TimeUnit.DAYS);
} catch (Exception e) {
e.printStackTrace();
}
@ -672,7 +668,7 @@ public class Alarm implements CommandLineRunner {
String mac = tagsMap.get("mac").toString();
HttpClient client = new HttpClient();
clientMap.put(number, client);
// clientMap.put(number, client);
ipMap.put(number, ip);
portMap.put(number, port);
macMap.put(mac, number);

@ -34,6 +34,7 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Slf4j
public class HTTPClientUtil {
@ -72,6 +73,20 @@ public class HTTPClientUtil {
return strResponseData;
}
public static String statusRz(String rzUrl, HttpClient client) throws IOException {
// 设置用户名和密码
UsernamePasswordCredentials creds = new UsernamePasswordCredentials("admin", "hao12345");
client.getState().setCredentials(AuthScope.ANY, creds);
GetMethod method = new GetMethod(rzUrl);
method.setDoAuthentication(true);
int statusCode = client.executeMethod(method);
byte[] responseData = method.getResponseBodyAsString().getBytes(method.getResponseCharSet());
String strResponseData = new String(responseData, "utf-8");
method.releaseConnection();
// 输出接收的消息
return strResponseData;
}
public static String doGet(String url, HttpClient client) {
GetMethod method = new GetMethod(url);
@ -136,10 +151,12 @@ public class HTTPClientUtil {
List<Map> list = new ArrayList<>();
while ((str = br.readLine()) != null && !Thread.currentThread().isInterrupted()) {
// log.info("读取导数据,开始解析" + str);
try {
Thread.sleep(1000);
// 检查线程是否打断
Thread.sleep(10);
} catch (Exception e) {
System.out.println("Thread 停止!");
log.info("Thread 停止!");
break;
}
if (str.contains("--boundary")) {
@ -148,7 +165,7 @@ public class HTTPClientUtil {
if (resMap.get("CIDEvent") != null) {
// 报警信息
Map cidMap = JSON.parseObject(resMap.get("CIDEvent").toString(), Map.class);
System.out.println("报警信息:" + cidMap);
log.info("报警信息:" + cidMap);
if (externalUtils == null) {
externalUtils = SpringUtil.getBean(ExternalUtils.class);
@ -179,7 +196,9 @@ public class HTTPClientUtil {
alarmInformation.setReportTime(new Date());
alarmInformation.setType(sCIDCode);
alarmInformation.setContent(DictBizCache.getValue("alarm_message_type", sCIDCode));
if (cidMap.get("system") != null) {
alarmInformation.setSystemNum(Integer.parseInt(cidMap.get("system").toString()));
}
alarmInformation.setHostSerialNumber(sSerialNumber);
alarmInformation.setHostIp(resMap.get("ipAddress").toString());
alarmInformation.setAlarmType(1);
@ -270,11 +289,11 @@ public class HTTPClientUtil {
}
// System.out.println("接收到的数据:" + resMap);
}
// System.out.println(sSerialNumber + "接收到的数据:" + str);
// log.info("开始下次循环读数据。");
}
log.info("读数据结束,释放连接");
method.releaseConnection();
} catch (IOException e) {
} catch (Exception e) {
log.error("url:" + url + ",通讯出现错误,错误信息是:" + e.toString());
//出现错误,每隔1s,重新尝试调用
try {

@ -51,7 +51,7 @@ public class CornJobUtil {
* 定时更新设备状态每1分钟执行一次
*/
@Async
// @Scheduled(initialDelay = 5000, fixedRate = 60000)
@Scheduled(initialDelay = 5000, fixedRate = 60000)
public void updateStatus() {
System.out.println("定时1分钟获取1次设备状态");
externalUtils.updateStatus();
@ -63,7 +63,7 @@ public class CornJobUtil {
@Async
// @Scheduled(initialDelay = 6000, fixedRate = 180000)
public void task() {
System.out.println("定时任务执行了2");
// System.out.println("定时任务执行了2");
List<CornJob> jobs = cornJobService.list(Wrappers.<CornJob>lambdaQuery().eq(CornJob::getStatus, 1).eq(CornJob::getIsRegular, 1));
if (CollectionUtils.isNotEmpty(jobs)) {
List<CornJob> jobList = new ArrayList<>();
@ -72,7 +72,7 @@ public class CornJobUtil {
if (new Date().compareTo(nextExecuteTime) < 0) {
continue;
}
System.out.println("-----------------====================");
// System.out.println("-----------------====================");
try {
if (StringUtils.isNotBlank(job.getDeviceId())) {
String[] ids = job.getDeviceId().split(",");

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.google.protobuf.ByteString;
import com.hisense.device.agent.grpc.Point;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springblade.common.cache.ParamCache;
import org.springblade.core.cache.utils.CacheUtil;
@ -22,6 +23,7 @@ import org.springframework.http.*;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -32,6 +34,7 @@ import static org.springblade.common.constant.CommonConstant.IOT_PLATFORM_URL;
import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
@Component
@Slf4j
public class ExternalUtils {
@Autowired
@ -63,7 +66,7 @@ public class ExternalUtils {
String data = JSON.toJSONString(r.getData());
Map<String, String> map = JSONObject.parseObject(data, Map.class);
String token = map.get("token");
System.out.println("token" + token);
// System.out.println("token" + token);
return token;
}
@ -138,15 +141,21 @@ public class ExternalUtils {
* 更新设备状态
*/
public void updateStatus() {
List<Map> hosts = null;
List<Map> mapList = null;
try {
// 报警主机信息
List<Map> hosts = getList(0, 0, null, null, "105", null);
hosts = getList(0, 0, null, null, "105", null);
// 子系统、防区信息
List<Map> mapList = getList(0, 0, null, null, "100", null);
mapList = getList(0, 0, null, null, "100", null);
} catch (Exception e) {
log.info("获取设备信息失败!");
}
// 遍历设备列表更新设备状态信息
if (CollectionUtils.isNotEmpty(hosts)) {
try {
for (Map hostMap : hosts) {
String tags = JSON.toJSONString(hostMap.get("tags")).replace("\\", "");
tags = tags.substring(1, tags.length() - 1);
@ -155,8 +164,14 @@ public class ExternalUtils {
String mac = tagMap.get("mac").toString(); // 自定义mac
// 认证
String renzheng = null;
try {
String rzUrl = "http://" + Alarm.ipMap.get(number) + ":" + Alarm.portMap.get(number) + "/ISAPI/System/deviceInfo";
String renzheng = HTTPClientUtil.renzheng(rzUrl, HTTPClientUtil.client);
renzheng = HTTPClientUtil.statusRz(rzUrl, HTTPClientUtil.client);
} catch (IOException e) {
log.info("该设备连接失败!");
continue;
}
if (renzheng.contains(number)) {
// 获取该报警主机的所有状态
@ -166,7 +181,7 @@ public class ExternalUtils {
Map statusMap = JSONObject.parseObject(statusData, Map.class);
Map alarmHostStatus = JSONObject.parseObject(statusMap.get("AlarmHostStatus").toString(), Map.class);
Map communiStatus = JSONObject.parseObject(alarmHostStatus.get("CommuniStatus").toString(), Map.class);
System.out.println("CommuniStatus" + communiStatus);
// System.out.println("CommuniStatus" + communiStatus);
// 如果通讯断开跳过
if (!"normal".equals(communiStatus.get("wired"))) {
@ -175,10 +190,10 @@ public class ExternalUtils {
// 防区状态
List<Map> zoneList = JSONObject.parseObject(alarmHostStatus.get("ZoneList").toString(), List.class);
System.out.println("ZoneList" + zoneList);
// System.out.println("ZoneList" + zoneList);
// 子系统状态
List<Map> subSysList = JSONObject.parseObject(alarmHostStatus.get("SubSysList").toString(), List.class);
System.out.println("SubSysList" + subSysList);
// System.out.println("SubSysList" + subSysList);
// 过滤只有该报警主机下的子系统、防区
List<Map> list = mapList.stream().filter(map -> JSON.toJSONString(map.get("tags")).contains(number)).collect(Collectors.toList());
@ -275,9 +290,6 @@ public class ExternalUtils {
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
@ -371,7 +383,7 @@ public class ExternalUtils {
CacheUtil.put(SYS_CACHE, "token:id:", "wlwtoken", token);
respon = device(token, id, status);
}
System.out.println(respon);
// System.out.println(respon);
}
private Map device(String token, int id, int status) {
@ -464,6 +476,6 @@ public class ExternalUtils {
// 发送post请求,并输出结果
R r = restTemplate.postForObject(url, httpEntity, R.class);
System.out.println("调用远程服务器接口成功!!:" + r);
// System.out.println("调用远程服务器接口成功!!:" + r);
}
}

@ -50,7 +50,7 @@ public class WebSocketServer {
// 如果有重复sid连接,拒绝
for (WebSocketServer webSocketServer : webSocketSet) {
if (sid.equals(webSocketServer.sid)) {
System.out.println(sid + "已存在,拒绝连接!");
// System.out.println(sid + "已存在,拒绝连接!");
// try {
// session.getBasicRemote().sendText(sid + "已存在,拒绝连接!");
// System.out.println("当前连接:" + session);
@ -98,7 +98,7 @@ public class WebSocketServer {
*/
@OnMessage
public void onMessage(String message, Session session) {
log.info("收到来自实例:{},的信息:{}", sid, message);
// log.info("收到来自实例:{},的信息:{}", sid, message);
//群发消息
for (WebSocketServer webSocketServer : webSocketSet) {
try {
@ -140,7 +140,7 @@ public class WebSocketServer {
System.out.println("webSocketSet连接数量:" + webSocketSet.size());
for (WebSocketServer item : webSocketSet) {
try {
System.out.println(item.sid + "===" + item.session);
// System.out.println(item.sid + "===" + item.session);
item.sendMessage(message);
} catch (Exception e) {
continue;
@ -149,7 +149,7 @@ public class WebSocketServer {
}
public static void test() {
System.out.println("webSocketSet连接数量:" + webSocketSet.size());
// System.out.println("webSocketSet连接数量:" + webSocketSet.size());
for (WebSocketServer item : webSocketSet) {
System.out.println(item.sid + "===" + item.session);
}

Loading…
Cancel
Save