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> 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/src/main/java/com/casic/model/BusConfigParam.java b/src/main/java/com/casic/model/BusConfigParam.java new file mode 100644 index 0000000..44004b5 --- /dev/null +++ b/src/main/java/com/casic/model/BusConfigParam.java @@ -0,0 +1,30 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + + +@Data +@ApiModel(value = "BusConfigParam", description = "设备下发配置(除了不传的,其他都是必传)") +public class BusConfigParam { + @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 = "指令内容(上传周期upload、采集周期collect、重试次数retry,都是必填)", dataType = "object",required= true) + private QueryContent 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/src/main/java/com/casic/model/BusConfigParam.java b/src/main/java/com/casic/model/BusConfigParam.java new file mode 100644 index 0000000..44004b5 --- /dev/null +++ b/src/main/java/com/casic/model/BusConfigParam.java @@ -0,0 +1,30 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + + +@Data +@ApiModel(value = "BusConfigParam", description = "设备下发配置(除了不传的,其他都是必传)") +public class BusConfigParam { + @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 = "指令内容(上传周期upload、采集周期collect、重试次数retry,都是必填)", dataType = "object",required= true) + private QueryContent queryContent; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/DataGasConfigParam.java b/src/main/java/com/casic/model/DataGasConfigParam.java new file mode 100644 index 0000000..4e71c77 --- /dev/null +++ b/src/main/java/com/casic/model/DataGasConfigParam.java @@ -0,0 +1,24 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +@Data +@ApiModel(value = "DataGasConfigParam", description = "状态下发配置参数(除了不传,其他都是必传)") +public class DataGasConfigParam { + @ApiModelProperty(notes = "电信平台设备id", dataType = "String",required= true) + private String deviceId; + @ApiModelProperty(notes = "产品id", dataType = "String",required= true) + private String productId; + @ApiModelProperty(notes = "操作人", dataType = "String") + private String operator; + @ApiModelProperty(notes = "设备等级", dataType = "Integer" ) + private Integer level; + @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/src/main/java/com/casic/model/BusConfigParam.java b/src/main/java/com/casic/model/BusConfigParam.java new file mode 100644 index 0000000..44004b5 --- /dev/null +++ b/src/main/java/com/casic/model/BusConfigParam.java @@ -0,0 +1,30 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + + +@Data +@ApiModel(value = "BusConfigParam", description = "设备下发配置(除了不传的,其他都是必传)") +public class BusConfigParam { + @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 = "指令内容(上传周期upload、采集周期collect、重试次数retry,都是必填)", dataType = "object",required= true) + private QueryContent queryContent; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/DataGasConfigParam.java b/src/main/java/com/casic/model/DataGasConfigParam.java new file mode 100644 index 0000000..4e71c77 --- /dev/null +++ b/src/main/java/com/casic/model/DataGasConfigParam.java @@ -0,0 +1,24 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +@Data +@ApiModel(value = "DataGasConfigParam", description = "状态下发配置参数(除了不传,其他都是必传)") +public class DataGasConfigParam { + @ApiModelProperty(notes = "电信平台设备id", dataType = "String",required= true) + private String deviceId; + @ApiModelProperty(notes = "产品id", dataType = "String",required= true) + private String productId; + @ApiModelProperty(notes = "操作人", dataType = "String") + private String operator; + @ApiModelProperty(notes = "设备等级", dataType = "Integer" ) + private Integer level; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/ErrorResponseData.java b/src/main/java/com/casic/model/ErrorResponseData.java new file mode 100644 index 0000000..080fcbc --- /dev/null +++ b/src/main/java/com/casic/model/ErrorResponseData.java @@ -0,0 +1,29 @@ +package com.casic.model; + + +public class ErrorResponseData extends ResponseData { + private String exceptionClazz; + + public String getExceptionClazz() { + return this.exceptionClazz; + } + + + public ErrorResponseData(String message) { + super(false, ResponseData.DEFAULT_ERROR_CODE, message, (Object)null); + } + + + public void setExceptionClazz(String exceptionClazz) { + this.exceptionClazz = exceptionClazz; + } + @Override + protected boolean canEqual(Object other) { + return other instanceof ErrorResponseData; + } + + @Override + public String toString() { + return "ErrorResponseData(exceptionClazz=" + this.getExceptionClazz() + ")"; + } +} 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/src/main/java/com/casic/model/BusConfigParam.java b/src/main/java/com/casic/model/BusConfigParam.java new file mode 100644 index 0000000..44004b5 --- /dev/null +++ b/src/main/java/com/casic/model/BusConfigParam.java @@ -0,0 +1,30 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + + +@Data +@ApiModel(value = "BusConfigParam", description = "设备下发配置(除了不传的,其他都是必传)") +public class BusConfigParam { + @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 = "指令内容(上传周期upload、采集周期collect、重试次数retry,都是必填)", dataType = "object",required= true) + private QueryContent queryContent; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/DataGasConfigParam.java b/src/main/java/com/casic/model/DataGasConfigParam.java new file mode 100644 index 0000000..4e71c77 --- /dev/null +++ b/src/main/java/com/casic/model/DataGasConfigParam.java @@ -0,0 +1,24 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +@Data +@ApiModel(value = "DataGasConfigParam", description = "状态下发配置参数(除了不传,其他都是必传)") +public class DataGasConfigParam { + @ApiModelProperty(notes = "电信平台设备id", dataType = "String",required= true) + private String deviceId; + @ApiModelProperty(notes = "产品id", dataType = "String",required= true) + private String productId; + @ApiModelProperty(notes = "操作人", dataType = "String") + private String operator; + @ApiModelProperty(notes = "设备等级", dataType = "Integer" ) + private Integer level; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/ErrorResponseData.java b/src/main/java/com/casic/model/ErrorResponseData.java new file mode 100644 index 0000000..080fcbc --- /dev/null +++ b/src/main/java/com/casic/model/ErrorResponseData.java @@ -0,0 +1,29 @@ +package com.casic.model; + + +public class ErrorResponseData extends ResponseData { + private String exceptionClazz; + + public String getExceptionClazz() { + return this.exceptionClazz; + } + + + public ErrorResponseData(String message) { + super(false, ResponseData.DEFAULT_ERROR_CODE, message, (Object)null); + } + + + public void setExceptionClazz(String exceptionClazz) { + this.exceptionClazz = exceptionClazz; + } + @Override + protected boolean canEqual(Object other) { + return other instanceof ErrorResponseData; + } + + @Override + public String toString() { + return "ErrorResponseData(exceptionClazz=" + this.getExceptionClazz() + ")"; + } +} diff --git a/src/main/java/com/casic/model/QueryContent.java b/src/main/java/com/casic/model/QueryContent.java new file mode 100644 index 0000000..e6cd12d --- /dev/null +++ b/src/main/java/com/casic/model/QueryContent.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "QueryContent", description = "下发配置参数") +public class QueryContent { + @ApiModelProperty(notes = "上传周期", dataType = "String",required= true) + private String upload; + @ApiModelProperty(notes = "收集周期", dataType = "String",required= true) + private String collect; + @ApiModelProperty(notes = "重传次数", dataType = "String",required= true) + private String retry; +} 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/src/main/java/com/casic/model/BusConfigParam.java b/src/main/java/com/casic/model/BusConfigParam.java new file mode 100644 index 0000000..44004b5 --- /dev/null +++ b/src/main/java/com/casic/model/BusConfigParam.java @@ -0,0 +1,30 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + + +@Data +@ApiModel(value = "BusConfigParam", description = "设备下发配置(除了不传的,其他都是必传)") +public class BusConfigParam { + @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 = "指令内容(上传周期upload、采集周期collect、重试次数retry,都是必填)", dataType = "object",required= true) + private QueryContent queryContent; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/DataGasConfigParam.java b/src/main/java/com/casic/model/DataGasConfigParam.java new file mode 100644 index 0000000..4e71c77 --- /dev/null +++ b/src/main/java/com/casic/model/DataGasConfigParam.java @@ -0,0 +1,24 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +@Data +@ApiModel(value = "DataGasConfigParam", description = "状态下发配置参数(除了不传,其他都是必传)") +public class DataGasConfigParam { + @ApiModelProperty(notes = "电信平台设备id", dataType = "String",required= true) + private String deviceId; + @ApiModelProperty(notes = "产品id", dataType = "String",required= true) + private String productId; + @ApiModelProperty(notes = "操作人", dataType = "String") + private String operator; + @ApiModelProperty(notes = "设备等级", dataType = "Integer" ) + private Integer level; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/ErrorResponseData.java b/src/main/java/com/casic/model/ErrorResponseData.java new file mode 100644 index 0000000..080fcbc --- /dev/null +++ b/src/main/java/com/casic/model/ErrorResponseData.java @@ -0,0 +1,29 @@ +package com.casic.model; + + +public class ErrorResponseData extends ResponseData { + private String exceptionClazz; + + public String getExceptionClazz() { + return this.exceptionClazz; + } + + + public ErrorResponseData(String message) { + super(false, ResponseData.DEFAULT_ERROR_CODE, message, (Object)null); + } + + + public void setExceptionClazz(String exceptionClazz) { + this.exceptionClazz = exceptionClazz; + } + @Override + protected boolean canEqual(Object other) { + return other instanceof ErrorResponseData; + } + + @Override + public String toString() { + return "ErrorResponseData(exceptionClazz=" + this.getExceptionClazz() + ")"; + } +} diff --git a/src/main/java/com/casic/model/QueryContent.java b/src/main/java/com/casic/model/QueryContent.java new file mode 100644 index 0000000..e6cd12d --- /dev/null +++ b/src/main/java/com/casic/model/QueryContent.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "QueryContent", description = "下发配置参数") +public class QueryContent { + @ApiModelProperty(notes = "上传周期", dataType = "String",required= true) + private String upload; + @ApiModelProperty(notes = "收集周期", dataType = "String",required= true) + private String collect; + @ApiModelProperty(notes = "重传次数", dataType = "String",required= true) + private String retry; +} diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java new file mode 100644 index 0000000..c09b2d2 --- /dev/null +++ b/src/main/java/com/casic/model/ResponseData.java @@ -0,0 +1,58 @@ +package com.casic.model; + +import com.alibaba.fastjson.JSONObject; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.CreateCommandRequest; +import lombok.Data; + +import java.util.Calendar; +import java.util.Date; + +/** + * @author cz + * @date 2022-8-12 + */ +@Data +public class ResponseData { + public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功"; + public static final String DEFAULT_ERROR_MESSAGE = "网络异常"; + public static final Integer DEFAULT_SUCCESS_CODE = 200; + public static final Integer DEFAULT_ERROR_CODE = 500; + private Boolean success; + private Integer code; + private String message; + private T data; + + +// public static void main(String[] args) throws Exception { +// Calendar now = Calendar.getInstance(); +// Date getTime = now.getTime(); +//// if (isWeekend(now)) { +// now.add(Calendar.WEEK_OF_YEAR, 1); +// now.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); +// now.set(Calendar.HOUR_OF_DAY, 8); +// now.set(Calendar.MINUTE, 0); +// now.set(Calendar.SECOND, 0); +//// } else { +//// now.add(Calendar.HOUR, 24); +//// while (isWeekend(now)) { +//// now.add(Calendar.HOUR, 24); +//// } +//// } +// +// System.out.println(now.getTime()); +// } + + public ResponseData() { + } + public ResponseData(Boolean success, Integer code, String message, T data) { + this.success = success; + this.code = code; + this.message = message; + this.data = data; + } + + public static ErrorResponseData error(String message) { + return new ErrorResponseData(message); + } +} \ 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/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/src/main/java/com/casic/model/BusConfigParam.java b/src/main/java/com/casic/model/BusConfigParam.java new file mode 100644 index 0000000..44004b5 --- /dev/null +++ b/src/main/java/com/casic/model/BusConfigParam.java @@ -0,0 +1,30 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + + +@Data +@ApiModel(value = "BusConfigParam", description = "设备下发配置(除了不传的,其他都是必传)") +public class BusConfigParam { + @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 = "指令内容(上传周期upload、采集周期collect、重试次数retry,都是必填)", dataType = "object",required= true) + private QueryContent queryContent; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/DataGasConfigParam.java b/src/main/java/com/casic/model/DataGasConfigParam.java new file mode 100644 index 0000000..4e71c77 --- /dev/null +++ b/src/main/java/com/casic/model/DataGasConfigParam.java @@ -0,0 +1,24 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +@Data +@ApiModel(value = "DataGasConfigParam", description = "状态下发配置参数(除了不传,其他都是必传)") +public class DataGasConfigParam { + @ApiModelProperty(notes = "电信平台设备id", dataType = "String",required= true) + private String deviceId; + @ApiModelProperty(notes = "产品id", dataType = "String",required= true) + private String productId; + @ApiModelProperty(notes = "操作人", dataType = "String") + private String operator; + @ApiModelProperty(notes = "设备等级", dataType = "Integer" ) + private Integer level; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/ErrorResponseData.java b/src/main/java/com/casic/model/ErrorResponseData.java new file mode 100644 index 0000000..080fcbc --- /dev/null +++ b/src/main/java/com/casic/model/ErrorResponseData.java @@ -0,0 +1,29 @@ +package com.casic.model; + + +public class ErrorResponseData extends ResponseData { + private String exceptionClazz; + + public String getExceptionClazz() { + return this.exceptionClazz; + } + + + public ErrorResponseData(String message) { + super(false, ResponseData.DEFAULT_ERROR_CODE, message, (Object)null); + } + + + public void setExceptionClazz(String exceptionClazz) { + this.exceptionClazz = exceptionClazz; + } + @Override + protected boolean canEqual(Object other) { + return other instanceof ErrorResponseData; + } + + @Override + public String toString() { + return "ErrorResponseData(exceptionClazz=" + this.getExceptionClazz() + ")"; + } +} diff --git a/src/main/java/com/casic/model/QueryContent.java b/src/main/java/com/casic/model/QueryContent.java new file mode 100644 index 0000000..e6cd12d --- /dev/null +++ b/src/main/java/com/casic/model/QueryContent.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "QueryContent", description = "下发配置参数") +public class QueryContent { + @ApiModelProperty(notes = "上传周期", dataType = "String",required= true) + private String upload; + @ApiModelProperty(notes = "收集周期", dataType = "String",required= true) + private String collect; + @ApiModelProperty(notes = "重传次数", dataType = "String",required= true) + private String retry; +} diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java new file mode 100644 index 0000000..c09b2d2 --- /dev/null +++ b/src/main/java/com/casic/model/ResponseData.java @@ -0,0 +1,58 @@ +package com.casic.model; + +import com.alibaba.fastjson.JSONObject; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.CreateCommandRequest; +import lombok.Data; + +import java.util.Calendar; +import java.util.Date; + +/** + * @author cz + * @date 2022-8-12 + */ +@Data +public class ResponseData { + public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功"; + public static final String DEFAULT_ERROR_MESSAGE = "网络异常"; + public static final Integer DEFAULT_SUCCESS_CODE = 200; + public static final Integer DEFAULT_ERROR_CODE = 500; + private Boolean success; + private Integer code; + private String message; + private T data; + + +// public static void main(String[] args) throws Exception { +// Calendar now = Calendar.getInstance(); +// Date getTime = now.getTime(); +//// if (isWeekend(now)) { +// now.add(Calendar.WEEK_OF_YEAR, 1); +// now.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); +// now.set(Calendar.HOUR_OF_DAY, 8); +// now.set(Calendar.MINUTE, 0); +// now.set(Calendar.SECOND, 0); +//// } else { +//// now.add(Calendar.HOUR, 24); +//// while (isWeekend(now)) { +//// now.add(Calendar.HOUR, 24); +//// } +//// } +// +// System.out.println(now.getTime()); +// } + + public ResponseData() { + } + public ResponseData(Boolean success, Integer code, String message, T data) { + this.success = success; + this.code = code; + this.message = message; + this.data = data; + } + + public static ErrorResponseData error(String message) { + return new ErrorResponseData(message); + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmConfigService.java b/src/main/java/com/casic/service/AlarmConfigService.java new file mode 100644 index 0000000..2d76956 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmConfigService.java @@ -0,0 +1,15 @@ +package com.casic.service; + +import com.casic.model.AlarmConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface AlarmConfigService { + + + ResponseData gasBatchConfig( List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean 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/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/src/main/java/com/casic/model/BusConfigParam.java b/src/main/java/com/casic/model/BusConfigParam.java new file mode 100644 index 0000000..44004b5 --- /dev/null +++ b/src/main/java/com/casic/model/BusConfigParam.java @@ -0,0 +1,30 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + + +@Data +@ApiModel(value = "BusConfigParam", description = "设备下发配置(除了不传的,其他都是必传)") +public class BusConfigParam { + @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 = "指令内容(上传周期upload、采集周期collect、重试次数retry,都是必填)", dataType = "object",required= true) + private QueryContent queryContent; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/DataGasConfigParam.java b/src/main/java/com/casic/model/DataGasConfigParam.java new file mode 100644 index 0000000..4e71c77 --- /dev/null +++ b/src/main/java/com/casic/model/DataGasConfigParam.java @@ -0,0 +1,24 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +@Data +@ApiModel(value = "DataGasConfigParam", description = "状态下发配置参数(除了不传,其他都是必传)") +public class DataGasConfigParam { + @ApiModelProperty(notes = "电信平台设备id", dataType = "String",required= true) + private String deviceId; + @ApiModelProperty(notes = "产品id", dataType = "String",required= true) + private String productId; + @ApiModelProperty(notes = "操作人", dataType = "String") + private String operator; + @ApiModelProperty(notes = "设备等级", dataType = "Integer" ) + private Integer level; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/ErrorResponseData.java b/src/main/java/com/casic/model/ErrorResponseData.java new file mode 100644 index 0000000..080fcbc --- /dev/null +++ b/src/main/java/com/casic/model/ErrorResponseData.java @@ -0,0 +1,29 @@ +package com.casic.model; + + +public class ErrorResponseData extends ResponseData { + private String exceptionClazz; + + public String getExceptionClazz() { + return this.exceptionClazz; + } + + + public ErrorResponseData(String message) { + super(false, ResponseData.DEFAULT_ERROR_CODE, message, (Object)null); + } + + + public void setExceptionClazz(String exceptionClazz) { + this.exceptionClazz = exceptionClazz; + } + @Override + protected boolean canEqual(Object other) { + return other instanceof ErrorResponseData; + } + + @Override + public String toString() { + return "ErrorResponseData(exceptionClazz=" + this.getExceptionClazz() + ")"; + } +} diff --git a/src/main/java/com/casic/model/QueryContent.java b/src/main/java/com/casic/model/QueryContent.java new file mode 100644 index 0000000..e6cd12d --- /dev/null +++ b/src/main/java/com/casic/model/QueryContent.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "QueryContent", description = "下发配置参数") +public class QueryContent { + @ApiModelProperty(notes = "上传周期", dataType = "String",required= true) + private String upload; + @ApiModelProperty(notes = "收集周期", dataType = "String",required= true) + private String collect; + @ApiModelProperty(notes = "重传次数", dataType = "String",required= true) + private String retry; +} diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java new file mode 100644 index 0000000..c09b2d2 --- /dev/null +++ b/src/main/java/com/casic/model/ResponseData.java @@ -0,0 +1,58 @@ +package com.casic.model; + +import com.alibaba.fastjson.JSONObject; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.CreateCommandRequest; +import lombok.Data; + +import java.util.Calendar; +import java.util.Date; + +/** + * @author cz + * @date 2022-8-12 + */ +@Data +public class ResponseData { + public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功"; + public static final String DEFAULT_ERROR_MESSAGE = "网络异常"; + public static final Integer DEFAULT_SUCCESS_CODE = 200; + public static final Integer DEFAULT_ERROR_CODE = 500; + private Boolean success; + private Integer code; + private String message; + private T data; + + +// public static void main(String[] args) throws Exception { +// Calendar now = Calendar.getInstance(); +// Date getTime = now.getTime(); +//// if (isWeekend(now)) { +// now.add(Calendar.WEEK_OF_YEAR, 1); +// now.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); +// now.set(Calendar.HOUR_OF_DAY, 8); +// now.set(Calendar.MINUTE, 0); +// now.set(Calendar.SECOND, 0); +//// } else { +//// now.add(Calendar.HOUR, 24); +//// while (isWeekend(now)) { +//// now.add(Calendar.HOUR, 24); +//// } +//// } +// +// System.out.println(now.getTime()); +// } + + public ResponseData() { + } + public ResponseData(Boolean success, Integer code, String message, T data) { + this.success = success; + this.code = code; + this.message = message; + this.data = data; + } + + public static ErrorResponseData error(String message) { + return new ErrorResponseData(message); + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmConfigService.java b/src/main/java/com/casic/service/AlarmConfigService.java new file mode 100644 index 0000000..2d76956 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmConfigService.java @@ -0,0 +1,15 @@ +package com.casic.service; + +import com.casic.model.AlarmConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface AlarmConfigService { + + + ResponseData gasBatchConfig( List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/DeviceConfigService.java b/src/main/java/com/casic/service/DeviceConfigService.java new file mode 100644 index 0000000..0cf7efc --- /dev/null +++ b/src/main/java/com/casic/service/DeviceConfigService.java @@ -0,0 +1,16 @@ +package com.casic.service; + +import com.casic.model.BusConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface DeviceConfigService { + + ResponseData devcieConfig(BusConfigParam busConfigParam); + + ResponseData gasBatchConfig(List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean 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/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/src/main/java/com/casic/model/BusConfigParam.java b/src/main/java/com/casic/model/BusConfigParam.java new file mode 100644 index 0000000..44004b5 --- /dev/null +++ b/src/main/java/com/casic/model/BusConfigParam.java @@ -0,0 +1,30 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + + +@Data +@ApiModel(value = "BusConfigParam", description = "设备下发配置(除了不传的,其他都是必传)") +public class BusConfigParam { + @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 = "指令内容(上传周期upload、采集周期collect、重试次数retry,都是必填)", dataType = "object",required= true) + private QueryContent queryContent; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/DataGasConfigParam.java b/src/main/java/com/casic/model/DataGasConfigParam.java new file mode 100644 index 0000000..4e71c77 --- /dev/null +++ b/src/main/java/com/casic/model/DataGasConfigParam.java @@ -0,0 +1,24 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +@Data +@ApiModel(value = "DataGasConfigParam", description = "状态下发配置参数(除了不传,其他都是必传)") +public class DataGasConfigParam { + @ApiModelProperty(notes = "电信平台设备id", dataType = "String",required= true) + private String deviceId; + @ApiModelProperty(notes = "产品id", dataType = "String",required= true) + private String productId; + @ApiModelProperty(notes = "操作人", dataType = "String") + private String operator; + @ApiModelProperty(notes = "设备等级", dataType = "Integer" ) + private Integer level; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/ErrorResponseData.java b/src/main/java/com/casic/model/ErrorResponseData.java new file mode 100644 index 0000000..080fcbc --- /dev/null +++ b/src/main/java/com/casic/model/ErrorResponseData.java @@ -0,0 +1,29 @@ +package com.casic.model; + + +public class ErrorResponseData extends ResponseData { + private String exceptionClazz; + + public String getExceptionClazz() { + return this.exceptionClazz; + } + + + public ErrorResponseData(String message) { + super(false, ResponseData.DEFAULT_ERROR_CODE, message, (Object)null); + } + + + public void setExceptionClazz(String exceptionClazz) { + this.exceptionClazz = exceptionClazz; + } + @Override + protected boolean canEqual(Object other) { + return other instanceof ErrorResponseData; + } + + @Override + public String toString() { + return "ErrorResponseData(exceptionClazz=" + this.getExceptionClazz() + ")"; + } +} diff --git a/src/main/java/com/casic/model/QueryContent.java b/src/main/java/com/casic/model/QueryContent.java new file mode 100644 index 0000000..e6cd12d --- /dev/null +++ b/src/main/java/com/casic/model/QueryContent.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "QueryContent", description = "下发配置参数") +public class QueryContent { + @ApiModelProperty(notes = "上传周期", dataType = "String",required= true) + private String upload; + @ApiModelProperty(notes = "收集周期", dataType = "String",required= true) + private String collect; + @ApiModelProperty(notes = "重传次数", dataType = "String",required= true) + private String retry; +} diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java new file mode 100644 index 0000000..c09b2d2 --- /dev/null +++ b/src/main/java/com/casic/model/ResponseData.java @@ -0,0 +1,58 @@ +package com.casic.model; + +import com.alibaba.fastjson.JSONObject; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.CreateCommandRequest; +import lombok.Data; + +import java.util.Calendar; +import java.util.Date; + +/** + * @author cz + * @date 2022-8-12 + */ +@Data +public class ResponseData { + public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功"; + public static final String DEFAULT_ERROR_MESSAGE = "网络异常"; + public static final Integer DEFAULT_SUCCESS_CODE = 200; + public static final Integer DEFAULT_ERROR_CODE = 500; + private Boolean success; + private Integer code; + private String message; + private T data; + + +// public static void main(String[] args) throws Exception { +// Calendar now = Calendar.getInstance(); +// Date getTime = now.getTime(); +//// if (isWeekend(now)) { +// now.add(Calendar.WEEK_OF_YEAR, 1); +// now.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); +// now.set(Calendar.HOUR_OF_DAY, 8); +// now.set(Calendar.MINUTE, 0); +// now.set(Calendar.SECOND, 0); +//// } else { +//// now.add(Calendar.HOUR, 24); +//// while (isWeekend(now)) { +//// now.add(Calendar.HOUR, 24); +//// } +//// } +// +// System.out.println(now.getTime()); +// } + + public ResponseData() { + } + public ResponseData(Boolean success, Integer code, String message, T data) { + this.success = success; + this.code = code; + this.message = message; + this.data = data; + } + + public static ErrorResponseData error(String message) { + return new ErrorResponseData(message); + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmConfigService.java b/src/main/java/com/casic/service/AlarmConfigService.java new file mode 100644 index 0000000..2d76956 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmConfigService.java @@ -0,0 +1,15 @@ +package com.casic.service; + +import com.casic.model.AlarmConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface AlarmConfigService { + + + ResponseData gasBatchConfig( List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/DeviceConfigService.java b/src/main/java/com/casic/service/DeviceConfigService.java new file mode 100644 index 0000000..0cf7efc --- /dev/null +++ b/src/main/java/com/casic/service/DeviceConfigService.java @@ -0,0 +1,16 @@ +package com.casic.service; + +import com.casic.model.BusConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface DeviceConfigService { + + ResponseData devcieConfig(BusConfigParam busConfigParam); + + ResponseData gasBatchConfig(List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/GasDataRecvService.java b/src/main/java/com/casic/service/GasDataRecvService.java new file mode 100644 index 0000000..25d7da9 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataRecvService.java @@ -0,0 +1,9 @@ +package com.casic.service; + +import java.util.Map; + +public interface GasDataRecvService { + + Object saveRev(Map 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/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/src/main/java/com/casic/model/BusConfigParam.java b/src/main/java/com/casic/model/BusConfigParam.java new file mode 100644 index 0000000..44004b5 --- /dev/null +++ b/src/main/java/com/casic/model/BusConfigParam.java @@ -0,0 +1,30 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + + +@Data +@ApiModel(value = "BusConfigParam", description = "设备下发配置(除了不传的,其他都是必传)") +public class BusConfigParam { + @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 = "指令内容(上传周期upload、采集周期collect、重试次数retry,都是必填)", dataType = "object",required= true) + private QueryContent queryContent; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/DataGasConfigParam.java b/src/main/java/com/casic/model/DataGasConfigParam.java new file mode 100644 index 0000000..4e71c77 --- /dev/null +++ b/src/main/java/com/casic/model/DataGasConfigParam.java @@ -0,0 +1,24 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +@Data +@ApiModel(value = "DataGasConfigParam", description = "状态下发配置参数(除了不传,其他都是必传)") +public class DataGasConfigParam { + @ApiModelProperty(notes = "电信平台设备id", dataType = "String",required= true) + private String deviceId; + @ApiModelProperty(notes = "产品id", dataType = "String",required= true) + private String productId; + @ApiModelProperty(notes = "操作人", dataType = "String") + private String operator; + @ApiModelProperty(notes = "设备等级", dataType = "Integer" ) + private Integer level; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/ErrorResponseData.java b/src/main/java/com/casic/model/ErrorResponseData.java new file mode 100644 index 0000000..080fcbc --- /dev/null +++ b/src/main/java/com/casic/model/ErrorResponseData.java @@ -0,0 +1,29 @@ +package com.casic.model; + + +public class ErrorResponseData extends ResponseData { + private String exceptionClazz; + + public String getExceptionClazz() { + return this.exceptionClazz; + } + + + public ErrorResponseData(String message) { + super(false, ResponseData.DEFAULT_ERROR_CODE, message, (Object)null); + } + + + public void setExceptionClazz(String exceptionClazz) { + this.exceptionClazz = exceptionClazz; + } + @Override + protected boolean canEqual(Object other) { + return other instanceof ErrorResponseData; + } + + @Override + public String toString() { + return "ErrorResponseData(exceptionClazz=" + this.getExceptionClazz() + ")"; + } +} diff --git a/src/main/java/com/casic/model/QueryContent.java b/src/main/java/com/casic/model/QueryContent.java new file mode 100644 index 0000000..e6cd12d --- /dev/null +++ b/src/main/java/com/casic/model/QueryContent.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "QueryContent", description = "下发配置参数") +public class QueryContent { + @ApiModelProperty(notes = "上传周期", dataType = "String",required= true) + private String upload; + @ApiModelProperty(notes = "收集周期", dataType = "String",required= true) + private String collect; + @ApiModelProperty(notes = "重传次数", dataType = "String",required= true) + private String retry; +} diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java new file mode 100644 index 0000000..c09b2d2 --- /dev/null +++ b/src/main/java/com/casic/model/ResponseData.java @@ -0,0 +1,58 @@ +package com.casic.model; + +import com.alibaba.fastjson.JSONObject; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.CreateCommandRequest; +import lombok.Data; + +import java.util.Calendar; +import java.util.Date; + +/** + * @author cz + * @date 2022-8-12 + */ +@Data +public class ResponseData { + public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功"; + public static final String DEFAULT_ERROR_MESSAGE = "网络异常"; + public static final Integer DEFAULT_SUCCESS_CODE = 200; + public static final Integer DEFAULT_ERROR_CODE = 500; + private Boolean success; + private Integer code; + private String message; + private T data; + + +// public static void main(String[] args) throws Exception { +// Calendar now = Calendar.getInstance(); +// Date getTime = now.getTime(); +//// if (isWeekend(now)) { +// now.add(Calendar.WEEK_OF_YEAR, 1); +// now.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); +// now.set(Calendar.HOUR_OF_DAY, 8); +// now.set(Calendar.MINUTE, 0); +// now.set(Calendar.SECOND, 0); +//// } else { +//// now.add(Calendar.HOUR, 24); +//// while (isWeekend(now)) { +//// now.add(Calendar.HOUR, 24); +//// } +//// } +// +// System.out.println(now.getTime()); +// } + + public ResponseData() { + } + public ResponseData(Boolean success, Integer code, String message, T data) { + this.success = success; + this.code = code; + this.message = message; + this.data = data; + } + + public static ErrorResponseData error(String message) { + return new ErrorResponseData(message); + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmConfigService.java b/src/main/java/com/casic/service/AlarmConfigService.java new file mode 100644 index 0000000..2d76956 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmConfigService.java @@ -0,0 +1,15 @@ +package com.casic.service; + +import com.casic.model.AlarmConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface AlarmConfigService { + + + ResponseData gasBatchConfig( List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/DeviceConfigService.java b/src/main/java/com/casic/service/DeviceConfigService.java new file mode 100644 index 0000000..0cf7efc --- /dev/null +++ b/src/main/java/com/casic/service/DeviceConfigService.java @@ -0,0 +1,16 @@ +package com.casic.service; + +import com.casic.model.BusConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface DeviceConfigService { + + ResponseData devcieConfig(BusConfigParam busConfigParam); + + ResponseData gasBatchConfig(List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/GasDataRecvService.java b/src/main/java/com/casic/service/GasDataRecvService.java new file mode 100644 index 0000000..25d7da9 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataRecvService.java @@ -0,0 +1,9 @@ +package com.casic.service; + +import java.util.Map; + +public interface GasDataRecvService { + + Object saveRev(Map recvDataMap); + +} diff --git a/src/main/java/com/casic/service/GasDataService.java b/src/main/java/com/casic/service/GasDataService.java new file mode 100644 index 0000000..090c624 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataService.java @@ -0,0 +1,19 @@ +package com.casic.service; + +import com.casic.entity.LucencyGasData; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface GasDataService { + + + ResponseData> getGasDataList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean sortDevcode); + + + ResponseData> getGasHistoryList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer 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/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/src/main/java/com/casic/model/BusConfigParam.java b/src/main/java/com/casic/model/BusConfigParam.java new file mode 100644 index 0000000..44004b5 --- /dev/null +++ b/src/main/java/com/casic/model/BusConfigParam.java @@ -0,0 +1,30 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + + +@Data +@ApiModel(value = "BusConfigParam", description = "设备下发配置(除了不传的,其他都是必传)") +public class BusConfigParam { + @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 = "指令内容(上传周期upload、采集周期collect、重试次数retry,都是必填)", dataType = "object",required= true) + private QueryContent queryContent; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/DataGasConfigParam.java b/src/main/java/com/casic/model/DataGasConfigParam.java new file mode 100644 index 0000000..4e71c77 --- /dev/null +++ b/src/main/java/com/casic/model/DataGasConfigParam.java @@ -0,0 +1,24 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +@Data +@ApiModel(value = "DataGasConfigParam", description = "状态下发配置参数(除了不传,其他都是必传)") +public class DataGasConfigParam { + @ApiModelProperty(notes = "电信平台设备id", dataType = "String",required= true) + private String deviceId; + @ApiModelProperty(notes = "产品id", dataType = "String",required= true) + private String productId; + @ApiModelProperty(notes = "操作人", dataType = "String") + private String operator; + @ApiModelProperty(notes = "设备等级", dataType = "Integer" ) + private Integer level; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/ErrorResponseData.java b/src/main/java/com/casic/model/ErrorResponseData.java new file mode 100644 index 0000000..080fcbc --- /dev/null +++ b/src/main/java/com/casic/model/ErrorResponseData.java @@ -0,0 +1,29 @@ +package com.casic.model; + + +public class ErrorResponseData extends ResponseData { + private String exceptionClazz; + + public String getExceptionClazz() { + return this.exceptionClazz; + } + + + public ErrorResponseData(String message) { + super(false, ResponseData.DEFAULT_ERROR_CODE, message, (Object)null); + } + + + public void setExceptionClazz(String exceptionClazz) { + this.exceptionClazz = exceptionClazz; + } + @Override + protected boolean canEqual(Object other) { + return other instanceof ErrorResponseData; + } + + @Override + public String toString() { + return "ErrorResponseData(exceptionClazz=" + this.getExceptionClazz() + ")"; + } +} diff --git a/src/main/java/com/casic/model/QueryContent.java b/src/main/java/com/casic/model/QueryContent.java new file mode 100644 index 0000000..e6cd12d --- /dev/null +++ b/src/main/java/com/casic/model/QueryContent.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "QueryContent", description = "下发配置参数") +public class QueryContent { + @ApiModelProperty(notes = "上传周期", dataType = "String",required= true) + private String upload; + @ApiModelProperty(notes = "收集周期", dataType = "String",required= true) + private String collect; + @ApiModelProperty(notes = "重传次数", dataType = "String",required= true) + private String retry; +} diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java new file mode 100644 index 0000000..c09b2d2 --- /dev/null +++ b/src/main/java/com/casic/model/ResponseData.java @@ -0,0 +1,58 @@ +package com.casic.model; + +import com.alibaba.fastjson.JSONObject; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.CreateCommandRequest; +import lombok.Data; + +import java.util.Calendar; +import java.util.Date; + +/** + * @author cz + * @date 2022-8-12 + */ +@Data +public class ResponseData { + public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功"; + public static final String DEFAULT_ERROR_MESSAGE = "网络异常"; + public static final Integer DEFAULT_SUCCESS_CODE = 200; + public static final Integer DEFAULT_ERROR_CODE = 500; + private Boolean success; + private Integer code; + private String message; + private T data; + + +// public static void main(String[] args) throws Exception { +// Calendar now = Calendar.getInstance(); +// Date getTime = now.getTime(); +//// if (isWeekend(now)) { +// now.add(Calendar.WEEK_OF_YEAR, 1); +// now.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); +// now.set(Calendar.HOUR_OF_DAY, 8); +// now.set(Calendar.MINUTE, 0); +// now.set(Calendar.SECOND, 0); +//// } else { +//// now.add(Calendar.HOUR, 24); +//// while (isWeekend(now)) { +//// now.add(Calendar.HOUR, 24); +//// } +//// } +// +// System.out.println(now.getTime()); +// } + + public ResponseData() { + } + public ResponseData(Boolean success, Integer code, String message, T data) { + this.success = success; + this.code = code; + this.message = message; + this.data = data; + } + + public static ErrorResponseData error(String message) { + return new ErrorResponseData(message); + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmConfigService.java b/src/main/java/com/casic/service/AlarmConfigService.java new file mode 100644 index 0000000..2d76956 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmConfigService.java @@ -0,0 +1,15 @@ +package com.casic.service; + +import com.casic.model.AlarmConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface AlarmConfigService { + + + ResponseData gasBatchConfig( List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/DeviceConfigService.java b/src/main/java/com/casic/service/DeviceConfigService.java new file mode 100644 index 0000000..0cf7efc --- /dev/null +++ b/src/main/java/com/casic/service/DeviceConfigService.java @@ -0,0 +1,16 @@ +package com.casic.service; + +import com.casic.model.BusConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface DeviceConfigService { + + ResponseData devcieConfig(BusConfigParam busConfigParam); + + ResponseData gasBatchConfig(List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/GasDataRecvService.java b/src/main/java/com/casic/service/GasDataRecvService.java new file mode 100644 index 0000000..25d7da9 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataRecvService.java @@ -0,0 +1,9 @@ +package com.casic.service; + +import java.util.Map; + +public interface GasDataRecvService { + + Object saveRev(Map recvDataMap); + +} diff --git a/src/main/java/com/casic/service/GasDataService.java b/src/main/java/com/casic/service/GasDataService.java new file mode 100644 index 0000000..090c624 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataService.java @@ -0,0 +1,19 @@ +package com.casic.service; + +import com.casic.entity.LucencyGasData; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface GasDataService { + + + ResponseData> getGasDataList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean sortDevcode); + + + ResponseData> getGasHistoryList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize); + + +} diff --git a/src/main/java/com/casic/service/GasDeviceService.java b/src/main/java/com/casic/service/GasDeviceService.java new file mode 100644 index 0000000..318d8ea --- /dev/null +++ b/src/main/java/com/casic/service/GasDeviceService.java @@ -0,0 +1,20 @@ +package com.casic.service; + +import com.casic.entity.NbDevice; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface GasDeviceService { + + ResponseData devcieStatusConfig(List dataGasConfigParam); + + List getDevicieList(String beginTime, String endTime, String keywords); + + ResponseData> getDevicieListPage(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean emptyStatus,Boolean sortDevcode); + + ResponseData> 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/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/src/main/java/com/casic/model/BusConfigParam.java b/src/main/java/com/casic/model/BusConfigParam.java new file mode 100644 index 0000000..44004b5 --- /dev/null +++ b/src/main/java/com/casic/model/BusConfigParam.java @@ -0,0 +1,30 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + + +@Data +@ApiModel(value = "BusConfigParam", description = "设备下发配置(除了不传的,其他都是必传)") +public class BusConfigParam { + @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 = "指令内容(上传周期upload、采集周期collect、重试次数retry,都是必填)", dataType = "object",required= true) + private QueryContent queryContent; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/DataGasConfigParam.java b/src/main/java/com/casic/model/DataGasConfigParam.java new file mode 100644 index 0000000..4e71c77 --- /dev/null +++ b/src/main/java/com/casic/model/DataGasConfigParam.java @@ -0,0 +1,24 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +@Data +@ApiModel(value = "DataGasConfigParam", description = "状态下发配置参数(除了不传,其他都是必传)") +public class DataGasConfigParam { + @ApiModelProperty(notes = "电信平台设备id", dataType = "String",required= true) + private String deviceId; + @ApiModelProperty(notes = "产品id", dataType = "String",required= true) + private String productId; + @ApiModelProperty(notes = "操作人", dataType = "String") + private String operator; + @ApiModelProperty(notes = "设备等级", dataType = "Integer" ) + private Integer level; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/ErrorResponseData.java b/src/main/java/com/casic/model/ErrorResponseData.java new file mode 100644 index 0000000..080fcbc --- /dev/null +++ b/src/main/java/com/casic/model/ErrorResponseData.java @@ -0,0 +1,29 @@ +package com.casic.model; + + +public class ErrorResponseData extends ResponseData { + private String exceptionClazz; + + public String getExceptionClazz() { + return this.exceptionClazz; + } + + + public ErrorResponseData(String message) { + super(false, ResponseData.DEFAULT_ERROR_CODE, message, (Object)null); + } + + + public void setExceptionClazz(String exceptionClazz) { + this.exceptionClazz = exceptionClazz; + } + @Override + protected boolean canEqual(Object other) { + return other instanceof ErrorResponseData; + } + + @Override + public String toString() { + return "ErrorResponseData(exceptionClazz=" + this.getExceptionClazz() + ")"; + } +} diff --git a/src/main/java/com/casic/model/QueryContent.java b/src/main/java/com/casic/model/QueryContent.java new file mode 100644 index 0000000..e6cd12d --- /dev/null +++ b/src/main/java/com/casic/model/QueryContent.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "QueryContent", description = "下发配置参数") +public class QueryContent { + @ApiModelProperty(notes = "上传周期", dataType = "String",required= true) + private String upload; + @ApiModelProperty(notes = "收集周期", dataType = "String",required= true) + private String collect; + @ApiModelProperty(notes = "重传次数", dataType = "String",required= true) + private String retry; +} diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java new file mode 100644 index 0000000..c09b2d2 --- /dev/null +++ b/src/main/java/com/casic/model/ResponseData.java @@ -0,0 +1,58 @@ +package com.casic.model; + +import com.alibaba.fastjson.JSONObject; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.CreateCommandRequest; +import lombok.Data; + +import java.util.Calendar; +import java.util.Date; + +/** + * @author cz + * @date 2022-8-12 + */ +@Data +public class ResponseData { + public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功"; + public static final String DEFAULT_ERROR_MESSAGE = "网络异常"; + public static final Integer DEFAULT_SUCCESS_CODE = 200; + public static final Integer DEFAULT_ERROR_CODE = 500; + private Boolean success; + private Integer code; + private String message; + private T data; + + +// public static void main(String[] args) throws Exception { +// Calendar now = Calendar.getInstance(); +// Date getTime = now.getTime(); +//// if (isWeekend(now)) { +// now.add(Calendar.WEEK_OF_YEAR, 1); +// now.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); +// now.set(Calendar.HOUR_OF_DAY, 8); +// now.set(Calendar.MINUTE, 0); +// now.set(Calendar.SECOND, 0); +//// } else { +//// now.add(Calendar.HOUR, 24); +//// while (isWeekend(now)) { +//// now.add(Calendar.HOUR, 24); +//// } +//// } +// +// System.out.println(now.getTime()); +// } + + public ResponseData() { + } + public ResponseData(Boolean success, Integer code, String message, T data) { + this.success = success; + this.code = code; + this.message = message; + this.data = data; + } + + public static ErrorResponseData error(String message) { + return new ErrorResponseData(message); + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmConfigService.java b/src/main/java/com/casic/service/AlarmConfigService.java new file mode 100644 index 0000000..2d76956 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmConfigService.java @@ -0,0 +1,15 @@ +package com.casic.service; + +import com.casic.model.AlarmConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface AlarmConfigService { + + + ResponseData gasBatchConfig( List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/DeviceConfigService.java b/src/main/java/com/casic/service/DeviceConfigService.java new file mode 100644 index 0000000..0cf7efc --- /dev/null +++ b/src/main/java/com/casic/service/DeviceConfigService.java @@ -0,0 +1,16 @@ +package com.casic.service; + +import com.casic.model.BusConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface DeviceConfigService { + + ResponseData devcieConfig(BusConfigParam busConfigParam); + + ResponseData gasBatchConfig(List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/GasDataRecvService.java b/src/main/java/com/casic/service/GasDataRecvService.java new file mode 100644 index 0000000..25d7da9 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataRecvService.java @@ -0,0 +1,9 @@ +package com.casic.service; + +import java.util.Map; + +public interface GasDataRecvService { + + Object saveRev(Map recvDataMap); + +} diff --git a/src/main/java/com/casic/service/GasDataService.java b/src/main/java/com/casic/service/GasDataService.java new file mode 100644 index 0000000..090c624 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataService.java @@ -0,0 +1,19 @@ +package com.casic.service; + +import com.casic.entity.LucencyGasData; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface GasDataService { + + + ResponseData> getGasDataList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean sortDevcode); + + + ResponseData> getGasHistoryList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize); + + +} diff --git a/src/main/java/com/casic/service/GasDeviceService.java b/src/main/java/com/casic/service/GasDeviceService.java new file mode 100644 index 0000000..318d8ea --- /dev/null +++ b/src/main/java/com/casic/service/GasDeviceService.java @@ -0,0 +1,20 @@ +package com.casic.service; + +import com.casic.entity.NbDevice; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface GasDeviceService { + + ResponseData devcieStatusConfig(List dataGasConfigParam); + + List getDevicieList(String beginTime, String endTime, String keywords); + + ResponseData> getDevicieListPage(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean emptyStatus,Boolean sortDevcode); + + ResponseData> deviceDict(); +} diff --git a/src/main/java/com/casic/service/impl/AepCommandSend.java b/src/main/java/com/casic/service/impl/AepCommandSend.java new file mode 100644 index 0000000..c91f3ad --- /dev/null +++ b/src/main/java/com/casic/service/impl/AepCommandSend.java @@ -0,0 +1,97 @@ +package com.casic.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.casic.config.AEPParamConfig; +import com.casic.model.AlarmConfigParam; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component +@Slf4j +public class AepCommandSend { + + @Autowired + private AEPParamConfig aepParamConfig; + + public void sendStatusNb(List dataGasConfigList) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + Map queryMap = new HashMap<>(); + queryMap.put("query", 1); + dataGasMap.put("params", queryMap); + dataGasMap.put("serviceIdentifier", "DeviceQuery"); + dataGasConfigList.forEach( + dataGasConfigParam -> { + dataGasConfigParam.setLevel(1); + dataGasConfigParam.setContent(dataGasMap); + dataGasConfigParam.setOperator("casic"); + } + ); + for (DataGasConfigParam dataGasConfigParam : dataGasConfigList) { + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(dataGasConfigParam).getBytes()); //具体格式见前面请求body说明 + System.out.println(client.CreateCommand(request)); + } + client.shutdown(); + } + + public String sendConfig(BusConfigParam busConfigParam) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + dataGasMap.put("serviceIdentifier", "config"); + dataGasMap.put("params", busConfigParam.getQueryContent()); + busConfigParam.setContent(dataGasMap); + busConfigParam.setLevel(1); + busConfigParam.setOperator("casic"); + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(busConfigParam).getBytes()); //具体格式见前面请求body说明 + CreateCommandResponse msgResponse = client.CreateCommand(request); + System.out.println(msgResponse); + client.shutdown(); + log.debug("-----" + msgResponse.getMessage()); + if (msgResponse.getStatusCode()==200) { + return "未下发"; + } else { + return "下发异常"; + } + } + + public String sendAlarmConfig(AlarmConfigParam alarmConfigParam) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + dataGasMap.put("serviceIdentifier", "alarmconfig"); + dataGasMap.put("params", alarmConfigParam.getQueryContent()); + alarmConfigParam.setContent(dataGasMap); + alarmConfigParam.setLevel(1); + alarmConfigParam.setOperator("casic"); + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(alarmConfigParam).getBytes()); //具体格式见前面请求body说明 + CreateCommandResponse msgResponse = client.CreateCommand(request); + System.out.println(msgResponse); + client.shutdown(); + log.debug("-----" + msgResponse.getMessage()); + if (msgResponse.getStatusCode()==200) { + return "未下发"; + } else { + return "下发异常"; + } + } +} \ 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/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/src/main/java/com/casic/model/BusConfigParam.java b/src/main/java/com/casic/model/BusConfigParam.java new file mode 100644 index 0000000..44004b5 --- /dev/null +++ b/src/main/java/com/casic/model/BusConfigParam.java @@ -0,0 +1,30 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + + +@Data +@ApiModel(value = "BusConfigParam", description = "设备下发配置(除了不传的,其他都是必传)") +public class BusConfigParam { + @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 = "指令内容(上传周期upload、采集周期collect、重试次数retry,都是必填)", dataType = "object",required= true) + private QueryContent queryContent; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/DataGasConfigParam.java b/src/main/java/com/casic/model/DataGasConfigParam.java new file mode 100644 index 0000000..4e71c77 --- /dev/null +++ b/src/main/java/com/casic/model/DataGasConfigParam.java @@ -0,0 +1,24 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +@Data +@ApiModel(value = "DataGasConfigParam", description = "状态下发配置参数(除了不传,其他都是必传)") +public class DataGasConfigParam { + @ApiModelProperty(notes = "电信平台设备id", dataType = "String",required= true) + private String deviceId; + @ApiModelProperty(notes = "产品id", dataType = "String",required= true) + private String productId; + @ApiModelProperty(notes = "操作人", dataType = "String") + private String operator; + @ApiModelProperty(notes = "设备等级", dataType = "Integer" ) + private Integer level; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/ErrorResponseData.java b/src/main/java/com/casic/model/ErrorResponseData.java new file mode 100644 index 0000000..080fcbc --- /dev/null +++ b/src/main/java/com/casic/model/ErrorResponseData.java @@ -0,0 +1,29 @@ +package com.casic.model; + + +public class ErrorResponseData extends ResponseData { + private String exceptionClazz; + + public String getExceptionClazz() { + return this.exceptionClazz; + } + + + public ErrorResponseData(String message) { + super(false, ResponseData.DEFAULT_ERROR_CODE, message, (Object)null); + } + + + public void setExceptionClazz(String exceptionClazz) { + this.exceptionClazz = exceptionClazz; + } + @Override + protected boolean canEqual(Object other) { + return other instanceof ErrorResponseData; + } + + @Override + public String toString() { + return "ErrorResponseData(exceptionClazz=" + this.getExceptionClazz() + ")"; + } +} diff --git a/src/main/java/com/casic/model/QueryContent.java b/src/main/java/com/casic/model/QueryContent.java new file mode 100644 index 0000000..e6cd12d --- /dev/null +++ b/src/main/java/com/casic/model/QueryContent.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "QueryContent", description = "下发配置参数") +public class QueryContent { + @ApiModelProperty(notes = "上传周期", dataType = "String",required= true) + private String upload; + @ApiModelProperty(notes = "收集周期", dataType = "String",required= true) + private String collect; + @ApiModelProperty(notes = "重传次数", dataType = "String",required= true) + private String retry; +} diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java new file mode 100644 index 0000000..c09b2d2 --- /dev/null +++ b/src/main/java/com/casic/model/ResponseData.java @@ -0,0 +1,58 @@ +package com.casic.model; + +import com.alibaba.fastjson.JSONObject; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.CreateCommandRequest; +import lombok.Data; + +import java.util.Calendar; +import java.util.Date; + +/** + * @author cz + * @date 2022-8-12 + */ +@Data +public class ResponseData { + public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功"; + public static final String DEFAULT_ERROR_MESSAGE = "网络异常"; + public static final Integer DEFAULT_SUCCESS_CODE = 200; + public static final Integer DEFAULT_ERROR_CODE = 500; + private Boolean success; + private Integer code; + private String message; + private T data; + + +// public static void main(String[] args) throws Exception { +// Calendar now = Calendar.getInstance(); +// Date getTime = now.getTime(); +//// if (isWeekend(now)) { +// now.add(Calendar.WEEK_OF_YEAR, 1); +// now.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); +// now.set(Calendar.HOUR_OF_DAY, 8); +// now.set(Calendar.MINUTE, 0); +// now.set(Calendar.SECOND, 0); +//// } else { +//// now.add(Calendar.HOUR, 24); +//// while (isWeekend(now)) { +//// now.add(Calendar.HOUR, 24); +//// } +//// } +// +// System.out.println(now.getTime()); +// } + + public ResponseData() { + } + public ResponseData(Boolean success, Integer code, String message, T data) { + this.success = success; + this.code = code; + this.message = message; + this.data = data; + } + + public static ErrorResponseData error(String message) { + return new ErrorResponseData(message); + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmConfigService.java b/src/main/java/com/casic/service/AlarmConfigService.java new file mode 100644 index 0000000..2d76956 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmConfigService.java @@ -0,0 +1,15 @@ +package com.casic.service; + +import com.casic.model.AlarmConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface AlarmConfigService { + + + ResponseData gasBatchConfig( List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/DeviceConfigService.java b/src/main/java/com/casic/service/DeviceConfigService.java new file mode 100644 index 0000000..0cf7efc --- /dev/null +++ b/src/main/java/com/casic/service/DeviceConfigService.java @@ -0,0 +1,16 @@ +package com.casic.service; + +import com.casic.model.BusConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface DeviceConfigService { + + ResponseData devcieConfig(BusConfigParam busConfigParam); + + ResponseData gasBatchConfig(List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/GasDataRecvService.java b/src/main/java/com/casic/service/GasDataRecvService.java new file mode 100644 index 0000000..25d7da9 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataRecvService.java @@ -0,0 +1,9 @@ +package com.casic.service; + +import java.util.Map; + +public interface GasDataRecvService { + + Object saveRev(Map recvDataMap); + +} diff --git a/src/main/java/com/casic/service/GasDataService.java b/src/main/java/com/casic/service/GasDataService.java new file mode 100644 index 0000000..090c624 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataService.java @@ -0,0 +1,19 @@ +package com.casic.service; + +import com.casic.entity.LucencyGasData; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface GasDataService { + + + ResponseData> getGasDataList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean sortDevcode); + + + ResponseData> getGasHistoryList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize); + + +} diff --git a/src/main/java/com/casic/service/GasDeviceService.java b/src/main/java/com/casic/service/GasDeviceService.java new file mode 100644 index 0000000..318d8ea --- /dev/null +++ b/src/main/java/com/casic/service/GasDeviceService.java @@ -0,0 +1,20 @@ +package com.casic.service; + +import com.casic.entity.NbDevice; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface GasDeviceService { + + ResponseData devcieStatusConfig(List dataGasConfigParam); + + List getDevicieList(String beginTime, String endTime, String keywords); + + ResponseData> getDevicieListPage(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean emptyStatus,Boolean sortDevcode); + + ResponseData> deviceDict(); +} diff --git a/src/main/java/com/casic/service/impl/AepCommandSend.java b/src/main/java/com/casic/service/impl/AepCommandSend.java new file mode 100644 index 0000000..c91f3ad --- /dev/null +++ b/src/main/java/com/casic/service/impl/AepCommandSend.java @@ -0,0 +1,97 @@ +package com.casic.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.casic.config.AEPParamConfig; +import com.casic.model.AlarmConfigParam; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component +@Slf4j +public class AepCommandSend { + + @Autowired + private AEPParamConfig aepParamConfig; + + public void sendStatusNb(List dataGasConfigList) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + Map queryMap = new HashMap<>(); + queryMap.put("query", 1); + dataGasMap.put("params", queryMap); + dataGasMap.put("serviceIdentifier", "DeviceQuery"); + dataGasConfigList.forEach( + dataGasConfigParam -> { + dataGasConfigParam.setLevel(1); + dataGasConfigParam.setContent(dataGasMap); + dataGasConfigParam.setOperator("casic"); + } + ); + for (DataGasConfigParam dataGasConfigParam : dataGasConfigList) { + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(dataGasConfigParam).getBytes()); //具体格式见前面请求body说明 + System.out.println(client.CreateCommand(request)); + } + client.shutdown(); + } + + public String sendConfig(BusConfigParam busConfigParam) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + dataGasMap.put("serviceIdentifier", "config"); + dataGasMap.put("params", busConfigParam.getQueryContent()); + busConfigParam.setContent(dataGasMap); + busConfigParam.setLevel(1); + busConfigParam.setOperator("casic"); + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(busConfigParam).getBytes()); //具体格式见前面请求body说明 + CreateCommandResponse msgResponse = client.CreateCommand(request); + System.out.println(msgResponse); + client.shutdown(); + log.debug("-----" + msgResponse.getMessage()); + if (msgResponse.getStatusCode()==200) { + return "未下发"; + } else { + return "下发异常"; + } + } + + public String sendAlarmConfig(AlarmConfigParam alarmConfigParam) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + dataGasMap.put("serviceIdentifier", "alarmconfig"); + dataGasMap.put("params", alarmConfigParam.getQueryContent()); + alarmConfigParam.setContent(dataGasMap); + alarmConfigParam.setLevel(1); + alarmConfigParam.setOperator("casic"); + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(alarmConfigParam).getBytes()); //具体格式见前面请求body说明 + CreateCommandResponse msgResponse = client.CreateCommand(request); + System.out.println(msgResponse); + client.shutdown(); + log.debug("-----" + msgResponse.getMessage()); + if (msgResponse.getStatusCode()==200) { + return "未下发"; + } else { + return "下发异常"; + } + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java b/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java new file mode 100644 index 0000000..eadfa04 --- /dev/null +++ b/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.NbAlarmConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.NbAlarmConfig; +import com.casic.model.AlarmConfigParam; +import com.casic.model.AlarmContent; +import com.casic.model.ResponseData; +import com.casic.service.AlarmConfigService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@AllArgsConstructor +@Slf4j +@Service +public class AlarmConfigServiceImpl extends ServiceImpl implements AlarmConfigService { + + private final AepCommandSend aepCommandSend; + private final NbDeviceMapper nbDeviceMapper; + + @Override + public ResponseData gasBatchConfig( List alarmConfigParamList){ + ResponseData responseData = new ResponseData(); + try { + for (AlarmConfigParam alarmConfigParam : alarmConfigParamList) { + String status = aepCommandSend.sendAlarmConfig(alarmConfigParam); + builderNbAlarmConfig(alarmConfigParam, status); + } + responseData.setCode(200); + responseData.setMessage("配置成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData configList(String devcode, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode){ + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + status = StringUtils.isEmpty(status) ? "" : status; + ResponseData responseData = new ResponseData(); + try { + QueryWrapper nbConfigWrapper = new QueryWrapper().like("devcode", devcode) + .like("status",status); + if (!StringUtils.isEmpty(beginTime)) { + nbConfigWrapper = nbConfigWrapper.gt("logtime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + nbConfigWrapper = nbConfigWrapper.lt("logtime", endTime); + } + nbConfigWrapper = sortDevcode ? nbConfigWrapper.orderByAsc("devcode") : nbConfigWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage configIPage = this.baseMapper.selectPage(userPage, nbConfigWrapper); + Map page = new HashMap(); + page.put("total", configIPage.getTotal()); + page.put("rows", configIPage.getRecords()); + page.put("current", configIPage.getCurrent()); + responseData.setCode(200); + responseData.setData(page); + responseData.setMessage("查询成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气报警下发查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + private void builderNbAlarmConfig(AlarmConfigParam alarmConfigParam,String status){ + nbDeviceMapper.updateRecentByDevciceId(alarmConfigParam.getDeviceId(), "2"); + AlarmContent queryContent = alarmConfigParam.getQueryContent(); + NbAlarmConfig nbConfig= NbAlarmConfig.builder() + .devcode(alarmConfigParam.getDevcode()) + .deviceId(alarmConfigParam.getDeviceId()) + .alarmcount(queryContent.getAlarmcount()) + .alarmperiod(queryContent.getAlarmperiod()) + .status(status) + .logtime(new Date()) + .build(); + this.baseMapper.insert(nbConfig); + } + +} 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/src/main/java/com/casic/model/BusConfigParam.java b/src/main/java/com/casic/model/BusConfigParam.java new file mode 100644 index 0000000..44004b5 --- /dev/null +++ b/src/main/java/com/casic/model/BusConfigParam.java @@ -0,0 +1,30 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + + +@Data +@ApiModel(value = "BusConfigParam", description = "设备下发配置(除了不传的,其他都是必传)") +public class BusConfigParam { + @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 = "指令内容(上传周期upload、采集周期collect、重试次数retry,都是必填)", dataType = "object",required= true) + private QueryContent queryContent; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/DataGasConfigParam.java b/src/main/java/com/casic/model/DataGasConfigParam.java new file mode 100644 index 0000000..4e71c77 --- /dev/null +++ b/src/main/java/com/casic/model/DataGasConfigParam.java @@ -0,0 +1,24 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +@Data +@ApiModel(value = "DataGasConfigParam", description = "状态下发配置参数(除了不传,其他都是必传)") +public class DataGasConfigParam { + @ApiModelProperty(notes = "电信平台设备id", dataType = "String",required= true) + private String deviceId; + @ApiModelProperty(notes = "产品id", dataType = "String",required= true) + private String productId; + @ApiModelProperty(notes = "操作人", dataType = "String") + private String operator; + @ApiModelProperty(notes = "设备等级", dataType = "Integer" ) + private Integer level; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/ErrorResponseData.java b/src/main/java/com/casic/model/ErrorResponseData.java new file mode 100644 index 0000000..080fcbc --- /dev/null +++ b/src/main/java/com/casic/model/ErrorResponseData.java @@ -0,0 +1,29 @@ +package com.casic.model; + + +public class ErrorResponseData extends ResponseData { + private String exceptionClazz; + + public String getExceptionClazz() { + return this.exceptionClazz; + } + + + public ErrorResponseData(String message) { + super(false, ResponseData.DEFAULT_ERROR_CODE, message, (Object)null); + } + + + public void setExceptionClazz(String exceptionClazz) { + this.exceptionClazz = exceptionClazz; + } + @Override + protected boolean canEqual(Object other) { + return other instanceof ErrorResponseData; + } + + @Override + public String toString() { + return "ErrorResponseData(exceptionClazz=" + this.getExceptionClazz() + ")"; + } +} diff --git a/src/main/java/com/casic/model/QueryContent.java b/src/main/java/com/casic/model/QueryContent.java new file mode 100644 index 0000000..e6cd12d --- /dev/null +++ b/src/main/java/com/casic/model/QueryContent.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "QueryContent", description = "下发配置参数") +public class QueryContent { + @ApiModelProperty(notes = "上传周期", dataType = "String",required= true) + private String upload; + @ApiModelProperty(notes = "收集周期", dataType = "String",required= true) + private String collect; + @ApiModelProperty(notes = "重传次数", dataType = "String",required= true) + private String retry; +} diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java new file mode 100644 index 0000000..c09b2d2 --- /dev/null +++ b/src/main/java/com/casic/model/ResponseData.java @@ -0,0 +1,58 @@ +package com.casic.model; + +import com.alibaba.fastjson.JSONObject; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.CreateCommandRequest; +import lombok.Data; + +import java.util.Calendar; +import java.util.Date; + +/** + * @author cz + * @date 2022-8-12 + */ +@Data +public class ResponseData { + public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功"; + public static final String DEFAULT_ERROR_MESSAGE = "网络异常"; + public static final Integer DEFAULT_SUCCESS_CODE = 200; + public static final Integer DEFAULT_ERROR_CODE = 500; + private Boolean success; + private Integer code; + private String message; + private T data; + + +// public static void main(String[] args) throws Exception { +// Calendar now = Calendar.getInstance(); +// Date getTime = now.getTime(); +//// if (isWeekend(now)) { +// now.add(Calendar.WEEK_OF_YEAR, 1); +// now.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); +// now.set(Calendar.HOUR_OF_DAY, 8); +// now.set(Calendar.MINUTE, 0); +// now.set(Calendar.SECOND, 0); +//// } else { +//// now.add(Calendar.HOUR, 24); +//// while (isWeekend(now)) { +//// now.add(Calendar.HOUR, 24); +//// } +//// } +// +// System.out.println(now.getTime()); +// } + + public ResponseData() { + } + public ResponseData(Boolean success, Integer code, String message, T data) { + this.success = success; + this.code = code; + this.message = message; + this.data = data; + } + + public static ErrorResponseData error(String message) { + return new ErrorResponseData(message); + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmConfigService.java b/src/main/java/com/casic/service/AlarmConfigService.java new file mode 100644 index 0000000..2d76956 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmConfigService.java @@ -0,0 +1,15 @@ +package com.casic.service; + +import com.casic.model.AlarmConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface AlarmConfigService { + + + ResponseData gasBatchConfig( List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/DeviceConfigService.java b/src/main/java/com/casic/service/DeviceConfigService.java new file mode 100644 index 0000000..0cf7efc --- /dev/null +++ b/src/main/java/com/casic/service/DeviceConfigService.java @@ -0,0 +1,16 @@ +package com.casic.service; + +import com.casic.model.BusConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface DeviceConfigService { + + ResponseData devcieConfig(BusConfigParam busConfigParam); + + ResponseData gasBatchConfig(List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/GasDataRecvService.java b/src/main/java/com/casic/service/GasDataRecvService.java new file mode 100644 index 0000000..25d7da9 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataRecvService.java @@ -0,0 +1,9 @@ +package com.casic.service; + +import java.util.Map; + +public interface GasDataRecvService { + + Object saveRev(Map recvDataMap); + +} diff --git a/src/main/java/com/casic/service/GasDataService.java b/src/main/java/com/casic/service/GasDataService.java new file mode 100644 index 0000000..090c624 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataService.java @@ -0,0 +1,19 @@ +package com.casic.service; + +import com.casic.entity.LucencyGasData; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface GasDataService { + + + ResponseData> getGasDataList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean sortDevcode); + + + ResponseData> getGasHistoryList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize); + + +} diff --git a/src/main/java/com/casic/service/GasDeviceService.java b/src/main/java/com/casic/service/GasDeviceService.java new file mode 100644 index 0000000..318d8ea --- /dev/null +++ b/src/main/java/com/casic/service/GasDeviceService.java @@ -0,0 +1,20 @@ +package com.casic.service; + +import com.casic.entity.NbDevice; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface GasDeviceService { + + ResponseData devcieStatusConfig(List dataGasConfigParam); + + List getDevicieList(String beginTime, String endTime, String keywords); + + ResponseData> getDevicieListPage(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean emptyStatus,Boolean sortDevcode); + + ResponseData> deviceDict(); +} diff --git a/src/main/java/com/casic/service/impl/AepCommandSend.java b/src/main/java/com/casic/service/impl/AepCommandSend.java new file mode 100644 index 0000000..c91f3ad --- /dev/null +++ b/src/main/java/com/casic/service/impl/AepCommandSend.java @@ -0,0 +1,97 @@ +package com.casic.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.casic.config.AEPParamConfig; +import com.casic.model.AlarmConfigParam; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component +@Slf4j +public class AepCommandSend { + + @Autowired + private AEPParamConfig aepParamConfig; + + public void sendStatusNb(List dataGasConfigList) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + Map queryMap = new HashMap<>(); + queryMap.put("query", 1); + dataGasMap.put("params", queryMap); + dataGasMap.put("serviceIdentifier", "DeviceQuery"); + dataGasConfigList.forEach( + dataGasConfigParam -> { + dataGasConfigParam.setLevel(1); + dataGasConfigParam.setContent(dataGasMap); + dataGasConfigParam.setOperator("casic"); + } + ); + for (DataGasConfigParam dataGasConfigParam : dataGasConfigList) { + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(dataGasConfigParam).getBytes()); //具体格式见前面请求body说明 + System.out.println(client.CreateCommand(request)); + } + client.shutdown(); + } + + public String sendConfig(BusConfigParam busConfigParam) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + dataGasMap.put("serviceIdentifier", "config"); + dataGasMap.put("params", busConfigParam.getQueryContent()); + busConfigParam.setContent(dataGasMap); + busConfigParam.setLevel(1); + busConfigParam.setOperator("casic"); + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(busConfigParam).getBytes()); //具体格式见前面请求body说明 + CreateCommandResponse msgResponse = client.CreateCommand(request); + System.out.println(msgResponse); + client.shutdown(); + log.debug("-----" + msgResponse.getMessage()); + if (msgResponse.getStatusCode()==200) { + return "未下发"; + } else { + return "下发异常"; + } + } + + public String sendAlarmConfig(AlarmConfigParam alarmConfigParam) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + dataGasMap.put("serviceIdentifier", "alarmconfig"); + dataGasMap.put("params", alarmConfigParam.getQueryContent()); + alarmConfigParam.setContent(dataGasMap); + alarmConfigParam.setLevel(1); + alarmConfigParam.setOperator("casic"); + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(alarmConfigParam).getBytes()); //具体格式见前面请求body说明 + CreateCommandResponse msgResponse = client.CreateCommand(request); + System.out.println(msgResponse); + client.shutdown(); + log.debug("-----" + msgResponse.getMessage()); + if (msgResponse.getStatusCode()==200) { + return "未下发"; + } else { + return "下发异常"; + } + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java b/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java new file mode 100644 index 0000000..eadfa04 --- /dev/null +++ b/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.NbAlarmConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.NbAlarmConfig; +import com.casic.model.AlarmConfigParam; +import com.casic.model.AlarmContent; +import com.casic.model.ResponseData; +import com.casic.service.AlarmConfigService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@AllArgsConstructor +@Slf4j +@Service +public class AlarmConfigServiceImpl extends ServiceImpl implements AlarmConfigService { + + private final AepCommandSend aepCommandSend; + private final NbDeviceMapper nbDeviceMapper; + + @Override + public ResponseData gasBatchConfig( List alarmConfigParamList){ + ResponseData responseData = new ResponseData(); + try { + for (AlarmConfigParam alarmConfigParam : alarmConfigParamList) { + String status = aepCommandSend.sendAlarmConfig(alarmConfigParam); + builderNbAlarmConfig(alarmConfigParam, status); + } + responseData.setCode(200); + responseData.setMessage("配置成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData configList(String devcode, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode){ + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + status = StringUtils.isEmpty(status) ? "" : status; + ResponseData responseData = new ResponseData(); + try { + QueryWrapper nbConfigWrapper = new QueryWrapper().like("devcode", devcode) + .like("status",status); + if (!StringUtils.isEmpty(beginTime)) { + nbConfigWrapper = nbConfigWrapper.gt("logtime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + nbConfigWrapper = nbConfigWrapper.lt("logtime", endTime); + } + nbConfigWrapper = sortDevcode ? nbConfigWrapper.orderByAsc("devcode") : nbConfigWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage configIPage = this.baseMapper.selectPage(userPage, nbConfigWrapper); + Map page = new HashMap(); + page.put("total", configIPage.getTotal()); + page.put("rows", configIPage.getRecords()); + page.put("current", configIPage.getCurrent()); + responseData.setCode(200); + responseData.setData(page); + responseData.setMessage("查询成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气报警下发查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + private void builderNbAlarmConfig(AlarmConfigParam alarmConfigParam,String status){ + nbDeviceMapper.updateRecentByDevciceId(alarmConfigParam.getDeviceId(), "2"); + AlarmContent queryContent = alarmConfigParam.getQueryContent(); + NbAlarmConfig nbConfig= NbAlarmConfig.builder() + .devcode(alarmConfigParam.getDevcode()) + .deviceId(alarmConfigParam.getDeviceId()) + .alarmcount(queryContent.getAlarmcount()) + .alarmperiod(queryContent.getAlarmperiod()) + .status(status) + .logtime(new Date()) + .build(); + this.baseMapper.insert(nbConfig); + } + +} diff --git a/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java new file mode 100644 index 0000000..57d13f0 --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java @@ -0,0 +1,112 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.dao.NbConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.NbConfig; +import com.casic.model.BusConfigParam; +import com.casic.model.QueryContent; +import com.casic.model.ResponseData; +import com.casic.service.DeviceConfigService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@AllArgsConstructor +@Slf4j +@Service +public class DeviceConfigServiceImpl implements DeviceConfigService { + + private final NbDeviceMapper nbDeviceMapper; + private final AepCommandSend aepCommandSend; + private final NbConfigMapper nbConfigMapper; + + @Override + public ResponseData devcieConfig(BusConfigParam busConfigParam) { + ResponseData responseData = new ResponseData(); + try { + String status = aepCommandSend.sendConfig(busConfigParam); + builderNbConfig(busConfigParam, status); + responseData.setCode(200); + responseData.setMessage(status.equals("未下发") ? "下发配置成功" : status); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData gasBatchConfig(List busConfigList) { + ResponseData responseData = new ResponseData(); + try { + for (BusConfigParam busConfigParam : busConfigList) { + String status = aepCommandSend.sendConfig(busConfigParam); + builderNbConfig(busConfigParam, status); + } + responseData.setCode(200); + responseData.setMessage("配置成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData configList(String devcode, String beginTime, String endTime, Integer currentIndex, Integer pageSize, String status,Boolean sortDevcode) { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + status = StringUtils.isEmpty(status) ? "" : status; + ResponseData responseData = new ResponseData(); + try { + QueryWrapper nbConfigWrapper = new QueryWrapper().like("devcode", devcode) + .like("status", status); + if (!StringUtils.isEmpty(beginTime)) { + nbConfigWrapper = nbConfigWrapper.gt("logtime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + nbConfigWrapper = nbConfigWrapper.lt("logtime", endTime); + } + nbConfigWrapper = sortDevcode ? nbConfigWrapper.orderByAsc("devcode") : nbConfigWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage configIPage = nbConfigMapper.selectPage(userPage, nbConfigWrapper); + Map page = new HashMap(); + page.put("total", configIPage.getTotal()); + page.put("rows", configIPage.getRecords()); + page.put("current", configIPage.getCurrent()); + responseData.setCode(200); + responseData.setData(page); + responseData.setMessage("查询成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + private void builderNbConfig(BusConfigParam busConfigParam, String status) { + nbDeviceMapper.updateRecentByDevciceId(busConfigParam.getDeviceId(), "1"); + QueryContent queryContent = busConfigParam.getQueryContent(); + NbConfig nbConfig = NbConfig.builder() + .collect(queryContent.getCollect()) + .upload(queryContent.getUpload()) + .retry(queryContent.getRetry()) + .devcode(busConfigParam.getDevcode()) + .deviceId(busConfigParam.getDeviceId()) + .status(status) + .logtime(new Date()) + .build(); + nbConfigMapper.insert(nbConfig); + } +} 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/src/main/java/com/casic/model/BusConfigParam.java b/src/main/java/com/casic/model/BusConfigParam.java new file mode 100644 index 0000000..44004b5 --- /dev/null +++ b/src/main/java/com/casic/model/BusConfigParam.java @@ -0,0 +1,30 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + + +@Data +@ApiModel(value = "BusConfigParam", description = "设备下发配置(除了不传的,其他都是必传)") +public class BusConfigParam { + @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 = "指令内容(上传周期upload、采集周期collect、重试次数retry,都是必填)", dataType = "object",required= true) + private QueryContent queryContent; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/DataGasConfigParam.java b/src/main/java/com/casic/model/DataGasConfigParam.java new file mode 100644 index 0000000..4e71c77 --- /dev/null +++ b/src/main/java/com/casic/model/DataGasConfigParam.java @@ -0,0 +1,24 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +@Data +@ApiModel(value = "DataGasConfigParam", description = "状态下发配置参数(除了不传,其他都是必传)") +public class DataGasConfigParam { + @ApiModelProperty(notes = "电信平台设备id", dataType = "String",required= true) + private String deviceId; + @ApiModelProperty(notes = "产品id", dataType = "String",required= true) + private String productId; + @ApiModelProperty(notes = "操作人", dataType = "String") + private String operator; + @ApiModelProperty(notes = "设备等级", dataType = "Integer" ) + private Integer level; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/ErrorResponseData.java b/src/main/java/com/casic/model/ErrorResponseData.java new file mode 100644 index 0000000..080fcbc --- /dev/null +++ b/src/main/java/com/casic/model/ErrorResponseData.java @@ -0,0 +1,29 @@ +package com.casic.model; + + +public class ErrorResponseData extends ResponseData { + private String exceptionClazz; + + public String getExceptionClazz() { + return this.exceptionClazz; + } + + + public ErrorResponseData(String message) { + super(false, ResponseData.DEFAULT_ERROR_CODE, message, (Object)null); + } + + + public void setExceptionClazz(String exceptionClazz) { + this.exceptionClazz = exceptionClazz; + } + @Override + protected boolean canEqual(Object other) { + return other instanceof ErrorResponseData; + } + + @Override + public String toString() { + return "ErrorResponseData(exceptionClazz=" + this.getExceptionClazz() + ")"; + } +} diff --git a/src/main/java/com/casic/model/QueryContent.java b/src/main/java/com/casic/model/QueryContent.java new file mode 100644 index 0000000..e6cd12d --- /dev/null +++ b/src/main/java/com/casic/model/QueryContent.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "QueryContent", description = "下发配置参数") +public class QueryContent { + @ApiModelProperty(notes = "上传周期", dataType = "String",required= true) + private String upload; + @ApiModelProperty(notes = "收集周期", dataType = "String",required= true) + private String collect; + @ApiModelProperty(notes = "重传次数", dataType = "String",required= true) + private String retry; +} diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java new file mode 100644 index 0000000..c09b2d2 --- /dev/null +++ b/src/main/java/com/casic/model/ResponseData.java @@ -0,0 +1,58 @@ +package com.casic.model; + +import com.alibaba.fastjson.JSONObject; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.CreateCommandRequest; +import lombok.Data; + +import java.util.Calendar; +import java.util.Date; + +/** + * @author cz + * @date 2022-8-12 + */ +@Data +public class ResponseData { + public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功"; + public static final String DEFAULT_ERROR_MESSAGE = "网络异常"; + public static final Integer DEFAULT_SUCCESS_CODE = 200; + public static final Integer DEFAULT_ERROR_CODE = 500; + private Boolean success; + private Integer code; + private String message; + private T data; + + +// public static void main(String[] args) throws Exception { +// Calendar now = Calendar.getInstance(); +// Date getTime = now.getTime(); +//// if (isWeekend(now)) { +// now.add(Calendar.WEEK_OF_YEAR, 1); +// now.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); +// now.set(Calendar.HOUR_OF_DAY, 8); +// now.set(Calendar.MINUTE, 0); +// now.set(Calendar.SECOND, 0); +//// } else { +//// now.add(Calendar.HOUR, 24); +//// while (isWeekend(now)) { +//// now.add(Calendar.HOUR, 24); +//// } +//// } +// +// System.out.println(now.getTime()); +// } + + public ResponseData() { + } + public ResponseData(Boolean success, Integer code, String message, T data) { + this.success = success; + this.code = code; + this.message = message; + this.data = data; + } + + public static ErrorResponseData error(String message) { + return new ErrorResponseData(message); + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmConfigService.java b/src/main/java/com/casic/service/AlarmConfigService.java new file mode 100644 index 0000000..2d76956 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmConfigService.java @@ -0,0 +1,15 @@ +package com.casic.service; + +import com.casic.model.AlarmConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface AlarmConfigService { + + + ResponseData gasBatchConfig( List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/DeviceConfigService.java b/src/main/java/com/casic/service/DeviceConfigService.java new file mode 100644 index 0000000..0cf7efc --- /dev/null +++ b/src/main/java/com/casic/service/DeviceConfigService.java @@ -0,0 +1,16 @@ +package com.casic.service; + +import com.casic.model.BusConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface DeviceConfigService { + + ResponseData devcieConfig(BusConfigParam busConfigParam); + + ResponseData gasBatchConfig(List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/GasDataRecvService.java b/src/main/java/com/casic/service/GasDataRecvService.java new file mode 100644 index 0000000..25d7da9 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataRecvService.java @@ -0,0 +1,9 @@ +package com.casic.service; + +import java.util.Map; + +public interface GasDataRecvService { + + Object saveRev(Map recvDataMap); + +} diff --git a/src/main/java/com/casic/service/GasDataService.java b/src/main/java/com/casic/service/GasDataService.java new file mode 100644 index 0000000..090c624 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataService.java @@ -0,0 +1,19 @@ +package com.casic.service; + +import com.casic.entity.LucencyGasData; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface GasDataService { + + + ResponseData> getGasDataList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean sortDevcode); + + + ResponseData> getGasHistoryList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize); + + +} diff --git a/src/main/java/com/casic/service/GasDeviceService.java b/src/main/java/com/casic/service/GasDeviceService.java new file mode 100644 index 0000000..318d8ea --- /dev/null +++ b/src/main/java/com/casic/service/GasDeviceService.java @@ -0,0 +1,20 @@ +package com.casic.service; + +import com.casic.entity.NbDevice; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface GasDeviceService { + + ResponseData devcieStatusConfig(List dataGasConfigParam); + + List getDevicieList(String beginTime, String endTime, String keywords); + + ResponseData> getDevicieListPage(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean emptyStatus,Boolean sortDevcode); + + ResponseData> deviceDict(); +} diff --git a/src/main/java/com/casic/service/impl/AepCommandSend.java b/src/main/java/com/casic/service/impl/AepCommandSend.java new file mode 100644 index 0000000..c91f3ad --- /dev/null +++ b/src/main/java/com/casic/service/impl/AepCommandSend.java @@ -0,0 +1,97 @@ +package com.casic.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.casic.config.AEPParamConfig; +import com.casic.model.AlarmConfigParam; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component +@Slf4j +public class AepCommandSend { + + @Autowired + private AEPParamConfig aepParamConfig; + + public void sendStatusNb(List dataGasConfigList) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + Map queryMap = new HashMap<>(); + queryMap.put("query", 1); + dataGasMap.put("params", queryMap); + dataGasMap.put("serviceIdentifier", "DeviceQuery"); + dataGasConfigList.forEach( + dataGasConfigParam -> { + dataGasConfigParam.setLevel(1); + dataGasConfigParam.setContent(dataGasMap); + dataGasConfigParam.setOperator("casic"); + } + ); + for (DataGasConfigParam dataGasConfigParam : dataGasConfigList) { + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(dataGasConfigParam).getBytes()); //具体格式见前面请求body说明 + System.out.println(client.CreateCommand(request)); + } + client.shutdown(); + } + + public String sendConfig(BusConfigParam busConfigParam) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + dataGasMap.put("serviceIdentifier", "config"); + dataGasMap.put("params", busConfigParam.getQueryContent()); + busConfigParam.setContent(dataGasMap); + busConfigParam.setLevel(1); + busConfigParam.setOperator("casic"); + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(busConfigParam).getBytes()); //具体格式见前面请求body说明 + CreateCommandResponse msgResponse = client.CreateCommand(request); + System.out.println(msgResponse); + client.shutdown(); + log.debug("-----" + msgResponse.getMessage()); + if (msgResponse.getStatusCode()==200) { + return "未下发"; + } else { + return "下发异常"; + } + } + + public String sendAlarmConfig(AlarmConfigParam alarmConfigParam) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + dataGasMap.put("serviceIdentifier", "alarmconfig"); + dataGasMap.put("params", alarmConfigParam.getQueryContent()); + alarmConfigParam.setContent(dataGasMap); + alarmConfigParam.setLevel(1); + alarmConfigParam.setOperator("casic"); + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(alarmConfigParam).getBytes()); //具体格式见前面请求body说明 + CreateCommandResponse msgResponse = client.CreateCommand(request); + System.out.println(msgResponse); + client.shutdown(); + log.debug("-----" + msgResponse.getMessage()); + if (msgResponse.getStatusCode()==200) { + return "未下发"; + } else { + return "下发异常"; + } + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java b/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java new file mode 100644 index 0000000..eadfa04 --- /dev/null +++ b/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.NbAlarmConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.NbAlarmConfig; +import com.casic.model.AlarmConfigParam; +import com.casic.model.AlarmContent; +import com.casic.model.ResponseData; +import com.casic.service.AlarmConfigService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@AllArgsConstructor +@Slf4j +@Service +public class AlarmConfigServiceImpl extends ServiceImpl implements AlarmConfigService { + + private final AepCommandSend aepCommandSend; + private final NbDeviceMapper nbDeviceMapper; + + @Override + public ResponseData gasBatchConfig( List alarmConfigParamList){ + ResponseData responseData = new ResponseData(); + try { + for (AlarmConfigParam alarmConfigParam : alarmConfigParamList) { + String status = aepCommandSend.sendAlarmConfig(alarmConfigParam); + builderNbAlarmConfig(alarmConfigParam, status); + } + responseData.setCode(200); + responseData.setMessage("配置成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData configList(String devcode, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode){ + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + status = StringUtils.isEmpty(status) ? "" : status; + ResponseData responseData = new ResponseData(); + try { + QueryWrapper nbConfigWrapper = new QueryWrapper().like("devcode", devcode) + .like("status",status); + if (!StringUtils.isEmpty(beginTime)) { + nbConfigWrapper = nbConfigWrapper.gt("logtime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + nbConfigWrapper = nbConfigWrapper.lt("logtime", endTime); + } + nbConfigWrapper = sortDevcode ? nbConfigWrapper.orderByAsc("devcode") : nbConfigWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage configIPage = this.baseMapper.selectPage(userPage, nbConfigWrapper); + Map page = new HashMap(); + page.put("total", configIPage.getTotal()); + page.put("rows", configIPage.getRecords()); + page.put("current", configIPage.getCurrent()); + responseData.setCode(200); + responseData.setData(page); + responseData.setMessage("查询成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气报警下发查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + private void builderNbAlarmConfig(AlarmConfigParam alarmConfigParam,String status){ + nbDeviceMapper.updateRecentByDevciceId(alarmConfigParam.getDeviceId(), "2"); + AlarmContent queryContent = alarmConfigParam.getQueryContent(); + NbAlarmConfig nbConfig= NbAlarmConfig.builder() + .devcode(alarmConfigParam.getDevcode()) + .deviceId(alarmConfigParam.getDeviceId()) + .alarmcount(queryContent.getAlarmcount()) + .alarmperiod(queryContent.getAlarmperiod()) + .status(status) + .logtime(new Date()) + .build(); + this.baseMapper.insert(nbConfig); + } + +} diff --git a/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java new file mode 100644 index 0000000..57d13f0 --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java @@ -0,0 +1,112 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.dao.NbConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.NbConfig; +import com.casic.model.BusConfigParam; +import com.casic.model.QueryContent; +import com.casic.model.ResponseData; +import com.casic.service.DeviceConfigService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@AllArgsConstructor +@Slf4j +@Service +public class DeviceConfigServiceImpl implements DeviceConfigService { + + private final NbDeviceMapper nbDeviceMapper; + private final AepCommandSend aepCommandSend; + private final NbConfigMapper nbConfigMapper; + + @Override + public ResponseData devcieConfig(BusConfigParam busConfigParam) { + ResponseData responseData = new ResponseData(); + try { + String status = aepCommandSend.sendConfig(busConfigParam); + builderNbConfig(busConfigParam, status); + responseData.setCode(200); + responseData.setMessage(status.equals("未下发") ? "下发配置成功" : status); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData gasBatchConfig(List busConfigList) { + ResponseData responseData = new ResponseData(); + try { + for (BusConfigParam busConfigParam : busConfigList) { + String status = aepCommandSend.sendConfig(busConfigParam); + builderNbConfig(busConfigParam, status); + } + responseData.setCode(200); + responseData.setMessage("配置成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData configList(String devcode, String beginTime, String endTime, Integer currentIndex, Integer pageSize, String status,Boolean sortDevcode) { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + status = StringUtils.isEmpty(status) ? "" : status; + ResponseData responseData = new ResponseData(); + try { + QueryWrapper nbConfigWrapper = new QueryWrapper().like("devcode", devcode) + .like("status", status); + if (!StringUtils.isEmpty(beginTime)) { + nbConfigWrapper = nbConfigWrapper.gt("logtime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + nbConfigWrapper = nbConfigWrapper.lt("logtime", endTime); + } + nbConfigWrapper = sortDevcode ? nbConfigWrapper.orderByAsc("devcode") : nbConfigWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage configIPage = nbConfigMapper.selectPage(userPage, nbConfigWrapper); + Map page = new HashMap(); + page.put("total", configIPage.getTotal()); + page.put("rows", configIPage.getRecords()); + page.put("current", configIPage.getCurrent()); + responseData.setCode(200); + responseData.setData(page); + responseData.setMessage("查询成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + private void builderNbConfig(BusConfigParam busConfigParam, String status) { + nbDeviceMapper.updateRecentByDevciceId(busConfigParam.getDeviceId(), "1"); + QueryContent queryContent = busConfigParam.getQueryContent(); + NbConfig nbConfig = NbConfig.builder() + .collect(queryContent.getCollect()) + .upload(queryContent.getUpload()) + .retry(queryContent.getRetry()) + .devcode(busConfigParam.getDevcode()) + .deviceId(busConfigParam.getDeviceId()) + .status(status) + .logtime(new Date()) + .build(); + nbConfigMapper.insert(nbConfig); + } +} diff --git a/src/main/java/com/casic/service/impl/GasDataRecvServiceImpl.java b/src/main/java/com/casic/service/impl/GasDataRecvServiceImpl.java new file mode 100644 index 0000000..56c4c2f --- /dev/null +++ b/src/main/java/com/casic/service/impl/GasDataRecvServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.GasDataRecvMapper; +import com.casic.dao.NbAlarmConfigMapper; +import com.casic.dao.NbConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.LucencyGasData; +import com.casic.entity.NbDevice; +import com.casic.model.DataGasConfigParam; +import com.casic.model.ResponseData; +import com.casic.service.GasDataRecvService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; + +import java.util.*; + + +@Slf4j +@AllArgsConstructor +@Service +public class GasDataRecvServiceImpl extends ServiceImpl implements GasDataRecvService { + + private final NbDeviceMapper nbDeviceMapper; + private final AepCommandSend aepCommandSend; + private final NbConfigMapper nbConfigMapper; + private final NbAlarmConfigMapper nbAlarmConfigMapper; + + @Override + public Object saveRev(Map recvDataMap) { + ResponseData responseData = new ResponseData(); + try { + Map contentMap = (Map) recvDataMap.get("payload"); + if (contentMap.containsKey("status")) { + nbDeviceProvider(recvDataMap, contentMap); + } else if (contentMap.containsKey("update")) { + configStatusDataProvider(recvDataMap, String.valueOf(contentMap.get("update"))); + } else if (contentMap.containsKey("time")) { + realTimeGasDataProvider(recvDataMap, contentMap); + } else if (contentMap.containsKey("history")) { + historyGasDataProvider(recvDataMap, contentMap); + } + realTimeGasDataProvider(recvDataMap, contentMap); + responseData.setCode(200); + responseData.setMessage("保存成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备存储异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("保存异常"); + } + return responseData; + } + + private Boolean nbDeviceProvider(Map recvDataMap, Map contentMap) { + nbDeviceMapper.deleteDeviceByImei(String.valueOf(contentMap.get("imei"))); + NbDevice nbDevice = NbDevice.builder() + .logtime(new Date()) + .productId(String.valueOf(recvDataMap.get("productId"))) + .devcode(String.valueOf(contentMap.get("devid"))) + .iccid(String.valueOf(contentMap.get("iccid"))) + .status(String.valueOf(contentMap.get("status"))) + .deviceId(String.valueOf(recvDataMap.get("deviceId"))) + .valid(1) + .imei(String.valueOf(contentMap.get("imei"))).build(); + nbDeviceMapper.insert(nbDevice); + if (!StringUtils.isEmpty(nbDevice.getImei()) && !StringUtils.isEmpty(nbDevice.getDevcode())) { + this.baseMapper.updateData(nbDevice.getImei(), nbDevice.getDevcode()); + } + return true; + } + + private Boolean realTimeGasDataProvider(Map recvDataMap, Map contentMap) throws Exception { + String imei = String.valueOf(recvDataMap.get("IMEI")); + String deviceId = String.valueOf(recvDataMap.get("deviceId")); + String productId = String.valueOf(recvDataMap.get("productId")); + fisrtSaveDeviceAndSend(imei, productId, deviceId); + String devcode = nbDeviceMapper.getDevcodeByImei(imei); + LucencyGasData lucencyGasBuilder = LucencyGasData.builder() + .tenantId(Long.valueOf(String.valueOf(recvDataMap.get("tenantId")))) + .deviceId(String.valueOf(recvDataMap.get("deviceId"))) + .imei(String.valueOf(recvDataMap.get("IMEI"))) + .uptime(new Date(contentMap.containsKey("time") ? + Long.valueOf(String.valueOf(contentMap.get("time"))) + : System.currentTimeMillis())) + .logtime(new Date()) + .dataValue(String.valueOf(contentMap.get("ch4"))) + .cell(Double.valueOf(contentMap.containsKey("ba") ? String.valueOf(contentMap.get("ba")) : "0")) + .chha(String.valueOf(contentMap.get("chha"))) + .chhha(String.valueOf(contentMap.get("chhha"))) + .signals(String.valueOf(contentMap.get("si"))) + .devcode(StringUtils.isEmpty(devcode) ? "" : devcode) + .build(); + this.baseMapper.insert(lucencyGasBuilder); + return true; + } + + //历史数据暂不处理 + private Boolean historyGasDataProvider(Map recvDataMap, Map contentMap) { + List> historyDataList = (List>) JSONArray.parse(contentMap.get("history")); + String devcode = nbDeviceMapper.getDevcodeByImei(String.valueOf(recvDataMap.get("IMEI"))); + String tenantId = String.valueOf(recvDataMap.get("tenantId")); + String deviceId = String.valueOf(recvDataMap.get("deviceId")); + String imei = String.valueOf(recvDataMap.get("IMEI")); + for (Map historyData : historyDataList) { + this.baseMapper.addData(devcode, tenantId, deviceId, imei, new Date(historyData.containsKey("time") ? + Long.valueOf(String.valueOf(historyData.get("time"))) + : System.currentTimeMillis()), String.valueOf(historyData.get("ch4")), new Date()); + } + return true; + } + + private Boolean fisrtSaveDeviceAndSend(String imei, String productId, String deviceId) throws Exception { + Map deviceInfoMap = nbDeviceMapper.getDeviceByImei(imei); + if (ObjectUtils.isEmpty(deviceInfoMap)) { + NbDevice nbDevice = NbDevice.builder() + .logtime(new Date()) + .productId(productId) + .imei(imei).build(); + nbDeviceMapper.insert(nbDevice); + DataGasConfigParam dataGasConfigParam = new DataGasConfigParam(); + dataGasConfigParam.setOperator("casic"); + dataGasConfigParam.setProductId(productId); + dataGasConfigParam.setDeviceId(deviceId); + List dataGasConfigList = new ArrayList<>(); + dataGasConfigList.add(dataGasConfigParam); + aepCommandSend.sendStatusNb(dataGasConfigList); + return false; + } else if (deviceInfoMap.containsKey("device_id") && StringUtils.isEmpty(deviceInfoMap.get("device_id"))) { + if (!StringUtils.isEmpty(deviceId)) { + nbDeviceMapper.setDeviceIdByImei(imei, deviceId); + } + } + return true; + } + + private void configStatusDataProvider(Map recvDataMap, String status) { + String deviceId = String.valueOf(recvDataMap.get("deviceId")); + String recentConf =nbDeviceMapper.getRecentByDevciceId(deviceId); + String configMsg = status.equals("1") ? "成功下发" : "下发失败(参数不在有效范围内)"; + if(recentConf.equals("1")){ + nbConfigMapper.configStatusData(configMsg, deviceId); + }else { + nbAlarmConfigMapper.configStatusData(configMsg, 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/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/src/main/java/com/casic/model/BusConfigParam.java b/src/main/java/com/casic/model/BusConfigParam.java new file mode 100644 index 0000000..44004b5 --- /dev/null +++ b/src/main/java/com/casic/model/BusConfigParam.java @@ -0,0 +1,30 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + + +@Data +@ApiModel(value = "BusConfigParam", description = "设备下发配置(除了不传的,其他都是必传)") +public class BusConfigParam { + @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 = "指令内容(上传周期upload、采集周期collect、重试次数retry,都是必填)", dataType = "object",required= true) + private QueryContent queryContent; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/DataGasConfigParam.java b/src/main/java/com/casic/model/DataGasConfigParam.java new file mode 100644 index 0000000..4e71c77 --- /dev/null +++ b/src/main/java/com/casic/model/DataGasConfigParam.java @@ -0,0 +1,24 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +@Data +@ApiModel(value = "DataGasConfigParam", description = "状态下发配置参数(除了不传,其他都是必传)") +public class DataGasConfigParam { + @ApiModelProperty(notes = "电信平台设备id", dataType = "String",required= true) + private String deviceId; + @ApiModelProperty(notes = "产品id", dataType = "String",required= true) + private String productId; + @ApiModelProperty(notes = "操作人", dataType = "String") + private String operator; + @ApiModelProperty(notes = "设备等级", dataType = "Integer" ) + private Integer level; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/ErrorResponseData.java b/src/main/java/com/casic/model/ErrorResponseData.java new file mode 100644 index 0000000..080fcbc --- /dev/null +++ b/src/main/java/com/casic/model/ErrorResponseData.java @@ -0,0 +1,29 @@ +package com.casic.model; + + +public class ErrorResponseData extends ResponseData { + private String exceptionClazz; + + public String getExceptionClazz() { + return this.exceptionClazz; + } + + + public ErrorResponseData(String message) { + super(false, ResponseData.DEFAULT_ERROR_CODE, message, (Object)null); + } + + + public void setExceptionClazz(String exceptionClazz) { + this.exceptionClazz = exceptionClazz; + } + @Override + protected boolean canEqual(Object other) { + return other instanceof ErrorResponseData; + } + + @Override + public String toString() { + return "ErrorResponseData(exceptionClazz=" + this.getExceptionClazz() + ")"; + } +} diff --git a/src/main/java/com/casic/model/QueryContent.java b/src/main/java/com/casic/model/QueryContent.java new file mode 100644 index 0000000..e6cd12d --- /dev/null +++ b/src/main/java/com/casic/model/QueryContent.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "QueryContent", description = "下发配置参数") +public class QueryContent { + @ApiModelProperty(notes = "上传周期", dataType = "String",required= true) + private String upload; + @ApiModelProperty(notes = "收集周期", dataType = "String",required= true) + private String collect; + @ApiModelProperty(notes = "重传次数", dataType = "String",required= true) + private String retry; +} diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java new file mode 100644 index 0000000..c09b2d2 --- /dev/null +++ b/src/main/java/com/casic/model/ResponseData.java @@ -0,0 +1,58 @@ +package com.casic.model; + +import com.alibaba.fastjson.JSONObject; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.CreateCommandRequest; +import lombok.Data; + +import java.util.Calendar; +import java.util.Date; + +/** + * @author cz + * @date 2022-8-12 + */ +@Data +public class ResponseData { + public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功"; + public static final String DEFAULT_ERROR_MESSAGE = "网络异常"; + public static final Integer DEFAULT_SUCCESS_CODE = 200; + public static final Integer DEFAULT_ERROR_CODE = 500; + private Boolean success; + private Integer code; + private String message; + private T data; + + +// public static void main(String[] args) throws Exception { +// Calendar now = Calendar.getInstance(); +// Date getTime = now.getTime(); +//// if (isWeekend(now)) { +// now.add(Calendar.WEEK_OF_YEAR, 1); +// now.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); +// now.set(Calendar.HOUR_OF_DAY, 8); +// now.set(Calendar.MINUTE, 0); +// now.set(Calendar.SECOND, 0); +//// } else { +//// now.add(Calendar.HOUR, 24); +//// while (isWeekend(now)) { +//// now.add(Calendar.HOUR, 24); +//// } +//// } +// +// System.out.println(now.getTime()); +// } + + public ResponseData() { + } + public ResponseData(Boolean success, Integer code, String message, T data) { + this.success = success; + this.code = code; + this.message = message; + this.data = data; + } + + public static ErrorResponseData error(String message) { + return new ErrorResponseData(message); + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmConfigService.java b/src/main/java/com/casic/service/AlarmConfigService.java new file mode 100644 index 0000000..2d76956 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmConfigService.java @@ -0,0 +1,15 @@ +package com.casic.service; + +import com.casic.model.AlarmConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface AlarmConfigService { + + + ResponseData gasBatchConfig( List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/DeviceConfigService.java b/src/main/java/com/casic/service/DeviceConfigService.java new file mode 100644 index 0000000..0cf7efc --- /dev/null +++ b/src/main/java/com/casic/service/DeviceConfigService.java @@ -0,0 +1,16 @@ +package com.casic.service; + +import com.casic.model.BusConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface DeviceConfigService { + + ResponseData devcieConfig(BusConfigParam busConfigParam); + + ResponseData gasBatchConfig(List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/GasDataRecvService.java b/src/main/java/com/casic/service/GasDataRecvService.java new file mode 100644 index 0000000..25d7da9 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataRecvService.java @@ -0,0 +1,9 @@ +package com.casic.service; + +import java.util.Map; + +public interface GasDataRecvService { + + Object saveRev(Map recvDataMap); + +} diff --git a/src/main/java/com/casic/service/GasDataService.java b/src/main/java/com/casic/service/GasDataService.java new file mode 100644 index 0000000..090c624 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataService.java @@ -0,0 +1,19 @@ +package com.casic.service; + +import com.casic.entity.LucencyGasData; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface GasDataService { + + + ResponseData> getGasDataList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean sortDevcode); + + + ResponseData> getGasHistoryList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize); + + +} diff --git a/src/main/java/com/casic/service/GasDeviceService.java b/src/main/java/com/casic/service/GasDeviceService.java new file mode 100644 index 0000000..318d8ea --- /dev/null +++ b/src/main/java/com/casic/service/GasDeviceService.java @@ -0,0 +1,20 @@ +package com.casic.service; + +import com.casic.entity.NbDevice; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface GasDeviceService { + + ResponseData devcieStatusConfig(List dataGasConfigParam); + + List getDevicieList(String beginTime, String endTime, String keywords); + + ResponseData> getDevicieListPage(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean emptyStatus,Boolean sortDevcode); + + ResponseData> deviceDict(); +} diff --git a/src/main/java/com/casic/service/impl/AepCommandSend.java b/src/main/java/com/casic/service/impl/AepCommandSend.java new file mode 100644 index 0000000..c91f3ad --- /dev/null +++ b/src/main/java/com/casic/service/impl/AepCommandSend.java @@ -0,0 +1,97 @@ +package com.casic.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.casic.config.AEPParamConfig; +import com.casic.model.AlarmConfigParam; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component +@Slf4j +public class AepCommandSend { + + @Autowired + private AEPParamConfig aepParamConfig; + + public void sendStatusNb(List dataGasConfigList) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + Map queryMap = new HashMap<>(); + queryMap.put("query", 1); + dataGasMap.put("params", queryMap); + dataGasMap.put("serviceIdentifier", "DeviceQuery"); + dataGasConfigList.forEach( + dataGasConfigParam -> { + dataGasConfigParam.setLevel(1); + dataGasConfigParam.setContent(dataGasMap); + dataGasConfigParam.setOperator("casic"); + } + ); + for (DataGasConfigParam dataGasConfigParam : dataGasConfigList) { + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(dataGasConfigParam).getBytes()); //具体格式见前面请求body说明 + System.out.println(client.CreateCommand(request)); + } + client.shutdown(); + } + + public String sendConfig(BusConfigParam busConfigParam) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + dataGasMap.put("serviceIdentifier", "config"); + dataGasMap.put("params", busConfigParam.getQueryContent()); + busConfigParam.setContent(dataGasMap); + busConfigParam.setLevel(1); + busConfigParam.setOperator("casic"); + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(busConfigParam).getBytes()); //具体格式见前面请求body说明 + CreateCommandResponse msgResponse = client.CreateCommand(request); + System.out.println(msgResponse); + client.shutdown(); + log.debug("-----" + msgResponse.getMessage()); + if (msgResponse.getStatusCode()==200) { + return "未下发"; + } else { + return "下发异常"; + } + } + + public String sendAlarmConfig(AlarmConfigParam alarmConfigParam) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + dataGasMap.put("serviceIdentifier", "alarmconfig"); + dataGasMap.put("params", alarmConfigParam.getQueryContent()); + alarmConfigParam.setContent(dataGasMap); + alarmConfigParam.setLevel(1); + alarmConfigParam.setOperator("casic"); + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(alarmConfigParam).getBytes()); //具体格式见前面请求body说明 + CreateCommandResponse msgResponse = client.CreateCommand(request); + System.out.println(msgResponse); + client.shutdown(); + log.debug("-----" + msgResponse.getMessage()); + if (msgResponse.getStatusCode()==200) { + return "未下发"; + } else { + return "下发异常"; + } + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java b/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java new file mode 100644 index 0000000..eadfa04 --- /dev/null +++ b/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.NbAlarmConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.NbAlarmConfig; +import com.casic.model.AlarmConfigParam; +import com.casic.model.AlarmContent; +import com.casic.model.ResponseData; +import com.casic.service.AlarmConfigService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@AllArgsConstructor +@Slf4j +@Service +public class AlarmConfigServiceImpl extends ServiceImpl implements AlarmConfigService { + + private final AepCommandSend aepCommandSend; + private final NbDeviceMapper nbDeviceMapper; + + @Override + public ResponseData gasBatchConfig( List alarmConfigParamList){ + ResponseData responseData = new ResponseData(); + try { + for (AlarmConfigParam alarmConfigParam : alarmConfigParamList) { + String status = aepCommandSend.sendAlarmConfig(alarmConfigParam); + builderNbAlarmConfig(alarmConfigParam, status); + } + responseData.setCode(200); + responseData.setMessage("配置成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData configList(String devcode, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode){ + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + status = StringUtils.isEmpty(status) ? "" : status; + ResponseData responseData = new ResponseData(); + try { + QueryWrapper nbConfigWrapper = new QueryWrapper().like("devcode", devcode) + .like("status",status); + if (!StringUtils.isEmpty(beginTime)) { + nbConfigWrapper = nbConfigWrapper.gt("logtime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + nbConfigWrapper = nbConfigWrapper.lt("logtime", endTime); + } + nbConfigWrapper = sortDevcode ? nbConfigWrapper.orderByAsc("devcode") : nbConfigWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage configIPage = this.baseMapper.selectPage(userPage, nbConfigWrapper); + Map page = new HashMap(); + page.put("total", configIPage.getTotal()); + page.put("rows", configIPage.getRecords()); + page.put("current", configIPage.getCurrent()); + responseData.setCode(200); + responseData.setData(page); + responseData.setMessage("查询成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气报警下发查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + private void builderNbAlarmConfig(AlarmConfigParam alarmConfigParam,String status){ + nbDeviceMapper.updateRecentByDevciceId(alarmConfigParam.getDeviceId(), "2"); + AlarmContent queryContent = alarmConfigParam.getQueryContent(); + NbAlarmConfig nbConfig= NbAlarmConfig.builder() + .devcode(alarmConfigParam.getDevcode()) + .deviceId(alarmConfigParam.getDeviceId()) + .alarmcount(queryContent.getAlarmcount()) + .alarmperiod(queryContent.getAlarmperiod()) + .status(status) + .logtime(new Date()) + .build(); + this.baseMapper.insert(nbConfig); + } + +} diff --git a/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java new file mode 100644 index 0000000..57d13f0 --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java @@ -0,0 +1,112 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.dao.NbConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.NbConfig; +import com.casic.model.BusConfigParam; +import com.casic.model.QueryContent; +import com.casic.model.ResponseData; +import com.casic.service.DeviceConfigService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@AllArgsConstructor +@Slf4j +@Service +public class DeviceConfigServiceImpl implements DeviceConfigService { + + private final NbDeviceMapper nbDeviceMapper; + private final AepCommandSend aepCommandSend; + private final NbConfigMapper nbConfigMapper; + + @Override + public ResponseData devcieConfig(BusConfigParam busConfigParam) { + ResponseData responseData = new ResponseData(); + try { + String status = aepCommandSend.sendConfig(busConfigParam); + builderNbConfig(busConfigParam, status); + responseData.setCode(200); + responseData.setMessage(status.equals("未下发") ? "下发配置成功" : status); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData gasBatchConfig(List busConfigList) { + ResponseData responseData = new ResponseData(); + try { + for (BusConfigParam busConfigParam : busConfigList) { + String status = aepCommandSend.sendConfig(busConfigParam); + builderNbConfig(busConfigParam, status); + } + responseData.setCode(200); + responseData.setMessage("配置成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData configList(String devcode, String beginTime, String endTime, Integer currentIndex, Integer pageSize, String status,Boolean sortDevcode) { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + status = StringUtils.isEmpty(status) ? "" : status; + ResponseData responseData = new ResponseData(); + try { + QueryWrapper nbConfigWrapper = new QueryWrapper().like("devcode", devcode) + .like("status", status); + if (!StringUtils.isEmpty(beginTime)) { + nbConfigWrapper = nbConfigWrapper.gt("logtime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + nbConfigWrapper = nbConfigWrapper.lt("logtime", endTime); + } + nbConfigWrapper = sortDevcode ? nbConfigWrapper.orderByAsc("devcode") : nbConfigWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage configIPage = nbConfigMapper.selectPage(userPage, nbConfigWrapper); + Map page = new HashMap(); + page.put("total", configIPage.getTotal()); + page.put("rows", configIPage.getRecords()); + page.put("current", configIPage.getCurrent()); + responseData.setCode(200); + responseData.setData(page); + responseData.setMessage("查询成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + private void builderNbConfig(BusConfigParam busConfigParam, String status) { + nbDeviceMapper.updateRecentByDevciceId(busConfigParam.getDeviceId(), "1"); + QueryContent queryContent = busConfigParam.getQueryContent(); + NbConfig nbConfig = NbConfig.builder() + .collect(queryContent.getCollect()) + .upload(queryContent.getUpload()) + .retry(queryContent.getRetry()) + .devcode(busConfigParam.getDevcode()) + .deviceId(busConfigParam.getDeviceId()) + .status(status) + .logtime(new Date()) + .build(); + nbConfigMapper.insert(nbConfig); + } +} diff --git a/src/main/java/com/casic/service/impl/GasDataRecvServiceImpl.java b/src/main/java/com/casic/service/impl/GasDataRecvServiceImpl.java new file mode 100644 index 0000000..56c4c2f --- /dev/null +++ b/src/main/java/com/casic/service/impl/GasDataRecvServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.GasDataRecvMapper; +import com.casic.dao.NbAlarmConfigMapper; +import com.casic.dao.NbConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.LucencyGasData; +import com.casic.entity.NbDevice; +import com.casic.model.DataGasConfigParam; +import com.casic.model.ResponseData; +import com.casic.service.GasDataRecvService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; + +import java.util.*; + + +@Slf4j +@AllArgsConstructor +@Service +public class GasDataRecvServiceImpl extends ServiceImpl implements GasDataRecvService { + + private final NbDeviceMapper nbDeviceMapper; + private final AepCommandSend aepCommandSend; + private final NbConfigMapper nbConfigMapper; + private final NbAlarmConfigMapper nbAlarmConfigMapper; + + @Override + public Object saveRev(Map recvDataMap) { + ResponseData responseData = new ResponseData(); + try { + Map contentMap = (Map) recvDataMap.get("payload"); + if (contentMap.containsKey("status")) { + nbDeviceProvider(recvDataMap, contentMap); + } else if (contentMap.containsKey("update")) { + configStatusDataProvider(recvDataMap, String.valueOf(contentMap.get("update"))); + } else if (contentMap.containsKey("time")) { + realTimeGasDataProvider(recvDataMap, contentMap); + } else if (contentMap.containsKey("history")) { + historyGasDataProvider(recvDataMap, contentMap); + } + realTimeGasDataProvider(recvDataMap, contentMap); + responseData.setCode(200); + responseData.setMessage("保存成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备存储异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("保存异常"); + } + return responseData; + } + + private Boolean nbDeviceProvider(Map recvDataMap, Map contentMap) { + nbDeviceMapper.deleteDeviceByImei(String.valueOf(contentMap.get("imei"))); + NbDevice nbDevice = NbDevice.builder() + .logtime(new Date()) + .productId(String.valueOf(recvDataMap.get("productId"))) + .devcode(String.valueOf(contentMap.get("devid"))) + .iccid(String.valueOf(contentMap.get("iccid"))) + .status(String.valueOf(contentMap.get("status"))) + .deviceId(String.valueOf(recvDataMap.get("deviceId"))) + .valid(1) + .imei(String.valueOf(contentMap.get("imei"))).build(); + nbDeviceMapper.insert(nbDevice); + if (!StringUtils.isEmpty(nbDevice.getImei()) && !StringUtils.isEmpty(nbDevice.getDevcode())) { + this.baseMapper.updateData(nbDevice.getImei(), nbDevice.getDevcode()); + } + return true; + } + + private Boolean realTimeGasDataProvider(Map recvDataMap, Map contentMap) throws Exception { + String imei = String.valueOf(recvDataMap.get("IMEI")); + String deviceId = String.valueOf(recvDataMap.get("deviceId")); + String productId = String.valueOf(recvDataMap.get("productId")); + fisrtSaveDeviceAndSend(imei, productId, deviceId); + String devcode = nbDeviceMapper.getDevcodeByImei(imei); + LucencyGasData lucencyGasBuilder = LucencyGasData.builder() + .tenantId(Long.valueOf(String.valueOf(recvDataMap.get("tenantId")))) + .deviceId(String.valueOf(recvDataMap.get("deviceId"))) + .imei(String.valueOf(recvDataMap.get("IMEI"))) + .uptime(new Date(contentMap.containsKey("time") ? + Long.valueOf(String.valueOf(contentMap.get("time"))) + : System.currentTimeMillis())) + .logtime(new Date()) + .dataValue(String.valueOf(contentMap.get("ch4"))) + .cell(Double.valueOf(contentMap.containsKey("ba") ? String.valueOf(contentMap.get("ba")) : "0")) + .chha(String.valueOf(contentMap.get("chha"))) + .chhha(String.valueOf(contentMap.get("chhha"))) + .signals(String.valueOf(contentMap.get("si"))) + .devcode(StringUtils.isEmpty(devcode) ? "" : devcode) + .build(); + this.baseMapper.insert(lucencyGasBuilder); + return true; + } + + //历史数据暂不处理 + private Boolean historyGasDataProvider(Map recvDataMap, Map contentMap) { + List> historyDataList = (List>) JSONArray.parse(contentMap.get("history")); + String devcode = nbDeviceMapper.getDevcodeByImei(String.valueOf(recvDataMap.get("IMEI"))); + String tenantId = String.valueOf(recvDataMap.get("tenantId")); + String deviceId = String.valueOf(recvDataMap.get("deviceId")); + String imei = String.valueOf(recvDataMap.get("IMEI")); + for (Map historyData : historyDataList) { + this.baseMapper.addData(devcode, tenantId, deviceId, imei, new Date(historyData.containsKey("time") ? + Long.valueOf(String.valueOf(historyData.get("time"))) + : System.currentTimeMillis()), String.valueOf(historyData.get("ch4")), new Date()); + } + return true; + } + + private Boolean fisrtSaveDeviceAndSend(String imei, String productId, String deviceId) throws Exception { + Map deviceInfoMap = nbDeviceMapper.getDeviceByImei(imei); + if (ObjectUtils.isEmpty(deviceInfoMap)) { + NbDevice nbDevice = NbDevice.builder() + .logtime(new Date()) + .productId(productId) + .imei(imei).build(); + nbDeviceMapper.insert(nbDevice); + DataGasConfigParam dataGasConfigParam = new DataGasConfigParam(); + dataGasConfigParam.setOperator("casic"); + dataGasConfigParam.setProductId(productId); + dataGasConfigParam.setDeviceId(deviceId); + List dataGasConfigList = new ArrayList<>(); + dataGasConfigList.add(dataGasConfigParam); + aepCommandSend.sendStatusNb(dataGasConfigList); + return false; + } else if (deviceInfoMap.containsKey("device_id") && StringUtils.isEmpty(deviceInfoMap.get("device_id"))) { + if (!StringUtils.isEmpty(deviceId)) { + nbDeviceMapper.setDeviceIdByImei(imei, deviceId); + } + } + return true; + } + + private void configStatusDataProvider(Map recvDataMap, String status) { + String deviceId = String.valueOf(recvDataMap.get("deviceId")); + String recentConf =nbDeviceMapper.getRecentByDevciceId(deviceId); + String configMsg = status.equals("1") ? "成功下发" : "下发失败(参数不在有效范围内)"; + if(recentConf.equals("1")){ + nbConfigMapper.configStatusData(configMsg, deviceId); + }else { + nbAlarmConfigMapper.configStatusData(configMsg, deviceId); + } + + } +} diff --git a/src/main/java/com/casic/service/impl/GasDataServiceImpl.java b/src/main/java/com/casic/service/impl/GasDataServiceImpl.java new file mode 100644 index 0000000..9c38390 --- /dev/null +++ b/src/main/java/com/casic/service/impl/GasDataServiceImpl.java @@ -0,0 +1,93 @@ +package com.casic.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.dao.GasDataRecvMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.LucencyGasData; +import com.casic.model.ResponseData; +import com.casic.service.GasDataService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +@Slf4j +public class GasDataServiceImpl implements GasDataService { + @Resource + private GasDataRecvMapper gasDataRecvMapper; + @Resource + private NbDeviceMapper nbDeviceMapper; + + @Override + public ResponseData> getGasDataList(String devcode, String beginTime, String endTime, Integer currentIndex, Integer pageSize, Boolean sortDevcode) { + ResponseData responseData = new ResponseData(); + try { + devcode = StringUtils.isEmpty(devcode) ? "3" : devcode; + QueryWrapper lucencyGasWrapper = new QueryWrapper() + .select("id,devcode,tenant_id as tenantId,data_value as dataValue,signals,chha,chhha,cell," + + "device_id as deviceId,logtime,max(uptime) as uptime,imei").like("devcode", devcode); + if (!StringUtils.isEmpty(beginTime)) { + lucencyGasWrapper = lucencyGasWrapper.gt("uptime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + lucencyGasWrapper = lucencyGasWrapper.lt("uptime", endTime); + } + lucencyGasWrapper = lucencyGasWrapper.groupBy("devcode"); + lucencyGasWrapper = sortDevcode ? lucencyGasWrapper.orderByAsc("devcode") : lucencyGasWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex - 1, pageSize); + IPage userIPage = gasDataRecvMapper.selectPage(userPage, lucencyGasWrapper); + Map page = new HashMap(); + page.put("total", userIPage.getTotal()); + page.put("rows", userIPage.getRecords()); + page.put("current", userIPage.getCurrent()); + responseData.setCode(200); + responseData.setMessage("查询成功"); + responseData.setData(page); + } catch (DataAccessException dex) { + log.error("主题:哈尔滨燃气数据查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + @Override + public ResponseData> getGasHistoryList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize) { + ResponseData responseData = new ResponseData(); + try { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + QueryWrapper lucencyGasWrapper = new QueryWrapper().like("devcode", devcode); + if (!StringUtils.isEmpty(beginTime)) { + lucencyGasWrapper = lucencyGasWrapper.gt("uptime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + lucencyGasWrapper = lucencyGasWrapper.lt("uptime", endTime); + } + lucencyGasWrapper = lucencyGasWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage userIPage = gasDataRecvMapper.selectPage(userPage, lucencyGasWrapper); + Map page = new HashMap(); + page.put("total", userIPage.getTotal()); + page.put("rows", userIPage.getRecords()); + page.put("current", userIPage.getCurrent()); + responseData.setCode(200); + responseData.setMessage("查询成功"); + responseData.setData(page); + } catch (DataAccessException dex) { + log.error("主题:哈尔滨燃气数据查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } +} 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/src/main/java/com/casic/model/BusConfigParam.java b/src/main/java/com/casic/model/BusConfigParam.java new file mode 100644 index 0000000..44004b5 --- /dev/null +++ b/src/main/java/com/casic/model/BusConfigParam.java @@ -0,0 +1,30 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + + +@Data +@ApiModel(value = "BusConfigParam", description = "设备下发配置(除了不传的,其他都是必传)") +public class BusConfigParam { + @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 = "指令内容(上传周期upload、采集周期collect、重试次数retry,都是必填)", dataType = "object",required= true) + private QueryContent queryContent; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/DataGasConfigParam.java b/src/main/java/com/casic/model/DataGasConfigParam.java new file mode 100644 index 0000000..4e71c77 --- /dev/null +++ b/src/main/java/com/casic/model/DataGasConfigParam.java @@ -0,0 +1,24 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +@Data +@ApiModel(value = "DataGasConfigParam", description = "状态下发配置参数(除了不传,其他都是必传)") +public class DataGasConfigParam { + @ApiModelProperty(notes = "电信平台设备id", dataType = "String",required= true) + private String deviceId; + @ApiModelProperty(notes = "产品id", dataType = "String",required= true) + private String productId; + @ApiModelProperty(notes = "操作人", dataType = "String") + private String operator; + @ApiModelProperty(notes = "设备等级", dataType = "Integer" ) + private Integer level; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/ErrorResponseData.java b/src/main/java/com/casic/model/ErrorResponseData.java new file mode 100644 index 0000000..080fcbc --- /dev/null +++ b/src/main/java/com/casic/model/ErrorResponseData.java @@ -0,0 +1,29 @@ +package com.casic.model; + + +public class ErrorResponseData extends ResponseData { + private String exceptionClazz; + + public String getExceptionClazz() { + return this.exceptionClazz; + } + + + public ErrorResponseData(String message) { + super(false, ResponseData.DEFAULT_ERROR_CODE, message, (Object)null); + } + + + public void setExceptionClazz(String exceptionClazz) { + this.exceptionClazz = exceptionClazz; + } + @Override + protected boolean canEqual(Object other) { + return other instanceof ErrorResponseData; + } + + @Override + public String toString() { + return "ErrorResponseData(exceptionClazz=" + this.getExceptionClazz() + ")"; + } +} diff --git a/src/main/java/com/casic/model/QueryContent.java b/src/main/java/com/casic/model/QueryContent.java new file mode 100644 index 0000000..e6cd12d --- /dev/null +++ b/src/main/java/com/casic/model/QueryContent.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "QueryContent", description = "下发配置参数") +public class QueryContent { + @ApiModelProperty(notes = "上传周期", dataType = "String",required= true) + private String upload; + @ApiModelProperty(notes = "收集周期", dataType = "String",required= true) + private String collect; + @ApiModelProperty(notes = "重传次数", dataType = "String",required= true) + private String retry; +} diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java new file mode 100644 index 0000000..c09b2d2 --- /dev/null +++ b/src/main/java/com/casic/model/ResponseData.java @@ -0,0 +1,58 @@ +package com.casic.model; + +import com.alibaba.fastjson.JSONObject; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.CreateCommandRequest; +import lombok.Data; + +import java.util.Calendar; +import java.util.Date; + +/** + * @author cz + * @date 2022-8-12 + */ +@Data +public class ResponseData { + public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功"; + public static final String DEFAULT_ERROR_MESSAGE = "网络异常"; + public static final Integer DEFAULT_SUCCESS_CODE = 200; + public static final Integer DEFAULT_ERROR_CODE = 500; + private Boolean success; + private Integer code; + private String message; + private T data; + + +// public static void main(String[] args) throws Exception { +// Calendar now = Calendar.getInstance(); +// Date getTime = now.getTime(); +//// if (isWeekend(now)) { +// now.add(Calendar.WEEK_OF_YEAR, 1); +// now.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); +// now.set(Calendar.HOUR_OF_DAY, 8); +// now.set(Calendar.MINUTE, 0); +// now.set(Calendar.SECOND, 0); +//// } else { +//// now.add(Calendar.HOUR, 24); +//// while (isWeekend(now)) { +//// now.add(Calendar.HOUR, 24); +//// } +//// } +// +// System.out.println(now.getTime()); +// } + + public ResponseData() { + } + public ResponseData(Boolean success, Integer code, String message, T data) { + this.success = success; + this.code = code; + this.message = message; + this.data = data; + } + + public static ErrorResponseData error(String message) { + return new ErrorResponseData(message); + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmConfigService.java b/src/main/java/com/casic/service/AlarmConfigService.java new file mode 100644 index 0000000..2d76956 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmConfigService.java @@ -0,0 +1,15 @@ +package com.casic.service; + +import com.casic.model.AlarmConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface AlarmConfigService { + + + ResponseData gasBatchConfig( List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/DeviceConfigService.java b/src/main/java/com/casic/service/DeviceConfigService.java new file mode 100644 index 0000000..0cf7efc --- /dev/null +++ b/src/main/java/com/casic/service/DeviceConfigService.java @@ -0,0 +1,16 @@ +package com.casic.service; + +import com.casic.model.BusConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface DeviceConfigService { + + ResponseData devcieConfig(BusConfigParam busConfigParam); + + ResponseData gasBatchConfig(List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/GasDataRecvService.java b/src/main/java/com/casic/service/GasDataRecvService.java new file mode 100644 index 0000000..25d7da9 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataRecvService.java @@ -0,0 +1,9 @@ +package com.casic.service; + +import java.util.Map; + +public interface GasDataRecvService { + + Object saveRev(Map recvDataMap); + +} diff --git a/src/main/java/com/casic/service/GasDataService.java b/src/main/java/com/casic/service/GasDataService.java new file mode 100644 index 0000000..090c624 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataService.java @@ -0,0 +1,19 @@ +package com.casic.service; + +import com.casic.entity.LucencyGasData; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface GasDataService { + + + ResponseData> getGasDataList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean sortDevcode); + + + ResponseData> getGasHistoryList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize); + + +} diff --git a/src/main/java/com/casic/service/GasDeviceService.java b/src/main/java/com/casic/service/GasDeviceService.java new file mode 100644 index 0000000..318d8ea --- /dev/null +++ b/src/main/java/com/casic/service/GasDeviceService.java @@ -0,0 +1,20 @@ +package com.casic.service; + +import com.casic.entity.NbDevice; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface GasDeviceService { + + ResponseData devcieStatusConfig(List dataGasConfigParam); + + List getDevicieList(String beginTime, String endTime, String keywords); + + ResponseData> getDevicieListPage(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean emptyStatus,Boolean sortDevcode); + + ResponseData> deviceDict(); +} diff --git a/src/main/java/com/casic/service/impl/AepCommandSend.java b/src/main/java/com/casic/service/impl/AepCommandSend.java new file mode 100644 index 0000000..c91f3ad --- /dev/null +++ b/src/main/java/com/casic/service/impl/AepCommandSend.java @@ -0,0 +1,97 @@ +package com.casic.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.casic.config.AEPParamConfig; +import com.casic.model.AlarmConfigParam; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component +@Slf4j +public class AepCommandSend { + + @Autowired + private AEPParamConfig aepParamConfig; + + public void sendStatusNb(List dataGasConfigList) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + Map queryMap = new HashMap<>(); + queryMap.put("query", 1); + dataGasMap.put("params", queryMap); + dataGasMap.put("serviceIdentifier", "DeviceQuery"); + dataGasConfigList.forEach( + dataGasConfigParam -> { + dataGasConfigParam.setLevel(1); + dataGasConfigParam.setContent(dataGasMap); + dataGasConfigParam.setOperator("casic"); + } + ); + for (DataGasConfigParam dataGasConfigParam : dataGasConfigList) { + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(dataGasConfigParam).getBytes()); //具体格式见前面请求body说明 + System.out.println(client.CreateCommand(request)); + } + client.shutdown(); + } + + public String sendConfig(BusConfigParam busConfigParam) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + dataGasMap.put("serviceIdentifier", "config"); + dataGasMap.put("params", busConfigParam.getQueryContent()); + busConfigParam.setContent(dataGasMap); + busConfigParam.setLevel(1); + busConfigParam.setOperator("casic"); + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(busConfigParam).getBytes()); //具体格式见前面请求body说明 + CreateCommandResponse msgResponse = client.CreateCommand(request); + System.out.println(msgResponse); + client.shutdown(); + log.debug("-----" + msgResponse.getMessage()); + if (msgResponse.getStatusCode()==200) { + return "未下发"; + } else { + return "下发异常"; + } + } + + public String sendAlarmConfig(AlarmConfigParam alarmConfigParam) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + dataGasMap.put("serviceIdentifier", "alarmconfig"); + dataGasMap.put("params", alarmConfigParam.getQueryContent()); + alarmConfigParam.setContent(dataGasMap); + alarmConfigParam.setLevel(1); + alarmConfigParam.setOperator("casic"); + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(alarmConfigParam).getBytes()); //具体格式见前面请求body说明 + CreateCommandResponse msgResponse = client.CreateCommand(request); + System.out.println(msgResponse); + client.shutdown(); + log.debug("-----" + msgResponse.getMessage()); + if (msgResponse.getStatusCode()==200) { + return "未下发"; + } else { + return "下发异常"; + } + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java b/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java new file mode 100644 index 0000000..eadfa04 --- /dev/null +++ b/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.NbAlarmConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.NbAlarmConfig; +import com.casic.model.AlarmConfigParam; +import com.casic.model.AlarmContent; +import com.casic.model.ResponseData; +import com.casic.service.AlarmConfigService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@AllArgsConstructor +@Slf4j +@Service +public class AlarmConfigServiceImpl extends ServiceImpl implements AlarmConfigService { + + private final AepCommandSend aepCommandSend; + private final NbDeviceMapper nbDeviceMapper; + + @Override + public ResponseData gasBatchConfig( List alarmConfigParamList){ + ResponseData responseData = new ResponseData(); + try { + for (AlarmConfigParam alarmConfigParam : alarmConfigParamList) { + String status = aepCommandSend.sendAlarmConfig(alarmConfigParam); + builderNbAlarmConfig(alarmConfigParam, status); + } + responseData.setCode(200); + responseData.setMessage("配置成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData configList(String devcode, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode){ + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + status = StringUtils.isEmpty(status) ? "" : status; + ResponseData responseData = new ResponseData(); + try { + QueryWrapper nbConfigWrapper = new QueryWrapper().like("devcode", devcode) + .like("status",status); + if (!StringUtils.isEmpty(beginTime)) { + nbConfigWrapper = nbConfigWrapper.gt("logtime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + nbConfigWrapper = nbConfigWrapper.lt("logtime", endTime); + } + nbConfigWrapper = sortDevcode ? nbConfigWrapper.orderByAsc("devcode") : nbConfigWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage configIPage = this.baseMapper.selectPage(userPage, nbConfigWrapper); + Map page = new HashMap(); + page.put("total", configIPage.getTotal()); + page.put("rows", configIPage.getRecords()); + page.put("current", configIPage.getCurrent()); + responseData.setCode(200); + responseData.setData(page); + responseData.setMessage("查询成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气报警下发查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + private void builderNbAlarmConfig(AlarmConfigParam alarmConfigParam,String status){ + nbDeviceMapper.updateRecentByDevciceId(alarmConfigParam.getDeviceId(), "2"); + AlarmContent queryContent = alarmConfigParam.getQueryContent(); + NbAlarmConfig nbConfig= NbAlarmConfig.builder() + .devcode(alarmConfigParam.getDevcode()) + .deviceId(alarmConfigParam.getDeviceId()) + .alarmcount(queryContent.getAlarmcount()) + .alarmperiod(queryContent.getAlarmperiod()) + .status(status) + .logtime(new Date()) + .build(); + this.baseMapper.insert(nbConfig); + } + +} diff --git a/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java new file mode 100644 index 0000000..57d13f0 --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java @@ -0,0 +1,112 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.dao.NbConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.NbConfig; +import com.casic.model.BusConfigParam; +import com.casic.model.QueryContent; +import com.casic.model.ResponseData; +import com.casic.service.DeviceConfigService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@AllArgsConstructor +@Slf4j +@Service +public class DeviceConfigServiceImpl implements DeviceConfigService { + + private final NbDeviceMapper nbDeviceMapper; + private final AepCommandSend aepCommandSend; + private final NbConfigMapper nbConfigMapper; + + @Override + public ResponseData devcieConfig(BusConfigParam busConfigParam) { + ResponseData responseData = new ResponseData(); + try { + String status = aepCommandSend.sendConfig(busConfigParam); + builderNbConfig(busConfigParam, status); + responseData.setCode(200); + responseData.setMessage(status.equals("未下发") ? "下发配置成功" : status); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData gasBatchConfig(List busConfigList) { + ResponseData responseData = new ResponseData(); + try { + for (BusConfigParam busConfigParam : busConfigList) { + String status = aepCommandSend.sendConfig(busConfigParam); + builderNbConfig(busConfigParam, status); + } + responseData.setCode(200); + responseData.setMessage("配置成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData configList(String devcode, String beginTime, String endTime, Integer currentIndex, Integer pageSize, String status,Boolean sortDevcode) { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + status = StringUtils.isEmpty(status) ? "" : status; + ResponseData responseData = new ResponseData(); + try { + QueryWrapper nbConfigWrapper = new QueryWrapper().like("devcode", devcode) + .like("status", status); + if (!StringUtils.isEmpty(beginTime)) { + nbConfigWrapper = nbConfigWrapper.gt("logtime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + nbConfigWrapper = nbConfigWrapper.lt("logtime", endTime); + } + nbConfigWrapper = sortDevcode ? nbConfigWrapper.orderByAsc("devcode") : nbConfigWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage configIPage = nbConfigMapper.selectPage(userPage, nbConfigWrapper); + Map page = new HashMap(); + page.put("total", configIPage.getTotal()); + page.put("rows", configIPage.getRecords()); + page.put("current", configIPage.getCurrent()); + responseData.setCode(200); + responseData.setData(page); + responseData.setMessage("查询成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + private void builderNbConfig(BusConfigParam busConfigParam, String status) { + nbDeviceMapper.updateRecentByDevciceId(busConfigParam.getDeviceId(), "1"); + QueryContent queryContent = busConfigParam.getQueryContent(); + NbConfig nbConfig = NbConfig.builder() + .collect(queryContent.getCollect()) + .upload(queryContent.getUpload()) + .retry(queryContent.getRetry()) + .devcode(busConfigParam.getDevcode()) + .deviceId(busConfigParam.getDeviceId()) + .status(status) + .logtime(new Date()) + .build(); + nbConfigMapper.insert(nbConfig); + } +} diff --git a/src/main/java/com/casic/service/impl/GasDataRecvServiceImpl.java b/src/main/java/com/casic/service/impl/GasDataRecvServiceImpl.java new file mode 100644 index 0000000..56c4c2f --- /dev/null +++ b/src/main/java/com/casic/service/impl/GasDataRecvServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.GasDataRecvMapper; +import com.casic.dao.NbAlarmConfigMapper; +import com.casic.dao.NbConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.LucencyGasData; +import com.casic.entity.NbDevice; +import com.casic.model.DataGasConfigParam; +import com.casic.model.ResponseData; +import com.casic.service.GasDataRecvService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; + +import java.util.*; + + +@Slf4j +@AllArgsConstructor +@Service +public class GasDataRecvServiceImpl extends ServiceImpl implements GasDataRecvService { + + private final NbDeviceMapper nbDeviceMapper; + private final AepCommandSend aepCommandSend; + private final NbConfigMapper nbConfigMapper; + private final NbAlarmConfigMapper nbAlarmConfigMapper; + + @Override + public Object saveRev(Map recvDataMap) { + ResponseData responseData = new ResponseData(); + try { + Map contentMap = (Map) recvDataMap.get("payload"); + if (contentMap.containsKey("status")) { + nbDeviceProvider(recvDataMap, contentMap); + } else if (contentMap.containsKey("update")) { + configStatusDataProvider(recvDataMap, String.valueOf(contentMap.get("update"))); + } else if (contentMap.containsKey("time")) { + realTimeGasDataProvider(recvDataMap, contentMap); + } else if (contentMap.containsKey("history")) { + historyGasDataProvider(recvDataMap, contentMap); + } + realTimeGasDataProvider(recvDataMap, contentMap); + responseData.setCode(200); + responseData.setMessage("保存成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备存储异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("保存异常"); + } + return responseData; + } + + private Boolean nbDeviceProvider(Map recvDataMap, Map contentMap) { + nbDeviceMapper.deleteDeviceByImei(String.valueOf(contentMap.get("imei"))); + NbDevice nbDevice = NbDevice.builder() + .logtime(new Date()) + .productId(String.valueOf(recvDataMap.get("productId"))) + .devcode(String.valueOf(contentMap.get("devid"))) + .iccid(String.valueOf(contentMap.get("iccid"))) + .status(String.valueOf(contentMap.get("status"))) + .deviceId(String.valueOf(recvDataMap.get("deviceId"))) + .valid(1) + .imei(String.valueOf(contentMap.get("imei"))).build(); + nbDeviceMapper.insert(nbDevice); + if (!StringUtils.isEmpty(nbDevice.getImei()) && !StringUtils.isEmpty(nbDevice.getDevcode())) { + this.baseMapper.updateData(nbDevice.getImei(), nbDevice.getDevcode()); + } + return true; + } + + private Boolean realTimeGasDataProvider(Map recvDataMap, Map contentMap) throws Exception { + String imei = String.valueOf(recvDataMap.get("IMEI")); + String deviceId = String.valueOf(recvDataMap.get("deviceId")); + String productId = String.valueOf(recvDataMap.get("productId")); + fisrtSaveDeviceAndSend(imei, productId, deviceId); + String devcode = nbDeviceMapper.getDevcodeByImei(imei); + LucencyGasData lucencyGasBuilder = LucencyGasData.builder() + .tenantId(Long.valueOf(String.valueOf(recvDataMap.get("tenantId")))) + .deviceId(String.valueOf(recvDataMap.get("deviceId"))) + .imei(String.valueOf(recvDataMap.get("IMEI"))) + .uptime(new Date(contentMap.containsKey("time") ? + Long.valueOf(String.valueOf(contentMap.get("time"))) + : System.currentTimeMillis())) + .logtime(new Date()) + .dataValue(String.valueOf(contentMap.get("ch4"))) + .cell(Double.valueOf(contentMap.containsKey("ba") ? String.valueOf(contentMap.get("ba")) : "0")) + .chha(String.valueOf(contentMap.get("chha"))) + .chhha(String.valueOf(contentMap.get("chhha"))) + .signals(String.valueOf(contentMap.get("si"))) + .devcode(StringUtils.isEmpty(devcode) ? "" : devcode) + .build(); + this.baseMapper.insert(lucencyGasBuilder); + return true; + } + + //历史数据暂不处理 + private Boolean historyGasDataProvider(Map recvDataMap, Map contentMap) { + List> historyDataList = (List>) JSONArray.parse(contentMap.get("history")); + String devcode = nbDeviceMapper.getDevcodeByImei(String.valueOf(recvDataMap.get("IMEI"))); + String tenantId = String.valueOf(recvDataMap.get("tenantId")); + String deviceId = String.valueOf(recvDataMap.get("deviceId")); + String imei = String.valueOf(recvDataMap.get("IMEI")); + for (Map historyData : historyDataList) { + this.baseMapper.addData(devcode, tenantId, deviceId, imei, new Date(historyData.containsKey("time") ? + Long.valueOf(String.valueOf(historyData.get("time"))) + : System.currentTimeMillis()), String.valueOf(historyData.get("ch4")), new Date()); + } + return true; + } + + private Boolean fisrtSaveDeviceAndSend(String imei, String productId, String deviceId) throws Exception { + Map deviceInfoMap = nbDeviceMapper.getDeviceByImei(imei); + if (ObjectUtils.isEmpty(deviceInfoMap)) { + NbDevice nbDevice = NbDevice.builder() + .logtime(new Date()) + .productId(productId) + .imei(imei).build(); + nbDeviceMapper.insert(nbDevice); + DataGasConfigParam dataGasConfigParam = new DataGasConfigParam(); + dataGasConfigParam.setOperator("casic"); + dataGasConfigParam.setProductId(productId); + dataGasConfigParam.setDeviceId(deviceId); + List dataGasConfigList = new ArrayList<>(); + dataGasConfigList.add(dataGasConfigParam); + aepCommandSend.sendStatusNb(dataGasConfigList); + return false; + } else if (deviceInfoMap.containsKey("device_id") && StringUtils.isEmpty(deviceInfoMap.get("device_id"))) { + if (!StringUtils.isEmpty(deviceId)) { + nbDeviceMapper.setDeviceIdByImei(imei, deviceId); + } + } + return true; + } + + private void configStatusDataProvider(Map recvDataMap, String status) { + String deviceId = String.valueOf(recvDataMap.get("deviceId")); + String recentConf =nbDeviceMapper.getRecentByDevciceId(deviceId); + String configMsg = status.equals("1") ? "成功下发" : "下发失败(参数不在有效范围内)"; + if(recentConf.equals("1")){ + nbConfigMapper.configStatusData(configMsg, deviceId); + }else { + nbAlarmConfigMapper.configStatusData(configMsg, deviceId); + } + + } +} diff --git a/src/main/java/com/casic/service/impl/GasDataServiceImpl.java b/src/main/java/com/casic/service/impl/GasDataServiceImpl.java new file mode 100644 index 0000000..9c38390 --- /dev/null +++ b/src/main/java/com/casic/service/impl/GasDataServiceImpl.java @@ -0,0 +1,93 @@ +package com.casic.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.dao.GasDataRecvMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.LucencyGasData; +import com.casic.model.ResponseData; +import com.casic.service.GasDataService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +@Slf4j +public class GasDataServiceImpl implements GasDataService { + @Resource + private GasDataRecvMapper gasDataRecvMapper; + @Resource + private NbDeviceMapper nbDeviceMapper; + + @Override + public ResponseData> getGasDataList(String devcode, String beginTime, String endTime, Integer currentIndex, Integer pageSize, Boolean sortDevcode) { + ResponseData responseData = new ResponseData(); + try { + devcode = StringUtils.isEmpty(devcode) ? "3" : devcode; + QueryWrapper lucencyGasWrapper = new QueryWrapper() + .select("id,devcode,tenant_id as tenantId,data_value as dataValue,signals,chha,chhha,cell," + + "device_id as deviceId,logtime,max(uptime) as uptime,imei").like("devcode", devcode); + if (!StringUtils.isEmpty(beginTime)) { + lucencyGasWrapper = lucencyGasWrapper.gt("uptime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + lucencyGasWrapper = lucencyGasWrapper.lt("uptime", endTime); + } + lucencyGasWrapper = lucencyGasWrapper.groupBy("devcode"); + lucencyGasWrapper = sortDevcode ? lucencyGasWrapper.orderByAsc("devcode") : lucencyGasWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex - 1, pageSize); + IPage userIPage = gasDataRecvMapper.selectPage(userPage, lucencyGasWrapper); + Map page = new HashMap(); + page.put("total", userIPage.getTotal()); + page.put("rows", userIPage.getRecords()); + page.put("current", userIPage.getCurrent()); + responseData.setCode(200); + responseData.setMessage("查询成功"); + responseData.setData(page); + } catch (DataAccessException dex) { + log.error("主题:哈尔滨燃气数据查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + @Override + public ResponseData> getGasHistoryList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize) { + ResponseData responseData = new ResponseData(); + try { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + QueryWrapper lucencyGasWrapper = new QueryWrapper().like("devcode", devcode); + if (!StringUtils.isEmpty(beginTime)) { + lucencyGasWrapper = lucencyGasWrapper.gt("uptime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + lucencyGasWrapper = lucencyGasWrapper.lt("uptime", endTime); + } + lucencyGasWrapper = lucencyGasWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage userIPage = gasDataRecvMapper.selectPage(userPage, lucencyGasWrapper); + Map page = new HashMap(); + page.put("total", userIPage.getTotal()); + page.put("rows", userIPage.getRecords()); + page.put("current", userIPage.getCurrent()); + responseData.setCode(200); + responseData.setMessage("查询成功"); + responseData.setData(page); + } catch (DataAccessException dex) { + log.error("主题:哈尔滨燃气数据查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } +} diff --git a/src/main/java/com/casic/service/impl/GasDeviceServiceImpl.java b/src/main/java/com/casic/service/impl/GasDeviceServiceImpl.java new file mode 100644 index 0000000..7cc59bb --- /dev/null +++ b/src/main/java/com/casic/service/impl/GasDeviceServiceImpl.java @@ -0,0 +1,119 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.dao.NbConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.NbConfig; +import com.casic.entity.NbDevice; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.casic.model.QueryContent; +import com.casic.model.ResponseData; +import com.casic.service.GasDeviceService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.*; + +@Slf4j +@Service +@AllArgsConstructor +public class GasDeviceServiceImpl implements GasDeviceService { + + private final NbDeviceMapper nbDeviceMapper; + private final AepCommandSend aepCommandSend; + private final NbConfigMapper nbConfigMapper; + + @Override + public ResponseData devcieStatusConfig(List dataGasConfigParam) { + ResponseData responseData = new ResponseData(); + try { + aepCommandSend.sendStatusNb(dataGasConfigParam); + responseData.setCode(200); + responseData.setMessage("配置成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + + @Override + public List getDevicieList(String beginTime, String endTime, String devcode) { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + List nbDevicesList = new ArrayList<>(); + try { + + QueryWrapper lucencyGasWrapper = new QueryWrapper().like("devcode", devcode); + if (!StringUtils.isEmpty(beginTime)) { + lucencyGasWrapper = lucencyGasWrapper.gt("uptime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + lucencyGasWrapper = lucencyGasWrapper.lt("uptime", endTime); + } + lucencyGasWrapper = lucencyGasWrapper.orderByDesc("logtime"); + nbDevicesList = nbDeviceMapper.selectList(lucencyGasWrapper); + } catch (DataAccessException dex) { + log.error("主题:哈尔滨燃气设备导出查询异常,异常信息:{}", dex.getMessage()); + } + return nbDevicesList; + } + + @Override + public ResponseData> getDevicieListPage(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean emptyStatus,Boolean sortDevcode) { + ResponseData responseData = new ResponseData(); + try { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + QueryWrapper lucencyGasWrapper =emptyStatus? new QueryWrapper().isNull("device_id"):new QueryWrapper().like("devcode", devcode); + if (!StringUtils.isEmpty(beginTime)) { + lucencyGasWrapper = lucencyGasWrapper.gt("logtime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + lucencyGasWrapper = lucencyGasWrapper.lt("logtime", endTime); + } + lucencyGasWrapper = sortDevcode ? lucencyGasWrapper.orderByAsc("devcode") : lucencyGasWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage userIPage = nbDeviceMapper.selectPage(userPage, lucencyGasWrapper); + Map page = new HashMap(); + page.put("total", userIPage.getTotal()); + page.put("rows", userIPage.getRecords()); + page.put("current", userIPage.getCurrent()); + responseData.setCode(200); + responseData.setMessage("查询成功"); + responseData.setData(page); + } catch (DataAccessException dex) { + log.error("主题:哈尔滨燃气设备状态查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + @Override + public ResponseData> deviceDict() { + ResponseData responseData = new ResponseData(); + try { + QueryWrapper nbDeviceWrapper = new QueryWrapper() + .isNotNull("devcode"); + List nbDevicesList = nbDeviceMapper.selectList(nbDeviceWrapper); + responseData.setCode(200); + responseData.setMessage("配置成功"); + responseData.setData(nbDevicesList); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备字典列表查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + +} 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/src/main/java/com/casic/model/BusConfigParam.java b/src/main/java/com/casic/model/BusConfigParam.java new file mode 100644 index 0000000..44004b5 --- /dev/null +++ b/src/main/java/com/casic/model/BusConfigParam.java @@ -0,0 +1,30 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + + +@Data +@ApiModel(value = "BusConfigParam", description = "设备下发配置(除了不传的,其他都是必传)") +public class BusConfigParam { + @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 = "指令内容(上传周期upload、采集周期collect、重试次数retry,都是必填)", dataType = "object",required= true) + private QueryContent queryContent; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/DataGasConfigParam.java b/src/main/java/com/casic/model/DataGasConfigParam.java new file mode 100644 index 0000000..4e71c77 --- /dev/null +++ b/src/main/java/com/casic/model/DataGasConfigParam.java @@ -0,0 +1,24 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +@Data +@ApiModel(value = "DataGasConfigParam", description = "状态下发配置参数(除了不传,其他都是必传)") +public class DataGasConfigParam { + @ApiModelProperty(notes = "电信平台设备id", dataType = "String",required= true) + private String deviceId; + @ApiModelProperty(notes = "产品id", dataType = "String",required= true) + private String productId; + @ApiModelProperty(notes = "操作人", dataType = "String") + private String operator; + @ApiModelProperty(notes = "设备等级", dataType = "Integer" ) + private Integer level; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/ErrorResponseData.java b/src/main/java/com/casic/model/ErrorResponseData.java new file mode 100644 index 0000000..080fcbc --- /dev/null +++ b/src/main/java/com/casic/model/ErrorResponseData.java @@ -0,0 +1,29 @@ +package com.casic.model; + + +public class ErrorResponseData extends ResponseData { + private String exceptionClazz; + + public String getExceptionClazz() { + return this.exceptionClazz; + } + + + public ErrorResponseData(String message) { + super(false, ResponseData.DEFAULT_ERROR_CODE, message, (Object)null); + } + + + public void setExceptionClazz(String exceptionClazz) { + this.exceptionClazz = exceptionClazz; + } + @Override + protected boolean canEqual(Object other) { + return other instanceof ErrorResponseData; + } + + @Override + public String toString() { + return "ErrorResponseData(exceptionClazz=" + this.getExceptionClazz() + ")"; + } +} diff --git a/src/main/java/com/casic/model/QueryContent.java b/src/main/java/com/casic/model/QueryContent.java new file mode 100644 index 0000000..e6cd12d --- /dev/null +++ b/src/main/java/com/casic/model/QueryContent.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "QueryContent", description = "下发配置参数") +public class QueryContent { + @ApiModelProperty(notes = "上传周期", dataType = "String",required= true) + private String upload; + @ApiModelProperty(notes = "收集周期", dataType = "String",required= true) + private String collect; + @ApiModelProperty(notes = "重传次数", dataType = "String",required= true) + private String retry; +} diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java new file mode 100644 index 0000000..c09b2d2 --- /dev/null +++ b/src/main/java/com/casic/model/ResponseData.java @@ -0,0 +1,58 @@ +package com.casic.model; + +import com.alibaba.fastjson.JSONObject; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.CreateCommandRequest; +import lombok.Data; + +import java.util.Calendar; +import java.util.Date; + +/** + * @author cz + * @date 2022-8-12 + */ +@Data +public class ResponseData { + public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功"; + public static final String DEFAULT_ERROR_MESSAGE = "网络异常"; + public static final Integer DEFAULT_SUCCESS_CODE = 200; + public static final Integer DEFAULT_ERROR_CODE = 500; + private Boolean success; + private Integer code; + private String message; + private T data; + + +// public static void main(String[] args) throws Exception { +// Calendar now = Calendar.getInstance(); +// Date getTime = now.getTime(); +//// if (isWeekend(now)) { +// now.add(Calendar.WEEK_OF_YEAR, 1); +// now.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); +// now.set(Calendar.HOUR_OF_DAY, 8); +// now.set(Calendar.MINUTE, 0); +// now.set(Calendar.SECOND, 0); +//// } else { +//// now.add(Calendar.HOUR, 24); +//// while (isWeekend(now)) { +//// now.add(Calendar.HOUR, 24); +//// } +//// } +// +// System.out.println(now.getTime()); +// } + + public ResponseData() { + } + public ResponseData(Boolean success, Integer code, String message, T data) { + this.success = success; + this.code = code; + this.message = message; + this.data = data; + } + + public static ErrorResponseData error(String message) { + return new ErrorResponseData(message); + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmConfigService.java b/src/main/java/com/casic/service/AlarmConfigService.java new file mode 100644 index 0000000..2d76956 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmConfigService.java @@ -0,0 +1,15 @@ +package com.casic.service; + +import com.casic.model.AlarmConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface AlarmConfigService { + + + ResponseData gasBatchConfig( List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/DeviceConfigService.java b/src/main/java/com/casic/service/DeviceConfigService.java new file mode 100644 index 0000000..0cf7efc --- /dev/null +++ b/src/main/java/com/casic/service/DeviceConfigService.java @@ -0,0 +1,16 @@ +package com.casic.service; + +import com.casic.model.BusConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface DeviceConfigService { + + ResponseData devcieConfig(BusConfigParam busConfigParam); + + ResponseData gasBatchConfig(List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/GasDataRecvService.java b/src/main/java/com/casic/service/GasDataRecvService.java new file mode 100644 index 0000000..25d7da9 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataRecvService.java @@ -0,0 +1,9 @@ +package com.casic.service; + +import java.util.Map; + +public interface GasDataRecvService { + + Object saveRev(Map recvDataMap); + +} diff --git a/src/main/java/com/casic/service/GasDataService.java b/src/main/java/com/casic/service/GasDataService.java new file mode 100644 index 0000000..090c624 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataService.java @@ -0,0 +1,19 @@ +package com.casic.service; + +import com.casic.entity.LucencyGasData; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface GasDataService { + + + ResponseData> getGasDataList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean sortDevcode); + + + ResponseData> getGasHistoryList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize); + + +} diff --git a/src/main/java/com/casic/service/GasDeviceService.java b/src/main/java/com/casic/service/GasDeviceService.java new file mode 100644 index 0000000..318d8ea --- /dev/null +++ b/src/main/java/com/casic/service/GasDeviceService.java @@ -0,0 +1,20 @@ +package com.casic.service; + +import com.casic.entity.NbDevice; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface GasDeviceService { + + ResponseData devcieStatusConfig(List dataGasConfigParam); + + List getDevicieList(String beginTime, String endTime, String keywords); + + ResponseData> getDevicieListPage(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean emptyStatus,Boolean sortDevcode); + + ResponseData> deviceDict(); +} diff --git a/src/main/java/com/casic/service/impl/AepCommandSend.java b/src/main/java/com/casic/service/impl/AepCommandSend.java new file mode 100644 index 0000000..c91f3ad --- /dev/null +++ b/src/main/java/com/casic/service/impl/AepCommandSend.java @@ -0,0 +1,97 @@ +package com.casic.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.casic.config.AEPParamConfig; +import com.casic.model.AlarmConfigParam; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component +@Slf4j +public class AepCommandSend { + + @Autowired + private AEPParamConfig aepParamConfig; + + public void sendStatusNb(List dataGasConfigList) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + Map queryMap = new HashMap<>(); + queryMap.put("query", 1); + dataGasMap.put("params", queryMap); + dataGasMap.put("serviceIdentifier", "DeviceQuery"); + dataGasConfigList.forEach( + dataGasConfigParam -> { + dataGasConfigParam.setLevel(1); + dataGasConfigParam.setContent(dataGasMap); + dataGasConfigParam.setOperator("casic"); + } + ); + for (DataGasConfigParam dataGasConfigParam : dataGasConfigList) { + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(dataGasConfigParam).getBytes()); //具体格式见前面请求body说明 + System.out.println(client.CreateCommand(request)); + } + client.shutdown(); + } + + public String sendConfig(BusConfigParam busConfigParam) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + dataGasMap.put("serviceIdentifier", "config"); + dataGasMap.put("params", busConfigParam.getQueryContent()); + busConfigParam.setContent(dataGasMap); + busConfigParam.setLevel(1); + busConfigParam.setOperator("casic"); + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(busConfigParam).getBytes()); //具体格式见前面请求body说明 + CreateCommandResponse msgResponse = client.CreateCommand(request); + System.out.println(msgResponse); + client.shutdown(); + log.debug("-----" + msgResponse.getMessage()); + if (msgResponse.getStatusCode()==200) { + return "未下发"; + } else { + return "下发异常"; + } + } + + public String sendAlarmConfig(AlarmConfigParam alarmConfigParam) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + dataGasMap.put("serviceIdentifier", "alarmconfig"); + dataGasMap.put("params", alarmConfigParam.getQueryContent()); + alarmConfigParam.setContent(dataGasMap); + alarmConfigParam.setLevel(1); + alarmConfigParam.setOperator("casic"); + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(alarmConfigParam).getBytes()); //具体格式见前面请求body说明 + CreateCommandResponse msgResponse = client.CreateCommand(request); + System.out.println(msgResponse); + client.shutdown(); + log.debug("-----" + msgResponse.getMessage()); + if (msgResponse.getStatusCode()==200) { + return "未下发"; + } else { + return "下发异常"; + } + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java b/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java new file mode 100644 index 0000000..eadfa04 --- /dev/null +++ b/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.NbAlarmConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.NbAlarmConfig; +import com.casic.model.AlarmConfigParam; +import com.casic.model.AlarmContent; +import com.casic.model.ResponseData; +import com.casic.service.AlarmConfigService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@AllArgsConstructor +@Slf4j +@Service +public class AlarmConfigServiceImpl extends ServiceImpl implements AlarmConfigService { + + private final AepCommandSend aepCommandSend; + private final NbDeviceMapper nbDeviceMapper; + + @Override + public ResponseData gasBatchConfig( List alarmConfigParamList){ + ResponseData responseData = new ResponseData(); + try { + for (AlarmConfigParam alarmConfigParam : alarmConfigParamList) { + String status = aepCommandSend.sendAlarmConfig(alarmConfigParam); + builderNbAlarmConfig(alarmConfigParam, status); + } + responseData.setCode(200); + responseData.setMessage("配置成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData configList(String devcode, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode){ + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + status = StringUtils.isEmpty(status) ? "" : status; + ResponseData responseData = new ResponseData(); + try { + QueryWrapper nbConfigWrapper = new QueryWrapper().like("devcode", devcode) + .like("status",status); + if (!StringUtils.isEmpty(beginTime)) { + nbConfigWrapper = nbConfigWrapper.gt("logtime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + nbConfigWrapper = nbConfigWrapper.lt("logtime", endTime); + } + nbConfigWrapper = sortDevcode ? nbConfigWrapper.orderByAsc("devcode") : nbConfigWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage configIPage = this.baseMapper.selectPage(userPage, nbConfigWrapper); + Map page = new HashMap(); + page.put("total", configIPage.getTotal()); + page.put("rows", configIPage.getRecords()); + page.put("current", configIPage.getCurrent()); + responseData.setCode(200); + responseData.setData(page); + responseData.setMessage("查询成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气报警下发查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + private void builderNbAlarmConfig(AlarmConfigParam alarmConfigParam,String status){ + nbDeviceMapper.updateRecentByDevciceId(alarmConfigParam.getDeviceId(), "2"); + AlarmContent queryContent = alarmConfigParam.getQueryContent(); + NbAlarmConfig nbConfig= NbAlarmConfig.builder() + .devcode(alarmConfigParam.getDevcode()) + .deviceId(alarmConfigParam.getDeviceId()) + .alarmcount(queryContent.getAlarmcount()) + .alarmperiod(queryContent.getAlarmperiod()) + .status(status) + .logtime(new Date()) + .build(); + this.baseMapper.insert(nbConfig); + } + +} diff --git a/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java new file mode 100644 index 0000000..57d13f0 --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java @@ -0,0 +1,112 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.dao.NbConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.NbConfig; +import com.casic.model.BusConfigParam; +import com.casic.model.QueryContent; +import com.casic.model.ResponseData; +import com.casic.service.DeviceConfigService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@AllArgsConstructor +@Slf4j +@Service +public class DeviceConfigServiceImpl implements DeviceConfigService { + + private final NbDeviceMapper nbDeviceMapper; + private final AepCommandSend aepCommandSend; + private final NbConfigMapper nbConfigMapper; + + @Override + public ResponseData devcieConfig(BusConfigParam busConfigParam) { + ResponseData responseData = new ResponseData(); + try { + String status = aepCommandSend.sendConfig(busConfigParam); + builderNbConfig(busConfigParam, status); + responseData.setCode(200); + responseData.setMessage(status.equals("未下发") ? "下发配置成功" : status); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData gasBatchConfig(List busConfigList) { + ResponseData responseData = new ResponseData(); + try { + for (BusConfigParam busConfigParam : busConfigList) { + String status = aepCommandSend.sendConfig(busConfigParam); + builderNbConfig(busConfigParam, status); + } + responseData.setCode(200); + responseData.setMessage("配置成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData configList(String devcode, String beginTime, String endTime, Integer currentIndex, Integer pageSize, String status,Boolean sortDevcode) { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + status = StringUtils.isEmpty(status) ? "" : status; + ResponseData responseData = new ResponseData(); + try { + QueryWrapper nbConfigWrapper = new QueryWrapper().like("devcode", devcode) + .like("status", status); + if (!StringUtils.isEmpty(beginTime)) { + nbConfigWrapper = nbConfigWrapper.gt("logtime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + nbConfigWrapper = nbConfigWrapper.lt("logtime", endTime); + } + nbConfigWrapper = sortDevcode ? nbConfigWrapper.orderByAsc("devcode") : nbConfigWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage configIPage = nbConfigMapper.selectPage(userPage, nbConfigWrapper); + Map page = new HashMap(); + page.put("total", configIPage.getTotal()); + page.put("rows", configIPage.getRecords()); + page.put("current", configIPage.getCurrent()); + responseData.setCode(200); + responseData.setData(page); + responseData.setMessage("查询成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + private void builderNbConfig(BusConfigParam busConfigParam, String status) { + nbDeviceMapper.updateRecentByDevciceId(busConfigParam.getDeviceId(), "1"); + QueryContent queryContent = busConfigParam.getQueryContent(); + NbConfig nbConfig = NbConfig.builder() + .collect(queryContent.getCollect()) + .upload(queryContent.getUpload()) + .retry(queryContent.getRetry()) + .devcode(busConfigParam.getDevcode()) + .deviceId(busConfigParam.getDeviceId()) + .status(status) + .logtime(new Date()) + .build(); + nbConfigMapper.insert(nbConfig); + } +} diff --git a/src/main/java/com/casic/service/impl/GasDataRecvServiceImpl.java b/src/main/java/com/casic/service/impl/GasDataRecvServiceImpl.java new file mode 100644 index 0000000..56c4c2f --- /dev/null +++ b/src/main/java/com/casic/service/impl/GasDataRecvServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.GasDataRecvMapper; +import com.casic.dao.NbAlarmConfigMapper; +import com.casic.dao.NbConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.LucencyGasData; +import com.casic.entity.NbDevice; +import com.casic.model.DataGasConfigParam; +import com.casic.model.ResponseData; +import com.casic.service.GasDataRecvService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; + +import java.util.*; + + +@Slf4j +@AllArgsConstructor +@Service +public class GasDataRecvServiceImpl extends ServiceImpl implements GasDataRecvService { + + private final NbDeviceMapper nbDeviceMapper; + private final AepCommandSend aepCommandSend; + private final NbConfigMapper nbConfigMapper; + private final NbAlarmConfigMapper nbAlarmConfigMapper; + + @Override + public Object saveRev(Map recvDataMap) { + ResponseData responseData = new ResponseData(); + try { + Map contentMap = (Map) recvDataMap.get("payload"); + if (contentMap.containsKey("status")) { + nbDeviceProvider(recvDataMap, contentMap); + } else if (contentMap.containsKey("update")) { + configStatusDataProvider(recvDataMap, String.valueOf(contentMap.get("update"))); + } else if (contentMap.containsKey("time")) { + realTimeGasDataProvider(recvDataMap, contentMap); + } else if (contentMap.containsKey("history")) { + historyGasDataProvider(recvDataMap, contentMap); + } + realTimeGasDataProvider(recvDataMap, contentMap); + responseData.setCode(200); + responseData.setMessage("保存成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备存储异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("保存异常"); + } + return responseData; + } + + private Boolean nbDeviceProvider(Map recvDataMap, Map contentMap) { + nbDeviceMapper.deleteDeviceByImei(String.valueOf(contentMap.get("imei"))); + NbDevice nbDevice = NbDevice.builder() + .logtime(new Date()) + .productId(String.valueOf(recvDataMap.get("productId"))) + .devcode(String.valueOf(contentMap.get("devid"))) + .iccid(String.valueOf(contentMap.get("iccid"))) + .status(String.valueOf(contentMap.get("status"))) + .deviceId(String.valueOf(recvDataMap.get("deviceId"))) + .valid(1) + .imei(String.valueOf(contentMap.get("imei"))).build(); + nbDeviceMapper.insert(nbDevice); + if (!StringUtils.isEmpty(nbDevice.getImei()) && !StringUtils.isEmpty(nbDevice.getDevcode())) { + this.baseMapper.updateData(nbDevice.getImei(), nbDevice.getDevcode()); + } + return true; + } + + private Boolean realTimeGasDataProvider(Map recvDataMap, Map contentMap) throws Exception { + String imei = String.valueOf(recvDataMap.get("IMEI")); + String deviceId = String.valueOf(recvDataMap.get("deviceId")); + String productId = String.valueOf(recvDataMap.get("productId")); + fisrtSaveDeviceAndSend(imei, productId, deviceId); + String devcode = nbDeviceMapper.getDevcodeByImei(imei); + LucencyGasData lucencyGasBuilder = LucencyGasData.builder() + .tenantId(Long.valueOf(String.valueOf(recvDataMap.get("tenantId")))) + .deviceId(String.valueOf(recvDataMap.get("deviceId"))) + .imei(String.valueOf(recvDataMap.get("IMEI"))) + .uptime(new Date(contentMap.containsKey("time") ? + Long.valueOf(String.valueOf(contentMap.get("time"))) + : System.currentTimeMillis())) + .logtime(new Date()) + .dataValue(String.valueOf(contentMap.get("ch4"))) + .cell(Double.valueOf(contentMap.containsKey("ba") ? String.valueOf(contentMap.get("ba")) : "0")) + .chha(String.valueOf(contentMap.get("chha"))) + .chhha(String.valueOf(contentMap.get("chhha"))) + .signals(String.valueOf(contentMap.get("si"))) + .devcode(StringUtils.isEmpty(devcode) ? "" : devcode) + .build(); + this.baseMapper.insert(lucencyGasBuilder); + return true; + } + + //历史数据暂不处理 + private Boolean historyGasDataProvider(Map recvDataMap, Map contentMap) { + List> historyDataList = (List>) JSONArray.parse(contentMap.get("history")); + String devcode = nbDeviceMapper.getDevcodeByImei(String.valueOf(recvDataMap.get("IMEI"))); + String tenantId = String.valueOf(recvDataMap.get("tenantId")); + String deviceId = String.valueOf(recvDataMap.get("deviceId")); + String imei = String.valueOf(recvDataMap.get("IMEI")); + for (Map historyData : historyDataList) { + this.baseMapper.addData(devcode, tenantId, deviceId, imei, new Date(historyData.containsKey("time") ? + Long.valueOf(String.valueOf(historyData.get("time"))) + : System.currentTimeMillis()), String.valueOf(historyData.get("ch4")), new Date()); + } + return true; + } + + private Boolean fisrtSaveDeviceAndSend(String imei, String productId, String deviceId) throws Exception { + Map deviceInfoMap = nbDeviceMapper.getDeviceByImei(imei); + if (ObjectUtils.isEmpty(deviceInfoMap)) { + NbDevice nbDevice = NbDevice.builder() + .logtime(new Date()) + .productId(productId) + .imei(imei).build(); + nbDeviceMapper.insert(nbDevice); + DataGasConfigParam dataGasConfigParam = new DataGasConfigParam(); + dataGasConfigParam.setOperator("casic"); + dataGasConfigParam.setProductId(productId); + dataGasConfigParam.setDeviceId(deviceId); + List dataGasConfigList = new ArrayList<>(); + dataGasConfigList.add(dataGasConfigParam); + aepCommandSend.sendStatusNb(dataGasConfigList); + return false; + } else if (deviceInfoMap.containsKey("device_id") && StringUtils.isEmpty(deviceInfoMap.get("device_id"))) { + if (!StringUtils.isEmpty(deviceId)) { + nbDeviceMapper.setDeviceIdByImei(imei, deviceId); + } + } + return true; + } + + private void configStatusDataProvider(Map recvDataMap, String status) { + String deviceId = String.valueOf(recvDataMap.get("deviceId")); + String recentConf =nbDeviceMapper.getRecentByDevciceId(deviceId); + String configMsg = status.equals("1") ? "成功下发" : "下发失败(参数不在有效范围内)"; + if(recentConf.equals("1")){ + nbConfigMapper.configStatusData(configMsg, deviceId); + }else { + nbAlarmConfigMapper.configStatusData(configMsg, deviceId); + } + + } +} diff --git a/src/main/java/com/casic/service/impl/GasDataServiceImpl.java b/src/main/java/com/casic/service/impl/GasDataServiceImpl.java new file mode 100644 index 0000000..9c38390 --- /dev/null +++ b/src/main/java/com/casic/service/impl/GasDataServiceImpl.java @@ -0,0 +1,93 @@ +package com.casic.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.dao.GasDataRecvMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.LucencyGasData; +import com.casic.model.ResponseData; +import com.casic.service.GasDataService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +@Slf4j +public class GasDataServiceImpl implements GasDataService { + @Resource + private GasDataRecvMapper gasDataRecvMapper; + @Resource + private NbDeviceMapper nbDeviceMapper; + + @Override + public ResponseData> getGasDataList(String devcode, String beginTime, String endTime, Integer currentIndex, Integer pageSize, Boolean sortDevcode) { + ResponseData responseData = new ResponseData(); + try { + devcode = StringUtils.isEmpty(devcode) ? "3" : devcode; + QueryWrapper lucencyGasWrapper = new QueryWrapper() + .select("id,devcode,tenant_id as tenantId,data_value as dataValue,signals,chha,chhha,cell," + + "device_id as deviceId,logtime,max(uptime) as uptime,imei").like("devcode", devcode); + if (!StringUtils.isEmpty(beginTime)) { + lucencyGasWrapper = lucencyGasWrapper.gt("uptime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + lucencyGasWrapper = lucencyGasWrapper.lt("uptime", endTime); + } + lucencyGasWrapper = lucencyGasWrapper.groupBy("devcode"); + lucencyGasWrapper = sortDevcode ? lucencyGasWrapper.orderByAsc("devcode") : lucencyGasWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex - 1, pageSize); + IPage userIPage = gasDataRecvMapper.selectPage(userPage, lucencyGasWrapper); + Map page = new HashMap(); + page.put("total", userIPage.getTotal()); + page.put("rows", userIPage.getRecords()); + page.put("current", userIPage.getCurrent()); + responseData.setCode(200); + responseData.setMessage("查询成功"); + responseData.setData(page); + } catch (DataAccessException dex) { + log.error("主题:哈尔滨燃气数据查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + @Override + public ResponseData> getGasHistoryList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize) { + ResponseData responseData = new ResponseData(); + try { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + QueryWrapper lucencyGasWrapper = new QueryWrapper().like("devcode", devcode); + if (!StringUtils.isEmpty(beginTime)) { + lucencyGasWrapper = lucencyGasWrapper.gt("uptime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + lucencyGasWrapper = lucencyGasWrapper.lt("uptime", endTime); + } + lucencyGasWrapper = lucencyGasWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage userIPage = gasDataRecvMapper.selectPage(userPage, lucencyGasWrapper); + Map page = new HashMap(); + page.put("total", userIPage.getTotal()); + page.put("rows", userIPage.getRecords()); + page.put("current", userIPage.getCurrent()); + responseData.setCode(200); + responseData.setMessage("查询成功"); + responseData.setData(page); + } catch (DataAccessException dex) { + log.error("主题:哈尔滨燃气数据查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } +} diff --git a/src/main/java/com/casic/service/impl/GasDeviceServiceImpl.java b/src/main/java/com/casic/service/impl/GasDeviceServiceImpl.java new file mode 100644 index 0000000..7cc59bb --- /dev/null +++ b/src/main/java/com/casic/service/impl/GasDeviceServiceImpl.java @@ -0,0 +1,119 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.dao.NbConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.NbConfig; +import com.casic.entity.NbDevice; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.casic.model.QueryContent; +import com.casic.model.ResponseData; +import com.casic.service.GasDeviceService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.*; + +@Slf4j +@Service +@AllArgsConstructor +public class GasDeviceServiceImpl implements GasDeviceService { + + private final NbDeviceMapper nbDeviceMapper; + private final AepCommandSend aepCommandSend; + private final NbConfigMapper nbConfigMapper; + + @Override + public ResponseData devcieStatusConfig(List dataGasConfigParam) { + ResponseData responseData = new ResponseData(); + try { + aepCommandSend.sendStatusNb(dataGasConfigParam); + responseData.setCode(200); + responseData.setMessage("配置成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + + @Override + public List getDevicieList(String beginTime, String endTime, String devcode) { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + List nbDevicesList = new ArrayList<>(); + try { + + QueryWrapper lucencyGasWrapper = new QueryWrapper().like("devcode", devcode); + if (!StringUtils.isEmpty(beginTime)) { + lucencyGasWrapper = lucencyGasWrapper.gt("uptime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + lucencyGasWrapper = lucencyGasWrapper.lt("uptime", endTime); + } + lucencyGasWrapper = lucencyGasWrapper.orderByDesc("logtime"); + nbDevicesList = nbDeviceMapper.selectList(lucencyGasWrapper); + } catch (DataAccessException dex) { + log.error("主题:哈尔滨燃气设备导出查询异常,异常信息:{}", dex.getMessage()); + } + return nbDevicesList; + } + + @Override + public ResponseData> getDevicieListPage(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean emptyStatus,Boolean sortDevcode) { + ResponseData responseData = new ResponseData(); + try { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + QueryWrapper lucencyGasWrapper =emptyStatus? new QueryWrapper().isNull("device_id"):new QueryWrapper().like("devcode", devcode); + if (!StringUtils.isEmpty(beginTime)) { + lucencyGasWrapper = lucencyGasWrapper.gt("logtime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + lucencyGasWrapper = lucencyGasWrapper.lt("logtime", endTime); + } + lucencyGasWrapper = sortDevcode ? lucencyGasWrapper.orderByAsc("devcode") : lucencyGasWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage userIPage = nbDeviceMapper.selectPage(userPage, lucencyGasWrapper); + Map page = new HashMap(); + page.put("total", userIPage.getTotal()); + page.put("rows", userIPage.getRecords()); + page.put("current", userIPage.getCurrent()); + responseData.setCode(200); + responseData.setMessage("查询成功"); + responseData.setData(page); + } catch (DataAccessException dex) { + log.error("主题:哈尔滨燃气设备状态查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + @Override + public ResponseData> deviceDict() { + ResponseData responseData = new ResponseData(); + try { + QueryWrapper nbDeviceWrapper = new QueryWrapper() + .isNotNull("devcode"); + List nbDevicesList = nbDeviceMapper.selectList(nbDeviceWrapper); + responseData.setCode(200); + responseData.setMessage("配置成功"); + responseData.setData(nbDevicesList); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备字典列表查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + +} diff --git a/src/main/java/com/casic/util/ExportExcelUtil.java b/src/main/java/com/casic/util/ExportExcelUtil.java new file mode 100644 index 0000000..a993f14 --- /dev/null +++ b/src/main/java/com/casic/util/ExportExcelUtil.java @@ -0,0 +1,46 @@ +package com.casic.util; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSON; +import com.casic.model.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; +import java.util.List; + +@Slf4j +public class ExportExcelUtil{ + + protected void exportExcel(Class cls, List dataList, String sheetName) throws IOException { + HttpServletResponse response = this.getHttpServletResponse(); + try { + this.setExResponse(response); + EasyExcel.write(response.getOutputStream(), cls).autoCloseStream(Boolean.FALSE).sheet(StringUtils.isNotEmpty(sheetName) ? sheetName : "数据").doWrite(dataList); + } catch (Exception var6) { + log.error("文件导出失败", var6); + this.setCatchResponse(response, var6.getMessage()); + } + } + + private void setCatchResponse(HttpServletResponse response, String msg) throws IOException { + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + msg))); + } + + private void setExResponse(HttpServletResponse response) throws IOException { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("文件下载", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8" + fileName + ".xlsx"); + } + + protected HttpServletResponse getHttpServletResponse() { + return HttpContext.getResponse(); + } + +} 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/src/main/java/com/casic/model/BusConfigParam.java b/src/main/java/com/casic/model/BusConfigParam.java new file mode 100644 index 0000000..44004b5 --- /dev/null +++ b/src/main/java/com/casic/model/BusConfigParam.java @@ -0,0 +1,30 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + + +@Data +@ApiModel(value = "BusConfigParam", description = "设备下发配置(除了不传的,其他都是必传)") +public class BusConfigParam { + @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 = "指令内容(上传周期upload、采集周期collect、重试次数retry,都是必填)", dataType = "object",required= true) + private QueryContent queryContent; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/DataGasConfigParam.java b/src/main/java/com/casic/model/DataGasConfigParam.java new file mode 100644 index 0000000..4e71c77 --- /dev/null +++ b/src/main/java/com/casic/model/DataGasConfigParam.java @@ -0,0 +1,24 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +@Data +@ApiModel(value = "DataGasConfigParam", description = "状态下发配置参数(除了不传,其他都是必传)") +public class DataGasConfigParam { + @ApiModelProperty(notes = "电信平台设备id", dataType = "String",required= true) + private String deviceId; + @ApiModelProperty(notes = "产品id", dataType = "String",required= true) + private String productId; + @ApiModelProperty(notes = "操作人", dataType = "String") + private String operator; + @ApiModelProperty(notes = "设备等级", dataType = "Integer" ) + private Integer level; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/ErrorResponseData.java b/src/main/java/com/casic/model/ErrorResponseData.java new file mode 100644 index 0000000..080fcbc --- /dev/null +++ b/src/main/java/com/casic/model/ErrorResponseData.java @@ -0,0 +1,29 @@ +package com.casic.model; + + +public class ErrorResponseData extends ResponseData { + private String exceptionClazz; + + public String getExceptionClazz() { + return this.exceptionClazz; + } + + + public ErrorResponseData(String message) { + super(false, ResponseData.DEFAULT_ERROR_CODE, message, (Object)null); + } + + + public void setExceptionClazz(String exceptionClazz) { + this.exceptionClazz = exceptionClazz; + } + @Override + protected boolean canEqual(Object other) { + return other instanceof ErrorResponseData; + } + + @Override + public String toString() { + return "ErrorResponseData(exceptionClazz=" + this.getExceptionClazz() + ")"; + } +} diff --git a/src/main/java/com/casic/model/QueryContent.java b/src/main/java/com/casic/model/QueryContent.java new file mode 100644 index 0000000..e6cd12d --- /dev/null +++ b/src/main/java/com/casic/model/QueryContent.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "QueryContent", description = "下发配置参数") +public class QueryContent { + @ApiModelProperty(notes = "上传周期", dataType = "String",required= true) + private String upload; + @ApiModelProperty(notes = "收集周期", dataType = "String",required= true) + private String collect; + @ApiModelProperty(notes = "重传次数", dataType = "String",required= true) + private String retry; +} diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java new file mode 100644 index 0000000..c09b2d2 --- /dev/null +++ b/src/main/java/com/casic/model/ResponseData.java @@ -0,0 +1,58 @@ +package com.casic.model; + +import com.alibaba.fastjson.JSONObject; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.CreateCommandRequest; +import lombok.Data; + +import java.util.Calendar; +import java.util.Date; + +/** + * @author cz + * @date 2022-8-12 + */ +@Data +public class ResponseData { + public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功"; + public static final String DEFAULT_ERROR_MESSAGE = "网络异常"; + public static final Integer DEFAULT_SUCCESS_CODE = 200; + public static final Integer DEFAULT_ERROR_CODE = 500; + private Boolean success; + private Integer code; + private String message; + private T data; + + +// public static void main(String[] args) throws Exception { +// Calendar now = Calendar.getInstance(); +// Date getTime = now.getTime(); +//// if (isWeekend(now)) { +// now.add(Calendar.WEEK_OF_YEAR, 1); +// now.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); +// now.set(Calendar.HOUR_OF_DAY, 8); +// now.set(Calendar.MINUTE, 0); +// now.set(Calendar.SECOND, 0); +//// } else { +//// now.add(Calendar.HOUR, 24); +//// while (isWeekend(now)) { +//// now.add(Calendar.HOUR, 24); +//// } +//// } +// +// System.out.println(now.getTime()); +// } + + public ResponseData() { + } + public ResponseData(Boolean success, Integer code, String message, T data) { + this.success = success; + this.code = code; + this.message = message; + this.data = data; + } + + public static ErrorResponseData error(String message) { + return new ErrorResponseData(message); + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmConfigService.java b/src/main/java/com/casic/service/AlarmConfigService.java new file mode 100644 index 0000000..2d76956 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmConfigService.java @@ -0,0 +1,15 @@ +package com.casic.service; + +import com.casic.model.AlarmConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface AlarmConfigService { + + + ResponseData gasBatchConfig( List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/DeviceConfigService.java b/src/main/java/com/casic/service/DeviceConfigService.java new file mode 100644 index 0000000..0cf7efc --- /dev/null +++ b/src/main/java/com/casic/service/DeviceConfigService.java @@ -0,0 +1,16 @@ +package com.casic.service; + +import com.casic.model.BusConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface DeviceConfigService { + + ResponseData devcieConfig(BusConfigParam busConfigParam); + + ResponseData gasBatchConfig(List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/GasDataRecvService.java b/src/main/java/com/casic/service/GasDataRecvService.java new file mode 100644 index 0000000..25d7da9 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataRecvService.java @@ -0,0 +1,9 @@ +package com.casic.service; + +import java.util.Map; + +public interface GasDataRecvService { + + Object saveRev(Map recvDataMap); + +} diff --git a/src/main/java/com/casic/service/GasDataService.java b/src/main/java/com/casic/service/GasDataService.java new file mode 100644 index 0000000..090c624 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataService.java @@ -0,0 +1,19 @@ +package com.casic.service; + +import com.casic.entity.LucencyGasData; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface GasDataService { + + + ResponseData> getGasDataList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean sortDevcode); + + + ResponseData> getGasHistoryList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize); + + +} diff --git a/src/main/java/com/casic/service/GasDeviceService.java b/src/main/java/com/casic/service/GasDeviceService.java new file mode 100644 index 0000000..318d8ea --- /dev/null +++ b/src/main/java/com/casic/service/GasDeviceService.java @@ -0,0 +1,20 @@ +package com.casic.service; + +import com.casic.entity.NbDevice; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface GasDeviceService { + + ResponseData devcieStatusConfig(List dataGasConfigParam); + + List getDevicieList(String beginTime, String endTime, String keywords); + + ResponseData> getDevicieListPage(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean emptyStatus,Boolean sortDevcode); + + ResponseData> deviceDict(); +} diff --git a/src/main/java/com/casic/service/impl/AepCommandSend.java b/src/main/java/com/casic/service/impl/AepCommandSend.java new file mode 100644 index 0000000..c91f3ad --- /dev/null +++ b/src/main/java/com/casic/service/impl/AepCommandSend.java @@ -0,0 +1,97 @@ +package com.casic.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.casic.config.AEPParamConfig; +import com.casic.model.AlarmConfigParam; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component +@Slf4j +public class AepCommandSend { + + @Autowired + private AEPParamConfig aepParamConfig; + + public void sendStatusNb(List dataGasConfigList) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + Map queryMap = new HashMap<>(); + queryMap.put("query", 1); + dataGasMap.put("params", queryMap); + dataGasMap.put("serviceIdentifier", "DeviceQuery"); + dataGasConfigList.forEach( + dataGasConfigParam -> { + dataGasConfigParam.setLevel(1); + dataGasConfigParam.setContent(dataGasMap); + dataGasConfigParam.setOperator("casic"); + } + ); + for (DataGasConfigParam dataGasConfigParam : dataGasConfigList) { + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(dataGasConfigParam).getBytes()); //具体格式见前面请求body说明 + System.out.println(client.CreateCommand(request)); + } + client.shutdown(); + } + + public String sendConfig(BusConfigParam busConfigParam) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + dataGasMap.put("serviceIdentifier", "config"); + dataGasMap.put("params", busConfigParam.getQueryContent()); + busConfigParam.setContent(dataGasMap); + busConfigParam.setLevel(1); + busConfigParam.setOperator("casic"); + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(busConfigParam).getBytes()); //具体格式见前面请求body说明 + CreateCommandResponse msgResponse = client.CreateCommand(request); + System.out.println(msgResponse); + client.shutdown(); + log.debug("-----" + msgResponse.getMessage()); + if (msgResponse.getStatusCode()==200) { + return "未下发"; + } else { + return "下发异常"; + } + } + + public String sendAlarmConfig(AlarmConfigParam alarmConfigParam) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + dataGasMap.put("serviceIdentifier", "alarmconfig"); + dataGasMap.put("params", alarmConfigParam.getQueryContent()); + alarmConfigParam.setContent(dataGasMap); + alarmConfigParam.setLevel(1); + alarmConfigParam.setOperator("casic"); + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(alarmConfigParam).getBytes()); //具体格式见前面请求body说明 + CreateCommandResponse msgResponse = client.CreateCommand(request); + System.out.println(msgResponse); + client.shutdown(); + log.debug("-----" + msgResponse.getMessage()); + if (msgResponse.getStatusCode()==200) { + return "未下发"; + } else { + return "下发异常"; + } + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java b/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java new file mode 100644 index 0000000..eadfa04 --- /dev/null +++ b/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.NbAlarmConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.NbAlarmConfig; +import com.casic.model.AlarmConfigParam; +import com.casic.model.AlarmContent; +import com.casic.model.ResponseData; +import com.casic.service.AlarmConfigService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@AllArgsConstructor +@Slf4j +@Service +public class AlarmConfigServiceImpl extends ServiceImpl implements AlarmConfigService { + + private final AepCommandSend aepCommandSend; + private final NbDeviceMapper nbDeviceMapper; + + @Override + public ResponseData gasBatchConfig( List alarmConfigParamList){ + ResponseData responseData = new ResponseData(); + try { + for (AlarmConfigParam alarmConfigParam : alarmConfigParamList) { + String status = aepCommandSend.sendAlarmConfig(alarmConfigParam); + builderNbAlarmConfig(alarmConfigParam, status); + } + responseData.setCode(200); + responseData.setMessage("配置成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData configList(String devcode, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode){ + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + status = StringUtils.isEmpty(status) ? "" : status; + ResponseData responseData = new ResponseData(); + try { + QueryWrapper nbConfigWrapper = new QueryWrapper().like("devcode", devcode) + .like("status",status); + if (!StringUtils.isEmpty(beginTime)) { + nbConfigWrapper = nbConfigWrapper.gt("logtime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + nbConfigWrapper = nbConfigWrapper.lt("logtime", endTime); + } + nbConfigWrapper = sortDevcode ? nbConfigWrapper.orderByAsc("devcode") : nbConfigWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage configIPage = this.baseMapper.selectPage(userPage, nbConfigWrapper); + Map page = new HashMap(); + page.put("total", configIPage.getTotal()); + page.put("rows", configIPage.getRecords()); + page.put("current", configIPage.getCurrent()); + responseData.setCode(200); + responseData.setData(page); + responseData.setMessage("查询成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气报警下发查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + private void builderNbAlarmConfig(AlarmConfigParam alarmConfigParam,String status){ + nbDeviceMapper.updateRecentByDevciceId(alarmConfigParam.getDeviceId(), "2"); + AlarmContent queryContent = alarmConfigParam.getQueryContent(); + NbAlarmConfig nbConfig= NbAlarmConfig.builder() + .devcode(alarmConfigParam.getDevcode()) + .deviceId(alarmConfigParam.getDeviceId()) + .alarmcount(queryContent.getAlarmcount()) + .alarmperiod(queryContent.getAlarmperiod()) + .status(status) + .logtime(new Date()) + .build(); + this.baseMapper.insert(nbConfig); + } + +} diff --git a/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java new file mode 100644 index 0000000..57d13f0 --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java @@ -0,0 +1,112 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.dao.NbConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.NbConfig; +import com.casic.model.BusConfigParam; +import com.casic.model.QueryContent; +import com.casic.model.ResponseData; +import com.casic.service.DeviceConfigService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@AllArgsConstructor +@Slf4j +@Service +public class DeviceConfigServiceImpl implements DeviceConfigService { + + private final NbDeviceMapper nbDeviceMapper; + private final AepCommandSend aepCommandSend; + private final NbConfigMapper nbConfigMapper; + + @Override + public ResponseData devcieConfig(BusConfigParam busConfigParam) { + ResponseData responseData = new ResponseData(); + try { + String status = aepCommandSend.sendConfig(busConfigParam); + builderNbConfig(busConfigParam, status); + responseData.setCode(200); + responseData.setMessage(status.equals("未下发") ? "下发配置成功" : status); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData gasBatchConfig(List busConfigList) { + ResponseData responseData = new ResponseData(); + try { + for (BusConfigParam busConfigParam : busConfigList) { + String status = aepCommandSend.sendConfig(busConfigParam); + builderNbConfig(busConfigParam, status); + } + responseData.setCode(200); + responseData.setMessage("配置成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData configList(String devcode, String beginTime, String endTime, Integer currentIndex, Integer pageSize, String status,Boolean sortDevcode) { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + status = StringUtils.isEmpty(status) ? "" : status; + ResponseData responseData = new ResponseData(); + try { + QueryWrapper nbConfigWrapper = new QueryWrapper().like("devcode", devcode) + .like("status", status); + if (!StringUtils.isEmpty(beginTime)) { + nbConfigWrapper = nbConfigWrapper.gt("logtime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + nbConfigWrapper = nbConfigWrapper.lt("logtime", endTime); + } + nbConfigWrapper = sortDevcode ? nbConfigWrapper.orderByAsc("devcode") : nbConfigWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage configIPage = nbConfigMapper.selectPage(userPage, nbConfigWrapper); + Map page = new HashMap(); + page.put("total", configIPage.getTotal()); + page.put("rows", configIPage.getRecords()); + page.put("current", configIPage.getCurrent()); + responseData.setCode(200); + responseData.setData(page); + responseData.setMessage("查询成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + private void builderNbConfig(BusConfigParam busConfigParam, String status) { + nbDeviceMapper.updateRecentByDevciceId(busConfigParam.getDeviceId(), "1"); + QueryContent queryContent = busConfigParam.getQueryContent(); + NbConfig nbConfig = NbConfig.builder() + .collect(queryContent.getCollect()) + .upload(queryContent.getUpload()) + .retry(queryContent.getRetry()) + .devcode(busConfigParam.getDevcode()) + .deviceId(busConfigParam.getDeviceId()) + .status(status) + .logtime(new Date()) + .build(); + nbConfigMapper.insert(nbConfig); + } +} diff --git a/src/main/java/com/casic/service/impl/GasDataRecvServiceImpl.java b/src/main/java/com/casic/service/impl/GasDataRecvServiceImpl.java new file mode 100644 index 0000000..56c4c2f --- /dev/null +++ b/src/main/java/com/casic/service/impl/GasDataRecvServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.GasDataRecvMapper; +import com.casic.dao.NbAlarmConfigMapper; +import com.casic.dao.NbConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.LucencyGasData; +import com.casic.entity.NbDevice; +import com.casic.model.DataGasConfigParam; +import com.casic.model.ResponseData; +import com.casic.service.GasDataRecvService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; + +import java.util.*; + + +@Slf4j +@AllArgsConstructor +@Service +public class GasDataRecvServiceImpl extends ServiceImpl implements GasDataRecvService { + + private final NbDeviceMapper nbDeviceMapper; + private final AepCommandSend aepCommandSend; + private final NbConfigMapper nbConfigMapper; + private final NbAlarmConfigMapper nbAlarmConfigMapper; + + @Override + public Object saveRev(Map recvDataMap) { + ResponseData responseData = new ResponseData(); + try { + Map contentMap = (Map) recvDataMap.get("payload"); + if (contentMap.containsKey("status")) { + nbDeviceProvider(recvDataMap, contentMap); + } else if (contentMap.containsKey("update")) { + configStatusDataProvider(recvDataMap, String.valueOf(contentMap.get("update"))); + } else if (contentMap.containsKey("time")) { + realTimeGasDataProvider(recvDataMap, contentMap); + } else if (contentMap.containsKey("history")) { + historyGasDataProvider(recvDataMap, contentMap); + } + realTimeGasDataProvider(recvDataMap, contentMap); + responseData.setCode(200); + responseData.setMessage("保存成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备存储异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("保存异常"); + } + return responseData; + } + + private Boolean nbDeviceProvider(Map recvDataMap, Map contentMap) { + nbDeviceMapper.deleteDeviceByImei(String.valueOf(contentMap.get("imei"))); + NbDevice nbDevice = NbDevice.builder() + .logtime(new Date()) + .productId(String.valueOf(recvDataMap.get("productId"))) + .devcode(String.valueOf(contentMap.get("devid"))) + .iccid(String.valueOf(contentMap.get("iccid"))) + .status(String.valueOf(contentMap.get("status"))) + .deviceId(String.valueOf(recvDataMap.get("deviceId"))) + .valid(1) + .imei(String.valueOf(contentMap.get("imei"))).build(); + nbDeviceMapper.insert(nbDevice); + if (!StringUtils.isEmpty(nbDevice.getImei()) && !StringUtils.isEmpty(nbDevice.getDevcode())) { + this.baseMapper.updateData(nbDevice.getImei(), nbDevice.getDevcode()); + } + return true; + } + + private Boolean realTimeGasDataProvider(Map recvDataMap, Map contentMap) throws Exception { + String imei = String.valueOf(recvDataMap.get("IMEI")); + String deviceId = String.valueOf(recvDataMap.get("deviceId")); + String productId = String.valueOf(recvDataMap.get("productId")); + fisrtSaveDeviceAndSend(imei, productId, deviceId); + String devcode = nbDeviceMapper.getDevcodeByImei(imei); + LucencyGasData lucencyGasBuilder = LucencyGasData.builder() + .tenantId(Long.valueOf(String.valueOf(recvDataMap.get("tenantId")))) + .deviceId(String.valueOf(recvDataMap.get("deviceId"))) + .imei(String.valueOf(recvDataMap.get("IMEI"))) + .uptime(new Date(contentMap.containsKey("time") ? + Long.valueOf(String.valueOf(contentMap.get("time"))) + : System.currentTimeMillis())) + .logtime(new Date()) + .dataValue(String.valueOf(contentMap.get("ch4"))) + .cell(Double.valueOf(contentMap.containsKey("ba") ? String.valueOf(contentMap.get("ba")) : "0")) + .chha(String.valueOf(contentMap.get("chha"))) + .chhha(String.valueOf(contentMap.get("chhha"))) + .signals(String.valueOf(contentMap.get("si"))) + .devcode(StringUtils.isEmpty(devcode) ? "" : devcode) + .build(); + this.baseMapper.insert(lucencyGasBuilder); + return true; + } + + //历史数据暂不处理 + private Boolean historyGasDataProvider(Map recvDataMap, Map contentMap) { + List> historyDataList = (List>) JSONArray.parse(contentMap.get("history")); + String devcode = nbDeviceMapper.getDevcodeByImei(String.valueOf(recvDataMap.get("IMEI"))); + String tenantId = String.valueOf(recvDataMap.get("tenantId")); + String deviceId = String.valueOf(recvDataMap.get("deviceId")); + String imei = String.valueOf(recvDataMap.get("IMEI")); + for (Map historyData : historyDataList) { + this.baseMapper.addData(devcode, tenantId, deviceId, imei, new Date(historyData.containsKey("time") ? + Long.valueOf(String.valueOf(historyData.get("time"))) + : System.currentTimeMillis()), String.valueOf(historyData.get("ch4")), new Date()); + } + return true; + } + + private Boolean fisrtSaveDeviceAndSend(String imei, String productId, String deviceId) throws Exception { + Map deviceInfoMap = nbDeviceMapper.getDeviceByImei(imei); + if (ObjectUtils.isEmpty(deviceInfoMap)) { + NbDevice nbDevice = NbDevice.builder() + .logtime(new Date()) + .productId(productId) + .imei(imei).build(); + nbDeviceMapper.insert(nbDevice); + DataGasConfigParam dataGasConfigParam = new DataGasConfigParam(); + dataGasConfigParam.setOperator("casic"); + dataGasConfigParam.setProductId(productId); + dataGasConfigParam.setDeviceId(deviceId); + List dataGasConfigList = new ArrayList<>(); + dataGasConfigList.add(dataGasConfigParam); + aepCommandSend.sendStatusNb(dataGasConfigList); + return false; + } else if (deviceInfoMap.containsKey("device_id") && StringUtils.isEmpty(deviceInfoMap.get("device_id"))) { + if (!StringUtils.isEmpty(deviceId)) { + nbDeviceMapper.setDeviceIdByImei(imei, deviceId); + } + } + return true; + } + + private void configStatusDataProvider(Map recvDataMap, String status) { + String deviceId = String.valueOf(recvDataMap.get("deviceId")); + String recentConf =nbDeviceMapper.getRecentByDevciceId(deviceId); + String configMsg = status.equals("1") ? "成功下发" : "下发失败(参数不在有效范围内)"; + if(recentConf.equals("1")){ + nbConfigMapper.configStatusData(configMsg, deviceId); + }else { + nbAlarmConfigMapper.configStatusData(configMsg, deviceId); + } + + } +} diff --git a/src/main/java/com/casic/service/impl/GasDataServiceImpl.java b/src/main/java/com/casic/service/impl/GasDataServiceImpl.java new file mode 100644 index 0000000..9c38390 --- /dev/null +++ b/src/main/java/com/casic/service/impl/GasDataServiceImpl.java @@ -0,0 +1,93 @@ +package com.casic.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.dao.GasDataRecvMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.LucencyGasData; +import com.casic.model.ResponseData; +import com.casic.service.GasDataService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +@Slf4j +public class GasDataServiceImpl implements GasDataService { + @Resource + private GasDataRecvMapper gasDataRecvMapper; + @Resource + private NbDeviceMapper nbDeviceMapper; + + @Override + public ResponseData> getGasDataList(String devcode, String beginTime, String endTime, Integer currentIndex, Integer pageSize, Boolean sortDevcode) { + ResponseData responseData = new ResponseData(); + try { + devcode = StringUtils.isEmpty(devcode) ? "3" : devcode; + QueryWrapper lucencyGasWrapper = new QueryWrapper() + .select("id,devcode,tenant_id as tenantId,data_value as dataValue,signals,chha,chhha,cell," + + "device_id as deviceId,logtime,max(uptime) as uptime,imei").like("devcode", devcode); + if (!StringUtils.isEmpty(beginTime)) { + lucencyGasWrapper = lucencyGasWrapper.gt("uptime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + lucencyGasWrapper = lucencyGasWrapper.lt("uptime", endTime); + } + lucencyGasWrapper = lucencyGasWrapper.groupBy("devcode"); + lucencyGasWrapper = sortDevcode ? lucencyGasWrapper.orderByAsc("devcode") : lucencyGasWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex - 1, pageSize); + IPage userIPage = gasDataRecvMapper.selectPage(userPage, lucencyGasWrapper); + Map page = new HashMap(); + page.put("total", userIPage.getTotal()); + page.put("rows", userIPage.getRecords()); + page.put("current", userIPage.getCurrent()); + responseData.setCode(200); + responseData.setMessage("查询成功"); + responseData.setData(page); + } catch (DataAccessException dex) { + log.error("主题:哈尔滨燃气数据查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + @Override + public ResponseData> getGasHistoryList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize) { + ResponseData responseData = new ResponseData(); + try { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + QueryWrapper lucencyGasWrapper = new QueryWrapper().like("devcode", devcode); + if (!StringUtils.isEmpty(beginTime)) { + lucencyGasWrapper = lucencyGasWrapper.gt("uptime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + lucencyGasWrapper = lucencyGasWrapper.lt("uptime", endTime); + } + lucencyGasWrapper = lucencyGasWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage userIPage = gasDataRecvMapper.selectPage(userPage, lucencyGasWrapper); + Map page = new HashMap(); + page.put("total", userIPage.getTotal()); + page.put("rows", userIPage.getRecords()); + page.put("current", userIPage.getCurrent()); + responseData.setCode(200); + responseData.setMessage("查询成功"); + responseData.setData(page); + } catch (DataAccessException dex) { + log.error("主题:哈尔滨燃气数据查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } +} diff --git a/src/main/java/com/casic/service/impl/GasDeviceServiceImpl.java b/src/main/java/com/casic/service/impl/GasDeviceServiceImpl.java new file mode 100644 index 0000000..7cc59bb --- /dev/null +++ b/src/main/java/com/casic/service/impl/GasDeviceServiceImpl.java @@ -0,0 +1,119 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.dao.NbConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.NbConfig; +import com.casic.entity.NbDevice; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.casic.model.QueryContent; +import com.casic.model.ResponseData; +import com.casic.service.GasDeviceService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.*; + +@Slf4j +@Service +@AllArgsConstructor +public class GasDeviceServiceImpl implements GasDeviceService { + + private final NbDeviceMapper nbDeviceMapper; + private final AepCommandSend aepCommandSend; + private final NbConfigMapper nbConfigMapper; + + @Override + public ResponseData devcieStatusConfig(List dataGasConfigParam) { + ResponseData responseData = new ResponseData(); + try { + aepCommandSend.sendStatusNb(dataGasConfigParam); + responseData.setCode(200); + responseData.setMessage("配置成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + + @Override + public List getDevicieList(String beginTime, String endTime, String devcode) { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + List nbDevicesList = new ArrayList<>(); + try { + + QueryWrapper lucencyGasWrapper = new QueryWrapper().like("devcode", devcode); + if (!StringUtils.isEmpty(beginTime)) { + lucencyGasWrapper = lucencyGasWrapper.gt("uptime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + lucencyGasWrapper = lucencyGasWrapper.lt("uptime", endTime); + } + lucencyGasWrapper = lucencyGasWrapper.orderByDesc("logtime"); + nbDevicesList = nbDeviceMapper.selectList(lucencyGasWrapper); + } catch (DataAccessException dex) { + log.error("主题:哈尔滨燃气设备导出查询异常,异常信息:{}", dex.getMessage()); + } + return nbDevicesList; + } + + @Override + public ResponseData> getDevicieListPage(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean emptyStatus,Boolean sortDevcode) { + ResponseData responseData = new ResponseData(); + try { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + QueryWrapper lucencyGasWrapper =emptyStatus? new QueryWrapper().isNull("device_id"):new QueryWrapper().like("devcode", devcode); + if (!StringUtils.isEmpty(beginTime)) { + lucencyGasWrapper = lucencyGasWrapper.gt("logtime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + lucencyGasWrapper = lucencyGasWrapper.lt("logtime", endTime); + } + lucencyGasWrapper = sortDevcode ? lucencyGasWrapper.orderByAsc("devcode") : lucencyGasWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage userIPage = nbDeviceMapper.selectPage(userPage, lucencyGasWrapper); + Map page = new HashMap(); + page.put("total", userIPage.getTotal()); + page.put("rows", userIPage.getRecords()); + page.put("current", userIPage.getCurrent()); + responseData.setCode(200); + responseData.setMessage("查询成功"); + responseData.setData(page); + } catch (DataAccessException dex) { + log.error("主题:哈尔滨燃气设备状态查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + @Override + public ResponseData> deviceDict() { + ResponseData responseData = new ResponseData(); + try { + QueryWrapper nbDeviceWrapper = new QueryWrapper() + .isNotNull("devcode"); + List nbDevicesList = nbDeviceMapper.selectList(nbDeviceWrapper); + responseData.setCode(200); + responseData.setMessage("配置成功"); + responseData.setData(nbDevicesList); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备字典列表查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + +} diff --git a/src/main/java/com/casic/util/ExportExcelUtil.java b/src/main/java/com/casic/util/ExportExcelUtil.java new file mode 100644 index 0000000..a993f14 --- /dev/null +++ b/src/main/java/com/casic/util/ExportExcelUtil.java @@ -0,0 +1,46 @@ +package com.casic.util; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSON; +import com.casic.model.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; +import java.util.List; + +@Slf4j +public class ExportExcelUtil{ + + protected void exportExcel(Class cls, List dataList, String sheetName) throws IOException { + HttpServletResponse response = this.getHttpServletResponse(); + try { + this.setExResponse(response); + EasyExcel.write(response.getOutputStream(), cls).autoCloseStream(Boolean.FALSE).sheet(StringUtils.isNotEmpty(sheetName) ? sheetName : "数据").doWrite(dataList); + } catch (Exception var6) { + log.error("文件导出失败", var6); + this.setCatchResponse(response, var6.getMessage()); + } + } + + private void setCatchResponse(HttpServletResponse response, String msg) throws IOException { + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + msg))); + } + + private void setExResponse(HttpServletResponse response) throws IOException { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("文件下载", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8" + fileName + ".xlsx"); + } + + protected HttpServletResponse getHttpServletResponse() { + return HttpContext.getResponse(); + } + +} diff --git a/src/main/java/com/casic/util/HttpContext.java b/src/main/java/com/casic/util/HttpContext.java new file mode 100644 index 0000000..165312f --- /dev/null +++ b/src/main/java/com/casic/util/HttpContext.java @@ -0,0 +1,57 @@ +package com.casic.util; + +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +public class HttpContext { + public static final String X_REAL_IP = "X-real-ip"; + public static final String X_FORWARDED_FOR = "X-Forwarded-For"; + + public HttpContext() { + } + + public static String getIp() { + HttpServletRequest request = getRequest(); + if (request == null) { + return "127.0.0.1"; + } else if (request.getHeader("X-real-ip") != null) { + return request.getHeader("X-real-ip"); + } else { + return request.getHeader("X-Forwarded-For") != null ? request.getHeader("X-Forwarded-For") : request.getRemoteHost(); + } + } + + public static HttpServletRequest getRequest() { + ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + return requestAttributes == null ? null : requestAttributes.getRequest(); + } + + public static HttpServletResponse getResponse() { + ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + return requestAttributes == null ? null : requestAttributes.getResponse(); + } + + public static Map getRequestParameters() { + HashMap values = new HashMap(); + HttpServletRequest request = getRequest(); + if (request == null) { + return values; + } else { + Enumeration enums = request.getParameterNames(); + + while (enums.hasMoreElements()) { + String paramName = (String) enums.nextElement(); + String paramValue = request.getParameter(paramName); + values.put(paramName, paramValue); + } + + return values; + } + } +} 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/src/main/java/com/casic/model/BusConfigParam.java b/src/main/java/com/casic/model/BusConfigParam.java new file mode 100644 index 0000000..44004b5 --- /dev/null +++ b/src/main/java/com/casic/model/BusConfigParam.java @@ -0,0 +1,30 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + + +@Data +@ApiModel(value = "BusConfigParam", description = "设备下发配置(除了不传的,其他都是必传)") +public class BusConfigParam { + @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 = "指令内容(上传周期upload、采集周期collect、重试次数retry,都是必填)", dataType = "object",required= true) + private QueryContent queryContent; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/DataGasConfigParam.java b/src/main/java/com/casic/model/DataGasConfigParam.java new file mode 100644 index 0000000..4e71c77 --- /dev/null +++ b/src/main/java/com/casic/model/DataGasConfigParam.java @@ -0,0 +1,24 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +@Data +@ApiModel(value = "DataGasConfigParam", description = "状态下发配置参数(除了不传,其他都是必传)") +public class DataGasConfigParam { + @ApiModelProperty(notes = "电信平台设备id", dataType = "String",required= true) + private String deviceId; + @ApiModelProperty(notes = "产品id", dataType = "String",required= true) + private String productId; + @ApiModelProperty(notes = "操作人", dataType = "String") + private String operator; + @ApiModelProperty(notes = "设备等级", dataType = "Integer" ) + private Integer level; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/ErrorResponseData.java b/src/main/java/com/casic/model/ErrorResponseData.java new file mode 100644 index 0000000..080fcbc --- /dev/null +++ b/src/main/java/com/casic/model/ErrorResponseData.java @@ -0,0 +1,29 @@ +package com.casic.model; + + +public class ErrorResponseData extends ResponseData { + private String exceptionClazz; + + public String getExceptionClazz() { + return this.exceptionClazz; + } + + + public ErrorResponseData(String message) { + super(false, ResponseData.DEFAULT_ERROR_CODE, message, (Object)null); + } + + + public void setExceptionClazz(String exceptionClazz) { + this.exceptionClazz = exceptionClazz; + } + @Override + protected boolean canEqual(Object other) { + return other instanceof ErrorResponseData; + } + + @Override + public String toString() { + return "ErrorResponseData(exceptionClazz=" + this.getExceptionClazz() + ")"; + } +} diff --git a/src/main/java/com/casic/model/QueryContent.java b/src/main/java/com/casic/model/QueryContent.java new file mode 100644 index 0000000..e6cd12d --- /dev/null +++ b/src/main/java/com/casic/model/QueryContent.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "QueryContent", description = "下发配置参数") +public class QueryContent { + @ApiModelProperty(notes = "上传周期", dataType = "String",required= true) + private String upload; + @ApiModelProperty(notes = "收集周期", dataType = "String",required= true) + private String collect; + @ApiModelProperty(notes = "重传次数", dataType = "String",required= true) + private String retry; +} diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java new file mode 100644 index 0000000..c09b2d2 --- /dev/null +++ b/src/main/java/com/casic/model/ResponseData.java @@ -0,0 +1,58 @@ +package com.casic.model; + +import com.alibaba.fastjson.JSONObject; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.CreateCommandRequest; +import lombok.Data; + +import java.util.Calendar; +import java.util.Date; + +/** + * @author cz + * @date 2022-8-12 + */ +@Data +public class ResponseData { + public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功"; + public static final String DEFAULT_ERROR_MESSAGE = "网络异常"; + public static final Integer DEFAULT_SUCCESS_CODE = 200; + public static final Integer DEFAULT_ERROR_CODE = 500; + private Boolean success; + private Integer code; + private String message; + private T data; + + +// public static void main(String[] args) throws Exception { +// Calendar now = Calendar.getInstance(); +// Date getTime = now.getTime(); +//// if (isWeekend(now)) { +// now.add(Calendar.WEEK_OF_YEAR, 1); +// now.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); +// now.set(Calendar.HOUR_OF_DAY, 8); +// now.set(Calendar.MINUTE, 0); +// now.set(Calendar.SECOND, 0); +//// } else { +//// now.add(Calendar.HOUR, 24); +//// while (isWeekend(now)) { +//// now.add(Calendar.HOUR, 24); +//// } +//// } +// +// System.out.println(now.getTime()); +// } + + public ResponseData() { + } + public ResponseData(Boolean success, Integer code, String message, T data) { + this.success = success; + this.code = code; + this.message = message; + this.data = data; + } + + public static ErrorResponseData error(String message) { + return new ErrorResponseData(message); + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmConfigService.java b/src/main/java/com/casic/service/AlarmConfigService.java new file mode 100644 index 0000000..2d76956 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmConfigService.java @@ -0,0 +1,15 @@ +package com.casic.service; + +import com.casic.model.AlarmConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface AlarmConfigService { + + + ResponseData gasBatchConfig( List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/DeviceConfigService.java b/src/main/java/com/casic/service/DeviceConfigService.java new file mode 100644 index 0000000..0cf7efc --- /dev/null +++ b/src/main/java/com/casic/service/DeviceConfigService.java @@ -0,0 +1,16 @@ +package com.casic.service; + +import com.casic.model.BusConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface DeviceConfigService { + + ResponseData devcieConfig(BusConfigParam busConfigParam); + + ResponseData gasBatchConfig(List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/GasDataRecvService.java b/src/main/java/com/casic/service/GasDataRecvService.java new file mode 100644 index 0000000..25d7da9 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataRecvService.java @@ -0,0 +1,9 @@ +package com.casic.service; + +import java.util.Map; + +public interface GasDataRecvService { + + Object saveRev(Map recvDataMap); + +} diff --git a/src/main/java/com/casic/service/GasDataService.java b/src/main/java/com/casic/service/GasDataService.java new file mode 100644 index 0000000..090c624 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataService.java @@ -0,0 +1,19 @@ +package com.casic.service; + +import com.casic.entity.LucencyGasData; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface GasDataService { + + + ResponseData> getGasDataList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean sortDevcode); + + + ResponseData> getGasHistoryList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize); + + +} diff --git a/src/main/java/com/casic/service/GasDeviceService.java b/src/main/java/com/casic/service/GasDeviceService.java new file mode 100644 index 0000000..318d8ea --- /dev/null +++ b/src/main/java/com/casic/service/GasDeviceService.java @@ -0,0 +1,20 @@ +package com.casic.service; + +import com.casic.entity.NbDevice; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface GasDeviceService { + + ResponseData devcieStatusConfig(List dataGasConfigParam); + + List getDevicieList(String beginTime, String endTime, String keywords); + + ResponseData> getDevicieListPage(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean emptyStatus,Boolean sortDevcode); + + ResponseData> deviceDict(); +} diff --git a/src/main/java/com/casic/service/impl/AepCommandSend.java b/src/main/java/com/casic/service/impl/AepCommandSend.java new file mode 100644 index 0000000..c91f3ad --- /dev/null +++ b/src/main/java/com/casic/service/impl/AepCommandSend.java @@ -0,0 +1,97 @@ +package com.casic.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.casic.config.AEPParamConfig; +import com.casic.model.AlarmConfigParam; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component +@Slf4j +public class AepCommandSend { + + @Autowired + private AEPParamConfig aepParamConfig; + + public void sendStatusNb(List dataGasConfigList) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + Map queryMap = new HashMap<>(); + queryMap.put("query", 1); + dataGasMap.put("params", queryMap); + dataGasMap.put("serviceIdentifier", "DeviceQuery"); + dataGasConfigList.forEach( + dataGasConfigParam -> { + dataGasConfigParam.setLevel(1); + dataGasConfigParam.setContent(dataGasMap); + dataGasConfigParam.setOperator("casic"); + } + ); + for (DataGasConfigParam dataGasConfigParam : dataGasConfigList) { + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(dataGasConfigParam).getBytes()); //具体格式见前面请求body说明 + System.out.println(client.CreateCommand(request)); + } + client.shutdown(); + } + + public String sendConfig(BusConfigParam busConfigParam) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + dataGasMap.put("serviceIdentifier", "config"); + dataGasMap.put("params", busConfigParam.getQueryContent()); + busConfigParam.setContent(dataGasMap); + busConfigParam.setLevel(1); + busConfigParam.setOperator("casic"); + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(busConfigParam).getBytes()); //具体格式见前面请求body说明 + CreateCommandResponse msgResponse = client.CreateCommand(request); + System.out.println(msgResponse); + client.shutdown(); + log.debug("-----" + msgResponse.getMessage()); + if (msgResponse.getStatusCode()==200) { + return "未下发"; + } else { + return "下发异常"; + } + } + + public String sendAlarmConfig(AlarmConfigParam alarmConfigParam) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + dataGasMap.put("serviceIdentifier", "alarmconfig"); + dataGasMap.put("params", alarmConfigParam.getQueryContent()); + alarmConfigParam.setContent(dataGasMap); + alarmConfigParam.setLevel(1); + alarmConfigParam.setOperator("casic"); + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(alarmConfigParam).getBytes()); //具体格式见前面请求body说明 + CreateCommandResponse msgResponse = client.CreateCommand(request); + System.out.println(msgResponse); + client.shutdown(); + log.debug("-----" + msgResponse.getMessage()); + if (msgResponse.getStatusCode()==200) { + return "未下发"; + } else { + return "下发异常"; + } + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java b/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java new file mode 100644 index 0000000..eadfa04 --- /dev/null +++ b/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.NbAlarmConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.NbAlarmConfig; +import com.casic.model.AlarmConfigParam; +import com.casic.model.AlarmContent; +import com.casic.model.ResponseData; +import com.casic.service.AlarmConfigService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@AllArgsConstructor +@Slf4j +@Service +public class AlarmConfigServiceImpl extends ServiceImpl implements AlarmConfigService { + + private final AepCommandSend aepCommandSend; + private final NbDeviceMapper nbDeviceMapper; + + @Override + public ResponseData gasBatchConfig( List alarmConfigParamList){ + ResponseData responseData = new ResponseData(); + try { + for (AlarmConfigParam alarmConfigParam : alarmConfigParamList) { + String status = aepCommandSend.sendAlarmConfig(alarmConfigParam); + builderNbAlarmConfig(alarmConfigParam, status); + } + responseData.setCode(200); + responseData.setMessage("配置成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData configList(String devcode, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode){ + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + status = StringUtils.isEmpty(status) ? "" : status; + ResponseData responseData = new ResponseData(); + try { + QueryWrapper nbConfigWrapper = new QueryWrapper().like("devcode", devcode) + .like("status",status); + if (!StringUtils.isEmpty(beginTime)) { + nbConfigWrapper = nbConfigWrapper.gt("logtime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + nbConfigWrapper = nbConfigWrapper.lt("logtime", endTime); + } + nbConfigWrapper = sortDevcode ? nbConfigWrapper.orderByAsc("devcode") : nbConfigWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage configIPage = this.baseMapper.selectPage(userPage, nbConfigWrapper); + Map page = new HashMap(); + page.put("total", configIPage.getTotal()); + page.put("rows", configIPage.getRecords()); + page.put("current", configIPage.getCurrent()); + responseData.setCode(200); + responseData.setData(page); + responseData.setMessage("查询成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气报警下发查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + private void builderNbAlarmConfig(AlarmConfigParam alarmConfigParam,String status){ + nbDeviceMapper.updateRecentByDevciceId(alarmConfigParam.getDeviceId(), "2"); + AlarmContent queryContent = alarmConfigParam.getQueryContent(); + NbAlarmConfig nbConfig= NbAlarmConfig.builder() + .devcode(alarmConfigParam.getDevcode()) + .deviceId(alarmConfigParam.getDeviceId()) + .alarmcount(queryContent.getAlarmcount()) + .alarmperiod(queryContent.getAlarmperiod()) + .status(status) + .logtime(new Date()) + .build(); + this.baseMapper.insert(nbConfig); + } + +} diff --git a/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java new file mode 100644 index 0000000..57d13f0 --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java @@ -0,0 +1,112 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.dao.NbConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.NbConfig; +import com.casic.model.BusConfigParam; +import com.casic.model.QueryContent; +import com.casic.model.ResponseData; +import com.casic.service.DeviceConfigService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@AllArgsConstructor +@Slf4j +@Service +public class DeviceConfigServiceImpl implements DeviceConfigService { + + private final NbDeviceMapper nbDeviceMapper; + private final AepCommandSend aepCommandSend; + private final NbConfigMapper nbConfigMapper; + + @Override + public ResponseData devcieConfig(BusConfigParam busConfigParam) { + ResponseData responseData = new ResponseData(); + try { + String status = aepCommandSend.sendConfig(busConfigParam); + builderNbConfig(busConfigParam, status); + responseData.setCode(200); + responseData.setMessage(status.equals("未下发") ? "下发配置成功" : status); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData gasBatchConfig(List busConfigList) { + ResponseData responseData = new ResponseData(); + try { + for (BusConfigParam busConfigParam : busConfigList) { + String status = aepCommandSend.sendConfig(busConfigParam); + builderNbConfig(busConfigParam, status); + } + responseData.setCode(200); + responseData.setMessage("配置成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData configList(String devcode, String beginTime, String endTime, Integer currentIndex, Integer pageSize, String status,Boolean sortDevcode) { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + status = StringUtils.isEmpty(status) ? "" : status; + ResponseData responseData = new ResponseData(); + try { + QueryWrapper nbConfigWrapper = new QueryWrapper().like("devcode", devcode) + .like("status", status); + if (!StringUtils.isEmpty(beginTime)) { + nbConfigWrapper = nbConfigWrapper.gt("logtime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + nbConfigWrapper = nbConfigWrapper.lt("logtime", endTime); + } + nbConfigWrapper = sortDevcode ? nbConfigWrapper.orderByAsc("devcode") : nbConfigWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage configIPage = nbConfigMapper.selectPage(userPage, nbConfigWrapper); + Map page = new HashMap(); + page.put("total", configIPage.getTotal()); + page.put("rows", configIPage.getRecords()); + page.put("current", configIPage.getCurrent()); + responseData.setCode(200); + responseData.setData(page); + responseData.setMessage("查询成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + private void builderNbConfig(BusConfigParam busConfigParam, String status) { + nbDeviceMapper.updateRecentByDevciceId(busConfigParam.getDeviceId(), "1"); + QueryContent queryContent = busConfigParam.getQueryContent(); + NbConfig nbConfig = NbConfig.builder() + .collect(queryContent.getCollect()) + .upload(queryContent.getUpload()) + .retry(queryContent.getRetry()) + .devcode(busConfigParam.getDevcode()) + .deviceId(busConfigParam.getDeviceId()) + .status(status) + .logtime(new Date()) + .build(); + nbConfigMapper.insert(nbConfig); + } +} diff --git a/src/main/java/com/casic/service/impl/GasDataRecvServiceImpl.java b/src/main/java/com/casic/service/impl/GasDataRecvServiceImpl.java new file mode 100644 index 0000000..56c4c2f --- /dev/null +++ b/src/main/java/com/casic/service/impl/GasDataRecvServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.GasDataRecvMapper; +import com.casic.dao.NbAlarmConfigMapper; +import com.casic.dao.NbConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.LucencyGasData; +import com.casic.entity.NbDevice; +import com.casic.model.DataGasConfigParam; +import com.casic.model.ResponseData; +import com.casic.service.GasDataRecvService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; + +import java.util.*; + + +@Slf4j +@AllArgsConstructor +@Service +public class GasDataRecvServiceImpl extends ServiceImpl implements GasDataRecvService { + + private final NbDeviceMapper nbDeviceMapper; + private final AepCommandSend aepCommandSend; + private final NbConfigMapper nbConfigMapper; + private final NbAlarmConfigMapper nbAlarmConfigMapper; + + @Override + public Object saveRev(Map recvDataMap) { + ResponseData responseData = new ResponseData(); + try { + Map contentMap = (Map) recvDataMap.get("payload"); + if (contentMap.containsKey("status")) { + nbDeviceProvider(recvDataMap, contentMap); + } else if (contentMap.containsKey("update")) { + configStatusDataProvider(recvDataMap, String.valueOf(contentMap.get("update"))); + } else if (contentMap.containsKey("time")) { + realTimeGasDataProvider(recvDataMap, contentMap); + } else if (contentMap.containsKey("history")) { + historyGasDataProvider(recvDataMap, contentMap); + } + realTimeGasDataProvider(recvDataMap, contentMap); + responseData.setCode(200); + responseData.setMessage("保存成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备存储异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("保存异常"); + } + return responseData; + } + + private Boolean nbDeviceProvider(Map recvDataMap, Map contentMap) { + nbDeviceMapper.deleteDeviceByImei(String.valueOf(contentMap.get("imei"))); + NbDevice nbDevice = NbDevice.builder() + .logtime(new Date()) + .productId(String.valueOf(recvDataMap.get("productId"))) + .devcode(String.valueOf(contentMap.get("devid"))) + .iccid(String.valueOf(contentMap.get("iccid"))) + .status(String.valueOf(contentMap.get("status"))) + .deviceId(String.valueOf(recvDataMap.get("deviceId"))) + .valid(1) + .imei(String.valueOf(contentMap.get("imei"))).build(); + nbDeviceMapper.insert(nbDevice); + if (!StringUtils.isEmpty(nbDevice.getImei()) && !StringUtils.isEmpty(nbDevice.getDevcode())) { + this.baseMapper.updateData(nbDevice.getImei(), nbDevice.getDevcode()); + } + return true; + } + + private Boolean realTimeGasDataProvider(Map recvDataMap, Map contentMap) throws Exception { + String imei = String.valueOf(recvDataMap.get("IMEI")); + String deviceId = String.valueOf(recvDataMap.get("deviceId")); + String productId = String.valueOf(recvDataMap.get("productId")); + fisrtSaveDeviceAndSend(imei, productId, deviceId); + String devcode = nbDeviceMapper.getDevcodeByImei(imei); + LucencyGasData lucencyGasBuilder = LucencyGasData.builder() + .tenantId(Long.valueOf(String.valueOf(recvDataMap.get("tenantId")))) + .deviceId(String.valueOf(recvDataMap.get("deviceId"))) + .imei(String.valueOf(recvDataMap.get("IMEI"))) + .uptime(new Date(contentMap.containsKey("time") ? + Long.valueOf(String.valueOf(contentMap.get("time"))) + : System.currentTimeMillis())) + .logtime(new Date()) + .dataValue(String.valueOf(contentMap.get("ch4"))) + .cell(Double.valueOf(contentMap.containsKey("ba") ? String.valueOf(contentMap.get("ba")) : "0")) + .chha(String.valueOf(contentMap.get("chha"))) + .chhha(String.valueOf(contentMap.get("chhha"))) + .signals(String.valueOf(contentMap.get("si"))) + .devcode(StringUtils.isEmpty(devcode) ? "" : devcode) + .build(); + this.baseMapper.insert(lucencyGasBuilder); + return true; + } + + //历史数据暂不处理 + private Boolean historyGasDataProvider(Map recvDataMap, Map contentMap) { + List> historyDataList = (List>) JSONArray.parse(contentMap.get("history")); + String devcode = nbDeviceMapper.getDevcodeByImei(String.valueOf(recvDataMap.get("IMEI"))); + String tenantId = String.valueOf(recvDataMap.get("tenantId")); + String deviceId = String.valueOf(recvDataMap.get("deviceId")); + String imei = String.valueOf(recvDataMap.get("IMEI")); + for (Map historyData : historyDataList) { + this.baseMapper.addData(devcode, tenantId, deviceId, imei, new Date(historyData.containsKey("time") ? + Long.valueOf(String.valueOf(historyData.get("time"))) + : System.currentTimeMillis()), String.valueOf(historyData.get("ch4")), new Date()); + } + return true; + } + + private Boolean fisrtSaveDeviceAndSend(String imei, String productId, String deviceId) throws Exception { + Map deviceInfoMap = nbDeviceMapper.getDeviceByImei(imei); + if (ObjectUtils.isEmpty(deviceInfoMap)) { + NbDevice nbDevice = NbDevice.builder() + .logtime(new Date()) + .productId(productId) + .imei(imei).build(); + nbDeviceMapper.insert(nbDevice); + DataGasConfigParam dataGasConfigParam = new DataGasConfigParam(); + dataGasConfigParam.setOperator("casic"); + dataGasConfigParam.setProductId(productId); + dataGasConfigParam.setDeviceId(deviceId); + List dataGasConfigList = new ArrayList<>(); + dataGasConfigList.add(dataGasConfigParam); + aepCommandSend.sendStatusNb(dataGasConfigList); + return false; + } else if (deviceInfoMap.containsKey("device_id") && StringUtils.isEmpty(deviceInfoMap.get("device_id"))) { + if (!StringUtils.isEmpty(deviceId)) { + nbDeviceMapper.setDeviceIdByImei(imei, deviceId); + } + } + return true; + } + + private void configStatusDataProvider(Map recvDataMap, String status) { + String deviceId = String.valueOf(recvDataMap.get("deviceId")); + String recentConf =nbDeviceMapper.getRecentByDevciceId(deviceId); + String configMsg = status.equals("1") ? "成功下发" : "下发失败(参数不在有效范围内)"; + if(recentConf.equals("1")){ + nbConfigMapper.configStatusData(configMsg, deviceId); + }else { + nbAlarmConfigMapper.configStatusData(configMsg, deviceId); + } + + } +} diff --git a/src/main/java/com/casic/service/impl/GasDataServiceImpl.java b/src/main/java/com/casic/service/impl/GasDataServiceImpl.java new file mode 100644 index 0000000..9c38390 --- /dev/null +++ b/src/main/java/com/casic/service/impl/GasDataServiceImpl.java @@ -0,0 +1,93 @@ +package com.casic.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.dao.GasDataRecvMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.LucencyGasData; +import com.casic.model.ResponseData; +import com.casic.service.GasDataService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +@Slf4j +public class GasDataServiceImpl implements GasDataService { + @Resource + private GasDataRecvMapper gasDataRecvMapper; + @Resource + private NbDeviceMapper nbDeviceMapper; + + @Override + public ResponseData> getGasDataList(String devcode, String beginTime, String endTime, Integer currentIndex, Integer pageSize, Boolean sortDevcode) { + ResponseData responseData = new ResponseData(); + try { + devcode = StringUtils.isEmpty(devcode) ? "3" : devcode; + QueryWrapper lucencyGasWrapper = new QueryWrapper() + .select("id,devcode,tenant_id as tenantId,data_value as dataValue,signals,chha,chhha,cell," + + "device_id as deviceId,logtime,max(uptime) as uptime,imei").like("devcode", devcode); + if (!StringUtils.isEmpty(beginTime)) { + lucencyGasWrapper = lucencyGasWrapper.gt("uptime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + lucencyGasWrapper = lucencyGasWrapper.lt("uptime", endTime); + } + lucencyGasWrapper = lucencyGasWrapper.groupBy("devcode"); + lucencyGasWrapper = sortDevcode ? lucencyGasWrapper.orderByAsc("devcode") : lucencyGasWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex - 1, pageSize); + IPage userIPage = gasDataRecvMapper.selectPage(userPage, lucencyGasWrapper); + Map page = new HashMap(); + page.put("total", userIPage.getTotal()); + page.put("rows", userIPage.getRecords()); + page.put("current", userIPage.getCurrent()); + responseData.setCode(200); + responseData.setMessage("查询成功"); + responseData.setData(page); + } catch (DataAccessException dex) { + log.error("主题:哈尔滨燃气数据查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + @Override + public ResponseData> getGasHistoryList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize) { + ResponseData responseData = new ResponseData(); + try { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + QueryWrapper lucencyGasWrapper = new QueryWrapper().like("devcode", devcode); + if (!StringUtils.isEmpty(beginTime)) { + lucencyGasWrapper = lucencyGasWrapper.gt("uptime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + lucencyGasWrapper = lucencyGasWrapper.lt("uptime", endTime); + } + lucencyGasWrapper = lucencyGasWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage userIPage = gasDataRecvMapper.selectPage(userPage, lucencyGasWrapper); + Map page = new HashMap(); + page.put("total", userIPage.getTotal()); + page.put("rows", userIPage.getRecords()); + page.put("current", userIPage.getCurrent()); + responseData.setCode(200); + responseData.setMessage("查询成功"); + responseData.setData(page); + } catch (DataAccessException dex) { + log.error("主题:哈尔滨燃气数据查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } +} diff --git a/src/main/java/com/casic/service/impl/GasDeviceServiceImpl.java b/src/main/java/com/casic/service/impl/GasDeviceServiceImpl.java new file mode 100644 index 0000000..7cc59bb --- /dev/null +++ b/src/main/java/com/casic/service/impl/GasDeviceServiceImpl.java @@ -0,0 +1,119 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.dao.NbConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.NbConfig; +import com.casic.entity.NbDevice; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.casic.model.QueryContent; +import com.casic.model.ResponseData; +import com.casic.service.GasDeviceService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.*; + +@Slf4j +@Service +@AllArgsConstructor +public class GasDeviceServiceImpl implements GasDeviceService { + + private final NbDeviceMapper nbDeviceMapper; + private final AepCommandSend aepCommandSend; + private final NbConfigMapper nbConfigMapper; + + @Override + public ResponseData devcieStatusConfig(List dataGasConfigParam) { + ResponseData responseData = new ResponseData(); + try { + aepCommandSend.sendStatusNb(dataGasConfigParam); + responseData.setCode(200); + responseData.setMessage("配置成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + + @Override + public List getDevicieList(String beginTime, String endTime, String devcode) { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + List nbDevicesList = new ArrayList<>(); + try { + + QueryWrapper lucencyGasWrapper = new QueryWrapper().like("devcode", devcode); + if (!StringUtils.isEmpty(beginTime)) { + lucencyGasWrapper = lucencyGasWrapper.gt("uptime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + lucencyGasWrapper = lucencyGasWrapper.lt("uptime", endTime); + } + lucencyGasWrapper = lucencyGasWrapper.orderByDesc("logtime"); + nbDevicesList = nbDeviceMapper.selectList(lucencyGasWrapper); + } catch (DataAccessException dex) { + log.error("主题:哈尔滨燃气设备导出查询异常,异常信息:{}", dex.getMessage()); + } + return nbDevicesList; + } + + @Override + public ResponseData> getDevicieListPage(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean emptyStatus,Boolean sortDevcode) { + ResponseData responseData = new ResponseData(); + try { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + QueryWrapper lucencyGasWrapper =emptyStatus? new QueryWrapper().isNull("device_id"):new QueryWrapper().like("devcode", devcode); + if (!StringUtils.isEmpty(beginTime)) { + lucencyGasWrapper = lucencyGasWrapper.gt("logtime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + lucencyGasWrapper = lucencyGasWrapper.lt("logtime", endTime); + } + lucencyGasWrapper = sortDevcode ? lucencyGasWrapper.orderByAsc("devcode") : lucencyGasWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage userIPage = nbDeviceMapper.selectPage(userPage, lucencyGasWrapper); + Map page = new HashMap(); + page.put("total", userIPage.getTotal()); + page.put("rows", userIPage.getRecords()); + page.put("current", userIPage.getCurrent()); + responseData.setCode(200); + responseData.setMessage("查询成功"); + responseData.setData(page); + } catch (DataAccessException dex) { + log.error("主题:哈尔滨燃气设备状态查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + @Override + public ResponseData> deviceDict() { + ResponseData responseData = new ResponseData(); + try { + QueryWrapper nbDeviceWrapper = new QueryWrapper() + .isNotNull("devcode"); + List nbDevicesList = nbDeviceMapper.selectList(nbDeviceWrapper); + responseData.setCode(200); + responseData.setMessage("配置成功"); + responseData.setData(nbDevicesList); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备字典列表查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + +} diff --git a/src/main/java/com/casic/util/ExportExcelUtil.java b/src/main/java/com/casic/util/ExportExcelUtil.java new file mode 100644 index 0000000..a993f14 --- /dev/null +++ b/src/main/java/com/casic/util/ExportExcelUtil.java @@ -0,0 +1,46 @@ +package com.casic.util; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSON; +import com.casic.model.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; +import java.util.List; + +@Slf4j +public class ExportExcelUtil{ + + protected void exportExcel(Class cls, List dataList, String sheetName) throws IOException { + HttpServletResponse response = this.getHttpServletResponse(); + try { + this.setExResponse(response); + EasyExcel.write(response.getOutputStream(), cls).autoCloseStream(Boolean.FALSE).sheet(StringUtils.isNotEmpty(sheetName) ? sheetName : "数据").doWrite(dataList); + } catch (Exception var6) { + log.error("文件导出失败", var6); + this.setCatchResponse(response, var6.getMessage()); + } + } + + private void setCatchResponse(HttpServletResponse response, String msg) throws IOException { + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + msg))); + } + + private void setExResponse(HttpServletResponse response) throws IOException { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("文件下载", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8" + fileName + ".xlsx"); + } + + protected HttpServletResponse getHttpServletResponse() { + return HttpContext.getResponse(); + } + +} diff --git a/src/main/java/com/casic/util/HttpContext.java b/src/main/java/com/casic/util/HttpContext.java new file mode 100644 index 0000000..165312f --- /dev/null +++ b/src/main/java/com/casic/util/HttpContext.java @@ -0,0 +1,57 @@ +package com.casic.util; + +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +public class HttpContext { + public static final String X_REAL_IP = "X-real-ip"; + public static final String X_FORWARDED_FOR = "X-Forwarded-For"; + + public HttpContext() { + } + + public static String getIp() { + HttpServletRequest request = getRequest(); + if (request == null) { + return "127.0.0.1"; + } else if (request.getHeader("X-real-ip") != null) { + return request.getHeader("X-real-ip"); + } else { + return request.getHeader("X-Forwarded-For") != null ? request.getHeader("X-Forwarded-For") : request.getRemoteHost(); + } + } + + public static HttpServletRequest getRequest() { + ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + return requestAttributes == null ? null : requestAttributes.getRequest(); + } + + public static HttpServletResponse getResponse() { + ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + return requestAttributes == null ? null : requestAttributes.getResponse(); + } + + public static Map getRequestParameters() { + HashMap values = new HashMap(); + HttpServletRequest request = getRequest(); + if (request == null) { + return values; + } else { + Enumeration enums = request.getParameterNames(); + + while (enums.hasMoreElements()) { + String paramName = (String) enums.nextElement(); + String paramValue = request.getParameter(paramName); + values.put(paramName, paramValue); + } + + return values; + } + } +} diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml new file mode 100644 index 0000000..d973b77 --- /dev/null +++ b/src/main/resources/application-prod.yml @@ -0,0 +1,15 @@ +server: + port: 11520 +################### spring配置 ################### +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://111.198.10.15:11102/smartwell_demos?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowMultiQueries=true + username: root + password: Casic203! +logging: + level.root: error + level.com.casic: error + file: + path: logs/ + name: missiles.log \ 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/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/src/main/java/com/casic/model/BusConfigParam.java b/src/main/java/com/casic/model/BusConfigParam.java new file mode 100644 index 0000000..44004b5 --- /dev/null +++ b/src/main/java/com/casic/model/BusConfigParam.java @@ -0,0 +1,30 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + + +@Data +@ApiModel(value = "BusConfigParam", description = "设备下发配置(除了不传的,其他都是必传)") +public class BusConfigParam { + @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 = "指令内容(上传周期upload、采集周期collect、重试次数retry,都是必填)", dataType = "object",required= true) + private QueryContent queryContent; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/DataGasConfigParam.java b/src/main/java/com/casic/model/DataGasConfigParam.java new file mode 100644 index 0000000..4e71c77 --- /dev/null +++ b/src/main/java/com/casic/model/DataGasConfigParam.java @@ -0,0 +1,24 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +@Data +@ApiModel(value = "DataGasConfigParam", description = "状态下发配置参数(除了不传,其他都是必传)") +public class DataGasConfigParam { + @ApiModelProperty(notes = "电信平台设备id", dataType = "String",required= true) + private String deviceId; + @ApiModelProperty(notes = "产品id", dataType = "String",required= true) + private String productId; + @ApiModelProperty(notes = "操作人", dataType = "String") + private String operator; + @ApiModelProperty(notes = "设备等级", dataType = "Integer" ) + private Integer level; + @ApiModelProperty(notes = "指令内容", dataType = "String") + private Map content; + @ApiModelProperty(notes = "设备组", dataType = "String") + private String deviceGroupId; +} diff --git a/src/main/java/com/casic/model/ErrorResponseData.java b/src/main/java/com/casic/model/ErrorResponseData.java new file mode 100644 index 0000000..080fcbc --- /dev/null +++ b/src/main/java/com/casic/model/ErrorResponseData.java @@ -0,0 +1,29 @@ +package com.casic.model; + + +public class ErrorResponseData extends ResponseData { + private String exceptionClazz; + + public String getExceptionClazz() { + return this.exceptionClazz; + } + + + public ErrorResponseData(String message) { + super(false, ResponseData.DEFAULT_ERROR_CODE, message, (Object)null); + } + + + public void setExceptionClazz(String exceptionClazz) { + this.exceptionClazz = exceptionClazz; + } + @Override + protected boolean canEqual(Object other) { + return other instanceof ErrorResponseData; + } + + @Override + public String toString() { + return "ErrorResponseData(exceptionClazz=" + this.getExceptionClazz() + ")"; + } +} diff --git a/src/main/java/com/casic/model/QueryContent.java b/src/main/java/com/casic/model/QueryContent.java new file mode 100644 index 0000000..e6cd12d --- /dev/null +++ b/src/main/java/com/casic/model/QueryContent.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "QueryContent", description = "下发配置参数") +public class QueryContent { + @ApiModelProperty(notes = "上传周期", dataType = "String",required= true) + private String upload; + @ApiModelProperty(notes = "收集周期", dataType = "String",required= true) + private String collect; + @ApiModelProperty(notes = "重传次数", dataType = "String",required= true) + private String retry; +} diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java new file mode 100644 index 0000000..c09b2d2 --- /dev/null +++ b/src/main/java/com/casic/model/ResponseData.java @@ -0,0 +1,58 @@ +package com.casic.model; + +import com.alibaba.fastjson.JSONObject; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.CreateCommandRequest; +import lombok.Data; + +import java.util.Calendar; +import java.util.Date; + +/** + * @author cz + * @date 2022-8-12 + */ +@Data +public class ResponseData { + public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功"; + public static final String DEFAULT_ERROR_MESSAGE = "网络异常"; + public static final Integer DEFAULT_SUCCESS_CODE = 200; + public static final Integer DEFAULT_ERROR_CODE = 500; + private Boolean success; + private Integer code; + private String message; + private T data; + + +// public static void main(String[] args) throws Exception { +// Calendar now = Calendar.getInstance(); +// Date getTime = now.getTime(); +//// if (isWeekend(now)) { +// now.add(Calendar.WEEK_OF_YEAR, 1); +// now.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); +// now.set(Calendar.HOUR_OF_DAY, 8); +// now.set(Calendar.MINUTE, 0); +// now.set(Calendar.SECOND, 0); +//// } else { +//// now.add(Calendar.HOUR, 24); +//// while (isWeekend(now)) { +//// now.add(Calendar.HOUR, 24); +//// } +//// } +// +// System.out.println(now.getTime()); +// } + + public ResponseData() { + } + public ResponseData(Boolean success, Integer code, String message, T data) { + this.success = success; + this.code = code; + this.message = message; + this.data = data; + } + + public static ErrorResponseData error(String message) { + return new ErrorResponseData(message); + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmConfigService.java b/src/main/java/com/casic/service/AlarmConfigService.java new file mode 100644 index 0000000..2d76956 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmConfigService.java @@ -0,0 +1,15 @@ +package com.casic.service; + +import com.casic.model.AlarmConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface AlarmConfigService { + + + ResponseData gasBatchConfig( List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/DeviceConfigService.java b/src/main/java/com/casic/service/DeviceConfigService.java new file mode 100644 index 0000000..0cf7efc --- /dev/null +++ b/src/main/java/com/casic/service/DeviceConfigService.java @@ -0,0 +1,16 @@ +package com.casic.service; + +import com.casic.model.BusConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface DeviceConfigService { + + ResponseData devcieConfig(BusConfigParam busConfigParam); + + ResponseData gasBatchConfig(List busConfigList); + + ResponseData configList(String keywords, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode); + +} diff --git a/src/main/java/com/casic/service/GasDataRecvService.java b/src/main/java/com/casic/service/GasDataRecvService.java new file mode 100644 index 0000000..25d7da9 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataRecvService.java @@ -0,0 +1,9 @@ +package com.casic.service; + +import java.util.Map; + +public interface GasDataRecvService { + + Object saveRev(Map recvDataMap); + +} diff --git a/src/main/java/com/casic/service/GasDataService.java b/src/main/java/com/casic/service/GasDataService.java new file mode 100644 index 0000000..090c624 --- /dev/null +++ b/src/main/java/com/casic/service/GasDataService.java @@ -0,0 +1,19 @@ +package com.casic.service; + +import com.casic.entity.LucencyGasData; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface GasDataService { + + + ResponseData> getGasDataList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean sortDevcode); + + + ResponseData> getGasHistoryList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize); + + +} diff --git a/src/main/java/com/casic/service/GasDeviceService.java b/src/main/java/com/casic/service/GasDeviceService.java new file mode 100644 index 0000000..318d8ea --- /dev/null +++ b/src/main/java/com/casic/service/GasDeviceService.java @@ -0,0 +1,20 @@ +package com.casic.service; + +import com.casic.entity.NbDevice; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.casic.model.ResponseData; + +import java.util.List; + +public interface GasDeviceService { + + ResponseData devcieStatusConfig(List dataGasConfigParam); + + List getDevicieList(String beginTime, String endTime, String keywords); + + ResponseData> getDevicieListPage(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean emptyStatus,Boolean sortDevcode); + + ResponseData> deviceDict(); +} diff --git a/src/main/java/com/casic/service/impl/AepCommandSend.java b/src/main/java/com/casic/service/impl/AepCommandSend.java new file mode 100644 index 0000000..c91f3ad --- /dev/null +++ b/src/main/java/com/casic/service/impl/AepCommandSend.java @@ -0,0 +1,97 @@ +package com.casic.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.casic.config.AEPParamConfig; +import com.casic.model.AlarmConfigParam; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.ctg.ag.sdk.biz.AepDeviceCommandClient; +import com.ctg.ag.sdk.biz.aep_device_command.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component +@Slf4j +public class AepCommandSend { + + @Autowired + private AEPParamConfig aepParamConfig; + + public void sendStatusNb(List dataGasConfigList) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + Map queryMap = new HashMap<>(); + queryMap.put("query", 1); + dataGasMap.put("params", queryMap); + dataGasMap.put("serviceIdentifier", "DeviceQuery"); + dataGasConfigList.forEach( + dataGasConfigParam -> { + dataGasConfigParam.setLevel(1); + dataGasConfigParam.setContent(dataGasMap); + dataGasConfigParam.setOperator("casic"); + } + ); + for (DataGasConfigParam dataGasConfigParam : dataGasConfigList) { + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(dataGasConfigParam).getBytes()); //具体格式见前面请求body说明 + System.out.println(client.CreateCommand(request)); + } + client.shutdown(); + } + + public String sendConfig(BusConfigParam busConfigParam) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + dataGasMap.put("serviceIdentifier", "config"); + dataGasMap.put("params", busConfigParam.getQueryContent()); + busConfigParam.setContent(dataGasMap); + busConfigParam.setLevel(1); + busConfigParam.setOperator("casic"); + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(busConfigParam).getBytes()); //具体格式见前面请求body说明 + CreateCommandResponse msgResponse = client.CreateCommand(request); + System.out.println(msgResponse); + client.shutdown(); + log.debug("-----" + msgResponse.getMessage()); + if (msgResponse.getStatusCode()==200) { + return "未下发"; + } else { + return "下发异常"; + } + } + + public String sendAlarmConfig(AlarmConfigParam alarmConfigParam) throws Exception { + AepDeviceCommandClient client = AepDeviceCommandClient.newClient() + .appKey(aepParamConfig.getAppKey()).appSecret(aepParamConfig.getAppSecret()) + .build(); + Map dataGasMap = new HashMap<>(); + dataGasMap.put("serviceIdentifier", "alarmconfig"); + dataGasMap.put("params", alarmConfigParam.getQueryContent()); + alarmConfigParam.setContent(dataGasMap); + alarmConfigParam.setLevel(1); + alarmConfigParam.setOperator("casic"); + CreateCommandRequest request = new CreateCommandRequest(); + request.setParamMasterKey(aepParamConfig.getMasterKey()); // single value + request.setBody(JSONObject.toJSONString(alarmConfigParam).getBytes()); //具体格式见前面请求body说明 + CreateCommandResponse msgResponse = client.CreateCommand(request); + System.out.println(msgResponse); + client.shutdown(); + log.debug("-----" + msgResponse.getMessage()); + if (msgResponse.getStatusCode()==200) { + return "未下发"; + } else { + return "下发异常"; + } + } +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java b/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java new file mode 100644 index 0000000..eadfa04 --- /dev/null +++ b/src/main/java/com/casic/service/impl/AlarmConfigServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.NbAlarmConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.NbAlarmConfig; +import com.casic.model.AlarmConfigParam; +import com.casic.model.AlarmContent; +import com.casic.model.ResponseData; +import com.casic.service.AlarmConfigService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@AllArgsConstructor +@Slf4j +@Service +public class AlarmConfigServiceImpl extends ServiceImpl implements AlarmConfigService { + + private final AepCommandSend aepCommandSend; + private final NbDeviceMapper nbDeviceMapper; + + @Override + public ResponseData gasBatchConfig( List alarmConfigParamList){ + ResponseData responseData = new ResponseData(); + try { + for (AlarmConfigParam alarmConfigParam : alarmConfigParamList) { + String status = aepCommandSend.sendAlarmConfig(alarmConfigParam); + builderNbAlarmConfig(alarmConfigParam, status); + } + responseData.setCode(200); + responseData.setMessage("配置成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData configList(String devcode, String beginTime,String endTime,Integer currentIndex,Integer pageSize,String status,Boolean sortDevcode){ + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + status = StringUtils.isEmpty(status) ? "" : status; + ResponseData responseData = new ResponseData(); + try { + QueryWrapper nbConfigWrapper = new QueryWrapper().like("devcode", devcode) + .like("status",status); + if (!StringUtils.isEmpty(beginTime)) { + nbConfigWrapper = nbConfigWrapper.gt("logtime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + nbConfigWrapper = nbConfigWrapper.lt("logtime", endTime); + } + nbConfigWrapper = sortDevcode ? nbConfigWrapper.orderByAsc("devcode") : nbConfigWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage configIPage = this.baseMapper.selectPage(userPage, nbConfigWrapper); + Map page = new HashMap(); + page.put("total", configIPage.getTotal()); + page.put("rows", configIPage.getRecords()); + page.put("current", configIPage.getCurrent()); + responseData.setCode(200); + responseData.setData(page); + responseData.setMessage("查询成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气报警下发查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + private void builderNbAlarmConfig(AlarmConfigParam alarmConfigParam,String status){ + nbDeviceMapper.updateRecentByDevciceId(alarmConfigParam.getDeviceId(), "2"); + AlarmContent queryContent = alarmConfigParam.getQueryContent(); + NbAlarmConfig nbConfig= NbAlarmConfig.builder() + .devcode(alarmConfigParam.getDevcode()) + .deviceId(alarmConfigParam.getDeviceId()) + .alarmcount(queryContent.getAlarmcount()) + .alarmperiod(queryContent.getAlarmperiod()) + .status(status) + .logtime(new Date()) + .build(); + this.baseMapper.insert(nbConfig); + } + +} diff --git a/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java new file mode 100644 index 0000000..57d13f0 --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceConfigServiceImpl.java @@ -0,0 +1,112 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.dao.NbConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.NbConfig; +import com.casic.model.BusConfigParam; +import com.casic.model.QueryContent; +import com.casic.model.ResponseData; +import com.casic.service.DeviceConfigService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@AllArgsConstructor +@Slf4j +@Service +public class DeviceConfigServiceImpl implements DeviceConfigService { + + private final NbDeviceMapper nbDeviceMapper; + private final AepCommandSend aepCommandSend; + private final NbConfigMapper nbConfigMapper; + + @Override + public ResponseData devcieConfig(BusConfigParam busConfigParam) { + ResponseData responseData = new ResponseData(); + try { + String status = aepCommandSend.sendConfig(busConfigParam); + builderNbConfig(busConfigParam, status); + responseData.setCode(200); + responseData.setMessage(status.equals("未下发") ? "下发配置成功" : status); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData gasBatchConfig(List busConfigList) { + ResponseData responseData = new ResponseData(); + try { + for (BusConfigParam busConfigParam : busConfigList) { + String status = aepCommandSend.sendConfig(busConfigParam); + builderNbConfig(busConfigParam, status); + } + responseData.setCode(200); + responseData.setMessage("配置成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + @Override + public ResponseData configList(String devcode, String beginTime, String endTime, Integer currentIndex, Integer pageSize, String status,Boolean sortDevcode) { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + status = StringUtils.isEmpty(status) ? "" : status; + ResponseData responseData = new ResponseData(); + try { + QueryWrapper nbConfigWrapper = new QueryWrapper().like("devcode", devcode) + .like("status", status); + if (!StringUtils.isEmpty(beginTime)) { + nbConfigWrapper = nbConfigWrapper.gt("logtime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + nbConfigWrapper = nbConfigWrapper.lt("logtime", endTime); + } + nbConfigWrapper = sortDevcode ? nbConfigWrapper.orderByAsc("devcode") : nbConfigWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage configIPage = nbConfigMapper.selectPage(userPage, nbConfigWrapper); + Map page = new HashMap(); + page.put("total", configIPage.getTotal()); + page.put("rows", configIPage.getRecords()); + page.put("current", configIPage.getCurrent()); + responseData.setCode(200); + responseData.setData(page); + responseData.setMessage("查询成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + private void builderNbConfig(BusConfigParam busConfigParam, String status) { + nbDeviceMapper.updateRecentByDevciceId(busConfigParam.getDeviceId(), "1"); + QueryContent queryContent = busConfigParam.getQueryContent(); + NbConfig nbConfig = NbConfig.builder() + .collect(queryContent.getCollect()) + .upload(queryContent.getUpload()) + .retry(queryContent.getRetry()) + .devcode(busConfigParam.getDevcode()) + .deviceId(busConfigParam.getDeviceId()) + .status(status) + .logtime(new Date()) + .build(); + nbConfigMapper.insert(nbConfig); + } +} diff --git a/src/main/java/com/casic/service/impl/GasDataRecvServiceImpl.java b/src/main/java/com/casic/service/impl/GasDataRecvServiceImpl.java new file mode 100644 index 0000000..56c4c2f --- /dev/null +++ b/src/main/java/com/casic/service/impl/GasDataRecvServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.GasDataRecvMapper; +import com.casic.dao.NbAlarmConfigMapper; +import com.casic.dao.NbConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.LucencyGasData; +import com.casic.entity.NbDevice; +import com.casic.model.DataGasConfigParam; +import com.casic.model.ResponseData; +import com.casic.service.GasDataRecvService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; + +import java.util.*; + + +@Slf4j +@AllArgsConstructor +@Service +public class GasDataRecvServiceImpl extends ServiceImpl implements GasDataRecvService { + + private final NbDeviceMapper nbDeviceMapper; + private final AepCommandSend aepCommandSend; + private final NbConfigMapper nbConfigMapper; + private final NbAlarmConfigMapper nbAlarmConfigMapper; + + @Override + public Object saveRev(Map recvDataMap) { + ResponseData responseData = new ResponseData(); + try { + Map contentMap = (Map) recvDataMap.get("payload"); + if (contentMap.containsKey("status")) { + nbDeviceProvider(recvDataMap, contentMap); + } else if (contentMap.containsKey("update")) { + configStatusDataProvider(recvDataMap, String.valueOf(contentMap.get("update"))); + } else if (contentMap.containsKey("time")) { + realTimeGasDataProvider(recvDataMap, contentMap); + } else if (contentMap.containsKey("history")) { + historyGasDataProvider(recvDataMap, contentMap); + } + realTimeGasDataProvider(recvDataMap, contentMap); + responseData.setCode(200); + responseData.setMessage("保存成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备存储异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("保存异常"); + } + return responseData; + } + + private Boolean nbDeviceProvider(Map recvDataMap, Map contentMap) { + nbDeviceMapper.deleteDeviceByImei(String.valueOf(contentMap.get("imei"))); + NbDevice nbDevice = NbDevice.builder() + .logtime(new Date()) + .productId(String.valueOf(recvDataMap.get("productId"))) + .devcode(String.valueOf(contentMap.get("devid"))) + .iccid(String.valueOf(contentMap.get("iccid"))) + .status(String.valueOf(contentMap.get("status"))) + .deviceId(String.valueOf(recvDataMap.get("deviceId"))) + .valid(1) + .imei(String.valueOf(contentMap.get("imei"))).build(); + nbDeviceMapper.insert(nbDevice); + if (!StringUtils.isEmpty(nbDevice.getImei()) && !StringUtils.isEmpty(nbDevice.getDevcode())) { + this.baseMapper.updateData(nbDevice.getImei(), nbDevice.getDevcode()); + } + return true; + } + + private Boolean realTimeGasDataProvider(Map recvDataMap, Map contentMap) throws Exception { + String imei = String.valueOf(recvDataMap.get("IMEI")); + String deviceId = String.valueOf(recvDataMap.get("deviceId")); + String productId = String.valueOf(recvDataMap.get("productId")); + fisrtSaveDeviceAndSend(imei, productId, deviceId); + String devcode = nbDeviceMapper.getDevcodeByImei(imei); + LucencyGasData lucencyGasBuilder = LucencyGasData.builder() + .tenantId(Long.valueOf(String.valueOf(recvDataMap.get("tenantId")))) + .deviceId(String.valueOf(recvDataMap.get("deviceId"))) + .imei(String.valueOf(recvDataMap.get("IMEI"))) + .uptime(new Date(contentMap.containsKey("time") ? + Long.valueOf(String.valueOf(contentMap.get("time"))) + : System.currentTimeMillis())) + .logtime(new Date()) + .dataValue(String.valueOf(contentMap.get("ch4"))) + .cell(Double.valueOf(contentMap.containsKey("ba") ? String.valueOf(contentMap.get("ba")) : "0")) + .chha(String.valueOf(contentMap.get("chha"))) + .chhha(String.valueOf(contentMap.get("chhha"))) + .signals(String.valueOf(contentMap.get("si"))) + .devcode(StringUtils.isEmpty(devcode) ? "" : devcode) + .build(); + this.baseMapper.insert(lucencyGasBuilder); + return true; + } + + //历史数据暂不处理 + private Boolean historyGasDataProvider(Map recvDataMap, Map contentMap) { + List> historyDataList = (List>) JSONArray.parse(contentMap.get("history")); + String devcode = nbDeviceMapper.getDevcodeByImei(String.valueOf(recvDataMap.get("IMEI"))); + String tenantId = String.valueOf(recvDataMap.get("tenantId")); + String deviceId = String.valueOf(recvDataMap.get("deviceId")); + String imei = String.valueOf(recvDataMap.get("IMEI")); + for (Map historyData : historyDataList) { + this.baseMapper.addData(devcode, tenantId, deviceId, imei, new Date(historyData.containsKey("time") ? + Long.valueOf(String.valueOf(historyData.get("time"))) + : System.currentTimeMillis()), String.valueOf(historyData.get("ch4")), new Date()); + } + return true; + } + + private Boolean fisrtSaveDeviceAndSend(String imei, String productId, String deviceId) throws Exception { + Map deviceInfoMap = nbDeviceMapper.getDeviceByImei(imei); + if (ObjectUtils.isEmpty(deviceInfoMap)) { + NbDevice nbDevice = NbDevice.builder() + .logtime(new Date()) + .productId(productId) + .imei(imei).build(); + nbDeviceMapper.insert(nbDevice); + DataGasConfigParam dataGasConfigParam = new DataGasConfigParam(); + dataGasConfigParam.setOperator("casic"); + dataGasConfigParam.setProductId(productId); + dataGasConfigParam.setDeviceId(deviceId); + List dataGasConfigList = new ArrayList<>(); + dataGasConfigList.add(dataGasConfigParam); + aepCommandSend.sendStatusNb(dataGasConfigList); + return false; + } else if (deviceInfoMap.containsKey("device_id") && StringUtils.isEmpty(deviceInfoMap.get("device_id"))) { + if (!StringUtils.isEmpty(deviceId)) { + nbDeviceMapper.setDeviceIdByImei(imei, deviceId); + } + } + return true; + } + + private void configStatusDataProvider(Map recvDataMap, String status) { + String deviceId = String.valueOf(recvDataMap.get("deviceId")); + String recentConf =nbDeviceMapper.getRecentByDevciceId(deviceId); + String configMsg = status.equals("1") ? "成功下发" : "下发失败(参数不在有效范围内)"; + if(recentConf.equals("1")){ + nbConfigMapper.configStatusData(configMsg, deviceId); + }else { + nbAlarmConfigMapper.configStatusData(configMsg, deviceId); + } + + } +} diff --git a/src/main/java/com/casic/service/impl/GasDataServiceImpl.java b/src/main/java/com/casic/service/impl/GasDataServiceImpl.java new file mode 100644 index 0000000..9c38390 --- /dev/null +++ b/src/main/java/com/casic/service/impl/GasDataServiceImpl.java @@ -0,0 +1,93 @@ +package com.casic.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.dao.GasDataRecvMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.LucencyGasData; +import com.casic.model.ResponseData; +import com.casic.service.GasDataService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +@Slf4j +public class GasDataServiceImpl implements GasDataService { + @Resource + private GasDataRecvMapper gasDataRecvMapper; + @Resource + private NbDeviceMapper nbDeviceMapper; + + @Override + public ResponseData> getGasDataList(String devcode, String beginTime, String endTime, Integer currentIndex, Integer pageSize, Boolean sortDevcode) { + ResponseData responseData = new ResponseData(); + try { + devcode = StringUtils.isEmpty(devcode) ? "3" : devcode; + QueryWrapper lucencyGasWrapper = new QueryWrapper() + .select("id,devcode,tenant_id as tenantId,data_value as dataValue,signals,chha,chhha,cell," + + "device_id as deviceId,logtime,max(uptime) as uptime,imei").like("devcode", devcode); + if (!StringUtils.isEmpty(beginTime)) { + lucencyGasWrapper = lucencyGasWrapper.gt("uptime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + lucencyGasWrapper = lucencyGasWrapper.lt("uptime", endTime); + } + lucencyGasWrapper = lucencyGasWrapper.groupBy("devcode"); + lucencyGasWrapper = sortDevcode ? lucencyGasWrapper.orderByAsc("devcode") : lucencyGasWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex - 1, pageSize); + IPage userIPage = gasDataRecvMapper.selectPage(userPage, lucencyGasWrapper); + Map page = new HashMap(); + page.put("total", userIPage.getTotal()); + page.put("rows", userIPage.getRecords()); + page.put("current", userIPage.getCurrent()); + responseData.setCode(200); + responseData.setMessage("查询成功"); + responseData.setData(page); + } catch (DataAccessException dex) { + log.error("主题:哈尔滨燃气数据查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + @Override + public ResponseData> getGasHistoryList(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize) { + ResponseData responseData = new ResponseData(); + try { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + QueryWrapper lucencyGasWrapper = new QueryWrapper().like("devcode", devcode); + if (!StringUtils.isEmpty(beginTime)) { + lucencyGasWrapper = lucencyGasWrapper.gt("uptime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + lucencyGasWrapper = lucencyGasWrapper.lt("uptime", endTime); + } + lucencyGasWrapper = lucencyGasWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage userIPage = gasDataRecvMapper.selectPage(userPage, lucencyGasWrapper); + Map page = new HashMap(); + page.put("total", userIPage.getTotal()); + page.put("rows", userIPage.getRecords()); + page.put("current", userIPage.getCurrent()); + responseData.setCode(200); + responseData.setMessage("查询成功"); + responseData.setData(page); + } catch (DataAccessException dex) { + log.error("主题:哈尔滨燃气数据查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } +} diff --git a/src/main/java/com/casic/service/impl/GasDeviceServiceImpl.java b/src/main/java/com/casic/service/impl/GasDeviceServiceImpl.java new file mode 100644 index 0000000..7cc59bb --- /dev/null +++ b/src/main/java/com/casic/service/impl/GasDeviceServiceImpl.java @@ -0,0 +1,119 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.dao.NbConfigMapper; +import com.casic.dao.NbDeviceMapper; +import com.casic.entity.NbConfig; +import com.casic.entity.NbDevice; +import com.casic.model.BusConfigParam; +import com.casic.model.DataGasConfigParam; +import com.casic.model.QueryContent; +import com.casic.model.ResponseData; +import com.casic.service.GasDeviceService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import java.util.*; + +@Slf4j +@Service +@AllArgsConstructor +public class GasDeviceServiceImpl implements GasDeviceService { + + private final NbDeviceMapper nbDeviceMapper; + private final AepCommandSend aepCommandSend; + private final NbConfigMapper nbConfigMapper; + + @Override + public ResponseData devcieStatusConfig(List dataGasConfigParam) { + ResponseData responseData = new ResponseData(); + try { + aepCommandSend.sendStatusNb(dataGasConfigParam); + responseData.setCode(200); + responseData.setMessage("配置成功"); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备下发异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + + @Override + public List getDevicieList(String beginTime, String endTime, String devcode) { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + List nbDevicesList = new ArrayList<>(); + try { + + QueryWrapper lucencyGasWrapper = new QueryWrapper().like("devcode", devcode); + if (!StringUtils.isEmpty(beginTime)) { + lucencyGasWrapper = lucencyGasWrapper.gt("uptime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + lucencyGasWrapper = lucencyGasWrapper.lt("uptime", endTime); + } + lucencyGasWrapper = lucencyGasWrapper.orderByDesc("logtime"); + nbDevicesList = nbDeviceMapper.selectList(lucencyGasWrapper); + } catch (DataAccessException dex) { + log.error("主题:哈尔滨燃气设备导出查询异常,异常信息:{}", dex.getMessage()); + } + return nbDevicesList; + } + + @Override + public ResponseData> getDevicieListPage(String devcode, String beginTime, String endTime, Integer currentIndex, + Integer pageSize,Boolean emptyStatus,Boolean sortDevcode) { + ResponseData responseData = new ResponseData(); + try { + devcode = StringUtils.isEmpty(devcode) ? "" : devcode; + QueryWrapper lucencyGasWrapper =emptyStatus? new QueryWrapper().isNull("device_id"):new QueryWrapper().like("devcode", devcode); + if (!StringUtils.isEmpty(beginTime)) { + lucencyGasWrapper = lucencyGasWrapper.gt("logtime", beginTime); + } + if (!StringUtils.isEmpty(endTime)) { + lucencyGasWrapper = lucencyGasWrapper.lt("logtime", endTime); + } + lucencyGasWrapper = sortDevcode ? lucencyGasWrapper.orderByAsc("devcode") : lucencyGasWrapper.orderByDesc("logtime"); + Page userPage = new Page<>(currentIndex, pageSize); + IPage userIPage = nbDeviceMapper.selectPage(userPage, lucencyGasWrapper); + Map page = new HashMap(); + page.put("total", userIPage.getTotal()); + page.put("rows", userIPage.getRecords()); + page.put("current", userIPage.getCurrent()); + responseData.setCode(200); + responseData.setMessage("查询成功"); + responseData.setData(page); + } catch (DataAccessException dex) { + log.error("主题:哈尔滨燃气设备状态查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("查询异常"); + } + return responseData; + } + + @Override + public ResponseData> deviceDict() { + ResponseData responseData = new ResponseData(); + try { + QueryWrapper nbDeviceWrapper = new QueryWrapper() + .isNotNull("devcode"); + List nbDevicesList = nbDeviceMapper.selectList(nbDeviceWrapper); + responseData.setCode(200); + responseData.setMessage("配置成功"); + responseData.setData(nbDevicesList); + } catch (Exception dex) { + log.error("主题:哈尔滨燃气设备字典列表查询异常,异常信息:{}", dex.getMessage()); + responseData.setCode(500); + responseData.setMessage("配置异常"); + } + return responseData; + } + + +} diff --git a/src/main/java/com/casic/util/ExportExcelUtil.java b/src/main/java/com/casic/util/ExportExcelUtil.java new file mode 100644 index 0000000..a993f14 --- /dev/null +++ b/src/main/java/com/casic/util/ExportExcelUtil.java @@ -0,0 +1,46 @@ +package com.casic.util; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSON; +import com.casic.model.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; +import java.util.List; + +@Slf4j +public class ExportExcelUtil{ + + protected void exportExcel(Class cls, List dataList, String sheetName) throws IOException { + HttpServletResponse response = this.getHttpServletResponse(); + try { + this.setExResponse(response); + EasyExcel.write(response.getOutputStream(), cls).autoCloseStream(Boolean.FALSE).sheet(StringUtils.isNotEmpty(sheetName) ? sheetName : "数据").doWrite(dataList); + } catch (Exception var6) { + log.error("文件导出失败", var6); + this.setCatchResponse(response, var6.getMessage()); + } + } + + private void setCatchResponse(HttpServletResponse response, String msg) throws IOException { + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(ResponseData.error("下载文件失败" + msg))); + } + + private void setExResponse(HttpServletResponse response) throws IOException { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("文件下载", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8" + fileName + ".xlsx"); + } + + protected HttpServletResponse getHttpServletResponse() { + return HttpContext.getResponse(); + } + +} diff --git a/src/main/java/com/casic/util/HttpContext.java b/src/main/java/com/casic/util/HttpContext.java new file mode 100644 index 0000000..165312f --- /dev/null +++ b/src/main/java/com/casic/util/HttpContext.java @@ -0,0 +1,57 @@ +package com.casic.util; + +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +public class HttpContext { + public static final String X_REAL_IP = "X-real-ip"; + public static final String X_FORWARDED_FOR = "X-Forwarded-For"; + + public HttpContext() { + } + + public static String getIp() { + HttpServletRequest request = getRequest(); + if (request == null) { + return "127.0.0.1"; + } else if (request.getHeader("X-real-ip") != null) { + return request.getHeader("X-real-ip"); + } else { + return request.getHeader("X-Forwarded-For") != null ? request.getHeader("X-Forwarded-For") : request.getRemoteHost(); + } + } + + public static HttpServletRequest getRequest() { + ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + return requestAttributes == null ? null : requestAttributes.getRequest(); + } + + public static HttpServletResponse getResponse() { + ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + return requestAttributes == null ? null : requestAttributes.getResponse(); + } + + public static Map getRequestParameters() { + HashMap values = new HashMap(); + HttpServletRequest request = getRequest(); + if (request == null) { + return values; + } else { + Enumeration enums = request.getParameterNames(); + + while (enums.hasMoreElements()) { + String paramName = (String) enums.nextElement(); + String paramValue = request.getParameter(paramName); + values.put(paramName, paramValue); + } + + return values; + } + } +} diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml new file mode 100644 index 0000000..d973b77 --- /dev/null +++ b/src/main/resources/application-prod.yml @@ -0,0 +1,15 @@ +server: + port: 11520 +################### spring配置 ################### +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://111.198.10.15:11102/smartwell_demos?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&allowMultiQueries=true + username: root + password: Casic203! +logging: + level.root: error + level.com.casic: error + file: + path: logs/ + name: missiles.log \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..4d42b21 --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,26 @@ +########################################################## +################## 所有profile共有的配置 ################# +########################################################## +spring: + profiles: + active: prod +mybatis-plus: + global-config: + enable-sql-runner: true + configuration: + # 配置结果集属性为空时 是否映射返回结果 + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 +# log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl +################### mybatis-plus配置 ################### +################### casic配置 ################### +swagger: + enable: true + groupName: "批产演示" +nb: + gas: + url: ag-api.ctwing.cn/aep_device_command/command + product-id: 15432101 + MasterKey: 46eb5fd9f7364b9abe41b26e369149f3 + app: + key: ke4zM3hld29 + secret: 35ykNutA1t