diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/src/main/java/com/casic/config/AEPParamConfig.java b/src/main/java/com/casic/config/AEPParamConfig.java
new file mode 100644
index 0000000..349d4b2
--- /dev/null
+++ b/src/main/java/com/casic/config/AEPParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class AEPParamConfig {
+
+ @Value("${nb.app.key}")
+ private String appKey;
+ @Value("${nb.app.secret}")
+ private String appSecret;
+ @Value("${nb.gas.url}")
+ private String aepUrl;
+ @Value("${nb.gas.product-id}")
+ private String productId;
+ @Value("${nb.gas.MasterKey}")
+ private String masterKey;
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/src/main/java/com/casic/config/AEPParamConfig.java b/src/main/java/com/casic/config/AEPParamConfig.java
new file mode 100644
index 0000000..349d4b2
--- /dev/null
+++ b/src/main/java/com/casic/config/AEPParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class AEPParamConfig {
+
+ @Value("${nb.app.key}")
+ private String appKey;
+ @Value("${nb.app.secret}")
+ private String appSecret;
+ @Value("${nb.gas.url}")
+ private String aepUrl;
+ @Value("${nb.gas.product-id}")
+ private String productId;
+ @Value("${nb.gas.MasterKey}")
+ private String masterKey;
+}
diff --git a/src/main/java/com/casic/config/CodeGenerator.java b/src/main/java/com/casic/config/CodeGenerator.java
new file mode 100644
index 0000000..ca10d95
--- /dev/null
+++ b/src/main/java/com/casic/config/CodeGenerator.java
@@ -0,0 +1,110 @@
+//package com.casic.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.annotation.FieldFill;
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+//import com.baomidou.mybatisplus.generator.AutoGenerator;
+//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+//import com.baomidou.mybatisplus.generator.config.PackageConfig;
+//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+//import com.baomidou.mybatisplus.generator.config.po.TableFill;
+//import com.baomidou.mybatisplus.generator.config.rules.DateType;
+//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+//import org.apache.commons.lang3.StringUtils;
+//
+//import java.util.ArrayList;
+//import java.util.Scanner;
+//
+//public class CodeGenerator {
+//
+//
+// public static String scanner(String tip) {
+// Scanner scanner = new Scanner(System.in);
+// StringBuilder help = new StringBuilder();
+// help.append("请输入" + tip + ":");
+// System.out.println(help.toString());
+// if (scanner.hasNext()) {
+// String ipt = scanner.next();
+// if (StringUtils.isNotBlank(ipt)) {
+// return ipt;
+// }
+// }
+// throw new MybatisPlusException("请输入正确的" + tip + "!");
+// }
+//
+//
+//
+//
+//
+// public static void main(String[] args) {
+// // 代码生成器
+// AutoGenerator mpg = new AutoGenerator();
+//
+// // 全局配置
+// GlobalConfig gc = new GlobalConfig();
+// String projectPath = System.getProperty("user.dir");
+// gc.setOutputDir(projectPath + "/src/main/java");//设置代码生成路径
+// gc.setFileOverride(true);//是否覆盖以前文件
+// gc.setOpen(false);//是否打开生成目录
+// gc.setAuthor("yixin");//设置项目作者名称
+// gc.setIdType(IdType.AUTO);//设置主键策略
+// gc.setBaseResultMap(true);//生成基本ResultMap
+// gc.setBaseColumnList(true);//生成基本ColumnList
+// gc.setServiceName("%sService");//去掉服务默认前缀
+// gc.setDateType(DateType.ONLY_DATE);//设置时间类型
+// mpg.setGlobalConfig(gc);
+//
+// // 数据源配置
+// DataSourceConfig dsc = new DataSourceConfig();
+// dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
+// dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+// dsc.setUsername("root");
+// dsc.setPassword("123456");
+// mpg.setDataSource(dsc);
+//
+// // 包配置
+// PackageConfig pc = new PackageConfig();
+// pc.setParent("com.yixin");
+// pc.setMapper("mapper");
+// pc.setXml("mapper.xml");
+// pc.setEntity("pojo");
+// pc.setService("service");
+// pc.setServiceImpl("service.impl");
+// pc.setController("controller");
+// mpg.setPackageInfo(pc);
+//
+// // 策略配置
+// StrategyConfig sc = new StrategyConfig();
+// sc.setNaming(NamingStrategy.underline_to_camel);
+// sc.setColumnNaming(NamingStrategy.underline_to_camel);
+// sc.setEntityLombokModel(true);//自动lombok
+// sc.setRestControllerStyle(true);
+// sc.setControllerMappingHyphenStyle(true);
+//
+// sc.setLogicDeleteFieldName("deleted");//设置逻辑删除
+//
+// //设置自动填充配置
+// TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);
+// TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
+// ArrayList tableFills=new ArrayList<>();
+// tableFills.add(gmt_create);
+// tableFills.add(gmt_modified);
+// sc.setTableFillList(tableFills);
+//
+// //乐观锁
+// sc.setVersionFieldName("version");
+// sc.setRestControllerStyle(true);//驼峰命名
+//
+//
+//
+// // sc.setTablePrefix("tbl_"); 设置表名前缀
+// sc.setInclude(scanner("表名,多个英文逗号分割").split(","));
+// mpg.setStrategy(sc);
+//
+// // 生成代码
+// mpg.execute();
+// }
+//
+//}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/src/main/java/com/casic/config/AEPParamConfig.java b/src/main/java/com/casic/config/AEPParamConfig.java
new file mode 100644
index 0000000..349d4b2
--- /dev/null
+++ b/src/main/java/com/casic/config/AEPParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class AEPParamConfig {
+
+ @Value("${nb.app.key}")
+ private String appKey;
+ @Value("${nb.app.secret}")
+ private String appSecret;
+ @Value("${nb.gas.url}")
+ private String aepUrl;
+ @Value("${nb.gas.product-id}")
+ private String productId;
+ @Value("${nb.gas.MasterKey}")
+ private String masterKey;
+}
diff --git a/src/main/java/com/casic/config/CodeGenerator.java b/src/main/java/com/casic/config/CodeGenerator.java
new file mode 100644
index 0000000..ca10d95
--- /dev/null
+++ b/src/main/java/com/casic/config/CodeGenerator.java
@@ -0,0 +1,110 @@
+//package com.casic.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.annotation.FieldFill;
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+//import com.baomidou.mybatisplus.generator.AutoGenerator;
+//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+//import com.baomidou.mybatisplus.generator.config.PackageConfig;
+//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+//import com.baomidou.mybatisplus.generator.config.po.TableFill;
+//import com.baomidou.mybatisplus.generator.config.rules.DateType;
+//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+//import org.apache.commons.lang3.StringUtils;
+//
+//import java.util.ArrayList;
+//import java.util.Scanner;
+//
+//public class CodeGenerator {
+//
+//
+// public static String scanner(String tip) {
+// Scanner scanner = new Scanner(System.in);
+// StringBuilder help = new StringBuilder();
+// help.append("请输入" + tip + ":");
+// System.out.println(help.toString());
+// if (scanner.hasNext()) {
+// String ipt = scanner.next();
+// if (StringUtils.isNotBlank(ipt)) {
+// return ipt;
+// }
+// }
+// throw new MybatisPlusException("请输入正确的" + tip + "!");
+// }
+//
+//
+//
+//
+//
+// public static void main(String[] args) {
+// // 代码生成器
+// AutoGenerator mpg = new AutoGenerator();
+//
+// // 全局配置
+// GlobalConfig gc = new GlobalConfig();
+// String projectPath = System.getProperty("user.dir");
+// gc.setOutputDir(projectPath + "/src/main/java");//设置代码生成路径
+// gc.setFileOverride(true);//是否覆盖以前文件
+// gc.setOpen(false);//是否打开生成目录
+// gc.setAuthor("yixin");//设置项目作者名称
+// gc.setIdType(IdType.AUTO);//设置主键策略
+// gc.setBaseResultMap(true);//生成基本ResultMap
+// gc.setBaseColumnList(true);//生成基本ColumnList
+// gc.setServiceName("%sService");//去掉服务默认前缀
+// gc.setDateType(DateType.ONLY_DATE);//设置时间类型
+// mpg.setGlobalConfig(gc);
+//
+// // 数据源配置
+// DataSourceConfig dsc = new DataSourceConfig();
+// dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
+// dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+// dsc.setUsername("root");
+// dsc.setPassword("123456");
+// mpg.setDataSource(dsc);
+//
+// // 包配置
+// PackageConfig pc = new PackageConfig();
+// pc.setParent("com.yixin");
+// pc.setMapper("mapper");
+// pc.setXml("mapper.xml");
+// pc.setEntity("pojo");
+// pc.setService("service");
+// pc.setServiceImpl("service.impl");
+// pc.setController("controller");
+// mpg.setPackageInfo(pc);
+//
+// // 策略配置
+// StrategyConfig sc = new StrategyConfig();
+// sc.setNaming(NamingStrategy.underline_to_camel);
+// sc.setColumnNaming(NamingStrategy.underline_to_camel);
+// sc.setEntityLombokModel(true);//自动lombok
+// sc.setRestControllerStyle(true);
+// sc.setControllerMappingHyphenStyle(true);
+//
+// sc.setLogicDeleteFieldName("deleted");//设置逻辑删除
+//
+// //设置自动填充配置
+// TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);
+// TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
+// ArrayList tableFills=new ArrayList<>();
+// tableFills.add(gmt_create);
+// tableFills.add(gmt_modified);
+// sc.setTableFillList(tableFills);
+//
+// //乐观锁
+// sc.setVersionFieldName("version");
+// sc.setRestControllerStyle(true);//驼峰命名
+//
+//
+//
+// // sc.setTablePrefix("tbl_"); 设置表名前缀
+// sc.setInclude(scanner("表名,多个英文逗号分割").split(","));
+// mpg.setStrategy(sc);
+//
+// // 生成代码
+// mpg.execute();
+// }
+//
+//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
new file mode 100644
index 0000000..7d19680
--- /dev/null
+++ b/src/main/java/com/casic/config/CorsConfig.java
@@ -0,0 +1,31 @@
+package com.casic.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * 基础框架 - 跨域请求配置
+ */
+@Configuration
+public class CorsConfig {
+ @Bean
+ public CorsFilter corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", buildConfig());
+ return new CorsFilter(source);
+ }
+
+ private CorsConfiguration buildConfig() {
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ // 1允许任何域名使用
+ corsConfiguration.addAllowedOrigin("*");
+ // 2允许任何头
+ corsConfiguration.addAllowedHeader("*");
+ // 3允许任何方法(post、get等)
+ corsConfiguration.addAllowedMethod("*");
+ return corsConfiguration;
+ }
+}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/src/main/java/com/casic/config/AEPParamConfig.java b/src/main/java/com/casic/config/AEPParamConfig.java
new file mode 100644
index 0000000..349d4b2
--- /dev/null
+++ b/src/main/java/com/casic/config/AEPParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class AEPParamConfig {
+
+ @Value("${nb.app.key}")
+ private String appKey;
+ @Value("${nb.app.secret}")
+ private String appSecret;
+ @Value("${nb.gas.url}")
+ private String aepUrl;
+ @Value("${nb.gas.product-id}")
+ private String productId;
+ @Value("${nb.gas.MasterKey}")
+ private String masterKey;
+}
diff --git a/src/main/java/com/casic/config/CodeGenerator.java b/src/main/java/com/casic/config/CodeGenerator.java
new file mode 100644
index 0000000..ca10d95
--- /dev/null
+++ b/src/main/java/com/casic/config/CodeGenerator.java
@@ -0,0 +1,110 @@
+//package com.casic.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.annotation.FieldFill;
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+//import com.baomidou.mybatisplus.generator.AutoGenerator;
+//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+//import com.baomidou.mybatisplus.generator.config.PackageConfig;
+//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+//import com.baomidou.mybatisplus.generator.config.po.TableFill;
+//import com.baomidou.mybatisplus.generator.config.rules.DateType;
+//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+//import org.apache.commons.lang3.StringUtils;
+//
+//import java.util.ArrayList;
+//import java.util.Scanner;
+//
+//public class CodeGenerator {
+//
+//
+// public static String scanner(String tip) {
+// Scanner scanner = new Scanner(System.in);
+// StringBuilder help = new StringBuilder();
+// help.append("请输入" + tip + ":");
+// System.out.println(help.toString());
+// if (scanner.hasNext()) {
+// String ipt = scanner.next();
+// if (StringUtils.isNotBlank(ipt)) {
+// return ipt;
+// }
+// }
+// throw new MybatisPlusException("请输入正确的" + tip + "!");
+// }
+//
+//
+//
+//
+//
+// public static void main(String[] args) {
+// // 代码生成器
+// AutoGenerator mpg = new AutoGenerator();
+//
+// // 全局配置
+// GlobalConfig gc = new GlobalConfig();
+// String projectPath = System.getProperty("user.dir");
+// gc.setOutputDir(projectPath + "/src/main/java");//设置代码生成路径
+// gc.setFileOverride(true);//是否覆盖以前文件
+// gc.setOpen(false);//是否打开生成目录
+// gc.setAuthor("yixin");//设置项目作者名称
+// gc.setIdType(IdType.AUTO);//设置主键策略
+// gc.setBaseResultMap(true);//生成基本ResultMap
+// gc.setBaseColumnList(true);//生成基本ColumnList
+// gc.setServiceName("%sService");//去掉服务默认前缀
+// gc.setDateType(DateType.ONLY_DATE);//设置时间类型
+// mpg.setGlobalConfig(gc);
+//
+// // 数据源配置
+// DataSourceConfig dsc = new DataSourceConfig();
+// dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
+// dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+// dsc.setUsername("root");
+// dsc.setPassword("123456");
+// mpg.setDataSource(dsc);
+//
+// // 包配置
+// PackageConfig pc = new PackageConfig();
+// pc.setParent("com.yixin");
+// pc.setMapper("mapper");
+// pc.setXml("mapper.xml");
+// pc.setEntity("pojo");
+// pc.setService("service");
+// pc.setServiceImpl("service.impl");
+// pc.setController("controller");
+// mpg.setPackageInfo(pc);
+//
+// // 策略配置
+// StrategyConfig sc = new StrategyConfig();
+// sc.setNaming(NamingStrategy.underline_to_camel);
+// sc.setColumnNaming(NamingStrategy.underline_to_camel);
+// sc.setEntityLombokModel(true);//自动lombok
+// sc.setRestControllerStyle(true);
+// sc.setControllerMappingHyphenStyle(true);
+//
+// sc.setLogicDeleteFieldName("deleted");//设置逻辑删除
+//
+// //设置自动填充配置
+// TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);
+// TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
+// ArrayList tableFills=new ArrayList<>();
+// tableFills.add(gmt_create);
+// tableFills.add(gmt_modified);
+// sc.setTableFillList(tableFills);
+//
+// //乐观锁
+// sc.setVersionFieldName("version");
+// sc.setRestControllerStyle(true);//驼峰命名
+//
+//
+//
+// // sc.setTablePrefix("tbl_"); 设置表名前缀
+// sc.setInclude(scanner("表名,多个英文逗号分割").split(","));
+// mpg.setStrategy(sc);
+//
+// // 生成代码
+// mpg.execute();
+// }
+//
+//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
new file mode 100644
index 0000000..7d19680
--- /dev/null
+++ b/src/main/java/com/casic/config/CorsConfig.java
@@ -0,0 +1,31 @@
+package com.casic.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * 基础框架 - 跨域请求配置
+ */
+@Configuration
+public class CorsConfig {
+ @Bean
+ public CorsFilter corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", buildConfig());
+ return new CorsFilter(source);
+ }
+
+ private CorsConfiguration buildConfig() {
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ // 1允许任何域名使用
+ corsConfiguration.addAllowedOrigin("*");
+ // 2允许任何头
+ corsConfiguration.addAllowedHeader("*");
+ // 3允许任何方法(post、get等)
+ corsConfiguration.addAllowedMethod("*");
+ return corsConfiguration;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
new file mode 100644
index 0000000..bb4c9ff
--- /dev/null
+++ b/src/main/java/com/casic/config/Knife4jConfiguration.java
@@ -0,0 +1,38 @@
+package com.casic.config;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+@Configuration
+@EnableKnife4j
+public class Knife4jConfiguration {
+
+ @Value(value = "${swagger.enable}")
+ public boolean enable;
+ @Value(value = "${swagger.groupName}")
+ public String groupName;
+
+ @Bean(value = "dockerBean")
+ public Docket dockerBean() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(new ApiInfoBuilder()
+ //描述字段支持Markdown语法
+ .description("# Knife4j RESTful APIs")
+ .termsOfServiceUrl("https://doc.casic.com/")
+ .version("1.0")
+ .build())
+ //分组名称
+ .groupName(groupName)
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("com.casic"))
+ .paths(PathSelectors.any()).build().enable(enable);
+ }
+
+}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/src/main/java/com/casic/config/AEPParamConfig.java b/src/main/java/com/casic/config/AEPParamConfig.java
new file mode 100644
index 0000000..349d4b2
--- /dev/null
+++ b/src/main/java/com/casic/config/AEPParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class AEPParamConfig {
+
+ @Value("${nb.app.key}")
+ private String appKey;
+ @Value("${nb.app.secret}")
+ private String appSecret;
+ @Value("${nb.gas.url}")
+ private String aepUrl;
+ @Value("${nb.gas.product-id}")
+ private String productId;
+ @Value("${nb.gas.MasterKey}")
+ private String masterKey;
+}
diff --git a/src/main/java/com/casic/config/CodeGenerator.java b/src/main/java/com/casic/config/CodeGenerator.java
new file mode 100644
index 0000000..ca10d95
--- /dev/null
+++ b/src/main/java/com/casic/config/CodeGenerator.java
@@ -0,0 +1,110 @@
+//package com.casic.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.annotation.FieldFill;
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+//import com.baomidou.mybatisplus.generator.AutoGenerator;
+//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+//import com.baomidou.mybatisplus.generator.config.PackageConfig;
+//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+//import com.baomidou.mybatisplus.generator.config.po.TableFill;
+//import com.baomidou.mybatisplus.generator.config.rules.DateType;
+//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+//import org.apache.commons.lang3.StringUtils;
+//
+//import java.util.ArrayList;
+//import java.util.Scanner;
+//
+//public class CodeGenerator {
+//
+//
+// public static String scanner(String tip) {
+// Scanner scanner = new Scanner(System.in);
+// StringBuilder help = new StringBuilder();
+// help.append("请输入" + tip + ":");
+// System.out.println(help.toString());
+// if (scanner.hasNext()) {
+// String ipt = scanner.next();
+// if (StringUtils.isNotBlank(ipt)) {
+// return ipt;
+// }
+// }
+// throw new MybatisPlusException("请输入正确的" + tip + "!");
+// }
+//
+//
+//
+//
+//
+// public static void main(String[] args) {
+// // 代码生成器
+// AutoGenerator mpg = new AutoGenerator();
+//
+// // 全局配置
+// GlobalConfig gc = new GlobalConfig();
+// String projectPath = System.getProperty("user.dir");
+// gc.setOutputDir(projectPath + "/src/main/java");//设置代码生成路径
+// gc.setFileOverride(true);//是否覆盖以前文件
+// gc.setOpen(false);//是否打开生成目录
+// gc.setAuthor("yixin");//设置项目作者名称
+// gc.setIdType(IdType.AUTO);//设置主键策略
+// gc.setBaseResultMap(true);//生成基本ResultMap
+// gc.setBaseColumnList(true);//生成基本ColumnList
+// gc.setServiceName("%sService");//去掉服务默认前缀
+// gc.setDateType(DateType.ONLY_DATE);//设置时间类型
+// mpg.setGlobalConfig(gc);
+//
+// // 数据源配置
+// DataSourceConfig dsc = new DataSourceConfig();
+// dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
+// dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+// dsc.setUsername("root");
+// dsc.setPassword("123456");
+// mpg.setDataSource(dsc);
+//
+// // 包配置
+// PackageConfig pc = new PackageConfig();
+// pc.setParent("com.yixin");
+// pc.setMapper("mapper");
+// pc.setXml("mapper.xml");
+// pc.setEntity("pojo");
+// pc.setService("service");
+// pc.setServiceImpl("service.impl");
+// pc.setController("controller");
+// mpg.setPackageInfo(pc);
+//
+// // 策略配置
+// StrategyConfig sc = new StrategyConfig();
+// sc.setNaming(NamingStrategy.underline_to_camel);
+// sc.setColumnNaming(NamingStrategy.underline_to_camel);
+// sc.setEntityLombokModel(true);//自动lombok
+// sc.setRestControllerStyle(true);
+// sc.setControllerMappingHyphenStyle(true);
+//
+// sc.setLogicDeleteFieldName("deleted");//设置逻辑删除
+//
+// //设置自动填充配置
+// TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);
+// TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
+// ArrayList tableFills=new ArrayList<>();
+// tableFills.add(gmt_create);
+// tableFills.add(gmt_modified);
+// sc.setTableFillList(tableFills);
+//
+// //乐观锁
+// sc.setVersionFieldName("version");
+// sc.setRestControllerStyle(true);//驼峰命名
+//
+//
+//
+// // sc.setTablePrefix("tbl_"); 设置表名前缀
+// sc.setInclude(scanner("表名,多个英文逗号分割").split(","));
+// mpg.setStrategy(sc);
+//
+// // 生成代码
+// mpg.execute();
+// }
+//
+//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
new file mode 100644
index 0000000..7d19680
--- /dev/null
+++ b/src/main/java/com/casic/config/CorsConfig.java
@@ -0,0 +1,31 @@
+package com.casic.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * 基础框架 - 跨域请求配置
+ */
+@Configuration
+public class CorsConfig {
+ @Bean
+ public CorsFilter corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", buildConfig());
+ return new CorsFilter(source);
+ }
+
+ private CorsConfiguration buildConfig() {
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ // 1允许任何域名使用
+ corsConfiguration.addAllowedOrigin("*");
+ // 2允许任何头
+ corsConfiguration.addAllowedHeader("*");
+ // 3允许任何方法(post、get等)
+ corsConfiguration.addAllowedMethod("*");
+ return corsConfiguration;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
new file mode 100644
index 0000000..bb4c9ff
--- /dev/null
+++ b/src/main/java/com/casic/config/Knife4jConfiguration.java
@@ -0,0 +1,38 @@
+package com.casic.config;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+@Configuration
+@EnableKnife4j
+public class Knife4jConfiguration {
+
+ @Value(value = "${swagger.enable}")
+ public boolean enable;
+ @Value(value = "${swagger.groupName}")
+ public String groupName;
+
+ @Bean(value = "dockerBean")
+ public Docket dockerBean() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(new ApiInfoBuilder()
+ //描述字段支持Markdown语法
+ .description("# Knife4j RESTful APIs")
+ .termsOfServiceUrl("https://doc.casic.com/")
+ .version("1.0")
+ .build())
+ //分组名称
+ .groupName(groupName)
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("com.casic"))
+ .paths(PathSelectors.any()).build().enable(enable);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/MybatisPlusConfig.java b/src/main/java/com/casic/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..58fd3b1
--- /dev/null
+++ b/src/main/java/com/casic/config/MybatisPlusConfig.java
@@ -0,0 +1,18 @@
+package com.casic.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(){
+ MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+}
+
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/src/main/java/com/casic/config/AEPParamConfig.java b/src/main/java/com/casic/config/AEPParamConfig.java
new file mode 100644
index 0000000..349d4b2
--- /dev/null
+++ b/src/main/java/com/casic/config/AEPParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class AEPParamConfig {
+
+ @Value("${nb.app.key}")
+ private String appKey;
+ @Value("${nb.app.secret}")
+ private String appSecret;
+ @Value("${nb.gas.url}")
+ private String aepUrl;
+ @Value("${nb.gas.product-id}")
+ private String productId;
+ @Value("${nb.gas.MasterKey}")
+ private String masterKey;
+}
diff --git a/src/main/java/com/casic/config/CodeGenerator.java b/src/main/java/com/casic/config/CodeGenerator.java
new file mode 100644
index 0000000..ca10d95
--- /dev/null
+++ b/src/main/java/com/casic/config/CodeGenerator.java
@@ -0,0 +1,110 @@
+//package com.casic.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.annotation.FieldFill;
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+//import com.baomidou.mybatisplus.generator.AutoGenerator;
+//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+//import com.baomidou.mybatisplus.generator.config.PackageConfig;
+//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+//import com.baomidou.mybatisplus.generator.config.po.TableFill;
+//import com.baomidou.mybatisplus.generator.config.rules.DateType;
+//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+//import org.apache.commons.lang3.StringUtils;
+//
+//import java.util.ArrayList;
+//import java.util.Scanner;
+//
+//public class CodeGenerator {
+//
+//
+// public static String scanner(String tip) {
+// Scanner scanner = new Scanner(System.in);
+// StringBuilder help = new StringBuilder();
+// help.append("请输入" + tip + ":");
+// System.out.println(help.toString());
+// if (scanner.hasNext()) {
+// String ipt = scanner.next();
+// if (StringUtils.isNotBlank(ipt)) {
+// return ipt;
+// }
+// }
+// throw new MybatisPlusException("请输入正确的" + tip + "!");
+// }
+//
+//
+//
+//
+//
+// public static void main(String[] args) {
+// // 代码生成器
+// AutoGenerator mpg = new AutoGenerator();
+//
+// // 全局配置
+// GlobalConfig gc = new GlobalConfig();
+// String projectPath = System.getProperty("user.dir");
+// gc.setOutputDir(projectPath + "/src/main/java");//设置代码生成路径
+// gc.setFileOverride(true);//是否覆盖以前文件
+// gc.setOpen(false);//是否打开生成目录
+// gc.setAuthor("yixin");//设置项目作者名称
+// gc.setIdType(IdType.AUTO);//设置主键策略
+// gc.setBaseResultMap(true);//生成基本ResultMap
+// gc.setBaseColumnList(true);//生成基本ColumnList
+// gc.setServiceName("%sService");//去掉服务默认前缀
+// gc.setDateType(DateType.ONLY_DATE);//设置时间类型
+// mpg.setGlobalConfig(gc);
+//
+// // 数据源配置
+// DataSourceConfig dsc = new DataSourceConfig();
+// dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
+// dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+// dsc.setUsername("root");
+// dsc.setPassword("123456");
+// mpg.setDataSource(dsc);
+//
+// // 包配置
+// PackageConfig pc = new PackageConfig();
+// pc.setParent("com.yixin");
+// pc.setMapper("mapper");
+// pc.setXml("mapper.xml");
+// pc.setEntity("pojo");
+// pc.setService("service");
+// pc.setServiceImpl("service.impl");
+// pc.setController("controller");
+// mpg.setPackageInfo(pc);
+//
+// // 策略配置
+// StrategyConfig sc = new StrategyConfig();
+// sc.setNaming(NamingStrategy.underline_to_camel);
+// sc.setColumnNaming(NamingStrategy.underline_to_camel);
+// sc.setEntityLombokModel(true);//自动lombok
+// sc.setRestControllerStyle(true);
+// sc.setControllerMappingHyphenStyle(true);
+//
+// sc.setLogicDeleteFieldName("deleted");//设置逻辑删除
+//
+// //设置自动填充配置
+// TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);
+// TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
+// ArrayList tableFills=new ArrayList<>();
+// tableFills.add(gmt_create);
+// tableFills.add(gmt_modified);
+// sc.setTableFillList(tableFills);
+//
+// //乐观锁
+// sc.setVersionFieldName("version");
+// sc.setRestControllerStyle(true);//驼峰命名
+//
+//
+//
+// // sc.setTablePrefix("tbl_"); 设置表名前缀
+// sc.setInclude(scanner("表名,多个英文逗号分割").split(","));
+// mpg.setStrategy(sc);
+//
+// // 生成代码
+// mpg.execute();
+// }
+//
+//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
new file mode 100644
index 0000000..7d19680
--- /dev/null
+++ b/src/main/java/com/casic/config/CorsConfig.java
@@ -0,0 +1,31 @@
+package com.casic.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * 基础框架 - 跨域请求配置
+ */
+@Configuration
+public class CorsConfig {
+ @Bean
+ public CorsFilter corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", buildConfig());
+ return new CorsFilter(source);
+ }
+
+ private CorsConfiguration buildConfig() {
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ // 1允许任何域名使用
+ corsConfiguration.addAllowedOrigin("*");
+ // 2允许任何头
+ corsConfiguration.addAllowedHeader("*");
+ // 3允许任何方法(post、get等)
+ corsConfiguration.addAllowedMethod("*");
+ return corsConfiguration;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
new file mode 100644
index 0000000..bb4c9ff
--- /dev/null
+++ b/src/main/java/com/casic/config/Knife4jConfiguration.java
@@ -0,0 +1,38 @@
+package com.casic.config;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+@Configuration
+@EnableKnife4j
+public class Knife4jConfiguration {
+
+ @Value(value = "${swagger.enable}")
+ public boolean enable;
+ @Value(value = "${swagger.groupName}")
+ public String groupName;
+
+ @Bean(value = "dockerBean")
+ public Docket dockerBean() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(new ApiInfoBuilder()
+ //描述字段支持Markdown语法
+ .description("# Knife4j RESTful APIs")
+ .termsOfServiceUrl("https://doc.casic.com/")
+ .version("1.0")
+ .build())
+ //分组名称
+ .groupName(groupName)
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("com.casic"))
+ .paths(PathSelectors.any()).build().enable(enable);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/MybatisPlusConfig.java b/src/main/java/com/casic/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..58fd3b1
--- /dev/null
+++ b/src/main/java/com/casic/config/MybatisPlusConfig.java
@@ -0,0 +1,18 @@
+package com.casic.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(){
+ MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+}
+
diff --git a/src/main/java/com/casic/controller/AlarmConfigController.java b/src/main/java/com/casic/controller/AlarmConfigController.java
new file mode 100644
index 0000000..85d965a
--- /dev/null
+++ b/src/main/java/com/casic/controller/AlarmConfigController.java
@@ -0,0 +1,57 @@
+package com.casic.controller;
+
+import com.casic.entity.NbAlarmConfig;
+import com.casic.entity.NbDevice;
+import com.casic.model.AlarmConfigParam;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.AlarmConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/alarm")
+@Slf4j
+@Api(tags = "报警配置")
+public class AlarmConfigController {
+
+ private final AlarmConfigService alarmConfigService;
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("报警下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List alarmConfigParamList) {
+ return alarmConfigService.gasBatchConfig(alarmConfigParamList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("报警配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return alarmConfigService.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/src/main/java/com/casic/config/AEPParamConfig.java b/src/main/java/com/casic/config/AEPParamConfig.java
new file mode 100644
index 0000000..349d4b2
--- /dev/null
+++ b/src/main/java/com/casic/config/AEPParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class AEPParamConfig {
+
+ @Value("${nb.app.key}")
+ private String appKey;
+ @Value("${nb.app.secret}")
+ private String appSecret;
+ @Value("${nb.gas.url}")
+ private String aepUrl;
+ @Value("${nb.gas.product-id}")
+ private String productId;
+ @Value("${nb.gas.MasterKey}")
+ private String masterKey;
+}
diff --git a/src/main/java/com/casic/config/CodeGenerator.java b/src/main/java/com/casic/config/CodeGenerator.java
new file mode 100644
index 0000000..ca10d95
--- /dev/null
+++ b/src/main/java/com/casic/config/CodeGenerator.java
@@ -0,0 +1,110 @@
+//package com.casic.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.annotation.FieldFill;
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+//import com.baomidou.mybatisplus.generator.AutoGenerator;
+//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+//import com.baomidou.mybatisplus.generator.config.PackageConfig;
+//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+//import com.baomidou.mybatisplus.generator.config.po.TableFill;
+//import com.baomidou.mybatisplus.generator.config.rules.DateType;
+//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+//import org.apache.commons.lang3.StringUtils;
+//
+//import java.util.ArrayList;
+//import java.util.Scanner;
+//
+//public class CodeGenerator {
+//
+//
+// public static String scanner(String tip) {
+// Scanner scanner = new Scanner(System.in);
+// StringBuilder help = new StringBuilder();
+// help.append("请输入" + tip + ":");
+// System.out.println(help.toString());
+// if (scanner.hasNext()) {
+// String ipt = scanner.next();
+// if (StringUtils.isNotBlank(ipt)) {
+// return ipt;
+// }
+// }
+// throw new MybatisPlusException("请输入正确的" + tip + "!");
+// }
+//
+//
+//
+//
+//
+// public static void main(String[] args) {
+// // 代码生成器
+// AutoGenerator mpg = new AutoGenerator();
+//
+// // 全局配置
+// GlobalConfig gc = new GlobalConfig();
+// String projectPath = System.getProperty("user.dir");
+// gc.setOutputDir(projectPath + "/src/main/java");//设置代码生成路径
+// gc.setFileOverride(true);//是否覆盖以前文件
+// gc.setOpen(false);//是否打开生成目录
+// gc.setAuthor("yixin");//设置项目作者名称
+// gc.setIdType(IdType.AUTO);//设置主键策略
+// gc.setBaseResultMap(true);//生成基本ResultMap
+// gc.setBaseColumnList(true);//生成基本ColumnList
+// gc.setServiceName("%sService");//去掉服务默认前缀
+// gc.setDateType(DateType.ONLY_DATE);//设置时间类型
+// mpg.setGlobalConfig(gc);
+//
+// // 数据源配置
+// DataSourceConfig dsc = new DataSourceConfig();
+// dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
+// dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+// dsc.setUsername("root");
+// dsc.setPassword("123456");
+// mpg.setDataSource(dsc);
+//
+// // 包配置
+// PackageConfig pc = new PackageConfig();
+// pc.setParent("com.yixin");
+// pc.setMapper("mapper");
+// pc.setXml("mapper.xml");
+// pc.setEntity("pojo");
+// pc.setService("service");
+// pc.setServiceImpl("service.impl");
+// pc.setController("controller");
+// mpg.setPackageInfo(pc);
+//
+// // 策略配置
+// StrategyConfig sc = new StrategyConfig();
+// sc.setNaming(NamingStrategy.underline_to_camel);
+// sc.setColumnNaming(NamingStrategy.underline_to_camel);
+// sc.setEntityLombokModel(true);//自动lombok
+// sc.setRestControllerStyle(true);
+// sc.setControllerMappingHyphenStyle(true);
+//
+// sc.setLogicDeleteFieldName("deleted");//设置逻辑删除
+//
+// //设置自动填充配置
+// TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);
+// TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
+// ArrayList tableFills=new ArrayList<>();
+// tableFills.add(gmt_create);
+// tableFills.add(gmt_modified);
+// sc.setTableFillList(tableFills);
+//
+// //乐观锁
+// sc.setVersionFieldName("version");
+// sc.setRestControllerStyle(true);//驼峰命名
+//
+//
+//
+// // sc.setTablePrefix("tbl_"); 设置表名前缀
+// sc.setInclude(scanner("表名,多个英文逗号分割").split(","));
+// mpg.setStrategy(sc);
+//
+// // 生成代码
+// mpg.execute();
+// }
+//
+//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
new file mode 100644
index 0000000..7d19680
--- /dev/null
+++ b/src/main/java/com/casic/config/CorsConfig.java
@@ -0,0 +1,31 @@
+package com.casic.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * 基础框架 - 跨域请求配置
+ */
+@Configuration
+public class CorsConfig {
+ @Bean
+ public CorsFilter corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", buildConfig());
+ return new CorsFilter(source);
+ }
+
+ private CorsConfiguration buildConfig() {
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ // 1允许任何域名使用
+ corsConfiguration.addAllowedOrigin("*");
+ // 2允许任何头
+ corsConfiguration.addAllowedHeader("*");
+ // 3允许任何方法(post、get等)
+ corsConfiguration.addAllowedMethod("*");
+ return corsConfiguration;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
new file mode 100644
index 0000000..bb4c9ff
--- /dev/null
+++ b/src/main/java/com/casic/config/Knife4jConfiguration.java
@@ -0,0 +1,38 @@
+package com.casic.config;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+@Configuration
+@EnableKnife4j
+public class Knife4jConfiguration {
+
+ @Value(value = "${swagger.enable}")
+ public boolean enable;
+ @Value(value = "${swagger.groupName}")
+ public String groupName;
+
+ @Bean(value = "dockerBean")
+ public Docket dockerBean() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(new ApiInfoBuilder()
+ //描述字段支持Markdown语法
+ .description("# Knife4j RESTful APIs")
+ .termsOfServiceUrl("https://doc.casic.com/")
+ .version("1.0")
+ .build())
+ //分组名称
+ .groupName(groupName)
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("com.casic"))
+ .paths(PathSelectors.any()).build().enable(enable);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/MybatisPlusConfig.java b/src/main/java/com/casic/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..58fd3b1
--- /dev/null
+++ b/src/main/java/com/casic/config/MybatisPlusConfig.java
@@ -0,0 +1,18 @@
+package com.casic.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(){
+ MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+}
+
diff --git a/src/main/java/com/casic/controller/AlarmConfigController.java b/src/main/java/com/casic/controller/AlarmConfigController.java
new file mode 100644
index 0000000..85d965a
--- /dev/null
+++ b/src/main/java/com/casic/controller/AlarmConfigController.java
@@ -0,0 +1,57 @@
+package com.casic.controller;
+
+import com.casic.entity.NbAlarmConfig;
+import com.casic.entity.NbDevice;
+import com.casic.model.AlarmConfigParam;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.AlarmConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/alarm")
+@Slf4j
+@Api(tags = "报警配置")
+public class AlarmConfigController {
+
+ private final AlarmConfigService alarmConfigService;
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("报警下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List alarmConfigParamList) {
+ return alarmConfigService.gasBatchConfig(alarmConfigParamList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("报警配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return alarmConfigService.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DataGasController.java b/src/main/java/com/casic/controller/DataGasController.java
new file mode 100644
index 0000000..12ca603
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataGasController.java
@@ -0,0 +1,61 @@
+package com.casic.controller;
+
+import com.casic.entity.LucencyGasData;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDataService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/gas")
+@Api(tags = "数据列表")
+public class DataGasController {
+
+ @Resource
+ private GasDataService gasDataService;
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("数据查询列表-单记录")
+ @RequestMapping("/list-page")
+ public ResponseData> getGasDataList(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasDataList(devcode, beginTime, endTime, currentIndex, pageSize,sortDevcode);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备历史数据列表")
+ @RequestMapping("/devcode/list")
+ public ResponseData> getGasHistoryList(@RequestParam(value = "devcode", required = true) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasHistoryList(devcode, beginTime, endTime, currentIndex, pageSize);
+ }
+
+
+
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/src/main/java/com/casic/config/AEPParamConfig.java b/src/main/java/com/casic/config/AEPParamConfig.java
new file mode 100644
index 0000000..349d4b2
--- /dev/null
+++ b/src/main/java/com/casic/config/AEPParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class AEPParamConfig {
+
+ @Value("${nb.app.key}")
+ private String appKey;
+ @Value("${nb.app.secret}")
+ private String appSecret;
+ @Value("${nb.gas.url}")
+ private String aepUrl;
+ @Value("${nb.gas.product-id}")
+ private String productId;
+ @Value("${nb.gas.MasterKey}")
+ private String masterKey;
+}
diff --git a/src/main/java/com/casic/config/CodeGenerator.java b/src/main/java/com/casic/config/CodeGenerator.java
new file mode 100644
index 0000000..ca10d95
--- /dev/null
+++ b/src/main/java/com/casic/config/CodeGenerator.java
@@ -0,0 +1,110 @@
+//package com.casic.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.annotation.FieldFill;
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+//import com.baomidou.mybatisplus.generator.AutoGenerator;
+//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+//import com.baomidou.mybatisplus.generator.config.PackageConfig;
+//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+//import com.baomidou.mybatisplus.generator.config.po.TableFill;
+//import com.baomidou.mybatisplus.generator.config.rules.DateType;
+//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+//import org.apache.commons.lang3.StringUtils;
+//
+//import java.util.ArrayList;
+//import java.util.Scanner;
+//
+//public class CodeGenerator {
+//
+//
+// public static String scanner(String tip) {
+// Scanner scanner = new Scanner(System.in);
+// StringBuilder help = new StringBuilder();
+// help.append("请输入" + tip + ":");
+// System.out.println(help.toString());
+// if (scanner.hasNext()) {
+// String ipt = scanner.next();
+// if (StringUtils.isNotBlank(ipt)) {
+// return ipt;
+// }
+// }
+// throw new MybatisPlusException("请输入正确的" + tip + "!");
+// }
+//
+//
+//
+//
+//
+// public static void main(String[] args) {
+// // 代码生成器
+// AutoGenerator mpg = new AutoGenerator();
+//
+// // 全局配置
+// GlobalConfig gc = new GlobalConfig();
+// String projectPath = System.getProperty("user.dir");
+// gc.setOutputDir(projectPath + "/src/main/java");//设置代码生成路径
+// gc.setFileOverride(true);//是否覆盖以前文件
+// gc.setOpen(false);//是否打开生成目录
+// gc.setAuthor("yixin");//设置项目作者名称
+// gc.setIdType(IdType.AUTO);//设置主键策略
+// gc.setBaseResultMap(true);//生成基本ResultMap
+// gc.setBaseColumnList(true);//生成基本ColumnList
+// gc.setServiceName("%sService");//去掉服务默认前缀
+// gc.setDateType(DateType.ONLY_DATE);//设置时间类型
+// mpg.setGlobalConfig(gc);
+//
+// // 数据源配置
+// DataSourceConfig dsc = new DataSourceConfig();
+// dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
+// dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+// dsc.setUsername("root");
+// dsc.setPassword("123456");
+// mpg.setDataSource(dsc);
+//
+// // 包配置
+// PackageConfig pc = new PackageConfig();
+// pc.setParent("com.yixin");
+// pc.setMapper("mapper");
+// pc.setXml("mapper.xml");
+// pc.setEntity("pojo");
+// pc.setService("service");
+// pc.setServiceImpl("service.impl");
+// pc.setController("controller");
+// mpg.setPackageInfo(pc);
+//
+// // 策略配置
+// StrategyConfig sc = new StrategyConfig();
+// sc.setNaming(NamingStrategy.underline_to_camel);
+// sc.setColumnNaming(NamingStrategy.underline_to_camel);
+// sc.setEntityLombokModel(true);//自动lombok
+// sc.setRestControllerStyle(true);
+// sc.setControllerMappingHyphenStyle(true);
+//
+// sc.setLogicDeleteFieldName("deleted");//设置逻辑删除
+//
+// //设置自动填充配置
+// TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);
+// TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
+// ArrayList tableFills=new ArrayList<>();
+// tableFills.add(gmt_create);
+// tableFills.add(gmt_modified);
+// sc.setTableFillList(tableFills);
+//
+// //乐观锁
+// sc.setVersionFieldName("version");
+// sc.setRestControllerStyle(true);//驼峰命名
+//
+//
+//
+// // sc.setTablePrefix("tbl_"); 设置表名前缀
+// sc.setInclude(scanner("表名,多个英文逗号分割").split(","));
+// mpg.setStrategy(sc);
+//
+// // 生成代码
+// mpg.execute();
+// }
+//
+//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
new file mode 100644
index 0000000..7d19680
--- /dev/null
+++ b/src/main/java/com/casic/config/CorsConfig.java
@@ -0,0 +1,31 @@
+package com.casic.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * 基础框架 - 跨域请求配置
+ */
+@Configuration
+public class CorsConfig {
+ @Bean
+ public CorsFilter corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", buildConfig());
+ return new CorsFilter(source);
+ }
+
+ private CorsConfiguration buildConfig() {
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ // 1允许任何域名使用
+ corsConfiguration.addAllowedOrigin("*");
+ // 2允许任何头
+ corsConfiguration.addAllowedHeader("*");
+ // 3允许任何方法(post、get等)
+ corsConfiguration.addAllowedMethod("*");
+ return corsConfiguration;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
new file mode 100644
index 0000000..bb4c9ff
--- /dev/null
+++ b/src/main/java/com/casic/config/Knife4jConfiguration.java
@@ -0,0 +1,38 @@
+package com.casic.config;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+@Configuration
+@EnableKnife4j
+public class Knife4jConfiguration {
+
+ @Value(value = "${swagger.enable}")
+ public boolean enable;
+ @Value(value = "${swagger.groupName}")
+ public String groupName;
+
+ @Bean(value = "dockerBean")
+ public Docket dockerBean() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(new ApiInfoBuilder()
+ //描述字段支持Markdown语法
+ .description("# Knife4j RESTful APIs")
+ .termsOfServiceUrl("https://doc.casic.com/")
+ .version("1.0")
+ .build())
+ //分组名称
+ .groupName(groupName)
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("com.casic"))
+ .paths(PathSelectors.any()).build().enable(enable);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/MybatisPlusConfig.java b/src/main/java/com/casic/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..58fd3b1
--- /dev/null
+++ b/src/main/java/com/casic/config/MybatisPlusConfig.java
@@ -0,0 +1,18 @@
+package com.casic.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(){
+ MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+}
+
diff --git a/src/main/java/com/casic/controller/AlarmConfigController.java b/src/main/java/com/casic/controller/AlarmConfigController.java
new file mode 100644
index 0000000..85d965a
--- /dev/null
+++ b/src/main/java/com/casic/controller/AlarmConfigController.java
@@ -0,0 +1,57 @@
+package com.casic.controller;
+
+import com.casic.entity.NbAlarmConfig;
+import com.casic.entity.NbDevice;
+import com.casic.model.AlarmConfigParam;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.AlarmConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/alarm")
+@Slf4j
+@Api(tags = "报警配置")
+public class AlarmConfigController {
+
+ private final AlarmConfigService alarmConfigService;
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("报警下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List alarmConfigParamList) {
+ return alarmConfigService.gasBatchConfig(alarmConfigParamList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("报警配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return alarmConfigService.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DataGasController.java b/src/main/java/com/casic/controller/DataGasController.java
new file mode 100644
index 0000000..12ca603
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataGasController.java
@@ -0,0 +1,61 @@
+package com.casic.controller;
+
+import com.casic.entity.LucencyGasData;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDataService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/gas")
+@Api(tags = "数据列表")
+public class DataGasController {
+
+ @Resource
+ private GasDataService gasDataService;
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("数据查询列表-单记录")
+ @RequestMapping("/list-page")
+ public ResponseData> getGasDataList(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasDataList(devcode, beginTime, endTime, currentIndex, pageSize,sortDevcode);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备历史数据列表")
+ @RequestMapping("/devcode/list")
+ public ResponseData> getGasHistoryList(@RequestParam(value = "devcode", required = true) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasHistoryList(devcode, beginTime, endTime, currentIndex, pageSize);
+ }
+
+
+
+}
diff --git a/src/main/java/com/casic/controller/DataRecvController.java b/src/main/java/com/casic/controller/DataRecvController.java
new file mode 100644
index 0000000..3655480
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataRecvController.java
@@ -0,0 +1,31 @@
+package com.casic.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.casic.service.GasDataRecvService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Api(tags = "数据接收")
+@Slf4j
+public class DataRecvController {
+
+ private final GasDataRecvService gasDataRecvService;
+
+ @ApiOperation("数据接收接口,接收三码、实时数据,自动增添设备,前端不需要实现")
+ @RequestMapping("/gas/recv")
+ public Object gasRecv(@RequestBody Map recvDataMap) {
+ log.error("--------" + JSONObject.toJSONString(recvDataMap));
+ return gasDataRecvService.saveRev(recvDataMap);
+ }
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/src/main/java/com/casic/config/AEPParamConfig.java b/src/main/java/com/casic/config/AEPParamConfig.java
new file mode 100644
index 0000000..349d4b2
--- /dev/null
+++ b/src/main/java/com/casic/config/AEPParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class AEPParamConfig {
+
+ @Value("${nb.app.key}")
+ private String appKey;
+ @Value("${nb.app.secret}")
+ private String appSecret;
+ @Value("${nb.gas.url}")
+ private String aepUrl;
+ @Value("${nb.gas.product-id}")
+ private String productId;
+ @Value("${nb.gas.MasterKey}")
+ private String masterKey;
+}
diff --git a/src/main/java/com/casic/config/CodeGenerator.java b/src/main/java/com/casic/config/CodeGenerator.java
new file mode 100644
index 0000000..ca10d95
--- /dev/null
+++ b/src/main/java/com/casic/config/CodeGenerator.java
@@ -0,0 +1,110 @@
+//package com.casic.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.annotation.FieldFill;
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+//import com.baomidou.mybatisplus.generator.AutoGenerator;
+//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+//import com.baomidou.mybatisplus.generator.config.PackageConfig;
+//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+//import com.baomidou.mybatisplus.generator.config.po.TableFill;
+//import com.baomidou.mybatisplus.generator.config.rules.DateType;
+//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+//import org.apache.commons.lang3.StringUtils;
+//
+//import java.util.ArrayList;
+//import java.util.Scanner;
+//
+//public class CodeGenerator {
+//
+//
+// public static String scanner(String tip) {
+// Scanner scanner = new Scanner(System.in);
+// StringBuilder help = new StringBuilder();
+// help.append("请输入" + tip + ":");
+// System.out.println(help.toString());
+// if (scanner.hasNext()) {
+// String ipt = scanner.next();
+// if (StringUtils.isNotBlank(ipt)) {
+// return ipt;
+// }
+// }
+// throw new MybatisPlusException("请输入正确的" + tip + "!");
+// }
+//
+//
+//
+//
+//
+// public static void main(String[] args) {
+// // 代码生成器
+// AutoGenerator mpg = new AutoGenerator();
+//
+// // 全局配置
+// GlobalConfig gc = new GlobalConfig();
+// String projectPath = System.getProperty("user.dir");
+// gc.setOutputDir(projectPath + "/src/main/java");//设置代码生成路径
+// gc.setFileOverride(true);//是否覆盖以前文件
+// gc.setOpen(false);//是否打开生成目录
+// gc.setAuthor("yixin");//设置项目作者名称
+// gc.setIdType(IdType.AUTO);//设置主键策略
+// gc.setBaseResultMap(true);//生成基本ResultMap
+// gc.setBaseColumnList(true);//生成基本ColumnList
+// gc.setServiceName("%sService");//去掉服务默认前缀
+// gc.setDateType(DateType.ONLY_DATE);//设置时间类型
+// mpg.setGlobalConfig(gc);
+//
+// // 数据源配置
+// DataSourceConfig dsc = new DataSourceConfig();
+// dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
+// dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+// dsc.setUsername("root");
+// dsc.setPassword("123456");
+// mpg.setDataSource(dsc);
+//
+// // 包配置
+// PackageConfig pc = new PackageConfig();
+// pc.setParent("com.yixin");
+// pc.setMapper("mapper");
+// pc.setXml("mapper.xml");
+// pc.setEntity("pojo");
+// pc.setService("service");
+// pc.setServiceImpl("service.impl");
+// pc.setController("controller");
+// mpg.setPackageInfo(pc);
+//
+// // 策略配置
+// StrategyConfig sc = new StrategyConfig();
+// sc.setNaming(NamingStrategy.underline_to_camel);
+// sc.setColumnNaming(NamingStrategy.underline_to_camel);
+// sc.setEntityLombokModel(true);//自动lombok
+// sc.setRestControllerStyle(true);
+// sc.setControllerMappingHyphenStyle(true);
+//
+// sc.setLogicDeleteFieldName("deleted");//设置逻辑删除
+//
+// //设置自动填充配置
+// TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);
+// TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
+// ArrayList tableFills=new ArrayList<>();
+// tableFills.add(gmt_create);
+// tableFills.add(gmt_modified);
+// sc.setTableFillList(tableFills);
+//
+// //乐观锁
+// sc.setVersionFieldName("version");
+// sc.setRestControllerStyle(true);//驼峰命名
+//
+//
+//
+// // sc.setTablePrefix("tbl_"); 设置表名前缀
+// sc.setInclude(scanner("表名,多个英文逗号分割").split(","));
+// mpg.setStrategy(sc);
+//
+// // 生成代码
+// mpg.execute();
+// }
+//
+//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
new file mode 100644
index 0000000..7d19680
--- /dev/null
+++ b/src/main/java/com/casic/config/CorsConfig.java
@@ -0,0 +1,31 @@
+package com.casic.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * 基础框架 - 跨域请求配置
+ */
+@Configuration
+public class CorsConfig {
+ @Bean
+ public CorsFilter corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", buildConfig());
+ return new CorsFilter(source);
+ }
+
+ private CorsConfiguration buildConfig() {
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ // 1允许任何域名使用
+ corsConfiguration.addAllowedOrigin("*");
+ // 2允许任何头
+ corsConfiguration.addAllowedHeader("*");
+ // 3允许任何方法(post、get等)
+ corsConfiguration.addAllowedMethod("*");
+ return corsConfiguration;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
new file mode 100644
index 0000000..bb4c9ff
--- /dev/null
+++ b/src/main/java/com/casic/config/Knife4jConfiguration.java
@@ -0,0 +1,38 @@
+package com.casic.config;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+@Configuration
+@EnableKnife4j
+public class Knife4jConfiguration {
+
+ @Value(value = "${swagger.enable}")
+ public boolean enable;
+ @Value(value = "${swagger.groupName}")
+ public String groupName;
+
+ @Bean(value = "dockerBean")
+ public Docket dockerBean() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(new ApiInfoBuilder()
+ //描述字段支持Markdown语法
+ .description("# Knife4j RESTful APIs")
+ .termsOfServiceUrl("https://doc.casic.com/")
+ .version("1.0")
+ .build())
+ //分组名称
+ .groupName(groupName)
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("com.casic"))
+ .paths(PathSelectors.any()).build().enable(enable);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/MybatisPlusConfig.java b/src/main/java/com/casic/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..58fd3b1
--- /dev/null
+++ b/src/main/java/com/casic/config/MybatisPlusConfig.java
@@ -0,0 +1,18 @@
+package com.casic.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(){
+ MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+}
+
diff --git a/src/main/java/com/casic/controller/AlarmConfigController.java b/src/main/java/com/casic/controller/AlarmConfigController.java
new file mode 100644
index 0000000..85d965a
--- /dev/null
+++ b/src/main/java/com/casic/controller/AlarmConfigController.java
@@ -0,0 +1,57 @@
+package com.casic.controller;
+
+import com.casic.entity.NbAlarmConfig;
+import com.casic.entity.NbDevice;
+import com.casic.model.AlarmConfigParam;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.AlarmConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/alarm")
+@Slf4j
+@Api(tags = "报警配置")
+public class AlarmConfigController {
+
+ private final AlarmConfigService alarmConfigService;
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("报警下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List alarmConfigParamList) {
+ return alarmConfigService.gasBatchConfig(alarmConfigParamList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("报警配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return alarmConfigService.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DataGasController.java b/src/main/java/com/casic/controller/DataGasController.java
new file mode 100644
index 0000000..12ca603
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataGasController.java
@@ -0,0 +1,61 @@
+package com.casic.controller;
+
+import com.casic.entity.LucencyGasData;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDataService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/gas")
+@Api(tags = "数据列表")
+public class DataGasController {
+
+ @Resource
+ private GasDataService gasDataService;
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("数据查询列表-单记录")
+ @RequestMapping("/list-page")
+ public ResponseData> getGasDataList(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasDataList(devcode, beginTime, endTime, currentIndex, pageSize,sortDevcode);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备历史数据列表")
+ @RequestMapping("/devcode/list")
+ public ResponseData> getGasHistoryList(@RequestParam(value = "devcode", required = true) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasHistoryList(devcode, beginTime, endTime, currentIndex, pageSize);
+ }
+
+
+
+}
diff --git a/src/main/java/com/casic/controller/DataRecvController.java b/src/main/java/com/casic/controller/DataRecvController.java
new file mode 100644
index 0000000..3655480
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataRecvController.java
@@ -0,0 +1,31 @@
+package com.casic.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.casic.service.GasDataRecvService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Api(tags = "数据接收")
+@Slf4j
+public class DataRecvController {
+
+ private final GasDataRecvService gasDataRecvService;
+
+ @ApiOperation("数据接收接口,接收三码、实时数据,自动增添设备,前端不需要实现")
+ @RequestMapping("/gas/recv")
+ public Object gasRecv(@RequestBody Map recvDataMap) {
+ log.error("--------" + JSONObject.toJSONString(recvDataMap));
+ return gasDataRecvService.saveRev(recvDataMap);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceConfigController.java b/src/main/java/com/casic/controller/DeviceConfigController.java
new file mode 100644
index 0000000..613d205
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceConfigController.java
@@ -0,0 +1,62 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备配置")
+public class DeviceConfigController {
+
+ private final DeviceConfigService devcieConfig;
+
+ @RequestMapping("/device/config")
+ @ApiOperation("设备下发配置")
+ public ResponseData gasDeviceConfig(@RequestBody BusConfigParam busConfigParam) {
+ return devcieConfig.devcieConfig(busConfigParam);
+ }
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("设备下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List busConfigList) {
+ return devcieConfig.gasBatchConfig(busConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return devcieConfig.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/src/main/java/com/casic/config/AEPParamConfig.java b/src/main/java/com/casic/config/AEPParamConfig.java
new file mode 100644
index 0000000..349d4b2
--- /dev/null
+++ b/src/main/java/com/casic/config/AEPParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class AEPParamConfig {
+
+ @Value("${nb.app.key}")
+ private String appKey;
+ @Value("${nb.app.secret}")
+ private String appSecret;
+ @Value("${nb.gas.url}")
+ private String aepUrl;
+ @Value("${nb.gas.product-id}")
+ private String productId;
+ @Value("${nb.gas.MasterKey}")
+ private String masterKey;
+}
diff --git a/src/main/java/com/casic/config/CodeGenerator.java b/src/main/java/com/casic/config/CodeGenerator.java
new file mode 100644
index 0000000..ca10d95
--- /dev/null
+++ b/src/main/java/com/casic/config/CodeGenerator.java
@@ -0,0 +1,110 @@
+//package com.casic.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.annotation.FieldFill;
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+//import com.baomidou.mybatisplus.generator.AutoGenerator;
+//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+//import com.baomidou.mybatisplus.generator.config.PackageConfig;
+//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+//import com.baomidou.mybatisplus.generator.config.po.TableFill;
+//import com.baomidou.mybatisplus.generator.config.rules.DateType;
+//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+//import org.apache.commons.lang3.StringUtils;
+//
+//import java.util.ArrayList;
+//import java.util.Scanner;
+//
+//public class CodeGenerator {
+//
+//
+// public static String scanner(String tip) {
+// Scanner scanner = new Scanner(System.in);
+// StringBuilder help = new StringBuilder();
+// help.append("请输入" + tip + ":");
+// System.out.println(help.toString());
+// if (scanner.hasNext()) {
+// String ipt = scanner.next();
+// if (StringUtils.isNotBlank(ipt)) {
+// return ipt;
+// }
+// }
+// throw new MybatisPlusException("请输入正确的" + tip + "!");
+// }
+//
+//
+//
+//
+//
+// public static void main(String[] args) {
+// // 代码生成器
+// AutoGenerator mpg = new AutoGenerator();
+//
+// // 全局配置
+// GlobalConfig gc = new GlobalConfig();
+// String projectPath = System.getProperty("user.dir");
+// gc.setOutputDir(projectPath + "/src/main/java");//设置代码生成路径
+// gc.setFileOverride(true);//是否覆盖以前文件
+// gc.setOpen(false);//是否打开生成目录
+// gc.setAuthor("yixin");//设置项目作者名称
+// gc.setIdType(IdType.AUTO);//设置主键策略
+// gc.setBaseResultMap(true);//生成基本ResultMap
+// gc.setBaseColumnList(true);//生成基本ColumnList
+// gc.setServiceName("%sService");//去掉服务默认前缀
+// gc.setDateType(DateType.ONLY_DATE);//设置时间类型
+// mpg.setGlobalConfig(gc);
+//
+// // 数据源配置
+// DataSourceConfig dsc = new DataSourceConfig();
+// dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
+// dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+// dsc.setUsername("root");
+// dsc.setPassword("123456");
+// mpg.setDataSource(dsc);
+//
+// // 包配置
+// PackageConfig pc = new PackageConfig();
+// pc.setParent("com.yixin");
+// pc.setMapper("mapper");
+// pc.setXml("mapper.xml");
+// pc.setEntity("pojo");
+// pc.setService("service");
+// pc.setServiceImpl("service.impl");
+// pc.setController("controller");
+// mpg.setPackageInfo(pc);
+//
+// // 策略配置
+// StrategyConfig sc = new StrategyConfig();
+// sc.setNaming(NamingStrategy.underline_to_camel);
+// sc.setColumnNaming(NamingStrategy.underline_to_camel);
+// sc.setEntityLombokModel(true);//自动lombok
+// sc.setRestControllerStyle(true);
+// sc.setControllerMappingHyphenStyle(true);
+//
+// sc.setLogicDeleteFieldName("deleted");//设置逻辑删除
+//
+// //设置自动填充配置
+// TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);
+// TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
+// ArrayList tableFills=new ArrayList<>();
+// tableFills.add(gmt_create);
+// tableFills.add(gmt_modified);
+// sc.setTableFillList(tableFills);
+//
+// //乐观锁
+// sc.setVersionFieldName("version");
+// sc.setRestControllerStyle(true);//驼峰命名
+//
+//
+//
+// // sc.setTablePrefix("tbl_"); 设置表名前缀
+// sc.setInclude(scanner("表名,多个英文逗号分割").split(","));
+// mpg.setStrategy(sc);
+//
+// // 生成代码
+// mpg.execute();
+// }
+//
+//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
new file mode 100644
index 0000000..7d19680
--- /dev/null
+++ b/src/main/java/com/casic/config/CorsConfig.java
@@ -0,0 +1,31 @@
+package com.casic.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * 基础框架 - 跨域请求配置
+ */
+@Configuration
+public class CorsConfig {
+ @Bean
+ public CorsFilter corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", buildConfig());
+ return new CorsFilter(source);
+ }
+
+ private CorsConfiguration buildConfig() {
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ // 1允许任何域名使用
+ corsConfiguration.addAllowedOrigin("*");
+ // 2允许任何头
+ corsConfiguration.addAllowedHeader("*");
+ // 3允许任何方法(post、get等)
+ corsConfiguration.addAllowedMethod("*");
+ return corsConfiguration;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
new file mode 100644
index 0000000..bb4c9ff
--- /dev/null
+++ b/src/main/java/com/casic/config/Knife4jConfiguration.java
@@ -0,0 +1,38 @@
+package com.casic.config;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+@Configuration
+@EnableKnife4j
+public class Knife4jConfiguration {
+
+ @Value(value = "${swagger.enable}")
+ public boolean enable;
+ @Value(value = "${swagger.groupName}")
+ public String groupName;
+
+ @Bean(value = "dockerBean")
+ public Docket dockerBean() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(new ApiInfoBuilder()
+ //描述字段支持Markdown语法
+ .description("# Knife4j RESTful APIs")
+ .termsOfServiceUrl("https://doc.casic.com/")
+ .version("1.0")
+ .build())
+ //分组名称
+ .groupName(groupName)
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("com.casic"))
+ .paths(PathSelectors.any()).build().enable(enable);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/MybatisPlusConfig.java b/src/main/java/com/casic/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..58fd3b1
--- /dev/null
+++ b/src/main/java/com/casic/config/MybatisPlusConfig.java
@@ -0,0 +1,18 @@
+package com.casic.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(){
+ MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+}
+
diff --git a/src/main/java/com/casic/controller/AlarmConfigController.java b/src/main/java/com/casic/controller/AlarmConfigController.java
new file mode 100644
index 0000000..85d965a
--- /dev/null
+++ b/src/main/java/com/casic/controller/AlarmConfigController.java
@@ -0,0 +1,57 @@
+package com.casic.controller;
+
+import com.casic.entity.NbAlarmConfig;
+import com.casic.entity.NbDevice;
+import com.casic.model.AlarmConfigParam;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.AlarmConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/alarm")
+@Slf4j
+@Api(tags = "报警配置")
+public class AlarmConfigController {
+
+ private final AlarmConfigService alarmConfigService;
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("报警下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List alarmConfigParamList) {
+ return alarmConfigService.gasBatchConfig(alarmConfigParamList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("报警配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return alarmConfigService.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DataGasController.java b/src/main/java/com/casic/controller/DataGasController.java
new file mode 100644
index 0000000..12ca603
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataGasController.java
@@ -0,0 +1,61 @@
+package com.casic.controller;
+
+import com.casic.entity.LucencyGasData;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDataService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/gas")
+@Api(tags = "数据列表")
+public class DataGasController {
+
+ @Resource
+ private GasDataService gasDataService;
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("数据查询列表-单记录")
+ @RequestMapping("/list-page")
+ public ResponseData> getGasDataList(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasDataList(devcode, beginTime, endTime, currentIndex, pageSize,sortDevcode);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备历史数据列表")
+ @RequestMapping("/devcode/list")
+ public ResponseData> getGasHistoryList(@RequestParam(value = "devcode", required = true) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasHistoryList(devcode, beginTime, endTime, currentIndex, pageSize);
+ }
+
+
+
+}
diff --git a/src/main/java/com/casic/controller/DataRecvController.java b/src/main/java/com/casic/controller/DataRecvController.java
new file mode 100644
index 0000000..3655480
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataRecvController.java
@@ -0,0 +1,31 @@
+package com.casic.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.casic.service.GasDataRecvService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Api(tags = "数据接收")
+@Slf4j
+public class DataRecvController {
+
+ private final GasDataRecvService gasDataRecvService;
+
+ @ApiOperation("数据接收接口,接收三码、实时数据,自动增添设备,前端不需要实现")
+ @RequestMapping("/gas/recv")
+ public Object gasRecv(@RequestBody Map recvDataMap) {
+ log.error("--------" + JSONObject.toJSONString(recvDataMap));
+ return gasDataRecvService.saveRev(recvDataMap);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceConfigController.java b/src/main/java/com/casic/controller/DeviceConfigController.java
new file mode 100644
index 0000000..613d205
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceConfigController.java
@@ -0,0 +1,62 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备配置")
+public class DeviceConfigController {
+
+ private final DeviceConfigService devcieConfig;
+
+ @RequestMapping("/device/config")
+ @ApiOperation("设备下发配置")
+ public ResponseData gasDeviceConfig(@RequestBody BusConfigParam busConfigParam) {
+ return devcieConfig.devcieConfig(busConfigParam);
+ }
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("设备下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List busConfigList) {
+ return devcieConfig.gasBatchConfig(busConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return devcieConfig.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceStatusController.java b/src/main/java/com/casic/controller/DeviceStatusController.java
new file mode 100644
index 0000000..8d6d05c
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceStatusController.java
@@ -0,0 +1,74 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.DataGasConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDeviceService;
+import com.casic.util.ExportExcelUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备管理")
+public class DeviceStatusController extends ExportExcelUtil {
+
+ private final GasDeviceService gasDeviceService;
+
+ @RequestMapping("/status/config")
+ @ApiOperation("状态下发查询")
+ public ResponseData gasStatusConfig(@RequestBody List dataGasConfigList) {
+ return gasDeviceService.devcieStatusConfig(dataGasConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "keywords", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false)
+ })
+ @ApiOperation("设备列表导出")
+ @RequestMapping(value = "/device/export")
+ public void deviceDataExport(String keywords, String beginTime, String endTime) throws IOException {
+ List deviceDataExcelDtos = gasDeviceService.getDevicieList(beginTime, endTime, keywords);
+ super.exportExcel(NbDevice.class, deviceDataExcelDtos, "设备列表.xlsx");
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "emptyStatus", value = "空状态(查true,不查false)", required = true),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备分页列表")
+ @RequestMapping(value = "/device/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "emptyStatus", required = true) Boolean emptyStatus,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDeviceService.getDevicieListPage(devcode, beginTime, endTime, currentIndex, pageSize,emptyStatus,sortDevcode);
+ }
+
+ @RequestMapping("/device/dict")
+ @ApiOperation("设备字典列表")
+ public ResponseData> deviceDict() {
+ return gasDeviceService.deviceDict();
+ }
+
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/src/main/java/com/casic/config/AEPParamConfig.java b/src/main/java/com/casic/config/AEPParamConfig.java
new file mode 100644
index 0000000..349d4b2
--- /dev/null
+++ b/src/main/java/com/casic/config/AEPParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class AEPParamConfig {
+
+ @Value("${nb.app.key}")
+ private String appKey;
+ @Value("${nb.app.secret}")
+ private String appSecret;
+ @Value("${nb.gas.url}")
+ private String aepUrl;
+ @Value("${nb.gas.product-id}")
+ private String productId;
+ @Value("${nb.gas.MasterKey}")
+ private String masterKey;
+}
diff --git a/src/main/java/com/casic/config/CodeGenerator.java b/src/main/java/com/casic/config/CodeGenerator.java
new file mode 100644
index 0000000..ca10d95
--- /dev/null
+++ b/src/main/java/com/casic/config/CodeGenerator.java
@@ -0,0 +1,110 @@
+//package com.casic.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.annotation.FieldFill;
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+//import com.baomidou.mybatisplus.generator.AutoGenerator;
+//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+//import com.baomidou.mybatisplus.generator.config.PackageConfig;
+//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+//import com.baomidou.mybatisplus.generator.config.po.TableFill;
+//import com.baomidou.mybatisplus.generator.config.rules.DateType;
+//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+//import org.apache.commons.lang3.StringUtils;
+//
+//import java.util.ArrayList;
+//import java.util.Scanner;
+//
+//public class CodeGenerator {
+//
+//
+// public static String scanner(String tip) {
+// Scanner scanner = new Scanner(System.in);
+// StringBuilder help = new StringBuilder();
+// help.append("请输入" + tip + ":");
+// System.out.println(help.toString());
+// if (scanner.hasNext()) {
+// String ipt = scanner.next();
+// if (StringUtils.isNotBlank(ipt)) {
+// return ipt;
+// }
+// }
+// throw new MybatisPlusException("请输入正确的" + tip + "!");
+// }
+//
+//
+//
+//
+//
+// public static void main(String[] args) {
+// // 代码生成器
+// AutoGenerator mpg = new AutoGenerator();
+//
+// // 全局配置
+// GlobalConfig gc = new GlobalConfig();
+// String projectPath = System.getProperty("user.dir");
+// gc.setOutputDir(projectPath + "/src/main/java");//设置代码生成路径
+// gc.setFileOverride(true);//是否覆盖以前文件
+// gc.setOpen(false);//是否打开生成目录
+// gc.setAuthor("yixin");//设置项目作者名称
+// gc.setIdType(IdType.AUTO);//设置主键策略
+// gc.setBaseResultMap(true);//生成基本ResultMap
+// gc.setBaseColumnList(true);//生成基本ColumnList
+// gc.setServiceName("%sService");//去掉服务默认前缀
+// gc.setDateType(DateType.ONLY_DATE);//设置时间类型
+// mpg.setGlobalConfig(gc);
+//
+// // 数据源配置
+// DataSourceConfig dsc = new DataSourceConfig();
+// dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
+// dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+// dsc.setUsername("root");
+// dsc.setPassword("123456");
+// mpg.setDataSource(dsc);
+//
+// // 包配置
+// PackageConfig pc = new PackageConfig();
+// pc.setParent("com.yixin");
+// pc.setMapper("mapper");
+// pc.setXml("mapper.xml");
+// pc.setEntity("pojo");
+// pc.setService("service");
+// pc.setServiceImpl("service.impl");
+// pc.setController("controller");
+// mpg.setPackageInfo(pc);
+//
+// // 策略配置
+// StrategyConfig sc = new StrategyConfig();
+// sc.setNaming(NamingStrategy.underline_to_camel);
+// sc.setColumnNaming(NamingStrategy.underline_to_camel);
+// sc.setEntityLombokModel(true);//自动lombok
+// sc.setRestControllerStyle(true);
+// sc.setControllerMappingHyphenStyle(true);
+//
+// sc.setLogicDeleteFieldName("deleted");//设置逻辑删除
+//
+// //设置自动填充配置
+// TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);
+// TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
+// ArrayList tableFills=new ArrayList<>();
+// tableFills.add(gmt_create);
+// tableFills.add(gmt_modified);
+// sc.setTableFillList(tableFills);
+//
+// //乐观锁
+// sc.setVersionFieldName("version");
+// sc.setRestControllerStyle(true);//驼峰命名
+//
+//
+//
+// // sc.setTablePrefix("tbl_"); 设置表名前缀
+// sc.setInclude(scanner("表名,多个英文逗号分割").split(","));
+// mpg.setStrategy(sc);
+//
+// // 生成代码
+// mpg.execute();
+// }
+//
+//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
new file mode 100644
index 0000000..7d19680
--- /dev/null
+++ b/src/main/java/com/casic/config/CorsConfig.java
@@ -0,0 +1,31 @@
+package com.casic.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * 基础框架 - 跨域请求配置
+ */
+@Configuration
+public class CorsConfig {
+ @Bean
+ public CorsFilter corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", buildConfig());
+ return new CorsFilter(source);
+ }
+
+ private CorsConfiguration buildConfig() {
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ // 1允许任何域名使用
+ corsConfiguration.addAllowedOrigin("*");
+ // 2允许任何头
+ corsConfiguration.addAllowedHeader("*");
+ // 3允许任何方法(post、get等)
+ corsConfiguration.addAllowedMethod("*");
+ return corsConfiguration;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
new file mode 100644
index 0000000..bb4c9ff
--- /dev/null
+++ b/src/main/java/com/casic/config/Knife4jConfiguration.java
@@ -0,0 +1,38 @@
+package com.casic.config;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+@Configuration
+@EnableKnife4j
+public class Knife4jConfiguration {
+
+ @Value(value = "${swagger.enable}")
+ public boolean enable;
+ @Value(value = "${swagger.groupName}")
+ public String groupName;
+
+ @Bean(value = "dockerBean")
+ public Docket dockerBean() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(new ApiInfoBuilder()
+ //描述字段支持Markdown语法
+ .description("# Knife4j RESTful APIs")
+ .termsOfServiceUrl("https://doc.casic.com/")
+ .version("1.0")
+ .build())
+ //分组名称
+ .groupName(groupName)
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("com.casic"))
+ .paths(PathSelectors.any()).build().enable(enable);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/MybatisPlusConfig.java b/src/main/java/com/casic/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..58fd3b1
--- /dev/null
+++ b/src/main/java/com/casic/config/MybatisPlusConfig.java
@@ -0,0 +1,18 @@
+package com.casic.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(){
+ MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+}
+
diff --git a/src/main/java/com/casic/controller/AlarmConfigController.java b/src/main/java/com/casic/controller/AlarmConfigController.java
new file mode 100644
index 0000000..85d965a
--- /dev/null
+++ b/src/main/java/com/casic/controller/AlarmConfigController.java
@@ -0,0 +1,57 @@
+package com.casic.controller;
+
+import com.casic.entity.NbAlarmConfig;
+import com.casic.entity.NbDevice;
+import com.casic.model.AlarmConfigParam;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.AlarmConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/alarm")
+@Slf4j
+@Api(tags = "报警配置")
+public class AlarmConfigController {
+
+ private final AlarmConfigService alarmConfigService;
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("报警下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List alarmConfigParamList) {
+ return alarmConfigService.gasBatchConfig(alarmConfigParamList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("报警配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return alarmConfigService.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DataGasController.java b/src/main/java/com/casic/controller/DataGasController.java
new file mode 100644
index 0000000..12ca603
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataGasController.java
@@ -0,0 +1,61 @@
+package com.casic.controller;
+
+import com.casic.entity.LucencyGasData;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDataService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/gas")
+@Api(tags = "数据列表")
+public class DataGasController {
+
+ @Resource
+ private GasDataService gasDataService;
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("数据查询列表-单记录")
+ @RequestMapping("/list-page")
+ public ResponseData> getGasDataList(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasDataList(devcode, beginTime, endTime, currentIndex, pageSize,sortDevcode);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备历史数据列表")
+ @RequestMapping("/devcode/list")
+ public ResponseData> getGasHistoryList(@RequestParam(value = "devcode", required = true) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasHistoryList(devcode, beginTime, endTime, currentIndex, pageSize);
+ }
+
+
+
+}
diff --git a/src/main/java/com/casic/controller/DataRecvController.java b/src/main/java/com/casic/controller/DataRecvController.java
new file mode 100644
index 0000000..3655480
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataRecvController.java
@@ -0,0 +1,31 @@
+package com.casic.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.casic.service.GasDataRecvService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Api(tags = "数据接收")
+@Slf4j
+public class DataRecvController {
+
+ private final GasDataRecvService gasDataRecvService;
+
+ @ApiOperation("数据接收接口,接收三码、实时数据,自动增添设备,前端不需要实现")
+ @RequestMapping("/gas/recv")
+ public Object gasRecv(@RequestBody Map recvDataMap) {
+ log.error("--------" + JSONObject.toJSONString(recvDataMap));
+ return gasDataRecvService.saveRev(recvDataMap);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceConfigController.java b/src/main/java/com/casic/controller/DeviceConfigController.java
new file mode 100644
index 0000000..613d205
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceConfigController.java
@@ -0,0 +1,62 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备配置")
+public class DeviceConfigController {
+
+ private final DeviceConfigService devcieConfig;
+
+ @RequestMapping("/device/config")
+ @ApiOperation("设备下发配置")
+ public ResponseData gasDeviceConfig(@RequestBody BusConfigParam busConfigParam) {
+ return devcieConfig.devcieConfig(busConfigParam);
+ }
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("设备下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List busConfigList) {
+ return devcieConfig.gasBatchConfig(busConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return devcieConfig.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceStatusController.java b/src/main/java/com/casic/controller/DeviceStatusController.java
new file mode 100644
index 0000000..8d6d05c
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceStatusController.java
@@ -0,0 +1,74 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.DataGasConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDeviceService;
+import com.casic.util.ExportExcelUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备管理")
+public class DeviceStatusController extends ExportExcelUtil {
+
+ private final GasDeviceService gasDeviceService;
+
+ @RequestMapping("/status/config")
+ @ApiOperation("状态下发查询")
+ public ResponseData gasStatusConfig(@RequestBody List dataGasConfigList) {
+ return gasDeviceService.devcieStatusConfig(dataGasConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "keywords", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false)
+ })
+ @ApiOperation("设备列表导出")
+ @RequestMapping(value = "/device/export")
+ public void deviceDataExport(String keywords, String beginTime, String endTime) throws IOException {
+ List deviceDataExcelDtos = gasDeviceService.getDevicieList(beginTime, endTime, keywords);
+ super.exportExcel(NbDevice.class, deviceDataExcelDtos, "设备列表.xlsx");
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "emptyStatus", value = "空状态(查true,不查false)", required = true),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备分页列表")
+ @RequestMapping(value = "/device/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "emptyStatus", required = true) Boolean emptyStatus,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDeviceService.getDevicieListPage(devcode, beginTime, endTime, currentIndex, pageSize,emptyStatus,sortDevcode);
+ }
+
+ @RequestMapping("/device/dict")
+ @ApiOperation("设备字典列表")
+ public ResponseData> deviceDict() {
+ return gasDeviceService.deviceDict();
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/GasDataRecvMapper.java b/src/main/java/com/casic/dao/GasDataRecvMapper.java
new file mode 100644
index 0000000..558996b
--- /dev/null
+++ b/src/main/java/com/casic/dao/GasDataRecvMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.LucencyGasData;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Date;
+
+@Mapper
+public interface GasDataRecvMapper extends BaseMapper {
+
+
+ @Update("UPDATE lucency_gas_data " +
+ "SET devcode=#{devcode} " +
+ "WHERE imei=#{imei} ")
+ Integer updateData(@Param("imei") String imei, @Param("devcode") String devcode);
+
+
+ @Insert("insert into lucency_gas_data(devcode,tenant_id,device_id,data_value,uptime,imei,logtime) " +
+ "values(#{devcode},#{tenantId},#{deviceId},#{ch4},#{uptime},#{imei},#{logtime}) ")
+ Integer addData(@Param("devcode") String devcode, @Param("tenantId") String tenantId,
+ @Param("deviceId") String deviceId, @Param("imei") String imei,
+ @Param("uptime") Date time, @Param("ch4") String ch4,
+ @Param("logtime") Date logtime);
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/src/main/java/com/casic/config/AEPParamConfig.java b/src/main/java/com/casic/config/AEPParamConfig.java
new file mode 100644
index 0000000..349d4b2
--- /dev/null
+++ b/src/main/java/com/casic/config/AEPParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class AEPParamConfig {
+
+ @Value("${nb.app.key}")
+ private String appKey;
+ @Value("${nb.app.secret}")
+ private String appSecret;
+ @Value("${nb.gas.url}")
+ private String aepUrl;
+ @Value("${nb.gas.product-id}")
+ private String productId;
+ @Value("${nb.gas.MasterKey}")
+ private String masterKey;
+}
diff --git a/src/main/java/com/casic/config/CodeGenerator.java b/src/main/java/com/casic/config/CodeGenerator.java
new file mode 100644
index 0000000..ca10d95
--- /dev/null
+++ b/src/main/java/com/casic/config/CodeGenerator.java
@@ -0,0 +1,110 @@
+//package com.casic.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.annotation.FieldFill;
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+//import com.baomidou.mybatisplus.generator.AutoGenerator;
+//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+//import com.baomidou.mybatisplus.generator.config.PackageConfig;
+//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+//import com.baomidou.mybatisplus.generator.config.po.TableFill;
+//import com.baomidou.mybatisplus.generator.config.rules.DateType;
+//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+//import org.apache.commons.lang3.StringUtils;
+//
+//import java.util.ArrayList;
+//import java.util.Scanner;
+//
+//public class CodeGenerator {
+//
+//
+// public static String scanner(String tip) {
+// Scanner scanner = new Scanner(System.in);
+// StringBuilder help = new StringBuilder();
+// help.append("请输入" + tip + ":");
+// System.out.println(help.toString());
+// if (scanner.hasNext()) {
+// String ipt = scanner.next();
+// if (StringUtils.isNotBlank(ipt)) {
+// return ipt;
+// }
+// }
+// throw new MybatisPlusException("请输入正确的" + tip + "!");
+// }
+//
+//
+//
+//
+//
+// public static void main(String[] args) {
+// // 代码生成器
+// AutoGenerator mpg = new AutoGenerator();
+//
+// // 全局配置
+// GlobalConfig gc = new GlobalConfig();
+// String projectPath = System.getProperty("user.dir");
+// gc.setOutputDir(projectPath + "/src/main/java");//设置代码生成路径
+// gc.setFileOverride(true);//是否覆盖以前文件
+// gc.setOpen(false);//是否打开生成目录
+// gc.setAuthor("yixin");//设置项目作者名称
+// gc.setIdType(IdType.AUTO);//设置主键策略
+// gc.setBaseResultMap(true);//生成基本ResultMap
+// gc.setBaseColumnList(true);//生成基本ColumnList
+// gc.setServiceName("%sService");//去掉服务默认前缀
+// gc.setDateType(DateType.ONLY_DATE);//设置时间类型
+// mpg.setGlobalConfig(gc);
+//
+// // 数据源配置
+// DataSourceConfig dsc = new DataSourceConfig();
+// dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
+// dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+// dsc.setUsername("root");
+// dsc.setPassword("123456");
+// mpg.setDataSource(dsc);
+//
+// // 包配置
+// PackageConfig pc = new PackageConfig();
+// pc.setParent("com.yixin");
+// pc.setMapper("mapper");
+// pc.setXml("mapper.xml");
+// pc.setEntity("pojo");
+// pc.setService("service");
+// pc.setServiceImpl("service.impl");
+// pc.setController("controller");
+// mpg.setPackageInfo(pc);
+//
+// // 策略配置
+// StrategyConfig sc = new StrategyConfig();
+// sc.setNaming(NamingStrategy.underline_to_camel);
+// sc.setColumnNaming(NamingStrategy.underline_to_camel);
+// sc.setEntityLombokModel(true);//自动lombok
+// sc.setRestControllerStyle(true);
+// sc.setControllerMappingHyphenStyle(true);
+//
+// sc.setLogicDeleteFieldName("deleted");//设置逻辑删除
+//
+// //设置自动填充配置
+// TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);
+// TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
+// ArrayList tableFills=new ArrayList<>();
+// tableFills.add(gmt_create);
+// tableFills.add(gmt_modified);
+// sc.setTableFillList(tableFills);
+//
+// //乐观锁
+// sc.setVersionFieldName("version");
+// sc.setRestControllerStyle(true);//驼峰命名
+//
+//
+//
+// // sc.setTablePrefix("tbl_"); 设置表名前缀
+// sc.setInclude(scanner("表名,多个英文逗号分割").split(","));
+// mpg.setStrategy(sc);
+//
+// // 生成代码
+// mpg.execute();
+// }
+//
+//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
new file mode 100644
index 0000000..7d19680
--- /dev/null
+++ b/src/main/java/com/casic/config/CorsConfig.java
@@ -0,0 +1,31 @@
+package com.casic.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * 基础框架 - 跨域请求配置
+ */
+@Configuration
+public class CorsConfig {
+ @Bean
+ public CorsFilter corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", buildConfig());
+ return new CorsFilter(source);
+ }
+
+ private CorsConfiguration buildConfig() {
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ // 1允许任何域名使用
+ corsConfiguration.addAllowedOrigin("*");
+ // 2允许任何头
+ corsConfiguration.addAllowedHeader("*");
+ // 3允许任何方法(post、get等)
+ corsConfiguration.addAllowedMethod("*");
+ return corsConfiguration;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
new file mode 100644
index 0000000..bb4c9ff
--- /dev/null
+++ b/src/main/java/com/casic/config/Knife4jConfiguration.java
@@ -0,0 +1,38 @@
+package com.casic.config;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+@Configuration
+@EnableKnife4j
+public class Knife4jConfiguration {
+
+ @Value(value = "${swagger.enable}")
+ public boolean enable;
+ @Value(value = "${swagger.groupName}")
+ public String groupName;
+
+ @Bean(value = "dockerBean")
+ public Docket dockerBean() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(new ApiInfoBuilder()
+ //描述字段支持Markdown语法
+ .description("# Knife4j RESTful APIs")
+ .termsOfServiceUrl("https://doc.casic.com/")
+ .version("1.0")
+ .build())
+ //分组名称
+ .groupName(groupName)
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("com.casic"))
+ .paths(PathSelectors.any()).build().enable(enable);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/MybatisPlusConfig.java b/src/main/java/com/casic/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..58fd3b1
--- /dev/null
+++ b/src/main/java/com/casic/config/MybatisPlusConfig.java
@@ -0,0 +1,18 @@
+package com.casic.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(){
+ MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+}
+
diff --git a/src/main/java/com/casic/controller/AlarmConfigController.java b/src/main/java/com/casic/controller/AlarmConfigController.java
new file mode 100644
index 0000000..85d965a
--- /dev/null
+++ b/src/main/java/com/casic/controller/AlarmConfigController.java
@@ -0,0 +1,57 @@
+package com.casic.controller;
+
+import com.casic.entity.NbAlarmConfig;
+import com.casic.entity.NbDevice;
+import com.casic.model.AlarmConfigParam;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.AlarmConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/alarm")
+@Slf4j
+@Api(tags = "报警配置")
+public class AlarmConfigController {
+
+ private final AlarmConfigService alarmConfigService;
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("报警下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List alarmConfigParamList) {
+ return alarmConfigService.gasBatchConfig(alarmConfigParamList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("报警配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return alarmConfigService.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DataGasController.java b/src/main/java/com/casic/controller/DataGasController.java
new file mode 100644
index 0000000..12ca603
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataGasController.java
@@ -0,0 +1,61 @@
+package com.casic.controller;
+
+import com.casic.entity.LucencyGasData;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDataService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/gas")
+@Api(tags = "数据列表")
+public class DataGasController {
+
+ @Resource
+ private GasDataService gasDataService;
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("数据查询列表-单记录")
+ @RequestMapping("/list-page")
+ public ResponseData> getGasDataList(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasDataList(devcode, beginTime, endTime, currentIndex, pageSize,sortDevcode);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备历史数据列表")
+ @RequestMapping("/devcode/list")
+ public ResponseData> getGasHistoryList(@RequestParam(value = "devcode", required = true) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasHistoryList(devcode, beginTime, endTime, currentIndex, pageSize);
+ }
+
+
+
+}
diff --git a/src/main/java/com/casic/controller/DataRecvController.java b/src/main/java/com/casic/controller/DataRecvController.java
new file mode 100644
index 0000000..3655480
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataRecvController.java
@@ -0,0 +1,31 @@
+package com.casic.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.casic.service.GasDataRecvService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Api(tags = "数据接收")
+@Slf4j
+public class DataRecvController {
+
+ private final GasDataRecvService gasDataRecvService;
+
+ @ApiOperation("数据接收接口,接收三码、实时数据,自动增添设备,前端不需要实现")
+ @RequestMapping("/gas/recv")
+ public Object gasRecv(@RequestBody Map recvDataMap) {
+ log.error("--------" + JSONObject.toJSONString(recvDataMap));
+ return gasDataRecvService.saveRev(recvDataMap);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceConfigController.java b/src/main/java/com/casic/controller/DeviceConfigController.java
new file mode 100644
index 0000000..613d205
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceConfigController.java
@@ -0,0 +1,62 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备配置")
+public class DeviceConfigController {
+
+ private final DeviceConfigService devcieConfig;
+
+ @RequestMapping("/device/config")
+ @ApiOperation("设备下发配置")
+ public ResponseData gasDeviceConfig(@RequestBody BusConfigParam busConfigParam) {
+ return devcieConfig.devcieConfig(busConfigParam);
+ }
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("设备下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List busConfigList) {
+ return devcieConfig.gasBatchConfig(busConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return devcieConfig.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceStatusController.java b/src/main/java/com/casic/controller/DeviceStatusController.java
new file mode 100644
index 0000000..8d6d05c
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceStatusController.java
@@ -0,0 +1,74 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.DataGasConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDeviceService;
+import com.casic.util.ExportExcelUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备管理")
+public class DeviceStatusController extends ExportExcelUtil {
+
+ private final GasDeviceService gasDeviceService;
+
+ @RequestMapping("/status/config")
+ @ApiOperation("状态下发查询")
+ public ResponseData gasStatusConfig(@RequestBody List dataGasConfigList) {
+ return gasDeviceService.devcieStatusConfig(dataGasConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "keywords", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false)
+ })
+ @ApiOperation("设备列表导出")
+ @RequestMapping(value = "/device/export")
+ public void deviceDataExport(String keywords, String beginTime, String endTime) throws IOException {
+ List deviceDataExcelDtos = gasDeviceService.getDevicieList(beginTime, endTime, keywords);
+ super.exportExcel(NbDevice.class, deviceDataExcelDtos, "设备列表.xlsx");
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "emptyStatus", value = "空状态(查true,不查false)", required = true),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备分页列表")
+ @RequestMapping(value = "/device/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "emptyStatus", required = true) Boolean emptyStatus,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDeviceService.getDevicieListPage(devcode, beginTime, endTime, currentIndex, pageSize,emptyStatus,sortDevcode);
+ }
+
+ @RequestMapping("/device/dict")
+ @ApiOperation("设备字典列表")
+ public ResponseData> deviceDict() {
+ return gasDeviceService.deviceDict();
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/GasDataRecvMapper.java b/src/main/java/com/casic/dao/GasDataRecvMapper.java
new file mode 100644
index 0000000..558996b
--- /dev/null
+++ b/src/main/java/com/casic/dao/GasDataRecvMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.LucencyGasData;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Date;
+
+@Mapper
+public interface GasDataRecvMapper extends BaseMapper {
+
+
+ @Update("UPDATE lucency_gas_data " +
+ "SET devcode=#{devcode} " +
+ "WHERE imei=#{imei} ")
+ Integer updateData(@Param("imei") String imei, @Param("devcode") String devcode);
+
+
+ @Insert("insert into lucency_gas_data(devcode,tenant_id,device_id,data_value,uptime,imei,logtime) " +
+ "values(#{devcode},#{tenantId},#{deviceId},#{ch4},#{uptime},#{imei},#{logtime}) ")
+ Integer addData(@Param("devcode") String devcode, @Param("tenantId") String tenantId,
+ @Param("deviceId") String deviceId, @Param("imei") String imei,
+ @Param("uptime") Date time, @Param("ch4") String ch4,
+ @Param("logtime") Date logtime);
+}
diff --git a/src/main/java/com/casic/dao/NbAlarmConfigMapper.java b/src/main/java/com/casic/dao/NbAlarmConfigMapper.java
new file mode 100644
index 0000000..a9454dd
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbAlarmConfigMapper.java
@@ -0,0 +1,18 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbAlarmConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface NbAlarmConfigMapper extends BaseMapper {
+
+ @Update("UPDATE nb_alarm_config " +
+ "SET status= #{configMsg} " +
+ "WHERE device_id=#{deviceId} " +
+ "AND status='未下发' ")
+ Integer configStatusData(@Param("configMsg") String configMsg,
+ @Param("deviceId") String deviceId);
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/src/main/java/com/casic/config/AEPParamConfig.java b/src/main/java/com/casic/config/AEPParamConfig.java
new file mode 100644
index 0000000..349d4b2
--- /dev/null
+++ b/src/main/java/com/casic/config/AEPParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class AEPParamConfig {
+
+ @Value("${nb.app.key}")
+ private String appKey;
+ @Value("${nb.app.secret}")
+ private String appSecret;
+ @Value("${nb.gas.url}")
+ private String aepUrl;
+ @Value("${nb.gas.product-id}")
+ private String productId;
+ @Value("${nb.gas.MasterKey}")
+ private String masterKey;
+}
diff --git a/src/main/java/com/casic/config/CodeGenerator.java b/src/main/java/com/casic/config/CodeGenerator.java
new file mode 100644
index 0000000..ca10d95
--- /dev/null
+++ b/src/main/java/com/casic/config/CodeGenerator.java
@@ -0,0 +1,110 @@
+//package com.casic.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.annotation.FieldFill;
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+//import com.baomidou.mybatisplus.generator.AutoGenerator;
+//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+//import com.baomidou.mybatisplus.generator.config.PackageConfig;
+//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+//import com.baomidou.mybatisplus.generator.config.po.TableFill;
+//import com.baomidou.mybatisplus.generator.config.rules.DateType;
+//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+//import org.apache.commons.lang3.StringUtils;
+//
+//import java.util.ArrayList;
+//import java.util.Scanner;
+//
+//public class CodeGenerator {
+//
+//
+// public static String scanner(String tip) {
+// Scanner scanner = new Scanner(System.in);
+// StringBuilder help = new StringBuilder();
+// help.append("请输入" + tip + ":");
+// System.out.println(help.toString());
+// if (scanner.hasNext()) {
+// String ipt = scanner.next();
+// if (StringUtils.isNotBlank(ipt)) {
+// return ipt;
+// }
+// }
+// throw new MybatisPlusException("请输入正确的" + tip + "!");
+// }
+//
+//
+//
+//
+//
+// public static void main(String[] args) {
+// // 代码生成器
+// AutoGenerator mpg = new AutoGenerator();
+//
+// // 全局配置
+// GlobalConfig gc = new GlobalConfig();
+// String projectPath = System.getProperty("user.dir");
+// gc.setOutputDir(projectPath + "/src/main/java");//设置代码生成路径
+// gc.setFileOverride(true);//是否覆盖以前文件
+// gc.setOpen(false);//是否打开生成目录
+// gc.setAuthor("yixin");//设置项目作者名称
+// gc.setIdType(IdType.AUTO);//设置主键策略
+// gc.setBaseResultMap(true);//生成基本ResultMap
+// gc.setBaseColumnList(true);//生成基本ColumnList
+// gc.setServiceName("%sService");//去掉服务默认前缀
+// gc.setDateType(DateType.ONLY_DATE);//设置时间类型
+// mpg.setGlobalConfig(gc);
+//
+// // 数据源配置
+// DataSourceConfig dsc = new DataSourceConfig();
+// dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
+// dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+// dsc.setUsername("root");
+// dsc.setPassword("123456");
+// mpg.setDataSource(dsc);
+//
+// // 包配置
+// PackageConfig pc = new PackageConfig();
+// pc.setParent("com.yixin");
+// pc.setMapper("mapper");
+// pc.setXml("mapper.xml");
+// pc.setEntity("pojo");
+// pc.setService("service");
+// pc.setServiceImpl("service.impl");
+// pc.setController("controller");
+// mpg.setPackageInfo(pc);
+//
+// // 策略配置
+// StrategyConfig sc = new StrategyConfig();
+// sc.setNaming(NamingStrategy.underline_to_camel);
+// sc.setColumnNaming(NamingStrategy.underline_to_camel);
+// sc.setEntityLombokModel(true);//自动lombok
+// sc.setRestControllerStyle(true);
+// sc.setControllerMappingHyphenStyle(true);
+//
+// sc.setLogicDeleteFieldName("deleted");//设置逻辑删除
+//
+// //设置自动填充配置
+// TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);
+// TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
+// ArrayList tableFills=new ArrayList<>();
+// tableFills.add(gmt_create);
+// tableFills.add(gmt_modified);
+// sc.setTableFillList(tableFills);
+//
+// //乐观锁
+// sc.setVersionFieldName("version");
+// sc.setRestControllerStyle(true);//驼峰命名
+//
+//
+//
+// // sc.setTablePrefix("tbl_"); 设置表名前缀
+// sc.setInclude(scanner("表名,多个英文逗号分割").split(","));
+// mpg.setStrategy(sc);
+//
+// // 生成代码
+// mpg.execute();
+// }
+//
+//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
new file mode 100644
index 0000000..7d19680
--- /dev/null
+++ b/src/main/java/com/casic/config/CorsConfig.java
@@ -0,0 +1,31 @@
+package com.casic.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * 基础框架 - 跨域请求配置
+ */
+@Configuration
+public class CorsConfig {
+ @Bean
+ public CorsFilter corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", buildConfig());
+ return new CorsFilter(source);
+ }
+
+ private CorsConfiguration buildConfig() {
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ // 1允许任何域名使用
+ corsConfiguration.addAllowedOrigin("*");
+ // 2允许任何头
+ corsConfiguration.addAllowedHeader("*");
+ // 3允许任何方法(post、get等)
+ corsConfiguration.addAllowedMethod("*");
+ return corsConfiguration;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
new file mode 100644
index 0000000..bb4c9ff
--- /dev/null
+++ b/src/main/java/com/casic/config/Knife4jConfiguration.java
@@ -0,0 +1,38 @@
+package com.casic.config;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+@Configuration
+@EnableKnife4j
+public class Knife4jConfiguration {
+
+ @Value(value = "${swagger.enable}")
+ public boolean enable;
+ @Value(value = "${swagger.groupName}")
+ public String groupName;
+
+ @Bean(value = "dockerBean")
+ public Docket dockerBean() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(new ApiInfoBuilder()
+ //描述字段支持Markdown语法
+ .description("# Knife4j RESTful APIs")
+ .termsOfServiceUrl("https://doc.casic.com/")
+ .version("1.0")
+ .build())
+ //分组名称
+ .groupName(groupName)
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("com.casic"))
+ .paths(PathSelectors.any()).build().enable(enable);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/MybatisPlusConfig.java b/src/main/java/com/casic/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..58fd3b1
--- /dev/null
+++ b/src/main/java/com/casic/config/MybatisPlusConfig.java
@@ -0,0 +1,18 @@
+package com.casic.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(){
+ MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+}
+
diff --git a/src/main/java/com/casic/controller/AlarmConfigController.java b/src/main/java/com/casic/controller/AlarmConfigController.java
new file mode 100644
index 0000000..85d965a
--- /dev/null
+++ b/src/main/java/com/casic/controller/AlarmConfigController.java
@@ -0,0 +1,57 @@
+package com.casic.controller;
+
+import com.casic.entity.NbAlarmConfig;
+import com.casic.entity.NbDevice;
+import com.casic.model.AlarmConfigParam;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.AlarmConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/alarm")
+@Slf4j
+@Api(tags = "报警配置")
+public class AlarmConfigController {
+
+ private final AlarmConfigService alarmConfigService;
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("报警下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List alarmConfigParamList) {
+ return alarmConfigService.gasBatchConfig(alarmConfigParamList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("报警配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return alarmConfigService.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DataGasController.java b/src/main/java/com/casic/controller/DataGasController.java
new file mode 100644
index 0000000..12ca603
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataGasController.java
@@ -0,0 +1,61 @@
+package com.casic.controller;
+
+import com.casic.entity.LucencyGasData;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDataService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/gas")
+@Api(tags = "数据列表")
+public class DataGasController {
+
+ @Resource
+ private GasDataService gasDataService;
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("数据查询列表-单记录")
+ @RequestMapping("/list-page")
+ public ResponseData> getGasDataList(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasDataList(devcode, beginTime, endTime, currentIndex, pageSize,sortDevcode);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备历史数据列表")
+ @RequestMapping("/devcode/list")
+ public ResponseData> getGasHistoryList(@RequestParam(value = "devcode", required = true) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasHistoryList(devcode, beginTime, endTime, currentIndex, pageSize);
+ }
+
+
+
+}
diff --git a/src/main/java/com/casic/controller/DataRecvController.java b/src/main/java/com/casic/controller/DataRecvController.java
new file mode 100644
index 0000000..3655480
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataRecvController.java
@@ -0,0 +1,31 @@
+package com.casic.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.casic.service.GasDataRecvService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Api(tags = "数据接收")
+@Slf4j
+public class DataRecvController {
+
+ private final GasDataRecvService gasDataRecvService;
+
+ @ApiOperation("数据接收接口,接收三码、实时数据,自动增添设备,前端不需要实现")
+ @RequestMapping("/gas/recv")
+ public Object gasRecv(@RequestBody Map recvDataMap) {
+ log.error("--------" + JSONObject.toJSONString(recvDataMap));
+ return gasDataRecvService.saveRev(recvDataMap);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceConfigController.java b/src/main/java/com/casic/controller/DeviceConfigController.java
new file mode 100644
index 0000000..613d205
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceConfigController.java
@@ -0,0 +1,62 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备配置")
+public class DeviceConfigController {
+
+ private final DeviceConfigService devcieConfig;
+
+ @RequestMapping("/device/config")
+ @ApiOperation("设备下发配置")
+ public ResponseData gasDeviceConfig(@RequestBody BusConfigParam busConfigParam) {
+ return devcieConfig.devcieConfig(busConfigParam);
+ }
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("设备下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List busConfigList) {
+ return devcieConfig.gasBatchConfig(busConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return devcieConfig.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceStatusController.java b/src/main/java/com/casic/controller/DeviceStatusController.java
new file mode 100644
index 0000000..8d6d05c
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceStatusController.java
@@ -0,0 +1,74 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.DataGasConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDeviceService;
+import com.casic.util.ExportExcelUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备管理")
+public class DeviceStatusController extends ExportExcelUtil {
+
+ private final GasDeviceService gasDeviceService;
+
+ @RequestMapping("/status/config")
+ @ApiOperation("状态下发查询")
+ public ResponseData gasStatusConfig(@RequestBody List dataGasConfigList) {
+ return gasDeviceService.devcieStatusConfig(dataGasConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "keywords", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false)
+ })
+ @ApiOperation("设备列表导出")
+ @RequestMapping(value = "/device/export")
+ public void deviceDataExport(String keywords, String beginTime, String endTime) throws IOException {
+ List deviceDataExcelDtos = gasDeviceService.getDevicieList(beginTime, endTime, keywords);
+ super.exportExcel(NbDevice.class, deviceDataExcelDtos, "设备列表.xlsx");
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "emptyStatus", value = "空状态(查true,不查false)", required = true),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备分页列表")
+ @RequestMapping(value = "/device/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "emptyStatus", required = true) Boolean emptyStatus,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDeviceService.getDevicieListPage(devcode, beginTime, endTime, currentIndex, pageSize,emptyStatus,sortDevcode);
+ }
+
+ @RequestMapping("/device/dict")
+ @ApiOperation("设备字典列表")
+ public ResponseData> deviceDict() {
+ return gasDeviceService.deviceDict();
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/GasDataRecvMapper.java b/src/main/java/com/casic/dao/GasDataRecvMapper.java
new file mode 100644
index 0000000..558996b
--- /dev/null
+++ b/src/main/java/com/casic/dao/GasDataRecvMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.LucencyGasData;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Date;
+
+@Mapper
+public interface GasDataRecvMapper extends BaseMapper {
+
+
+ @Update("UPDATE lucency_gas_data " +
+ "SET devcode=#{devcode} " +
+ "WHERE imei=#{imei} ")
+ Integer updateData(@Param("imei") String imei, @Param("devcode") String devcode);
+
+
+ @Insert("insert into lucency_gas_data(devcode,tenant_id,device_id,data_value,uptime,imei,logtime) " +
+ "values(#{devcode},#{tenantId},#{deviceId},#{ch4},#{uptime},#{imei},#{logtime}) ")
+ Integer addData(@Param("devcode") String devcode, @Param("tenantId") String tenantId,
+ @Param("deviceId") String deviceId, @Param("imei") String imei,
+ @Param("uptime") Date time, @Param("ch4") String ch4,
+ @Param("logtime") Date logtime);
+}
diff --git a/src/main/java/com/casic/dao/NbAlarmConfigMapper.java b/src/main/java/com/casic/dao/NbAlarmConfigMapper.java
new file mode 100644
index 0000000..a9454dd
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbAlarmConfigMapper.java
@@ -0,0 +1,18 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbAlarmConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface NbAlarmConfigMapper extends BaseMapper {
+
+ @Update("UPDATE nb_alarm_config " +
+ "SET status= #{configMsg} " +
+ "WHERE device_id=#{deviceId} " +
+ "AND status='未下发' ")
+ Integer configStatusData(@Param("configMsg") String configMsg,
+ @Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbConfigMapper.java b/src/main/java/com/casic/dao/NbConfigMapper.java
new file mode 100644
index 0000000..801a4f7
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbConfigMapper.java
@@ -0,0 +1,19 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface NbConfigMapper extends BaseMapper {
+
+
+ @Update("UPDATE nb_config " +
+ "SET status= #{configMsg} " +
+ "WHERE device_id=#{deviceId} " +
+ "AND status='未下发' ")
+ Integer configStatusData(@Param("configMsg") String configMsg,
+ @Param("deviceId") String deviceId);
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/src/main/java/com/casic/config/AEPParamConfig.java b/src/main/java/com/casic/config/AEPParamConfig.java
new file mode 100644
index 0000000..349d4b2
--- /dev/null
+++ b/src/main/java/com/casic/config/AEPParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class AEPParamConfig {
+
+ @Value("${nb.app.key}")
+ private String appKey;
+ @Value("${nb.app.secret}")
+ private String appSecret;
+ @Value("${nb.gas.url}")
+ private String aepUrl;
+ @Value("${nb.gas.product-id}")
+ private String productId;
+ @Value("${nb.gas.MasterKey}")
+ private String masterKey;
+}
diff --git a/src/main/java/com/casic/config/CodeGenerator.java b/src/main/java/com/casic/config/CodeGenerator.java
new file mode 100644
index 0000000..ca10d95
--- /dev/null
+++ b/src/main/java/com/casic/config/CodeGenerator.java
@@ -0,0 +1,110 @@
+//package com.casic.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.annotation.FieldFill;
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+//import com.baomidou.mybatisplus.generator.AutoGenerator;
+//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+//import com.baomidou.mybatisplus.generator.config.PackageConfig;
+//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+//import com.baomidou.mybatisplus.generator.config.po.TableFill;
+//import com.baomidou.mybatisplus.generator.config.rules.DateType;
+//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+//import org.apache.commons.lang3.StringUtils;
+//
+//import java.util.ArrayList;
+//import java.util.Scanner;
+//
+//public class CodeGenerator {
+//
+//
+// public static String scanner(String tip) {
+// Scanner scanner = new Scanner(System.in);
+// StringBuilder help = new StringBuilder();
+// help.append("请输入" + tip + ":");
+// System.out.println(help.toString());
+// if (scanner.hasNext()) {
+// String ipt = scanner.next();
+// if (StringUtils.isNotBlank(ipt)) {
+// return ipt;
+// }
+// }
+// throw new MybatisPlusException("请输入正确的" + tip + "!");
+// }
+//
+//
+//
+//
+//
+// public static void main(String[] args) {
+// // 代码生成器
+// AutoGenerator mpg = new AutoGenerator();
+//
+// // 全局配置
+// GlobalConfig gc = new GlobalConfig();
+// String projectPath = System.getProperty("user.dir");
+// gc.setOutputDir(projectPath + "/src/main/java");//设置代码生成路径
+// gc.setFileOverride(true);//是否覆盖以前文件
+// gc.setOpen(false);//是否打开生成目录
+// gc.setAuthor("yixin");//设置项目作者名称
+// gc.setIdType(IdType.AUTO);//设置主键策略
+// gc.setBaseResultMap(true);//生成基本ResultMap
+// gc.setBaseColumnList(true);//生成基本ColumnList
+// gc.setServiceName("%sService");//去掉服务默认前缀
+// gc.setDateType(DateType.ONLY_DATE);//设置时间类型
+// mpg.setGlobalConfig(gc);
+//
+// // 数据源配置
+// DataSourceConfig dsc = new DataSourceConfig();
+// dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
+// dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+// dsc.setUsername("root");
+// dsc.setPassword("123456");
+// mpg.setDataSource(dsc);
+//
+// // 包配置
+// PackageConfig pc = new PackageConfig();
+// pc.setParent("com.yixin");
+// pc.setMapper("mapper");
+// pc.setXml("mapper.xml");
+// pc.setEntity("pojo");
+// pc.setService("service");
+// pc.setServiceImpl("service.impl");
+// pc.setController("controller");
+// mpg.setPackageInfo(pc);
+//
+// // 策略配置
+// StrategyConfig sc = new StrategyConfig();
+// sc.setNaming(NamingStrategy.underline_to_camel);
+// sc.setColumnNaming(NamingStrategy.underline_to_camel);
+// sc.setEntityLombokModel(true);//自动lombok
+// sc.setRestControllerStyle(true);
+// sc.setControllerMappingHyphenStyle(true);
+//
+// sc.setLogicDeleteFieldName("deleted");//设置逻辑删除
+//
+// //设置自动填充配置
+// TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);
+// TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
+// ArrayList tableFills=new ArrayList<>();
+// tableFills.add(gmt_create);
+// tableFills.add(gmt_modified);
+// sc.setTableFillList(tableFills);
+//
+// //乐观锁
+// sc.setVersionFieldName("version");
+// sc.setRestControllerStyle(true);//驼峰命名
+//
+//
+//
+// // sc.setTablePrefix("tbl_"); 设置表名前缀
+// sc.setInclude(scanner("表名,多个英文逗号分割").split(","));
+// mpg.setStrategy(sc);
+//
+// // 生成代码
+// mpg.execute();
+// }
+//
+//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
new file mode 100644
index 0000000..7d19680
--- /dev/null
+++ b/src/main/java/com/casic/config/CorsConfig.java
@@ -0,0 +1,31 @@
+package com.casic.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * 基础框架 - 跨域请求配置
+ */
+@Configuration
+public class CorsConfig {
+ @Bean
+ public CorsFilter corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", buildConfig());
+ return new CorsFilter(source);
+ }
+
+ private CorsConfiguration buildConfig() {
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ // 1允许任何域名使用
+ corsConfiguration.addAllowedOrigin("*");
+ // 2允许任何头
+ corsConfiguration.addAllowedHeader("*");
+ // 3允许任何方法(post、get等)
+ corsConfiguration.addAllowedMethod("*");
+ return corsConfiguration;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
new file mode 100644
index 0000000..bb4c9ff
--- /dev/null
+++ b/src/main/java/com/casic/config/Knife4jConfiguration.java
@@ -0,0 +1,38 @@
+package com.casic.config;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+@Configuration
+@EnableKnife4j
+public class Knife4jConfiguration {
+
+ @Value(value = "${swagger.enable}")
+ public boolean enable;
+ @Value(value = "${swagger.groupName}")
+ public String groupName;
+
+ @Bean(value = "dockerBean")
+ public Docket dockerBean() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(new ApiInfoBuilder()
+ //描述字段支持Markdown语法
+ .description("# Knife4j RESTful APIs")
+ .termsOfServiceUrl("https://doc.casic.com/")
+ .version("1.0")
+ .build())
+ //分组名称
+ .groupName(groupName)
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("com.casic"))
+ .paths(PathSelectors.any()).build().enable(enable);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/MybatisPlusConfig.java b/src/main/java/com/casic/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..58fd3b1
--- /dev/null
+++ b/src/main/java/com/casic/config/MybatisPlusConfig.java
@@ -0,0 +1,18 @@
+package com.casic.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(){
+ MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+}
+
diff --git a/src/main/java/com/casic/controller/AlarmConfigController.java b/src/main/java/com/casic/controller/AlarmConfigController.java
new file mode 100644
index 0000000..85d965a
--- /dev/null
+++ b/src/main/java/com/casic/controller/AlarmConfigController.java
@@ -0,0 +1,57 @@
+package com.casic.controller;
+
+import com.casic.entity.NbAlarmConfig;
+import com.casic.entity.NbDevice;
+import com.casic.model.AlarmConfigParam;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.AlarmConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/alarm")
+@Slf4j
+@Api(tags = "报警配置")
+public class AlarmConfigController {
+
+ private final AlarmConfigService alarmConfigService;
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("报警下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List alarmConfigParamList) {
+ return alarmConfigService.gasBatchConfig(alarmConfigParamList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("报警配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return alarmConfigService.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DataGasController.java b/src/main/java/com/casic/controller/DataGasController.java
new file mode 100644
index 0000000..12ca603
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataGasController.java
@@ -0,0 +1,61 @@
+package com.casic.controller;
+
+import com.casic.entity.LucencyGasData;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDataService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/gas")
+@Api(tags = "数据列表")
+public class DataGasController {
+
+ @Resource
+ private GasDataService gasDataService;
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("数据查询列表-单记录")
+ @RequestMapping("/list-page")
+ public ResponseData> getGasDataList(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasDataList(devcode, beginTime, endTime, currentIndex, pageSize,sortDevcode);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备历史数据列表")
+ @RequestMapping("/devcode/list")
+ public ResponseData> getGasHistoryList(@RequestParam(value = "devcode", required = true) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasHistoryList(devcode, beginTime, endTime, currentIndex, pageSize);
+ }
+
+
+
+}
diff --git a/src/main/java/com/casic/controller/DataRecvController.java b/src/main/java/com/casic/controller/DataRecvController.java
new file mode 100644
index 0000000..3655480
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataRecvController.java
@@ -0,0 +1,31 @@
+package com.casic.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.casic.service.GasDataRecvService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Api(tags = "数据接收")
+@Slf4j
+public class DataRecvController {
+
+ private final GasDataRecvService gasDataRecvService;
+
+ @ApiOperation("数据接收接口,接收三码、实时数据,自动增添设备,前端不需要实现")
+ @RequestMapping("/gas/recv")
+ public Object gasRecv(@RequestBody Map recvDataMap) {
+ log.error("--------" + JSONObject.toJSONString(recvDataMap));
+ return gasDataRecvService.saveRev(recvDataMap);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceConfigController.java b/src/main/java/com/casic/controller/DeviceConfigController.java
new file mode 100644
index 0000000..613d205
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceConfigController.java
@@ -0,0 +1,62 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备配置")
+public class DeviceConfigController {
+
+ private final DeviceConfigService devcieConfig;
+
+ @RequestMapping("/device/config")
+ @ApiOperation("设备下发配置")
+ public ResponseData gasDeviceConfig(@RequestBody BusConfigParam busConfigParam) {
+ return devcieConfig.devcieConfig(busConfigParam);
+ }
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("设备下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List busConfigList) {
+ return devcieConfig.gasBatchConfig(busConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return devcieConfig.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceStatusController.java b/src/main/java/com/casic/controller/DeviceStatusController.java
new file mode 100644
index 0000000..8d6d05c
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceStatusController.java
@@ -0,0 +1,74 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.DataGasConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDeviceService;
+import com.casic.util.ExportExcelUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备管理")
+public class DeviceStatusController extends ExportExcelUtil {
+
+ private final GasDeviceService gasDeviceService;
+
+ @RequestMapping("/status/config")
+ @ApiOperation("状态下发查询")
+ public ResponseData gasStatusConfig(@RequestBody List dataGasConfigList) {
+ return gasDeviceService.devcieStatusConfig(dataGasConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "keywords", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false)
+ })
+ @ApiOperation("设备列表导出")
+ @RequestMapping(value = "/device/export")
+ public void deviceDataExport(String keywords, String beginTime, String endTime) throws IOException {
+ List deviceDataExcelDtos = gasDeviceService.getDevicieList(beginTime, endTime, keywords);
+ super.exportExcel(NbDevice.class, deviceDataExcelDtos, "设备列表.xlsx");
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "emptyStatus", value = "空状态(查true,不查false)", required = true),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备分页列表")
+ @RequestMapping(value = "/device/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "emptyStatus", required = true) Boolean emptyStatus,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDeviceService.getDevicieListPage(devcode, beginTime, endTime, currentIndex, pageSize,emptyStatus,sortDevcode);
+ }
+
+ @RequestMapping("/device/dict")
+ @ApiOperation("设备字典列表")
+ public ResponseData> deviceDict() {
+ return gasDeviceService.deviceDict();
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/GasDataRecvMapper.java b/src/main/java/com/casic/dao/GasDataRecvMapper.java
new file mode 100644
index 0000000..558996b
--- /dev/null
+++ b/src/main/java/com/casic/dao/GasDataRecvMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.LucencyGasData;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Date;
+
+@Mapper
+public interface GasDataRecvMapper extends BaseMapper {
+
+
+ @Update("UPDATE lucency_gas_data " +
+ "SET devcode=#{devcode} " +
+ "WHERE imei=#{imei} ")
+ Integer updateData(@Param("imei") String imei, @Param("devcode") String devcode);
+
+
+ @Insert("insert into lucency_gas_data(devcode,tenant_id,device_id,data_value,uptime,imei,logtime) " +
+ "values(#{devcode},#{tenantId},#{deviceId},#{ch4},#{uptime},#{imei},#{logtime}) ")
+ Integer addData(@Param("devcode") String devcode, @Param("tenantId") String tenantId,
+ @Param("deviceId") String deviceId, @Param("imei") String imei,
+ @Param("uptime") Date time, @Param("ch4") String ch4,
+ @Param("logtime") Date logtime);
+}
diff --git a/src/main/java/com/casic/dao/NbAlarmConfigMapper.java b/src/main/java/com/casic/dao/NbAlarmConfigMapper.java
new file mode 100644
index 0000000..a9454dd
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbAlarmConfigMapper.java
@@ -0,0 +1,18 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbAlarmConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface NbAlarmConfigMapper extends BaseMapper {
+
+ @Update("UPDATE nb_alarm_config " +
+ "SET status= #{configMsg} " +
+ "WHERE device_id=#{deviceId} " +
+ "AND status='未下发' ")
+ Integer configStatusData(@Param("configMsg") String configMsg,
+ @Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbConfigMapper.java b/src/main/java/com/casic/dao/NbConfigMapper.java
new file mode 100644
index 0000000..801a4f7
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbConfigMapper.java
@@ -0,0 +1,19 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface NbConfigMapper extends BaseMapper {
+
+
+ @Update("UPDATE nb_config " +
+ "SET status= #{configMsg} " +
+ "WHERE device_id=#{deviceId} " +
+ "AND status='未下发' ")
+ Integer configStatusData(@Param("configMsg") String configMsg,
+ @Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbDeviceMapper.java b/src/main/java/com/casic/dao/NbDeviceMapper.java
new file mode 100644
index 0000000..7d33eb3
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbDeviceMapper.java
@@ -0,0 +1,45 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbDevice;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Map;
+
+@Mapper
+public interface NbDeviceMapper extends BaseMapper {
+
+ @Select("delete " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ Integer deleteDeviceByImei(@Param("imei") String imei);
+
+ @Select("select id,device_id " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ Map getDeviceByImei(@Param("imei") String imei);
+
+ @Update("update nb_device " +
+ "device_id=#{deviceId} " +
+ "where imei=#{imei} ")
+ Integer setDeviceIdByImei(@Param("imei") String imei, @Param("deviceId") String deviceId);
+
+ @Select("select devcode " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ String getDevcodeByImei(@Param("imei") String imei);
+
+
+ @Update("update nb_device " +
+ "set recent_conf=#{recentConf} " +
+ "where device_id=#{deviceId} ")
+ Integer updateRecentByDevciceId (@Param("deviceId") String deviceId,@Param("recentConf") String recentConf);
+
+ @Select("select recent_conf " +
+ "from nb_device " +
+ "where device_id=#{deviceId} ")
+ String getRecentByDevciceId (@Param("deviceId") String deviceId);
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/src/main/java/com/casic/config/AEPParamConfig.java b/src/main/java/com/casic/config/AEPParamConfig.java
new file mode 100644
index 0000000..349d4b2
--- /dev/null
+++ b/src/main/java/com/casic/config/AEPParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class AEPParamConfig {
+
+ @Value("${nb.app.key}")
+ private String appKey;
+ @Value("${nb.app.secret}")
+ private String appSecret;
+ @Value("${nb.gas.url}")
+ private String aepUrl;
+ @Value("${nb.gas.product-id}")
+ private String productId;
+ @Value("${nb.gas.MasterKey}")
+ private String masterKey;
+}
diff --git a/src/main/java/com/casic/config/CodeGenerator.java b/src/main/java/com/casic/config/CodeGenerator.java
new file mode 100644
index 0000000..ca10d95
--- /dev/null
+++ b/src/main/java/com/casic/config/CodeGenerator.java
@@ -0,0 +1,110 @@
+//package com.casic.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.annotation.FieldFill;
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+//import com.baomidou.mybatisplus.generator.AutoGenerator;
+//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+//import com.baomidou.mybatisplus.generator.config.PackageConfig;
+//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+//import com.baomidou.mybatisplus.generator.config.po.TableFill;
+//import com.baomidou.mybatisplus.generator.config.rules.DateType;
+//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+//import org.apache.commons.lang3.StringUtils;
+//
+//import java.util.ArrayList;
+//import java.util.Scanner;
+//
+//public class CodeGenerator {
+//
+//
+// public static String scanner(String tip) {
+// Scanner scanner = new Scanner(System.in);
+// StringBuilder help = new StringBuilder();
+// help.append("请输入" + tip + ":");
+// System.out.println(help.toString());
+// if (scanner.hasNext()) {
+// String ipt = scanner.next();
+// if (StringUtils.isNotBlank(ipt)) {
+// return ipt;
+// }
+// }
+// throw new MybatisPlusException("请输入正确的" + tip + "!");
+// }
+//
+//
+//
+//
+//
+// public static void main(String[] args) {
+// // 代码生成器
+// AutoGenerator mpg = new AutoGenerator();
+//
+// // 全局配置
+// GlobalConfig gc = new GlobalConfig();
+// String projectPath = System.getProperty("user.dir");
+// gc.setOutputDir(projectPath + "/src/main/java");//设置代码生成路径
+// gc.setFileOverride(true);//是否覆盖以前文件
+// gc.setOpen(false);//是否打开生成目录
+// gc.setAuthor("yixin");//设置项目作者名称
+// gc.setIdType(IdType.AUTO);//设置主键策略
+// gc.setBaseResultMap(true);//生成基本ResultMap
+// gc.setBaseColumnList(true);//生成基本ColumnList
+// gc.setServiceName("%sService");//去掉服务默认前缀
+// gc.setDateType(DateType.ONLY_DATE);//设置时间类型
+// mpg.setGlobalConfig(gc);
+//
+// // 数据源配置
+// DataSourceConfig dsc = new DataSourceConfig();
+// dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
+// dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+// dsc.setUsername("root");
+// dsc.setPassword("123456");
+// mpg.setDataSource(dsc);
+//
+// // 包配置
+// PackageConfig pc = new PackageConfig();
+// pc.setParent("com.yixin");
+// pc.setMapper("mapper");
+// pc.setXml("mapper.xml");
+// pc.setEntity("pojo");
+// pc.setService("service");
+// pc.setServiceImpl("service.impl");
+// pc.setController("controller");
+// mpg.setPackageInfo(pc);
+//
+// // 策略配置
+// StrategyConfig sc = new StrategyConfig();
+// sc.setNaming(NamingStrategy.underline_to_camel);
+// sc.setColumnNaming(NamingStrategy.underline_to_camel);
+// sc.setEntityLombokModel(true);//自动lombok
+// sc.setRestControllerStyle(true);
+// sc.setControllerMappingHyphenStyle(true);
+//
+// sc.setLogicDeleteFieldName("deleted");//设置逻辑删除
+//
+// //设置自动填充配置
+// TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);
+// TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
+// ArrayList tableFills=new ArrayList<>();
+// tableFills.add(gmt_create);
+// tableFills.add(gmt_modified);
+// sc.setTableFillList(tableFills);
+//
+// //乐观锁
+// sc.setVersionFieldName("version");
+// sc.setRestControllerStyle(true);//驼峰命名
+//
+//
+//
+// // sc.setTablePrefix("tbl_"); 设置表名前缀
+// sc.setInclude(scanner("表名,多个英文逗号分割").split(","));
+// mpg.setStrategy(sc);
+//
+// // 生成代码
+// mpg.execute();
+// }
+//
+//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
new file mode 100644
index 0000000..7d19680
--- /dev/null
+++ b/src/main/java/com/casic/config/CorsConfig.java
@@ -0,0 +1,31 @@
+package com.casic.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * 基础框架 - 跨域请求配置
+ */
+@Configuration
+public class CorsConfig {
+ @Bean
+ public CorsFilter corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", buildConfig());
+ return new CorsFilter(source);
+ }
+
+ private CorsConfiguration buildConfig() {
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ // 1允许任何域名使用
+ corsConfiguration.addAllowedOrigin("*");
+ // 2允许任何头
+ corsConfiguration.addAllowedHeader("*");
+ // 3允许任何方法(post、get等)
+ corsConfiguration.addAllowedMethod("*");
+ return corsConfiguration;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
new file mode 100644
index 0000000..bb4c9ff
--- /dev/null
+++ b/src/main/java/com/casic/config/Knife4jConfiguration.java
@@ -0,0 +1,38 @@
+package com.casic.config;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+@Configuration
+@EnableKnife4j
+public class Knife4jConfiguration {
+
+ @Value(value = "${swagger.enable}")
+ public boolean enable;
+ @Value(value = "${swagger.groupName}")
+ public String groupName;
+
+ @Bean(value = "dockerBean")
+ public Docket dockerBean() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(new ApiInfoBuilder()
+ //描述字段支持Markdown语法
+ .description("# Knife4j RESTful APIs")
+ .termsOfServiceUrl("https://doc.casic.com/")
+ .version("1.0")
+ .build())
+ //分组名称
+ .groupName(groupName)
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("com.casic"))
+ .paths(PathSelectors.any()).build().enable(enable);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/MybatisPlusConfig.java b/src/main/java/com/casic/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..58fd3b1
--- /dev/null
+++ b/src/main/java/com/casic/config/MybatisPlusConfig.java
@@ -0,0 +1,18 @@
+package com.casic.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(){
+ MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+}
+
diff --git a/src/main/java/com/casic/controller/AlarmConfigController.java b/src/main/java/com/casic/controller/AlarmConfigController.java
new file mode 100644
index 0000000..85d965a
--- /dev/null
+++ b/src/main/java/com/casic/controller/AlarmConfigController.java
@@ -0,0 +1,57 @@
+package com.casic.controller;
+
+import com.casic.entity.NbAlarmConfig;
+import com.casic.entity.NbDevice;
+import com.casic.model.AlarmConfigParam;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.AlarmConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/alarm")
+@Slf4j
+@Api(tags = "报警配置")
+public class AlarmConfigController {
+
+ private final AlarmConfigService alarmConfigService;
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("报警下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List alarmConfigParamList) {
+ return alarmConfigService.gasBatchConfig(alarmConfigParamList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("报警配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return alarmConfigService.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DataGasController.java b/src/main/java/com/casic/controller/DataGasController.java
new file mode 100644
index 0000000..12ca603
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataGasController.java
@@ -0,0 +1,61 @@
+package com.casic.controller;
+
+import com.casic.entity.LucencyGasData;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDataService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/gas")
+@Api(tags = "数据列表")
+public class DataGasController {
+
+ @Resource
+ private GasDataService gasDataService;
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("数据查询列表-单记录")
+ @RequestMapping("/list-page")
+ public ResponseData> getGasDataList(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasDataList(devcode, beginTime, endTime, currentIndex, pageSize,sortDevcode);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备历史数据列表")
+ @RequestMapping("/devcode/list")
+ public ResponseData> getGasHistoryList(@RequestParam(value = "devcode", required = true) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasHistoryList(devcode, beginTime, endTime, currentIndex, pageSize);
+ }
+
+
+
+}
diff --git a/src/main/java/com/casic/controller/DataRecvController.java b/src/main/java/com/casic/controller/DataRecvController.java
new file mode 100644
index 0000000..3655480
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataRecvController.java
@@ -0,0 +1,31 @@
+package com.casic.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.casic.service.GasDataRecvService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Api(tags = "数据接收")
+@Slf4j
+public class DataRecvController {
+
+ private final GasDataRecvService gasDataRecvService;
+
+ @ApiOperation("数据接收接口,接收三码、实时数据,自动增添设备,前端不需要实现")
+ @RequestMapping("/gas/recv")
+ public Object gasRecv(@RequestBody Map recvDataMap) {
+ log.error("--------" + JSONObject.toJSONString(recvDataMap));
+ return gasDataRecvService.saveRev(recvDataMap);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceConfigController.java b/src/main/java/com/casic/controller/DeviceConfigController.java
new file mode 100644
index 0000000..613d205
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceConfigController.java
@@ -0,0 +1,62 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备配置")
+public class DeviceConfigController {
+
+ private final DeviceConfigService devcieConfig;
+
+ @RequestMapping("/device/config")
+ @ApiOperation("设备下发配置")
+ public ResponseData gasDeviceConfig(@RequestBody BusConfigParam busConfigParam) {
+ return devcieConfig.devcieConfig(busConfigParam);
+ }
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("设备下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List busConfigList) {
+ return devcieConfig.gasBatchConfig(busConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return devcieConfig.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceStatusController.java b/src/main/java/com/casic/controller/DeviceStatusController.java
new file mode 100644
index 0000000..8d6d05c
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceStatusController.java
@@ -0,0 +1,74 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.DataGasConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDeviceService;
+import com.casic.util.ExportExcelUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备管理")
+public class DeviceStatusController extends ExportExcelUtil {
+
+ private final GasDeviceService gasDeviceService;
+
+ @RequestMapping("/status/config")
+ @ApiOperation("状态下发查询")
+ public ResponseData gasStatusConfig(@RequestBody List dataGasConfigList) {
+ return gasDeviceService.devcieStatusConfig(dataGasConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "keywords", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false)
+ })
+ @ApiOperation("设备列表导出")
+ @RequestMapping(value = "/device/export")
+ public void deviceDataExport(String keywords, String beginTime, String endTime) throws IOException {
+ List deviceDataExcelDtos = gasDeviceService.getDevicieList(beginTime, endTime, keywords);
+ super.exportExcel(NbDevice.class, deviceDataExcelDtos, "设备列表.xlsx");
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "emptyStatus", value = "空状态(查true,不查false)", required = true),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备分页列表")
+ @RequestMapping(value = "/device/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "emptyStatus", required = true) Boolean emptyStatus,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDeviceService.getDevicieListPage(devcode, beginTime, endTime, currentIndex, pageSize,emptyStatus,sortDevcode);
+ }
+
+ @RequestMapping("/device/dict")
+ @ApiOperation("设备字典列表")
+ public ResponseData> deviceDict() {
+ return gasDeviceService.deviceDict();
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/GasDataRecvMapper.java b/src/main/java/com/casic/dao/GasDataRecvMapper.java
new file mode 100644
index 0000000..558996b
--- /dev/null
+++ b/src/main/java/com/casic/dao/GasDataRecvMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.LucencyGasData;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Date;
+
+@Mapper
+public interface GasDataRecvMapper extends BaseMapper {
+
+
+ @Update("UPDATE lucency_gas_data " +
+ "SET devcode=#{devcode} " +
+ "WHERE imei=#{imei} ")
+ Integer updateData(@Param("imei") String imei, @Param("devcode") String devcode);
+
+
+ @Insert("insert into lucency_gas_data(devcode,tenant_id,device_id,data_value,uptime,imei,logtime) " +
+ "values(#{devcode},#{tenantId},#{deviceId},#{ch4},#{uptime},#{imei},#{logtime}) ")
+ Integer addData(@Param("devcode") String devcode, @Param("tenantId") String tenantId,
+ @Param("deviceId") String deviceId, @Param("imei") String imei,
+ @Param("uptime") Date time, @Param("ch4") String ch4,
+ @Param("logtime") Date logtime);
+}
diff --git a/src/main/java/com/casic/dao/NbAlarmConfigMapper.java b/src/main/java/com/casic/dao/NbAlarmConfigMapper.java
new file mode 100644
index 0000000..a9454dd
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbAlarmConfigMapper.java
@@ -0,0 +1,18 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbAlarmConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface NbAlarmConfigMapper extends BaseMapper {
+
+ @Update("UPDATE nb_alarm_config " +
+ "SET status= #{configMsg} " +
+ "WHERE device_id=#{deviceId} " +
+ "AND status='未下发' ")
+ Integer configStatusData(@Param("configMsg") String configMsg,
+ @Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbConfigMapper.java b/src/main/java/com/casic/dao/NbConfigMapper.java
new file mode 100644
index 0000000..801a4f7
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbConfigMapper.java
@@ -0,0 +1,19 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface NbConfigMapper extends BaseMapper {
+
+
+ @Update("UPDATE nb_config " +
+ "SET status= #{configMsg} " +
+ "WHERE device_id=#{deviceId} " +
+ "AND status='未下发' ")
+ Integer configStatusData(@Param("configMsg") String configMsg,
+ @Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbDeviceMapper.java b/src/main/java/com/casic/dao/NbDeviceMapper.java
new file mode 100644
index 0000000..7d33eb3
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbDeviceMapper.java
@@ -0,0 +1,45 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbDevice;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Map;
+
+@Mapper
+public interface NbDeviceMapper extends BaseMapper {
+
+ @Select("delete " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ Integer deleteDeviceByImei(@Param("imei") String imei);
+
+ @Select("select id,device_id " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ Map getDeviceByImei(@Param("imei") String imei);
+
+ @Update("update nb_device " +
+ "device_id=#{deviceId} " +
+ "where imei=#{imei} ")
+ Integer setDeviceIdByImei(@Param("imei") String imei, @Param("deviceId") String deviceId);
+
+ @Select("select devcode " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ String getDevcodeByImei(@Param("imei") String imei);
+
+
+ @Update("update nb_device " +
+ "set recent_conf=#{recentConf} " +
+ "where device_id=#{deviceId} ")
+ Integer updateRecentByDevciceId (@Param("deviceId") String deviceId,@Param("recentConf") String recentConf);
+
+ @Select("select recent_conf " +
+ "from nb_device " +
+ "where device_id=#{deviceId} ")
+ String getRecentByDevciceId (@Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbParamConfigMapper.java b/src/main/java/com/casic/dao/NbParamConfigMapper.java
new file mode 100644
index 0000000..468e05b
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbParamConfigMapper.java
@@ -0,0 +1,7 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbParamConfig;
+
+public interface NbParamConfigMapper extends BaseMapper {
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/src/main/java/com/casic/config/AEPParamConfig.java b/src/main/java/com/casic/config/AEPParamConfig.java
new file mode 100644
index 0000000..349d4b2
--- /dev/null
+++ b/src/main/java/com/casic/config/AEPParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class AEPParamConfig {
+
+ @Value("${nb.app.key}")
+ private String appKey;
+ @Value("${nb.app.secret}")
+ private String appSecret;
+ @Value("${nb.gas.url}")
+ private String aepUrl;
+ @Value("${nb.gas.product-id}")
+ private String productId;
+ @Value("${nb.gas.MasterKey}")
+ private String masterKey;
+}
diff --git a/src/main/java/com/casic/config/CodeGenerator.java b/src/main/java/com/casic/config/CodeGenerator.java
new file mode 100644
index 0000000..ca10d95
--- /dev/null
+++ b/src/main/java/com/casic/config/CodeGenerator.java
@@ -0,0 +1,110 @@
+//package com.casic.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.annotation.FieldFill;
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+//import com.baomidou.mybatisplus.generator.AutoGenerator;
+//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+//import com.baomidou.mybatisplus.generator.config.PackageConfig;
+//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+//import com.baomidou.mybatisplus.generator.config.po.TableFill;
+//import com.baomidou.mybatisplus.generator.config.rules.DateType;
+//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+//import org.apache.commons.lang3.StringUtils;
+//
+//import java.util.ArrayList;
+//import java.util.Scanner;
+//
+//public class CodeGenerator {
+//
+//
+// public static String scanner(String tip) {
+// Scanner scanner = new Scanner(System.in);
+// StringBuilder help = new StringBuilder();
+// help.append("请输入" + tip + ":");
+// System.out.println(help.toString());
+// if (scanner.hasNext()) {
+// String ipt = scanner.next();
+// if (StringUtils.isNotBlank(ipt)) {
+// return ipt;
+// }
+// }
+// throw new MybatisPlusException("请输入正确的" + tip + "!");
+// }
+//
+//
+//
+//
+//
+// public static void main(String[] args) {
+// // 代码生成器
+// AutoGenerator mpg = new AutoGenerator();
+//
+// // 全局配置
+// GlobalConfig gc = new GlobalConfig();
+// String projectPath = System.getProperty("user.dir");
+// gc.setOutputDir(projectPath + "/src/main/java");//设置代码生成路径
+// gc.setFileOverride(true);//是否覆盖以前文件
+// gc.setOpen(false);//是否打开生成目录
+// gc.setAuthor("yixin");//设置项目作者名称
+// gc.setIdType(IdType.AUTO);//设置主键策略
+// gc.setBaseResultMap(true);//生成基本ResultMap
+// gc.setBaseColumnList(true);//生成基本ColumnList
+// gc.setServiceName("%sService");//去掉服务默认前缀
+// gc.setDateType(DateType.ONLY_DATE);//设置时间类型
+// mpg.setGlobalConfig(gc);
+//
+// // 数据源配置
+// DataSourceConfig dsc = new DataSourceConfig();
+// dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
+// dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+// dsc.setUsername("root");
+// dsc.setPassword("123456");
+// mpg.setDataSource(dsc);
+//
+// // 包配置
+// PackageConfig pc = new PackageConfig();
+// pc.setParent("com.yixin");
+// pc.setMapper("mapper");
+// pc.setXml("mapper.xml");
+// pc.setEntity("pojo");
+// pc.setService("service");
+// pc.setServiceImpl("service.impl");
+// pc.setController("controller");
+// mpg.setPackageInfo(pc);
+//
+// // 策略配置
+// StrategyConfig sc = new StrategyConfig();
+// sc.setNaming(NamingStrategy.underline_to_camel);
+// sc.setColumnNaming(NamingStrategy.underline_to_camel);
+// sc.setEntityLombokModel(true);//自动lombok
+// sc.setRestControllerStyle(true);
+// sc.setControllerMappingHyphenStyle(true);
+//
+// sc.setLogicDeleteFieldName("deleted");//设置逻辑删除
+//
+// //设置自动填充配置
+// TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);
+// TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
+// ArrayList tableFills=new ArrayList<>();
+// tableFills.add(gmt_create);
+// tableFills.add(gmt_modified);
+// sc.setTableFillList(tableFills);
+//
+// //乐观锁
+// sc.setVersionFieldName("version");
+// sc.setRestControllerStyle(true);//驼峰命名
+//
+//
+//
+// // sc.setTablePrefix("tbl_"); 设置表名前缀
+// sc.setInclude(scanner("表名,多个英文逗号分割").split(","));
+// mpg.setStrategy(sc);
+//
+// // 生成代码
+// mpg.execute();
+// }
+//
+//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
new file mode 100644
index 0000000..7d19680
--- /dev/null
+++ b/src/main/java/com/casic/config/CorsConfig.java
@@ -0,0 +1,31 @@
+package com.casic.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * 基础框架 - 跨域请求配置
+ */
+@Configuration
+public class CorsConfig {
+ @Bean
+ public CorsFilter corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", buildConfig());
+ return new CorsFilter(source);
+ }
+
+ private CorsConfiguration buildConfig() {
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ // 1允许任何域名使用
+ corsConfiguration.addAllowedOrigin("*");
+ // 2允许任何头
+ corsConfiguration.addAllowedHeader("*");
+ // 3允许任何方法(post、get等)
+ corsConfiguration.addAllowedMethod("*");
+ return corsConfiguration;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
new file mode 100644
index 0000000..bb4c9ff
--- /dev/null
+++ b/src/main/java/com/casic/config/Knife4jConfiguration.java
@@ -0,0 +1,38 @@
+package com.casic.config;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+@Configuration
+@EnableKnife4j
+public class Knife4jConfiguration {
+
+ @Value(value = "${swagger.enable}")
+ public boolean enable;
+ @Value(value = "${swagger.groupName}")
+ public String groupName;
+
+ @Bean(value = "dockerBean")
+ public Docket dockerBean() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(new ApiInfoBuilder()
+ //描述字段支持Markdown语法
+ .description("# Knife4j RESTful APIs")
+ .termsOfServiceUrl("https://doc.casic.com/")
+ .version("1.0")
+ .build())
+ //分组名称
+ .groupName(groupName)
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("com.casic"))
+ .paths(PathSelectors.any()).build().enable(enable);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/MybatisPlusConfig.java b/src/main/java/com/casic/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..58fd3b1
--- /dev/null
+++ b/src/main/java/com/casic/config/MybatisPlusConfig.java
@@ -0,0 +1,18 @@
+package com.casic.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(){
+ MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+}
+
diff --git a/src/main/java/com/casic/controller/AlarmConfigController.java b/src/main/java/com/casic/controller/AlarmConfigController.java
new file mode 100644
index 0000000..85d965a
--- /dev/null
+++ b/src/main/java/com/casic/controller/AlarmConfigController.java
@@ -0,0 +1,57 @@
+package com.casic.controller;
+
+import com.casic.entity.NbAlarmConfig;
+import com.casic.entity.NbDevice;
+import com.casic.model.AlarmConfigParam;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.AlarmConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/alarm")
+@Slf4j
+@Api(tags = "报警配置")
+public class AlarmConfigController {
+
+ private final AlarmConfigService alarmConfigService;
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("报警下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List alarmConfigParamList) {
+ return alarmConfigService.gasBatchConfig(alarmConfigParamList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("报警配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return alarmConfigService.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DataGasController.java b/src/main/java/com/casic/controller/DataGasController.java
new file mode 100644
index 0000000..12ca603
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataGasController.java
@@ -0,0 +1,61 @@
+package com.casic.controller;
+
+import com.casic.entity.LucencyGasData;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDataService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/gas")
+@Api(tags = "数据列表")
+public class DataGasController {
+
+ @Resource
+ private GasDataService gasDataService;
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("数据查询列表-单记录")
+ @RequestMapping("/list-page")
+ public ResponseData> getGasDataList(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasDataList(devcode, beginTime, endTime, currentIndex, pageSize,sortDevcode);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备历史数据列表")
+ @RequestMapping("/devcode/list")
+ public ResponseData> getGasHistoryList(@RequestParam(value = "devcode", required = true) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasHistoryList(devcode, beginTime, endTime, currentIndex, pageSize);
+ }
+
+
+
+}
diff --git a/src/main/java/com/casic/controller/DataRecvController.java b/src/main/java/com/casic/controller/DataRecvController.java
new file mode 100644
index 0000000..3655480
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataRecvController.java
@@ -0,0 +1,31 @@
+package com.casic.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.casic.service.GasDataRecvService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Api(tags = "数据接收")
+@Slf4j
+public class DataRecvController {
+
+ private final GasDataRecvService gasDataRecvService;
+
+ @ApiOperation("数据接收接口,接收三码、实时数据,自动增添设备,前端不需要实现")
+ @RequestMapping("/gas/recv")
+ public Object gasRecv(@RequestBody Map recvDataMap) {
+ log.error("--------" + JSONObject.toJSONString(recvDataMap));
+ return gasDataRecvService.saveRev(recvDataMap);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceConfigController.java b/src/main/java/com/casic/controller/DeviceConfigController.java
new file mode 100644
index 0000000..613d205
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceConfigController.java
@@ -0,0 +1,62 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备配置")
+public class DeviceConfigController {
+
+ private final DeviceConfigService devcieConfig;
+
+ @RequestMapping("/device/config")
+ @ApiOperation("设备下发配置")
+ public ResponseData gasDeviceConfig(@RequestBody BusConfigParam busConfigParam) {
+ return devcieConfig.devcieConfig(busConfigParam);
+ }
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("设备下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List busConfigList) {
+ return devcieConfig.gasBatchConfig(busConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return devcieConfig.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceStatusController.java b/src/main/java/com/casic/controller/DeviceStatusController.java
new file mode 100644
index 0000000..8d6d05c
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceStatusController.java
@@ -0,0 +1,74 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.DataGasConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDeviceService;
+import com.casic.util.ExportExcelUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备管理")
+public class DeviceStatusController extends ExportExcelUtil {
+
+ private final GasDeviceService gasDeviceService;
+
+ @RequestMapping("/status/config")
+ @ApiOperation("状态下发查询")
+ public ResponseData gasStatusConfig(@RequestBody List dataGasConfigList) {
+ return gasDeviceService.devcieStatusConfig(dataGasConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "keywords", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false)
+ })
+ @ApiOperation("设备列表导出")
+ @RequestMapping(value = "/device/export")
+ public void deviceDataExport(String keywords, String beginTime, String endTime) throws IOException {
+ List deviceDataExcelDtos = gasDeviceService.getDevicieList(beginTime, endTime, keywords);
+ super.exportExcel(NbDevice.class, deviceDataExcelDtos, "设备列表.xlsx");
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "emptyStatus", value = "空状态(查true,不查false)", required = true),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备分页列表")
+ @RequestMapping(value = "/device/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "emptyStatus", required = true) Boolean emptyStatus,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDeviceService.getDevicieListPage(devcode, beginTime, endTime, currentIndex, pageSize,emptyStatus,sortDevcode);
+ }
+
+ @RequestMapping("/device/dict")
+ @ApiOperation("设备字典列表")
+ public ResponseData> deviceDict() {
+ return gasDeviceService.deviceDict();
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/GasDataRecvMapper.java b/src/main/java/com/casic/dao/GasDataRecvMapper.java
new file mode 100644
index 0000000..558996b
--- /dev/null
+++ b/src/main/java/com/casic/dao/GasDataRecvMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.LucencyGasData;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Date;
+
+@Mapper
+public interface GasDataRecvMapper extends BaseMapper {
+
+
+ @Update("UPDATE lucency_gas_data " +
+ "SET devcode=#{devcode} " +
+ "WHERE imei=#{imei} ")
+ Integer updateData(@Param("imei") String imei, @Param("devcode") String devcode);
+
+
+ @Insert("insert into lucency_gas_data(devcode,tenant_id,device_id,data_value,uptime,imei,logtime) " +
+ "values(#{devcode},#{tenantId},#{deviceId},#{ch4},#{uptime},#{imei},#{logtime}) ")
+ Integer addData(@Param("devcode") String devcode, @Param("tenantId") String tenantId,
+ @Param("deviceId") String deviceId, @Param("imei") String imei,
+ @Param("uptime") Date time, @Param("ch4") String ch4,
+ @Param("logtime") Date logtime);
+}
diff --git a/src/main/java/com/casic/dao/NbAlarmConfigMapper.java b/src/main/java/com/casic/dao/NbAlarmConfigMapper.java
new file mode 100644
index 0000000..a9454dd
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbAlarmConfigMapper.java
@@ -0,0 +1,18 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbAlarmConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface NbAlarmConfigMapper extends BaseMapper {
+
+ @Update("UPDATE nb_alarm_config " +
+ "SET status= #{configMsg} " +
+ "WHERE device_id=#{deviceId} " +
+ "AND status='未下发' ")
+ Integer configStatusData(@Param("configMsg") String configMsg,
+ @Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbConfigMapper.java b/src/main/java/com/casic/dao/NbConfigMapper.java
new file mode 100644
index 0000000..801a4f7
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbConfigMapper.java
@@ -0,0 +1,19 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface NbConfigMapper extends BaseMapper {
+
+
+ @Update("UPDATE nb_config " +
+ "SET status= #{configMsg} " +
+ "WHERE device_id=#{deviceId} " +
+ "AND status='未下发' ")
+ Integer configStatusData(@Param("configMsg") String configMsg,
+ @Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbDeviceMapper.java b/src/main/java/com/casic/dao/NbDeviceMapper.java
new file mode 100644
index 0000000..7d33eb3
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbDeviceMapper.java
@@ -0,0 +1,45 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbDevice;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Map;
+
+@Mapper
+public interface NbDeviceMapper extends BaseMapper {
+
+ @Select("delete " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ Integer deleteDeviceByImei(@Param("imei") String imei);
+
+ @Select("select id,device_id " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ Map getDeviceByImei(@Param("imei") String imei);
+
+ @Update("update nb_device " +
+ "device_id=#{deviceId} " +
+ "where imei=#{imei} ")
+ Integer setDeviceIdByImei(@Param("imei") String imei, @Param("deviceId") String deviceId);
+
+ @Select("select devcode " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ String getDevcodeByImei(@Param("imei") String imei);
+
+
+ @Update("update nb_device " +
+ "set recent_conf=#{recentConf} " +
+ "where device_id=#{deviceId} ")
+ Integer updateRecentByDevciceId (@Param("deviceId") String deviceId,@Param("recentConf") String recentConf);
+
+ @Select("select recent_conf " +
+ "from nb_device " +
+ "where device_id=#{deviceId} ")
+ String getRecentByDevciceId (@Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbParamConfigMapper.java b/src/main/java/com/casic/dao/NbParamConfigMapper.java
new file mode 100644
index 0000000..468e05b
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbParamConfigMapper.java
@@ -0,0 +1,7 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbParamConfig;
+
+public interface NbParamConfigMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/casic/entity/LucencyGasData.java b/src/main/java/com/casic/entity/LucencyGasData.java
new file mode 100644
index 0000000..b49c4de
--- /dev/null
+++ b/src/main/java/com/casic/entity/LucencyGasData.java
@@ -0,0 +1,61 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Builder
+@Data
+@ApiModel(value = "LucencyGasData", description = "燃气列表")
+@TableName("lucency_gas_data")
+public class LucencyGasData {
+ @TableId(type = IdType.AUTO)
+ @ApiModelProperty(notes = "透传燃气数据id", dataType = "Long")
+ private Long id;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ @TableField("devcode")
+ private String devcode;
+ @ApiModelProperty(notes = "tenantId", dataType = "Long")
+ @TableField("tenant_id")
+ private Long tenantId;
+ @ApiModelProperty(notes = "信号强度", dataType = "String")
+ @TableField("signals")
+ private String signals;
+ @ApiModelProperty(notes = "可燃气体高报", dataType = "String")
+ @TableField("chha")
+ private String chha;
+ @ApiModelProperty(notes = "可燃气体高高报", dataType = "String")
+ @TableField("chhha")
+ private String chhha;
+ @ApiModelProperty(notes = "电量", dataType = "Double")
+ @TableField("cell")
+ private Double cell;
+ @ApiModelProperty(notes = "燃气浓度", dataType = "String")
+ @TableField("data_value")
+ private String dataValue;
+ @ApiModelProperty(notes = "电信平台注册主键", dataType = "String")
+ @TableField("device_id")
+ private String deviceId;
+ @ApiModelProperty(notes = "记录时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ @TableField("logtime")
+ private Date logtime;
+ @ApiModelProperty(notes = "采集时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ @TableField("uptime")
+ private Date uptime;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ @TableField("imei")
+ private String imei;
+
+
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/src/main/java/com/casic/config/AEPParamConfig.java b/src/main/java/com/casic/config/AEPParamConfig.java
new file mode 100644
index 0000000..349d4b2
--- /dev/null
+++ b/src/main/java/com/casic/config/AEPParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class AEPParamConfig {
+
+ @Value("${nb.app.key}")
+ private String appKey;
+ @Value("${nb.app.secret}")
+ private String appSecret;
+ @Value("${nb.gas.url}")
+ private String aepUrl;
+ @Value("${nb.gas.product-id}")
+ private String productId;
+ @Value("${nb.gas.MasterKey}")
+ private String masterKey;
+}
diff --git a/src/main/java/com/casic/config/CodeGenerator.java b/src/main/java/com/casic/config/CodeGenerator.java
new file mode 100644
index 0000000..ca10d95
--- /dev/null
+++ b/src/main/java/com/casic/config/CodeGenerator.java
@@ -0,0 +1,110 @@
+//package com.casic.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.annotation.FieldFill;
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+//import com.baomidou.mybatisplus.generator.AutoGenerator;
+//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+//import com.baomidou.mybatisplus.generator.config.PackageConfig;
+//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+//import com.baomidou.mybatisplus.generator.config.po.TableFill;
+//import com.baomidou.mybatisplus.generator.config.rules.DateType;
+//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+//import org.apache.commons.lang3.StringUtils;
+//
+//import java.util.ArrayList;
+//import java.util.Scanner;
+//
+//public class CodeGenerator {
+//
+//
+// public static String scanner(String tip) {
+// Scanner scanner = new Scanner(System.in);
+// StringBuilder help = new StringBuilder();
+// help.append("请输入" + tip + ":");
+// System.out.println(help.toString());
+// if (scanner.hasNext()) {
+// String ipt = scanner.next();
+// if (StringUtils.isNotBlank(ipt)) {
+// return ipt;
+// }
+// }
+// throw new MybatisPlusException("请输入正确的" + tip + "!");
+// }
+//
+//
+//
+//
+//
+// public static void main(String[] args) {
+// // 代码生成器
+// AutoGenerator mpg = new AutoGenerator();
+//
+// // 全局配置
+// GlobalConfig gc = new GlobalConfig();
+// String projectPath = System.getProperty("user.dir");
+// gc.setOutputDir(projectPath + "/src/main/java");//设置代码生成路径
+// gc.setFileOverride(true);//是否覆盖以前文件
+// gc.setOpen(false);//是否打开生成目录
+// gc.setAuthor("yixin");//设置项目作者名称
+// gc.setIdType(IdType.AUTO);//设置主键策略
+// gc.setBaseResultMap(true);//生成基本ResultMap
+// gc.setBaseColumnList(true);//生成基本ColumnList
+// gc.setServiceName("%sService");//去掉服务默认前缀
+// gc.setDateType(DateType.ONLY_DATE);//设置时间类型
+// mpg.setGlobalConfig(gc);
+//
+// // 数据源配置
+// DataSourceConfig dsc = new DataSourceConfig();
+// dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
+// dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+// dsc.setUsername("root");
+// dsc.setPassword("123456");
+// mpg.setDataSource(dsc);
+//
+// // 包配置
+// PackageConfig pc = new PackageConfig();
+// pc.setParent("com.yixin");
+// pc.setMapper("mapper");
+// pc.setXml("mapper.xml");
+// pc.setEntity("pojo");
+// pc.setService("service");
+// pc.setServiceImpl("service.impl");
+// pc.setController("controller");
+// mpg.setPackageInfo(pc);
+//
+// // 策略配置
+// StrategyConfig sc = new StrategyConfig();
+// sc.setNaming(NamingStrategy.underline_to_camel);
+// sc.setColumnNaming(NamingStrategy.underline_to_camel);
+// sc.setEntityLombokModel(true);//自动lombok
+// sc.setRestControllerStyle(true);
+// sc.setControllerMappingHyphenStyle(true);
+//
+// sc.setLogicDeleteFieldName("deleted");//设置逻辑删除
+//
+// //设置自动填充配置
+// TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);
+// TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
+// ArrayList tableFills=new ArrayList<>();
+// tableFills.add(gmt_create);
+// tableFills.add(gmt_modified);
+// sc.setTableFillList(tableFills);
+//
+// //乐观锁
+// sc.setVersionFieldName("version");
+// sc.setRestControllerStyle(true);//驼峰命名
+//
+//
+//
+// // sc.setTablePrefix("tbl_"); 设置表名前缀
+// sc.setInclude(scanner("表名,多个英文逗号分割").split(","));
+// mpg.setStrategy(sc);
+//
+// // 生成代码
+// mpg.execute();
+// }
+//
+//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
new file mode 100644
index 0000000..7d19680
--- /dev/null
+++ b/src/main/java/com/casic/config/CorsConfig.java
@@ -0,0 +1,31 @@
+package com.casic.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * 基础框架 - 跨域请求配置
+ */
+@Configuration
+public class CorsConfig {
+ @Bean
+ public CorsFilter corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", buildConfig());
+ return new CorsFilter(source);
+ }
+
+ private CorsConfiguration buildConfig() {
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ // 1允许任何域名使用
+ corsConfiguration.addAllowedOrigin("*");
+ // 2允许任何头
+ corsConfiguration.addAllowedHeader("*");
+ // 3允许任何方法(post、get等)
+ corsConfiguration.addAllowedMethod("*");
+ return corsConfiguration;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
new file mode 100644
index 0000000..bb4c9ff
--- /dev/null
+++ b/src/main/java/com/casic/config/Knife4jConfiguration.java
@@ -0,0 +1,38 @@
+package com.casic.config;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+@Configuration
+@EnableKnife4j
+public class Knife4jConfiguration {
+
+ @Value(value = "${swagger.enable}")
+ public boolean enable;
+ @Value(value = "${swagger.groupName}")
+ public String groupName;
+
+ @Bean(value = "dockerBean")
+ public Docket dockerBean() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(new ApiInfoBuilder()
+ //描述字段支持Markdown语法
+ .description("# Knife4j RESTful APIs")
+ .termsOfServiceUrl("https://doc.casic.com/")
+ .version("1.0")
+ .build())
+ //分组名称
+ .groupName(groupName)
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("com.casic"))
+ .paths(PathSelectors.any()).build().enable(enable);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/MybatisPlusConfig.java b/src/main/java/com/casic/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..58fd3b1
--- /dev/null
+++ b/src/main/java/com/casic/config/MybatisPlusConfig.java
@@ -0,0 +1,18 @@
+package com.casic.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(){
+ MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+}
+
diff --git a/src/main/java/com/casic/controller/AlarmConfigController.java b/src/main/java/com/casic/controller/AlarmConfigController.java
new file mode 100644
index 0000000..85d965a
--- /dev/null
+++ b/src/main/java/com/casic/controller/AlarmConfigController.java
@@ -0,0 +1,57 @@
+package com.casic.controller;
+
+import com.casic.entity.NbAlarmConfig;
+import com.casic.entity.NbDevice;
+import com.casic.model.AlarmConfigParam;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.AlarmConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/alarm")
+@Slf4j
+@Api(tags = "报警配置")
+public class AlarmConfigController {
+
+ private final AlarmConfigService alarmConfigService;
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("报警下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List alarmConfigParamList) {
+ return alarmConfigService.gasBatchConfig(alarmConfigParamList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("报警配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return alarmConfigService.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DataGasController.java b/src/main/java/com/casic/controller/DataGasController.java
new file mode 100644
index 0000000..12ca603
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataGasController.java
@@ -0,0 +1,61 @@
+package com.casic.controller;
+
+import com.casic.entity.LucencyGasData;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDataService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/gas")
+@Api(tags = "数据列表")
+public class DataGasController {
+
+ @Resource
+ private GasDataService gasDataService;
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("数据查询列表-单记录")
+ @RequestMapping("/list-page")
+ public ResponseData> getGasDataList(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasDataList(devcode, beginTime, endTime, currentIndex, pageSize,sortDevcode);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备历史数据列表")
+ @RequestMapping("/devcode/list")
+ public ResponseData> getGasHistoryList(@RequestParam(value = "devcode", required = true) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasHistoryList(devcode, beginTime, endTime, currentIndex, pageSize);
+ }
+
+
+
+}
diff --git a/src/main/java/com/casic/controller/DataRecvController.java b/src/main/java/com/casic/controller/DataRecvController.java
new file mode 100644
index 0000000..3655480
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataRecvController.java
@@ -0,0 +1,31 @@
+package com.casic.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.casic.service.GasDataRecvService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Api(tags = "数据接收")
+@Slf4j
+public class DataRecvController {
+
+ private final GasDataRecvService gasDataRecvService;
+
+ @ApiOperation("数据接收接口,接收三码、实时数据,自动增添设备,前端不需要实现")
+ @RequestMapping("/gas/recv")
+ public Object gasRecv(@RequestBody Map recvDataMap) {
+ log.error("--------" + JSONObject.toJSONString(recvDataMap));
+ return gasDataRecvService.saveRev(recvDataMap);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceConfigController.java b/src/main/java/com/casic/controller/DeviceConfigController.java
new file mode 100644
index 0000000..613d205
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceConfigController.java
@@ -0,0 +1,62 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备配置")
+public class DeviceConfigController {
+
+ private final DeviceConfigService devcieConfig;
+
+ @RequestMapping("/device/config")
+ @ApiOperation("设备下发配置")
+ public ResponseData gasDeviceConfig(@RequestBody BusConfigParam busConfigParam) {
+ return devcieConfig.devcieConfig(busConfigParam);
+ }
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("设备下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List busConfigList) {
+ return devcieConfig.gasBatchConfig(busConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return devcieConfig.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceStatusController.java b/src/main/java/com/casic/controller/DeviceStatusController.java
new file mode 100644
index 0000000..8d6d05c
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceStatusController.java
@@ -0,0 +1,74 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.DataGasConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDeviceService;
+import com.casic.util.ExportExcelUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备管理")
+public class DeviceStatusController extends ExportExcelUtil {
+
+ private final GasDeviceService gasDeviceService;
+
+ @RequestMapping("/status/config")
+ @ApiOperation("状态下发查询")
+ public ResponseData gasStatusConfig(@RequestBody List dataGasConfigList) {
+ return gasDeviceService.devcieStatusConfig(dataGasConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "keywords", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false)
+ })
+ @ApiOperation("设备列表导出")
+ @RequestMapping(value = "/device/export")
+ public void deviceDataExport(String keywords, String beginTime, String endTime) throws IOException {
+ List deviceDataExcelDtos = gasDeviceService.getDevicieList(beginTime, endTime, keywords);
+ super.exportExcel(NbDevice.class, deviceDataExcelDtos, "设备列表.xlsx");
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "emptyStatus", value = "空状态(查true,不查false)", required = true),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备分页列表")
+ @RequestMapping(value = "/device/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "emptyStatus", required = true) Boolean emptyStatus,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDeviceService.getDevicieListPage(devcode, beginTime, endTime, currentIndex, pageSize,emptyStatus,sortDevcode);
+ }
+
+ @RequestMapping("/device/dict")
+ @ApiOperation("设备字典列表")
+ public ResponseData> deviceDict() {
+ return gasDeviceService.deviceDict();
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/GasDataRecvMapper.java b/src/main/java/com/casic/dao/GasDataRecvMapper.java
new file mode 100644
index 0000000..558996b
--- /dev/null
+++ b/src/main/java/com/casic/dao/GasDataRecvMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.LucencyGasData;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Date;
+
+@Mapper
+public interface GasDataRecvMapper extends BaseMapper {
+
+
+ @Update("UPDATE lucency_gas_data " +
+ "SET devcode=#{devcode} " +
+ "WHERE imei=#{imei} ")
+ Integer updateData(@Param("imei") String imei, @Param("devcode") String devcode);
+
+
+ @Insert("insert into lucency_gas_data(devcode,tenant_id,device_id,data_value,uptime,imei,logtime) " +
+ "values(#{devcode},#{tenantId},#{deviceId},#{ch4},#{uptime},#{imei},#{logtime}) ")
+ Integer addData(@Param("devcode") String devcode, @Param("tenantId") String tenantId,
+ @Param("deviceId") String deviceId, @Param("imei") String imei,
+ @Param("uptime") Date time, @Param("ch4") String ch4,
+ @Param("logtime") Date logtime);
+}
diff --git a/src/main/java/com/casic/dao/NbAlarmConfigMapper.java b/src/main/java/com/casic/dao/NbAlarmConfigMapper.java
new file mode 100644
index 0000000..a9454dd
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbAlarmConfigMapper.java
@@ -0,0 +1,18 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbAlarmConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface NbAlarmConfigMapper extends BaseMapper {
+
+ @Update("UPDATE nb_alarm_config " +
+ "SET status= #{configMsg} " +
+ "WHERE device_id=#{deviceId} " +
+ "AND status='未下发' ")
+ Integer configStatusData(@Param("configMsg") String configMsg,
+ @Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbConfigMapper.java b/src/main/java/com/casic/dao/NbConfigMapper.java
new file mode 100644
index 0000000..801a4f7
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbConfigMapper.java
@@ -0,0 +1,19 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface NbConfigMapper extends BaseMapper {
+
+
+ @Update("UPDATE nb_config " +
+ "SET status= #{configMsg} " +
+ "WHERE device_id=#{deviceId} " +
+ "AND status='未下发' ")
+ Integer configStatusData(@Param("configMsg") String configMsg,
+ @Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbDeviceMapper.java b/src/main/java/com/casic/dao/NbDeviceMapper.java
new file mode 100644
index 0000000..7d33eb3
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbDeviceMapper.java
@@ -0,0 +1,45 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbDevice;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Map;
+
+@Mapper
+public interface NbDeviceMapper extends BaseMapper {
+
+ @Select("delete " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ Integer deleteDeviceByImei(@Param("imei") String imei);
+
+ @Select("select id,device_id " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ Map getDeviceByImei(@Param("imei") String imei);
+
+ @Update("update nb_device " +
+ "device_id=#{deviceId} " +
+ "where imei=#{imei} ")
+ Integer setDeviceIdByImei(@Param("imei") String imei, @Param("deviceId") String deviceId);
+
+ @Select("select devcode " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ String getDevcodeByImei(@Param("imei") String imei);
+
+
+ @Update("update nb_device " +
+ "set recent_conf=#{recentConf} " +
+ "where device_id=#{deviceId} ")
+ Integer updateRecentByDevciceId (@Param("deviceId") String deviceId,@Param("recentConf") String recentConf);
+
+ @Select("select recent_conf " +
+ "from nb_device " +
+ "where device_id=#{deviceId} ")
+ String getRecentByDevciceId (@Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbParamConfigMapper.java b/src/main/java/com/casic/dao/NbParamConfigMapper.java
new file mode 100644
index 0000000..468e05b
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbParamConfigMapper.java
@@ -0,0 +1,7 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbParamConfig;
+
+public interface NbParamConfigMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/casic/entity/LucencyGasData.java b/src/main/java/com/casic/entity/LucencyGasData.java
new file mode 100644
index 0000000..b49c4de
--- /dev/null
+++ b/src/main/java/com/casic/entity/LucencyGasData.java
@@ -0,0 +1,61 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Builder
+@Data
+@ApiModel(value = "LucencyGasData", description = "燃气列表")
+@TableName("lucency_gas_data")
+public class LucencyGasData {
+ @TableId(type = IdType.AUTO)
+ @ApiModelProperty(notes = "透传燃气数据id", dataType = "Long")
+ private Long id;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ @TableField("devcode")
+ private String devcode;
+ @ApiModelProperty(notes = "tenantId", dataType = "Long")
+ @TableField("tenant_id")
+ private Long tenantId;
+ @ApiModelProperty(notes = "信号强度", dataType = "String")
+ @TableField("signals")
+ private String signals;
+ @ApiModelProperty(notes = "可燃气体高报", dataType = "String")
+ @TableField("chha")
+ private String chha;
+ @ApiModelProperty(notes = "可燃气体高高报", dataType = "String")
+ @TableField("chhha")
+ private String chhha;
+ @ApiModelProperty(notes = "电量", dataType = "Double")
+ @TableField("cell")
+ private Double cell;
+ @ApiModelProperty(notes = "燃气浓度", dataType = "String")
+ @TableField("data_value")
+ private String dataValue;
+ @ApiModelProperty(notes = "电信平台注册主键", dataType = "String")
+ @TableField("device_id")
+ private String deviceId;
+ @ApiModelProperty(notes = "记录时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ @TableField("logtime")
+ private Date logtime;
+ @ApiModelProperty(notes = "采集时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ @TableField("uptime")
+ private Date uptime;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ @TableField("imei")
+ private String imei;
+
+
+}
diff --git a/src/main/java/com/casic/entity/NbAlarmConfig.java b/src/main/java/com/casic/entity/NbAlarmConfig.java
new file mode 100644
index 0000000..61ac907
--- /dev/null
+++ b/src/main/java/com/casic/entity/NbAlarmConfig.java
@@ -0,0 +1,36 @@
+package com.casic.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@Builder
+@ApiModel(value = "NbAlarmConfig", description = "报警下发配置")
+@TableName("nb_alarm_config")
+public class NbAlarmConfig {
+ @ApiModelProperty(notes = "主键", dataType = "String")
+ @TableId(type = IdType.AUTO)
+ private String id;
+ @ApiModelProperty(notes = "设备状态", dataType = "String")
+ private String status;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ private String devcode;
+ @ApiModelProperty(notes = "NB平台主键", dataType = "String")
+ private String deviceId;
+ @ApiModelProperty(notes = "记录时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ private Date logtime;
+ @ApiModelProperty(notes = "报警采集周期", dataType = "String")
+ private String alarmperiod;
+ @ApiModelProperty(notes = "报警次数", dataType = "Date")
+ private String alarmcount;
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/src/main/java/com/casic/config/AEPParamConfig.java b/src/main/java/com/casic/config/AEPParamConfig.java
new file mode 100644
index 0000000..349d4b2
--- /dev/null
+++ b/src/main/java/com/casic/config/AEPParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class AEPParamConfig {
+
+ @Value("${nb.app.key}")
+ private String appKey;
+ @Value("${nb.app.secret}")
+ private String appSecret;
+ @Value("${nb.gas.url}")
+ private String aepUrl;
+ @Value("${nb.gas.product-id}")
+ private String productId;
+ @Value("${nb.gas.MasterKey}")
+ private String masterKey;
+}
diff --git a/src/main/java/com/casic/config/CodeGenerator.java b/src/main/java/com/casic/config/CodeGenerator.java
new file mode 100644
index 0000000..ca10d95
--- /dev/null
+++ b/src/main/java/com/casic/config/CodeGenerator.java
@@ -0,0 +1,110 @@
+//package com.casic.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.annotation.FieldFill;
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+//import com.baomidou.mybatisplus.generator.AutoGenerator;
+//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+//import com.baomidou.mybatisplus.generator.config.PackageConfig;
+//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+//import com.baomidou.mybatisplus.generator.config.po.TableFill;
+//import com.baomidou.mybatisplus.generator.config.rules.DateType;
+//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+//import org.apache.commons.lang3.StringUtils;
+//
+//import java.util.ArrayList;
+//import java.util.Scanner;
+//
+//public class CodeGenerator {
+//
+//
+// public static String scanner(String tip) {
+// Scanner scanner = new Scanner(System.in);
+// StringBuilder help = new StringBuilder();
+// help.append("请输入" + tip + ":");
+// System.out.println(help.toString());
+// if (scanner.hasNext()) {
+// String ipt = scanner.next();
+// if (StringUtils.isNotBlank(ipt)) {
+// return ipt;
+// }
+// }
+// throw new MybatisPlusException("请输入正确的" + tip + "!");
+// }
+//
+//
+//
+//
+//
+// public static void main(String[] args) {
+// // 代码生成器
+// AutoGenerator mpg = new AutoGenerator();
+//
+// // 全局配置
+// GlobalConfig gc = new GlobalConfig();
+// String projectPath = System.getProperty("user.dir");
+// gc.setOutputDir(projectPath + "/src/main/java");//设置代码生成路径
+// gc.setFileOverride(true);//是否覆盖以前文件
+// gc.setOpen(false);//是否打开生成目录
+// gc.setAuthor("yixin");//设置项目作者名称
+// gc.setIdType(IdType.AUTO);//设置主键策略
+// gc.setBaseResultMap(true);//生成基本ResultMap
+// gc.setBaseColumnList(true);//生成基本ColumnList
+// gc.setServiceName("%sService");//去掉服务默认前缀
+// gc.setDateType(DateType.ONLY_DATE);//设置时间类型
+// mpg.setGlobalConfig(gc);
+//
+// // 数据源配置
+// DataSourceConfig dsc = new DataSourceConfig();
+// dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
+// dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+// dsc.setUsername("root");
+// dsc.setPassword("123456");
+// mpg.setDataSource(dsc);
+//
+// // 包配置
+// PackageConfig pc = new PackageConfig();
+// pc.setParent("com.yixin");
+// pc.setMapper("mapper");
+// pc.setXml("mapper.xml");
+// pc.setEntity("pojo");
+// pc.setService("service");
+// pc.setServiceImpl("service.impl");
+// pc.setController("controller");
+// mpg.setPackageInfo(pc);
+//
+// // 策略配置
+// StrategyConfig sc = new StrategyConfig();
+// sc.setNaming(NamingStrategy.underline_to_camel);
+// sc.setColumnNaming(NamingStrategy.underline_to_camel);
+// sc.setEntityLombokModel(true);//自动lombok
+// sc.setRestControllerStyle(true);
+// sc.setControllerMappingHyphenStyle(true);
+//
+// sc.setLogicDeleteFieldName("deleted");//设置逻辑删除
+//
+// //设置自动填充配置
+// TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);
+// TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
+// ArrayList tableFills=new ArrayList<>();
+// tableFills.add(gmt_create);
+// tableFills.add(gmt_modified);
+// sc.setTableFillList(tableFills);
+//
+// //乐观锁
+// sc.setVersionFieldName("version");
+// sc.setRestControllerStyle(true);//驼峰命名
+//
+//
+//
+// // sc.setTablePrefix("tbl_"); 设置表名前缀
+// sc.setInclude(scanner("表名,多个英文逗号分割").split(","));
+// mpg.setStrategy(sc);
+//
+// // 生成代码
+// mpg.execute();
+// }
+//
+//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
new file mode 100644
index 0000000..7d19680
--- /dev/null
+++ b/src/main/java/com/casic/config/CorsConfig.java
@@ -0,0 +1,31 @@
+package com.casic.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * 基础框架 - 跨域请求配置
+ */
+@Configuration
+public class CorsConfig {
+ @Bean
+ public CorsFilter corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", buildConfig());
+ return new CorsFilter(source);
+ }
+
+ private CorsConfiguration buildConfig() {
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ // 1允许任何域名使用
+ corsConfiguration.addAllowedOrigin("*");
+ // 2允许任何头
+ corsConfiguration.addAllowedHeader("*");
+ // 3允许任何方法(post、get等)
+ corsConfiguration.addAllowedMethod("*");
+ return corsConfiguration;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
new file mode 100644
index 0000000..bb4c9ff
--- /dev/null
+++ b/src/main/java/com/casic/config/Knife4jConfiguration.java
@@ -0,0 +1,38 @@
+package com.casic.config;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+@Configuration
+@EnableKnife4j
+public class Knife4jConfiguration {
+
+ @Value(value = "${swagger.enable}")
+ public boolean enable;
+ @Value(value = "${swagger.groupName}")
+ public String groupName;
+
+ @Bean(value = "dockerBean")
+ public Docket dockerBean() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(new ApiInfoBuilder()
+ //描述字段支持Markdown语法
+ .description("# Knife4j RESTful APIs")
+ .termsOfServiceUrl("https://doc.casic.com/")
+ .version("1.0")
+ .build())
+ //分组名称
+ .groupName(groupName)
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("com.casic"))
+ .paths(PathSelectors.any()).build().enable(enable);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/MybatisPlusConfig.java b/src/main/java/com/casic/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..58fd3b1
--- /dev/null
+++ b/src/main/java/com/casic/config/MybatisPlusConfig.java
@@ -0,0 +1,18 @@
+package com.casic.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(){
+ MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+}
+
diff --git a/src/main/java/com/casic/controller/AlarmConfigController.java b/src/main/java/com/casic/controller/AlarmConfigController.java
new file mode 100644
index 0000000..85d965a
--- /dev/null
+++ b/src/main/java/com/casic/controller/AlarmConfigController.java
@@ -0,0 +1,57 @@
+package com.casic.controller;
+
+import com.casic.entity.NbAlarmConfig;
+import com.casic.entity.NbDevice;
+import com.casic.model.AlarmConfigParam;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.AlarmConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/alarm")
+@Slf4j
+@Api(tags = "报警配置")
+public class AlarmConfigController {
+
+ private final AlarmConfigService alarmConfigService;
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("报警下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List alarmConfigParamList) {
+ return alarmConfigService.gasBatchConfig(alarmConfigParamList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("报警配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return alarmConfigService.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DataGasController.java b/src/main/java/com/casic/controller/DataGasController.java
new file mode 100644
index 0000000..12ca603
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataGasController.java
@@ -0,0 +1,61 @@
+package com.casic.controller;
+
+import com.casic.entity.LucencyGasData;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDataService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/gas")
+@Api(tags = "数据列表")
+public class DataGasController {
+
+ @Resource
+ private GasDataService gasDataService;
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("数据查询列表-单记录")
+ @RequestMapping("/list-page")
+ public ResponseData> getGasDataList(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasDataList(devcode, beginTime, endTime, currentIndex, pageSize,sortDevcode);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备历史数据列表")
+ @RequestMapping("/devcode/list")
+ public ResponseData> getGasHistoryList(@RequestParam(value = "devcode", required = true) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasHistoryList(devcode, beginTime, endTime, currentIndex, pageSize);
+ }
+
+
+
+}
diff --git a/src/main/java/com/casic/controller/DataRecvController.java b/src/main/java/com/casic/controller/DataRecvController.java
new file mode 100644
index 0000000..3655480
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataRecvController.java
@@ -0,0 +1,31 @@
+package com.casic.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.casic.service.GasDataRecvService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Api(tags = "数据接收")
+@Slf4j
+public class DataRecvController {
+
+ private final GasDataRecvService gasDataRecvService;
+
+ @ApiOperation("数据接收接口,接收三码、实时数据,自动增添设备,前端不需要实现")
+ @RequestMapping("/gas/recv")
+ public Object gasRecv(@RequestBody Map recvDataMap) {
+ log.error("--------" + JSONObject.toJSONString(recvDataMap));
+ return gasDataRecvService.saveRev(recvDataMap);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceConfigController.java b/src/main/java/com/casic/controller/DeviceConfigController.java
new file mode 100644
index 0000000..613d205
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceConfigController.java
@@ -0,0 +1,62 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备配置")
+public class DeviceConfigController {
+
+ private final DeviceConfigService devcieConfig;
+
+ @RequestMapping("/device/config")
+ @ApiOperation("设备下发配置")
+ public ResponseData gasDeviceConfig(@RequestBody BusConfigParam busConfigParam) {
+ return devcieConfig.devcieConfig(busConfigParam);
+ }
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("设备下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List busConfigList) {
+ return devcieConfig.gasBatchConfig(busConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return devcieConfig.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceStatusController.java b/src/main/java/com/casic/controller/DeviceStatusController.java
new file mode 100644
index 0000000..8d6d05c
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceStatusController.java
@@ -0,0 +1,74 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.DataGasConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDeviceService;
+import com.casic.util.ExportExcelUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备管理")
+public class DeviceStatusController extends ExportExcelUtil {
+
+ private final GasDeviceService gasDeviceService;
+
+ @RequestMapping("/status/config")
+ @ApiOperation("状态下发查询")
+ public ResponseData gasStatusConfig(@RequestBody List dataGasConfigList) {
+ return gasDeviceService.devcieStatusConfig(dataGasConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "keywords", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false)
+ })
+ @ApiOperation("设备列表导出")
+ @RequestMapping(value = "/device/export")
+ public void deviceDataExport(String keywords, String beginTime, String endTime) throws IOException {
+ List deviceDataExcelDtos = gasDeviceService.getDevicieList(beginTime, endTime, keywords);
+ super.exportExcel(NbDevice.class, deviceDataExcelDtos, "设备列表.xlsx");
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "emptyStatus", value = "空状态(查true,不查false)", required = true),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备分页列表")
+ @RequestMapping(value = "/device/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "emptyStatus", required = true) Boolean emptyStatus,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDeviceService.getDevicieListPage(devcode, beginTime, endTime, currentIndex, pageSize,emptyStatus,sortDevcode);
+ }
+
+ @RequestMapping("/device/dict")
+ @ApiOperation("设备字典列表")
+ public ResponseData> deviceDict() {
+ return gasDeviceService.deviceDict();
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/GasDataRecvMapper.java b/src/main/java/com/casic/dao/GasDataRecvMapper.java
new file mode 100644
index 0000000..558996b
--- /dev/null
+++ b/src/main/java/com/casic/dao/GasDataRecvMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.LucencyGasData;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Date;
+
+@Mapper
+public interface GasDataRecvMapper extends BaseMapper {
+
+
+ @Update("UPDATE lucency_gas_data " +
+ "SET devcode=#{devcode} " +
+ "WHERE imei=#{imei} ")
+ Integer updateData(@Param("imei") String imei, @Param("devcode") String devcode);
+
+
+ @Insert("insert into lucency_gas_data(devcode,tenant_id,device_id,data_value,uptime,imei,logtime) " +
+ "values(#{devcode},#{tenantId},#{deviceId},#{ch4},#{uptime},#{imei},#{logtime}) ")
+ Integer addData(@Param("devcode") String devcode, @Param("tenantId") String tenantId,
+ @Param("deviceId") String deviceId, @Param("imei") String imei,
+ @Param("uptime") Date time, @Param("ch4") String ch4,
+ @Param("logtime") Date logtime);
+}
diff --git a/src/main/java/com/casic/dao/NbAlarmConfigMapper.java b/src/main/java/com/casic/dao/NbAlarmConfigMapper.java
new file mode 100644
index 0000000..a9454dd
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbAlarmConfigMapper.java
@@ -0,0 +1,18 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbAlarmConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface NbAlarmConfigMapper extends BaseMapper {
+
+ @Update("UPDATE nb_alarm_config " +
+ "SET status= #{configMsg} " +
+ "WHERE device_id=#{deviceId} " +
+ "AND status='未下发' ")
+ Integer configStatusData(@Param("configMsg") String configMsg,
+ @Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbConfigMapper.java b/src/main/java/com/casic/dao/NbConfigMapper.java
new file mode 100644
index 0000000..801a4f7
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbConfigMapper.java
@@ -0,0 +1,19 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface NbConfigMapper extends BaseMapper {
+
+
+ @Update("UPDATE nb_config " +
+ "SET status= #{configMsg} " +
+ "WHERE device_id=#{deviceId} " +
+ "AND status='未下发' ")
+ Integer configStatusData(@Param("configMsg") String configMsg,
+ @Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbDeviceMapper.java b/src/main/java/com/casic/dao/NbDeviceMapper.java
new file mode 100644
index 0000000..7d33eb3
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbDeviceMapper.java
@@ -0,0 +1,45 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbDevice;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Map;
+
+@Mapper
+public interface NbDeviceMapper extends BaseMapper {
+
+ @Select("delete " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ Integer deleteDeviceByImei(@Param("imei") String imei);
+
+ @Select("select id,device_id " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ Map getDeviceByImei(@Param("imei") String imei);
+
+ @Update("update nb_device " +
+ "device_id=#{deviceId} " +
+ "where imei=#{imei} ")
+ Integer setDeviceIdByImei(@Param("imei") String imei, @Param("deviceId") String deviceId);
+
+ @Select("select devcode " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ String getDevcodeByImei(@Param("imei") String imei);
+
+
+ @Update("update nb_device " +
+ "set recent_conf=#{recentConf} " +
+ "where device_id=#{deviceId} ")
+ Integer updateRecentByDevciceId (@Param("deviceId") String deviceId,@Param("recentConf") String recentConf);
+
+ @Select("select recent_conf " +
+ "from nb_device " +
+ "where device_id=#{deviceId} ")
+ String getRecentByDevciceId (@Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbParamConfigMapper.java b/src/main/java/com/casic/dao/NbParamConfigMapper.java
new file mode 100644
index 0000000..468e05b
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbParamConfigMapper.java
@@ -0,0 +1,7 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbParamConfig;
+
+public interface NbParamConfigMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/casic/entity/LucencyGasData.java b/src/main/java/com/casic/entity/LucencyGasData.java
new file mode 100644
index 0000000..b49c4de
--- /dev/null
+++ b/src/main/java/com/casic/entity/LucencyGasData.java
@@ -0,0 +1,61 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Builder
+@Data
+@ApiModel(value = "LucencyGasData", description = "燃气列表")
+@TableName("lucency_gas_data")
+public class LucencyGasData {
+ @TableId(type = IdType.AUTO)
+ @ApiModelProperty(notes = "透传燃气数据id", dataType = "Long")
+ private Long id;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ @TableField("devcode")
+ private String devcode;
+ @ApiModelProperty(notes = "tenantId", dataType = "Long")
+ @TableField("tenant_id")
+ private Long tenantId;
+ @ApiModelProperty(notes = "信号强度", dataType = "String")
+ @TableField("signals")
+ private String signals;
+ @ApiModelProperty(notes = "可燃气体高报", dataType = "String")
+ @TableField("chha")
+ private String chha;
+ @ApiModelProperty(notes = "可燃气体高高报", dataType = "String")
+ @TableField("chhha")
+ private String chhha;
+ @ApiModelProperty(notes = "电量", dataType = "Double")
+ @TableField("cell")
+ private Double cell;
+ @ApiModelProperty(notes = "燃气浓度", dataType = "String")
+ @TableField("data_value")
+ private String dataValue;
+ @ApiModelProperty(notes = "电信平台注册主键", dataType = "String")
+ @TableField("device_id")
+ private String deviceId;
+ @ApiModelProperty(notes = "记录时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ @TableField("logtime")
+ private Date logtime;
+ @ApiModelProperty(notes = "采集时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ @TableField("uptime")
+ private Date uptime;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ @TableField("imei")
+ private String imei;
+
+
+}
diff --git a/src/main/java/com/casic/entity/NbAlarmConfig.java b/src/main/java/com/casic/entity/NbAlarmConfig.java
new file mode 100644
index 0000000..61ac907
--- /dev/null
+++ b/src/main/java/com/casic/entity/NbAlarmConfig.java
@@ -0,0 +1,36 @@
+package com.casic.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@Builder
+@ApiModel(value = "NbAlarmConfig", description = "报警下发配置")
+@TableName("nb_alarm_config")
+public class NbAlarmConfig {
+ @ApiModelProperty(notes = "主键", dataType = "String")
+ @TableId(type = IdType.AUTO)
+ private String id;
+ @ApiModelProperty(notes = "设备状态", dataType = "String")
+ private String status;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ private String devcode;
+ @ApiModelProperty(notes = "NB平台主键", dataType = "String")
+ private String deviceId;
+ @ApiModelProperty(notes = "记录时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ private Date logtime;
+ @ApiModelProperty(notes = "报警采集周期", dataType = "String")
+ private String alarmperiod;
+ @ApiModelProperty(notes = "报警次数", dataType = "Date")
+ private String alarmcount;
+}
diff --git a/src/main/java/com/casic/entity/NbConfig.java b/src/main/java/com/casic/entity/NbConfig.java
new file mode 100644
index 0000000..e1ffc25
--- /dev/null
+++ b/src/main/java/com/casic/entity/NbConfig.java
@@ -0,0 +1,37 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@Builder
+@ApiModel(value = "nbConfig", description = "设备配置")
+@TableName("nb_config")
+public class NbConfig{
+ @ApiModelProperty(notes = "主键", dataType = "String")
+ @TableId(type = IdType.AUTO)
+ private String id;
+ @ApiModelProperty(notes = "上传周期", dataType = "String")
+ private String upload;
+ @ApiModelProperty(notes = "收集周期", dataType = "String")
+ private String collect;
+ @ApiModelProperty(notes = "重传次数", dataType = "String")
+ private String retry;
+ @ApiModelProperty(notes = "设备状态", dataType = "String")
+ private String status;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ private String devcode;
+ @ApiModelProperty(notes = "NB平台主键", dataType = "String")
+ private String deviceId;
+ @ApiModelProperty(notes = "记录时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ private Date logtime;
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/src/main/java/com/casic/config/AEPParamConfig.java b/src/main/java/com/casic/config/AEPParamConfig.java
new file mode 100644
index 0000000..349d4b2
--- /dev/null
+++ b/src/main/java/com/casic/config/AEPParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class AEPParamConfig {
+
+ @Value("${nb.app.key}")
+ private String appKey;
+ @Value("${nb.app.secret}")
+ private String appSecret;
+ @Value("${nb.gas.url}")
+ private String aepUrl;
+ @Value("${nb.gas.product-id}")
+ private String productId;
+ @Value("${nb.gas.MasterKey}")
+ private String masterKey;
+}
diff --git a/src/main/java/com/casic/config/CodeGenerator.java b/src/main/java/com/casic/config/CodeGenerator.java
new file mode 100644
index 0000000..ca10d95
--- /dev/null
+++ b/src/main/java/com/casic/config/CodeGenerator.java
@@ -0,0 +1,110 @@
+//package com.casic.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.annotation.FieldFill;
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+//import com.baomidou.mybatisplus.generator.AutoGenerator;
+//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+//import com.baomidou.mybatisplus.generator.config.PackageConfig;
+//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+//import com.baomidou.mybatisplus.generator.config.po.TableFill;
+//import com.baomidou.mybatisplus.generator.config.rules.DateType;
+//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+//import org.apache.commons.lang3.StringUtils;
+//
+//import java.util.ArrayList;
+//import java.util.Scanner;
+//
+//public class CodeGenerator {
+//
+//
+// public static String scanner(String tip) {
+// Scanner scanner = new Scanner(System.in);
+// StringBuilder help = new StringBuilder();
+// help.append("请输入" + tip + ":");
+// System.out.println(help.toString());
+// if (scanner.hasNext()) {
+// String ipt = scanner.next();
+// if (StringUtils.isNotBlank(ipt)) {
+// return ipt;
+// }
+// }
+// throw new MybatisPlusException("请输入正确的" + tip + "!");
+// }
+//
+//
+//
+//
+//
+// public static void main(String[] args) {
+// // 代码生成器
+// AutoGenerator mpg = new AutoGenerator();
+//
+// // 全局配置
+// GlobalConfig gc = new GlobalConfig();
+// String projectPath = System.getProperty("user.dir");
+// gc.setOutputDir(projectPath + "/src/main/java");//设置代码生成路径
+// gc.setFileOverride(true);//是否覆盖以前文件
+// gc.setOpen(false);//是否打开生成目录
+// gc.setAuthor("yixin");//设置项目作者名称
+// gc.setIdType(IdType.AUTO);//设置主键策略
+// gc.setBaseResultMap(true);//生成基本ResultMap
+// gc.setBaseColumnList(true);//生成基本ColumnList
+// gc.setServiceName("%sService");//去掉服务默认前缀
+// gc.setDateType(DateType.ONLY_DATE);//设置时间类型
+// mpg.setGlobalConfig(gc);
+//
+// // 数据源配置
+// DataSourceConfig dsc = new DataSourceConfig();
+// dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
+// dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+// dsc.setUsername("root");
+// dsc.setPassword("123456");
+// mpg.setDataSource(dsc);
+//
+// // 包配置
+// PackageConfig pc = new PackageConfig();
+// pc.setParent("com.yixin");
+// pc.setMapper("mapper");
+// pc.setXml("mapper.xml");
+// pc.setEntity("pojo");
+// pc.setService("service");
+// pc.setServiceImpl("service.impl");
+// pc.setController("controller");
+// mpg.setPackageInfo(pc);
+//
+// // 策略配置
+// StrategyConfig sc = new StrategyConfig();
+// sc.setNaming(NamingStrategy.underline_to_camel);
+// sc.setColumnNaming(NamingStrategy.underline_to_camel);
+// sc.setEntityLombokModel(true);//自动lombok
+// sc.setRestControllerStyle(true);
+// sc.setControllerMappingHyphenStyle(true);
+//
+// sc.setLogicDeleteFieldName("deleted");//设置逻辑删除
+//
+// //设置自动填充配置
+// TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);
+// TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
+// ArrayList tableFills=new ArrayList<>();
+// tableFills.add(gmt_create);
+// tableFills.add(gmt_modified);
+// sc.setTableFillList(tableFills);
+//
+// //乐观锁
+// sc.setVersionFieldName("version");
+// sc.setRestControllerStyle(true);//驼峰命名
+//
+//
+//
+// // sc.setTablePrefix("tbl_"); 设置表名前缀
+// sc.setInclude(scanner("表名,多个英文逗号分割").split(","));
+// mpg.setStrategy(sc);
+//
+// // 生成代码
+// mpg.execute();
+// }
+//
+//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
new file mode 100644
index 0000000..7d19680
--- /dev/null
+++ b/src/main/java/com/casic/config/CorsConfig.java
@@ -0,0 +1,31 @@
+package com.casic.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * 基础框架 - 跨域请求配置
+ */
+@Configuration
+public class CorsConfig {
+ @Bean
+ public CorsFilter corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", buildConfig());
+ return new CorsFilter(source);
+ }
+
+ private CorsConfiguration buildConfig() {
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ // 1允许任何域名使用
+ corsConfiguration.addAllowedOrigin("*");
+ // 2允许任何头
+ corsConfiguration.addAllowedHeader("*");
+ // 3允许任何方法(post、get等)
+ corsConfiguration.addAllowedMethod("*");
+ return corsConfiguration;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
new file mode 100644
index 0000000..bb4c9ff
--- /dev/null
+++ b/src/main/java/com/casic/config/Knife4jConfiguration.java
@@ -0,0 +1,38 @@
+package com.casic.config;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+@Configuration
+@EnableKnife4j
+public class Knife4jConfiguration {
+
+ @Value(value = "${swagger.enable}")
+ public boolean enable;
+ @Value(value = "${swagger.groupName}")
+ public String groupName;
+
+ @Bean(value = "dockerBean")
+ public Docket dockerBean() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(new ApiInfoBuilder()
+ //描述字段支持Markdown语法
+ .description("# Knife4j RESTful APIs")
+ .termsOfServiceUrl("https://doc.casic.com/")
+ .version("1.0")
+ .build())
+ //分组名称
+ .groupName(groupName)
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("com.casic"))
+ .paths(PathSelectors.any()).build().enable(enable);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/MybatisPlusConfig.java b/src/main/java/com/casic/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..58fd3b1
--- /dev/null
+++ b/src/main/java/com/casic/config/MybatisPlusConfig.java
@@ -0,0 +1,18 @@
+package com.casic.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(){
+ MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+}
+
diff --git a/src/main/java/com/casic/controller/AlarmConfigController.java b/src/main/java/com/casic/controller/AlarmConfigController.java
new file mode 100644
index 0000000..85d965a
--- /dev/null
+++ b/src/main/java/com/casic/controller/AlarmConfigController.java
@@ -0,0 +1,57 @@
+package com.casic.controller;
+
+import com.casic.entity.NbAlarmConfig;
+import com.casic.entity.NbDevice;
+import com.casic.model.AlarmConfigParam;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.AlarmConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/alarm")
+@Slf4j
+@Api(tags = "报警配置")
+public class AlarmConfigController {
+
+ private final AlarmConfigService alarmConfigService;
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("报警下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List alarmConfigParamList) {
+ return alarmConfigService.gasBatchConfig(alarmConfigParamList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("报警配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return alarmConfigService.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DataGasController.java b/src/main/java/com/casic/controller/DataGasController.java
new file mode 100644
index 0000000..12ca603
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataGasController.java
@@ -0,0 +1,61 @@
+package com.casic.controller;
+
+import com.casic.entity.LucencyGasData;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDataService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/gas")
+@Api(tags = "数据列表")
+public class DataGasController {
+
+ @Resource
+ private GasDataService gasDataService;
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("数据查询列表-单记录")
+ @RequestMapping("/list-page")
+ public ResponseData> getGasDataList(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasDataList(devcode, beginTime, endTime, currentIndex, pageSize,sortDevcode);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备历史数据列表")
+ @RequestMapping("/devcode/list")
+ public ResponseData> getGasHistoryList(@RequestParam(value = "devcode", required = true) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasHistoryList(devcode, beginTime, endTime, currentIndex, pageSize);
+ }
+
+
+
+}
diff --git a/src/main/java/com/casic/controller/DataRecvController.java b/src/main/java/com/casic/controller/DataRecvController.java
new file mode 100644
index 0000000..3655480
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataRecvController.java
@@ -0,0 +1,31 @@
+package com.casic.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.casic.service.GasDataRecvService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Api(tags = "数据接收")
+@Slf4j
+public class DataRecvController {
+
+ private final GasDataRecvService gasDataRecvService;
+
+ @ApiOperation("数据接收接口,接收三码、实时数据,自动增添设备,前端不需要实现")
+ @RequestMapping("/gas/recv")
+ public Object gasRecv(@RequestBody Map recvDataMap) {
+ log.error("--------" + JSONObject.toJSONString(recvDataMap));
+ return gasDataRecvService.saveRev(recvDataMap);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceConfigController.java b/src/main/java/com/casic/controller/DeviceConfigController.java
new file mode 100644
index 0000000..613d205
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceConfigController.java
@@ -0,0 +1,62 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备配置")
+public class DeviceConfigController {
+
+ private final DeviceConfigService devcieConfig;
+
+ @RequestMapping("/device/config")
+ @ApiOperation("设备下发配置")
+ public ResponseData gasDeviceConfig(@RequestBody BusConfigParam busConfigParam) {
+ return devcieConfig.devcieConfig(busConfigParam);
+ }
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("设备下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List busConfigList) {
+ return devcieConfig.gasBatchConfig(busConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return devcieConfig.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceStatusController.java b/src/main/java/com/casic/controller/DeviceStatusController.java
new file mode 100644
index 0000000..8d6d05c
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceStatusController.java
@@ -0,0 +1,74 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.DataGasConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDeviceService;
+import com.casic.util.ExportExcelUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备管理")
+public class DeviceStatusController extends ExportExcelUtil {
+
+ private final GasDeviceService gasDeviceService;
+
+ @RequestMapping("/status/config")
+ @ApiOperation("状态下发查询")
+ public ResponseData gasStatusConfig(@RequestBody List dataGasConfigList) {
+ return gasDeviceService.devcieStatusConfig(dataGasConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "keywords", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false)
+ })
+ @ApiOperation("设备列表导出")
+ @RequestMapping(value = "/device/export")
+ public void deviceDataExport(String keywords, String beginTime, String endTime) throws IOException {
+ List deviceDataExcelDtos = gasDeviceService.getDevicieList(beginTime, endTime, keywords);
+ super.exportExcel(NbDevice.class, deviceDataExcelDtos, "设备列表.xlsx");
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "emptyStatus", value = "空状态(查true,不查false)", required = true),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备分页列表")
+ @RequestMapping(value = "/device/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "emptyStatus", required = true) Boolean emptyStatus,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDeviceService.getDevicieListPage(devcode, beginTime, endTime, currentIndex, pageSize,emptyStatus,sortDevcode);
+ }
+
+ @RequestMapping("/device/dict")
+ @ApiOperation("设备字典列表")
+ public ResponseData> deviceDict() {
+ return gasDeviceService.deviceDict();
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/GasDataRecvMapper.java b/src/main/java/com/casic/dao/GasDataRecvMapper.java
new file mode 100644
index 0000000..558996b
--- /dev/null
+++ b/src/main/java/com/casic/dao/GasDataRecvMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.LucencyGasData;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Date;
+
+@Mapper
+public interface GasDataRecvMapper extends BaseMapper {
+
+
+ @Update("UPDATE lucency_gas_data " +
+ "SET devcode=#{devcode} " +
+ "WHERE imei=#{imei} ")
+ Integer updateData(@Param("imei") String imei, @Param("devcode") String devcode);
+
+
+ @Insert("insert into lucency_gas_data(devcode,tenant_id,device_id,data_value,uptime,imei,logtime) " +
+ "values(#{devcode},#{tenantId},#{deviceId},#{ch4},#{uptime},#{imei},#{logtime}) ")
+ Integer addData(@Param("devcode") String devcode, @Param("tenantId") String tenantId,
+ @Param("deviceId") String deviceId, @Param("imei") String imei,
+ @Param("uptime") Date time, @Param("ch4") String ch4,
+ @Param("logtime") Date logtime);
+}
diff --git a/src/main/java/com/casic/dao/NbAlarmConfigMapper.java b/src/main/java/com/casic/dao/NbAlarmConfigMapper.java
new file mode 100644
index 0000000..a9454dd
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbAlarmConfigMapper.java
@@ -0,0 +1,18 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbAlarmConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface NbAlarmConfigMapper extends BaseMapper {
+
+ @Update("UPDATE nb_alarm_config " +
+ "SET status= #{configMsg} " +
+ "WHERE device_id=#{deviceId} " +
+ "AND status='未下发' ")
+ Integer configStatusData(@Param("configMsg") String configMsg,
+ @Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbConfigMapper.java b/src/main/java/com/casic/dao/NbConfigMapper.java
new file mode 100644
index 0000000..801a4f7
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbConfigMapper.java
@@ -0,0 +1,19 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface NbConfigMapper extends BaseMapper {
+
+
+ @Update("UPDATE nb_config " +
+ "SET status= #{configMsg} " +
+ "WHERE device_id=#{deviceId} " +
+ "AND status='未下发' ")
+ Integer configStatusData(@Param("configMsg") String configMsg,
+ @Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbDeviceMapper.java b/src/main/java/com/casic/dao/NbDeviceMapper.java
new file mode 100644
index 0000000..7d33eb3
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbDeviceMapper.java
@@ -0,0 +1,45 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbDevice;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Map;
+
+@Mapper
+public interface NbDeviceMapper extends BaseMapper {
+
+ @Select("delete " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ Integer deleteDeviceByImei(@Param("imei") String imei);
+
+ @Select("select id,device_id " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ Map getDeviceByImei(@Param("imei") String imei);
+
+ @Update("update nb_device " +
+ "device_id=#{deviceId} " +
+ "where imei=#{imei} ")
+ Integer setDeviceIdByImei(@Param("imei") String imei, @Param("deviceId") String deviceId);
+
+ @Select("select devcode " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ String getDevcodeByImei(@Param("imei") String imei);
+
+
+ @Update("update nb_device " +
+ "set recent_conf=#{recentConf} " +
+ "where device_id=#{deviceId} ")
+ Integer updateRecentByDevciceId (@Param("deviceId") String deviceId,@Param("recentConf") String recentConf);
+
+ @Select("select recent_conf " +
+ "from nb_device " +
+ "where device_id=#{deviceId} ")
+ String getRecentByDevciceId (@Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbParamConfigMapper.java b/src/main/java/com/casic/dao/NbParamConfigMapper.java
new file mode 100644
index 0000000..468e05b
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbParamConfigMapper.java
@@ -0,0 +1,7 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbParamConfig;
+
+public interface NbParamConfigMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/casic/entity/LucencyGasData.java b/src/main/java/com/casic/entity/LucencyGasData.java
new file mode 100644
index 0000000..b49c4de
--- /dev/null
+++ b/src/main/java/com/casic/entity/LucencyGasData.java
@@ -0,0 +1,61 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Builder
+@Data
+@ApiModel(value = "LucencyGasData", description = "燃气列表")
+@TableName("lucency_gas_data")
+public class LucencyGasData {
+ @TableId(type = IdType.AUTO)
+ @ApiModelProperty(notes = "透传燃气数据id", dataType = "Long")
+ private Long id;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ @TableField("devcode")
+ private String devcode;
+ @ApiModelProperty(notes = "tenantId", dataType = "Long")
+ @TableField("tenant_id")
+ private Long tenantId;
+ @ApiModelProperty(notes = "信号强度", dataType = "String")
+ @TableField("signals")
+ private String signals;
+ @ApiModelProperty(notes = "可燃气体高报", dataType = "String")
+ @TableField("chha")
+ private String chha;
+ @ApiModelProperty(notes = "可燃气体高高报", dataType = "String")
+ @TableField("chhha")
+ private String chhha;
+ @ApiModelProperty(notes = "电量", dataType = "Double")
+ @TableField("cell")
+ private Double cell;
+ @ApiModelProperty(notes = "燃气浓度", dataType = "String")
+ @TableField("data_value")
+ private String dataValue;
+ @ApiModelProperty(notes = "电信平台注册主键", dataType = "String")
+ @TableField("device_id")
+ private String deviceId;
+ @ApiModelProperty(notes = "记录时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ @TableField("logtime")
+ private Date logtime;
+ @ApiModelProperty(notes = "采集时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ @TableField("uptime")
+ private Date uptime;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ @TableField("imei")
+ private String imei;
+
+
+}
diff --git a/src/main/java/com/casic/entity/NbAlarmConfig.java b/src/main/java/com/casic/entity/NbAlarmConfig.java
new file mode 100644
index 0000000..61ac907
--- /dev/null
+++ b/src/main/java/com/casic/entity/NbAlarmConfig.java
@@ -0,0 +1,36 @@
+package com.casic.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@Builder
+@ApiModel(value = "NbAlarmConfig", description = "报警下发配置")
+@TableName("nb_alarm_config")
+public class NbAlarmConfig {
+ @ApiModelProperty(notes = "主键", dataType = "String")
+ @TableId(type = IdType.AUTO)
+ private String id;
+ @ApiModelProperty(notes = "设备状态", dataType = "String")
+ private String status;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ private String devcode;
+ @ApiModelProperty(notes = "NB平台主键", dataType = "String")
+ private String deviceId;
+ @ApiModelProperty(notes = "记录时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ private Date logtime;
+ @ApiModelProperty(notes = "报警采集周期", dataType = "String")
+ private String alarmperiod;
+ @ApiModelProperty(notes = "报警次数", dataType = "Date")
+ private String alarmcount;
+}
diff --git a/src/main/java/com/casic/entity/NbConfig.java b/src/main/java/com/casic/entity/NbConfig.java
new file mode 100644
index 0000000..e1ffc25
--- /dev/null
+++ b/src/main/java/com/casic/entity/NbConfig.java
@@ -0,0 +1,37 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@Builder
+@ApiModel(value = "nbConfig", description = "设备配置")
+@TableName("nb_config")
+public class NbConfig{
+ @ApiModelProperty(notes = "主键", dataType = "String")
+ @TableId(type = IdType.AUTO)
+ private String id;
+ @ApiModelProperty(notes = "上传周期", dataType = "String")
+ private String upload;
+ @ApiModelProperty(notes = "收集周期", dataType = "String")
+ private String collect;
+ @ApiModelProperty(notes = "重传次数", dataType = "String")
+ private String retry;
+ @ApiModelProperty(notes = "设备状态", dataType = "String")
+ private String status;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ private String devcode;
+ @ApiModelProperty(notes = "NB平台主键", dataType = "String")
+ private String deviceId;
+ @ApiModelProperty(notes = "记录时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/NbDevice.java b/src/main/java/com/casic/entity/NbDevice.java
new file mode 100644
index 0000000..e168783
--- /dev/null
+++ b/src/main/java/com/casic/entity/NbDevice.java
@@ -0,0 +1,60 @@
+package com.casic.entity;
+
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+@Builder
+@ApiModel(value = "nbDevice", description = "燃气列表")
+@TableName("nb_device")
+public class NbDevice {
+ @TableId(type = IdType.AUTO)
+ @ApiModelProperty(notes = "透传燃气设备id", dataType = "Long")
+ private Long id;
+ @ExcelProperty("设备编号")
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ private String devcode;
+ @ExcelProperty("IMEI")
+ @ApiModelProperty(notes = "IMEI", dataType = "String")
+ private String imei;
+ @ExcelProperty("ICCID")
+ @ApiModelProperty(notes = "ICCID", dataType = "String")
+ private String iccid;
+ @ExcelProperty("设备状态")
+ @ApiModelProperty(notes = "设备状态", dataType = "String")
+ private String status;
+ @ExcelProperty("记录时间")
+ @ApiModelProperty(notes = "记录时间", dataType = "String")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ private Date logtime;
+ @ApiModelProperty(notes = "NB平台设备编号", dataType = "String")
+ private String deviceId;
+ @ApiModelProperty(notes = "有效值", dataType = "String")
+ private Integer valid;
+ @ApiModelProperty(notes = "产品id", dataType = "String")
+ private String productId;
+ @ApiModelProperty(notes ="就近下发配置操作 1、通用状态下发配置 2、报警配置", dataType = "String")
+ private String recentConf;
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/src/main/java/com/casic/config/AEPParamConfig.java b/src/main/java/com/casic/config/AEPParamConfig.java
new file mode 100644
index 0000000..349d4b2
--- /dev/null
+++ b/src/main/java/com/casic/config/AEPParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class AEPParamConfig {
+
+ @Value("${nb.app.key}")
+ private String appKey;
+ @Value("${nb.app.secret}")
+ private String appSecret;
+ @Value("${nb.gas.url}")
+ private String aepUrl;
+ @Value("${nb.gas.product-id}")
+ private String productId;
+ @Value("${nb.gas.MasterKey}")
+ private String masterKey;
+}
diff --git a/src/main/java/com/casic/config/CodeGenerator.java b/src/main/java/com/casic/config/CodeGenerator.java
new file mode 100644
index 0000000..ca10d95
--- /dev/null
+++ b/src/main/java/com/casic/config/CodeGenerator.java
@@ -0,0 +1,110 @@
+//package com.casic.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.annotation.FieldFill;
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+//import com.baomidou.mybatisplus.generator.AutoGenerator;
+//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+//import com.baomidou.mybatisplus.generator.config.PackageConfig;
+//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+//import com.baomidou.mybatisplus.generator.config.po.TableFill;
+//import com.baomidou.mybatisplus.generator.config.rules.DateType;
+//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+//import org.apache.commons.lang3.StringUtils;
+//
+//import java.util.ArrayList;
+//import java.util.Scanner;
+//
+//public class CodeGenerator {
+//
+//
+// public static String scanner(String tip) {
+// Scanner scanner = new Scanner(System.in);
+// StringBuilder help = new StringBuilder();
+// help.append("请输入" + tip + ":");
+// System.out.println(help.toString());
+// if (scanner.hasNext()) {
+// String ipt = scanner.next();
+// if (StringUtils.isNotBlank(ipt)) {
+// return ipt;
+// }
+// }
+// throw new MybatisPlusException("请输入正确的" + tip + "!");
+// }
+//
+//
+//
+//
+//
+// public static void main(String[] args) {
+// // 代码生成器
+// AutoGenerator mpg = new AutoGenerator();
+//
+// // 全局配置
+// GlobalConfig gc = new GlobalConfig();
+// String projectPath = System.getProperty("user.dir");
+// gc.setOutputDir(projectPath + "/src/main/java");//设置代码生成路径
+// gc.setFileOverride(true);//是否覆盖以前文件
+// gc.setOpen(false);//是否打开生成目录
+// gc.setAuthor("yixin");//设置项目作者名称
+// gc.setIdType(IdType.AUTO);//设置主键策略
+// gc.setBaseResultMap(true);//生成基本ResultMap
+// gc.setBaseColumnList(true);//生成基本ColumnList
+// gc.setServiceName("%sService");//去掉服务默认前缀
+// gc.setDateType(DateType.ONLY_DATE);//设置时间类型
+// mpg.setGlobalConfig(gc);
+//
+// // 数据源配置
+// DataSourceConfig dsc = new DataSourceConfig();
+// dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
+// dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+// dsc.setUsername("root");
+// dsc.setPassword("123456");
+// mpg.setDataSource(dsc);
+//
+// // 包配置
+// PackageConfig pc = new PackageConfig();
+// pc.setParent("com.yixin");
+// pc.setMapper("mapper");
+// pc.setXml("mapper.xml");
+// pc.setEntity("pojo");
+// pc.setService("service");
+// pc.setServiceImpl("service.impl");
+// pc.setController("controller");
+// mpg.setPackageInfo(pc);
+//
+// // 策略配置
+// StrategyConfig sc = new StrategyConfig();
+// sc.setNaming(NamingStrategy.underline_to_camel);
+// sc.setColumnNaming(NamingStrategy.underline_to_camel);
+// sc.setEntityLombokModel(true);//自动lombok
+// sc.setRestControllerStyle(true);
+// sc.setControllerMappingHyphenStyle(true);
+//
+// sc.setLogicDeleteFieldName("deleted");//设置逻辑删除
+//
+// //设置自动填充配置
+// TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);
+// TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
+// ArrayList tableFills=new ArrayList<>();
+// tableFills.add(gmt_create);
+// tableFills.add(gmt_modified);
+// sc.setTableFillList(tableFills);
+//
+// //乐观锁
+// sc.setVersionFieldName("version");
+// sc.setRestControllerStyle(true);//驼峰命名
+//
+//
+//
+// // sc.setTablePrefix("tbl_"); 设置表名前缀
+// sc.setInclude(scanner("表名,多个英文逗号分割").split(","));
+// mpg.setStrategy(sc);
+//
+// // 生成代码
+// mpg.execute();
+// }
+//
+//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
new file mode 100644
index 0000000..7d19680
--- /dev/null
+++ b/src/main/java/com/casic/config/CorsConfig.java
@@ -0,0 +1,31 @@
+package com.casic.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * 基础框架 - 跨域请求配置
+ */
+@Configuration
+public class CorsConfig {
+ @Bean
+ public CorsFilter corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", buildConfig());
+ return new CorsFilter(source);
+ }
+
+ private CorsConfiguration buildConfig() {
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ // 1允许任何域名使用
+ corsConfiguration.addAllowedOrigin("*");
+ // 2允许任何头
+ corsConfiguration.addAllowedHeader("*");
+ // 3允许任何方法(post、get等)
+ corsConfiguration.addAllowedMethod("*");
+ return corsConfiguration;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
new file mode 100644
index 0000000..bb4c9ff
--- /dev/null
+++ b/src/main/java/com/casic/config/Knife4jConfiguration.java
@@ -0,0 +1,38 @@
+package com.casic.config;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+@Configuration
+@EnableKnife4j
+public class Knife4jConfiguration {
+
+ @Value(value = "${swagger.enable}")
+ public boolean enable;
+ @Value(value = "${swagger.groupName}")
+ public String groupName;
+
+ @Bean(value = "dockerBean")
+ public Docket dockerBean() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(new ApiInfoBuilder()
+ //描述字段支持Markdown语法
+ .description("# Knife4j RESTful APIs")
+ .termsOfServiceUrl("https://doc.casic.com/")
+ .version("1.0")
+ .build())
+ //分组名称
+ .groupName(groupName)
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("com.casic"))
+ .paths(PathSelectors.any()).build().enable(enable);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/MybatisPlusConfig.java b/src/main/java/com/casic/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..58fd3b1
--- /dev/null
+++ b/src/main/java/com/casic/config/MybatisPlusConfig.java
@@ -0,0 +1,18 @@
+package com.casic.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(){
+ MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+}
+
diff --git a/src/main/java/com/casic/controller/AlarmConfigController.java b/src/main/java/com/casic/controller/AlarmConfigController.java
new file mode 100644
index 0000000..85d965a
--- /dev/null
+++ b/src/main/java/com/casic/controller/AlarmConfigController.java
@@ -0,0 +1,57 @@
+package com.casic.controller;
+
+import com.casic.entity.NbAlarmConfig;
+import com.casic.entity.NbDevice;
+import com.casic.model.AlarmConfigParam;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.AlarmConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/alarm")
+@Slf4j
+@Api(tags = "报警配置")
+public class AlarmConfigController {
+
+ private final AlarmConfigService alarmConfigService;
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("报警下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List alarmConfigParamList) {
+ return alarmConfigService.gasBatchConfig(alarmConfigParamList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("报警配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return alarmConfigService.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DataGasController.java b/src/main/java/com/casic/controller/DataGasController.java
new file mode 100644
index 0000000..12ca603
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataGasController.java
@@ -0,0 +1,61 @@
+package com.casic.controller;
+
+import com.casic.entity.LucencyGasData;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDataService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/gas")
+@Api(tags = "数据列表")
+public class DataGasController {
+
+ @Resource
+ private GasDataService gasDataService;
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("数据查询列表-单记录")
+ @RequestMapping("/list-page")
+ public ResponseData> getGasDataList(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasDataList(devcode, beginTime, endTime, currentIndex, pageSize,sortDevcode);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备历史数据列表")
+ @RequestMapping("/devcode/list")
+ public ResponseData> getGasHistoryList(@RequestParam(value = "devcode", required = true) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasHistoryList(devcode, beginTime, endTime, currentIndex, pageSize);
+ }
+
+
+
+}
diff --git a/src/main/java/com/casic/controller/DataRecvController.java b/src/main/java/com/casic/controller/DataRecvController.java
new file mode 100644
index 0000000..3655480
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataRecvController.java
@@ -0,0 +1,31 @@
+package com.casic.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.casic.service.GasDataRecvService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Api(tags = "数据接收")
+@Slf4j
+public class DataRecvController {
+
+ private final GasDataRecvService gasDataRecvService;
+
+ @ApiOperation("数据接收接口,接收三码、实时数据,自动增添设备,前端不需要实现")
+ @RequestMapping("/gas/recv")
+ public Object gasRecv(@RequestBody Map recvDataMap) {
+ log.error("--------" + JSONObject.toJSONString(recvDataMap));
+ return gasDataRecvService.saveRev(recvDataMap);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceConfigController.java b/src/main/java/com/casic/controller/DeviceConfigController.java
new file mode 100644
index 0000000..613d205
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceConfigController.java
@@ -0,0 +1,62 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备配置")
+public class DeviceConfigController {
+
+ private final DeviceConfigService devcieConfig;
+
+ @RequestMapping("/device/config")
+ @ApiOperation("设备下发配置")
+ public ResponseData gasDeviceConfig(@RequestBody BusConfigParam busConfigParam) {
+ return devcieConfig.devcieConfig(busConfigParam);
+ }
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("设备下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List busConfigList) {
+ return devcieConfig.gasBatchConfig(busConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return devcieConfig.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceStatusController.java b/src/main/java/com/casic/controller/DeviceStatusController.java
new file mode 100644
index 0000000..8d6d05c
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceStatusController.java
@@ -0,0 +1,74 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.DataGasConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDeviceService;
+import com.casic.util.ExportExcelUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备管理")
+public class DeviceStatusController extends ExportExcelUtil {
+
+ private final GasDeviceService gasDeviceService;
+
+ @RequestMapping("/status/config")
+ @ApiOperation("状态下发查询")
+ public ResponseData gasStatusConfig(@RequestBody List dataGasConfigList) {
+ return gasDeviceService.devcieStatusConfig(dataGasConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "keywords", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false)
+ })
+ @ApiOperation("设备列表导出")
+ @RequestMapping(value = "/device/export")
+ public void deviceDataExport(String keywords, String beginTime, String endTime) throws IOException {
+ List deviceDataExcelDtos = gasDeviceService.getDevicieList(beginTime, endTime, keywords);
+ super.exportExcel(NbDevice.class, deviceDataExcelDtos, "设备列表.xlsx");
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "emptyStatus", value = "空状态(查true,不查false)", required = true),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备分页列表")
+ @RequestMapping(value = "/device/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "emptyStatus", required = true) Boolean emptyStatus,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDeviceService.getDevicieListPage(devcode, beginTime, endTime, currentIndex, pageSize,emptyStatus,sortDevcode);
+ }
+
+ @RequestMapping("/device/dict")
+ @ApiOperation("设备字典列表")
+ public ResponseData> deviceDict() {
+ return gasDeviceService.deviceDict();
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/GasDataRecvMapper.java b/src/main/java/com/casic/dao/GasDataRecvMapper.java
new file mode 100644
index 0000000..558996b
--- /dev/null
+++ b/src/main/java/com/casic/dao/GasDataRecvMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.LucencyGasData;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Date;
+
+@Mapper
+public interface GasDataRecvMapper extends BaseMapper {
+
+
+ @Update("UPDATE lucency_gas_data " +
+ "SET devcode=#{devcode} " +
+ "WHERE imei=#{imei} ")
+ Integer updateData(@Param("imei") String imei, @Param("devcode") String devcode);
+
+
+ @Insert("insert into lucency_gas_data(devcode,tenant_id,device_id,data_value,uptime,imei,logtime) " +
+ "values(#{devcode},#{tenantId},#{deviceId},#{ch4},#{uptime},#{imei},#{logtime}) ")
+ Integer addData(@Param("devcode") String devcode, @Param("tenantId") String tenantId,
+ @Param("deviceId") String deviceId, @Param("imei") String imei,
+ @Param("uptime") Date time, @Param("ch4") String ch4,
+ @Param("logtime") Date logtime);
+}
diff --git a/src/main/java/com/casic/dao/NbAlarmConfigMapper.java b/src/main/java/com/casic/dao/NbAlarmConfigMapper.java
new file mode 100644
index 0000000..a9454dd
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbAlarmConfigMapper.java
@@ -0,0 +1,18 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbAlarmConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface NbAlarmConfigMapper extends BaseMapper {
+
+ @Update("UPDATE nb_alarm_config " +
+ "SET status= #{configMsg} " +
+ "WHERE device_id=#{deviceId} " +
+ "AND status='未下发' ")
+ Integer configStatusData(@Param("configMsg") String configMsg,
+ @Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbConfigMapper.java b/src/main/java/com/casic/dao/NbConfigMapper.java
new file mode 100644
index 0000000..801a4f7
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbConfigMapper.java
@@ -0,0 +1,19 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface NbConfigMapper extends BaseMapper {
+
+
+ @Update("UPDATE nb_config " +
+ "SET status= #{configMsg} " +
+ "WHERE device_id=#{deviceId} " +
+ "AND status='未下发' ")
+ Integer configStatusData(@Param("configMsg") String configMsg,
+ @Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbDeviceMapper.java b/src/main/java/com/casic/dao/NbDeviceMapper.java
new file mode 100644
index 0000000..7d33eb3
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbDeviceMapper.java
@@ -0,0 +1,45 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbDevice;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Map;
+
+@Mapper
+public interface NbDeviceMapper extends BaseMapper {
+
+ @Select("delete " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ Integer deleteDeviceByImei(@Param("imei") String imei);
+
+ @Select("select id,device_id " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ Map getDeviceByImei(@Param("imei") String imei);
+
+ @Update("update nb_device " +
+ "device_id=#{deviceId} " +
+ "where imei=#{imei} ")
+ Integer setDeviceIdByImei(@Param("imei") String imei, @Param("deviceId") String deviceId);
+
+ @Select("select devcode " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ String getDevcodeByImei(@Param("imei") String imei);
+
+
+ @Update("update nb_device " +
+ "set recent_conf=#{recentConf} " +
+ "where device_id=#{deviceId} ")
+ Integer updateRecentByDevciceId (@Param("deviceId") String deviceId,@Param("recentConf") String recentConf);
+
+ @Select("select recent_conf " +
+ "from nb_device " +
+ "where device_id=#{deviceId} ")
+ String getRecentByDevciceId (@Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbParamConfigMapper.java b/src/main/java/com/casic/dao/NbParamConfigMapper.java
new file mode 100644
index 0000000..468e05b
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbParamConfigMapper.java
@@ -0,0 +1,7 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbParamConfig;
+
+public interface NbParamConfigMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/casic/entity/LucencyGasData.java b/src/main/java/com/casic/entity/LucencyGasData.java
new file mode 100644
index 0000000..b49c4de
--- /dev/null
+++ b/src/main/java/com/casic/entity/LucencyGasData.java
@@ -0,0 +1,61 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Builder
+@Data
+@ApiModel(value = "LucencyGasData", description = "燃气列表")
+@TableName("lucency_gas_data")
+public class LucencyGasData {
+ @TableId(type = IdType.AUTO)
+ @ApiModelProperty(notes = "透传燃气数据id", dataType = "Long")
+ private Long id;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ @TableField("devcode")
+ private String devcode;
+ @ApiModelProperty(notes = "tenantId", dataType = "Long")
+ @TableField("tenant_id")
+ private Long tenantId;
+ @ApiModelProperty(notes = "信号强度", dataType = "String")
+ @TableField("signals")
+ private String signals;
+ @ApiModelProperty(notes = "可燃气体高报", dataType = "String")
+ @TableField("chha")
+ private String chha;
+ @ApiModelProperty(notes = "可燃气体高高报", dataType = "String")
+ @TableField("chhha")
+ private String chhha;
+ @ApiModelProperty(notes = "电量", dataType = "Double")
+ @TableField("cell")
+ private Double cell;
+ @ApiModelProperty(notes = "燃气浓度", dataType = "String")
+ @TableField("data_value")
+ private String dataValue;
+ @ApiModelProperty(notes = "电信平台注册主键", dataType = "String")
+ @TableField("device_id")
+ private String deviceId;
+ @ApiModelProperty(notes = "记录时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ @TableField("logtime")
+ private Date logtime;
+ @ApiModelProperty(notes = "采集时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ @TableField("uptime")
+ private Date uptime;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ @TableField("imei")
+ private String imei;
+
+
+}
diff --git a/src/main/java/com/casic/entity/NbAlarmConfig.java b/src/main/java/com/casic/entity/NbAlarmConfig.java
new file mode 100644
index 0000000..61ac907
--- /dev/null
+++ b/src/main/java/com/casic/entity/NbAlarmConfig.java
@@ -0,0 +1,36 @@
+package com.casic.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@Builder
+@ApiModel(value = "NbAlarmConfig", description = "报警下发配置")
+@TableName("nb_alarm_config")
+public class NbAlarmConfig {
+ @ApiModelProperty(notes = "主键", dataType = "String")
+ @TableId(type = IdType.AUTO)
+ private String id;
+ @ApiModelProperty(notes = "设备状态", dataType = "String")
+ private String status;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ private String devcode;
+ @ApiModelProperty(notes = "NB平台主键", dataType = "String")
+ private String deviceId;
+ @ApiModelProperty(notes = "记录时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ private Date logtime;
+ @ApiModelProperty(notes = "报警采集周期", dataType = "String")
+ private String alarmperiod;
+ @ApiModelProperty(notes = "报警次数", dataType = "Date")
+ private String alarmcount;
+}
diff --git a/src/main/java/com/casic/entity/NbConfig.java b/src/main/java/com/casic/entity/NbConfig.java
new file mode 100644
index 0000000..e1ffc25
--- /dev/null
+++ b/src/main/java/com/casic/entity/NbConfig.java
@@ -0,0 +1,37 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@Builder
+@ApiModel(value = "nbConfig", description = "设备配置")
+@TableName("nb_config")
+public class NbConfig{
+ @ApiModelProperty(notes = "主键", dataType = "String")
+ @TableId(type = IdType.AUTO)
+ private String id;
+ @ApiModelProperty(notes = "上传周期", dataType = "String")
+ private String upload;
+ @ApiModelProperty(notes = "收集周期", dataType = "String")
+ private String collect;
+ @ApiModelProperty(notes = "重传次数", dataType = "String")
+ private String retry;
+ @ApiModelProperty(notes = "设备状态", dataType = "String")
+ private String status;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ private String devcode;
+ @ApiModelProperty(notes = "NB平台主键", dataType = "String")
+ private String deviceId;
+ @ApiModelProperty(notes = "记录时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/NbDevice.java b/src/main/java/com/casic/entity/NbDevice.java
new file mode 100644
index 0000000..e168783
--- /dev/null
+++ b/src/main/java/com/casic/entity/NbDevice.java
@@ -0,0 +1,60 @@
+package com.casic.entity;
+
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+@Builder
+@ApiModel(value = "nbDevice", description = "燃气列表")
+@TableName("nb_device")
+public class NbDevice {
+ @TableId(type = IdType.AUTO)
+ @ApiModelProperty(notes = "透传燃气设备id", dataType = "Long")
+ private Long id;
+ @ExcelProperty("设备编号")
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ private String devcode;
+ @ExcelProperty("IMEI")
+ @ApiModelProperty(notes = "IMEI", dataType = "String")
+ private String imei;
+ @ExcelProperty("ICCID")
+ @ApiModelProperty(notes = "ICCID", dataType = "String")
+ private String iccid;
+ @ExcelProperty("设备状态")
+ @ApiModelProperty(notes = "设备状态", dataType = "String")
+ private String status;
+ @ExcelProperty("记录时间")
+ @ApiModelProperty(notes = "记录时间", dataType = "String")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ private Date logtime;
+ @ApiModelProperty(notes = "NB平台设备编号", dataType = "String")
+ private String deviceId;
+ @ApiModelProperty(notes = "有效值", dataType = "String")
+ private Integer valid;
+ @ApiModelProperty(notes = "产品id", dataType = "String")
+ private String productId;
+ @ApiModelProperty(notes ="就近下发配置操作 1、通用状态下发配置 2、报警配置", dataType = "String")
+ private String recentConf;
+}
diff --git a/src/main/java/com/casic/entity/NbParamConfig.java b/src/main/java/com/casic/entity/NbParamConfig.java
new file mode 100644
index 0000000..6e08148
--- /dev/null
+++ b/src/main/java/com/casic/entity/NbParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+
+@Builder
+@ApiModel(value = "NbParamConfig", description = "NB平台配置参数")
+@TableName("nb_param_config")
+public class NbParamConfig {
+ @ApiModelProperty(notes = "主键", dataType = "String")
+ @TableId(type = IdType.AUTO)
+ private String id;
+ @ApiModelProperty(notes = "参数名", dataType = "String")
+ private String param;
+ @ApiModelProperty(notes = "参数值", dataType = "String")
+ private String value;
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/src/main/java/com/casic/config/AEPParamConfig.java b/src/main/java/com/casic/config/AEPParamConfig.java
new file mode 100644
index 0000000..349d4b2
--- /dev/null
+++ b/src/main/java/com/casic/config/AEPParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class AEPParamConfig {
+
+ @Value("${nb.app.key}")
+ private String appKey;
+ @Value("${nb.app.secret}")
+ private String appSecret;
+ @Value("${nb.gas.url}")
+ private String aepUrl;
+ @Value("${nb.gas.product-id}")
+ private String productId;
+ @Value("${nb.gas.MasterKey}")
+ private String masterKey;
+}
diff --git a/src/main/java/com/casic/config/CodeGenerator.java b/src/main/java/com/casic/config/CodeGenerator.java
new file mode 100644
index 0000000..ca10d95
--- /dev/null
+++ b/src/main/java/com/casic/config/CodeGenerator.java
@@ -0,0 +1,110 @@
+//package com.casic.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.annotation.FieldFill;
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+//import com.baomidou.mybatisplus.generator.AutoGenerator;
+//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+//import com.baomidou.mybatisplus.generator.config.PackageConfig;
+//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+//import com.baomidou.mybatisplus.generator.config.po.TableFill;
+//import com.baomidou.mybatisplus.generator.config.rules.DateType;
+//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+//import org.apache.commons.lang3.StringUtils;
+//
+//import java.util.ArrayList;
+//import java.util.Scanner;
+//
+//public class CodeGenerator {
+//
+//
+// public static String scanner(String tip) {
+// Scanner scanner = new Scanner(System.in);
+// StringBuilder help = new StringBuilder();
+// help.append("请输入" + tip + ":");
+// System.out.println(help.toString());
+// if (scanner.hasNext()) {
+// String ipt = scanner.next();
+// if (StringUtils.isNotBlank(ipt)) {
+// return ipt;
+// }
+// }
+// throw new MybatisPlusException("请输入正确的" + tip + "!");
+// }
+//
+//
+//
+//
+//
+// public static void main(String[] args) {
+// // 代码生成器
+// AutoGenerator mpg = new AutoGenerator();
+//
+// // 全局配置
+// GlobalConfig gc = new GlobalConfig();
+// String projectPath = System.getProperty("user.dir");
+// gc.setOutputDir(projectPath + "/src/main/java");//设置代码生成路径
+// gc.setFileOverride(true);//是否覆盖以前文件
+// gc.setOpen(false);//是否打开生成目录
+// gc.setAuthor("yixin");//设置项目作者名称
+// gc.setIdType(IdType.AUTO);//设置主键策略
+// gc.setBaseResultMap(true);//生成基本ResultMap
+// gc.setBaseColumnList(true);//生成基本ColumnList
+// gc.setServiceName("%sService");//去掉服务默认前缀
+// gc.setDateType(DateType.ONLY_DATE);//设置时间类型
+// mpg.setGlobalConfig(gc);
+//
+// // 数据源配置
+// DataSourceConfig dsc = new DataSourceConfig();
+// dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
+// dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+// dsc.setUsername("root");
+// dsc.setPassword("123456");
+// mpg.setDataSource(dsc);
+//
+// // 包配置
+// PackageConfig pc = new PackageConfig();
+// pc.setParent("com.yixin");
+// pc.setMapper("mapper");
+// pc.setXml("mapper.xml");
+// pc.setEntity("pojo");
+// pc.setService("service");
+// pc.setServiceImpl("service.impl");
+// pc.setController("controller");
+// mpg.setPackageInfo(pc);
+//
+// // 策略配置
+// StrategyConfig sc = new StrategyConfig();
+// sc.setNaming(NamingStrategy.underline_to_camel);
+// sc.setColumnNaming(NamingStrategy.underline_to_camel);
+// sc.setEntityLombokModel(true);//自动lombok
+// sc.setRestControllerStyle(true);
+// sc.setControllerMappingHyphenStyle(true);
+//
+// sc.setLogicDeleteFieldName("deleted");//设置逻辑删除
+//
+// //设置自动填充配置
+// TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);
+// TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
+// ArrayList tableFills=new ArrayList<>();
+// tableFills.add(gmt_create);
+// tableFills.add(gmt_modified);
+// sc.setTableFillList(tableFills);
+//
+// //乐观锁
+// sc.setVersionFieldName("version");
+// sc.setRestControllerStyle(true);//驼峰命名
+//
+//
+//
+// // sc.setTablePrefix("tbl_"); 设置表名前缀
+// sc.setInclude(scanner("表名,多个英文逗号分割").split(","));
+// mpg.setStrategy(sc);
+//
+// // 生成代码
+// mpg.execute();
+// }
+//
+//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
new file mode 100644
index 0000000..7d19680
--- /dev/null
+++ b/src/main/java/com/casic/config/CorsConfig.java
@@ -0,0 +1,31 @@
+package com.casic.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * 基础框架 - 跨域请求配置
+ */
+@Configuration
+public class CorsConfig {
+ @Bean
+ public CorsFilter corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", buildConfig());
+ return new CorsFilter(source);
+ }
+
+ private CorsConfiguration buildConfig() {
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ // 1允许任何域名使用
+ corsConfiguration.addAllowedOrigin("*");
+ // 2允许任何头
+ corsConfiguration.addAllowedHeader("*");
+ // 3允许任何方法(post、get等)
+ corsConfiguration.addAllowedMethod("*");
+ return corsConfiguration;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
new file mode 100644
index 0000000..bb4c9ff
--- /dev/null
+++ b/src/main/java/com/casic/config/Knife4jConfiguration.java
@@ -0,0 +1,38 @@
+package com.casic.config;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+@Configuration
+@EnableKnife4j
+public class Knife4jConfiguration {
+
+ @Value(value = "${swagger.enable}")
+ public boolean enable;
+ @Value(value = "${swagger.groupName}")
+ public String groupName;
+
+ @Bean(value = "dockerBean")
+ public Docket dockerBean() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(new ApiInfoBuilder()
+ //描述字段支持Markdown语法
+ .description("# Knife4j RESTful APIs")
+ .termsOfServiceUrl("https://doc.casic.com/")
+ .version("1.0")
+ .build())
+ //分组名称
+ .groupName(groupName)
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("com.casic"))
+ .paths(PathSelectors.any()).build().enable(enable);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/MybatisPlusConfig.java b/src/main/java/com/casic/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..58fd3b1
--- /dev/null
+++ b/src/main/java/com/casic/config/MybatisPlusConfig.java
@@ -0,0 +1,18 @@
+package com.casic.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(){
+ MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+}
+
diff --git a/src/main/java/com/casic/controller/AlarmConfigController.java b/src/main/java/com/casic/controller/AlarmConfigController.java
new file mode 100644
index 0000000..85d965a
--- /dev/null
+++ b/src/main/java/com/casic/controller/AlarmConfigController.java
@@ -0,0 +1,57 @@
+package com.casic.controller;
+
+import com.casic.entity.NbAlarmConfig;
+import com.casic.entity.NbDevice;
+import com.casic.model.AlarmConfigParam;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.AlarmConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/alarm")
+@Slf4j
+@Api(tags = "报警配置")
+public class AlarmConfigController {
+
+ private final AlarmConfigService alarmConfigService;
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("报警下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List alarmConfigParamList) {
+ return alarmConfigService.gasBatchConfig(alarmConfigParamList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("报警配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return alarmConfigService.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DataGasController.java b/src/main/java/com/casic/controller/DataGasController.java
new file mode 100644
index 0000000..12ca603
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataGasController.java
@@ -0,0 +1,61 @@
+package com.casic.controller;
+
+import com.casic.entity.LucencyGasData;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDataService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/gas")
+@Api(tags = "数据列表")
+public class DataGasController {
+
+ @Resource
+ private GasDataService gasDataService;
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("数据查询列表-单记录")
+ @RequestMapping("/list-page")
+ public ResponseData> getGasDataList(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasDataList(devcode, beginTime, endTime, currentIndex, pageSize,sortDevcode);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备历史数据列表")
+ @RequestMapping("/devcode/list")
+ public ResponseData> getGasHistoryList(@RequestParam(value = "devcode", required = true) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasHistoryList(devcode, beginTime, endTime, currentIndex, pageSize);
+ }
+
+
+
+}
diff --git a/src/main/java/com/casic/controller/DataRecvController.java b/src/main/java/com/casic/controller/DataRecvController.java
new file mode 100644
index 0000000..3655480
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataRecvController.java
@@ -0,0 +1,31 @@
+package com.casic.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.casic.service.GasDataRecvService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Api(tags = "数据接收")
+@Slf4j
+public class DataRecvController {
+
+ private final GasDataRecvService gasDataRecvService;
+
+ @ApiOperation("数据接收接口,接收三码、实时数据,自动增添设备,前端不需要实现")
+ @RequestMapping("/gas/recv")
+ public Object gasRecv(@RequestBody Map recvDataMap) {
+ log.error("--------" + JSONObject.toJSONString(recvDataMap));
+ return gasDataRecvService.saveRev(recvDataMap);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceConfigController.java b/src/main/java/com/casic/controller/DeviceConfigController.java
new file mode 100644
index 0000000..613d205
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceConfigController.java
@@ -0,0 +1,62 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备配置")
+public class DeviceConfigController {
+
+ private final DeviceConfigService devcieConfig;
+
+ @RequestMapping("/device/config")
+ @ApiOperation("设备下发配置")
+ public ResponseData gasDeviceConfig(@RequestBody BusConfigParam busConfigParam) {
+ return devcieConfig.devcieConfig(busConfigParam);
+ }
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("设备下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List busConfigList) {
+ return devcieConfig.gasBatchConfig(busConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return devcieConfig.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceStatusController.java b/src/main/java/com/casic/controller/DeviceStatusController.java
new file mode 100644
index 0000000..8d6d05c
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceStatusController.java
@@ -0,0 +1,74 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.DataGasConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDeviceService;
+import com.casic.util.ExportExcelUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备管理")
+public class DeviceStatusController extends ExportExcelUtil {
+
+ private final GasDeviceService gasDeviceService;
+
+ @RequestMapping("/status/config")
+ @ApiOperation("状态下发查询")
+ public ResponseData gasStatusConfig(@RequestBody List dataGasConfigList) {
+ return gasDeviceService.devcieStatusConfig(dataGasConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "keywords", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false)
+ })
+ @ApiOperation("设备列表导出")
+ @RequestMapping(value = "/device/export")
+ public void deviceDataExport(String keywords, String beginTime, String endTime) throws IOException {
+ List deviceDataExcelDtos = gasDeviceService.getDevicieList(beginTime, endTime, keywords);
+ super.exportExcel(NbDevice.class, deviceDataExcelDtos, "设备列表.xlsx");
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "emptyStatus", value = "空状态(查true,不查false)", required = true),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备分页列表")
+ @RequestMapping(value = "/device/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "emptyStatus", required = true) Boolean emptyStatus,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDeviceService.getDevicieListPage(devcode, beginTime, endTime, currentIndex, pageSize,emptyStatus,sortDevcode);
+ }
+
+ @RequestMapping("/device/dict")
+ @ApiOperation("设备字典列表")
+ public ResponseData> deviceDict() {
+ return gasDeviceService.deviceDict();
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/GasDataRecvMapper.java b/src/main/java/com/casic/dao/GasDataRecvMapper.java
new file mode 100644
index 0000000..558996b
--- /dev/null
+++ b/src/main/java/com/casic/dao/GasDataRecvMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.LucencyGasData;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Date;
+
+@Mapper
+public interface GasDataRecvMapper extends BaseMapper {
+
+
+ @Update("UPDATE lucency_gas_data " +
+ "SET devcode=#{devcode} " +
+ "WHERE imei=#{imei} ")
+ Integer updateData(@Param("imei") String imei, @Param("devcode") String devcode);
+
+
+ @Insert("insert into lucency_gas_data(devcode,tenant_id,device_id,data_value,uptime,imei,logtime) " +
+ "values(#{devcode},#{tenantId},#{deviceId},#{ch4},#{uptime},#{imei},#{logtime}) ")
+ Integer addData(@Param("devcode") String devcode, @Param("tenantId") String tenantId,
+ @Param("deviceId") String deviceId, @Param("imei") String imei,
+ @Param("uptime") Date time, @Param("ch4") String ch4,
+ @Param("logtime") Date logtime);
+}
diff --git a/src/main/java/com/casic/dao/NbAlarmConfigMapper.java b/src/main/java/com/casic/dao/NbAlarmConfigMapper.java
new file mode 100644
index 0000000..a9454dd
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbAlarmConfigMapper.java
@@ -0,0 +1,18 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbAlarmConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface NbAlarmConfigMapper extends BaseMapper {
+
+ @Update("UPDATE nb_alarm_config " +
+ "SET status= #{configMsg} " +
+ "WHERE device_id=#{deviceId} " +
+ "AND status='未下发' ")
+ Integer configStatusData(@Param("configMsg") String configMsg,
+ @Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbConfigMapper.java b/src/main/java/com/casic/dao/NbConfigMapper.java
new file mode 100644
index 0000000..801a4f7
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbConfigMapper.java
@@ -0,0 +1,19 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface NbConfigMapper extends BaseMapper {
+
+
+ @Update("UPDATE nb_config " +
+ "SET status= #{configMsg} " +
+ "WHERE device_id=#{deviceId} " +
+ "AND status='未下发' ")
+ Integer configStatusData(@Param("configMsg") String configMsg,
+ @Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbDeviceMapper.java b/src/main/java/com/casic/dao/NbDeviceMapper.java
new file mode 100644
index 0000000..7d33eb3
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbDeviceMapper.java
@@ -0,0 +1,45 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbDevice;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Map;
+
+@Mapper
+public interface NbDeviceMapper extends BaseMapper {
+
+ @Select("delete " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ Integer deleteDeviceByImei(@Param("imei") String imei);
+
+ @Select("select id,device_id " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ Map getDeviceByImei(@Param("imei") String imei);
+
+ @Update("update nb_device " +
+ "device_id=#{deviceId} " +
+ "where imei=#{imei} ")
+ Integer setDeviceIdByImei(@Param("imei") String imei, @Param("deviceId") String deviceId);
+
+ @Select("select devcode " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ String getDevcodeByImei(@Param("imei") String imei);
+
+
+ @Update("update nb_device " +
+ "set recent_conf=#{recentConf} " +
+ "where device_id=#{deviceId} ")
+ Integer updateRecentByDevciceId (@Param("deviceId") String deviceId,@Param("recentConf") String recentConf);
+
+ @Select("select recent_conf " +
+ "from nb_device " +
+ "where device_id=#{deviceId} ")
+ String getRecentByDevciceId (@Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbParamConfigMapper.java b/src/main/java/com/casic/dao/NbParamConfigMapper.java
new file mode 100644
index 0000000..468e05b
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbParamConfigMapper.java
@@ -0,0 +1,7 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbParamConfig;
+
+public interface NbParamConfigMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/casic/entity/LucencyGasData.java b/src/main/java/com/casic/entity/LucencyGasData.java
new file mode 100644
index 0000000..b49c4de
--- /dev/null
+++ b/src/main/java/com/casic/entity/LucencyGasData.java
@@ -0,0 +1,61 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Builder
+@Data
+@ApiModel(value = "LucencyGasData", description = "燃气列表")
+@TableName("lucency_gas_data")
+public class LucencyGasData {
+ @TableId(type = IdType.AUTO)
+ @ApiModelProperty(notes = "透传燃气数据id", dataType = "Long")
+ private Long id;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ @TableField("devcode")
+ private String devcode;
+ @ApiModelProperty(notes = "tenantId", dataType = "Long")
+ @TableField("tenant_id")
+ private Long tenantId;
+ @ApiModelProperty(notes = "信号强度", dataType = "String")
+ @TableField("signals")
+ private String signals;
+ @ApiModelProperty(notes = "可燃气体高报", dataType = "String")
+ @TableField("chha")
+ private String chha;
+ @ApiModelProperty(notes = "可燃气体高高报", dataType = "String")
+ @TableField("chhha")
+ private String chhha;
+ @ApiModelProperty(notes = "电量", dataType = "Double")
+ @TableField("cell")
+ private Double cell;
+ @ApiModelProperty(notes = "燃气浓度", dataType = "String")
+ @TableField("data_value")
+ private String dataValue;
+ @ApiModelProperty(notes = "电信平台注册主键", dataType = "String")
+ @TableField("device_id")
+ private String deviceId;
+ @ApiModelProperty(notes = "记录时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ @TableField("logtime")
+ private Date logtime;
+ @ApiModelProperty(notes = "采集时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ @TableField("uptime")
+ private Date uptime;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ @TableField("imei")
+ private String imei;
+
+
+}
diff --git a/src/main/java/com/casic/entity/NbAlarmConfig.java b/src/main/java/com/casic/entity/NbAlarmConfig.java
new file mode 100644
index 0000000..61ac907
--- /dev/null
+++ b/src/main/java/com/casic/entity/NbAlarmConfig.java
@@ -0,0 +1,36 @@
+package com.casic.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@Builder
+@ApiModel(value = "NbAlarmConfig", description = "报警下发配置")
+@TableName("nb_alarm_config")
+public class NbAlarmConfig {
+ @ApiModelProperty(notes = "主键", dataType = "String")
+ @TableId(type = IdType.AUTO)
+ private String id;
+ @ApiModelProperty(notes = "设备状态", dataType = "String")
+ private String status;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ private String devcode;
+ @ApiModelProperty(notes = "NB平台主键", dataType = "String")
+ private String deviceId;
+ @ApiModelProperty(notes = "记录时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ private Date logtime;
+ @ApiModelProperty(notes = "报警采集周期", dataType = "String")
+ private String alarmperiod;
+ @ApiModelProperty(notes = "报警次数", dataType = "Date")
+ private String alarmcount;
+}
diff --git a/src/main/java/com/casic/entity/NbConfig.java b/src/main/java/com/casic/entity/NbConfig.java
new file mode 100644
index 0000000..e1ffc25
--- /dev/null
+++ b/src/main/java/com/casic/entity/NbConfig.java
@@ -0,0 +1,37 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@Builder
+@ApiModel(value = "nbConfig", description = "设备配置")
+@TableName("nb_config")
+public class NbConfig{
+ @ApiModelProperty(notes = "主键", dataType = "String")
+ @TableId(type = IdType.AUTO)
+ private String id;
+ @ApiModelProperty(notes = "上传周期", dataType = "String")
+ private String upload;
+ @ApiModelProperty(notes = "收集周期", dataType = "String")
+ private String collect;
+ @ApiModelProperty(notes = "重传次数", dataType = "String")
+ private String retry;
+ @ApiModelProperty(notes = "设备状态", dataType = "String")
+ private String status;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ private String devcode;
+ @ApiModelProperty(notes = "NB平台主键", dataType = "String")
+ private String deviceId;
+ @ApiModelProperty(notes = "记录时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/NbDevice.java b/src/main/java/com/casic/entity/NbDevice.java
new file mode 100644
index 0000000..e168783
--- /dev/null
+++ b/src/main/java/com/casic/entity/NbDevice.java
@@ -0,0 +1,60 @@
+package com.casic.entity;
+
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+@Builder
+@ApiModel(value = "nbDevice", description = "燃气列表")
+@TableName("nb_device")
+public class NbDevice {
+ @TableId(type = IdType.AUTO)
+ @ApiModelProperty(notes = "透传燃气设备id", dataType = "Long")
+ private Long id;
+ @ExcelProperty("设备编号")
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ private String devcode;
+ @ExcelProperty("IMEI")
+ @ApiModelProperty(notes = "IMEI", dataType = "String")
+ private String imei;
+ @ExcelProperty("ICCID")
+ @ApiModelProperty(notes = "ICCID", dataType = "String")
+ private String iccid;
+ @ExcelProperty("设备状态")
+ @ApiModelProperty(notes = "设备状态", dataType = "String")
+ private String status;
+ @ExcelProperty("记录时间")
+ @ApiModelProperty(notes = "记录时间", dataType = "String")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ private Date logtime;
+ @ApiModelProperty(notes = "NB平台设备编号", dataType = "String")
+ private String deviceId;
+ @ApiModelProperty(notes = "有效值", dataType = "String")
+ private Integer valid;
+ @ApiModelProperty(notes = "产品id", dataType = "String")
+ private String productId;
+ @ApiModelProperty(notes ="就近下发配置操作 1、通用状态下发配置 2、报警配置", dataType = "String")
+ private String recentConf;
+}
diff --git a/src/main/java/com/casic/entity/NbParamConfig.java b/src/main/java/com/casic/entity/NbParamConfig.java
new file mode 100644
index 0000000..6e08148
--- /dev/null
+++ b/src/main/java/com/casic/entity/NbParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+
+@Builder
+@ApiModel(value = "NbParamConfig", description = "NB平台配置参数")
+@TableName("nb_param_config")
+public class NbParamConfig {
+ @ApiModelProperty(notes = "主键", dataType = "String")
+ @TableId(type = IdType.AUTO)
+ private String id;
+ @ApiModelProperty(notes = "参数名", dataType = "String")
+ private String param;
+ @ApiModelProperty(notes = "参数值", dataType = "String")
+ private String value;
+}
diff --git a/src/main/java/com/casic/model/AlarmConfigParam.java b/src/main/java/com/casic/model/AlarmConfigParam.java
new file mode 100644
index 0000000..dced69a
--- /dev/null
+++ b/src/main/java/com/casic/model/AlarmConfigParam.java
@@ -0,0 +1,28 @@
+package com.casic.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Map;
+
+@Data
+@ApiModel(value = "AlarmConfigParam", description = "报警下发配置")
+public class AlarmConfigParam {
+ @ApiModelProperty(notes = "电信平台设备id", dataType = "String",required= true)
+ private String deviceId;
+ @ApiModelProperty(notes = "产品id ", dataType = "String",required= true)
+ private String productId;
+ @ApiModelProperty(notes = "设备编号", dataType = "String",required= true)
+ private String devcode;
+ @ApiModelProperty(notes = "操作人", dataType = "String")
+ private String operator;
+ @ApiModelProperty(notes = "等级", dataType = "Integer")
+ private Integer level;
+ @ApiModelProperty(notes = "指令内容(alarmcount、alarmpeiod)", dataType = "object",required= true)
+ private AlarmContent queryContent;
+ @ApiModelProperty(notes = "指令内容", dataType = "String")
+ private Map content;
+ @ApiModelProperty(notes = "设备组", dataType = "String")
+ private String deviceGroupId;
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/src/main/java/com/casic/config/AEPParamConfig.java b/src/main/java/com/casic/config/AEPParamConfig.java
new file mode 100644
index 0000000..349d4b2
--- /dev/null
+++ b/src/main/java/com/casic/config/AEPParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class AEPParamConfig {
+
+ @Value("${nb.app.key}")
+ private String appKey;
+ @Value("${nb.app.secret}")
+ private String appSecret;
+ @Value("${nb.gas.url}")
+ private String aepUrl;
+ @Value("${nb.gas.product-id}")
+ private String productId;
+ @Value("${nb.gas.MasterKey}")
+ private String masterKey;
+}
diff --git a/src/main/java/com/casic/config/CodeGenerator.java b/src/main/java/com/casic/config/CodeGenerator.java
new file mode 100644
index 0000000..ca10d95
--- /dev/null
+++ b/src/main/java/com/casic/config/CodeGenerator.java
@@ -0,0 +1,110 @@
+//package com.casic.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.annotation.FieldFill;
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+//import com.baomidou.mybatisplus.generator.AutoGenerator;
+//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+//import com.baomidou.mybatisplus.generator.config.PackageConfig;
+//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+//import com.baomidou.mybatisplus.generator.config.po.TableFill;
+//import com.baomidou.mybatisplus.generator.config.rules.DateType;
+//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+//import org.apache.commons.lang3.StringUtils;
+//
+//import java.util.ArrayList;
+//import java.util.Scanner;
+//
+//public class CodeGenerator {
+//
+//
+// public static String scanner(String tip) {
+// Scanner scanner = new Scanner(System.in);
+// StringBuilder help = new StringBuilder();
+// help.append("请输入" + tip + ":");
+// System.out.println(help.toString());
+// if (scanner.hasNext()) {
+// String ipt = scanner.next();
+// if (StringUtils.isNotBlank(ipt)) {
+// return ipt;
+// }
+// }
+// throw new MybatisPlusException("请输入正确的" + tip + "!");
+// }
+//
+//
+//
+//
+//
+// public static void main(String[] args) {
+// // 代码生成器
+// AutoGenerator mpg = new AutoGenerator();
+//
+// // 全局配置
+// GlobalConfig gc = new GlobalConfig();
+// String projectPath = System.getProperty("user.dir");
+// gc.setOutputDir(projectPath + "/src/main/java");//设置代码生成路径
+// gc.setFileOverride(true);//是否覆盖以前文件
+// gc.setOpen(false);//是否打开生成目录
+// gc.setAuthor("yixin");//设置项目作者名称
+// gc.setIdType(IdType.AUTO);//设置主键策略
+// gc.setBaseResultMap(true);//生成基本ResultMap
+// gc.setBaseColumnList(true);//生成基本ColumnList
+// gc.setServiceName("%sService");//去掉服务默认前缀
+// gc.setDateType(DateType.ONLY_DATE);//设置时间类型
+// mpg.setGlobalConfig(gc);
+//
+// // 数据源配置
+// DataSourceConfig dsc = new DataSourceConfig();
+// dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
+// dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+// dsc.setUsername("root");
+// dsc.setPassword("123456");
+// mpg.setDataSource(dsc);
+//
+// // 包配置
+// PackageConfig pc = new PackageConfig();
+// pc.setParent("com.yixin");
+// pc.setMapper("mapper");
+// pc.setXml("mapper.xml");
+// pc.setEntity("pojo");
+// pc.setService("service");
+// pc.setServiceImpl("service.impl");
+// pc.setController("controller");
+// mpg.setPackageInfo(pc);
+//
+// // 策略配置
+// StrategyConfig sc = new StrategyConfig();
+// sc.setNaming(NamingStrategy.underline_to_camel);
+// sc.setColumnNaming(NamingStrategy.underline_to_camel);
+// sc.setEntityLombokModel(true);//自动lombok
+// sc.setRestControllerStyle(true);
+// sc.setControllerMappingHyphenStyle(true);
+//
+// sc.setLogicDeleteFieldName("deleted");//设置逻辑删除
+//
+// //设置自动填充配置
+// TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);
+// TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
+// ArrayList tableFills=new ArrayList<>();
+// tableFills.add(gmt_create);
+// tableFills.add(gmt_modified);
+// sc.setTableFillList(tableFills);
+//
+// //乐观锁
+// sc.setVersionFieldName("version");
+// sc.setRestControllerStyle(true);//驼峰命名
+//
+//
+//
+// // sc.setTablePrefix("tbl_"); 设置表名前缀
+// sc.setInclude(scanner("表名,多个英文逗号分割").split(","));
+// mpg.setStrategy(sc);
+//
+// // 生成代码
+// mpg.execute();
+// }
+//
+//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
new file mode 100644
index 0000000..7d19680
--- /dev/null
+++ b/src/main/java/com/casic/config/CorsConfig.java
@@ -0,0 +1,31 @@
+package com.casic.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * 基础框架 - 跨域请求配置
+ */
+@Configuration
+public class CorsConfig {
+ @Bean
+ public CorsFilter corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", buildConfig());
+ return new CorsFilter(source);
+ }
+
+ private CorsConfiguration buildConfig() {
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ // 1允许任何域名使用
+ corsConfiguration.addAllowedOrigin("*");
+ // 2允许任何头
+ corsConfiguration.addAllowedHeader("*");
+ // 3允许任何方法(post、get等)
+ corsConfiguration.addAllowedMethod("*");
+ return corsConfiguration;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
new file mode 100644
index 0000000..bb4c9ff
--- /dev/null
+++ b/src/main/java/com/casic/config/Knife4jConfiguration.java
@@ -0,0 +1,38 @@
+package com.casic.config;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+@Configuration
+@EnableKnife4j
+public class Knife4jConfiguration {
+
+ @Value(value = "${swagger.enable}")
+ public boolean enable;
+ @Value(value = "${swagger.groupName}")
+ public String groupName;
+
+ @Bean(value = "dockerBean")
+ public Docket dockerBean() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(new ApiInfoBuilder()
+ //描述字段支持Markdown语法
+ .description("# Knife4j RESTful APIs")
+ .termsOfServiceUrl("https://doc.casic.com/")
+ .version("1.0")
+ .build())
+ //分组名称
+ .groupName(groupName)
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("com.casic"))
+ .paths(PathSelectors.any()).build().enable(enable);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/MybatisPlusConfig.java b/src/main/java/com/casic/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..58fd3b1
--- /dev/null
+++ b/src/main/java/com/casic/config/MybatisPlusConfig.java
@@ -0,0 +1,18 @@
+package com.casic.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(){
+ MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+}
+
diff --git a/src/main/java/com/casic/controller/AlarmConfigController.java b/src/main/java/com/casic/controller/AlarmConfigController.java
new file mode 100644
index 0000000..85d965a
--- /dev/null
+++ b/src/main/java/com/casic/controller/AlarmConfigController.java
@@ -0,0 +1,57 @@
+package com.casic.controller;
+
+import com.casic.entity.NbAlarmConfig;
+import com.casic.entity.NbDevice;
+import com.casic.model.AlarmConfigParam;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.AlarmConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/alarm")
+@Slf4j
+@Api(tags = "报警配置")
+public class AlarmConfigController {
+
+ private final AlarmConfigService alarmConfigService;
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("报警下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List alarmConfigParamList) {
+ return alarmConfigService.gasBatchConfig(alarmConfigParamList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("报警配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return alarmConfigService.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DataGasController.java b/src/main/java/com/casic/controller/DataGasController.java
new file mode 100644
index 0000000..12ca603
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataGasController.java
@@ -0,0 +1,61 @@
+package com.casic.controller;
+
+import com.casic.entity.LucencyGasData;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDataService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/gas")
+@Api(tags = "数据列表")
+public class DataGasController {
+
+ @Resource
+ private GasDataService gasDataService;
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("数据查询列表-单记录")
+ @RequestMapping("/list-page")
+ public ResponseData> getGasDataList(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasDataList(devcode, beginTime, endTime, currentIndex, pageSize,sortDevcode);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备历史数据列表")
+ @RequestMapping("/devcode/list")
+ public ResponseData> getGasHistoryList(@RequestParam(value = "devcode", required = true) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasHistoryList(devcode, beginTime, endTime, currentIndex, pageSize);
+ }
+
+
+
+}
diff --git a/src/main/java/com/casic/controller/DataRecvController.java b/src/main/java/com/casic/controller/DataRecvController.java
new file mode 100644
index 0000000..3655480
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataRecvController.java
@@ -0,0 +1,31 @@
+package com.casic.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.casic.service.GasDataRecvService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Api(tags = "数据接收")
+@Slf4j
+public class DataRecvController {
+
+ private final GasDataRecvService gasDataRecvService;
+
+ @ApiOperation("数据接收接口,接收三码、实时数据,自动增添设备,前端不需要实现")
+ @RequestMapping("/gas/recv")
+ public Object gasRecv(@RequestBody Map recvDataMap) {
+ log.error("--------" + JSONObject.toJSONString(recvDataMap));
+ return gasDataRecvService.saveRev(recvDataMap);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceConfigController.java b/src/main/java/com/casic/controller/DeviceConfigController.java
new file mode 100644
index 0000000..613d205
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceConfigController.java
@@ -0,0 +1,62 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备配置")
+public class DeviceConfigController {
+
+ private final DeviceConfigService devcieConfig;
+
+ @RequestMapping("/device/config")
+ @ApiOperation("设备下发配置")
+ public ResponseData gasDeviceConfig(@RequestBody BusConfigParam busConfigParam) {
+ return devcieConfig.devcieConfig(busConfigParam);
+ }
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("设备下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List busConfigList) {
+ return devcieConfig.gasBatchConfig(busConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return devcieConfig.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceStatusController.java b/src/main/java/com/casic/controller/DeviceStatusController.java
new file mode 100644
index 0000000..8d6d05c
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceStatusController.java
@@ -0,0 +1,74 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.DataGasConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDeviceService;
+import com.casic.util.ExportExcelUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备管理")
+public class DeviceStatusController extends ExportExcelUtil {
+
+ private final GasDeviceService gasDeviceService;
+
+ @RequestMapping("/status/config")
+ @ApiOperation("状态下发查询")
+ public ResponseData gasStatusConfig(@RequestBody List dataGasConfigList) {
+ return gasDeviceService.devcieStatusConfig(dataGasConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "keywords", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false)
+ })
+ @ApiOperation("设备列表导出")
+ @RequestMapping(value = "/device/export")
+ public void deviceDataExport(String keywords, String beginTime, String endTime) throws IOException {
+ List deviceDataExcelDtos = gasDeviceService.getDevicieList(beginTime, endTime, keywords);
+ super.exportExcel(NbDevice.class, deviceDataExcelDtos, "设备列表.xlsx");
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "emptyStatus", value = "空状态(查true,不查false)", required = true),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备分页列表")
+ @RequestMapping(value = "/device/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "emptyStatus", required = true) Boolean emptyStatus,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDeviceService.getDevicieListPage(devcode, beginTime, endTime, currentIndex, pageSize,emptyStatus,sortDevcode);
+ }
+
+ @RequestMapping("/device/dict")
+ @ApiOperation("设备字典列表")
+ public ResponseData> deviceDict() {
+ return gasDeviceService.deviceDict();
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/GasDataRecvMapper.java b/src/main/java/com/casic/dao/GasDataRecvMapper.java
new file mode 100644
index 0000000..558996b
--- /dev/null
+++ b/src/main/java/com/casic/dao/GasDataRecvMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.LucencyGasData;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Date;
+
+@Mapper
+public interface GasDataRecvMapper extends BaseMapper {
+
+
+ @Update("UPDATE lucency_gas_data " +
+ "SET devcode=#{devcode} " +
+ "WHERE imei=#{imei} ")
+ Integer updateData(@Param("imei") String imei, @Param("devcode") String devcode);
+
+
+ @Insert("insert into lucency_gas_data(devcode,tenant_id,device_id,data_value,uptime,imei,logtime) " +
+ "values(#{devcode},#{tenantId},#{deviceId},#{ch4},#{uptime},#{imei},#{logtime}) ")
+ Integer addData(@Param("devcode") String devcode, @Param("tenantId") String tenantId,
+ @Param("deviceId") String deviceId, @Param("imei") String imei,
+ @Param("uptime") Date time, @Param("ch4") String ch4,
+ @Param("logtime") Date logtime);
+}
diff --git a/src/main/java/com/casic/dao/NbAlarmConfigMapper.java b/src/main/java/com/casic/dao/NbAlarmConfigMapper.java
new file mode 100644
index 0000000..a9454dd
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbAlarmConfigMapper.java
@@ -0,0 +1,18 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbAlarmConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface NbAlarmConfigMapper extends BaseMapper {
+
+ @Update("UPDATE nb_alarm_config " +
+ "SET status= #{configMsg} " +
+ "WHERE device_id=#{deviceId} " +
+ "AND status='未下发' ")
+ Integer configStatusData(@Param("configMsg") String configMsg,
+ @Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbConfigMapper.java b/src/main/java/com/casic/dao/NbConfigMapper.java
new file mode 100644
index 0000000..801a4f7
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbConfigMapper.java
@@ -0,0 +1,19 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface NbConfigMapper extends BaseMapper {
+
+
+ @Update("UPDATE nb_config " +
+ "SET status= #{configMsg} " +
+ "WHERE device_id=#{deviceId} " +
+ "AND status='未下发' ")
+ Integer configStatusData(@Param("configMsg") String configMsg,
+ @Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbDeviceMapper.java b/src/main/java/com/casic/dao/NbDeviceMapper.java
new file mode 100644
index 0000000..7d33eb3
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbDeviceMapper.java
@@ -0,0 +1,45 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbDevice;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.Map;
+
+@Mapper
+public interface NbDeviceMapper extends BaseMapper {
+
+ @Select("delete " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ Integer deleteDeviceByImei(@Param("imei") String imei);
+
+ @Select("select id,device_id " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ Map getDeviceByImei(@Param("imei") String imei);
+
+ @Update("update nb_device " +
+ "device_id=#{deviceId} " +
+ "where imei=#{imei} ")
+ Integer setDeviceIdByImei(@Param("imei") String imei, @Param("deviceId") String deviceId);
+
+ @Select("select devcode " +
+ "from nb_device " +
+ "where imei=#{imei} ")
+ String getDevcodeByImei(@Param("imei") String imei);
+
+
+ @Update("update nb_device " +
+ "set recent_conf=#{recentConf} " +
+ "where device_id=#{deviceId} ")
+ Integer updateRecentByDevciceId (@Param("deviceId") String deviceId,@Param("recentConf") String recentConf);
+
+ @Select("select recent_conf " +
+ "from nb_device " +
+ "where device_id=#{deviceId} ")
+ String getRecentByDevciceId (@Param("deviceId") String deviceId);
+}
diff --git a/src/main/java/com/casic/dao/NbParamConfigMapper.java b/src/main/java/com/casic/dao/NbParamConfigMapper.java
new file mode 100644
index 0000000..468e05b
--- /dev/null
+++ b/src/main/java/com/casic/dao/NbParamConfigMapper.java
@@ -0,0 +1,7 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.NbParamConfig;
+
+public interface NbParamConfigMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/casic/entity/LucencyGasData.java b/src/main/java/com/casic/entity/LucencyGasData.java
new file mode 100644
index 0000000..b49c4de
--- /dev/null
+++ b/src/main/java/com/casic/entity/LucencyGasData.java
@@ -0,0 +1,61 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Builder
+@Data
+@ApiModel(value = "LucencyGasData", description = "燃气列表")
+@TableName("lucency_gas_data")
+public class LucencyGasData {
+ @TableId(type = IdType.AUTO)
+ @ApiModelProperty(notes = "透传燃气数据id", dataType = "Long")
+ private Long id;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ @TableField("devcode")
+ private String devcode;
+ @ApiModelProperty(notes = "tenantId", dataType = "Long")
+ @TableField("tenant_id")
+ private Long tenantId;
+ @ApiModelProperty(notes = "信号强度", dataType = "String")
+ @TableField("signals")
+ private String signals;
+ @ApiModelProperty(notes = "可燃气体高报", dataType = "String")
+ @TableField("chha")
+ private String chha;
+ @ApiModelProperty(notes = "可燃气体高高报", dataType = "String")
+ @TableField("chhha")
+ private String chhha;
+ @ApiModelProperty(notes = "电量", dataType = "Double")
+ @TableField("cell")
+ private Double cell;
+ @ApiModelProperty(notes = "燃气浓度", dataType = "String")
+ @TableField("data_value")
+ private String dataValue;
+ @ApiModelProperty(notes = "电信平台注册主键", dataType = "String")
+ @TableField("device_id")
+ private String deviceId;
+ @ApiModelProperty(notes = "记录时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ @TableField("logtime")
+ private Date logtime;
+ @ApiModelProperty(notes = "采集时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ @TableField("uptime")
+ private Date uptime;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ @TableField("imei")
+ private String imei;
+
+
+}
diff --git a/src/main/java/com/casic/entity/NbAlarmConfig.java b/src/main/java/com/casic/entity/NbAlarmConfig.java
new file mode 100644
index 0000000..61ac907
--- /dev/null
+++ b/src/main/java/com/casic/entity/NbAlarmConfig.java
@@ -0,0 +1,36 @@
+package com.casic.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@Builder
+@ApiModel(value = "NbAlarmConfig", description = "报警下发配置")
+@TableName("nb_alarm_config")
+public class NbAlarmConfig {
+ @ApiModelProperty(notes = "主键", dataType = "String")
+ @TableId(type = IdType.AUTO)
+ private String id;
+ @ApiModelProperty(notes = "设备状态", dataType = "String")
+ private String status;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ private String devcode;
+ @ApiModelProperty(notes = "NB平台主键", dataType = "String")
+ private String deviceId;
+ @ApiModelProperty(notes = "记录时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ private Date logtime;
+ @ApiModelProperty(notes = "报警采集周期", dataType = "String")
+ private String alarmperiod;
+ @ApiModelProperty(notes = "报警次数", dataType = "Date")
+ private String alarmcount;
+}
diff --git a/src/main/java/com/casic/entity/NbConfig.java b/src/main/java/com/casic/entity/NbConfig.java
new file mode 100644
index 0000000..e1ffc25
--- /dev/null
+++ b/src/main/java/com/casic/entity/NbConfig.java
@@ -0,0 +1,37 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@Builder
+@ApiModel(value = "nbConfig", description = "设备配置")
+@TableName("nb_config")
+public class NbConfig{
+ @ApiModelProperty(notes = "主键", dataType = "String")
+ @TableId(type = IdType.AUTO)
+ private String id;
+ @ApiModelProperty(notes = "上传周期", dataType = "String")
+ private String upload;
+ @ApiModelProperty(notes = "收集周期", dataType = "String")
+ private String collect;
+ @ApiModelProperty(notes = "重传次数", dataType = "String")
+ private String retry;
+ @ApiModelProperty(notes = "设备状态", dataType = "String")
+ private String status;
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ private String devcode;
+ @ApiModelProperty(notes = "NB平台主键", dataType = "String")
+ private String deviceId;
+ @ApiModelProperty(notes = "记录时间", dataType = "Date")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/NbDevice.java b/src/main/java/com/casic/entity/NbDevice.java
new file mode 100644
index 0000000..e168783
--- /dev/null
+++ b/src/main/java/com/casic/entity/NbDevice.java
@@ -0,0 +1,60 @@
+package com.casic.entity;
+
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+@Builder
+@ApiModel(value = "nbDevice", description = "燃气列表")
+@TableName("nb_device")
+public class NbDevice {
+ @TableId(type = IdType.AUTO)
+ @ApiModelProperty(notes = "透传燃气设备id", dataType = "Long")
+ private Long id;
+ @ExcelProperty("设备编号")
+ @ApiModelProperty(notes = "设备编号", dataType = "String")
+ private String devcode;
+ @ExcelProperty("IMEI")
+ @ApiModelProperty(notes = "IMEI", dataType = "String")
+ private String imei;
+ @ExcelProperty("ICCID")
+ @ApiModelProperty(notes = "ICCID", dataType = "String")
+ private String iccid;
+ @ExcelProperty("设备状态")
+ @ApiModelProperty(notes = "设备状态", dataType = "String")
+ private String status;
+ @ExcelProperty("记录时间")
+ @ApiModelProperty(notes = "记录时间", dataType = "String")
+ @JsonFormat(shape =JsonFormat.Shape.STRING,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
+ private Date logtime;
+ @ApiModelProperty(notes = "NB平台设备编号", dataType = "String")
+ private String deviceId;
+ @ApiModelProperty(notes = "有效值", dataType = "String")
+ private Integer valid;
+ @ApiModelProperty(notes = "产品id", dataType = "String")
+ private String productId;
+ @ApiModelProperty(notes ="就近下发配置操作 1、通用状态下发配置 2、报警配置", dataType = "String")
+ private String recentConf;
+}
diff --git a/src/main/java/com/casic/entity/NbParamConfig.java b/src/main/java/com/casic/entity/NbParamConfig.java
new file mode 100644
index 0000000..6e08148
--- /dev/null
+++ b/src/main/java/com/casic/entity/NbParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+
+@Builder
+@ApiModel(value = "NbParamConfig", description = "NB平台配置参数")
+@TableName("nb_param_config")
+public class NbParamConfig {
+ @ApiModelProperty(notes = "主键", dataType = "String")
+ @TableId(type = IdType.AUTO)
+ private String id;
+ @ApiModelProperty(notes = "参数名", dataType = "String")
+ private String param;
+ @ApiModelProperty(notes = "参数值", dataType = "String")
+ private String value;
+}
diff --git a/src/main/java/com/casic/model/AlarmConfigParam.java b/src/main/java/com/casic/model/AlarmConfigParam.java
new file mode 100644
index 0000000..dced69a
--- /dev/null
+++ b/src/main/java/com/casic/model/AlarmConfigParam.java
@@ -0,0 +1,28 @@
+package com.casic.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Map;
+
+@Data
+@ApiModel(value = "AlarmConfigParam", description = "报警下发配置")
+public class AlarmConfigParam {
+ @ApiModelProperty(notes = "电信平台设备id", dataType = "String",required= true)
+ private String deviceId;
+ @ApiModelProperty(notes = "产品id ", dataType = "String",required= true)
+ private String productId;
+ @ApiModelProperty(notes = "设备编号", dataType = "String",required= true)
+ private String devcode;
+ @ApiModelProperty(notes = "操作人", dataType = "String")
+ private String operator;
+ @ApiModelProperty(notes = "等级", dataType = "Integer")
+ private Integer level;
+ @ApiModelProperty(notes = "指令内容(alarmcount、alarmpeiod)", dataType = "object",required= true)
+ private AlarmContent queryContent;
+ @ApiModelProperty(notes = "指令内容", dataType = "String")
+ private Map content;
+ @ApiModelProperty(notes = "设备组", dataType = "String")
+ private String deviceGroupId;
+}
diff --git a/src/main/java/com/casic/model/AlarmContent.java b/src/main/java/com/casic/model/AlarmContent.java
new file mode 100644
index 0000000..c84bfb0
--- /dev/null
+++ b/src/main/java/com/casic/model/AlarmContent.java
@@ -0,0 +1,15 @@
+package com.casic.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+@Data
+@ApiModel(value = "AlarmContent", description = "报警下发配置参数")
+public class AlarmContent {
+ @ApiModelProperty(notes = "报警采集周期", dataType = "String",required= true)
+ private String alarmperiod;
+ @ApiModelProperty(notes = "报警次数", dataType = "String",required= true)
+ private String alarmcount;
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b33c231
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,160 @@
+
+
+ 4.0.0
+
+ com.casic
+ heb-data-receiver
+ 1.0-SNAPSHOT
+
+
+ com.casic
+ casic-boot-starter-parent
+ 2.0.0.alpha
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.5
+
+
+
+ org.springframework.boot
+
+ spring-boot-starter
+ 2.4.5
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+
+ com.github.xiaoymin
+
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.12
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+ com.alibaba
+ easyexcel
+ 3.0.0-beta3
+
+
+
+ com.ctg.ag
+ ctg-ag-sdk-core
+ 2.5.0-SNAPSHOT
+
+
+
+ com.ctg.ag
+ ag-sdk-biz
+ 2.5.0-SNAPSHOT
+
+
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.0.5
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.2
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..8c08d05
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,29 @@
+package com.casic;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import java.io.FileNotFoundException;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author stylefeng
+ * @Date 2017/5/21 12:06
+ */
+@SpringBootApplication
+@EnableTransactionManagement(proxyTargetClass = true)
+//@ComponentScan(basePackages = "com.casic")
+public class CasicApplication {
+
+ private static final Logger logger = LoggerFactory.getLogger(CasicApplication.class);
+
+ public static void main(String[] args) throws FileNotFoundException {
+ SpringApplication.run(CasicApplication.class, args);
+ logger.info("CasicApplication is success!");
+ }
+}
diff --git a/src/main/java/com/casic/config/AEPParamConfig.java b/src/main/java/com/casic/config/AEPParamConfig.java
new file mode 100644
index 0000000..349d4b2
--- /dev/null
+++ b/src/main/java/com/casic/config/AEPParamConfig.java
@@ -0,0 +1,21 @@
+package com.casic.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@Data
+public class AEPParamConfig {
+
+ @Value("${nb.app.key}")
+ private String appKey;
+ @Value("${nb.app.secret}")
+ private String appSecret;
+ @Value("${nb.gas.url}")
+ private String aepUrl;
+ @Value("${nb.gas.product-id}")
+ private String productId;
+ @Value("${nb.gas.MasterKey}")
+ private String masterKey;
+}
diff --git a/src/main/java/com/casic/config/CodeGenerator.java b/src/main/java/com/casic/config/CodeGenerator.java
new file mode 100644
index 0000000..ca10d95
--- /dev/null
+++ b/src/main/java/com/casic/config/CodeGenerator.java
@@ -0,0 +1,110 @@
+//package com.casic.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.annotation.FieldFill;
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+//import com.baomidou.mybatisplus.generator.AutoGenerator;
+//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+//import com.baomidou.mybatisplus.generator.config.PackageConfig;
+//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+//import com.baomidou.mybatisplus.generator.config.po.TableFill;
+//import com.baomidou.mybatisplus.generator.config.rules.DateType;
+//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+//import org.apache.commons.lang3.StringUtils;
+//
+//import java.util.ArrayList;
+//import java.util.Scanner;
+//
+//public class CodeGenerator {
+//
+//
+// public static String scanner(String tip) {
+// Scanner scanner = new Scanner(System.in);
+// StringBuilder help = new StringBuilder();
+// help.append("请输入" + tip + ":");
+// System.out.println(help.toString());
+// if (scanner.hasNext()) {
+// String ipt = scanner.next();
+// if (StringUtils.isNotBlank(ipt)) {
+// return ipt;
+// }
+// }
+// throw new MybatisPlusException("请输入正确的" + tip + "!");
+// }
+//
+//
+//
+//
+//
+// public static void main(String[] args) {
+// // 代码生成器
+// AutoGenerator mpg = new AutoGenerator();
+//
+// // 全局配置
+// GlobalConfig gc = new GlobalConfig();
+// String projectPath = System.getProperty("user.dir");
+// gc.setOutputDir(projectPath + "/src/main/java");//设置代码生成路径
+// gc.setFileOverride(true);//是否覆盖以前文件
+// gc.setOpen(false);//是否打开生成目录
+// gc.setAuthor("yixin");//设置项目作者名称
+// gc.setIdType(IdType.AUTO);//设置主键策略
+// gc.setBaseResultMap(true);//生成基本ResultMap
+// gc.setBaseColumnList(true);//生成基本ColumnList
+// gc.setServiceName("%sService");//去掉服务默认前缀
+// gc.setDateType(DateType.ONLY_DATE);//设置时间类型
+// mpg.setGlobalConfig(gc);
+//
+// // 数据源配置
+// DataSourceConfig dsc = new DataSourceConfig();
+// dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
+// dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+// dsc.setUsername("root");
+// dsc.setPassword("123456");
+// mpg.setDataSource(dsc);
+//
+// // 包配置
+// PackageConfig pc = new PackageConfig();
+// pc.setParent("com.yixin");
+// pc.setMapper("mapper");
+// pc.setXml("mapper.xml");
+// pc.setEntity("pojo");
+// pc.setService("service");
+// pc.setServiceImpl("service.impl");
+// pc.setController("controller");
+// mpg.setPackageInfo(pc);
+//
+// // 策略配置
+// StrategyConfig sc = new StrategyConfig();
+// sc.setNaming(NamingStrategy.underline_to_camel);
+// sc.setColumnNaming(NamingStrategy.underline_to_camel);
+// sc.setEntityLombokModel(true);//自动lombok
+// sc.setRestControllerStyle(true);
+// sc.setControllerMappingHyphenStyle(true);
+//
+// sc.setLogicDeleteFieldName("deleted");//设置逻辑删除
+//
+// //设置自动填充配置
+// TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);
+// TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);
+// ArrayList tableFills=new ArrayList<>();
+// tableFills.add(gmt_create);
+// tableFills.add(gmt_modified);
+// sc.setTableFillList(tableFills);
+//
+// //乐观锁
+// sc.setVersionFieldName("version");
+// sc.setRestControllerStyle(true);//驼峰命名
+//
+//
+//
+// // sc.setTablePrefix("tbl_"); 设置表名前缀
+// sc.setInclude(scanner("表名,多个英文逗号分割").split(","));
+// mpg.setStrategy(sc);
+//
+// // 生成代码
+// mpg.execute();
+// }
+//
+//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
new file mode 100644
index 0000000..7d19680
--- /dev/null
+++ b/src/main/java/com/casic/config/CorsConfig.java
@@ -0,0 +1,31 @@
+package com.casic.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * 基础框架 - 跨域请求配置
+ */
+@Configuration
+public class CorsConfig {
+ @Bean
+ public CorsFilter corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", buildConfig());
+ return new CorsFilter(source);
+ }
+
+ private CorsConfiguration buildConfig() {
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ // 1允许任何域名使用
+ corsConfiguration.addAllowedOrigin("*");
+ // 2允许任何头
+ corsConfiguration.addAllowedHeader("*");
+ // 3允许任何方法(post、get等)
+ corsConfiguration.addAllowedMethod("*");
+ return corsConfiguration;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
new file mode 100644
index 0000000..bb4c9ff
--- /dev/null
+++ b/src/main/java/com/casic/config/Knife4jConfiguration.java
@@ -0,0 +1,38 @@
+package com.casic.config;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+@Configuration
+@EnableKnife4j
+public class Knife4jConfiguration {
+
+ @Value(value = "${swagger.enable}")
+ public boolean enable;
+ @Value(value = "${swagger.groupName}")
+ public String groupName;
+
+ @Bean(value = "dockerBean")
+ public Docket dockerBean() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(new ApiInfoBuilder()
+ //描述字段支持Markdown语法
+ .description("# Knife4j RESTful APIs")
+ .termsOfServiceUrl("https://doc.casic.com/")
+ .version("1.0")
+ .build())
+ //分组名称
+ .groupName(groupName)
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("com.casic"))
+ .paths(PathSelectors.any()).build().enable(enable);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/MybatisPlusConfig.java b/src/main/java/com/casic/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..58fd3b1
--- /dev/null
+++ b/src/main/java/com/casic/config/MybatisPlusConfig.java
@@ -0,0 +1,18 @@
+package com.casic.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(){
+ MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+}
+
diff --git a/src/main/java/com/casic/controller/AlarmConfigController.java b/src/main/java/com/casic/controller/AlarmConfigController.java
new file mode 100644
index 0000000..85d965a
--- /dev/null
+++ b/src/main/java/com/casic/controller/AlarmConfigController.java
@@ -0,0 +1,57 @@
+package com.casic.controller;
+
+import com.casic.entity.NbAlarmConfig;
+import com.casic.entity.NbDevice;
+import com.casic.model.AlarmConfigParam;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.AlarmConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/alarm")
+@Slf4j
+@Api(tags = "报警配置")
+public class AlarmConfigController {
+
+ private final AlarmConfigService alarmConfigService;
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("报警下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List alarmConfigParamList) {
+ return alarmConfigService.gasBatchConfig(alarmConfigParamList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("报警配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return alarmConfigService.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DataGasController.java b/src/main/java/com/casic/controller/DataGasController.java
new file mode 100644
index 0000000..12ca603
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataGasController.java
@@ -0,0 +1,61 @@
+package com.casic.controller;
+
+import com.casic.entity.LucencyGasData;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDataService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/gas")
+@Api(tags = "数据列表")
+public class DataGasController {
+
+ @Resource
+ private GasDataService gasDataService;
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("数据查询列表-单记录")
+ @RequestMapping("/list-page")
+ public ResponseData> getGasDataList(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasDataList(devcode, beginTime, endTime, currentIndex, pageSize,sortDevcode);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备历史数据列表")
+ @RequestMapping("/devcode/list")
+ public ResponseData> getGasHistoryList(@RequestParam(value = "devcode", required = true) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDataService.getGasHistoryList(devcode, beginTime, endTime, currentIndex, pageSize);
+ }
+
+
+
+}
diff --git a/src/main/java/com/casic/controller/DataRecvController.java b/src/main/java/com/casic/controller/DataRecvController.java
new file mode 100644
index 0000000..3655480
--- /dev/null
+++ b/src/main/java/com/casic/controller/DataRecvController.java
@@ -0,0 +1,31 @@
+package com.casic.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.casic.service.GasDataRecvService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Api(tags = "数据接收")
+@Slf4j
+public class DataRecvController {
+
+ private final GasDataRecvService gasDataRecvService;
+
+ @ApiOperation("数据接收接口,接收三码、实时数据,自动增添设备,前端不需要实现")
+ @RequestMapping("/gas/recv")
+ public Object gasRecv(@RequestBody Map recvDataMap) {
+ log.error("--------" + JSONObject.toJSONString(recvDataMap));
+ return gasDataRecvService.saveRev(recvDataMap);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceConfigController.java b/src/main/java/com/casic/controller/DeviceConfigController.java
new file mode 100644
index 0000000..613d205
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceConfigController.java
@@ -0,0 +1,62 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.BusConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备配置")
+public class DeviceConfigController {
+
+ private final DeviceConfigService devcieConfig;
+
+ @RequestMapping("/device/config")
+ @ApiOperation("设备下发配置")
+ public ResponseData gasDeviceConfig(@RequestBody BusConfigParam busConfigParam) {
+ return devcieConfig.devcieConfig(busConfigParam);
+ }
+
+ @RequestMapping("/batch/config")
+ @ApiOperation("设备下发批量配置")
+ public ResponseData gasBatchConfig(@RequestBody List busConfigList) {
+ return devcieConfig.gasBatchConfig(busConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "status", value = "设备状态", required = false),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备配置列表")
+ @RequestMapping(value = "/config/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return devcieConfig.configList(devcode, beginTime, endTime,currentIndex,pageSize,status,sortDevcode);
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceStatusController.java b/src/main/java/com/casic/controller/DeviceStatusController.java
new file mode 100644
index 0000000..8d6d05c
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceStatusController.java
@@ -0,0 +1,74 @@
+package com.casic.controller;
+
+import com.casic.entity.NbDevice;
+import com.casic.model.DataGasConfigParam;
+import com.casic.model.ResponseData;
+import com.casic.service.GasDeviceService;
+import com.casic.util.ExportExcelUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/casic")
+@Slf4j
+@Api(tags = "设备管理")
+public class DeviceStatusController extends ExportExcelUtil {
+
+ private final GasDeviceService gasDeviceService;
+
+ @RequestMapping("/status/config")
+ @ApiOperation("状态下发查询")
+ public ResponseData gasStatusConfig(@RequestBody List dataGasConfigList) {
+ return gasDeviceService.devcieStatusConfig(dataGasConfigList);
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "keywords", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false)
+ })
+ @ApiOperation("设备列表导出")
+ @RequestMapping(value = "/device/export")
+ public void deviceDataExport(String keywords, String beginTime, String endTime) throws IOException {
+ List deviceDataExcelDtos = gasDeviceService.getDevicieList(beginTime, endTime, keywords);
+ super.exportExcel(NbDevice.class, deviceDataExcelDtos, "设备列表.xlsx");
+ }
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "devcode", value = "设备编号", required = false),
+ @ApiImplicitParam(name = "beginTime", value = "开始时间", required = false),
+ @ApiImplicitParam(name = "endTime", value = "结束时间", required = false),
+ @ApiImplicitParam(name = "emptyStatus", value = "空状态(查true,不查false)", required = true),
+ @ApiImplicitParam(name = "sortDevcode", value = "按设备编号排序", required = true),
+ @ApiImplicitParam(name = "currentIndex", value = "当前页", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "页大小", required = true)
+ })
+ @ApiOperation("设备分页列表")
+ @RequestMapping(value = "/device/list")
+ public ResponseData> deviceListPage(@RequestParam(value = "devcode", required = false) String devcode,
+ @RequestParam(value = "emptyStatus", required = true) Boolean emptyStatus,
+ @RequestParam(value = "beginTime", required = false) String beginTime,
+ @RequestParam(value = "endTime", required = false) String endTime,
+ @RequestParam(value = "sortDevcode", required = true) Boolean sortDevcode,
+ @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
+ @RequestParam(value = "pageSize", required = true) Integer pageSize) {
+ return gasDeviceService.getDevicieListPage(devcode, beginTime, endTime, currentIndex, pageSize,emptyStatus,sortDevcode);
+ }
+
+ @RequestMapping("/device/dict")
+ @ApiOperation("设备字典列表")
+ public ResponseData