Browse Source

新网关采集设置

master
mh 3 months ago
parent
commit
615762986b
  1. 20
      pom.xml
  2. 10
      user-service/pom.xml
  3. 15
      user-service/src/main/java/com/mh/user/UserServiceApplication.java
  4. 96
      user-service/src/main/java/com/mh/user/config/SwaggerConfig.java
  5. 444
      user-service/src/main/java/com/mh/user/job/CollectionLoopRunner.java
  6. 2
      user-service/src/main/java/com/mh/user/netty/EchoServer.java
  7. 2
      user-service/src/main/java/com/mh/user/netty/ServerChannelInitializer.java
  8. 52
      user-service/src/main/resources/bootstrap.yml
  9. 83
      user-service/src/main/resources/logback-spring.xml

20
pom.xml

@ -34,16 +34,16 @@
<groupId>org.jolokia</groupId>
<artifactId>jolokia-core</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger2</artifactId>-->
<!-- <version>${swagger.version}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger-ui</artifactId>-->
<!-- <version>${swagger.version}</version>-->
<!-- </dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>

10
user-service/pom.xml

@ -129,11 +129,11 @@
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!--spring-boot-admin -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.2.2</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>de.codecentric</groupId>-->
<!-- <artifactId>spring-boot-admin-starter-client</artifactId>-->
<!-- <version>2.2.2</version>-->
<!-- </dependency>-->
<!-- Lombok-->
<dependency>
<groupId>org.projectlombok</groupId>

15
user-service/src/main/java/com/mh/user/UserServiceApplication.java

@ -1,9 +1,11 @@
package com.mh.user;
import com.mh.user.constants.Constant;
import com.mh.user.entity.ProjectInfoEntity;
import com.mh.user.job.CollectionLoopRunner;
import com.mh.user.netty.EchoServer;
import com.mh.user.service.DeviceCodeParamService;
import com.mh.user.service.ProjectInfoService;
import com.mh.user.utils.GetReadOrder485;
import lombok.extern.slf4j.Slf4j;
import org.apache.log4j.Logger;
@ -15,6 +17,7 @@ import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.scheduling.annotation.EnableScheduling;
import javax.annotation.PreDestroy;
import java.util.List;
@SpringBootApplication(scanBasePackages = "com.mh.user")
@ -24,9 +27,6 @@ public class UserServiceApplication extends SpringBootServletInitializer {
private static final Logger log = Logger.getLogger(UserServiceApplication.class);
@Autowired
DeviceCodeParamService deviceCodeParamService;
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(UserServiceApplication.class);
@ -38,15 +38,6 @@ public class UserServiceApplication extends SpringBootServletInitializer {
//System.out.println(Constant.projectId);
//Constant.projectId=7;
//System.out.println(Constant.projectId);
GetReadOrder485 getReadOrder485=new GetReadOrder485();
getReadOrder485.createOrderParam("2"); //生成采集参数,1新珠江,2广合科技,3广大科技,6珠江国际,7保利山庄,8东莞迎宾馆
try{
new EchoServer(6001).start(); // 调用服务器的start方法,网关作为客户端,6006新珠江,6001广合科技,6077广大科技
// new EchoServer2(6013).start(); // 6028(6006)珠江国际,5000保利山庄,6004东莞迎宾馆
// log.info("测试日志路径========!");
}catch (Exception e){
System.out.println("端口已占用!");
}
}
@PreDestroy

96
user-service/src/main/java/com/mh/user/config/SwaggerConfig.java

@ -1,49 +1,49 @@
package com.mh.user.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List;
/**
* @author ljf
* @title
* @description
* @updateTime 2020-03-13
* @throws
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi(){
// 添加请求参数,我们这里把token作为请求头部参数传入后端
ParameterBuilder parameterBuilder = new ParameterBuilder();
List<Parameter> parameters = new ArrayList<Parameter>();
parameterBuilder.name("token").description("令牌")
.modelRef(new ModelRef("string")).parameterType("header").required(false).build();
parameters.add(parameterBuilder.build());
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
.apis(RequestHandlerSelectors.any()).paths(PathSelectors.any())
.build().globalOperationParameters(parameters);
//package com.mh.user.config;
//
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import springfox.documentation.builders.ApiInfoBuilder;
//import springfox.documentation.builders.ParameterBuilder;
//import springfox.documentation.builders.PathSelectors;
//import springfox.documentation.builders.RequestHandlerSelectors;
//import springfox.documentation.schema.ModelRef;
//import springfox.documentation.service.ApiInfo;
//import springfox.documentation.service.Parameter;
//import springfox.documentation.spi.DocumentationType;
//import springfox.documentation.spring.web.plugins.Docket;
//import springfox.documentation.swagger2.annotations.EnableSwagger2;
//
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * @author ljf
// * @title :
// * @description :
// * @updateTime 2020-03-13
// * @throws :
// */
//@Configuration
//@EnableSwagger2
//public class SwaggerConfig {
//
// @Bean
// public Docket createRestApi(){
// // 添加请求参数,我们这里把token作为请求头部参数传入后端
// ParameterBuilder parameterBuilder = new ParameterBuilder();
// List<Parameter> parameters = new ArrayList<Parameter>();
// parameterBuilder.name("token").description("令牌")
// .modelRef(new ModelRef("string")).parameterType("header").required(false).build();
// parameters.add(parameterBuilder.build());
// return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
// .apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()).build();
}
private ApiInfo apiInfo(){
return new ApiInfoBuilder().build();
}
}
// .apis(RequestHandlerSelectors.any()).paths(PathSelectors.any())
// .build().globalOperationParameters(parameters);
//// return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
//// .apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()).build();
// }
//
// private ApiInfo apiInfo(){
// return new ApiInfoBuilder().build();
// }
//
//}

