2023年11月10日17:53:02

main
litao 2 years ago
parent 7ebbbbf331
commit 35ee71efb1
  1. 5
      src/main/java/org/springblade/hospital/agent/service/HikAgentService.java
  2. 3
      src/main/java/org/springblade/hospital/agent/utils/QueueUtils.java
  3. 14
      src/main/java/org/springblade/hospital/controller/AlarmInformationController.java
  4. 4
      src/main/java/org/springblade/hospital/controller/AppDataController.java
  5. 2
      src/main/java/org/springblade/hospital/controller/BfcfLogController.java
  6. 27
      src/main/java/org/springblade/hospital/hik/alarm/Alarm.java
  7. 1
      src/main/java/org/springblade/hospital/mapper/AlarmInformationMapper.java
  8. 4
      src/main/java/org/springblade/hospital/newalarm/communicationCom/HTTPClientUtil.java
  9. 3
      src/main/java/org/springblade/hospital/service/impl/AppDataServiceImpl.java
  10. 27
      src/main/java/org/springblade/hospital/utils/CornJobUtil.java
  11. 2
      src/main/java/org/springblade/hospital/utils/ExternalUtils.java
  12. 7
      src/main/java/org/springblade/hospital/websocket/WebSocketServer.java
  13. 180
      src/main/resources/log/logback-dev.xml

@ -10,6 +10,8 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.hospital.agent.annotation.GrpcService;
import org.springblade.hospital.agent.constant.MemoryCache;
import org.springblade.hospital.agent.dto.Constant;
@ -20,6 +22,7 @@ import org.springblade.hospital.agent.hik.utils.HikClient;
import org.springblade.hospital.agent.utils.DataTrans;
import org.springblade.hospital.agent.utils.QueueUtils;
import org.springblade.hospital.hik.alarm.Alarm;
import org.springblade.hospital.newalarm.communicationCom.HTTPClientUtil;
import org.springblade.hospital.utils.ExternalUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
@ -180,7 +183,7 @@ public class HikAgentService extends AgentGrpc.AgentImplBase {
int devType = request.getDevType();
List<Map> list = externalUtils.getList(page, pagesize, null, String.valueOf(devType), "100", null);
System.out.println("list======" + list);
log.info("list======" + list);
// List<RoadwayVo> roadwayVoList = hikService.getTheDeviceInfo();

@ -5,6 +5,9 @@ import com.hisense.device.agent.grpc.DataResponse;
import com.hisense.device.agent.grpc.Point;
import io.grpc.stub.StreamObserver;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.hospital.agent.service.HikAgentService;
import org.springframework.stereotype.Component;
import java.util.Arrays;

@ -25,6 +25,7 @@ import com.google.gson.Gson;
import com.google.protobuf.ByteString;
import com.hisense.device.agent.grpc.Point;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.json.JSONException;
import org.springblade.common.cache.DictBizCache;
import org.springblade.core.boot.ctrl.BladeController;
@ -46,6 +47,7 @@ import org.springframework.http.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
@ -57,6 +59,7 @@ import java.util.*;
@NonDS
@RestController
@AllArgsConstructor
@Slf4j
@RequestMapping("/alarmInformation")
public class AlarmInformationController extends BladeController {
@ -220,4 +223,15 @@ public class AlarmInformationController extends BladeController {
}
}
/**
* 获取客户端IP
*/
@GetMapping("/getIp")
@CrossOrigin
public R getIp(HttpServletRequest request) {
String ip = request.getRemoteAddr();
// log.info("IP:" + ip);
return R.data(ip);
}
}

