yangjingjing hace 5 años
padre
commit
a39c1c641a
Se han modificado 100 ficheros con 5257 adiciones y 38 borrados
  1. 1 1
      febs-apm/febs-admin/src/main/resources/bootstrap.yml
  2. 17 0
      febs-auth/src/main/java/cc/mrbird/febs/auth/configure/FebsSecurityConfigure.java
  3. 1 1
      febs-auth/src/main/java/cc/mrbird/febs/auth/filter/ValidateCodeFilter.java
  4. 26 26
      febs-auth/src/main/resources/mapper/UserMapper.xml
  5. 2 2
      febs-cloud/docker compose/nacos/docker-compose.yml
  6. 1 1
      febs-cloud/docker compose/third-part/docker-compose.yml
  7. 1 0
      febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/entity/CurrentUser.java
  8. 2 0
      febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/entity/FebsAuthUser.java
  9. 18 0
      febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/entity/FebsResponse.java
  10. 8 0
      febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/entity/system/SystemUser.java
  11. 1 1
      febs-server/febs-server-generator/run.sh
  12. 2 1
      febs-server/febs-server-generator/src/main/java/cc/mrbird/febs/server/generator/controller/GeneratorController.java
  13. 1 1
      febs-server/febs-server-job/run.sh
  14. 1 1
      febs-server/febs-server-system/run.sh
  15. 50 0
      febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/UserController.java
  16. 17 0
      febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/entity/ThirdPartyUser.java
  17. 1 0
      febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/UserServiceImpl.java
  18. 4 2
      febs-server/febs-server-system/src/main/resources/mapper/UserMapper.xml
  19. 1 1
      febs-server/febs-server-test/run.sh
  20. 6 0
      febs-server/gbd-demp-data-exchange/Dockerfile
  21. 54 0
      febs-server/gbd-demp-data-exchange/pom.xml
  22. 23 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/GbdDempDataExchangeApplication.java
  23. 23 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/config/RestTemplateConfig.java
  24. 37 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/config/ThreadPoolTaskConfig.java
  25. 106 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/controller/HistoryDataController.java
  26. 144 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/controller/LiveDataController.java
  27. 85 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/entity/AlarmEvent.java
  28. 111 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/entity/DeviceInfo.java
  29. 55 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/entity/DeviceThreshold.java
  30. 62 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/entity/HistoryData.java
  31. 59 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/entity/LiveData.java
  32. 49 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/entity/SensorInfo.java
  33. 27 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/entity/ServerAlarm.java
  34. 27 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/mapper/AlarmEventMapper.java
  35. 21 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/mapper/DeviceInfoMapper.java
  36. 34 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/mapper/DeviceThresholdMapper.java
  37. 22 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/mapper/HistoryDataMapper.java
  38. 28 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/mapper/LiveDataMapper.java
  39. 29 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/mapper/SensorInfoMapper.java
  40. 27 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/runner/StartedUpRunner.java
  41. 54 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/IAlarmEventService.java
  42. 26 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/IDeviceInfoService.java
  43. 58 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/IDeviceThresholdService.java
  44. 58 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/IHistoryDataService.java
  45. 60 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/ILiveDataService.java
  46. 58 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/ISensorInfoService.java
  47. 65 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/impl/AlarmEventServiceImpl.java
  48. 49 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/impl/DeviceInfoServiceImpl.java
  49. 79 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/impl/DeviceThresholdServiceImpl.java
  50. 95 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/impl/HistoryDataServiceImpl.java
  51. 101 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/impl/LiveDataServiceImpl.java
  52. 77 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/impl/SensorInfoServiceImpl.java
  53. 441 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/task/LiveDataTask.java
  54. 47 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/utils/CommonUtils.java
  55. 25 0
      febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/vo/LiveDataVO.java
  56. 6 0
      febs-server/gbd-demp-data-exchange/src/main/resources/ValidationMessages.properties
  57. 8 0
      febs-server/gbd-demp-data-exchange/src/main/resources/banner.txt
  58. 27 0
      febs-server/gbd-demp-data-exchange/src/main/resources/bootstrap.yml
  59. 2 0
      febs-server/gbd-demp-data-exchange/src/main/resources/gbd-demp-data-exchange.properties
  60. 62 0
      febs-server/gbd-demp-data-exchange/src/main/resources/logback-spring.xml
  61. 33 0
      febs-server/gbd-demp-data-exchange/src/main/resources/mapper/AlarmEventMapper.xml
  62. 89 0
      febs-server/gbd-demp-data-exchange/src/main/resources/mapper/DeviceInfoMapper.xml
  63. 67 0
      febs-server/gbd-demp-data-exchange/src/main/resources/mapper/DeviceThresholdMapper.xml
  64. 26 0
      febs-server/gbd-demp-data-exchange/src/main/resources/mapper/HistoryDataMapper.xml
  65. 63 0
      febs-server/gbd-demp-data-exchange/src/main/resources/mapper/LiveDataMapper.xml
  66. 62 0
      febs-server/gbd-demp-data-exchange/src/main/resources/mapper/SensorInfoMapper.xml
  67. 6 0
      febs-server/gbd-demp-info/Dockerfile
  68. 48 0
      febs-server/gbd-demp-info/pom.xml
  69. 24 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/GbdDempInfoApplication.java
  70. 27 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/config/RestTemplateConfig.java
  71. 88 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/AlarmEventController.java
  72. 81 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/CodeAlarmRulesController.java
  73. 81 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/CodeCompanyScaleController.java
  74. 81 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/CodeDustTypeController.java
  75. 81 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/CodeIndustryController.java
  76. 81 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/CodeWorkshopLayoutController.java
  77. 81 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/CodeWorkshopStructureController.java
  78. 109 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/CompanyInfoController.java
  79. 181 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/DeviceInfoController.java
  80. 112 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/DeviceThresholdController.java
  81. 120 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/SensorInfoController.java
  82. 107 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/SensorVideoController.java
  83. 139 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/VideoInfoController.java
  84. 86 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/AlarmEvent.java
  85. 37 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/CodeAlarmRules.java
  86. 31 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/CodeCompanyScale.java
  87. 85 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/CodeDustType.java
  88. 31 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/CodeIndustry.java
  89. 31 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/CodeWorkshopLayout.java
  90. 31 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/CodeWorkshopStructure.java
  91. 116 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/CompanyInfo.java
  92. 117 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/DeviceInfo.java
  93. 58 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/DeviceThreshold.java
  94. 69 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/SensorInfo.java
  95. 43 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/SensorVideo.java
  96. 17 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/ThirdPartyUser.java
  97. 73 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/VideoInfo.java
  98. 35 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/mapper/AlarmEventMapper.java
  99. 14 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/mapper/CodeAlarmRulesMapper.java
  100. 14 0
      febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/mapper/CodeCompanyScaleMapper.java

+ 1 - 1
febs-apm/febs-admin/src/main/resources/bootstrap.yml

@@ -16,4 +16,4 @@ logging:
         cloud:
           nacos:
             client:
-              NacosPropertySourceBuilder: error
+              NacosPropertySourceBuilder: debug

+ 17 - 0
febs-auth/src/main/java/cc/mrbird/febs/auth/configure/FebsSecurityConfigure.java