444
user-service/src/main/java/com/mh/user/job/CollectionLoopRunner.java

@ -1,14 +1,18 @@
package com.mh.user.job;
import com.mh.user.entity.AddCronJobReq;
import com.mh.user.entity.ProjectInfoEntity;
import com.mh.user.manage.QuartzManager;
import com.mh.user.netty.EchoServer;
import com.mh.user.serialport.SerialPortListener;
import com.mh.user.serialport.SerialPortUtil;
import com.mh.user.service.ProjectInfoService;
import com.mh.user.utils.GetReadOrder485;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import lombok.extern.slf4j.Slf4j;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
@ -25,231 +29,241 @@ import java.util.Map;
* @updateTime 2020-05-15
* @throws
*/
//@Component
@Component
public class CollectionLoopRunner implements ApplicationRunner {
private static final Logger log = Logger.getLogger(CollectionLoopRunner.class);
@Resource
QuartzManager quartzManager;
public static SerialPort serialPort = null;
@Autowired
ProjectInfoService projectInfoService;
@Override
public void run(ApplicationArguments args) throws Exception {
// collectionMeterAndCloud();
log.info("==================测试日志================");
}
public void test() throws Exception {
System.out.println("测试定时采集开关");
// 执行定义的定时采集程序
Map<String, String> params = new HashMap<>();
params.put("id", "2");
params.put("name", "test1");
//每 1 分钟 执行一次
AddCronJobReq addCronJobReq = new AddCronJobReq();
addCronJobReq.setDate("0/10 * * * * ?");
// addCronJobReq.setDate("0/5 * * * * ?");
addCronJobReq.setJobClass("JobTest1");
addCronJobReq.setJobGroupName("JobTestGroup1");
addCronJobReq.setJobName("Test1");
addCronJobReq.setParams(params);
addCronJobReq.setTriggerGroupName("triggerTestGroup1");
addCronJobReq.setTriggerName("triggerTest1");
quartzManager.addCronJob(addCronJobReq);
}
/**
* 定时采集电表和冷量计
*
* @throws Exception
*/
public void collectionMeterAndCloud() throws Exception {
// 执行定义的定时采集程序
Map<String, String> params = new HashMap<>();
params.put("id", "6");
params.put("name", "cloud_meter");
AddCronJobReq addCronJobReq = new AddCronJobReq();
//每 15 分钟 执行一次
addCronJobReq.setDate("0 0/15 * * * ?");
//每 3 分钟 执行一次
// addCronJobReq.setDate("35 0/2 * * * ?");
//每 2 分钟 执行一次
// addCronJobReq.setDate("25 0/2 * * * ?");
//每 1 分钟 执行一次
// addCronJobReq.setDate("0/10 * * * * ?");
// addCronJobReq.setDate("0/5 * * * * ?");
addCronJobReq.setJobClass("JobCloudAndMeter");
addCronJobReq.setJobGroupName("JobCloudAndMeterGroup");
addCronJobReq.setJobName("CloudAndMeter");
addCronJobReq.setParams(params);
addCronJobReq.setTriggerGroupName("triggerCloudAndMeterGroup");
addCronJobReq.setTriggerName("triggerCloudAndMeter");
quartzManager.addCronJob(addCronJobReq);
}
/**
* 定时采集冷量计
*
* @throws Exception
*/
public void collectionCloud() throws Exception {
// 执行定义的定时采集程序
Map<String, String> params = new HashMap<>();
params.put("id", "1");
params.put("name", "cloud");
AddCronJobReq addCronJobReq = new AddCronJobReq();
//每 2 分钟 执行一次
addCronJobReq.setDate("25 0/2 * * * ?");
// addCronJobReq.setDate("0/5 * * * * ?");
addCronJobReq.setJobClass("JobCloud");
addCronJobReq.setJobGroupName("JobCloudGroup");
addCronJobReq.setJobName("Cloud");
addCronJobReq.setParams(params);
addCronJobReq.setTriggerGroupName("triggerCloudGroup");
addCronJobReq.setTriggerName("triggerCloud");
quartzManager.addCronJob(addCronJobReq);
}
/**
* 定时采集电表
*
* @throws Exception
*/
public void collectionMeter() throws Exception {
// 执行定义的定时采集程序
Map<String, String> params = new HashMap<>();
params.put("id", "2");
params.put("name", "meter");
AddCronJobReq addCronJobReq = new AddCronJobReq();
//每 3 分钟 执行一次
addCronJobReq.setDate("35 0/2 * * * ?");
// addCronJobReq.setDate("0/20 * * * * ?");
addCronJobReq.setJobClass("JobMeter");
addCronJobReq.setJobGroupName("JobMeterGroup");
addCronJobReq.setJobName("Meter");
addCronJobReq.setParams(params);
addCronJobReq.setTriggerGroupName("triggerMeterGroup");
addCronJobReq.setTriggerName("triggerMeter");
quartzManager.addCronJob(addCronJobReq);
}
/**
* 定时采集DDC设备
*
* @throws Exception
*/
public void collectionDDC() throws Exception {
// 执行定义的定时采集程序
Map<String, String> params = new HashMap<>();
params.put("id", "3");
params.put("name", "ddc");
AddCronJobReq addCronJobReq = new AddCronJobReq();
//每 1分钟 执行一次
// addCronJobReq.setDate("3,33 * * * * ?");
addCronJobReq.setDate("45 0/1 * * * ?");
addCronJobReq.setJobClass("JobDDC");
addCronJobReq.setJobGroupName("JobDDCGroup");
addCronJobReq.setJobName("DDC");
addCronJobReq.setParams(params);
addCronJobReq.setTriggerGroupName("triggerDDCGroup");
addCronJobReq.setTriggerName("triggerDDC");
quartzManager.addCronJob(addCronJobReq);
}
/**
* 定时采集冷水机组设备
*
* @throws Exception
*/
public void collectionChillers() throws Exception {
// 执行定义的定时采集程序
Map<String, String> params = new HashMap<>();
params.put("id", "4");
params.put("name", "chillers");
AddCronJobReq addCronJobReq = new AddCronJobReq();
//每3分钟 执行一次
addCronJobReq.setDate("55 0/2 * * * ? ");
// addCronJobReq.setDate("0/30 * * * * ?");
addCronJobReq.setJobClass("JobChillers");
addCronJobReq.setJobGroupName("JobChillersGroup");
addCronJobReq.setJobName("Chillers");
addCronJobReq.setParams(params);
addCronJobReq.setTriggerGroupName("triggerChillersGroup");
addCronJobReq.setTriggerName("triggerChillers");
quartzManager.addCronJob(addCronJobReq);
}
/**
* 4分钟采集第二个冷水机组数据
*/
public void collectionChillers1() {
// 执行定义的定时采集程序
Map<String, String> params = new HashMap<>();
params.put("id", "5");
params.put("name", "chillers1");
AddCronJobReq addCronJobReq = new AddCronJobReq();
//每 4分钟 执行一次
addCronJobReq.setDate("0 0/5 * * * ? ");
// addCronJobReq.setDate("0/30 * * * * ?");
addCronJobReq.setJobClass("JobChillers1");
addCronJobReq.setJobGroupName("JobChillersGroup1");
addCronJobReq.setJobName("Chillers1");
addCronJobReq.setParams(params);
addCronJobReq.setTriggerGroupName("triggerChillersGroup1");
addCronJobReq.setTriggerName("triggerChillers1");
try {
quartzManager.addCronJob(addCronJobReq);
} catch (Exception e) {
e.printStackTrace();
GetReadOrder485 getReadOrder485=new GetReadOrder485();
List<ProjectInfoEntity> projectInfoEntities = projectInfoService.queryProjectInfo("1");
if (null != projectInfoEntities && !projectInfoEntities.isEmpty()) {
for (ProjectInfoEntity projectInfoEntity : projectInfoEntities) {
getReadOrder485.createOrderParam(projectInfoEntity.getId()); //生成采集参数,1新珠江(6000),2广合科技(6001),3广大科技(6002),6珠江国际,7保利山庄,8东莞迎宾馆
}
}
}
public void testSerialPort(){
String portname = "COM7";
//TestA();
//查看所有串口
SerialPortUtil serialPortUtil = SerialPortUtil.getSerialPortUtil();
ArrayList<String> port = serialPortUtil.findPort();
System.out.println("发现全部串口:" + port);
System.out.println("打开指定portname:" + portname);
//打开该对应portname名字的串口
CollectionLoopRunner.serialPort = serialPortUtil.openPort(portname, 2400, SerialPort.DATABITS_8, SerialPort.PARITY_EVEN, SerialPort.PARITY_ODD);
byte[] HEX = SerialPortListener.hexStr2Byte("FEFEFE6810398710810000000103901F007C16");
serialPortUtil.sendToPort(CollectionLoopRunner.serialPort, HEX);
//给对应的serialPort添加监听器
serialPortUtil.addListener(CollectionLoopRunner.serialPort, new SerialPortListener());
}
public void plcAnalytic() {
String portName = "COM1";
//查看所有串口
SerialPortUtil serialPortUtil = SerialPortUtil.getSerialPortUtil();
//打开该对应portName名字的串口
if (CollectionLoopRunner.serialPort == null) {
CollectionLoopRunner.serialPort = serialPortUtil.openPort(portName, 19200, SerialPort.DATABITS_8, SerialPort.PARITY_NONE, SerialPort.PARITY_ODD);
byte[] hex = SerialPortListener.hexStr2Byte("A55A230000000022".replaceAll("\\s*", ""));
serialPortUtil.sendToPort(CollectionLoopRunner.serialPort, hex);
//给对应的serialPort添加监听器-->设置串口的Listener
SerialPortUtil.setListenerToSerialPort(CollectionLoopRunner.serialPort, serialPortEvent -> {
if (serialPortEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
byte[] bytes = serialPortUtil.readFromPort(CollectionLoopRunner.serialPort);
String needData = SerialPortListener.printHexString(bytes);
//数据校验 校验数据长度、起始5A A5、数据sum位
// if (PlcUtil.makeChecksum(needData)) {
// //数据解析方法 此处编写你的解析方法,根据获取到的数据编写适合自己的方法
// }
}
});
try{
new EchoServer(6001).start(); // 调用服务器的start方法,网关作为客户端,6006新珠江,6001广合科技,6077广大科技 6028(6006)珠江国际,5000保利山庄,6004东莞迎宾馆
}catch (Exception e){
log.info("6001端口已占用!");
}
}
// public void test() throws Exception {
// System.out.println("测试定时采集开关");
// // 执行定义的定时采集程序
// Map<String, String> params = new HashMap<>();
// params.put("id", "2");
// params.put("name", "test1");
// //每 1 分钟 执行一次
// AddCronJobReq addCronJobReq = new AddCronJobReq();
// addCronJobReq.setDate("0/10 * * * * ?");
//// addCronJobReq.setDate("0/5 * * * * ?");
// addCronJobReq.setJobClass("JobTest1");
// addCronJobReq.setJobGroupName("JobTestGroup1");
// addCronJobReq.setJobName("Test1");
// addCronJobReq.setParams(params);
// addCronJobReq.setTriggerGroupName("triggerTestGroup1");
// addCronJobReq.setTriggerName("triggerTest1");
// quartzManager.addCronJob(addCronJobReq);
// }
//
// /**
// * 定时采集电表和冷量计
// *
// * @throws Exception
// */
// public void collectionMeterAndCloud() throws Exception {
// // 执行定义的定时采集程序
// Map<String, String> params = new HashMap<>();
// params.put("id", "6");
// params.put("name", "cloud_meter");
// AddCronJobReq addCronJobReq = new AddCronJobReq();
// //每 15 分钟 执行一次
// addCronJobReq.setDate("0 0/15 * * * ?");
// //每 3 分钟 执行一次
//// addCronJobReq.setDate("35 0/2 * * * ?");
// //每 2 分钟 执行一次
//// addCronJobReq.setDate("25 0/2 * * * ?");
// //每 1 分钟 执行一次
//// addCronJobReq.setDate("0/10 * * * * ?");
//// addCronJobReq.setDate("0/5 * * * * ?");
// addCronJobReq.setJobClass("JobCloudAndMeter");
// addCronJobReq.setJobGroupName("JobCloudAndMeterGroup");
// addCronJobReq.setJobName("CloudAndMeter");
// addCronJobReq.setParams(params);
// addCronJobReq.setTriggerGroupName("triggerCloudAndMeterGroup");
// addCronJobReq.setTriggerName("triggerCloudAndMeter");
// quartzManager.addCronJob(addCronJobReq);
// }
//
// /**
// * 定时采集冷量计
// *
// * @throws Exception
// */
// public void collectionCloud() throws Exception {
// // 执行定义的定时采集程序
// Map<String, String> params = new HashMap<>();
// params.put("id", "1");
// params.put("name", "cloud");
// AddCronJobReq addCronJobReq = new AddCronJobReq();
// //每 2 分钟 执行一次
// addCronJobReq.setDate("25 0/2 * * * ?");
//// addCronJobReq.setDate("0/5 * * * * ?");
// addCronJobReq.setJobClass("JobCloud");
// addCronJobReq.setJobGroupName("JobCloudGroup");
// addCronJobReq.setJobName("Cloud");
// addCronJobReq.setParams(params);
// addCronJobReq.setTriggerGroupName("triggerCloudGroup");
// addCronJobReq.setTriggerName("triggerCloud");
// quartzManager.addCronJob(addCronJobReq);
// }
// /**
// * 定时采集电表
// *
// * @throws Exception
// */
// public void collectionMeter() throws Exception {
// // 执行定义的定时采集程序
// Map<String, String> params = new HashMap<>();
// params.put("id", "2");
// params.put("name", "meter");
// AddCronJobReq addCronJobReq = new AddCronJobReq();
// //每 3 分钟 执行一次
// addCronJobReq.setDate("35 0/2 * * * ?");
//// addCronJobReq.setDate("0/20 * * * * ?");
// addCronJobReq.setJobClass("JobMeter");
// addCronJobReq.setJobGroupName("JobMeterGroup");
// addCronJobReq.setJobName("Meter");
// addCronJobReq.setParams(params);
// addCronJobReq.setTriggerGroupName("triggerMeterGroup");
// addCronJobReq.setTriggerName("triggerMeter");
// quartzManager.addCronJob(addCronJobReq);
// }
//
// /**
// * 定时采集DDC设备
// *
// * @throws Exception
// */
// public void collectionDDC() throws Exception {
// // 执行定义的定时采集程序
// Map<String, String> params = new HashMap<>();
// params.put("id", "3");
// params.put("name", "ddc");
// AddCronJobReq addCronJobReq = new AddCronJobReq();
// //每 1分钟 执行一次
//// addCronJobReq.setDate("3,33 * * * * ?");
// addCronJobReq.setDate("45 0/1 * * * ?");
// addCronJobReq.setJobClass("JobDDC");
// addCronJobReq.setJobGroupName("JobDDCGroup");
// addCronJobReq.setJobName("DDC");
// addCronJobReq.setParams(params);
// addCronJobReq.setTriggerGroupName("triggerDDCGroup");
// addCronJobReq.setTriggerName("triggerDDC");
// quartzManager.addCronJob(addCronJobReq);
// }
//
// /**
// * 定时采集冷水机组设备
// *
// * @throws Exception
// */
// public void collectionChillers() throws Exception {
// // 执行定义的定时采集程序
// Map<String, String> params = new HashMap<>();
// params.put("id", "4");
// params.put("name", "chillers");
// AddCronJobReq addCronJobReq = new AddCronJobReq();
// //每3分钟 执行一次
// addCronJobReq.setDate("55 0/2 * * * ? ");
//// addCronJobReq.setDate("0/30 * * * * ?");
// addCronJobReq.setJobClass("JobChillers");
// addCronJobReq.setJobGroupName("JobChillersGroup");
// addCronJobReq.setJobName("Chillers");
// addCronJobReq.setParams(params);
// addCronJobReq.setTriggerGroupName("triggerChillersGroup");
// addCronJobReq.setTriggerName("triggerChillers");
// quartzManager.addCronJob(addCronJobReq);
// }
//
// /**
// * 4分钟,采集第二个冷水机组数据
// */
// public void collectionChillers1() {
// // 执行定义的定时采集程序
// Map<String, String> params = new HashMap<>();
// params.put("id", "5");
// params.put("name", "chillers1");
// AddCronJobReq addCronJobReq = new AddCronJobReq();
// //每 4分钟 执行一次
// addCronJobReq.setDate("0 0/5 * * * ? ");
//// addCronJobReq.setDate("0/30 * * * * ?");
// addCronJobReq.setJobClass("JobChillers1");
// addCronJobReq.setJobGroupName("JobChillersGroup1");
// addCronJobReq.setJobName("Chillers1");
// addCronJobReq.setParams(params);
// addCronJobReq.setTriggerGroupName("triggerChillersGroup1");
// addCronJobReq.setTriggerName("triggerChillers1");
// try {
// quartzManager.addCronJob(addCronJobReq);
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
//
// public void testSerialPort(){
//
// String portname = "COM7";
// //TestA();
// //查看所有串口
// SerialPortUtil serialPortUtil = SerialPortUtil.getSerialPortUtil();
// ArrayList<String> port = serialPortUtil.findPort();
// System.out.println("发现全部串口:" + port);
//
// System.out.println("打开指定portname:" + portname);
// //打开该对应portname名字的串口
// CollectionLoopRunner.serialPort = serialPortUtil.openPort(portname, 2400, SerialPort.DATABITS_8, SerialPort.PARITY_EVEN, SerialPort.PARITY_ODD);
//
// byte[] HEX = SerialPortListener.hexStr2Byte("FEFEFE6810398710810000000103901F007C16");
// serialPortUtil.sendToPort(CollectionLoopRunner.serialPort, HEX);
//
// //给对应的serialPort添加监听器
// serialPortUtil.addListener(CollectionLoopRunner.serialPort, new SerialPortListener());
//
// }
//
// public void plcAnalytic() {
// String portName = "COM1";
// //查看所有串口
// SerialPortUtil serialPortUtil = SerialPortUtil.getSerialPortUtil();
// //打开该对应portName名字的串口
// if (CollectionLoopRunner.serialPort == null) {
// CollectionLoopRunner.serialPort = serialPortUtil.openPort(portName, 19200, SerialPort.DATABITS_8, SerialPort.PARITY_NONE, SerialPort.PARITY_ODD);
// byte[] hex = SerialPortListener.hexStr2Byte("A55A230000000022".replaceAll("\\s*", ""));
// serialPortUtil.sendToPort(CollectionLoopRunner.serialPort, hex);
//
// //给对应的serialPort添加监听器-->设置串口的Listener
// SerialPortUtil.setListenerToSerialPort(CollectionLoopRunner.serialPort, serialPortEvent -> {
// if (serialPortEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
// byte[] bytes = serialPortUtil.readFromPort(CollectionLoopRunner.serialPort);
//
// String needData = SerialPortListener.printHexString(bytes);
//
// //数据校验 校验数据长度、起始5A A5、数据sum位
//// if (PlcUtil.makeChecksum(needData)) {
//// //数据解析方法 此处编写你的解析方法,根据获取到的数据编写适合自己的方法
//// }
// }
// });
// }
// }
}

2
user-service/src/main/java/com/mh/user/netty/EchoServer.java

@ -1,12 +1,10 @@
package com.mh.user.netty;
import com.mh.user.UserServiceApplication;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelOption;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import lombok.extern.slf4j.Slf4j;
import org.apache.log4j.Logger;
public class EchoServer {

2
user-service/src/main/java/com/mh/user/netty/ServerChannelInitializer.java

@ -25,7 +25,7 @@ public class ServerChannelInitializer extends ChannelInitializer<SocketChannel>{
// pipeline.addLast( new StringEncoder());
// 设置读写超时操作
// 入参说明: 读超时时间、写超时时间、所有类型的超时时间、时间格式
pipeline.addLast(new IdleStateHandler(10, 0, 0, TimeUnit.SECONDS));
pipeline.addLast(new IdleStateHandler(40, 40, 40, TimeUnit.SECONDS));
//服务器的逻辑
pipeline.addLast("handler", new EchoServerHandler());
}

52
user-service/src/main/resources/bootstrap.yml

@ -1,26 +1,17 @@
server:
port: 8766 #8764新珠江,8766广合科技,8767广大科技,8768珠江国际,8769保利山庄,8770东莞迎宾馆
spring:
application:
name: jnd-user-service
datasource:
name: druidDataSource
type: com.alibaba.druid.pool.DruidDataSource
druid:
#添加allowMultiQueries=true 在批量更新时才不会出错
# url: jdbc:sqlserver://192.168.1.108:2012;DatabaseName=FSBG;allowMultiQueries=true
# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
# username: sa
# password: mh@803
## url: jdbc:sqlserver://120.25.220.177:32012;DatabaseName=M_CHWS;allowMultiQueries=true
url: jdbc:sqlserver://120.25.220.177:32012;DatabaseName=mh_esi;allowMultiQueries=true
url: jdbc:sqlserver://111.230.50.186:32012;DatabaseName=mh_jnd;allowMultiQueries=true
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: mh_sa
password: mhtech@803
# url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=CHWS;allowMultiQueries=true
# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
# username: chws
# password: minghan123456@
username: jnd
password: Mh@803tech
filters: stat,wall,log4j,config
max-active: 100
initial-size: 1
@ -37,19 +28,16 @@ spring:
max-pool-prepared-statement-per-connection-size: 50
rabbitmq:
host: 159.75.86.232
host: 127.0.0.1
port: 5672
username: ningxr
password: ningxr123456
virtual-host: /ning_host
template:
retry:
enabled: true
initial-interval: 10000ms
max-interval: 300000ms
multiplier: 2
exchange: topic.exchange
publisher-confirms: true
username: guest
password: guest
virtual-host: /jnd
listener:
direct:
prefetch: 2
simple:
prefetch: 2
# redis:
# database: 0
@ -99,14 +87,14 @@ log:
#设置将SQL语句打印到控制台 level后面是 mybatis接口目录
logging:
# level:
# com:
# mh:
# user:
# mapper: DEBUG
level:
com:
mh:
user:
mapper: DEBUG
file:
max-size: 30
path: logs/${spring.application.name}
##软件最后更新日期20230116

83
user-service/src/main/resources/logback-spring.xml

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<contextName>logs</contextName>
<!-- 日志位置 不能使用相对路径?只能使用绝对路径-->
<property name="log.path" value="${LOG_PATH:-.}" />
<!-- <property name="log.path" value="D:/NBWater/Logs/nbcontrol" />-->
<!-- 日志保留时长 -->
<property name="log.maxHistory" value="15" />
<!-- 控制台格式化及颜色 -->
<property name="log.colorPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5level %thread %logger %msg%n"/>
<property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5level %thread %logger %msg%n"/>
<!--输出到控制台-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.colorPattern}</pattern>
</encoder>
</appender>
<!--输出到文件-->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/info/info.%d{yyyy-MM-dd}.log</fileNamePattern>
<MaxHistory>${log.maxHistory}</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">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/error/error.%d{yyyy-MM-dd}.log</fileNamePattern>
</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>
<!--输出到文件-->
<appender name="file_service" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/info/info.mapper.%d{yyyy-MM-dd}.log</fileNamePattern>
<MaxHistory>${log.maxHistory}</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>trace</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 日志类型为info时,输出到配置好的文件 -->
<root level="info">
<appender-ref ref="file_info" />
</root>
<root level="error">
<appender-ref ref="file_error" />
</root>
<!-- 日志类型为info时,输出到控制台 -->
<root level="info">
<appender-ref ref="console" />
</root>
<!--指定路径包的日志 -->
<logger name="com.mh.user.mapper">
<level value="trace"/>
<appender-ref ref="file_service"/>
</logger>
</configuration>
Loading…
Cancel
Save