@ -20,6 +20,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.lang3.RandomStringUtils;
@ -66,6 +67,7 @@ import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
@RestController
@AllArgsConstructor
@RequestMapping("/appData")
@Slf4j
public class AppDataController extends BladeController {
private final IAppDataService appDataService;
@ -79,6 +81,7 @@ public class AppDataController extends BladeController {
@GetMapping("/list")
public R<IPage<AppData>> list(AppData appData, Query query) {
log.info("/appData/list执行了--------------");
return R.data(appDataService.getPage(Condition.getPage(query), appData));
}
@ -405,7 +408,6 @@ public class AppDataController extends BladeController {
}
}
//
public static void main(String[] args) {
try {
// RestTemplate restTemplate = new RestTemplate();

@ -18,6 +18,8 @@ package org.springblade.hospital.controller;
import io.swagger.annotations.Api;
import lombok.AllArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.tenant.annotation.NonDS;
import org.springframework.web.bind.annotation.RequestMapping;

@ -534,7 +534,7 @@ public class Alarm implements CommandLineRunner {
AtomicInteger size = new AtomicInteger(0);
List<Thread> threadList = new ArrayList<>();
ScheduledFuture<?> scheduledFuture = scheduled.scheduleAtFixedRate(() -> {
log.info("我执行了1");
// log.info("我执行了1");
List<Map> list = externalUtils.getList(0, 0, null, null, "105", null);
log.info("获取报警主机列表数量为:" + list.size());
if (list.size() != size.get()) {
@ -545,8 +545,24 @@ public class Alarm implements CommandLineRunner {
}
}
threadList.clear();
// 物联网平台获取的报警主机列表
getList(list, threadList);
// 51服务器使用:物联网平台获取的报警主机列表
// getList(list, threadList);
// 52服务器使用:不需要监听,只获取设备信息:ip、端口号、mac
for (Map map : list) {
String s = JSON.toJSONString(map.get("tags")).replace("\\", "");
s = s.substring(1, s.length() - 1);
Map tagsMap = JSONObject.parseObject(s, Map.class);
// 报警主机信息
String number = tagsMap.get("hostNumber").toString();//序列号
String ip = tagsMap.get("ip").toString();
String port = tagsMap.get("port").toString();
String mac = tagsMap.get("mac").toString();
ipMap.put(number, ip);
portMap.put(number, port);
macMap.put(mac, number);
}
}
}, 0, 1, TimeUnit.DAYS);
@ -677,7 +693,7 @@ public class Alarm implements CommandLineRunner {
// 登录认证
String rzUrl = "http://" + ip + ":" + port + "/ISAPI/System/deviceInfo";
String renzheng = HTTPClientUtil.renzheng(rzUrl, client);
System.out.println("登录信息:" + renzheng);
log.info("登录信息:" + renzheng);
if (renzheng.contains(number)) {
// 获取设备系统能力集
@ -696,7 +712,7 @@ public class Alarm implements CommandLineRunner {
" <heartbeat>1</heartbeat>\n" +
" <eventMode>all</eventMode>\n" +
"</SubscribeEvent>";
System.out.println("jl:" + clientUtil.doPost(jlUrl, xml, number, client, mac));
log.info("jl:" + clientUtil.doPost(jlUrl, xml, number, client, mac));
}
});
thread.start();
@ -704,4 +720,5 @@ public class Alarm implements CommandLineRunner {
}
}
}
}

@ -31,4 +31,5 @@ import java.util.List;
public interface AlarmInformationMapper extends BaseMapper<AlarmInformation> {
List<AlarmInformationExcel> export(AlarmInformation alarmInformation);
}