@@ -41,6 +41,22 @@ public class FebsSecurityConfigure extends WebSecurityConfigurerAdapter {
 
     @Override
     protected void configure(HttpSecurity http) throws Exception {
+        http
+                .requestMatchers()
+                .antMatchers(EndpointConstant.OAUTH_ALL, EndpointConstant.LOGIN)
+                .and()
+                .authorizeRequests()
+                .antMatchers(EndpointConstant.OAUTH_ALL).authenticated()
+                .and()
+                .formLogin()
+                .loginPage(EndpointConstant.LOGIN)
+                .loginProcessingUrl(EndpointConstant.LOGIN)
+                .successHandler(successHandler)
+                .failureHandler(failureHandler)
+                .permitAll()
+                .and().csrf().disable()
+                .httpBasic().disable();
+/*
         http.addFilterBefore(validateCodeFilter, UsernamePasswordAuthenticationFilter.class)
                 .requestMatchers()
                 .antMatchers(EndpointConstant.OAUTH_ALL, EndpointConstant.LOGIN)
@@ -56,6 +72,7 @@ public class FebsSecurityConfigure extends WebSecurityConfigurerAdapter {
                 .permitAll()
                 .and().csrf().disable()
                 .httpBasic().disable();
+*/
     }
 
     @Override

+ 1 - 1
febs-auth/src/main/java/cc/mrbird/febs/auth/filter/ValidateCodeFilter.java

@@ -60,6 +60,6 @@ public class ValidateCodeFilter extends OncePerRequestFilter {
     private void validateCode(HttpServletRequest httpServletRequest) throws ValidateCodeException {
         String code = httpServletRequest.getParameter(ParamsConstant.VALIDATE_CODE_CODE);
         String key = httpServletRequest.getParameter(ParamsConstant.VALIDATE_CODE_KEY);
-        validateCodeService.check(key, code);
+//        validateCodeService.check(key, code);
     }
 }

+ 26 - 26
febs-auth/src/main/resources/mapper/UserMapper.xml

@@ -2,35 +2,35 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cc.mrbird.febs.auth.mapper.UserMapper">
     <select id="findByName" parameterType="string" resultType="systemUser">
-        SELECT
-        u.user_id userId,
-        u.username,
-        u.email,
-        u.mobile,
-        u.password,
-        u.status,
-        u.create_time createTime,
-        u.ssex sex,
-        u.dept_id deptId,
-        u.last_login_time lastLoginTime,
-        u.modify_time modifyTime,
-        u.description,
-        u.avatar,
-        d.dept_name deptName,
-        GROUP_CONCAT(r.role_id) roleId,
-        GROUP_CONCAT(r.ROLE_NAME) roleName
-        FROM
-        t_user u
-        LEFT JOIN t_dept d ON (u.dept_id = d.dept_id)
-        LEFT JOIN t_user_role ur ON (u.user_id = ur.user_id)
-        LEFT JOIN t_role r ON r.role_id = ur.role_id
-        WHERE  u.username = #{username}
-        group by u.username,u.user_id,u.email,u.mobile,u.password, u.status,u.create_time,u.ssex,u.dept_id
-				,u.last_login_time,u.modify_time,u.description,u.avatar
+        SELECT u.user_id                 userId,
+               u.username,
+               u.email,
+               u.mobile,
+               u.password,
+               u.status,
+               u.create_time             createTime,
+               u.ssex                    sex,
+               u.dept_id                 deptId,
+               u.last_login_time         lastLoginTime,
+               u.modify_time             modifyTime,
+               u.description,
+               u.avatar,
+               d.dept_name               deptName,
+               GROUP_CONCAT(r.role_id)   roleId,
+               GROUP_CONCAT(r.ROLE_NAME) roleName,
+               u.realname
+        FROM t_user u
+                 LEFT JOIN t_dept d ON (u.dept_id = d.dept_id)
+                 LEFT JOIN t_user_role ur ON (u.user_id = ur.user_id)
+                 LEFT JOIN t_role r ON r.role_id = ur.role_id
+        WHERE u.username = #{username}
+        group by u.username, u.user_id, u.email, u.mobile, u.password, u.status, u.create_time, u.ssex, u.dept_id
+               , u.last_login_time, u.modify_time, u.description, u.avatar
     </select>
 
     <select id="findUserDataPermissions" parameterType="long" resultType="userDataPermission">
-        select user_id userId, dept_id deptId from t_user_data_permission
+        select user_id userId, dept_id deptId
+        from t_user_data_permission
         where user_id = #{userId}
     </select>
 </mapper>

+ 2 - 2
febs-cloud/docker compose/nacos/docker-compose.yml

@@ -10,11 +10,11 @@ services:
       - "SPRING_DATASOURCE_PLATFORM=mysql"
       - "MYSQL_MASTER_SERVICE_HOST=127.0.0.1"
       - "MYSQL_MASTER_SERVICE_DB_NAME=febs_nacos"
-      - "MYSQL_MASTER_SERVICE_PORT=3306"
+      - "MYSQL_MASTER_SERVICE_PORT=13306"
       - "MYSQL_MASTER_SERVICE_USER=root"
       - "MYSQL_MASTER_SERVICE_PASSWORD=123456"
       - "MYSQL_SLAVE_SERVICE_HOST=127.0.0.1"
-      - "MYSQL_SLAVE_SERVICE_PORT=3306"
+      - "MYSQL_SLAVE_SERVICE_PORT=13306"
     volumes:
       - /febs/nacos/standalone-logs/:/home/nacos/logs
       - /febs/nacos/custom.properties:/home/nacos/init.d/custom.properties

+ 1 - 1
febs-cloud/docker compose/third-part/docker-compose.yml

@@ -5,7 +5,7 @@ services:
     image: mysql:5.7.24
     container_name: mysql
     environment:
-      MYSQL_ROOT_PASSWORD: 123456
+      MYSQL_ROOT_PASSWORD: pass$123
     ports:
       - 3306:3306
     volumes:

+ 1 - 0
febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/entity/CurrentUser.java

@@ -38,6 +38,7 @@ public class CurrentUser implements Serializable {
     private String deptName;
     private String roleId;
     private String roleName;
+    private String realname;
     @JsonIgnore
     private Date lastLoginTime;
     private String description;

+ 2 - 0
febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/entity/FebsAuthUser.java

@@ -44,6 +44,8 @@ public class FebsAuthUser extends User {
 
     private String deptIds;
 
+    private String realname;
+
     public FebsAuthUser(String username, String password, Collection<? extends GrantedAuthority> authorities) {
         super(username, password, authorities);
     }

+ 18 - 0
febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/entity/FebsResponse.java

@@ -1,5 +1,7 @@
 package cc.mrbird.febs.common.core.entity;
 
+import org.springframework.http.HttpStatus;
+
 import java.util.HashMap;
 
 /**
@@ -9,6 +11,12 @@ public class FebsResponse extends HashMap<String, Object> {
 
     private static final long serialVersionUID = -8713837118340960775L;
 
+    public FebsResponse code(HttpStatus status) {
+        this.put("code", status.value());
+        return this;
+    }
+
+
     public FebsResponse message(String message) {
         this.put("message", message);
         return this;
@@ -25,6 +33,16 @@ public class FebsResponse extends HashMap<String, Object> {
         return this;
     }
 
+    public FebsResponse success() {
+        this.code(HttpStatus.OK);
+        return this;
+    }
+
+    public FebsResponse fail() {
+        this.code(HttpStatus.INTERNAL_SERVER_ERROR);
+        return this;
+    }
+
     public String getMessage() {
         return String.valueOf(get("message"));
     }

+ 8 - 0
febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/entity/system/SystemUser.java

@@ -147,6 +147,14 @@ public class SystemUser implements Serializable {
     @ExcelField(value = "个人描述")
     private String description;
 
+    /**
+     * 真实名称
+     */
+    @TableField("REALNAME")
+    @Size(max = 100, message = "{noMoreThan}")
+    @ExcelField(value = "真实名称")
+    private String realname;
+
     /**
      * 部门名称
      */

+ 1 - 1
febs-server/febs-server-generator/run.sh

@@ -1,4 +1,4 @@
 #!/usr/bin/env bash
 mvn package
 
-docker build -t febs-server-generator .
+docker build -t febs-server-generator .

+ 2 - 1
febs-server/febs-server-generator/src/main/java/cc/mrbird/febs/server/generator/controller/GeneratorController.java

@@ -49,12 +49,13 @@ public class GeneratorController {
     @PreAuthorize("hasAuthority('gen:generate')")
     public FebsResponse datasources() {
         Map<String, DataSourceProperty> datasources = properties.getDatasource();
+//        Map<String, DataSourceProperty> datasources = generatorService.getDatabases(GeneratorConstant.DATABASE_TYPE);
         List<String> datasourcesName = new ArrayList<>();
         datasources.forEach((k, v) -> {
             String datasourceName = StringUtils.substringBefore(StringUtils.substringAfterLast(v.getUrl(), "/"), "?");
             datasourcesName.add(datasourceName);
         });
-        return new FebsResponse().data(datasourcesName);
+        return new FebsResponse().data(generatorService.getDatabases(GeneratorConstant.DATABASE_TYPE));
     }
 
     @GetMapping("tables")

+ 1 - 1
febs-server/febs-server-job/run.sh

@@ -1,4 +1,4 @@
 #!/usr/bin/env bash
 mvn package
 
-docker build -t febs-server-job .
+docker build -t febs-server-job .

+ 1 - 1
febs-server/febs-server-system/run.sh

@@ -1,4 +1,4 @@
 #!/usr/bin/env bash
 mvn package
 
-docker build -t febs-server-system .
+docker build -t febs-server-system .

+ 50 - 0
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/UserController.java

@@ -8,16 +8,24 @@ import cc.mrbird.febs.common.core.entity.system.SystemUser;
 import cc.mrbird.febs.common.core.exception.FebsException;
 import cc.mrbird.febs.common.core.utils.FebsUtil;
 import cc.mrbird.febs.server.system.annotation.ControllerEndpoint;
+import cc.mrbird.febs.server.system.entity.ThirdPartyUser;
 import cc.mrbird.febs.server.system.service.ILoginLogService;
 import cc.mrbird.febs.server.system.service.IUserDataPermissionService;
 import cc.mrbird.febs.server.system.service.IUserService;
+import com.alibaba.fastjson.JSONObject;
 import com.wuwenze.poi.ExcelKit;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.ResponseEntity;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.client.RestTemplate;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -156,4 +164,46 @@ public class UserController {
         List<SystemUser> users = this.userService.findUserDetailList(user, queryRequest).getRecords();
         ExcelKit.$Export(SystemUser.class, response).downXlsx(users, false);
     }
+
+    /**
+     * 用于单点登录
+     *
+     * @param token
+     * @return
+     */
+    @RequestMapping("getThirdPartyUserInfo")
+    public ResponseEntity getThirdPartyUserInfo(String token) {
+        RestTemplate template = new RestTemplate();
+        String url = "http://zhzf.sipac.gov.cn/szyqaj/app/common/getToken";
+        MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<String, Object>();
+        paramMap.add("token", token);
+        HttpHeaders headers = new HttpHeaders();
+        headers.add("User-Agent", "Chrome/69.0.3497.81 Safari/537.36");
+        HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<MultiValueMap<String, Object>>(paramMap, headers);
+        ResponseEntity<String> response = template.postForEntity(url, httpEntity, String.class);
+        ThirdPartyUser user = JSONObject.parseObject(response.getBody(), ThirdPartyUser.class);
+        SystemUser u = new SystemUser();
+        u.setUsername(user.getUserId());
+        u.setPassword("gbd1234");
+        u.setSex(2 + "");
+        u.setStatus(1 + "");
+        u.setRealname(user.getName());
+        if (user.getUserId() == null) {//非法请求
+            return response;
+        } else if (this.userService.findByName(user.getUserId()) != null) {//查询是否已存在
+            return response;
+        } else if (user.getEnterpriseName() != null) {//企业用户
+            u.setRoleId(6 + "");
+        } else if (user.getPossession() != null) {//功能区用户
+            u.setRoleId(7 + "");
+        } else {//监管人员
+            u.setRoleId(5 + "");
+        }
+        u.setDeptIds("");
+        this.userService.createUser(u);
+//        String result = template.postForObject(url, paramMap, String.class);
+//        System.out.println("result1==================" + result);
+        return response;
+
+    }
 }

+ 17 - 0
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/entity/ThirdPartyUser.java

@@ -0,0 +1,17 @@
+package cc.mrbird.febs.server.system.entity;
+
+import lombok.Data;
+
+@Data
+public class ThirdPartyUser {
+
+    private String code;
+    private String message;
+    private String userId;
+    private String name;
+    private String enterpriseId;
+    private String enterpriseName;
+    private String possession;
+
+
+}

+ 1 - 0
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/UserServiceImpl.java

@@ -77,6 +77,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, SystemUser> impleme
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void createUser(SystemUser user) {
+        System.out.println(user);
         // 创建用户
         user.setCreateTime(new Date());
         user.setAvatar(SystemUser.DEFAULT_AVATAR);

+ 4 - 2
febs-server/febs-server-system/src/main/resources/mapper/UserMapper.xml

@@ -17,7 +17,8 @@
         u.avatar,
         d.dept_name deptName,
         GROUP_CONCAT(r.role_id) roleId,
-        GROUP_CONCAT(r.role_name) roleName
+        GROUP_CONCAT(r.role_name) roleName,
+        u.realname
         FROM
         t_user u
         LEFT JOIN t_dept d ON (u.dept_id = d.dept_id)
@@ -69,7 +70,8 @@
         u.avatar,
         d.dept_name deptName,
         GROUP_CONCAT(r.role_id) roleId,
-        GROUP_CONCAT(r.ROLE_NAME) roleName
+        GROUP_CONCAT(r.ROLE_NAME) roleName,
+        u.realname
         FROM
         t_user u
         LEFT JOIN t_dept d ON (u.dept_id = d.dept_id)

+ 1 - 1
febs-server/febs-server-test/run.sh

@@ -1,4 +1,4 @@
 #!/usr/bin/env bash
 mvn package
 
-docker build -t febs-server-test .
+docker build -t febs-server-test .

+ 6 - 0
febs-server/gbd-demp-data-exchange/Dockerfile

@@ -0,0 +1,6 @@
+FROM openjdk:8u212-jre
+MAINTAINER MrBird 852252810@qq.com
+
+COPY gbd-demp-data-exchange-2.2-RELEASE.jar /febs/gbd-demp-data-exchange-2.2-RELEASE.jar
+
+ENTRYPOINT ["java", "-Xmx256m", "-jar", "/febs/gbd-demp-data-exchange-2.2-RELEASE.jar"]

+ 54 - 0
febs-server/gbd-demp-data-exchange/pom.xml

@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>cc.mrbird</groupId>
+		<artifactId>febs-server</artifactId>
+		<version>2.2-RELEASE</version>
+		<relativePath>../pom.xml</relativePath>
+	</parent>
+	<artifactId>gbd-demp-data-exchange</artifactId>
+	<name>GBD-Demp-Data-Exchange</name>
+	<description>与安监、传感器进行交互</description>
+
+	<properties>
+		<java.version>1.8</java.version>
+		<febs-cloud.version>2.2-RELEASE</febs-cloud.version>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>cc.mrbird</groupId>
+			<artifactId>febs-common-core</artifactId>
+			<version>${febs-cloud.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>cc.mrbird</groupId>
+			<artifactId>febs-common-datasource-starter</artifactId>
+			<version>${febs-cloud.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>cc.mrbird</groupId>
+			<artifactId>febs-common-security-starter</artifactId>
+			<version>${febs-cloud.version}</version>
+		</dependency>
+		<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
+		<dependency>
+			<groupId>org.apache.httpcomponents</groupId>
+			<artifactId>httpclient</artifactId>
+			<version>4.5.12</version>
+		</dependency>
+
+	</dependencies>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>

+ 23 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/GbdDempDataExchangeApplication.java

@@ -0,0 +1,23 @@
+package com.gbd.demp.data.exchange;
+
+import cc.mrbird.febs.common.security.starter.annotation.EnableFebsCloudResourceServer;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.WebApplicationType;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.scheduling.annotation.EnableAsync;
+
+@SpringBootApplication
+@EnableFebsCloudResourceServer
+@EnableAsync
+@MapperScan("com.gbd.demp.data.exchange.mapper")
+public class GbdDempDataExchangeApplication {
+
+	public static void main(String[] args) {
+		new SpringApplicationBuilder(GbdDempDataExchangeApplication.class)
+				.web(WebApplicationType.SERVLET)
+				.run(args);
+	}
+
+}

+ 23 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/config/RestTemplateConfig.java

@@ -0,0 +1,23 @@
+package com.gbd.demp.data.exchange.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.client.ClientHttpRequestFactory;
+import org.springframework.http.client.SimpleClientHttpRequestFactory;
+import org.springframework.web.client.RestTemplate;
+
+@Configuration
+public class RestTemplateConfig {
+    @Bean
+    public RestTemplate restTemplate(ClientHttpRequestFactory factory){
+        return new RestTemplate(factory);
+    }
+
+    @Bean
+    public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
+        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
+        factory.setConnectTimeout(15000);
+        factory.setReadTimeout(5000);
+        return factory;
+    }
+}

+ 37 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/config/ThreadPoolTaskConfig.java

@@ -0,0 +1,37 @@
+package com.gbd.demp.data.exchange.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import java.util.concurrent.ThreadPoolExecutor;
+
+@Configuration
+@EnableAsync
+public class ThreadPoolTaskConfig {
+
+    private static final int corePoolSize = 10;               // 核心线程数(默认线程数)线程池创建时候初始化的线程数
+    private static final int maxPoolSize = 100;                // 最大线程数 线程池最大的线程数,只有在缓冲队列满了之后才会申请超过核心线程数的线程
+    private static final int keepAliveTime = 10;            // 允许线程空闲时间(单位:默认为秒)当超过了核心线程之外的线程在空闲时间到达之后会被销毁
+    private static final int queueCapacity = 200;            // 缓冲队列数 用来缓冲执行任务的队列
+    private static final String threadNamePrefix = "Async-Service-"; // 线程池名前缀 方便我们定位处理任务所在的线程池
+
+    @Bean("taskExecutor") // bean的名称,默认为首字母小写的方法名
+    public ThreadPoolTaskExecutor taskExecutor() {
+        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+        executor.setCorePoolSize(corePoolSize);
+        executor.setMaxPoolSize(maxPoolSize);
+        executor.setQueueCapacity(queueCapacity);
+        executor.setKeepAliveSeconds(keepAliveTime);
+        executor.setThreadNamePrefix(threadNamePrefix);
+
+        // 线程池对拒绝任务的处理策略 采用了CallerRunsPolicy策略,当线程池没有处理能力的时候,该策略会直接在 execute 方法的调用线程中运行被拒绝的任务;如果执行程序已关闭,则会丢弃该任务
+        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+        // 初始化
+        executor.initialize();
+        return executor;
+    }
+
+
+}

+ 106 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/controller/HistoryDataController.java

@@ -0,0 +1,106 @@
+package com.gbd.demp.data.exchange.controller;
+
+import cc.mrbird.febs.common.core.entity.FebsResponse;
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.common.core.exception.FebsException;
+import cc.mrbird.febs.common.core.utils.FebsUtil;
+import com.gbd.demp.data.exchange.entity.HistoryData;
+import com.gbd.demp.data.exchange.service.IHistoryDataService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.propertyeditors.CustomDateEditor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.WebDataBinder;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.context.request.WebRequest;
+
+import javax.validation.Valid;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * 传感器历史数据表 Controller
+ *
+ * @author yjj
+ * @date 2020-08-30 15:13:36
+ */
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/data/exchange/historyData")
+@RequiredArgsConstructor
+public class HistoryDataController {
+
+    private final IHistoryDataService historyDataService;
+
+    /**
+     * 处理日期
+     *
+     * @param binder
+     * @param request
+     */
+    @InitBinder
+    protected void init(WebDataBinder binder, WebRequest request) {
+        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
+    }
+
+
+    @GetMapping
+    @PreAuthorize("hasAuthority('historyData:list')")
+    public FebsResponse getAllHistoryDatas(HistoryData historyData) {
+        return new FebsResponse().data(historyDataService.findHistoryDatas(historyData));
+    }
+
+    @GetMapping("list")
+    @PreAuthorize("hasAuthority('historyData:list')")
+    public FebsResponse historyDataList(QueryRequest request, HistoryData historyData) {
+        Map<String, Object> dataTable = FebsUtil.getDataTable(this.historyDataService.findHistoryDatas(request, historyData));
+        return new FebsResponse().data(dataTable);
+    }
+
+    @PostMapping
+    @PreAuthorize("hasAuthority('historyData:add')")
+    public void addHistoryData(@Valid HistoryData historyData) throws FebsException {
+        try {
+            this.historyDataService.createHistoryData(historyData);
+        } catch (Exception e) {
+            String message = "新增HistoryData失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @DeleteMapping
+    @PreAuthorize("hasAuthority('historyData:delete')")
+    public void deleteHistoryData(HistoryData historyData) throws FebsException {
+        try {
+            this.historyDataService.deleteHistoryData(historyData);
+        } catch (Exception e) {
+            String message = "删除HistoryData失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @PutMapping
+    @PreAuthorize("hasAuthority('historyData:update')")
+    public void updateHistoryData(HistoryData historyData) throws FebsException {
+        try {
+            this.historyDataService.updateHistoryData(historyData);
+        } catch (Exception e) {
+            String message = "修改HistoryData失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @RequestMapping("getHistoryData")
+    @PreAuthorize("hasAuthority('historyData:list')")
+    public FebsResponse getHistoryData(@Valid HistoryData historyData, boolean switchValue) throws FebsException {
+        return new FebsResponse().data(this.historyDataService.getHistoryData(historyData, switchValue));
+    }
+}

+ 144 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/controller/LiveDataController.java

@@ -0,0 +1,144 @@
+package com.gbd.demp.data.exchange.controller;
+
+import cc.mrbird.febs.common.core.entity.FebsResponse;
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.common.core.exception.FebsException;
+import cc.mrbird.febs.common.core.utils.FebsUtil;
+import cc.mrbird.febs.common.core.utils.SortUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.gbd.demp.data.exchange.entity.DeviceInfo;
+import com.gbd.demp.data.exchange.entity.LiveData;
+import com.gbd.demp.data.exchange.entity.ServerAlarm;
+import com.gbd.demp.data.exchange.service.IDeviceInfoService;
+import com.gbd.demp.data.exchange.service.ILiveDataService;
+import com.gbd.demp.data.exchange.task.LiveDataTask;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.client.RestTemplate;
+
+import javax.validation.Valid;
+import java.util.Map;
+
+/**
+ * 实时数据表 Controller
+ *
+ * @author yjj
+ * @date 2020-08-30 15:13:37
+ */
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/data/exchange/liveData")
+@RequiredArgsConstructor
+public class LiveDataController {
+
+    private final ILiveDataService liveDataService;
+    @Autowired
+    private LiveDataTask liveDataTask;
+    @Autowired
+    private IDeviceInfoService deviceInfoService;
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @GetMapping
+    @PreAuthorize("hasAuthority('liveData:list')")
+    public FebsResponse getAllLiveDatas(LiveData liveData) {
+        return new FebsResponse().data(liveDataService.findLiveDatas(liveData));
+    }
+
+    @GetMapping("list")
+    @PreAuthorize("hasAuthority('liveData:list')")
+    public FebsResponse liveDataList(QueryRequest request, LiveData liveData) {
+        Map<String, Object> dataTable = FebsUtil.getDataTable(this.liveDataService.findLiveDatas(request, liveData));
+        return new FebsResponse().data(dataTable);
+    }
+
+    @PostMapping
+    @PreAuthorize("hasAuthority('liveData:add')")
+    public void addLiveData(@Valid LiveData liveData) throws FebsException {
+        try {
+            this.liveDataService.createLiveData(liveData);
+        } catch (Exception e) {
+            String message = "新增LiveData失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @DeleteMapping
+    @PreAuthorize("hasAuthority('liveData:delete')")
+    public void deleteLiveData(LiveData liveData) throws FebsException {
+        try {
+            this.liveDataService.deleteLiveData(liveData);
+        } catch (Exception e) {
+            String message = "删除LiveData失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @PutMapping
+    @PreAuthorize("hasAuthority('liveData:update')")
+    public void updateLiveData(LiveData liveData) throws FebsException {
+        try {
+            this.liveDataService.updateLiveData(liveData);
+        } catch (Exception e) {
+            String message = "修改LiveData失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @PostMapping("acceptLiveData")
+    public FebsResponse acceptLiveData(String liveData) throws FebsException {
+        try {
+//            this.liveDataService.acceptLiveData(liveData);
+            liveDataTask.alarmTask(liveData);
+            return new FebsResponse().success().message("上传成功!");
+        } catch (Exception e) {
+            String message = "上传实时数据失败";
+            log.error(message, e);
+            return new FebsResponse().fail().message(message);
+//            throw new FebsException(message);
+        }
+    }
+
+    /**
+     * 设备编号获取实时数据
+     *
+     * @param deviceId 设备编号
+     * @return
+     */
+
+    @GetMapping("/getLiveData")
+    @PreAuthorize("hasAuthority('liveData:list')")
+    public FebsResponse getLiveData(String deviceId) {
+        return new FebsResponse().data(this.liveDataService.getLiveData(deviceId));
+    }
+
+    @RequestMapping(value = "uploadLiveData", produces = "application/json;charset=UTF-8")
+    public FebsResponse uploadLiveData(@RequestBody Map<String, Object> liveData) {
+        try {
+            liveDataTask.liveTask(liveData);
+//            log.info("liveData:" + liveData);
+//            log.error("liveData:" + liveData);
+//            System.out.println("liveData:" + liveData);
+            return new FebsResponse().success().message("上传成功!");
+        } catch (Exception e) {
+            String message = "上传实时数据失败";
+            log.error(message, e);
+            return new FebsResponse().fail().message(message);
+//            throw new FebsException(message);
+        }
+    }
+
+
+}

+ 85 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/entity/AlarmEvent.java

@@ -0,0 +1,85 @@
+package com.gbd.demp.data.exchange.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 lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 告警事件表 Entity
+ *
+ * @author yjj
+ * @date 2020-09-08 14:53:36
+ */
+@Data
+@TableName("t_alarm_event")
+public class AlarmEvent {
+
+    /**
+     *
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 设备id
+     */
+    @TableField("device_id")
+    private String deviceId;
+
+    /**
+     * 传感器id
+     */
+    @TableField("sensor_id")
+    private String sensorId;
+
+    /**
+     * 告警级别
+     */
+    @TableField("alarm_level")
+    private String alarmLevel;
+
+    /**
+     *
+     */
+    @TableField("alarm_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date alarmTime;
+
+    /**
+     * 事件处理状态
+     */
+    @TableField("event_status")
+    private Integer eventStatus;
+
+    /**
+     *
+     */
+    @TableField("finish_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date finishTime;
+
+    /**
+     * 是否上报
+     */
+    @TableField("isReport")
+    private Integer isreport;
+
+    /**
+     * 告警原因
+     */
+    @TableField("reason")
+    private Integer reason;
+
+
+    /**
+     * 安监平台id
+     */
+    @TableField("third_party_id")
+    private String thirdPartyId;
+
+}

+ 111 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/entity/DeviceInfo.java

@@ -0,0 +1,111 @@
+package com.gbd.demp.data.exchange.entity;
+
+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 lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 设备信息表 Entity
+ *
+ * @author yjj
+ * @date 2020-09-02 14:08:03
+ */
+@Data
+@TableName("t_device_info")
+public class DeviceInfo {
+
+    /**
+     * 设备编号
+     */
+    @TableId(value = "device_id")
+    private String deviceId;
+
+    /**
+     * 设备名称
+     */
+    @TableField("device_name")
+    private String deviceName;
+
+    /**
+     * 设备启用日期
+     */
+    @TableField("device_start_date")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date deviceStartDate;
+
+    /**
+     * 所属行业编码
+     */
+    @TableField("industry_code")
+    private String industryCode;
+
+    /**
+     * 粉尘类别编码
+     */
+    @TableField("dust_type")
+    private String dustType;
+
+    /**
+     * 所属企业id
+     */
+    @TableField("company_id")
+    private String companyId;
+
+    /**
+     * 所属企业名称
+     */
+    @TableField("company_name")
+    private String companyName;
+
+
+    /**
+     * 设备位置信息描述
+     */
+    @TableField("device_location")
+    private String deviceLocation;
+
+
+    /**
+     * 功能区
+     */
+    @TableField("possession")
+    private String possession;
+
+    /**
+     * 工作起始时间
+     */
+    @TableField("work_time_from")
+    private String workTimeFrom;
+
+
+    /**
+     * 工作结束时间
+     */
+    @TableField("work_time_to")
+    private String workTimeTo;
+
+    /**
+     * 经度
+     */
+    @TableField("longitude")
+    private String longitude;
+
+    /**
+     * 纬度
+     */
+    @TableField("latitude")
+    private String latitude;
+
+
+
+    @TableField(exist = false)
+    private String startTimeFrom;
+    @TableField(exist = false)
+    private String startTimeTo;
+
+
+}

+ 55 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/entity/DeviceThreshold.java

@@ -0,0 +1,55 @@
+package com.gbd.demp.data.exchange.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 lombok.Data;
+
+/**
+ * 设备(传感器)阈值设置 Entity
+ *
+ * @author yjj
+ * @date 2020-09-08 14:53:46
+ */
+@Data
+@TableName("t_device_threshold")
+public class DeviceThreshold {
+
+    /**
+     *
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 设备(传感器)编号
+     */
+    @TableField("device_id")
+    private String deviceId;
+
+    /**
+     * 设备(传感器)编号
+     */
+    @TableField("sensor_id")
+    private String sensorId;
+
+    /**
+     * 状态码
+     */
+    @TableField("code")
+    private String code;
+
+    /**
+     * 低值
+     */
+    @TableField("low_value")
+    private Double lowValue;
+
+    /**
+     * 高值
+     */
+    @TableField("high_value")
+    private Double highValue;
+
+}

+ 62 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/entity/HistoryData.java

@@ -0,0 +1,62 @@
+package com.gbd.demp.data.exchange.entity;
+
+import lombok.Data;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+ * 传感器历史数据表 Entity
+ *
+ * @author yjj
+ * @date 2020-08-30 15:13:36
+ */
+@Data
+@TableName("t_history_data")
+public class HistoryData {
+
+    /**
+     *
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 设备编号
+     */
+    @TableField("device_id")
+    private String deviceId;
+
+    /**
+     * 传感器id
+     */
+    @TableField("sensor_id")
+    private String sensorId;
+
+
+    /**
+     * 传感器值
+     */
+    @TableField("data_value")
+    private Double dataValue;
+
+    /**
+     * 上报时间
+     */
+    @TableField("report_time")
+    private String reportTime;
+
+    /**
+     * 数据状态
+     */
+    @TableField("status")
+    private int status;
+
+    @TableField(exist = false)
+    private String startTimeFrom;
+    @TableField(exist = false)
+    private String startTimeTo;
+
+
+}

+ 59 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/entity/LiveData.java

@@ -0,0 +1,59 @@
+package com.gbd.demp.data.exchange.entity;
+
+import lombok.Data;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+ * 实时数据表 Entity
+ *
+ * @author yjj
+ * @date 2020-08-30 15:13:37
+ */
+@Data
+@TableName("t_live_data")
+public class LiveData {
+
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+
+    /**
+     * 传感器id
+     */
+    @TableId("sensor_id")
+    private String sensorId;
+
+    /**
+     * 设备编号
+     */
+    @TableField("device_id")
+    private String deviceId;
+
+
+    /**
+     * 数据(传感器)值
+     */
+    @TableField("data_value")
+    private Double dataValue;
+
+    /**
+     * 上报时间
+     */
+    @TableField("report_time")
+    private String reportTime;
+
+    /**
+     * 数据状态
+     */
+    @TableField("status")
+    private int status;
+
+
+}

+ 49 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/entity/SensorInfo.java

@@ -0,0 +1,49 @@
+package com.gbd.demp.data.exchange.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 lombok.Data;
+
+/**
+*  Entity
+*
+* @author yjj
+* @date 2020-09-17 16:18:11
+*/
+@Data
+@TableName("t_sensor_info")
+public class SensorInfo {
+
+    /**
+     * 
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 传感器id
+     */
+    @TableField("sensor_id")
+    private String sensorId;
+
+    /**
+     * 所属设备id
+     */
+    @TableField("device_id")
+    private String deviceId;
+
+    /**
+     * 传感器名称
+     */
+    @TableField("sensor_name")
+    private String sensorName;
+
+    /**
+     * 传感器单位
+     */
+    @TableField("sensor_unit")
+    private String sensorUnit;
+
+}

+ 27 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/entity/ServerAlarm.java

@@ -0,0 +1,27 @@
+package com.gbd.demp.data.exchange.entity;
+
+import lombok.Data;
+
+@Data
+public class ServerAlarm {
+    //token
+    private String token;
+    //企业id
+    private String companyId;
+    //企业名称
+    private String companyName;
+    //告警类型
+    private String alarmType;
+    //告警设备
+    private String alarmDevice;
+    //告警值
+    private String alarmData;
+    //告警值单位
+    private String dataUnit;
+    //告警级别
+    private String dataLevel;
+    //告警时间
+    private String alarmTime;
+
+
+}

+ 27 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/mapper/AlarmEventMapper.java

@@ -0,0 +1,27 @@
+package com.gbd.demp.data.exchange.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gbd.demp.data.exchange.entity.AlarmEvent;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 告警事件表 Mapper
+ *
+ * @author yjj
+ * @date 2020-09-08 14:53:36
+ */
+public interface AlarmEventMapper extends BaseMapper<AlarmEvent> {
+
+    /**
+     * 检查8小时内有没有告警数据
+     *
+     * @param deviceId
+     * @param sensorId
+     * @return
+     */
+    AlarmEvent checkExist(@Param("deviceId") String deviceId, @Param("sensorId") String sensorId);
+
+
+    int updateAlarm(@Param("alarmLevel") String alarmLevel, @Param("id") Long id);
+
+}

+ 21 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/mapper/DeviceInfoMapper.java

@@ -0,0 +1,21 @@
+package com.gbd.demp.data.exchange.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gbd.demp.data.exchange.entity.DeviceInfo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 设备信息表 Mapper
+ *
+ * @author yjj
+ * @date 2020-09-02 14:08:03
+ */
+public interface DeviceInfoMapper extends BaseMapper<DeviceInfo> {
+
+    DeviceInfo getDeviceInfoById(@Param("deviceId") String deviceId);
+
+    <T> IPage<DeviceInfo> findAllDeviceInfoPage(Page<T> page, @Param("deviceInfo") DeviceInfo deviceInfo);
+
+}

+ 34 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/mapper/DeviceThresholdMapper.java

@@ -0,0 +1,34 @@
+package com.gbd.demp.data.exchange.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gbd.demp.data.exchange.entity.DeviceThreshold;
+import org.apache.ibatis.annotations.Param;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 设备(传感器)阈值设置 Mapper
+ *
+ * @author yjj
+ * @date 2020-09-08 14:53:46
+ */
+public interface DeviceThresholdMapper extends BaseMapper<DeviceThreshold> {
+
+    <T> IPage<DeviceThreshold> findDeviceThresholds(Page<T> page, @Param("deviceThreshold") DeviceThreshold deviceThreshold);
+
+    List<DeviceThreshold> getThresholdsBySensorID(@Param("id") String id);
+
+    /**
+     * 获取阈值信息 用于历史数据绘图
+     *
+     * @param deviceThreshold
+     * @return
+     */
+    List<DeviceThreshold> getForHistoryChart(@Param("deviceId") String deviceId, @Param("sensorId") String sensorId);
+
+
+}

+ 22 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/mapper/HistoryDataMapper.java

@@ -0,0 +1,22 @@
+package com.gbd.demp.data.exchange.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gbd.demp.data.exchange.entity.HistoryData;
+import org.apache.ibatis.annotations.Param;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 传感器历史数据表 Mapper
+ *
+ * @author yjj
+ * @date 2020-08-30 15:13:36
+ */
+public interface HistoryDataMapper extends BaseMapper<HistoryData> {
+
+    List<HistoryData> getHistoryData(@Param("historyData") HistoryData historyData, @Param("switchValue") boolean switchValue);
+
+
+}

+ 28 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/mapper/LiveDataMapper.java

@@ -0,0 +1,28 @@
+package com.gbd.demp.data.exchange.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gbd.demp.data.exchange.entity.LiveData;
+import com.gbd.demp.data.exchange.vo.LiveDataVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 实时数据表 Mapper
+ *
+ * @author yjj
+ * @date 2020-08-30 15:13:37
+ */
+public interface LiveDataMapper extends BaseMapper<LiveData> {
+
+    int acceptLiveData(@Param("data") LiveData data);
+
+    int updateLiveData(@Param("data") LiveData data);
+
+    List<LiveDataVO> getLiveData( @Param("deviceId") String deviceId);
+
+    int checkExist(@Param("deviceId") String deviceId, @Param("sensorId") String sensorId);
+
+}

+ 29 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/mapper/SensorInfoMapper.java

@@ -0,0 +1,29 @@
+package com.gbd.demp.data.exchange.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gbd.demp.data.exchange.entity.SensorInfo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * Mapper
+ *
+ * @author yjj
+ * @date 2020-09-17 16:18:11
+ */
+public interface SensorInfoMapper extends BaseMapper<SensorInfo> {
+
+    <T> IPage<SensorInfo> findAllSensorInfoPage(Page<T> page, @Param("sensorInfo") SensorInfo sensorInfo);
+
+    SensorInfo getBySensorId(@Param("sensorId") String sensorId, @Param("deviceId") String deviceId);
+
+    /**
+     * 根据设备编号查询传感器数量
+     *
+     * @param deviceId
+     * @return
+     */
+    int getSensorCount(@Param("deviceId") String deviceId);
+
+}

+ 27 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/runner/StartedUpRunner.java

@@ -0,0 +1,27 @@
+package com.gbd.demp.data.exchange.runner;
+
+import cc.mrbird.febs.common.core.utils.FebsUtil;
+import lombok.RequiredArgsConstructor;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author MrBird
+ */
+@Component
+@RequiredArgsConstructor
+public class StartedUpRunner implements ApplicationRunner {
+
+    private final ConfigurableApplicationContext context;
+    private final Environment environment;
+
+    @Override
+    public void run(ApplicationArguments args) {
+        if (context.isActive()) {
+            FebsUtil.printSystemUpBanner(environment);
+        }
+    }
+}

+ 54 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/IAlarmEventService.java

@@ -0,0 +1,54 @@
+package com.gbd.demp.data.exchange.service;
+
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gbd.demp.data.exchange.entity.AlarmEvent;
+
+import java.util.List;
+
+/**
+ * 告警事件表 Service接口
+ *
+ * @author yjj
+ * @date 2020-09-08 14:53:36
+ */
+public interface IAlarmEventService extends IService<AlarmEvent> {
+    /**
+     * 查询(分页)
+     *
+     * @param request QueryRequest
+     * @param alarmEvent alarmEvent
+     * @return IPage<AlarmEvent>
+     */
+    IPage<AlarmEvent> findAlarmEvents(QueryRequest request, AlarmEvent alarmEvent);
+
+    /**
+     * 查询(所有)
+     *
+     * @param alarmEvent alarmEvent
+     * @return List<AlarmEvent>
+     */
+    List<AlarmEvent> findAlarmEvents(AlarmEvent alarmEvent);
+
+    /**
+     * 新增
+     *
+     * @param alarmEvent alarmEvent
+     */
+    void createAlarmEvent(AlarmEvent alarmEvent);
+
+    /**
+     * 修改
+     *
+     * @param alarmEvent alarmEvent
+     */
+    void updateAlarmEvent(AlarmEvent alarmEvent);
+
+    /**
+     * 删除
+     *
+     * @param alarmEvent alarmEvent
+     */
+    void deleteAlarmEvent(AlarmEvent alarmEvent);
+}

+ 26 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/IDeviceInfoService.java

@@ -0,0 +1,26 @@
+package com.gbd.demp.data.exchange.service;
+
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gbd.demp.data.exchange.entity.DeviceInfo;
+
+import java.util.List;
+
+/**
+ * 设备信息表 Service接口
+ *
+ * @author yjj
+ * @date 2020-09-02 14:08:03
+ */
+public interface IDeviceInfoService extends IService<DeviceInfo> {
+    /**
+     * 根据设备id获取设备信息
+     *
+     * @param deviceId
+     * @return
+     */
+    DeviceInfo getDeviceInfoById(String deviceId);
+
+    IPage<DeviceInfo> findDeviceInfos(QueryRequest request, DeviceInfo deviceInfo);
+}

+ 58 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/IDeviceThresholdService.java

@@ -0,0 +1,58 @@
+package com.gbd.demp.data.exchange.service;
+
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gbd.demp.data.exchange.entity.DeviceThreshold;
+
+import java.util.List;
+
+/**
+ * 设备(传感器)阈值设置 Service接口
+ *
+ * @author yjj
+ * @date 2020-09-08 14:53:46
+ */
+public interface IDeviceThresholdService extends IService<DeviceThreshold> {
+    /**
+     * 查询(分页)
+     *
+     * @param request QueryRequest
+     * @param deviceThreshold deviceThreshold
+     * @return IPage<DeviceThreshold>
+     */
+    IPage<DeviceThreshold> findDeviceThresholds(QueryRequest request, DeviceThreshold deviceThreshold);
+
+    /**
+     * 查询(所有)
+     *
+     * @param deviceThreshold deviceThreshold
+     * @return List<DeviceThreshold>
+     */
+    List<DeviceThreshold> findDeviceThresholds(DeviceThreshold deviceThreshold);
+
+    /**
+     * 新增
+     *
+     * @param deviceThreshold deviceThreshold
+     */
+    void createDeviceThreshold(DeviceThreshold deviceThreshold);
+
+    /**
+     * 修改
+     *
+     * @param deviceThreshold deviceThreshold
+     */
+    void updateDeviceThreshold(DeviceThreshold deviceThreshold);
+
+    /**
+     * 删除
+     *
+     * @param deviceThreshold deviceThreshold
+     */
+    void deleteDeviceThreshold(DeviceThreshold deviceThreshold);
+
+    List<DeviceThreshold> getThresholdsBySensorID(String id);
+
+    List<DeviceThreshold> getForHistoryChart(String deviceId,String sensorId);
+}

+ 58 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/IHistoryDataService.java

@@ -0,0 +1,58 @@
+package com.gbd.demp.data.exchange.service;
+
+
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gbd.demp.data.exchange.entity.HistoryData;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 传感器历史数据表 Service接口
+ *
+ * @author yjj
+ * @date 2020-08-30 15:13:36
+ */
+public interface IHistoryDataService extends IService<HistoryData> {
+    /**
+     * 查询(分页)
+     *
+     * @param request QueryRequest
+     * @param historyData historyData
+     * @return IPage<HistoryData>
+     */
+    IPage<HistoryData> findHistoryDatas(QueryRequest request, HistoryData historyData);
+
+    /**
+     * 查询(所有)
+     *
+     * @param historyData historyData
+     * @return List<HistoryData>
+     */
+    List<HistoryData> findHistoryDatas(HistoryData historyData);
+
+    /**
+     * 新增
+     *
+     * @param historyData historyData
+     */
+    void createHistoryData(HistoryData historyData);
+
+    /**
+     * 修改
+     *
+     * @param historyData historyData
+     */
+    void updateHistoryData(HistoryData historyData);
+
+    /**
+     * 删除
+     *
+     * @param historyData historyData
+     */
+    void deleteHistoryData(HistoryData historyData);
+
+    Map getHistoryData(HistoryData historyData,boolean switchValue);
+}

+ 60 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/ILiveDataService.java

@@ -0,0 +1,60 @@
+package com.gbd.demp.data.exchange.service;
+
+
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gbd.demp.data.exchange.entity.LiveData;
+import com.gbd.demp.data.exchange.vo.LiveDataVO;
+
+import java.util.List;
+
+/**
+ * 实时数据表 Service接口
+ *
+ * @author yjj
+ * @date 2020-08-30 15:13:37
+ */
+public interface ILiveDataService extends IService<LiveData> {
+    /**
+     * 查询(分页)
+     *
+     * @param request  QueryRequest
+     * @param liveData liveData
+     * @return IPage<LiveData>
+     */
+    IPage<LiveData> findLiveDatas(QueryRequest request, LiveData liveData);
+
+    /**
+     * 查询(所有)
+     *
+     * @param liveData liveData
+     * @return List<LiveData>
+     */
+    List<LiveData> findLiveDatas(LiveData liveData);
+
+    /**
+     * 新增
+     *
+     * @param liveData liveData
+     */
+    void createLiveData(LiveData liveData);
+
+    /**
+     * 修改
+     *
+     * @param liveData liveData
+     */
+    void updateLiveData(LiveData liveData);
+
+    /**
+     * 删除
+     *
+     * @param liveData liveData
+     */
+    void deleteLiveData(LiveData liveData);
+
+    void acceptLiveData(LiveData liveData);
+
+    List<LiveDataVO> getLiveData(String deviceId);
+}

+ 58 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/ISensorInfoService.java

@@ -0,0 +1,58 @@
+package com.gbd.demp.data.exchange.service;
+
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gbd.demp.data.exchange.entity.SensorInfo;
+
+import java.util.List;
+
+/**
+ *  Service接口
+ *
+ * @author yjj
+ * @date 2020-09-17 16:18:11
+ */
+public interface ISensorInfoService extends IService<SensorInfo> {
+    /**
+     * 查询(分页)
+     *
+     * @param request QueryRequest
+     * @param sensorInfo sensorInfo
+     * @return IPage<SensorInfo>
+     */
+    IPage<SensorInfo> findSensorInfos(QueryRequest request, SensorInfo sensorInfo);
+
+    /**
+     * 查询(所有)
+     *
+     * @param sensorInfo sensorInfo
+     * @return List<SensorInfo>
+     */
+    List<SensorInfo> findSensorInfos(SensorInfo sensorInfo);
+
+    /**
+     * 新增
+     *
+     * @param sensorInfo sensorInfo
+     */
+    void createSensorInfo(SensorInfo sensorInfo);
+
+    /**
+     * 修改
+     *
+     * @param sensorInfo sensorInfo
+     */
+    void updateSensorInfo(SensorInfo sensorInfo);
+
+    /**
+     * 删除
+     *
+     * @param id id
+     */
+    void deleteSensorInfo(Long id);
+
+    SensorInfo getBySensorId(String sensorId,String deviceId);
+
+    int getSensorCount(String deviceId);
+}

+ 65 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/impl/AlarmEventServiceImpl.java

@@ -0,0 +1,65 @@
+package com.gbd.demp.data.exchange.service.impl;
+
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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.gbd.demp.data.exchange.entity.AlarmEvent;
+import com.gbd.demp.data.exchange.mapper.AlarmEventMapper;
+import com.gbd.demp.data.exchange.service.IAlarmEventService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 告警事件表 Service实现
+ *
+ * @author yjj
+ * @date 2020-09-08 14:53:36
+ */
+@Service
+@RequiredArgsConstructor
+@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
+public class AlarmEventServiceImpl extends ServiceImpl<AlarmEventMapper, AlarmEvent> implements IAlarmEventService {
+
+    private final AlarmEventMapper alarmEventMapper;
+
+    @Override
+    public IPage<AlarmEvent> findAlarmEvents(QueryRequest request, AlarmEvent alarmEvent) {
+        LambdaQueryWrapper<AlarmEvent> queryWrapper = new LambdaQueryWrapper<>();
+        // TODO 设置查询条件
+        Page<AlarmEvent> page = new Page<>(request.getPageNum(), request.getPageSize());
+        return this.page(page, queryWrapper);
+    }
+
+    @Override
+    public List<AlarmEvent> findAlarmEvents(AlarmEvent alarmEvent) {
+        LambdaQueryWrapper<AlarmEvent> queryWrapper = new LambdaQueryWrapper<>();
+        // TODO 设置查询条件
+        return this.baseMapper.selectList(queryWrapper);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void createAlarmEvent(AlarmEvent alarmEvent) {
+        this.save(alarmEvent);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateAlarmEvent(AlarmEvent alarmEvent) {
+        this.saveOrUpdate(alarmEvent);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteAlarmEvent(AlarmEvent alarmEvent) {
+        LambdaQueryWrapper<AlarmEvent> wapper = new LambdaQueryWrapper<>();
+        // TODO 设置删除条件
+        this.remove(wapper);
+    }
+}

+ 49 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/impl/DeviceInfoServiceImpl.java

@@ -0,0 +1,49 @@
+package com.gbd.demp.data.exchange.service.impl;
+
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.common.core.entity.constant.FebsConstant;
+import cc.mrbird.febs.common.core.utils.SortUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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.gbd.demp.data.exchange.entity.DeviceInfo;
+import com.gbd.demp.data.exchange.mapper.DeviceInfoMapper;
+import com.gbd.demp.data.exchange.service.IDeviceInfoService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 设备信息表 Service实现
+ *
+ * @author yjj
+ * @date 2020-09-02 14:08:03
+ */
+@Service
+@RequiredArgsConstructor
+@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
+public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceInfo> implements IDeviceInfoService {
+
+    private final DeviceInfoMapper deviceInfoMapper;
+
+
+    @Override
+    public DeviceInfo getDeviceInfoById(String deviceId) {
+        return this.baseMapper.getDeviceInfoById(deviceId);
+    }
+
+    @Override
+    public IPage<DeviceInfo> findDeviceInfos(QueryRequest request, DeviceInfo deviceInfo) {
+        // TODO 设置查询条件
+        Page<DeviceInfo> page = new Page<>(request.getPageNum(), request.getPageSize());
+        SortUtil.handlePageSort(request, page, "device_id", FebsConstant.ORDER_DESC, false);
+        return this.baseMapper.findAllDeviceInfoPage(page, deviceInfo);
+    }
+
+
+
+}

+ 79 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/impl/DeviceThresholdServiceImpl.java

@@ -0,0 +1,79 @@
+package com.gbd.demp.data.exchange.service.impl;
+
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.common.core.entity.constant.FebsConstant;
+import cc.mrbird.febs.common.core.utils.SortUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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.gbd.demp.data.exchange.entity.DeviceThreshold;
+import com.gbd.demp.data.exchange.mapper.DeviceThresholdMapper;
+import com.gbd.demp.data.exchange.service.IDeviceThresholdService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 设备(传感器)阈值设置 Service实现
+ *
+ * @author yjj
+ * @date 2020-09-08 14:53:46
+ */
+@Service
+@RequiredArgsConstructor
+@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
+public class DeviceThresholdServiceImpl extends ServiceImpl<DeviceThresholdMapper, DeviceThreshold> implements IDeviceThresholdService {
+
+    private final DeviceThresholdMapper deviceThresholdMapper;
+
+    @Override
+    public IPage<DeviceThreshold> findDeviceThresholds(QueryRequest request, DeviceThreshold deviceThreshold) {
+//        LambdaQueryWrapper<DeviceThreshold> queryWrapper = new LambdaQueryWrapper<>();
+        // TODO 设置查询条件
+        Page<DeviceThreshold> page = new Page<>(request.getPageNum(), request.getPageSize());
+        SortUtil.handlePageSort(request, page, "device_id", FebsConstant.ORDER_ASC, false);
+        return this.baseMapper.findDeviceThresholds(page, deviceThreshold);
+    }
+
+    @Override
+    public List<DeviceThreshold> findDeviceThresholds(DeviceThreshold deviceThreshold) {
+        LambdaQueryWrapper<DeviceThreshold> queryWrapper = new LambdaQueryWrapper<>();
+        // TODO 设置查询条件
+        return this.baseMapper.selectList(queryWrapper);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void createDeviceThreshold(DeviceThreshold deviceThreshold) {
+        this.save(deviceThreshold);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateDeviceThreshold(DeviceThreshold deviceThreshold) {
+        this.saveOrUpdate(deviceThreshold);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteDeviceThreshold(DeviceThreshold deviceThreshold) {
+        LambdaQueryWrapper<DeviceThreshold> wapper = new LambdaQueryWrapper<>();
+        // TODO 设置删除条件
+        this.remove(wapper);
+    }
+
+    @Override
+    public List<DeviceThreshold> getThresholdsBySensorID(String id) {
+        return this.baseMapper.getThresholdsBySensorID(id);
+    }
+
+    @Override
+    public List<DeviceThreshold> getForHistoryChart(String deviceId,String sensorId) {
+        return this.baseMapper.getForHistoryChart(deviceId,sensorId);
+    }
+
+}

+ 95 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/impl/HistoryDataServiceImpl.java

@@ -0,0 +1,95 @@
+package com.gbd.demp.data.exchange.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.gbd.demp.data.exchange.entity.DeviceThreshold;
+import com.gbd.demp.data.exchange.entity.HistoryData;
+import com.gbd.demp.data.exchange.mapper.HistoryDataMapper;
+import com.gbd.demp.data.exchange.service.IDeviceThresholdService;
+import com.gbd.demp.data.exchange.service.IHistoryDataService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.annotation.Propagation;
+import lombok.RequiredArgsConstructor;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import rx.schedulers.TimeInterval;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 传感器历史数据表 Service实现
+ *
+ * @author yjj
+ * @date 2020-08-30 15:13:36
+ */
+@Service
+@RequiredArgsConstructor
+@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
+public class HistoryDataServiceImpl extends ServiceImpl<HistoryDataMapper, HistoryData> implements IHistoryDataService {
+
+    private final HistoryDataMapper historyDataMapper;
+    private final IDeviceThresholdService deviceThresholdService;
+
+    @Override
+    public IPage<HistoryData> findHistoryDatas(QueryRequest request, HistoryData historyData) {
+        LambdaQueryWrapper<HistoryData> queryWrapper = new LambdaQueryWrapper<>();
+        // TODO 设置查询条件
+        Page<HistoryData> page = new Page<>(request.getPageNum(), request.getPageSize());
+        return this.page(page, queryWrapper);
+    }
+
+    @Override
+    public List<HistoryData> findHistoryDatas(HistoryData historyData) {
+        LambdaQueryWrapper<HistoryData> queryWrapper = new LambdaQueryWrapper<>();
+        // TODO 设置查询条件
+        return this.baseMapper.selectList(queryWrapper);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void createHistoryData(HistoryData historyData) {
+        this.save(historyData);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateHistoryData(HistoryData historyData) {
+        this.saveOrUpdate(historyData);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteHistoryData(HistoryData historyData) {
+        LambdaQueryWrapper<HistoryData> wapper = new LambdaQueryWrapper<>();
+        // TODO 设置删除条件
+        this.remove(wapper);
+    }
+
+    /**
+     * 获取历史数据,用于统计图,如果没有传起始时间,则默认最近一分钟数据
+     *
+     * @param historyData
+     * @return
+     */
+    @Override
+    public Map getHistoryData(HistoryData historyData, boolean switchValue) {
+        Map map = new HashMap();
+        List<HistoryData> data = this.baseMapper.getHistoryData(historyData, switchValue);
+        List<DeviceThreshold> thresholds = deviceThresholdService.getForHistoryChart(historyData.getDeviceId(), historyData.getSensorId());
+        String[] time = new String[data.size()];//上报时间,统计图横坐标
+        double[] data_ = new double[data.size()];//数据,统计图纵坐标
+        for (int i = 0; i < data.size(); i++) {
+            time[i] = data.get(i).getReportTime();
+            data_[i] = data.get(i).getDataValue();
+        }
+        map.put("reportTime", time);
+        map.put("dataValue", data_);
+        map.put("thresholds", thresholds);
+        return map;
+    }
+}

+ 101 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/impl/LiveDataServiceImpl.java

@@ -0,0 +1,101 @@
+package com.gbd.demp.data.exchange.service.impl;
+
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.common.core.entity.constant.FebsConstant;
+import cc.mrbird.febs.common.core.utils.SortUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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.gbd.demp.data.exchange.entity.HistoryData;
+import com.gbd.demp.data.exchange.entity.LiveData;
+import com.gbd.demp.data.exchange.mapper.LiveDataMapper;
+import com.gbd.demp.data.exchange.service.IHistoryDataService;
+import com.gbd.demp.data.exchange.service.ILiveDataService;
+import com.gbd.demp.data.exchange.utils.CommonUtils;
+import com.gbd.demp.data.exchange.vo.LiveDataVO;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 实时数据表 Service实现
+ *
+ * @author yjj
+ * @date 2020-08-30 15:13:37
+ */
+@Service
+@RequiredArgsConstructor
+@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
+public class LiveDataServiceImpl extends ServiceImpl<LiveDataMapper, LiveData> implements ILiveDataService {
+
+    private final LiveDataMapper liveDataMapper;
+    @Autowired
+    private final IHistoryDataService historyDataService;
+
+    @Override
+    public IPage<LiveData> findLiveDatas(QueryRequest request, LiveData liveData) {
+        LambdaQueryWrapper<LiveData> queryWrapper = new LambdaQueryWrapper<>();
+        // TODO 设置查询条件
+        Page<LiveData> page = new Page<>(request.getPageNum(), request.getPageSize());
+        SortUtil.handlePageSort(request, page, "id", FebsConstant.ORDER_DESC, false);
+        return this.page(page, queryWrapper);
+    }
+
+    @Override
+    public List<LiveData> findLiveDatas(LiveData liveData) {
+        LambdaQueryWrapper<LiveData> queryWrapper = new LambdaQueryWrapper<>();
+        // TODO 设置查询条件
+        return this.baseMapper.selectList(queryWrapper);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void createLiveData(LiveData liveData) {
+        this.save(liveData);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateLiveData(LiveData liveData) {
+        this.saveOrUpdate(liveData);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteLiveData(LiveData liveData) {
+        LambdaQueryWrapper<LiveData> wapper = new LambdaQueryWrapper<>();
+        // TODO 设置删除条件
+        this.remove(wapper);
+    }
+
+    /**
+     * @param liveData
+     */
+    @Override
+    public void acceptLiveData(LiveData liveData) {
+        try {
+            if (this.baseMapper.checkExist(liveData.getDeviceId(), liveData.getSensorId()) > 0) {//如果存在,更新数据
+                this.baseMapper.updateLiveData(liveData);
+            } else
+                this.save(liveData);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+
+    }
+
+    @Override
+    public List<LiveDataVO> getLiveData(String deviceId) {
+        return this.baseMapper.getLiveData(deviceId);
+    }
+
+
+}

+ 77 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/service/impl/SensorInfoServiceImpl.java

@@ -0,0 +1,77 @@
+package com.gbd.demp.data.exchange.service.impl;
+
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.common.core.entity.constant.FebsConstant;
+import cc.mrbird.febs.common.core.utils.SortUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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.gbd.demp.data.exchange.entity.SensorInfo;
+import com.gbd.demp.data.exchange.mapper.SensorInfoMapper;
+import com.gbd.demp.data.exchange.service.ISensorInfoService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * Service实现
+ *
+ * @author yjj
+ * @date 2020-09-17 16:18:11
+ */
+@Service
+@RequiredArgsConstructor
+@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
+public class SensorInfoServiceImpl extends ServiceImpl<SensorInfoMapper, SensorInfo> implements ISensorInfoService {
+
+    private final SensorInfoMapper sensorInfoMapper;
+
+    @Override
+    public IPage<SensorInfo> findSensorInfos(QueryRequest request, SensorInfo sensorInfo) {
+        LambdaQueryWrapper<SensorInfo> queryWrapper = new LambdaQueryWrapper<>();
+        // TODO 设置查询条件
+        Page<SensorInfo> page = new Page<>(request.getPageNum(), request.getPageSize());
+        SortUtil.handlePageSort(request, page, "id", FebsConstant.ORDER_DESC, false);
+        return this.baseMapper.findAllSensorInfoPage(page, sensorInfo);
+    }
+
+    @Override
+    public List<SensorInfo> findSensorInfos(SensorInfo sensorInfo) {
+        LambdaQueryWrapper<SensorInfo> queryWrapper = new LambdaQueryWrapper<>();
+        // TODO 设置查询条件
+        return this.baseMapper.selectList(queryWrapper);
+    }
+
+    @Override
+    public void createSensorInfo(SensorInfo sensorInfo) {
+
+    }
+
+    @Override
+    public void updateSensorInfo(SensorInfo sensorInfo) {
+
+    }
+
+    @Override
+    public void deleteSensorInfo(Long id) {
+
+    }
+
+
+    @Override
+    public SensorInfo getBySensorId(String sensorId, String deviceId) {
+        // TODO 设置查询条件
+        return this.baseMapper.getBySensorId(sensorId, deviceId);
+    }
+
+    @Override
+    public int getSensorCount(String deviceId) {
+        // TODO 设置查询条件
+        return this.baseMapper.getSensorCount(deviceId);
+    }
+
+}

+ 441 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/task/LiveDataTask.java

@@ -0,0 +1,441 @@
+package com.gbd.demp.data.exchange.task;
+
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.gbd.demp.data.exchange.entity.*;
+import com.gbd.demp.data.exchange.service.*;
+import com.gbd.demp.data.exchange.utils.CommonUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.AsyncResult;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.client.RestTemplate;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.concurrent.Future;
+
+/**
+ * 实时数据异步处理
+ * 1.告警规则判断
+ * 2.存储数据到数据库
+ * 3.如有告警,推送告警并且存入告警事件表
+ */
+@Slf4j
+@Component
+@Async("taskExecutor")
+public class LiveDataTask {
+
+    @Autowired
+    private IDeviceThresholdService deviceThresholdService;
+    @Autowired
+    private ILiveDataService liveDataService;
+    @Autowired
+    private IHistoryDataService historyDataService;
+    @Autowired
+    private IDeviceInfoService deviceInfoService;
+    @Autowired
+    private RestTemplate restTemplate;
+    @Autowired
+    private IAlarmEventService alarmEventService;
+    @Autowired
+    private ISensorInfoService sensorInfoService;
+
+
+    //获取异步结果
+    @Transactional(rollbackFor = Exception.class)
+    public Future<String> alarmTask(String liveData) {
+        try {
+            String reportTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
+            Date nowDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(reportTime);
+            String token = "8a81e3166b379ce3016b37bab1bc000d";
+            byte bb[] = CommonUtils.getHexBytes(liveData);
+            String[] oldData = new String[bb.length];
+            for (int i = 0; i < bb.length; i++) {
+                String stmp = Integer.toHexString(bb[i] & 0xFF);
+                stmp = stmp.length() == 1 ? "0" + stmp : stmp;
+                oldData[i] = stmp.toUpperCase();
+            }
+            // 处理数据
+//        String reportTime = "20" + oldData[5] + "-" + oldData[6] + "-" + oldData[7] + " " + oldData[8] + ":"
+//                + oldData[9] + ":" + oldData[10];// 上报时间
+            String deviceId = oldData[4];//设备编号
+            int len = Integer.parseInt(oldData[11]);
+            //根据设备id获取设备信息
+            DeviceInfo deviceInfo = deviceInfoService.getDeviceInfoById(deviceId);
+            String startTime = deviceInfo.getWorkTimeFrom();
+            String endTime = deviceInfo.getWorkTimeTo();
+            SimpleDateFormat sf = new SimpleDateFormat("HH:mm:ss");
+            String now = sf.format(new Date());//获取当前时间
+            //如果未设置时间或者当前时间在工作范围内
+            if (CommonUtils.isEffectiveDate(sf.parse(now), sf.parse(startTime), sf.parse(endTime))) {
+                for (int i = 0; i < len; i++) {
+                    String seq = oldData[12 + 6 * i] + oldData[13 + 6 * i];// 设备类型+编号(传感器编号)
+                    String str = oldData[14 + 6 * i];// 03 第一位0正数 1负数;第二位表示有几位小数
+                    String num = str.substring(0, 1);
+                    String num2 = str.substring(1, 2);
+                    String value = oldData[15 + 6 * i] + oldData[16 + 6 * i] + oldData[17 + 6 * i];// 对应参数值 00 00 68
+                    double val = Double.parseDouble(value.substring(0, (value.length() - Integer.parseInt(num2))) + "."
+                            + value.substring((value.length() - Integer.parseInt(num2)), value.length()));
+                    if ("1".equals(num)) {
+                        val = -val;
+                    }
+                    LiveData data = new LiveData();
+                    data.setDeviceId(deviceId);
+                    data.setReportTime(reportTime);
+                    data.setSensorId(seq);
+                    data.setDataValue(val);
+                    HistoryData data1 = new HistoryData();
+                    data1.setDeviceId(deviceId);
+                    data1.setReportTime(reportTime);
+                    data1.setSensorId(seq);
+                    data1.setDataValue(val);
+                    List<DeviceThreshold> thresholds = deviceThresholdService.getThresholdsBySensorID(seq);//根据传感器编号获取传感器阈值信息
+                    SensorInfo sensorInfo = sensorInfoService.getBySensorId(seq, deviceId);//获取传感器信息
+                    if (thresholds.size() > 0) {
+                        //code:0
+                        DeviceThreshold thresholds_0 = thresholds.get(0);
+                        double low_0 = thresholds_0.getLowValue();
+                        double high_0 = thresholds_0.getHighValue();
+                        //code:1
+                        DeviceThreshold thresholds_1 = thresholds.get(1);
+                        double low_1 = thresholds_1.getLowValue();
+                        double high_1 = thresholds_1.getHighValue();
+                        //code:2
+                        DeviceThreshold thresholds_2 = thresholds.get(2);
+                        double low_2 = thresholds_2.getLowValue();
+                        double high_2 = thresholds_2.getHighValue();
+                        //code:3
+                        DeviceThreshold thresholds_3 = thresholds.get(3);
+                        double low_3 = thresholds_3.getLowValue();
+                        double high_3 = thresholds_3.getHighValue();
+                        //code:4
+                        DeviceThreshold thresholds_4 = thresholds.get(4);
+                        double low_4 = thresholds_4.getLowValue();
+                        double high_4 = thresholds_4.getHighValue();
+                        if (val >= low_0 && val <= high_0) {//状态0
+                            data.setStatus(0);
+                            data1.setStatus(0);
+                        }
+                        if ((val < low_0 && val >= low_1) || (val > high_0 && val <= high_1)) {//状态1
+//                            ServerAlarm alarm = new ServerAlarm();
+//                            alarm.setToken(token);
+//                            alarm.setCompanyId(deviceInfo.getCompanyId());
+//                            alarm.setCompanyName(deviceInfo.getCompanyName());
+//                            alarm.setAlarmType(sensorInfo.getSensorName() + "超限");
+//                            alarm.setAlarmDevice(deviceInfo.getDeviceName());
+//                            alarm.setAlarmData(val + "");
+//                            alarm.setDataUnit(sensorInfo.getSensorUnit());
+//                            alarm.setDataLevel(1 + "");
+//                            alarm.setAlarmTime(reportTime);
+//                            String thirdPartyId = alarmPost(alarm);
+//                            AlarmEvent event = new AlarmEvent();
+//                            event.setDeviceId(deviceId);
+//                            event.setSensorId(seq);
+//                            event.setAlarmTime(nowDate);
+//                            event.setAlarmLevel(1 + "");
+//                            event.setEventStatus(1);
+//                            event.setIsreport(1);
+//                            event.setThirdPartyId(thirdPartyId);
+//                            alarmEventService.save(event);
+                            data.setStatus(1);
+                            data1.setStatus(1);
+                        }
+                        if ((val < low_1 && val >= low_2) || (val > high_1 && val <= high_2)) {//状态2
+//                            ServerAlarm alarm = new ServerAlarm();
+//                            alarm.setToken(token);
+//                            alarm.setCompanyId(deviceInfo.getCompanyId());
+//                            alarm.setCompanyName(deviceInfo.getCompanyName());
+//                            alarm.setAlarmType(sensorInfo.getSensorName() + "超限");
+//                            alarm.setAlarmDevice(deviceInfo.getDeviceName());
+//                            alarm.setAlarmData(val + "");
+//                            alarm.setDataUnit(sensorInfo.getSensorUnit());
+//                            alarm.setDataLevel(2 + "");
+//                            alarm.setAlarmTime(reportTime);
+//                            String thirdPartyId = alarmPost(alarm);
+//                            AlarmEvent event = new AlarmEvent();
+//                            event.setDeviceId(deviceId);
+//                            event.setSensorId(seq);
+//                            event.setAlarmTime(nowDate);
+//                            event.setAlarmLevel(2 + "");
+//                            event.setEventStatus(1);
+//                            event.setIsreport(1);
+//                            event.setThirdPartyId(thirdPartyId);
+//                            alarmEventService.save(event);
+                            data.setStatus(2);
+                            data1.setStatus(2);
+                        }
+                        if ((val < low_2 && val >= low_3) || (val > high_2 && val <= high_3)) {//状态3
+//                            ServerAlarm alarm = new ServerAlarm();
+//                            alarm.setToken(token);
+//                            alarm.setCompanyId(deviceInfo.getCompanyId());
+//                            alarm.setCompanyName(deviceInfo.getCompanyName());
+//                            alarm.setAlarmType(sensorInfo.getSensorName() + "超限");
+//                            alarm.setAlarmDevice(deviceInfo.getDeviceName());
+//                            alarm.setAlarmData(val + "");
+//                            alarm.setDataUnit(sensorInfo.getSensorUnit());
+//                            alarm.setDataLevel(3 + "");
+//                            alarm.setAlarmTime(reportTime);
+//                            String thirdPartyId = alarmPost(alarm);
+//                            AlarmEvent event = new AlarmEvent();
+//                            event.setDeviceId(deviceId);
+//                            event.setSensorId(seq);
+//                            event.setAlarmTime(nowDate);
+//                            event.setAlarmLevel(3 + "");
+//                            event.setEventStatus(1);
+//                            event.setIsreport(1);
+//                            event.setThirdPartyId(thirdPartyId);
+//                            alarmEventService.save(event);
+                            data.setStatus(3);
+                            data1.setStatus(3);
+                        }
+                        if ((val < low_3 && val >= low_4) || (val > high_3 && val <= high_4)) {//状态4
+//                            ServerAlarm alarm = new ServerAlarm();
+//                            alarm.setToken(token);
+//                            alarm.setCompanyId(deviceInfo.getCompanyId());
+//                            alarm.setCompanyName(deviceInfo.getCompanyName());
+//                            alarm.setAlarmType(sensorInfo.getSensorName() + "超限");
+//                            alarm.setAlarmDevice(deviceInfo.getDeviceName());
+//                            alarm.setAlarmData(val + "");
+//                            alarm.setDataUnit(sensorInfo.getSensorUnit());
+//                            alarm.setDataLevel(4 + "");
+//                            alarm.setAlarmTime(reportTime);
+//                            String thirdPartyId = alarmPost(alarm);
+//                            AlarmEvent event = new AlarmEvent();
+//                            event.setDeviceId(deviceId);
+//                            event.setSensorId(seq);
+//                            event.setAlarmTime(nowDate);
+//                            event.setAlarmLevel(4 + "");
+//                            event.setEventStatus(1);
+//                            event.setIsreport(1);
+//                            event.setThirdPartyId(thirdPartyId);
+//                            alarmEventService.save(event);
+                            data.setStatus(4);
+                            data1.setStatus(4);
+                        }
+                    } else {
+                        data.setStatus(0);
+                        data1.setStatus(0);
+                    }
+                    liveDataService.acceptLiveData(data);
+                    historyDataService.save(data1);
+
+                }
+            }
+        } catch (Exception e) {
+            log.error(e.getMessage());
+        }
+
+        return new AsyncResult<String>("完成");
+    }
+
+
+    public Future<String> liveTask(Map<String, Object> liveData) {
+        try {
+            String token = "8a81e3166b379ce3016b37bab1bc000d";
+            String reportTime = (String) liveData.get("CreateDataTime");
+            String deviceId = String.valueOf(liveData.get("deviceId"));//获取设备编号
+            DeviceInfo deviceInfo = deviceInfoService.getDeviceInfoById(deviceId);
+            if (deviceInfo != null) {
+                String startTime = deviceInfo.getWorkTimeFrom();
+                String endTime = deviceInfo.getWorkTimeTo();
+                SimpleDateFormat sf = new SimpleDateFormat("HH:mm:ss");
+                String now = sf.format(new Date());//获取当前时间
+                Date nowDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(reportTime);
+                //如果未设置时间或者当前时间在工作范围内
+                if (CommonUtils.isEffectiveDate(sf.parse(now), sf.parse(startTime), sf.parse(endTime))) {
+                    int count = sensorInfoService.getSensorCount(deviceId);//获取该设备下的传感器数量
+                    if (count > 0) {
+                        for (int i = 0; i < count; i++) {//循环插入数据库
+                            String seq = "m" + (i + 1);//传感器编号
+                            double val = Double.valueOf(liveData.get(seq) + "");
+                            LiveData data = new LiveData();
+                            data.setDeviceId(deviceId);
+                            data.setReportTime(reportTime);
+                            data.setSensorId(seq);
+                            data.setDataValue(val);
+                            HistoryData data1 = new HistoryData();
+                            data1.setDeviceId(deviceId);
+                            data1.setReportTime(reportTime);
+                            data1.setSensorId(seq);
+                            data1.setDataValue(val);
+//                        String dateTime = (String) liveData.get("CreateDataTime");
+                            List<DeviceThreshold> thresholds = deviceThresholdService.getThresholdsBySensorID(seq);//根据传感器编号获取传感器阈值信息
+                            SensorInfo sensorInfo = sensorInfoService.getBySensorId(seq, deviceId);//获取传感器信息
+                            if (thresholds.size() > 0) {
+                                //code:0
+                                DeviceThreshold thresholds_0 = thresholds.get(0);
+                                double low_0 = thresholds_0.getLowValue();
+                                double high_0 = thresholds_0.getHighValue();
+                                //code:1
+                                DeviceThreshold thresholds_1 = thresholds.get(1);
+                                double low_1 = thresholds_1.getLowValue();
+                                double high_1 = thresholds_1.getHighValue();
+                                //code:2
+                                DeviceThreshold thresholds_2 = thresholds.get(2);
+                                double low_2 = thresholds_2.getLowValue();
+                                double high_2 = thresholds_2.getHighValue();
+                                //code:3
+                                DeviceThreshold thresholds_3 = thresholds.get(3);
+                                double low_3 = thresholds_3.getLowValue();
+                                double high_3 = thresholds_3.getHighValue();
+                                //code:4
+                                DeviceThreshold thresholds_4 = thresholds.get(4);
+                                double low_4 = thresholds_4.getLowValue();
+                                double high_4 = thresholds_4.getHighValue();
+                                if (val >= low_0 && val <= high_0) {//状态0
+                                    data.setStatus(0);
+                                    data1.setStatus(0);
+                                }
+                                if ((val < low_0 && val >= low_1) || (val > high_0 && val <= high_1)) {//状态1
+//                                ServerAlarm alarm = new ServerAlarm();
+//                                alarm.setToken(token);
+//                                alarm.setCompanyId(deviceInfo.getCompanyId());
+//                                alarm.setCompanyName(deviceInfo.getCompanyName());
+//                                alarm.setAlarmType(sensorInfo.getSensorName() + "超限");
+//                                alarm.setAlarmDevice(deviceInfo.getDeviceName());
+//                                alarm.setAlarmData(val + "");
+//                                alarm.setDataUnit(sensorInfo.getSensorUnit());
+//                                alarm.setDataLevel(1 + "");
+//                                alarm.setAlarmTime(reportTime);
+//                                String thirdPartyId = alarmPost(alarm);
+//                                AlarmEvent event = new AlarmEvent();
+//                                event.setDeviceId(deviceId);
+//                                event.setSensorId(seq);
+//                                event.setAlarmTime(nowDate);
+//                                event.setAlarmLevel(1 + "");
+//                                event.setEventStatus(1);
+//                                event.setIsreport(1);
+//                                event.setThirdPartyId(thirdPartyId);
+//                                alarmEventService.save(event);
+                                    data.setStatus(1);
+                                    data1.setStatus(1);
+                                }
+                                if ((val < low_1 && val >= low_2) || (val > high_1 && val <= high_2)) {//状态2
+//                                ServerAlarm alarm = new ServerAlarm();
+//                                alarm.setToken(token);
+//                                alarm.setCompanyId(deviceInfo.getCompanyId());
+//                                alarm.setCompanyName(deviceInfo.getCompanyName());
+//                                alarm.setAlarmType(sensorInfo.getSensorName() + "超限");
+//                                alarm.setAlarmDevice(deviceInfo.getDeviceName());
+//                                alarm.setAlarmData(val + "");
+//                                alarm.setDataUnit(sensorInfo.getSensorUnit());
+//                                alarm.setDataLevel(2 + "");
+//                                alarm.setAlarmTime(reportTime);
+//                                String thirdPartyId = alarmPost(alarm);
+//                                AlarmEvent event = new AlarmEvent();
+//                                event.setDeviceId(deviceId);
+//                                event.setSensorId(seq);
+//                                event.setAlarmTime(nowDate);
+//                                event.setAlarmLevel(2 + "");
+//                                event.setEventStatus(1);
+//                                event.setIsreport(1);
+//                                event.setThirdPartyId(thirdPartyId);
+//                                alarmEventService.save(event);
+                                    data.setStatus(2);
+                                    data1.setStatus(2);
+                                }
+                                if ((val < low_2 && val >= low_3) || (val > high_2 && val <= high_3)) {//状态3
+//                                ServerAlarm alarm = new ServerAlarm();
+//                                alarm.setToken(token);
+//                                alarm.setCompanyId(deviceInfo.getCompanyId());
+//                                alarm.setCompanyName(deviceInfo.getCompanyName());
+//                                alarm.setAlarmType(sensorInfo.getSensorName() + "超限");
+//                                alarm.setAlarmDevice(deviceInfo.getDeviceName());
+//                                alarm.setAlarmData(val + "");
+//                                alarm.setDataUnit(sensorInfo.getSensorUnit());
+//                                alarm.setDataLevel(3 + "");
+//                                alarm.setAlarmTime(reportTime);
+//                                String thirdPartyId = alarmPost(alarm);
+//                                AlarmEvent event = new AlarmEvent();
+//                                event.setDeviceId(deviceId);
+//                                event.setSensorId(seq);
+//                                event.setAlarmTime(nowDate);
+//                                event.setAlarmLevel(3 + "");
+//                                event.setEventStatus(1);
+//                                event.setIsreport(1);
+//                                event.setThirdPartyId(thirdPartyId);
+//                                alarmEventService.save(event);
+                                    data.setStatus(3);
+                                    data1.setStatus(3);
+                                }
+                                if ((val < low_3 && val >= low_4) || (val > high_3 && val <= high_4)) {//状态4
+//                                ServerAlarm alarm = new ServerAlarm();
+//                                alarm.setToken(token);
+//                                alarm.setCompanyId(deviceInfo.getCompanyId());
+//                                alarm.setCompanyName(deviceInfo.getCompanyName());
+//                                alarm.setAlarmType(sensorInfo.getSensorName() + "超限");
+//                                alarm.setAlarmDevice(deviceInfo.getDeviceName());
+//                                alarm.setAlarmData(val + "");
+//                                alarm.setDataUnit(sensorInfo.getSensorUnit());
+//                                alarm.setDataLevel(4 + "");
+//                                alarm.setAlarmTime(reportTime);
+//                                String thirdPartyId = alarmPost(alarm);
+//                                AlarmEvent event = new AlarmEvent();
+//                                event.setDeviceId(deviceId);
+//                                event.setSensorId(seq);
+//                                event.setAlarmTime(nowDate);
+//                                event.setAlarmLevel(4 + "");
+//                                event.setEventStatus(1);
+//                                event.setIsreport(1);
+//                                event.setThirdPartyId(thirdPartyId);
+//                                alarmEventService.save(event);
+                                    data.setStatus(4);
+                                    data1.setStatus(4);
+                                }
+                            } else {
+                                data.setStatus(0);
+                                data1.setStatus(0);
+                            }
+                            liveDataService.acceptLiveData(data);
+                            historyDataService.save(data1);
+                        }
+
+                    }
+
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return new AsyncResult<String>("完成");
+    }
+//
+//    public Future<String> task6() throws InterruptedException {
+//        long begin = System.currentTimeMillis();
+//        Thread.sleep(1000L);
+//        long end = System.currentTimeMillis();
+//        System.out.println("任务6耗时=" + (end - begin));
+//        return new AsyncResult<String>("任务6");
+//    }
+
+
+    /**
+     * 返回uuid
+     *
+     * @param alarm
+     * @return
+     */
+    public String alarmPost(ServerAlarm alarm) {
+        String url = "http://zhzf.sipac.gov.cn/szyqaj/app/common/alarmSave";
+        String json = JSON.toJSONString(alarm);
+        HttpHeaders headers = new HttpHeaders();
+        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+        headers.add("User-Agent", "Chrome/69.0.3497.81 Safari/537.36");
+        headers.setContentType(type);
+        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+        HttpEntity<String> formEntity = new HttpEntity<String>(json.toString(), headers);
+        String s = restTemplate.postForEntity(url, formEntity, String.class).getBody();
+        JSONObject jsonObject = JSONObject.parseObject(s);
+        return jsonObject.getString("id");
+    }
+
+
+}

+ 47 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/utils/CommonUtils.java

@@ -0,0 +1,47 @@
+package com.gbd.demp.data.exchange.utils;
+
+import java.util.Calendar;
+import java.util.Date;
+
+public class CommonUtils {
+
+    public static byte[] getHexBytes(String str) {
+        byte[] bytes = new byte[str.length() / 2];
+        for (int i = 0; i < str.length() / 2; i++) {
+            String subStr = str.substring(i * 2, i * 2 + 2);
+            bytes[i] = (byte) Integer.parseInt(subStr, 16);
+        }
+        return bytes;
+    }
+
+    /**
+     * 判断当前时间是否在[startTime, endTime]区间,注意时间格式要一致
+     *
+     * @param nowTime   当前时间
+     * @param startTime 开始时间
+     * @param endTime   结束时间
+     * @return
+     * @author jqlin
+     */
+    public static boolean isEffectiveDate(Date nowTime, Date startTime, Date endTime) {
+        if (nowTime.getTime() == startTime.getTime()
+                || nowTime.getTime() == endTime.getTime()) {
+            return true;
+        }
+
+        Calendar date = Calendar.getInstance();
+        date.setTime(nowTime);
+
+        Calendar begin = Calendar.getInstance();
+        begin.setTime(startTime);
+
+        Calendar end = Calendar.getInstance();
+        end.setTime(endTime);
+
+        if (date.after(begin) && date.before(end)) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+}

+ 25 - 0
febs-server/gbd-demp-data-exchange/src/main/java/com/gbd/demp/data/exchange/vo/LiveDataVO.java

@@ -0,0 +1,25 @@
+package com.gbd.demp.data.exchange.vo;
+
+import lombok.Data;
+
+@Data
+public class LiveDataVO {
+    //传感器编号
+    private String sensorId;
+    //传感器名称
+    private String sensorName;
+    //设备值
+    private double dataValue;
+    //数值单位
+    private String sensorUnit;
+    //数值状态
+    private int status;
+    //上报时间
+    private String reportTime;
+    //低值
+    private double lowValue;
+    //高值
+    private double highValue;
+
+
+}

+ 6 - 0
febs-server/gbd-demp-data-exchange/src/main/resources/ValidationMessages.properties

@@ -0,0 +1,6 @@
+required=\u4E0D\u80FD\u4E3A\u7A7A
+range=\u6709\u6548\u957f\u5ea6{min}\u5230{max}\u4e2a\u5b57\u7b26
+email=\u90ae\u7bb1\u683c\u5f0f\u4e0d\u5408\u6cd5
+mobile=\u624b\u673a\u53f7\u4e0d\u5408\u6cd5
+noMoreThan=\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc7{max}\u4e2a\u5b57\u7b26
+invalid=\u503c\u4e0d\u5408\u6cd5

+ 8 - 0
febs-server/gbd-demp-data-exchange/src/main/resources/banner.txt

@@ -0,0 +1,8 @@
+|------------------------------|
+|    ____  ____  ___   __      |
+|   | |_  | |_  | |_) ( (`     |
+|   |_|   |_|__ |_|_) _)_)     |
+|                              |
+|   ${spring.application.name}      |
+|   Spring-Boot: ${spring-boot.version} |
+|------------------------------|

+ 27 - 0
febs-server/gbd-demp-data-exchange/src/main/resources/bootstrap.yml

@@ -0,0 +1,27 @@
+spring:
+  application:
+    name: GBD-Demp-Data-Exchange
+  cloud:
+    nacos:
+      config:
+        server-addr: ${nacos.url}:8001
+        group: DEFAULT_GROUP
+        prefix: gbd-demp-data-exchange
+        file-extension: yaml
+      discovery:
+        server-addr: ${nacos.url}:8001
+
+logging:
+  level:
+    org:
+      springframework:
+        boot:
+          actuate:
+            endpoint:
+              EndpointId: error
+    com:
+      alibaba:
+        cloud:
+          nacos:
+            client:
+              NacosPropertySourceBuilder: error

+ 2 - 0
febs-server/gbd-demp-data-exchange/src/main/resources/gbd-demp-data-exchange.properties

@@ -0,0 +1,2 @@
+# 批量插入单次最大值,比如配置为1000,那么数据库插入1000条数据commit一次
+febs.server.system.batchInsertMaxNum=1000

+ 62 - 0
febs-server/gbd-demp-data-exchange/src/main/resources/logback-spring.xml

@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="60 seconds" debug="false">
+    <springProperty scope="context" name="springAppName" source="spring.application.name"/>
+    <property name="log.path" value="log/gbd-demp-data-exchange"/>
+    <property name="log.maxHistory" value="15"/>
+    <property name="log.colorPattern"
+              value="%magenta(%d{yyyy-MM-dd HH:mm:ss}) %highlight(%-5level) %boldCyan(${springAppName:-}) %yellow(%thread) %green(%logger) %msg%n"/>
+    <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5level ${springAppName:-} %thread %logger %msg%n"/>
+
+    <!--输出到控制台-->
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>${log.colorPattern}</pattern>
+        </encoder>
+    </appender>
+
+    <!--输出到文件-->
+    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}/info/info.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <MaxHistory>${log.maxHistory}</MaxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>INFO</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}/error/error.%d{yyyy-MM-dd}.log</fileNamePattern>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>ERROR</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!--输出到 logstash的 appender-->
+    <!--    <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">-->
+    <!--        <destination>${logstash.url}:4560</destination>-->
+    <!--        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>-->
+    <!--    </appender>-->
+
+    <root level="debug">
+        <appender-ref ref="console"/>
+    </root>
+
+    <root level="info">
+        <appender-ref ref="file_info"/>
+        <appender-ref ref="file_error"/>
+        <!--        <appender-ref ref="logstash" />-->
+    </root>
+</configuration>

+ 33 - 0
febs-server/gbd-demp-data-exchange/src/main/resources/mapper/AlarmEventMapper.xml

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gbd.demp.data.exchange.mapper.AlarmEventMapper">
+    <resultMap id="alarmEvent" type="com.gbd.demp.data.exchange.entity.AlarmEvent">
+        <result column="id" jdbcType="VARCHAR" property="id"/>
+        <result column="device_id" jdbcType="VARCHAR" property="deviceId"/>
+        <result column="sensor_id" jdbcType="VARCHAR" property="sensorId"/>
+        <result column="alarm_level" jdbcType="VARCHAR" property="alarmLevel"/>
+        <result column="alarm_time" jdbcType="DATE" property="alarmTime"/>
+        <result column="event_status" jdbcType="VARCHAR" property="eventStatus"/>
+        <result column="finish_time" jdbcType="DATE" property="finishTime"/>
+        <result column="isReport" jdbcType="VARCHAR" property="isreport"/>
+        <result column="reason" jdbcType="VARCHAR" property="reason"/>
+        <result column="third_party_id" jdbcType="VARCHAR" property="thirdPartyId"/>
+    </resultMap>
+
+    <select id="checkExist" resultMap="alarmEvent">
+        select *
+        from t_alarm_event
+        where device_id = #{deviceId}
+          and sensor_id = #{sensorId}
+          and alarm_time > NOW() - INTERVAL 8 HOUR
+          and event_status = 1
+    </select>
+
+    <update id="updateAlarm">
+        update t_alarm_event
+        set alarm_level =#{alarmLevel}
+        where id = #{id}
+    </update>
+
+
+</mapper>

+ 89 - 0
febs-server/gbd-demp-data-exchange/src/main/resources/mapper/DeviceInfoMapper.xml

@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gbd.demp.data.exchange.mapper.DeviceInfoMapper">
+
+
+    <resultMap id="deviceInfo" type="com.gbd.demp.data.exchange.entity.DeviceInfo">
+        <result column="device_id" jdbcType="VARCHAR" property="deviceId"/>
+        <result column="device_name" jdbcType="VARCHAR" property="deviceName"/>
+        <result column="device_start_date" jdbcType="DATE" property="deviceStartDate"/>
+        <result column="industry_code" jdbcType="VARCHAR" property="industryCode"/>
+        <result column="dust_type" jdbcType="VARCHAR" property="dustType"/>
+        <result column="company_id" jdbcType="VARCHAR" property="companyId"/>
+        <result column="company_name" jdbcType="VARCHAR" property="companyName"/>
+        <result column="device_location" jdbcType="VARCHAR" property="deviceLocation"/>
+        <result column="possession" jdbcType="VARCHAR" property="possession"/>
+        <result column="work_time_from" jdbcType="VARCHAR" property="workTimeFrom"/>
+        <result column="work_time_to" jdbcType="VARCHAR" property="workTimeTo"/>
+        <result column="longitude" jdbcType="DOUBLE" property="longitude"/>
+        <result column="latitude" jdbcType="DOUBLE" property="latitude"/>
+    </resultMap>
+
+    <sql id="findDeviceInfoSql">
+        SELECT
+        device_id,
+        device_name,
+        device_start_date,
+        t1.value industry_code,
+        t2.dust_name dust_type,
+        company_id,
+        company_name,
+        device_location,
+        possession
+        FROM
+        t_device_info t
+        left join t_code_industry t1 on t.industry_code=t1.code
+        left join t_code_dust_type t2 on t.dust_type=t2.code
+        where 1=1
+        <if test="deviceInfo.deviceId != null and deviceInfo.deviceId != ''">
+            AND t.device_id = #{deviceInfo.deviceId}
+        </if>
+        <if test="deviceInfo.deviceName != null and deviceInfo.deviceName != ''">
+            AND t.device_name like CONCAT('%', #{deviceInfo.deviceName}, '%')
+        </if>
+        <if test="deviceInfo.startTimeFrom != null and deviceInfo.startTimeFrom !=''">
+            And t.device_start_date &gt; #{deviceInfo.startTimeFrom}
+        </if>
+        <if test="deviceInfo.startTimeTo!= null and deviceInfo.startTimeTo !=''">
+            And t.device_start_date &lt; #{deviceInfo.startTimeTo}
+        </if>
+        <if test="deviceInfo.companyId != null and deviceInfo.companyId != ''">
+            AND t.company_id = #{deviceInfo.companyId}
+        </if>
+        <if test="deviceInfo.companyName != null and deviceInfo.companyName != ''">
+            AND t.company_name = #{deviceInfo.companyName}
+        </if>
+        group by
+        t.device_id,
+        t.device_name,
+        t.industry_code,
+        t.dust_type,
+        t.company_id,
+        t.company_name,
+        t.device_location,
+        t.possession
+    </sql>
+
+    <select id="findAllDeviceInfoPage" resultMap="deviceInfo">
+        <include refid="findDeviceInfoSql"/>
+    </select>
+
+    <select id="getDeviceInfoById" resultMap="deviceInfo">
+        SELECT device_id,
+               device_name,
+               device_start_date,
+               industry_code,
+               dust_type,
+               company_id,
+               company_name,
+               device_location,
+               possession,
+               work_time_from,
+               work_time_to
+        FROM t_device_info t
+        where 1 = 1
+          AND t.device_id = #{deviceId}
+    </select>
+
+
+</mapper>

+ 67 - 0
febs-server/gbd-demp-data-exchange/src/main/resources/mapper/DeviceThresholdMapper.xml

@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gbd.demp.data.exchange.mapper.DeviceThresholdMapper">
+    <resultMap id="deviceThreshold" type="com.gbd.demp.data.exchange.entity.DeviceThreshold">
+        <result column="id" jdbcType="BIGINT" property="id"/>
+        <result column="device_id" jdbcType="VARCHAR" property="deviceId"/>
+        <result column="sensor_id" jdbcType="VARCHAR" property="sensorId"/>
+        <result column="code" jdbcType="VARCHAR" property="code"/>
+        <result column="low_value" jdbcType="DATE" property="lowValue"/>
+        <result column="high_value" jdbcType="VARCHAR" property="highValue"/>
+    </resultMap>
+
+    <sql id="findDeviceThresholdSql">
+        SELECT id,device_id,sensor_id,t1.value code, low_value, high_value
+        FROM t_device_threshold t
+        left join t_code_alarm_rules t1 on t.code=t1.code
+        where 1=1
+        <if test="deviceThreshold.deviceId != null and deviceThreshold.deviceId != ''">
+            AND t.device_id = #{deviceThreshold.deviceId}
+        </if>
+        <if test="deviceThreshold.sensorId != null and deviceThreshold.sensorId != ''">
+            AND t.sensor_id = #{deviceThreshold.sensorId}
+        </if>
+        group by
+        t.id,
+        t.device_id,
+        t.sensor_id,
+        t.code,
+        t.low_value,
+        t.high_value
+    </sql>
+
+    <select id="findDeviceThresholds" resultMap="deviceThreshold">
+        <include refid="findDeviceThresholdSql"/>
+    </select>
+
+
+    <select id="getThresholdsBySensorID" resultMap="deviceThreshold">
+        SELECT id, device_id, sensor_id, code, low_value, high_value
+        FROM t_device_threshold t
+        where 1 = 1
+          and t.sensor_id = #{id}
+        order by code
+    </select>
+
+
+    <select id="getForHistoryChart" resultMap="deviceThreshold">
+        SELECT id,device_id,sensor_id,t1.value code, low_value, high_value
+        FROM t_device_threshold t
+        left join t_code_alarm_rules t1 on t.code=t1.code
+        where 1=1
+        <if test="deviceId != null and deviceId != ''">
+            AND t.device_id = #{deviceId}
+        </if>
+        <if test="sensorId != null and sensorId != ''">
+            AND t.sensor_id = #{sensorId}
+        </if>
+        group by
+        t.id,
+        t.device_id,
+        t.sensor_id,
+        t.code,
+        t.low_value,
+        t.high_value
+    </select>
+
+</mapper>

+ 26 - 0
febs-server/gbd-demp-data-exchange/src/main/resources/mapper/HistoryDataMapper.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gbd.demp.data.exchange.mapper.HistoryDataMapper">
+
+    <select id="getHistoryData" resultType="com.gbd.demp.data.exchange.entity.HistoryData">
+        SELECT id, device_id, sensor_id, data_value, report_time, status
+        FROM t_history_data
+        where 1=1
+        <choose>
+            <when test="historyData.startTimeFrom != null and historyData.startTimeFrom !='' and historyData.startTimeTo!= null and historyData.startTimeTo !=''">
+                And report_time &gt; #{historyData.startTimeFrom} And report_time &lt; #{historyData.startTimeTo}
+            </when>
+            <otherwise>
+                and report_time>date_sub(now(),INTERVAL 30 MINUTE)
+            </otherwise>
+        </choose>
+        <if test="switchValue==false">
+            and status <![CDATA[ <> ]]> '06'
+        </if>
+        and device_id=#{historyData.deviceId}
+        and sensor_id=#{historyData.sensorId}
+        order by report_time
+    </select>
+
+
+</mapper>

+ 63 - 0
febs-server/gbd-demp-data-exchange/src/main/resources/mapper/LiveDataMapper.xml

@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gbd.demp.data.exchange.mapper.LiveDataMapper">
+
+    <resultMap id="liveDataVO" type="com.gbd.demp.data.exchange.vo.LiveDataVO">
+        <result column="sensor_id" jdbcType="VARCHAR" property="sensorId"/>
+        <result column="sensor_name" jdbcType="VARCHAR" property="sensorName"/>
+        <result column="data_value" jdbcType="VARCHAR" property="dataValue"/>
+        <result column="sensor_unit" jdbcType="VARCHAR" property="sensorUnit"/>
+        <result column="status" jdbcType="VARCHAR" property="status"/>
+        <result column="low_value" jdbcType="DOUBLE" property="lowValue"/>
+        <result column="high_value" jdbcType="DOUBLE" property="highValue"/>
+        <result column="report_time" jdbcType="VARCHAR" property="reportTime"/>
+    </resultMap>
+
+
+    <insert id="acceptLiveData" parameterType="com.gbd.demp.data.exchange.entity.LiveData">
+        INSERT INTO t_live_data(sensor_id, device_id, data_value, report_time, status)
+        VALUES (#{data.sensorId}, #{data.deviceId}, #{data.dataValue}, #{data.reportTime}, #{data.status})
+        ON DUPLICATE KEY UPDATE data_value=#{data.dataValue},
+                                report_time=#{data.reportTime},
+                                status=#{data.status}
+    </insert>
+
+    <update id="updateLiveData" parameterType="com.gbd.demp.data.exchange.entity.LiveData">
+        update t_live_data
+        set data_value=#{data.dataValue},
+            report_time=#{data.reportTime},
+            status=#{data.status}
+        where device_id = #{data.deviceId}
+          and sensor_id = #{data.sensorId}
+    </update>
+
+    <select id="getLiveData" resultMap="liveDataVO">
+        SELECT t.sensor_id,
+               t3.sensor_name,
+               data_value,
+               t3.sensor_unit,
+               status,
+               low_value,
+               high_value,
+               report_time
+        FROM demp.t_live_data t
+                 LEFT JOIN
+             t_device_threshold t2 ON t.sensor_id = t2.sensor_id
+                 LEFT JOIN
+             t_sensor_info t3 ON t.sensor_id = t3.sensor_id
+        WHERE 1 = 1
+          and (t.device_id = #{deviceId} and t2.device_id = #{deviceId} and t3.device_id = #{deviceId})
+          and t2.code = 0
+        GROUP BY t.device_id, t.sensor_id, t3.sensor_name, data_value, t3.sensor_unit, status, low_value, high_value,
+                 report_time
+    </select>
+
+
+    <select id="checkExist" resultType="java.lang.Integer">
+        select count(*)
+        from t_live_data
+        where device_id = #{deviceId}
+          and sensor_id = #{sensorId}
+    </select>
+
+</mapper>

+ 62 - 0
febs-server/gbd-demp-data-exchange/src/main/resources/mapper/SensorInfoMapper.xml

@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gbd.demp.data.exchange.mapper.SensorInfoMapper">
+
+    <resultMap id="sensorInfo" type="com.gbd.demp.data.exchange.entity.SensorInfo">
+        <result column="id" jdbcType="BIGINT" property="id"/>
+        <result column="sensor_id" jdbcType="VARCHAR" property="sensorId"/>
+        <result column="device_id" jdbcType="VARCHAR" property="deviceId"/>
+        <result column="sensor_name" jdbcType="VARCHAR" property="sensorName"/>
+        <result column="sensor_unit" jdbcType="VARCHAR" property="sensorUnit"/>
+    </resultMap>
+
+
+    <sql id="findSensorInfoSql">
+        SELECT
+        id,
+        sensor_id,
+        device_id,
+        sensor_name,
+        sensor_unit
+        FROM
+        demp.t_sensor_info t
+        where 1=1
+        <if test="sensorInfo.sensorId != null and sensorInfo.sensorId != ''">
+            AND t.sensor_id = #{sensor.sensorId}
+        </if>
+        <if test="sensorInfo.sensorName != null and sensorInfo.sensorName != ''">
+            AND t.sensor_name like CONCAT('%', #{sensor.sensorName}, '%')
+        </if>
+        group by
+        t.id,
+        t.sensor_id,
+        t.device_id,
+        t.sensor_name,
+        t.sensor_unit
+    </sql>
+
+    <select id="findAllSensorInfoPage" resultMap="sensorInfo">
+        <include refid="findSensorInfoSql"/>
+    </select>
+
+    <select id="getBySensorId" resultMap="sensorInfo">
+        SELECT id,
+               sensor_id,
+               device_id,
+               sensor_name,
+               sensor_unit
+        FROM demp.t_sensor_info t
+        where 1 = 1
+          and t.sensor_id = #{sensorId}
+          and t.device_id = #{deviceId}
+    </select>
+
+    <select id="getSensorCount" resultType="int">
+        SELECT count(*)
+        FROM t_sensor_info
+        WHERE 1 = 1
+          and device_id = #{deviceId}
+    </select>
+
+
+</mapper>

+ 6 - 0
febs-server/gbd-demp-info/Dockerfile

@@ -0,0 +1,6 @@
+FROM openjdk:8u212-jre
+MAINTAINER MrBird 852252810@qq.com
+
+COPY gbd-demp-info-2.2-RELEASE.jar /febs/gbd-demp-info-2.2-RELEASE.jar
+
+ENTRYPOINT ["java", "-Xmx256m", "-jar", "/febs/gbd-demp-info-2.2-RELEASE.jar"]

+ 48 - 0
febs-server/gbd-demp-info/pom.xml

@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>cc.mrbird</groupId>
+        <artifactId>febs-server</artifactId>
+        <version>2.2-RELEASE</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    <groupId>com.gbd</groupId>
+    <artifactId>gbd-demp-info</artifactId>
+    <name>GBD-DEMP-INFO</name>
+    <description>基本信息接口,企业基本信息、设备信息等</description>
+
+    <properties>
+        <java.version>1.8</java.version>
+        <febs-cloud.version>2.2-RELEASE</febs-cloud.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>cc.mrbird</groupId>
+            <artifactId>febs-common-core</artifactId>
+            <version>${febs-cloud.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>cc.mrbird</groupId>
+            <artifactId>febs-common-datasource-starter</artifactId>
+            <version>${febs-cloud.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>cc.mrbird</groupId>
+            <artifactId>febs-common-security-starter</artifactId>
+            <version>${febs-cloud.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 24 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/GbdDempInfoApplication.java

@@ -0,0 +1,24 @@
+package com.gbd.demp.info;
+
+import cc.mrbird.febs.common.security.starter.annotation.EnableFebsCloudResourceServer;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.WebApplicationType;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.scheduling.annotation.EnableAsync;
+
+import javax.sound.midi.Soundbank;
+
+@SpringBootApplication
+@EnableFebsCloudResourceServer
+@MapperScan("com.gbd.demp.info.mapper")
+public class GbdDempInfoApplication {
+
+    public static void main(String[] args) {
+        new SpringApplicationBuilder(GbdDempInfoApplication.class)
+                .web(WebApplicationType.SERVLET)
+                .run(args);
+    }
+
+}

+ 27 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/config/RestTemplateConfig.java

@@ -0,0 +1,27 @@
+package com.gbd.demp.info.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.client.ClientHttpRequestFactory;
+import org.springframework.http.client.SimpleClientHttpRequestFactory;
+import org.springframework.web.client.RestTemplate;
+
+@Configuration
+public class RestTemplateConfig {
+
+    @Bean
+    public RestTemplate restTemplate(ClientHttpRequestFactory factory){
+        return new RestTemplate(factory);
+    }
+
+    @Bean
+    public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
+        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
+        factory.setReadTimeout(10000);//单位为ms
+        factory.setConnectTimeout(10000);//单位为ms
+        return factory;
+    }
+
+
+
+}

+ 88 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/AlarmEventController.java

@@ -0,0 +1,88 @@
+package com.gbd.demp.info.controller;
+
+import com.gbd.demp.info.entity.AlarmEvent;
+import com.gbd.demp.info.entity.ThirdPartyUser;
+import com.gbd.demp.info.service.IAlarmEventService;
+import cc.mrbird.febs.common.core.entity.FebsResponse;
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.common.core.exception.FebsException;
+import cc.mrbird.febs.common.core.utils.FebsUtil;
+import com.gbd.demp.info.utils.ThirdPartyUtils;
+import lombok.extern.slf4j.Slf4j;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import java.util.Map;
+
+/**
+ * 告警事件表 Controller
+ *
+ * @author yjj
+ * @date 2020-09-08 14:53:36
+ */
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/info/alarmEvent")
+@RequiredArgsConstructor
+public class AlarmEventController {
+
+    private final IAlarmEventService alarmEventService;
+
+    @GetMapping
+    @PreAuthorize("hasAuthority('alarmEvent:list')")
+    public FebsResponse getAllAlarmEvents(AlarmEvent alarmEvent) {
+        return new FebsResponse().data(alarmEventService.findAlarmEvents(alarmEvent));
+    }
+
+    /**
+     * 获取异常事件
+     *
+     * @param request
+     * @param companyName 公司名称
+     * @param deviceName  设备名称
+     * @return
+     */
+    @GetMapping("list")
+    @PreAuthorize("hasAuthority('alarmEvent:view')")
+    public FebsResponse alarmEventList(@RequestHeader(value = "thirdPartyToken") String thirdPartyToken, QueryRequest request, String companyName, String deviceName) {
+        ThirdPartyUser u = ThirdPartyUtils.getThirdPartyUserInfo(thirdPartyToken);
+        Map<String, Object> dataTable = null;
+        if (u.getUserId() != null) {
+            if (u.getEnterpriseId() != null) {//企业
+                dataTable = FebsUtil.getDataTable(this.alarmEventService.findAlarmEvents(request, u.getEnterpriseName(), deviceName, u.getPossession()));
+            } else if (u.getPossession() != null) {//功能区
+                dataTable = FebsUtil.getDataTable(this.alarmEventService.findAlarmEvents(request, companyName, deviceName, u.getPossession()));
+            } else //监管人员
+                dataTable = FebsUtil.getDataTable(this.alarmEventService.findAlarmEvents(request, companyName, deviceName, u.getPossession()));
+            return new FebsResponse().data(dataTable);
+        } else
+            return new FebsResponse().code(HttpStatus.FORBIDDEN);
+    }
+
+    /**
+     * 异常事件处理
+     *
+     * @param id     主键
+     * @param reason 异常原因
+     * @param start  报警时间
+     * @param end    处理时间
+     * @throws FebsException
+     */
+    @RequestMapping("finishEvent")
+    @PreAuthorize("hasAuthority('alarmEvent:update')")
+    public void finishEvent(String id, String reason, String deviceId, String sensorId, String start, String end) throws FebsException {
+        try {
+            this.alarmEventService.finishEvent(Long.valueOf(id), reason, deviceId, sensorId, start, end);
+        } catch (Exception e) {
+            String message = "修改AlarmEvent失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+}

+ 81 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/CodeAlarmRulesController.java

@@ -0,0 +1,81 @@
+package com.gbd.demp.info.controller;
+
+import com.gbd.demp.info.entity.CodeAlarmRules;
+import com.gbd.demp.info.service.ICodeAlarmRulesService;
+import cc.mrbird.febs.common.core.entity.FebsResponse;
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.common.core.exception.FebsException;
+import cc.mrbird.febs.common.core.utils.FebsUtil;
+import lombok.extern.slf4j.Slf4j;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.Map;
+
+/**
+ * 告警规则编码表 Controller
+ *
+ * @author yjj
+ * @date 2020-09-08 14:53:39
+ */
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/info/codeAlarmRules")
+@RequiredArgsConstructor
+public class CodeAlarmRulesController {
+
+    private final ICodeAlarmRulesService codeAlarmRulesService;
+
+    @GetMapping
+//    @PreAuthorize("hasAuthority('codeAlarmRules:list')")
+    public FebsResponse getAllCodeAlarmRuless(CodeAlarmRules codeAlarmRules) {
+        return new FebsResponse().data(codeAlarmRulesService.findCodeAlarmRuless(codeAlarmRules));
+    }
+
+    @GetMapping("list")
+    @PreAuthorize("hasAuthority('codeAlarmRules:list')")
+    public FebsResponse codeAlarmRulesList(QueryRequest request, CodeAlarmRules codeAlarmRules) {
+        Map<String, Object> dataTable = FebsUtil.getDataTable(this.codeAlarmRulesService.findCodeAlarmRuless(request, codeAlarmRules));
+        return new FebsResponse().data(dataTable);
+    }
+
+    @PostMapping
+    @PreAuthorize("hasAuthority('codeAlarmRules:add')")
+    public void addCodeAlarmRules(@Valid CodeAlarmRules codeAlarmRules) throws FebsException {
+        try {
+            this.codeAlarmRulesService.createCodeAlarmRules(codeAlarmRules);
+        } catch (Exception e) {
+            String message = "新增CodeAlarmRules失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @DeleteMapping
+    @PreAuthorize("hasAuthority('codeAlarmRules:delete')")
+    public void deleteCodeAlarmRules(CodeAlarmRules codeAlarmRules) throws FebsException {
+        try {
+            this.codeAlarmRulesService.deleteCodeAlarmRules(codeAlarmRules);
+        } catch (Exception e) {
+            String message = "删除CodeAlarmRules失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @PutMapping
+    @PreAuthorize("hasAuthority('codeAlarmRules:update')")
+    public void updateCodeAlarmRules(CodeAlarmRules codeAlarmRules) throws FebsException {
+        try {
+            this.codeAlarmRulesService.updateCodeAlarmRules(codeAlarmRules);
+        } catch (Exception e) {
+            String message = "修改CodeAlarmRules失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+}

+ 81 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/CodeCompanyScaleController.java

@@ -0,0 +1,81 @@
+package com.gbd.demp.info.controller;
+
+import com.gbd.demp.info.entity.CodeCompanyScale;
+import com.gbd.demp.info.service.ICodeCompanyScaleService;
+import cc.mrbird.febs.common.core.entity.FebsResponse;
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.common.core.exception.FebsException;
+import cc.mrbird.febs.common.core.utils.FebsUtil;
+import lombok.extern.slf4j.Slf4j;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.Map;
+
+/**
+ * 企业规模编码表 Controller
+ *
+ * @author yjj
+ * @date 2020-08-26 23:12:33
+ */
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("codeCompanyScale")
+@RequiredArgsConstructor
+public class CodeCompanyScaleController {
+
+    private final ICodeCompanyScaleService codeCompanyScaleService;
+
+    @GetMapping
+//    @PreAuthorize("hasAuthority('codeCompanyScale:list')")
+    public FebsResponse getAllCodeCompanyScales(CodeCompanyScale codeCompanyScale) {
+        return new FebsResponse().data(codeCompanyScaleService.findCodeCompanyScales(codeCompanyScale));
+    }
+
+    @GetMapping("list")
+//    @PreAuthorize("hasAuthority('codeCompanyScale:list')")
+    public FebsResponse codeCompanyScaleList(QueryRequest request, CodeCompanyScale codeCompanyScale) {
+        Map<String, Object> dataTable = FebsUtil.getDataTable(this.codeCompanyScaleService.findCodeCompanyScales(request, codeCompanyScale));
+        return new FebsResponse().data(dataTable);
+    }
+
+    @PostMapping
+    @PreAuthorize("hasAuthority('codeCompanyScale:add')")
+    public void addCodeCompanyScale(@Valid CodeCompanyScale codeCompanyScale) throws FebsException {
+        try {
+            this.codeCompanyScaleService.createCodeCompanyScale(codeCompanyScale);
+        } catch (Exception e) {
+            String message = "新增CodeCompanyScale失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @DeleteMapping
+    @PreAuthorize("hasAuthority('codeCompanyScale:delete')")
+    public void deleteCodeCompanyScale(CodeCompanyScale codeCompanyScale) throws FebsException {
+        try {
+            this.codeCompanyScaleService.deleteCodeCompanyScale(codeCompanyScale);
+        } catch (Exception e) {
+            String message = "删除CodeCompanyScale失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @PutMapping
+    @PreAuthorize("hasAuthority('codeCompanyScale:update')")
+    public void updateCodeCompanyScale(CodeCompanyScale codeCompanyScale) throws FebsException {
+        try {
+            this.codeCompanyScaleService.updateCodeCompanyScale(codeCompanyScale);
+        } catch (Exception e) {
+            String message = "修改CodeCompanyScale失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+}

+ 81 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/CodeDustTypeController.java

@@ -0,0 +1,81 @@
+package com.gbd.demp.info.controller;
+
+import com.gbd.demp.info.entity.CodeDustType;
+import com.gbd.demp.info.service.ICodeDustTypeService;
+import cc.mrbird.febs.common.core.entity.FebsResponse;
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.common.core.exception.FebsException;
+import cc.mrbird.febs.common.core.utils.FebsUtil;
+import lombok.extern.slf4j.Slf4j;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.Map;
+
+/**
+ * 粉尘种类编码表 Controller
+ *
+ * @author yjj
+ * @date 2020-08-26 23:12:34
+ */
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/info/codeDustType")
+@RequiredArgsConstructor
+public class CodeDustTypeController {
+
+    private final ICodeDustTypeService codeDustTypeService;
+
+    @GetMapping
+//    @PreAuthorize("hasAuthority('codeDustType:list')")
+    public FebsResponse getAllCodeDustTypes(CodeDustType codeDustType) {
+        return new FebsResponse().data(codeDustTypeService.findCodeDustTypes(codeDustType));
+    }
+
+    @GetMapping("list")
+//    @PreAuthorize("hasAuthority('codeDustType:list')")
+    public FebsResponse codeDustTypeList(QueryRequest request, CodeDustType codeDustType) {
+        Map<String, Object> dataTable = FebsUtil.getDataTable(this.codeDustTypeService.findCodeDustTypes(request, codeDustType));
+        return new FebsResponse().data(dataTable);
+    }
+
+    @PostMapping
+    @PreAuthorize("hasAuthority('codeDustType:add')")
+    public void addCodeDustType(@Valid CodeDustType codeDustType) throws FebsException {
+        try {
+            this.codeDustTypeService.createCodeDustType(codeDustType);
+        } catch (Exception e) {
+            String message = "新增CodeDustType失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @DeleteMapping
+    @PreAuthorize("hasAuthority('codeDustType:delete')")
+    public void deleteCodeDustType(CodeDustType codeDustType) throws FebsException {
+        try {
+            this.codeDustTypeService.deleteCodeDustType(codeDustType);
+        } catch (Exception e) {
+            String message = "删除CodeDustType失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @PutMapping
+    @PreAuthorize("hasAuthority('codeDustType:update')")
+    public void updateCodeDustType(CodeDustType codeDustType) throws FebsException {
+        try {
+            this.codeDustTypeService.updateCodeDustType(codeDustType);
+        } catch (Exception e) {
+            String message = "修改CodeDustType失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+}

+ 81 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/CodeIndustryController.java

@@ -0,0 +1,81 @@
+package com.gbd.demp.info.controller;
+
+import com.gbd.demp.info.entity.CodeIndustry;
+import com.gbd.demp.info.service.ICodeIndustryService;
+import cc.mrbird.febs.common.core.entity.FebsResponse;
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.common.core.exception.FebsException;
+import cc.mrbird.febs.common.core.utils.FebsUtil;
+import lombok.extern.slf4j.Slf4j;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.Map;
+
+/**
+ * 所属行业编码表 Controller
+ *
+ * @author yjj
+ * @date 2020-08-26 23:12:38
+ */
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/info/codeIndustry")
+@RequiredArgsConstructor
+public class CodeIndustryController {
+
+    private final ICodeIndustryService codeIndustryService;
+
+    @GetMapping
+//    @PreAuthorize("hasAuthority('codeIndustry:list')")
+    public FebsResponse getAllCodeIndustrys(CodeIndustry codeIndustry) {
+        return new FebsResponse().data(codeIndustryService.findCodeIndustrys(codeIndustry));
+    }
+
+    @GetMapping("list")
+//    @PreAuthorize("hasAuthority('codeIndustry:list')")
+    public FebsResponse codeIndustryList(QueryRequest request, CodeIndustry codeIndustry) {
+        Map<String, Object> dataTable = FebsUtil.getDataTable(this.codeIndustryService.findCodeIndustrys(request, codeIndustry));
+        return new FebsResponse().data(dataTable);
+    }
+
+    @PostMapping
+    @PreAuthorize("hasAuthority('codeIndustry:add')")
+    public void addCodeIndustry(@Valid CodeIndustry codeIndustry) throws FebsException {
+        try {
+            this.codeIndustryService.createCodeIndustry(codeIndustry);
+        } catch (Exception e) {
+            String message = "新增CodeIndustry失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @DeleteMapping
+    @PreAuthorize("hasAuthority('codeIndustry:delete')")
+    public void deleteCodeIndustry(CodeIndustry codeIndustry) throws FebsException {
+        try {
+            this.codeIndustryService.deleteCodeIndustry(codeIndustry);
+        } catch (Exception e) {
+            String message = "删除CodeIndustry失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @PutMapping
+    @PreAuthorize("hasAuthority('codeIndustry:update')")
+    public void updateCodeIndustry(CodeIndustry codeIndustry) throws FebsException {
+        try {
+            this.codeIndustryService.updateCodeIndustry(codeIndustry);
+        } catch (Exception e) {
+            String message = "修改CodeIndustry失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+}

+ 81 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/CodeWorkshopLayoutController.java

@@ -0,0 +1,81 @@
+package com.gbd.demp.info.controller;
+
+import com.gbd.demp.info.entity.CodeWorkshopLayout;
+import com.gbd.demp.info.service.ICodeWorkshopLayoutService;
+import cc.mrbird.febs.common.core.entity.FebsResponse;
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.common.core.exception.FebsException;
+import cc.mrbird.febs.common.core.utils.FebsUtil;
+import lombok.extern.slf4j.Slf4j;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.Map;
+
+/**
+ * 车间布局编码表 Controller
+ *
+ * @author yjj
+ * @date 2020-08-26 23:11:38
+ */
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("codeWorkshopLayout")
+@RequiredArgsConstructor
+public class CodeWorkshopLayoutController {
+
+    private final ICodeWorkshopLayoutService codeWorkshopLayoutService;
+
+    @GetMapping
+//    @PreAuthorize("hasAuthority('codeWorkshopLayout:list')")
+    public FebsResponse getAllCodeWorkshopLayouts(CodeWorkshopLayout codeWorkshopLayout) {
+        return new FebsResponse().data(codeWorkshopLayoutService.findCodeWorkshopLayouts(codeWorkshopLayout));
+    }
+
+    @GetMapping("list")
+//    @PreAuthorize("hasAuthority('codeWorkshopLayout:list')")
+    public FebsResponse codeWorkshopLayoutList(QueryRequest request, CodeWorkshopLayout codeWorkshopLayout) {
+        Map<String, Object> dataTable = FebsUtil.getDataTable(this.codeWorkshopLayoutService.findCodeWorkshopLayouts(request, codeWorkshopLayout));
+        return new FebsResponse().data(dataTable);
+    }
+
+    @PostMapping
+    @PreAuthorize("hasAuthority('codeWorkshopLayout:add')")
+    public void addCodeWorkshopLayout(@Valid CodeWorkshopLayout codeWorkshopLayout) throws FebsException {
+        try {
+            this.codeWorkshopLayoutService.createCodeWorkshopLayout(codeWorkshopLayout);
+        } catch (Exception e) {
+            String message = "新增CodeWorkshopLayout失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @DeleteMapping
+    @PreAuthorize("hasAuthority('codeWorkshopLayout:delete')")
+    public void deleteCodeWorkshopLayout(CodeWorkshopLayout codeWorkshopLayout) throws FebsException {
+        try {
+            this.codeWorkshopLayoutService.deleteCodeWorkshopLayout(codeWorkshopLayout);
+        } catch (Exception e) {
+            String message = "删除CodeWorkshopLayout失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @PutMapping
+    @PreAuthorize("hasAuthority('codeWorkshopLayout:update')")
+    public void updateCodeWorkshopLayout(CodeWorkshopLayout codeWorkshopLayout) throws FebsException {
+        try {
+            this.codeWorkshopLayoutService.updateCodeWorkshopLayout(codeWorkshopLayout);
+        } catch (Exception e) {
+            String message = "修改CodeWorkshopLayout失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+}

+ 81 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/CodeWorkshopStructureController.java

@@ -0,0 +1,81 @@
+package com.gbd.demp.info.controller;
+
+import com.gbd.demp.info.entity.CodeWorkshopStructure;
+import com.gbd.demp.info.service.ICodeWorkshopStructureService;
+import cc.mrbird.febs.common.core.entity.FebsResponse;
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.common.core.exception.FebsException;
+import cc.mrbird.febs.common.core.utils.FebsUtil;
+import lombok.extern.slf4j.Slf4j;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.Map;
+
+/**
+ * 车间结构编码表 Controller
+ *
+ * @author yjj
+ * @date 2020-08-26 23:12:01
+ */
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("codeWorkshopStructure")
+@RequiredArgsConstructor
+public class CodeWorkshopStructureController {
+
+    private final ICodeWorkshopStructureService codeWorkshopStructureService;
+
+    @GetMapping
+//    @PreAuthorize("hasAuthority('codeWorkshopStructure:list')")
+    public FebsResponse getAllCodeWorkshopStructures(CodeWorkshopStructure codeWorkshopStructure) {
+        return new FebsResponse().data(codeWorkshopStructureService.findCodeWorkshopStructures(codeWorkshopStructure));
+    }
+
+    @GetMapping("list")
+//    @PreAuthorize("hasAuthority('codeWorkshopStructure:list')")
+    public FebsResponse codeWorkshopStructureList(QueryRequest request, CodeWorkshopStructure codeWorkshopStructure) {
+        Map<String, Object> dataTable = FebsUtil.getDataTable(this.codeWorkshopStructureService.findCodeWorkshopStructures(request, codeWorkshopStructure));
+        return new FebsResponse().data(dataTable);
+    }
+
+    @PostMapping
+    @PreAuthorize("hasAuthority('codeWorkshopStructure:add')")
+    public void addCodeWorkshopStructure(@Valid CodeWorkshopStructure codeWorkshopStructure) throws FebsException {
+        try {
+            this.codeWorkshopStructureService.createCodeWorkshopStructure(codeWorkshopStructure);
+        } catch (Exception e) {
+            String message = "新增CodeWorkshopStructure失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @DeleteMapping
+    @PreAuthorize("hasAuthority('codeWorkshopStructure:delete')")
+    public void deleteCodeWorkshopStructure(CodeWorkshopStructure codeWorkshopStructure) throws FebsException {
+        try {
+            this.codeWorkshopStructureService.deleteCodeWorkshopStructure(codeWorkshopStructure);
+        } catch (Exception e) {
+            String message = "删除CodeWorkshopStructure失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @PutMapping
+    @PreAuthorize("hasAuthority('codeWorkshopStructure:update')")
+    public void updateCodeWorkshopStructure(CodeWorkshopStructure codeWorkshopStructure) throws FebsException {
+        try {
+            this.codeWorkshopStructureService.updateCodeWorkshopStructure(codeWorkshopStructure);
+        } catch (Exception e) {
+            String message = "修改CodeWorkshopStructure失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+}

+ 109 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/CompanyInfoController.java

@@ -0,0 +1,109 @@
+package com.gbd.demp.info.controller;
+
+import cc.mrbird.febs.common.core.entity.FebsResponse;
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.common.core.exception.FebsException;
+import cc.mrbird.febs.common.core.utils.FebsUtil;
+import com.gbd.demp.info.entity.CompanyInfo;
+import com.gbd.demp.info.service.ICompanyInfoService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.client.RestTemplate;
+
+import javax.validation.Valid;
+import java.util.Map;
+
+/**
+ * 企业信息表 Controller
+ *
+ * @author yjj
+ * @date 2020-08-26 23:12:29
+ */
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/info/companyInfo")
+@RequiredArgsConstructor
+public class CompanyInfoController {
+
+    private final ICompanyInfoService companyInfoService;
+
+    @GetMapping
+    @PreAuthorize("hasAuthority('companyInfo:list')")
+    public FebsResponse getAllCompanyInfos(CompanyInfo companyInfo) {
+        return new FebsResponse().data(companyInfoService.findCompanyInfos(companyInfo));
+    }
+
+    @GetMapping("list")
+    @PreAuthorize("hasAuthority('companyInfo:view')")
+    public FebsResponse companyInfoList(QueryRequest request, CompanyInfo companyInfo) {
+        Map<String, Object> dataTable = FebsUtil.getDataTable(this.companyInfoService.getAllCompanyInfos(request, companyInfo));
+        return new FebsResponse().data(dataTable);
+    }
+
+    @PostMapping
+    @PreAuthorize("hasAuthority('companyInfo:add')")
+    public void addCompanyInfo(@Valid CompanyInfo companyInfo) throws FebsException {
+        try {
+            this.companyInfoService.createCompanyInfo(companyInfo);
+        } catch (Exception e) {
+            String message = "新增CompanyInfo失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @DeleteMapping
+    @PreAuthorize("hasAuthority('companyInfo:delete')")
+    public void deleteCompanyInfo(CompanyInfo companyInfo) throws FebsException {
+        try {
+            this.companyInfoService.deleteCompanyInfo(companyInfo);
+        } catch (Exception e) {
+            String message = "删除CompanyInfo失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @PutMapping
+    @PreAuthorize("hasAuthority('companyInfo:update')")
+    public void updateCompanyInfo(CompanyInfo companyInfo) throws FebsException {
+        try {
+            this.companyInfoService.updateCompanyInfo(companyInfo);
+        } catch (Exception e) {
+            String message = "修改CompanyInfo失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @RequestMapping("getThirdPartyCompanyInfo")
+    public ResponseEntity getThirdPartyCompanyInfo(String companyName, Integer page, Integer size) {
+        RestTemplate template = new RestTemplate();
+        String url = "http://zhzf.sipac.gov.cn/szyqaj/app/common/enterpriseList";
+        MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<String, Object>();
+        paramMap.add("token", "8a81e3166b379ce3016b37bab1bc000d");
+        if (!"".equals(companyName)) {
+            paramMap.add("companyName", companyName);
+        }
+        HttpHeaders headers = new HttpHeaders();
+        headers.add("User-Agent", "Chrome/69.0.3497.81 Safari/537.36");
+        HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<MultiValueMap<String, Object>>(paramMap, headers);
+        ResponseEntity<String> response = template.postForEntity(url, httpEntity, String.class);
+        System.out.println(response);
+//        String result = template.postForObject(url, paramMap, String.class);
+//        System.out.println("result1==================" + result);
+        return response;
+
+    }
+
+
+}

+ 181 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/DeviceInfoController.java

@@ -0,0 +1,181 @@
+package com.gbd.demp.info.controller;
+
+import cc.mrbird.febs.common.core.entity.FebsResponse;
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.common.core.entity.constant.StringConstant;
+import cc.mrbird.febs.common.core.exception.FebsException;
+import cc.mrbird.febs.common.core.utils.FebsUtil;
+import com.alibaba.fastjson.JSON;
+import com.gbd.demp.info.entity.DeviceInfo;
+import com.gbd.demp.info.entity.ThirdPartyUser;
+import com.gbd.demp.info.service.IDeviceInfoService;
+import com.gbd.demp.info.utils.ThirdPartyUtils;
+import com.gbd.demp.info.vo.DeviceEventRespone;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.propertyeditors.CustomDateEditor;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.WebDataBinder;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.context.request.WebRequest;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 设备信息表 Controller
+ *
+ * @author yjj
+ * @date 2020-09-02 14:08:03
+ */
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/info/deviceInfo")
+@RequiredArgsConstructor
+public class DeviceInfoController {
+
+    private final IDeviceInfoService deviceInfoService;
+
+
+    /**
+     * 处理日期
+     *
+     * @param binder
+     * @param request
+     */
+    @InitBinder
+    protected void init(WebDataBinder binder, WebRequest request) {
+        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
+    }
+
+
+    @GetMapping
+    @PreAuthorize("hasAuthority('deviceInfo:list')")
+    public FebsResponse getAllDeviceInfos(DeviceInfo deviceInfo) {
+        return new FebsResponse().data(deviceInfoService.findDeviceInfos(deviceInfo));
+    }
+
+    /**
+     * 分页查询
+     *
+     * @param request
+     * @param deviceInfo
+     * @return
+     */
+    @GetMapping("list")
+    @PreAuthorize("hasAuthority('deviceInfo:view')")
+    public FebsResponse deviceInfoList(@RequestHeader(value = "thirdPartyToken") String thirdPartyToken, QueryRequest request, DeviceInfo deviceInfo) {
+        ThirdPartyUser u = ThirdPartyUtils.getThirdPartyUserInfo(thirdPartyToken);
+        Map<String, Object> dataTable = null;
+        if (u.getUserId() != null) {
+            if (u.getEnterpriseId() != null) {//企业
+                deviceInfo.setCompanyName(u.getEnterpriseName());
+                dataTable = FebsUtil.getDataTable(this.deviceInfoService.findDeviceInfos(request, deviceInfo));
+            } else if (u.getPossession() != null) {//功能区
+                deviceInfo.setPossession(u.getPossession());
+                dataTable = FebsUtil.getDataTable(this.deviceInfoService.findDeviceInfos(request, deviceInfo));
+            } else //监管人员
+                dataTable = FebsUtil.getDataTable(this.deviceInfoService.findDeviceInfos(request, deviceInfo));
+            return new FebsResponse().data(dataTable);
+        } else
+            return new FebsResponse().code(HttpStatus.FORBIDDEN);
+    }
+
+    @PostMapping
+    @PreAuthorize("hasAuthority('deviceInfo:add')")
+    public void addDeviceInfo(@Valid DeviceInfo deviceInfo) throws FebsException {
+        try {
+            this.deviceInfoService.createDeviceInfo(deviceInfo);
+        } catch (Exception e) {
+            String message = "新增DeviceInfo失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @DeleteMapping("/{deviceIds}")
+    @PreAuthorize("hasAuthority('deviceInfo:delete')")
+    public void deleteDeviceInfo(@NotBlank(message = "{required}") @PathVariable String deviceIds) throws FebsException {
+        try {
+            if (deviceIds.contains(",")) {
+                String[] ids = deviceIds.split(StringConstant.COMMA);
+                this.deviceInfoService.deleteDeviceInfo(ids);
+            } else
+                this.deviceInfoService.removeById(deviceIds);
+        } catch (Exception e) {
+            String message = "删除DeviceInfo失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @PutMapping
+    @PreAuthorize("hasAuthority('deviceInfo:update')")
+    public void updateDeviceInfo(DeviceInfo deviceInfo) throws FebsException {
+        try {
+            this.deviceInfoService.updateDeviceInfo(deviceInfo);
+        } catch (Exception e) {
+            String message = "修改DeviceInfo失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @RequestMapping("/setWorkTime")
+    @PreAuthorize("hasAuthority('deviceInfo:update')")
+    public void setWorkTime(String from, String to, String id) throws FebsException {
+        try {
+            this.deviceInfoService.setWorkTime(from, to, id);
+        } catch (Exception e) {
+            String message = "设置工作时间失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    /**
+     * 2 .监测企业点位信息
+     *
+     * @throws FebsException
+     */
+    @PostMapping("/getMonitorMap")
+    @ResponseBody
+    public Map<String, String> getMonitorMap() throws FebsException {
+        try {
+            Map<String, String> resultMap = this.deviceInfoService.getMonitorMap();
+            log.info("getMonitorMap result {}" + JSON.toJSONString(resultMap));
+            return resultMap;
+        } catch (Exception e) {
+            String message = "监测企业点位信息查询失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    /**
+     * 3.监测图层点击详情
+     */
+    @PostMapping("/getMonitorLayerClickMap")
+    @ResponseBody
+    public List<DeviceEventRespone> getMonitorLayerClickMap(String companyId, String alarmId, String deviceId) throws FebsException {
+        try {
+            List<DeviceEventRespone> respones = this.deviceInfoService.getMonitorLayerClickMap(companyId, alarmId, deviceId);
+            log.info("getMonitorLayerClickMap respones {}" + JSON.toJSONString(respones));
+            return respones;
+        } catch (Exception e) {
+            String message = "监测图层点击详情信息失败!";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+
+    }
+}

+ 112 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/DeviceThresholdController.java

@@ -0,0 +1,112 @@
+package com.gbd.demp.info.controller;
+
+import cc.mrbird.febs.common.core.entity.constant.StringConstant;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.gbd.demp.info.entity.DeviceThreshold;
+import com.gbd.demp.info.service.IDeviceThresholdService;
+import cc.mrbird.febs.common.core.entity.FebsResponse;
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.common.core.exception.FebsException;
+import cc.mrbird.febs.common.core.utils.FebsUtil;
+import lombok.extern.slf4j.Slf4j;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 设备(传感器)阈值设置 Controller
+ *
+ * @author yjj
+ * @date 2020-09-08 14:53:46
+ */
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/info/deviceThreshold")
+@RequiredArgsConstructor
+public class DeviceThresholdController {
+
+    private final IDeviceThresholdService deviceThresholdService;
+
+    @GetMapping
+    @PreAuthorize("hasAuthority('deviceThreshold:view')")
+    public FebsResponse getAllDeviceThresholds(DeviceThreshold deviceThreshold) {
+        return new FebsResponse().data(deviceThresholdService.findDeviceThresholds(deviceThreshold));
+    }
+
+    /***
+     * 获取阈值信息接口,需要传sensorId
+     * @param request
+     * @param deviceThreshold
+     * @return
+     */
+    @GetMapping("list")
+    @PreAuthorize("hasAuthority('deviceThreshold:view')")
+    public FebsResponse deviceThresholdList(QueryRequest request, DeviceThreshold deviceThreshold) {
+        Map<String, Object> dataTable = FebsUtil.getDataTable(this.deviceThresholdService.findDeviceThresholds(request, deviceThreshold));
+        return new FebsResponse().data(dataTable);
+    }
+
+    /**
+     * 新增
+     *
+     * @param deviceThresholds
+     * @throws FebsException
+     */
+    @PostMapping
+    @PreAuthorize("hasAuthority('deviceThreshold:add')")
+    public void addDeviceThreshold(@RequestParam String deviceThresholds) throws FebsException {
+        try {
+            List<DeviceThreshold> dts = JSONObject.parseArray(deviceThresholds, DeviceThreshold.class);
+            this.deviceThresholdService.createDeviceThreshold(dts);
+        } catch (Exception e) {
+            String message = "新增DeviceThreshold失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    /**
+     * 删除
+     *
+     * @param ids
+     * @throws FebsException
+     */
+    @DeleteMapping("/{ids}")
+    @PreAuthorize("hasAuthority('deviceThreshold:delete')")
+    public void deleteDeviceThreshold(@NotBlank(message = "{required}") @PathVariable String ids) throws FebsException {
+        try {
+            String[] ids_ = ids.split(StringConstant.COMMA);
+            this.deviceThresholdService.deleteDeviceThreshold(ids_);
+        } catch (Exception e) {
+            String message = "删除DeviceThreshold失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    /**
+     * 修改
+     *
+     * @param deviceThreshold
+     * @throws FebsException
+     */
+    @PutMapping
+    @PreAuthorize("hasAuthority('deviceThreshold:update')")
+    public void updateDeviceThreshold(DeviceThreshold deviceThreshold) throws FebsException {
+        try {
+            this.deviceThresholdService.updateDeviceThreshold(deviceThreshold);
+        } catch (Exception e) {
+            String message = "修改DeviceThreshold失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+}

+ 120 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/SensorInfoController.java

@@ -0,0 +1,120 @@
+package com.gbd.demp.info.controller;
+
+import com.gbd.demp.info.entity.SensorInfo;
+import com.gbd.demp.info.entity.ThirdPartyUser;
+import com.gbd.demp.info.service.ISensorInfoService;
+import cc.mrbird.febs.common.core.entity.FebsResponse;
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.common.core.exception.FebsException;
+import cc.mrbird.febs.common.core.utils.FebsUtil;
+import com.gbd.demp.info.utils.ThirdPartyUtils;
+import lombok.extern.slf4j.Slf4j;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.Map;
+
+/**
+ * Controller
+ *
+ * @author yjj
+ * @date 2020-09-17 16:18:11
+ */
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/info/sensorInfo")
+@RequiredArgsConstructor
+public class SensorInfoController {
+
+    private final ISensorInfoService sensorInfoService;
+
+    @GetMapping
+    @PreAuthorize("hasAuthority('sensorInfo:list')")
+    public FebsResponse getAllSensorInfos(SensorInfo sensorInfo) {
+        return new FebsResponse().data(sensorInfoService.findSensorInfos(sensorInfo));
+    }
+
+    /**
+     * 获取所有传感器信息
+     *
+     * @param request
+     * @param sensorInfo
+     * @return
+     */
+    @GetMapping("list")
+    @PreAuthorize("hasAuthority('sensorInfo:view')")
+    public FebsResponse sensorInfoList(@RequestHeader(value = "thirdPartyToken") String thirdPartyToken,QueryRequest request, SensorInfo sensorInfo) {
+        ThirdPartyUser u = ThirdPartyUtils.getThirdPartyUserInfo(thirdPartyToken);
+        Map<String, Object> dataTable = null;
+        if (u.getUserId() != null) {
+            if (u.getEnterpriseId() != null) {//企业
+                sensorInfo.setCompanyName(u.getEnterpriseName());
+                dataTable = FebsUtil.getDataTable(this.sensorInfoService.findSensorInfos(request, sensorInfo,u.getPossession()));
+            } else if (u.getPossession() != null) {//功能区
+                dataTable = FebsUtil.getDataTable(this.sensorInfoService.findSensorInfos(request, sensorInfo,u.getPossession()));
+            } else //监管人员
+                dataTable = FebsUtil.getDataTable(this.sensorInfoService.findSensorInfos(request, sensorInfo,u.getPossession()));
+            return new FebsResponse().data(dataTable);
+        } else
+            return new FebsResponse().code(HttpStatus.FORBIDDEN);
+    }
+
+    /**
+     * 新增传感器信息
+     *
+     * @param sensorInfo
+     * @throws FebsException
+     */
+    @PostMapping
+    @PreAuthorize("hasAuthority('sensorInfo:add')")
+    public void addSensorInfo(@Valid SensorInfo sensorInfo) throws FebsException {
+        try {
+            this.sensorInfoService.createSensorInfo(sensorInfo);
+        } catch (Exception e) {
+            String message = "新增SensorInfo失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    /**
+     * 删除传感器信息
+     *
+     * @param id 主键
+     * @throws FebsException
+     */
+    @DeleteMapping
+    @PreAuthorize("hasAuthority('sensorInfo:delete')")
+    public void deleteSensorInfo(Long id) throws FebsException {
+        try {
+            this.sensorInfoService.deleteSensorInfo(id);
+        } catch (Exception e) {
+            String message = "删除SensorInfo失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    /**
+     * 修改传感器信息
+     *
+     * @param sensorInfo
+     * @throws FebsException
+     */
+    @PutMapping
+    @PreAuthorize("hasAuthority('sensorInfo:update')")
+    public void updateSensorInfo(SensorInfo sensorInfo) throws FebsException {
+        try {
+            this.sensorInfoService.updateSensorInfo(sensorInfo);
+        } catch (Exception e) {
+            String message = "修改SensorInfo失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+}

+ 107 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/SensorVideoController.java

@@ -0,0 +1,107 @@
+package com.gbd.demp.info.controller;
+
+import cc.mrbird.febs.common.core.entity.constant.StringConstant;
+import com.gbd.demp.info.entity.SensorVideo;
+import com.gbd.demp.info.service.ISensorVideoService;
+import cc.mrbird.febs.common.core.entity.FebsResponse;
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.common.core.exception.FebsException;
+import cc.mrbird.febs.common.core.utils.FebsUtil;
+import lombok.extern.slf4j.Slf4j;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import java.util.Map;
+
+/**
+ * 传感器监控关联表 Controller
+ *
+ * @author yjj
+ * @date 2020-10-18 19:39:45
+ */
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/info/sensorVideo")
+@RequiredArgsConstructor
+public class SensorVideoController {
+
+    private final ISensorVideoService sensorVideoService;
+
+    @GetMapping
+    @PreAuthorize("hasAuthority('sensorVideo:list')")
+    public FebsResponse getAllSensorVideos(SensorVideo sensorVideo) {
+        return new FebsResponse().data(sensorVideoService.findSensorVideos(sensorVideo));
+    }
+
+    @GetMapping("list")
+    @PreAuthorize("hasAuthority('sensorVideo:list')")
+    public FebsResponse sensorVideoList(QueryRequest request, SensorVideo sensorVideo) {
+        Map<String, Object> dataTable = FebsUtil.getDataTable(this.sensorVideoService.findSensorVideos(request, sensorVideo));
+        return new FebsResponse().data(dataTable);
+    }
+
+    @PostMapping
+    @PreAuthorize("hasAuthority('sensorVideo:add')")
+    public void addSensorVideo(String deviceId, String sensorId, String videoIds) throws FebsException {
+        try {
+            if (videoIds.contains(",")) {
+                String[] ids = videoIds.split(StringConstant.COMMA);
+                for (String id : ids) {
+                    SensorVideo s = new SensorVideo();
+                    s.setDeviceId(deviceId);
+                    s.setSensorId(sensorId);
+                    s.setVideoId(id);
+                    this.sensorVideoService.createSensorVideo(s);
+                }
+            } else {
+                SensorVideo s = new SensorVideo();
+                s.setDeviceId(deviceId);
+                s.setSensorId(sensorId);
+                s.setVideoId(videoIds);
+                this.sensorVideoService.createSensorVideo(s);
+            }
+        } catch (Exception e) {
+            String message = "新增SensorVideo失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @DeleteMapping
+    @PreAuthorize("hasAuthority('sensorVideo:delete')")
+    public void deleteSensorVideo(String deviceId, String sensorId, String videoIds) throws FebsException {
+        try {
+            if (videoIds.contains(",")) {
+                String[] ids = videoIds.split(StringConstant.COMMA);
+                for (String id : ids) {
+                    this.sensorVideoService.deleteSensorVideo(deviceId, sensorId, id);
+                }
+            } else {
+                this.sensorVideoService.deleteSensorVideo(deviceId, sensorId, videoIds);
+            }
+        } catch (Exception e) {
+            String message = "删除SensorVideo失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @PutMapping
+    @PreAuthorize("hasAuthority('sensorVideo:update')")
+    public void updateSensorVideo(SensorVideo sensorVideo) throws FebsException {
+        try {
+            this.sensorVideoService.updateSensorVideo(sensorVideo);
+        } catch (Exception e) {
+            String message = "修改SensorVideo失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+
+}

+ 139 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/controller/VideoInfoController.java

@@ -0,0 +1,139 @@
+package com.gbd.demp.info.controller;
+
+import cc.mrbird.febs.common.core.entity.FebsResponse;
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.common.core.exception.FebsException;
+import cc.mrbird.febs.common.core.utils.FebsUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.gbd.demp.info.entity.ThirdPartyUser;
+import com.gbd.demp.info.entity.VideoInfo;
+import com.gbd.demp.info.service.IVideoInfoService;
+import com.gbd.demp.info.utils.ThirdPartyUtils;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 视频监控信息表 Controller
+ *
+ * @author yjj
+ * @date 2020-10-10 21:34:56
+ */
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/info/videoInfo")
+@RequiredArgsConstructor
+public class VideoInfoController {
+
+    private final IVideoInfoService videoInfoService;
+
+    @GetMapping
+    @PreAuthorize("hasAuthority('videoInfo:list')")
+    public FebsResponse getAllVideoInfos(VideoInfo videoInfo) {
+        return new FebsResponse().data(videoInfoService.findVideoInfos(videoInfo));
+    }
+
+    @GetMapping("list")
+    @PreAuthorize("hasAuthority('videoInfo:list')")
+    public FebsResponse videoInfoList(@RequestHeader(value = "thirdPartyToken") String thirdPartyToken, QueryRequest request, VideoInfo videoInfo, String sensorId) {
+        ThirdPartyUser u = ThirdPartyUtils.getThirdPartyUserInfo(thirdPartyToken);
+        Map<String, Object> dataTable = null;
+        if (u.getUserId() != null) {
+            if (u.getEnterpriseId() != null) {//企业
+                videoInfo.setCompanyName(u.getEnterpriseName());
+                dataTable = FebsUtil.getDataTable(this.videoInfoService.findVideoInfos(request, videoInfo, sensorId, u.getPossession()));
+            } else if (u.getPossession() != null) {//功能区
+                dataTable = FebsUtil.getDataTable(this.videoInfoService.findVideoInfos(request, videoInfo, sensorId, u.getPossession()));
+            } else //监管人员
+                dataTable = FebsUtil.getDataTable(this.videoInfoService.findVideoInfos(request, videoInfo, sensorId, u.getPossession()));
+            return new FebsResponse().data(dataTable);
+        } else
+            return new FebsResponse().code(HttpStatus.FORBIDDEN);
+    }
+
+    @PostMapping
+    @PreAuthorize("hasAuthority('videoInfo:add')")
+    public void addVideoInfo(@Valid VideoInfo videoInfo) throws FebsException {
+        try {
+            this.videoInfoService.createVideoInfo(videoInfo);
+        } catch (Exception e) {
+            String message = "新增VideoInfo失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @DeleteMapping
+    @PreAuthorize("hasAuthority('videoInfo:delete')")
+    public void deleteVideoInfo(VideoInfo videoInfo) throws FebsException {
+        try {
+            this.videoInfoService.deleteVideoInfo(videoInfo);
+        } catch (Exception e) {
+            String message = "删除VideoInfo失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @PutMapping
+    @PreAuthorize("hasAuthority('videoInfo:update')")
+    public void updateVideoInfo(VideoInfo videoInfo) throws FebsException {
+        try {
+            this.videoInfoService.updateVideoInfo(videoInfo);
+        } catch (Exception e) {
+            String message = "修改VideoInfo失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+
+    /**
+     * 从第三方平台同步监控信息
+     *
+     * @throws FebsException
+     */
+    @RequestMapping("/syncInfo")
+    public void syncInfo() throws FebsException {
+        try {
+            String token = "8a81e3166b379ce3016b37bab1bc000d";
+            String url = "http://zhzf.sipac.gov.cn/szyqaj/app/common/getVideoList?token=8a81e3166b379ce3016b37bab1bc000d";
+            ResponseEntity<String> response = ThirdPartyUtils.getThirdPartyInfo(url, token);
+            JSONObject json = JSONObject.parseObject(response.getBody());
+            System.out.println(json.getString("datas"));
+            List<VideoInfo> list = new ArrayList<VideoInfo>(JSONArray.parseArray(json.getString("datas"), VideoInfo.class));
+//            VideoInfo v = JSONObject.parseObject(response.getBody(), VideoInfo.class);
+            for (VideoInfo v : list) {
+                this.videoInfoService.createVideoInfo(v);
+            }
+        } catch (Exception e) {
+            String message = "修改VideoInfo失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+
+    /**
+     * 获取穿梭框数据
+     *
+     * @param
+     * @return
+     */
+    @RequestMapping("getTransferData")
+    @PreAuthorize("hasAuthority('videoInfo:list')")
+    public FebsResponse getTransferData(String deviceId, String sensorId, String companyId) {
+        return new FebsResponse().data(videoInfoService.getNoData(deviceId, sensorId, companyId));
+    }
+}

+ 86 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/AlarmEvent.java

@@ -0,0 +1,86 @@
+package com.gbd.demp.info.entity;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* 告警事件表 Entity
+*
+* @author yjj
+* @date 2020-09-08 14:53:36
+*/
+@Data
+@TableName("t_alarm_event")
+public class AlarmEvent {
+
+    /**
+     * 
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 设备id
+     */
+    @TableField("device_id")
+    private String deviceId;
+
+    /**
+     * 传感器id
+     */
+    @TableField("sensor_id")
+    private String sensorId;
+
+    /**
+     * 告警级别
+     */
+    @TableField("alarm_level")
+    private String alarmLevel;
+
+    /**
+     * 
+     */
+    @TableField("alarm_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date alarmTime;
+
+    /**
+     * 事件处理状态
+     */
+    @TableField("event_status")
+    private Integer eventStatus;
+
+    /**
+     * 处理时间
+     */
+    @TableField("finish_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date finishTime;
+
+    /**
+     * 是否上报
+     */
+    @TableField("isReport")
+    private Integer isreport;
+
+    /**
+     * 是否上报
+     */
+    @TableField("reason")
+    private Integer reason;
+
+
+
+    /**
+     * 安监平台id
+     */
+    @TableField("third_party_id")
+    private Integer thirdPartyId;
+
+}

+ 37 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/CodeAlarmRules.java

@@ -0,0 +1,37 @@
+package com.gbd.demp.info.entity;
+
+import lombok.Data;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+ * 告警规则编码表 Entity
+ *
+ * @author yjj
+ * @date 2020-09-08 14:53:39
+ */
+@Data
+@TableName("t_code_alarm_rules")
+public class CodeAlarmRules {
+
+    /**
+     *
+     */
+    @TableId(value = "code", type = IdType.AUTO)
+    private String code;
+
+    /**
+     *
+     */
+    @TableField("value")
+    private String value;
+
+    /**
+     * 告警级别对应的颜色,用于大屏接口
+     */
+    @TableField("color")
+    private String color;
+
+}

+ 31 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/CodeCompanyScale.java

@@ -0,0 +1,31 @@
+package com.gbd.demp.info.entity;
+
+import lombok.Data;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* 企业规模编码表 Entity
+*
+* @author yjj
+* @date 2020-08-26 23:12:33
+*/
+@Data
+@TableName("t_code_company_scale")
+public class CodeCompanyScale {
+
+    /**
+     * 
+     */
+    @TableId(value = "code", type = IdType.AUTO)
+    private String code;
+
+    /**
+     * 
+     */
+    @TableField("value")
+    private String value;
+
+}

+ 85 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/CodeDustType.java

@@ -0,0 +1,85 @@
+package com.gbd.demp.info.entity;
+
+import lombok.Data;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* 粉尘种类编码表 Entity
+*
+* @author yjj
+* @date 2020-09-17 16:18:28
+*/
+@Data
+@TableName("t_code_dust_type")
+public class CodeDustType {
+
+    /**
+     * 编码
+     */
+    @TableId(value = "code", type = IdType.AUTO)
+    private String code;
+
+    /**
+     * 行业类别编码
+     */
+    @TableField("industry_code")
+    private String industryCode;
+
+    /**
+     * 粉尘名称
+     */
+    @TableField("dust_name")
+    private String dustName;
+
+    /**
+     * 中位径
+     */
+    @TableField("median_diameter")
+    private String medianDiameter;
+
+    /**
+     * 爆炸下限
+     */
+    @TableField("low_explosive_limit")
+    private String lowExplosiveLimit;
+
+    /**
+     * 最小点火能
+     */
+    @TableField("minimum_ignition_energy")
+    private String minimumIgnitionEnergy;
+
+    /**
+     * 最大爆炸压力
+     */
+    @TableField("maximum_explosion_pressure")
+    private String maximumExplosionPressure;
+
+    /**
+     * 爆炸指数
+     */
+    @TableField("explosion_index")
+    private String explosionIndex;
+
+    /**
+     * 粉尘云引燃温度
+     */
+    @TableField("dust_cloud_Ignition_temperature")
+    private String dustCloudIgnitionTemperature;
+
+    /**
+     * 粉尘层引燃温度
+     */
+    @TableField("dust_layer_Ignition_temperature")
+    private String dustLayerIgnitionTemperature;
+
+    /**
+     * 爆炸危险等级
+     */
+    @TableField("explosion_hazard_level")
+    private String explosionHazardLevel;
+
+}

+ 31 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/CodeIndustry.java

@@ -0,0 +1,31 @@
+package com.gbd.demp.info.entity;
+
+import lombok.Data;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* 所属行业编码表 Entity
+*
+* @author yjj
+* @date 2020-08-26 23:12:38
+*/
+@Data
+@TableName("t_code_industry")
+public class CodeIndustry {
+
+    /**
+     * 
+     */
+    @TableId(value = "code", type = IdType.AUTO)
+    private String code;
+
+    /**
+     * 
+     */
+    @TableField("value")
+    private String value;
+
+}

+ 31 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/CodeWorkshopLayout.java

@@ -0,0 +1,31 @@
+package com.gbd.demp.info.entity;
+
+import lombok.Data;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* 车间布局编码表 Entity
+*
+* @author yjj
+* @date 2020-08-26 23:11:38
+*/
+@Data
+@TableName("t_code_workshop_layout")
+public class CodeWorkshopLayout {
+
+    /**
+     * 
+     */
+    @TableId(value = "code", type = IdType.AUTO)
+    private String code;
+
+    /**
+     * 
+     */
+    @TableField("value")
+    private String value;
+
+}

+ 31 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/CodeWorkshopStructure.java

@@ -0,0 +1,31 @@
+package com.gbd.demp.info.entity;
+
+import lombok.Data;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* 车间结构编码表 Entity
+*
+* @author yjj
+* @date 2020-08-26 23:12:01
+*/
+@Data
+@TableName("t_code_workshop_structure")
+public class CodeWorkshopStructure {
+
+    /**
+     * 
+     */
+    @TableId(value = "code", type = IdType.AUTO)
+    private String code;
+
+    /**
+     * 
+     */
+    @TableField("value")
+    private String value;
+
+}

+ 116 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/CompanyInfo.java

@@ -0,0 +1,116 @@
+package com.gbd.demp.info.entity;
+
+import java.util.Date;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* 企业信息表 Entity
+*
+* @author yjj
+* @date 2020-08-26 23:12:29
+*/
+@Data
+@TableName("t_company_info")
+public class CompanyInfo {
+
+    /**
+     *
+     */
+    @TableId(value = "company_id", type = IdType.AUTO)
+    private Long companyId;
+
+    /**
+     * 企业名称
+     */
+    @TableField("company_name")
+    private String companyName;
+
+    /**
+     * 企业地址
+     */
+    @TableField("company_address")
+    private String companyAddress;
+
+    /**
+     * 所属行业
+     */
+    @TableField("company_industry")
+    private String companyIndustry;
+
+    /**
+     * 粉尘种类
+     */
+    @TableField("dust_type")
+    private String dustType;
+
+    /**
+     * 除尘器种类
+     */
+    @TableField("duster_type")
+    private String dusterType;
+
+    /**
+     * 企业规模
+     */
+    @TableField("company_scale")
+    private String companyScale;
+
+    /**
+     * 涉粉作业人数
+     */
+    @TableField("work_number")
+    private String workNumber;
+
+    /**
+     * 车间结构
+     */
+    @TableField("workshop_structure")
+    private String workshopStructure;
+
+    /**
+     * 车间布局
+     */
+    @TableField("workshop_layout")
+    private String workshopLayout;
+
+    /**
+     * 企业负责人
+     */
+    @TableField("company_principal")
+    private String companyPrincipal;
+
+    /**
+     * 手机号码
+     */
+    @TableField("phone")
+    private String phone;
+
+    /**
+     * 创建人
+     */
+    @TableField("creator")
+    private String creator;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 修改人
+     */
+    @TableField("reviser")
+    private String reviser;
+
+    /**
+     * 修改时间
+     */
+    @TableField("update_time")
+    private Date updateTime;
+
+}

+ 117 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/DeviceInfo.java

@@ -0,0 +1,117 @@
+package com.gbd.demp.info.entity;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+ * 设备信息表 Entity
+ *
+ * @author yjj
+ * @date 2020-09-02 14:08:03
+ */
+@Data
+@TableName("t_device_info")
+public class DeviceInfo {
+
+    /**
+     * 设备编号
+     */
+    @TableId(value = "device_id")
+    private String deviceId;
+
+    /**
+     * 设备名称
+     */
+    @TableField("device_name")
+    private String deviceName;
+
+    /**
+     * 设备启用日期
+     */
+    @TableField("device_start_date")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date deviceStartDate;
+
+    /**
+     * 所属行业编码
+     */
+    @TableField("industry_code")
+    private String industryCode;
+
+    /**
+     * 粉尘类别编码
+     */
+    @TableField("dust_type")
+    private String dustType;
+
+    /**
+     * 所属企业id
+     */
+    @TableField("company_id")
+    private String companyId;
+
+    /**
+     * 所属企业名称
+     */
+    @TableField("company_name")
+    private String companyName;
+
+
+    /**
+     * 设备位置信息描述
+     */
+    @TableField("device_location")
+    private String deviceLocation;
+
+
+    /**
+     * 功能区
+     */
+    @TableField("possession")
+    private String possession;
+
+
+    /**
+     * 工作起始时间
+     */
+    @TableField("work_time_from")
+    private String workTimeFrom;
+
+
+    /**
+     * 工作结束时间
+     */
+    @TableField("work_time_to")
+    private String workTimeTo;
+
+    /**
+     * 经度
+     */
+    @TableField("longitude")
+    private String longitude;
+
+    /**
+     * 纬度
+     */
+    @TableField("latitude")
+    private String latitude;
+
+
+    @TableField(exist = false)
+    private String startTimeFrom;
+    @TableField(exist = false)
+    private String startTimeTo;
+
+    @TableField(exist = false)
+    private String industryValue;
+    @TableField(exist = false)
+    private String dustName;
+
+
+}

+ 58 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/DeviceThreshold.java

@@ -0,0 +1,58 @@
+package com.gbd.demp.info.entity;
+
+import lombok.Data;
+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 lombok.NoArgsConstructor;
+import lombok.RequiredArgsConstructor;
+
+/**
+ * 设备(传感器)阈值设置 Entity
+ *
+ * @author yjj
+ * @date 2020-09-08 14:53:46
+ */
+@Data
+@TableName("t_device_threshold")
+@NoArgsConstructor
+public class DeviceThreshold {
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 设备编号
+     */
+    @TableField("device_id")
+    private String deviceId;
+
+    /**
+     * 传感器编号
+     */
+    @TableField("sensor_id")
+    private String sensorId;
+
+    /**
+     * 状态码
+     */
+    @TableField("code")
+    private String code;
+
+    /**
+     * 低值
+     */
+    @TableField("low_value")
+    private Double lowValue;
+
+    /**
+     * 高值
+     */
+    @TableField("high_value")
+    private Double highValue;
+
+}

+ 69 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/SensorInfo.java

@@ -0,0 +1,69 @@
+package com.gbd.demp.info.entity;
+
+import lombok.Data;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+ * Entity
+ *
+ * @author yjj
+ * @date 2020-09-17 16:18:11
+ */
+@Data
+@TableName("t_sensor_info")
+public class SensorInfo {
+
+    /**
+     *
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 传感器id
+     */
+    @TableField("sensor_id")
+    private String sensorId;
+
+    /**
+     * 所属设备id
+     */
+    @TableField("device_id")
+    private String deviceId;
+
+    /**
+     * 传感器名称
+     */
+    @TableField("sensor_name")
+    private String sensorName;
+
+    /**
+     * 传感器单位
+     */
+    @TableField("sensor_unit")
+    private String sensorUnit;
+
+
+    /**
+     * 所属设备名称
+     */
+    @TableField(exist = false)
+    private String deviceName;
+
+
+    /**
+     * 所属企业名称
+     */
+    @TableField(exist = false)
+    private String companyName;
+
+    /**
+     * 所属企业id
+     */
+    @TableField(exist = false)
+    private String companyId;
+
+}

+ 43 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/SensorVideo.java

@@ -0,0 +1,43 @@
+package com.gbd.demp.info.entity;
+
+import lombok.Data;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* 传感器监控关联表 Entity
+*
+* @author yjj
+* @date 2020-10-18 19:39:45
+*/
+@Data
+@TableName("t_sensor_video")
+public class SensorVideo {
+
+    /**
+     * 设备id
+     */
+    @TableField("device_id")
+    private String deviceId;
+
+    /**
+     * 
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 传感器id
+     */
+    @TableField("sensor_id")
+    private String sensorId;
+
+    /**
+     * 监控id
+     */
+    @TableField("video_id")
+    private String videoId;
+
+}

+ 17 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/ThirdPartyUser.java

@@ -0,0 +1,17 @@
+package com.gbd.demp.info.entity;
+
+import lombok.Data;
+
+@Data
+public class ThirdPartyUser {
+
+    private String code;
+    private String message;
+    private String userId;
+    private String name;
+    private String enterpriseId;
+    private String enterpriseName;
+    private String possession;
+
+
+}

+ 73 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/entity/VideoInfo.java

@@ -0,0 +1,73 @@
+package com.gbd.demp.info.entity;
+
+import lombok.Data;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* 视频监控信息表 Entity
+*
+* @author yjj
+* @date 2020-10-10 21:34:56
+*/
+@Data
+@TableName("t_video_info")
+public class VideoInfo {
+
+    /**
+     * 所属企业id
+     */
+    @TableField("company_id")
+    private String companyId;
+
+    /**
+     * 所属企业名称
+     */
+    @TableField("company_name")
+    private String companyName;
+
+    /**
+     * 视频名称
+     */
+    @TableField("detail_name")
+    private String detailName;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id")
+    private String id;
+
+    /**
+     * 监控安装位置
+     */
+    @TableField("place_info")
+    private String placeInfo;
+
+    /**
+     * 海康视频id
+     */
+    @TableField("puid")
+    private String puid;
+
+    /**
+     * 显示名称
+     */
+    @TableField("show_name")
+    private String showName;
+
+    /**
+     * 监控状态
+     */
+    @TableField("status")
+    private String status;
+
+    /**
+     * 0 粉尘 1化工
+     */
+    @TableField("type")
+    private String type;
+
+}

+ 35 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/mapper/AlarmEventMapper.java

@@ -0,0 +1,35 @@
+package com.gbd.demp.info.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gbd.demp.info.entity.AlarmEvent;
+import com.gbd.demp.info.vo.AlarmEventVO;
+import org.apache.ibatis.annotations.Param;
+import org.apache.poi.ss.formula.functions.T;
+
+import java.util.List;
+
+/**
+ * 告警事件表 Mapper
+ *
+ * @author yjj
+ * @date 2020-09-08 14:53:36
+ */
+public interface AlarmEventMapper extends BaseMapper<AlarmEvent> {
+
+    <T> IPage<AlarmEventVO> getAlarmEvent(Page<T> page, @Param("companyName") String companyName, @Param("deviceName") String deviceName, @Param("possession") String possession);
+
+    int finishEvent(@Param("id") Long id, @Param("reason") String reason);
+
+    /**
+     * 标注异常值
+     *
+     * @param status
+     * @param start
+     * @param end
+     * @return
+     */
+    int setOutliers(@Param("deviceId") String deviceId, @Param("sensorId") String sensorId, @Param("status") Integer status, @Param("start") String start, @Param("end") String end);
+
+}

+ 14 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/mapper/CodeAlarmRulesMapper.java

@@ -0,0 +1,14 @@
+package com.gbd.demp.info.mapper;
+
+import com.gbd.demp.info.entity.CodeAlarmRules;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 告警规则编码表 Mapper
+ *
+ * @author yjj
+ * @date 2020-09-08 14:53:39
+ */
+public interface CodeAlarmRulesMapper extends BaseMapper<CodeAlarmRules> {
+
+}

+ 14 - 0
febs-server/gbd-demp-info/src/main/java/com/gbd/demp/info/mapper/CodeCompanyScaleMapper.java

@@ -0,0 +1,14 @@
+package com.gbd.demp.info.mapper;
+
+import com.gbd.demp.info.entity.CodeCompanyScale;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 企业规模编码表 Mapper
+ *
+ * @author yjj
+ * @date 2020-08-26 23:12:33
+ */
+public interface CodeCompanyScaleMapper extends BaseMapper<CodeCompanyScale> {
+
+}

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio