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> <groupId>org.jolokia</groupId>
<artifactId>jolokia-core</artifactId> <artifactId>jolokia-core</artifactId>
</dependency> </dependency>
<dependency> <!-- <dependency>-->
<groupId>io.springfox</groupId> <!-- <groupId>io.springfox</groupId>-->
<artifactId>springfox-swagger2</artifactId> <!-- <artifactId>springfox-swagger2</artifactId>-->
<version>${swagger.version}</version> <!-- <version>${swagger.version}</version>-->
</dependency> <!-- </dependency>-->
<dependency> <!-- <dependency>-->
<groupId>io.springfox</groupId> <!-- <groupId>io.springfox</groupId>-->
<artifactId>springfox-swagger-ui</artifactId> <!-- <artifactId>springfox-swagger-ui</artifactId>-->
<version>${swagger.version}</version> <!-- <version>${swagger.version}</version>-->
</dependency> <!-- </dependency>-->
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId> <artifactId>spring-boot-starter-aop</artifactId>

10
user-service/pom.xml

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

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

@ -1,9 +1,11 @@
package com.mh.user; package com.mh.user;
import com.mh.user.constants.Constant; import com.mh.user.constants.Constant;
import com.mh.user.entity.ProjectInfoEntity;
import com.mh.user.job.CollectionLoopRunner; import com.mh.user.job.CollectionLoopRunner;
import com.mh.user.netty.EchoServer; import com.mh.user.netty.EchoServer;
import com.mh.user.service.DeviceCodeParamService; import com.mh.user.service.DeviceCodeParamService;
import com.mh.user.service.ProjectInfoService;
import com.mh.user.utils.GetReadOrder485; import com.mh.user.utils.GetReadOrder485;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.log4j.Logger; 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.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
import java.util.List;
@SpringBootApplication(scanBasePackages = "com.mh.user") @SpringBootApplication(scanBasePackages = "com.mh.user")
@ -24,9 +27,6 @@ public class UserServiceApplication extends SpringBootServletInitializer {
private static final Logger log = Logger.getLogger(UserServiceApplication.class); private static final Logger log = Logger.getLogger(UserServiceApplication.class);
@Autowired
DeviceCodeParamService deviceCodeParamService;
@Override @Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(UserServiceApplication.class); return builder.sources(UserServiceApplication.class);
@ -38,15 +38,6 @@ public class UserServiceApplication extends SpringBootServletInitializer {
//System.out.println(Constant.projectId); //System.out.println(Constant.projectId);
//Constant.projectId=7; //Constant.projectId=7;
//System.out.println(Constant.projectId); //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 @PreDestroy

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

@ -1,49 +1,49 @@
package com.mh.user.config; //package com.mh.user.config;
//
import org.springframework.context.annotation.Bean; //import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; //import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder; //import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder; //import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors; //import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors; //import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef; //import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo; //import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Parameter; //import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType; //import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket; //import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2; //import springfox.documentation.swagger2.annotations.EnableSwagger2;
//
import java.util.ArrayList; //import java.util.ArrayList;
import java.util.List; //import java.util.List;
//
/** ///**
* @author ljf // * @author ljf
* @title // * @title :
* @description // * @description :
* @updateTime 2020-03-13 // * @updateTime 2020-03-13
* @throws // * @throws :
*/ // */
@Configuration //@Configuration
@EnableSwagger2 //@EnableSwagger2
public class SwaggerConfig { //public class SwaggerConfig {
//
@Bean // @Bean
public Docket createRestApi(){ // public Docket createRestApi(){
// 添加请求参数,我们这里把token作为请求头部参数传入后端 // // 添加请求参数,我们这里把token作为请求头部参数传入后端
ParameterBuilder parameterBuilder = new ParameterBuilder(); // ParameterBuilder parameterBuilder = new ParameterBuilder();
List<Parameter> parameters = new ArrayList<Parameter>(); // List<Parameter> parameters = new ArrayList<Parameter>();
parameterBuilder.name("token").description("令牌") // parameterBuilder.name("token").description("令牌")
.modelRef(new ModelRef("string")).parameterType("header").required(false).build(); // .modelRef(new ModelRef("string")).parameterType("header").required(false).build();
parameters.add(parameterBuilder.build()); // parameters.add(parameterBuilder.build());
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
.apis(RequestHandlerSelectors.any()).paths(PathSelectors.any())
.build().globalOperationParameters(parameters);
// return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select() // return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
// .apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()).build(); // .apis(RequestHandlerSelectors.any()).paths(PathSelectors.any())
} // .build().globalOperationParameters(parameters);
//// return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
private ApiInfo apiInfo(){ //// .apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()).build();
return new ApiInfoBuilder().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; package com.mh.user.job;
import com.mh.user.entity.AddCronJobReq; import com.mh.user.entity.AddCronJobReq;
import com.mh.user.entity.ProjectInfoEntity;
import com.mh.user.manage.QuartzManager; import com.mh.user.manage.QuartzManager;
import com.mh.user.netty.EchoServer; import com.mh.user.netty.EchoServer;
import com.mh.user.serialport.SerialPortListener; import com.mh.user.serialport.SerialPortListener;
import com.mh.user.serialport.SerialPortUtil; 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.SerialPort;
import gnu.io.SerialPortEvent; import gnu.io.SerialPortEvent;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner; import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -25,231 +29,241 @@ import java.util.Map;
* @updateTime 2020-05-15 * @updateTime 2020-05-15
* @throws * @throws
*/ */
//@Component @Component
public class CollectionLoopRunner implements ApplicationRunner { public class CollectionLoopRunner implements ApplicationRunner {
private static final Logger log = Logger.getLogger(CollectionLoopRunner.class); private static final Logger log = Logger.getLogger(CollectionLoopRunner.class);
@Resource
QuartzManager quartzManager;
public static SerialPort serialPort = null; public static SerialPort serialPort = null;
@Autowired
ProjectInfoService projectInfoService;
@Override @Override
public void run(ApplicationArguments args) throws Exception { public void run(ApplicationArguments args) throws Exception {
// collectionMeterAndCloud(); GetReadOrder485 getReadOrder485=new GetReadOrder485();
log.info("==================测试日志================"); List<ProjectInfoEntity> projectInfoEntities = projectInfoService.queryProjectInfo("1");
} if (null != projectInfoEntities && !projectInfoEntities.isEmpty()) {
for (ProjectInfoEntity projectInfoEntity : projectInfoEntities) {
public void test() throws Exception { getReadOrder485.createOrderParam(projectInfoEntity.getId()); //生成采集参数,1新珠江(6000),2广合科技(6001),3广大科技(6002),6珠江国际,7保利山庄,8东莞迎宾馆
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();
} }
} try{
new EchoServer(6001).start(); // 调用服务器的start方法,网关作为客户端,6006新珠江,6001广合科技,6077广大科技 6028(6006)珠江国际,5000保利山庄,6004东莞迎宾馆
public void testSerialPort(){ }catch (Exception e){
log.info("6001端口已占用!");
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)) {
// //数据解析方法 此处编写你的解析方法,根据获取到的数据编写适合自己的方法
// }
}
});
} }
} }
// 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; package com.mh.user.netty;
import com.mh.user.UserServiceApplication;
import io.netty.bootstrap.ServerBootstrap; import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelOption; import io.netty.channel.ChannelOption;
import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioServerSocketChannel; import io.netty.channel.socket.nio.NioServerSocketChannel;
import lombok.extern.slf4j.Slf4j;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
public class EchoServer { 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 StringEncoder());
// 设置读写超时操作 // 设置读写超时操作
// 入参说明: 读超时时间、写超时时间、所有类型的超时时间、时间格式 // 入参说明: 读超时时间、写超时时间、所有类型的超时时间、时间格式
pipeline.addLast(new IdleStateHandler(10, 0, 0, TimeUnit.SECONDS)); pipeline.addLast(new IdleStateHandler(40, 40, 40, TimeUnit.SECONDS));
//服务器的逻辑 //服务器的逻辑
pipeline.addLast("handler", new EchoServerHandler()); pipeline.addLast("handler", new EchoServerHandler());
} }

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

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