@ -14,6 +14,8 @@ import org.apache.commons.httpclient.methods.DeleteMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.PutMethod;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.common.cache.DictBizCache;
import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.hospital.agent.utils.DataTrans;
@ -54,7 +56,7 @@ public class HTTPClientUtil {
String strResponseData = null;
try {
int statusCode = client.executeMethod(method);
System.out.println("认证状态码:" + statusCode);
log.info("认证状态码:" + statusCode);
byte[] responseData = method.getResponseBodyAsString().getBytes(method.getResponseCharSet());
strResponseData = new String(responseData, "utf-8");
} catch (IOException e) {

@ -77,8 +77,9 @@ public class AppDataServiceImpl extends BaseServiceImpl<AppDataMapper, AppData>
BladeFile bladeFile = ossBuilder.template().putFile(file.getOriginalFilename(), file.getInputStream());
String link = bladeFile.getLink();
Attach attach = new Attach();
attach.setLink(link);
attach.setLink("http://192.169.9.252:1883/hospital/" + bladeFile.getName());
attach.setOriginalName(file.getOriginalFilename());
attach.setName(bladeFile.getName());
attachService.save(attach);
url += attach.getId() + ",";

@ -1,38 +1,25 @@
package org.springblade.hospital.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.protobuf.ByteString;
import com.hisense.device.agent.grpc.Point;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.springblade.common.cache.DictBizCache;
import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.hospital.agent.utils.DataTrans;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.hospital.agent.utils.QueueUtils;
import org.springblade.hospital.entity.AlarmInformation;
import org.springblade.hospital.entity.CornJob;
import org.springblade.hospital.hik.NetSDKDemo.HCNetSDK;
import org.springblade.hospital.hik.alarm.Alarm;
import org.springblade.hospital.service.IAlarmInformationService;
import org.springblade.hospital.service.ICornJobService;
import org.springblade.hospital.websocket.WebSocketServer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.*;
@Component
@Slf4j
public class CornJobUtil {
@Autowired
@ -53,14 +40,14 @@ public class CornJobUtil {
@Async
@Scheduled(initialDelay = 5000, fixedRate = 60000)
public void updateStatus() {
System.out.println("定时1分钟获取1次设备状态");
log.info("定时1分钟获取1次设备状态");
externalUtils.updateStatus();
}
/**
* 定时布撤防每3分钟执行一次
*/
@Async
// @Async
// @Scheduled(initialDelay = 6000, fixedRate = 180000)
public void task() {
// System.out.println("定时任务执行了2");
@ -106,7 +93,7 @@ public class CornJobUtil {
}
}
@Async
// @Async
// @Scheduled(initialDelay = 7000, fixedRate = 3600000)
public void testWebSocket() {
// System.out.println("定时任务执行了3");

@ -8,6 +8,8 @@ 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.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.common.cache.ParamCache;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.tool.api.R;

@ -2,6 +2,9 @@ package org.springblade.hospital.websocket;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.hospital.agent.utils.QueueUtils;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestBody;
import javax.websocket.*;
@ -137,7 +140,7 @@ public class WebSocketServer {
String message = json.get("message").toString();
log.info("推送内容:" + message);
System.out.println("webSocketSet连接数量:" + webSocketSet.size());
log.info("webSocketSet连接数量:" + webSocketSet.size());
for (WebSocketServer item : webSocketSet) {
try {
// System.out.println(item.sid + "===" + item.session);
@ -151,7 +154,7 @@ public class WebSocketServer {
public static void test() {
// System.out.println("webSocketSet连接数量:" + webSocketSet.size());
for (WebSocketServer item : webSocketSet) {
System.out.println(item.sid + "===" + item.session);
log.info(item.sid + "===" + item.session);
}
}

@ -1,113 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds">
<!-- 自定义参数监听 -->
<contextListener class="org.springblade.core.log.listener.LoggerStartupListener"/>
<springProperty scope="context" name="springAppName" source="spring.application.name"/>
<configuration>
<!-- 日志存放路径 -->
<property name="log.path" value="/home/hospital/project/logs" />
<!-- 日志输出格式 -->
<property name="log.pattern" value="%red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - (%msg%n)" />
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<if condition='property("ELK_MODE").toUpperCase().contains("TRUE")'>
<then>
<!-- 推送日志至elk -->
<appender name="STDOUT_LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>${DESTINATION}</destination>
<!-- 日志输出编码 -->
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp>
<timeZone>UTC</timeZone>
</timestamp>
<pattern>
<pattern>
{
"traceId": "%X{traceId}",
"requestId": "%X{requestId}",
"accountId": "%X{accountId}",
"tenantId": "%X{tenantId}",
"logLevel": "%level",
"serviceName": "${springAppName:-SpringApp}",
"pid": "${PID:-}",
"thread": "%thread",
"class": "%logger{40}",
"line":"%L",
"message": "%message"
}
</pattern>
</pattern>
<mdc/>
<stackTrace/>
</providers>
</encoder>
</appender>
</then>
</if>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="${STDOUT_APPENDER}"/>
</root>
<logger name="net.sf.ehcache" level="INFO"/>
<logger name="druid.sql" level="INFO"/>
<!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-info.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>2</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>INFO</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-error.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>2</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>ERROR</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- MyBatis log configure -->
<logger name="com.apache.ibatis" level="INFO"/>
<logger name="org.mybatis.spring" level="INFO"/>
<logger name="java.sql.Connection" level="INFO"/>
<logger name="java.sql.Statement" level="INFO"/>
<logger name="java.sql.PreparedStatement" level="INFO"/>
<!-- 用户访问日志输出 -->
<appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-user.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天回滚 daily -->
<fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>2</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 减少部分debug日志 -->
<logger name="druid.sql" level="INFO"/>
<logger name="org.apache.shiro" level="INFO"/>
<logger name="org.mybatis.spring" level="INFO"/>
<logger name="org.springframework" level="INFO"/>
<logger name="org.springframework.context" level="WARN"/>
<logger name="org.springframework.beans" level="WARN"/>
<logger name="com.baomidou.mybatisplus" level="INFO"/>
<logger name="org.apache.ibatis.io" level="INFO"/>
<logger name="org.apache.velocity" level="INFO"/>
<logger name="org.eclipse.jetty" level="INFO"/>
<logger name="io.undertow" level="INFO"/>
<logger name="org.xnio.nio" level="INFO"/>
<logger name="org.thymeleaf" level="INFO"/>
<logger name="springfox.documentation" level="INFO"/>
<logger name="org.hibernate.validator" level="INFO"/>
<logger name="com.netflix.loadbalancer" level="INFO"/>
<logger name="com.netflix.hystrix" level="INFO"/>
<logger name="com.netflix.zuul" level="INFO"/>
<logger name="de.codecentric" level="INFO"/>
<!-- cache INFO -->
<logger name="net.sf.ehcache" level="INFO"/>
<logger name="org.springframework.cache" level="INFO"/>
<!-- cloud -->
<logger name="org.apache.http" level="INFO"/>
<logger name="com.netflix.discovery" level="INFO"/>
<logger name="com.netflix.eureka" level="INFO"/>
<!-- 业务日志 -->
<Logger name="org.springblade" level="INFO"/>
<Logger name="org.springblade.core.tenant" level="INFO"/>
<Logger name="org.springblade.core.version" level="INFO"/>
<!-- 系统模块日志级别控制 -->
<logger name="com.haier.cosmo.hmzy.zhgd" level="info" />
<!-- Spring日志级别控制 -->
<logger name="org.springframework" level="warn" />
<!-- 减少nacos日志 -->
<logger name="com.alibaba.nacos" level="ERROR"/>
<root level="info">
<appender-ref ref="console" />
</root>
<!--系统操作日志-->
<root level="info">
<appender-ref ref="file_info" />
<appender-ref ref="file_error" />
</root>
<!--系统用户操作日志-->
<logger name="sys-user" level="info">
<appender-ref ref="sys-user"/>
</logger>
</configuration>

Loading…
Cancel
Save