Browse Source

这是新项目,收数据代码更新

yang 3 years ago
parent
commit
4bc5010e31
59 changed files with 2059 additions and 304 deletions
  1. 112 111
      cloud-platform-acquisition/pom.xml
  2. 3 3
      cloud-platform-acquisition/src/main/java/com/huimv/acquisition/HuimvSmartEartagDataAcquisitionApplication.java
  3. 1 4
      cloud-platform-acquisition/src/main/java/com/huimv/acquisition/autoconfigure/MybatisPlusConfiguration.java
  4. 1 0
      cloud-platform-acquisition/src/main/java/com/huimv/acquisition/controller/EartagDataController.java
  5. 84 0
      cloud-platform-acquisition/src/main/java/com/huimv/acquisition/controller/HeartBeatRecordController.java
  6. 68 0
      cloud-platform-acquisition/src/main/java/com/huimv/acquisition/entity/HeartBeatRecordEntity.java
  7. 76 0
      cloud-platform-acquisition/src/main/java/com/huimv/acquisition/entity/RawDataEntity.java
  8. 17 0
      cloud-platform-acquisition/src/main/java/com/huimv/acquisition/mapper/HeartBeatRecordDao.java
  9. 19 0
      cloud-platform-acquisition/src/main/java/com/huimv/acquisition/mapper/RawDataDao.java
  10. 21 0
      cloud-platform-acquisition/src/main/java/com/huimv/acquisition/service/HeartBeatRecordService.java
  11. 22 0
      cloud-platform-acquisition/src/main/java/com/huimv/acquisition/service/RawDataService.java
  12. 0 5
      cloud-platform-acquisition/src/main/java/com/huimv/acquisition/service/impl/EartagDataServiceImpl.java
  13. 36 0
      cloud-platform-acquisition/src/main/java/com/huimv/acquisition/service/impl/HeartBeatRecordServiceImpl.java
  14. 38 0
      cloud-platform-acquisition/src/main/java/com/huimv/acquisition/service/impl/RawDataServiceImpl.java
  15. 7 7
      cloud-platform-acquisition/src/main/java/com/huimv/acquisition/socket/Server.java
  16. 10 10
      cloud-platform-acquisition/src/main/java/com/huimv/acquisition/socket/ServerThread.java
  17. 1 5
      cloud-platform-acquisition/src/main/java/com/huimv/acquisition/socket/eartagrecive/constant/ImportanteConfig.java
  18. 9 3
      cloud-platform-acquisition/src/main/java/com/huimv/acquisition/socket/eartagrecive/service/impl/ClientDataPacketServiceImpl.java
  19. 71 36
      cloud-platform-acquisition/src/main/java/com/huimv/acquisition/socket/eartagrecive/service/impl/ReceivePackageSerivce.java
  20. 64 4
      cloud-platform-acquisition/src/main/java/com/huimv/acquisition/socket/eartagrecive/service/impl/SendPackageService.java
  21. 1 2
      cloud-platform-acquisition/src/main/java/com/huimv/acquisition/socket/eartagrecive/util/Result.java
  22. 1 1
      cloud-platform-acquisition/src/main/resources/application-dev.yml
  23. 0 2
      cloud-platform-base/platform-core/src/main/java/com/huimv/core/cache/base/AbstractRedisCacheOperator.java
  24. 1 4
      cloud-platform-main/src/main/java/com/huimv/CloudPlatformApplication.java
  25. 81 25
      cloud-platform-main/src/main/java/com/huimv/modular/alarmvalueset/controller/AlarmValueSetController.java
  26. 12 1
      cloud-platform-main/src/main/java/com/huimv/modular/alarmvalueset/entity/AlarmValueSet.java
  27. 1 1
      cloud-platform-main/src/main/java/com/huimv/modular/alarmvalueset/enums/AlarmValueSetExceptionEnum.java
  28. 2 0
      cloud-platform-main/src/main/java/com/huimv/modular/alarmvalueset/mapper/AlarmValueSetMapper.java
  29. 1 0
      cloud-platform-main/src/main/java/com/huimv/modular/alarmvalueset/param/AlarmValueSetParam.java
  30. 3 0
      cloud-platform-main/src/main/java/com/huimv/modular/alarmvalueset/service/AlarmValueSetService.java
  31. 8 6
      cloud-platform-main/src/main/java/com/huimv/modular/alarmvalueset/service/impl/AlarmValueSetServiceImpl.java
  32. 0 2
      cloud-platform-main/src/main/java/com/huimv/modular/basepigpen/service/impl/BasePigpenServiceImpl.java
  33. 2 3
      cloud-platform-main/src/main/java/com/huimv/modular/baseregion/entity/BaseRegion.java
  34. 0 1
      cloud-platform-main/src/main/java/com/huimv/modular/collectorregister/controller/CollectorRegisterController.java
  35. 16 0
      cloud-platform-main/src/main/java/com/huimv/modular/collectorregister/entity/DeviceStatusEntity.java
  36. 39 0
      cloud-platform-main/src/main/java/com/huimv/modular/collectorregister/mapper/CollectorRegisterMapper.java
  37. 42 1
      cloud-platform-main/src/main/java/com/huimv/modular/eartagdata/controller/EartagDataController.java
  38. 147 0
      cloud-platform-main/src/main/java/com/huimv/modular/eartagdata/entity/vo/DistinctEartagEntityVo.java
  39. 19 0
      cloud-platform-main/src/main/java/com/huimv/modular/eartagdata/mapper/EartagDataMapper.java
  40. 5 9
      cloud-platform-main/src/main/java/com/huimv/modular/eartagdata/mapper/mapping/EartagDataMapper.xml
  41. 2 9
      cloud-platform-main/src/main/java/com/huimv/modular/eartagdata/service/EartagDataService.java
  42. 68 17
      cloud-platform-main/src/main/java/com/huimv/modular/eartagdata/service/impl/EartagDataServiceImpl.java
  43. 12 3
      cloud-platform-main/src/main/java/com/huimv/modular/heartbeatrecord/entity/HeartBeatRecord.java
  44. 212 0
      cloud-platform-main/src/main/java/com/huimv/modular/rawdata/controller/RawDataController.java
  45. 69 0
      cloud-platform-main/src/main/java/com/huimv/modular/rawdata/entity/RawData.java
  46. 65 0
      cloud-platform-main/src/main/java/com/huimv/modular/rawdata/enums/RawDataExceptionEnum.java
  47. 38 0
      cloud-platform-main/src/main/java/com/huimv/modular/rawdata/mapper/RawDataMapper.java
  48. 5 0
      cloud-platform-main/src/main/java/com/huimv/modular/rawdata/mapper/mapping/RawDataMapper.xml
  49. 60 0
      cloud-platform-main/src/main/java/com/huimv/modular/rawdata/param/RawDataParam.java
  50. 106 0
      cloud-platform-main/src/main/java/com/huimv/modular/rawdata/service/RawDataService.java
  51. 162 0
      cloud-platform-main/src/main/java/com/huimv/modular/rawdata/service/impl/RawDataServiceImpl.java
  52. 23 0
      cloud-platform-main/src/main/java/com/huimv/modular/timer/constant/ImportanteConfig.java
  53. 31 25
      cloud-platform-main/src/main/java/com/huimv/modular/timer/tasks/CheckDeviceAble.java
  54. 63 0
      cloud-platform-main/src/main/java/com/huimv/modular/timer/tasks/CheckDeviceUnable.java
  55. 0 2
      cloud-platform-main/src/main/java/com/huimv/modular/timer/tasks/UpdateDaily.java
  56. 79 0
      cloud-platform-main/src/main/java/com/huimv/modular/timer/tasks/UpdateDeviceLastSendTime.java
  57. 20 0
      cloud-platform-main/src/main/java/com/huimv/modular/utils/util/Date2LongSerializer.java
  58. 3 1
      cloud-platform-main/src/main/resources/application-local.yml
  59. 0 1
      cloud-platform-main/src/main/resources/application.yml

+ 112 - 111
cloud-platform-acquisition/pom.xml

@@ -7,6 +7,7 @@
         <groupId>com.huimv</groupId>
         <groupId>com.huimv</groupId>
         <version>1.6.0</version>
         <version>1.6.0</version>
     </parent>
     </parent>
+
     <modelVersion>4.0.0</modelVersion>
     <modelVersion>4.0.0</modelVersion>
 
 
     <artifactId>cloud-platform-acquisition</artifactId>
     <artifactId>cloud-platform-acquisition</artifactId>
@@ -15,117 +16,114 @@
         <java.version>1.8</java.version>
         <java.version>1.8</java.version>
     </properties>
     </properties>
 
 
- <dependencies>
-
-     <dependency>
-         <groupId>org.springframework.boot</groupId>
-         <artifactId>spring-boot-starter-test</artifactId>
-     </dependency>
-
-     <dependency>
-         <groupId>org.springframework.boot</groupId>
-         <artifactId>spring-boot-starter</artifactId>
-         <version>2.5.3</version>
-     </dependency>
-
-     <dependency>
-         <groupId>org.springframework.boot</groupId>
-         <artifactId>spring-boot-starter-web</artifactId>
-         <version>2.5.3</version>
-     </dependency>
-
-     <dependency>
-         <groupId>org.springframework.boot</groupId>
-         <artifactId>spring-boot-starter-test</artifactId>
-         <version>2.5.3</version>
-         <scope>test</scope>
-     </dependency>
-
-     <dependency>
-         <groupId>mysql</groupId>
-         <artifactId>mysql-connector-java</artifactId>
-         <scope>runtime</scope>
-     </dependency>
-
-     <dependency>
-         <groupId>org.springframework.boot</groupId>
-         <artifactId>spring-boot-starter-data-jpa</artifactId>
-         <version>2.5.3</version>
-     </dependency>
-
-     <dependency>
-         <groupId>org.projectlombok</groupId>
-         <artifactId>lombok</artifactId>
-     </dependency>
-
-     <dependency>
-         <groupId>com.baomidou</groupId>
-         <artifactId>mybatis-plus-boot-starter</artifactId>
-         <version>3.4.2</version>
-     </dependency>
-
-     <dependency>
-         <groupId>com.alibaba</groupId>
-         <artifactId>fastjson</artifactId>
-         <version>1.2.62</version>
-     </dependency>
-
-     <dependency>
-         <groupId>org.apache.commons</groupId>
-         <artifactId>commons-lang3</artifactId>
-     </dependency>
-
-     <dependency>
-         <groupId>junit</groupId>
-         <artifactId>junit</artifactId>
-         <scope>test</scope>
-     </dependency>
-     <!--JSR303校验validation-->
-     <dependency>
-         <groupId>org.springframework.boot</groupId>
-         <artifactId>spring-boot-starter-validation</artifactId>
-         <version>2.5.3</version>
-     </dependency>
-
-     <!--hutool-->
-     <dependency>
-         <groupId>cn.hutool</groupId>
-         <artifactId>hutool-all</artifactId>
-         <version>LATEST</version>
-     </dependency>
-
-     <dependency>
-         <groupId>com.huimv</groupId>
-         <artifactId>platform-core</artifactId>
-         <version>1.6.0</version>
-     </dependency>
-
-
-     <dependency>
-         <groupId>org.springframework</groupId>
-         <artifactId>spring-webmvc</artifactId>
-         <version>5.2.5.RELEASE</version>
-         <exclusions>
-             <exclusion>
-                 <groupId>commons-logging</groupId>
-                 <artifactId>commons-logging</artifactId>
-             </exclusion>
-         </exclusions>
-     </dependency>
-     <dependency>
-         <groupId>commons-lang</groupId>
-         <artifactId>commons-lang</artifactId>
-         <version>2.6</version>
-         <scope>compile</scope>
-     </dependency>
-     <dependency>
-         <groupId>com.huimv</groupId>
-         <artifactId>platform-core</artifactId>
-         <version>1.6.0</version>
-         <scope>compile</scope>
-     </dependency>
-
- </dependencies>
+    <dependencies>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
+            <version>2.5.3</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+            <version>2.5.3</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <version>2.5.3</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+            <version>2.5.3</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.4.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.62</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-validation</artifactId>
+            <version>2.5.3</version>
+        </dependency>
+
+
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>LATEST</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.huimv</groupId>
+            <artifactId>platform-core</artifactId>
+            <version>1.6.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-webmvc</artifactId>
+            <version>5.2.5.RELEASE</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>commons-logging</groupId>
+                    <artifactId>commons-logging</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-lang</groupId>
+            <artifactId>commons-lang</artifactId>
+            <version>2.6</version>
+            <scope>compile</scope>
+        </dependency>
+
+
+    </dependencies>
+
+
 
 
     <build>
     <build>
         <plugins>
         <plugins>
@@ -136,4 +134,7 @@
         </plugins>
         </plugins>
     </build>
     </build>
 
 
+
+
+
 </project>
 </project>

+ 3 - 3
cloud-platform-acquisition/src/main/java/com/huimv/acquisition/HuimvSmartEartagDataAcquisitionApplication.java

@@ -1,5 +1,4 @@
 package com.huimv.acquisition;
 package com.huimv.acquisition;
-
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.EnableScheduling;
@@ -11,10 +10,11 @@ import org.springframework.scheduling.annotation.EnableScheduling;
  * @Version : 1.0
  * @Version : 1.0
  * @Author : ZhuoNing
  * @Author : ZhuoNing
  * @Create : 2020-12-25
  * @Create : 2020-12-25
+ * 这个接受数据模块用的是人人的代码生成器,代码生成就搞了好几套,有点麻烦
  **/
  **/
 //这是新项目深度优化版本,可以深度修改,改完了记得上传
 //这是新项目深度优化版本,可以深度修改,改完了记得上传
-//只充当存储数据的服务是没有任何问题的----已经复原之前的功能仅仅负责接收数据
-@EnableScheduling    //开启定时任务
+//只充当存储数据的服务是没有任何问题的----已经复原之前的功能仅仅
+@EnableScheduling
 @SpringBootApplication
 @SpringBootApplication
 public class HuimvSmartEartagDataAcquisitionApplication {
 public class HuimvSmartEartagDataAcquisitionApplication {
     public static void main(String[] args) {
     public static void main(String[] args) {

+ 1 - 4
cloud-platform-acquisition/src/main/java/com/huimv/acquisition/autoconfigure/MybatisPlusConfiguration.java

@@ -20,8 +20,5 @@ public class MybatisPlusConfiguration {
         interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
         interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
         return interceptor;
         return interceptor;
     }
     }
-//    @Bean
-//    public ConfigurationCustomizer configurationCustomizer() {
-//        return configuration -> configuration.setUseDeprecatedExecutor(false);
-//    }
+
 }
 }

+ 1 - 0
cloud-platform-acquisition/src/main/java/com/huimv/acquisition/controller/EartagDataController.java

@@ -69,6 +69,7 @@ public class EartagDataController {
     }
     }
 
 
 
 
+
     /**
     /**
      * 保存
      * 保存
      */
      */

+ 84 - 0
cloud-platform-acquisition/src/main/java/com/huimv/acquisition/controller/HeartBeatRecordController.java

@@ -0,0 +1,84 @@
+ package com.huimv.acquisition.controller;
+
+import java.util.Arrays;
+import java.util.Map;
+
+import com.huimv.acquisition.utils.PageUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.huimv.acquisition.entity.HeartBeatRecordEntity;
+import com.huimv.acquisition.service.HeartBeatRecordService;
+
+import com.huimv.acquisition.result.R;
+
+
+/**
+ * 
+ *
+ * @author yinhao
+ * @version ${version}
+ * @date 2021-11-10 16:19:11
+ */
+@RestController
+@RequestMapping("acquisition/heartbeatrecord")
+public class HeartBeatRecordController {
+    @Autowired
+    private HeartBeatRecordService heartBeatRecordService;
+
+    /**
+     * 列表
+     */
+    @RequestMapping("/list")
+    public R list(@RequestParam Map<String, Object> params){
+        PageUtils page = heartBeatRecordService.queryPage(params);
+
+        return R.ok().put("page", page);
+    }
+
+
+    /**
+     * 信息
+     */
+    @RequestMapping("/info/{id}")
+    public R info(@PathVariable("id") Integer id){
+		HeartBeatRecordEntity heartBeatRecord = heartBeatRecordService.getById(id);
+
+        return R.ok().put("heartBeatRecord", heartBeatRecord);
+    }
+
+    /**
+     * 保存
+     */
+    @RequestMapping("/save")
+    public R save(@RequestBody HeartBeatRecordEntity heartBeatRecord){
+		heartBeatRecordService.save(heartBeatRecord);
+
+        return R.ok();
+    }
+
+    /**
+     * 修改
+     */
+    @RequestMapping("/update")
+    public R update(@RequestBody HeartBeatRecordEntity heartBeatRecord){
+		heartBeatRecordService.updateById(heartBeatRecord);
+
+        return R.ok();
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping("/delete")
+    public R delete(@RequestBody Integer[] ids){
+		heartBeatRecordService.removeByIds(Arrays.asList(ids));
+
+        return R.ok();
+    }
+
+}

+ 68 - 0
cloud-platform-acquisition/src/main/java/com/huimv/acquisition/entity/HeartBeatRecordEntity.java

@@ -0,0 +1,68 @@
+package com.huimv.acquisition.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 
+ * 
+ * @author yinhao
+ * @version ${version}
+ * @date 2021-11-10 16:19:11
+ */
+@Data
+@TableName("heart_beat_record")
+public class HeartBeatRecordEntity implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 
+	 */
+	@TableId
+	private Integer id;
+	/**
+	 * 
+	 */
+	private String head;
+	/**
+	 * 
+	 */
+	private String deviceCode;
+	/**
+	 * 
+	 */
+	private Integer cmd;
+	/**
+	 * 
+	 */
+	private String checkNo;
+	/**
+	 * 
+	 */
+	private String tail;
+	/**
+	 * 地县编码
+	 */
+	private String countyCode;
+	/**
+	 * 牧场编码
+	 */
+	private String farmCode;
+	/**
+	 * 猪舍id
+	 */
+	private String pigpenId;
+	/**
+	 * 单元id
+	 */
+	private String unitId;
+	/**
+	 * 创建时间
+	 */
+	private Date createTime;
+
+}

+ 76 - 0
cloud-platform-acquisition/src/main/java/com/huimv/acquisition/entity/RawDataEntity.java

@@ -0,0 +1,76 @@
+/*
+Copyright [2020] [https://www.xiaonuo.vip]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+
+1.请不要删除和修改根目录下的LICENSE文件。
+2.请不要删除和修改Snowy源码头部的版权声明。
+3.请保留源码和相关描述文件的项目出处,作者声明等。
+4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package com.huimv.acquisition.entity;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.huimv.core.pojo.base.entity.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 原始数据存储
+ *
+ * @author yangdi
+ * @date 2021-11-09 16:58:43
+ */
+
+@Data
+@TableName("raw_data")
+public class RawDataEntity   {
+
+    /**
+     * 
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 
+     */
+    @Excel(name = "")
+    private String detailData;
+
+    /**
+     * 
+     */
+    @Excel(name = "")
+    private Integer status;
+
+
+
+
+    //目前来说  没必要增加组织id 这个字段
+    private  Date    createTime;
+
+
+
+
+
+}

+ 17 - 0
cloud-platform-acquisition/src/main/java/com/huimv/acquisition/mapper/HeartBeatRecordDao.java

@@ -0,0 +1,17 @@
+package com.huimv.acquisition.mapper;
+
+import com.huimv.acquisition.entity.HeartBeatRecordEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 
+ * 
+ * @author yinhao
+ * @version ${version}
+ * @date 2021-11-10 16:19:11
+ */
+@Mapper
+public interface HeartBeatRecordDao extends BaseMapper<HeartBeatRecordEntity> {
+	
+}

+ 19 - 0
cloud-platform-acquisition/src/main/java/com/huimv/acquisition/mapper/RawDataDao.java

@@ -0,0 +1,19 @@
+package com.huimv.acquisition.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.acquisition.entity.RawDataEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 
+ * 
+ * @author yinhao
+ * @version ${version}
+ * @date 2021-08-05 21:54:09
+ */
+@Mapper
+public interface RawDataDao extends BaseMapper<RawDataEntity> {
+
+
+
+}

+ 21 - 0
cloud-platform-acquisition/src/main/java/com/huimv/acquisition/service/HeartBeatRecordService.java

@@ -0,0 +1,21 @@
+package com.huimv.acquisition.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import com.huimv.acquisition.entity.HeartBeatRecordEntity;
+import com.huimv.acquisition.utils.PageUtils;
+
+import java.util.Map;
+
+/**
+ * 
+ *
+ * @author yinhao
+ * @version ${version}
+ * @date 2021-11-10 16:19:11
+ */
+public interface HeartBeatRecordService extends IService<HeartBeatRecordEntity> {
+
+    PageUtils queryPage(Map<String, Object> params);
+}
+

+ 22 - 0
cloud-platform-acquisition/src/main/java/com/huimv/acquisition/service/RawDataService.java

@@ -0,0 +1,22 @@
+package com.huimv.acquisition.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.acquisition.entity.RawDataEntity;
+import com.huimv.acquisition.utils.PageUtils;
+
+import java.util.Map;
+
+/**
+ *
+
+   *
+ *
+ * @author yinhao
+ * @version ${version}
+ * @date 2021-07-30 09:45:22
+ */
+public interface RawDataService extends IService<RawDataEntity> {
+
+    PageUtils queryPage(Map<String, Object> params);
+}
+

+ 0 - 5
cloud-platform-acquisition/src/main/java/com/huimv/acquisition/service/impl/EartagDataServiceImpl.java

@@ -11,7 +11,6 @@ import com.huimv.acquisition.mapper.CollectorRegisterDao;
 import com.huimv.acquisition.mapper.EartagDataDao;
 import com.huimv.acquisition.mapper.EartagDataDao;
 import com.huimv.acquisition.mapper.MovePigpenDao;
 import com.huimv.acquisition.mapper.MovePigpenDao;
 import com.huimv.acquisition.service.EartagDataService;
 import com.huimv.acquisition.service.EartagDataService;
-import com.huimv.acquisition.service.MovePigpenService;
 import com.huimv.acquisition.socket.eartagrecive.util.DateUtilsPublic;
 import com.huimv.acquisition.socket.eartagrecive.util.DateUtilsPublic;
 import com.huimv.acquisition.socket.eartagrecive.util.StringUtilsWork;
 import com.huimv.acquisition.socket.eartagrecive.util.StringUtilsWork;
 import com.huimv.acquisition.utils.PageUtils;
 import com.huimv.acquisition.utils.PageUtils;
@@ -46,8 +45,6 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataDao, EartagData
     @Autowired
     @Autowired
     private CollectorRegisterDao collectorRegisterDao ;
     private CollectorRegisterDao collectorRegisterDao ;
 
 
-    @Autowired
-    private MovePigpenService movePigpenService;
 
 
     @Autowired
     @Autowired
     private MovePigpenDao movePigpenDao;
     private MovePigpenDao movePigpenDao;
@@ -72,7 +69,6 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataDao, EartagData
         //只要首页限制在第一页,其余的不需要的
         //只要首页限制在第一页,其余的不需要的
 
 
         LambdaQueryWrapper<EartagDataEntity> wrapper = Wrappers.lambdaQuery();
         LambdaQueryWrapper<EartagDataEntity> wrapper = Wrappers.lambdaQuery();
-
         if(StringUtils.isNotEmpty(farmID)){  //StringUtils.isNotEmpty(orderField) && StringUtils.isNotEmpty(order)
         if(StringUtils.isNotEmpty(farmID)){  //StringUtils.isNotEmpty(orderField) && StringUtils.isNotEmpty(order)
             wrapper.eq(EartagDataEntity::getFarmCode, farmID );
             wrapper.eq(EartagDataEntity::getFarmCode, farmID );
         }
         }
@@ -121,7 +117,6 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataDao, EartagData
             records = page.getRecords();  //获取信息
             records = page.getRecords();  //获取信息
         }
         }
 
 
-
         //拼接栋舍信息在里面
         //拼接栋舍信息在里面
         for (EartagDataEntity record : records) {
         for (EartagDataEntity record : records) {
             //这一页的数据
             //这一页的数据

+ 36 - 0
cloud-platform-acquisition/src/main/java/com/huimv/acquisition/service/impl/HeartBeatRecordServiceImpl.java

@@ -0,0 +1,36 @@
+package com.huimv.acquisition.service.impl;
+
+import com.huimv.acquisition.mapper.HeartBeatRecordDao;
+import com.huimv.acquisition.utils.PageUtils;
+import org.springframework.stereotype.Service;
+import java.util.Map;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import com.huimv.acquisition.utils.Query;
+
+import com.huimv.acquisition.entity.HeartBeatRecordEntity;
+import com.huimv.acquisition.service.HeartBeatRecordService;
+
+/**
+ * 
+ *
+ * @author yinhao
+ * @version ${version}
+ * @date 2021-11-10 16:19:11
+ */
+@Service("heartBeatRecordService")
+public class HeartBeatRecordServiceImpl extends ServiceImpl<HeartBeatRecordDao, HeartBeatRecordEntity> implements HeartBeatRecordService {
+
+    @Override
+    public PageUtils queryPage(Map<String, Object> params) {
+        IPage<HeartBeatRecordEntity> page = this.page(
+                new Query<HeartBeatRecordEntity>().getPage(params),
+                new QueryWrapper<HeartBeatRecordEntity>()
+        );
+
+        return new PageUtils(page);
+    }
+
+}

+ 38 - 0
cloud-platform-acquisition/src/main/java/com/huimv/acquisition/service/impl/RawDataServiceImpl.java

@@ -0,0 +1,38 @@
+package com.huimv.acquisition.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.acquisition.entity.DailyTabulateDataEntity;
+import com.huimv.acquisition.entity.RawDataEntity;
+import com.huimv.acquisition.mapper.DailyTabulateDataDao;
+import com.huimv.acquisition.mapper.RawDataDao;
+import com.huimv.acquisition.service.DailyTabulateDataService;
+import com.huimv.acquisition.service.RawDataService;
+import com.huimv.acquisition.utils.PageUtils;
+import com.huimv.acquisition.utils.Query;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/*
+ * 耳标每日汇总表
+ *
+ * @author yinhao
+ * @version ${version}
+ * @date 2021-08-04 14:59:05
+ */
+@Service("RawDataService")
+public class RawDataServiceImpl extends ServiceImpl<RawDataDao, RawDataEntity> implements RawDataService {
+
+    @Override
+    public PageUtils queryPage(Map<String, Object> params) {
+        IPage<RawDataEntity> page = this.page(
+                new Query<RawDataEntity>().getPage(params),
+                new QueryWrapper<RawDataEntity>()
+        );
+
+        return new PageUtils(page);
+    }
+
+}

+ 7 - 7
cloud-platform-acquisition/src/main/java/com/huimv/acquisition/socket/Server.java

@@ -37,21 +37,21 @@ public class Server implements CommandLineRunner {
             e.printStackTrace();
             e.printStackTrace();
         }
         }
     }
     }
-//测试发送数据
-    public static void main(String[] args) throws IOException {
 
 
-        for (int i = 10; i < 60; i++) {
 
 
 
 
+//测试发送数据
+    public static void main(String[] args) throws IOException {
             //建立socket向服务器发送连接请求
             //建立socket向服务器发送连接请求
-            Socket socket = new Socket("122.112.250.26", 10022);
+            Socket socket = new Socket("127.0.0.1", 9090);
             InputStream inputStream;
             InputStream inputStream;
             inputStream = socket.getInputStream();
             inputStream = socket.getInputStream();
             OutputStream outputStream = socket.getOutputStream();
             OutputStream outputStream = socket.getOutputStream();
             //客户端向socket发送数据
             //客户端向socket发送数据
             PrintWriter printWriter = new PrintWriter(outputStream);
             PrintWriter printWriter = new PrintWriter(outputStream);
-            //printWriter.println("zj+202007239999888+133070300000006+77+0+0+0+94+20211015092133+1.0#1.0#9440+0+end");    //没有注册
-            printWriter.println("zj+202007239999892+133070300000099+77+0+0+0+96+2021102916" + i + "33+1.0#1.0#9383+0+end");
+            //printWriter.println("zj+202007239999893+133070303805451+86+0+2031+0+93+20211111153254+1.0#1.0#11600+0+end");    //没有注册
+            //printWriter.println("hm+869401040126203+0+7+end");//没有注册
+            //printWriter.println("zj+202007239999892+133070300000099+77+0+0+0+96+2021109916" + i +"33+1.0#1.0#9383+0+end");
             //printWriter.println("hm+158+4+1+289+20170208152300+6+end");
             //printWriter.println("hm+158+4+1+289+20170208152300+6+end");
             printWriter.flush();
             printWriter.flush();
             //读取数据
             //读取数据
@@ -61,6 +61,6 @@ public class Server implements CommandLineRunner {
             inputStream.close();
             inputStream.close();
             outputStream.close();
             outputStream.close();
             socket.close();
             socket.close();
-        }
+
     }
     }
 }
 }

+ 10 - 10
cloud-platform-acquisition/src/main/java/com/huimv/acquisition/socket/ServerThread.java

@@ -11,12 +11,11 @@ public class ServerThread extends Thread {
     private Socket socket;
     private Socket socket;
    // @Autowired
    // @Autowired
     private IClientDataPacketService iClientDataPacketService;
     private IClientDataPacketService iClientDataPacketService;
-
     public ServerThread(Socket socket, IClientDataPacketService iClientDataPacketService) {
     public ServerThread(Socket socket, IClientDataPacketService iClientDataPacketService) {
         this.socket = socket;
         this.socket = socket;
         this.iClientDataPacketService = iClientDataPacketService;
         this.iClientDataPacketService = iClientDataPacketService;
     }
     }
-
+    //空数据包会出问题----解决
     @Override
     @Override
     public void run() {
     public void run() {
         InputStream inputStream = null;
         InputStream inputStream = null;
@@ -26,21 +25,22 @@ public class ServerThread extends Thread {
         PrintWriter printWriter = null;
         PrintWriter printWriter = null;
 
 
         try {
         try {
-
-            // server接收消息
-            inputStream = socket.getInputStream();
+            // server接收消息 应该如何处理   如果数据为空
+            socket.setSoTimeout(20000);
             inputStream = socket.getInputStream();
             inputStream = socket.getInputStream();
             byte[] b = new byte[1024];
             byte[] b = new byte[1024];
             inputStream.read(b);
             inputStream.read(b);
             String packet = new String(b);
             String packet = new String(b);
-
             int i = packet.indexOf("+", packet.indexOf("+") + 1);
             int i = packet.indexOf("+", packet.indexOf("+") + 1);
             //int ver = Integer.parseInt(packet.substring(i + 1, i + 2));
             //int ver = Integer.parseInt(packet.substring(i + 1, i + 2));
-            outputStream = socket.getOutputStream();
             packet = packet.trim();
             packet = packet.trim();
             // 处理数据包
             // 处理数据包
-             String ss = iClientDataPacketService.handleClientSendPacket(packet);
-            outputStream.write(ss.getBytes());
+            outputStream = socket.getOutputStream();
+            String ss = iClientDataPacketService.handleClientSendPacket(packet);
+            if(ss!=null){
+                outputStream.write(ss.getBytes());
+            }
+
             socket.shutdownInput();
             socket.shutdownInput();
 
 
         } catch (IOException | ParseException e) {
         } catch (IOException | ParseException e) {
@@ -72,4 +72,4 @@ public class ServerThread extends Thread {
             }
             }
         }
         }
     }
     }
-}
+}

+ 1 - 5
cloud-platform-acquisition/src/main/java/com/huimv/acquisition/socket/eartagrecive/constant/ImportanteConfig.java

@@ -4,6 +4,7 @@ package com.huimv.acquisition.socket.eartagrecive.constant;
  * @Author Anchor
  * @Author Anchor
  * @Date 2021/7/30 13:47
  * @Date 2021/7/30 13:47
  * //重要的参数配置,包括定时任务等
  * //重要的参数配置,包括定时任务等
+ * //目前没啥用
  * @Version 1.0.1
  * @Version 1.0.1
  */
  */
 public class ImportanteConfig {
 public class ImportanteConfig {
@@ -15,9 +16,4 @@ public class ImportanteConfig {
     //耳表数据上传时间的间隔计算需要用到牧场耳标数据上传时间
     //耳表数据上传时间的间隔计算需要用到牧场耳标数据上传时间
     public static final int EARTAG_SEND_GAP_TIME = 1000*10;  //目前设置10秒上传一次
     public static final int EARTAG_SEND_GAP_TIME = 1000*10;  //目前设置10秒上传一次
 
 
-
-
-
-
-
 }
 }

+ 9 - 3
cloud-platform-acquisition/src/main/java/com/huimv/acquisition/socket/eartagrecive/service/impl/ClientDataPacketServiceImpl.java

@@ -25,16 +25,21 @@ public class ClientDataPacketServiceImpl implements IClientDataPacketService {
     }
     }
 
 
     public String handleClientSendPacket(String clientMessageTxt) throws ParseException {
     public String handleClientSendPacket(String clientMessageTxt) throws ParseException {
+
         if (clientMessageTxt != null && !clientMessageTxt.isEmpty()) {
         if (clientMessageTxt != null && !clientMessageTxt.isEmpty()) {
             String matcher = "[+]";
             String matcher = "[+]";
             String[] clientMessageArray = clientMessageTxt.split(matcher);
             String[] clientMessageArray = clientMessageTxt.split(matcher);
             String cmd = clientMessageArray[2];
             String cmd = clientMessageArray[2];
+            //比较head
             String codHead = clientMessageArray[0];
             String codHead = clientMessageArray[0];
             log.info("本次执行命令>>" + cmd);
             log.info("本次执行命令>>" + cmd);
-            System.out.println(clientMessageTxt.toString());
-            new StringBuilder();
+            System.out.println(clientMessageTxt);
+
             if (codHead.equals("zj")) {
             if (codHead.equals("zj")) {
-                return this.receivePackageSerivce.handleEartagData(clientMessageArray).toString();
+                return this.receivePackageSerivce.handleEartagData(clientMessageArray ,clientMessageTxt);
+            } else if (Integer.parseInt(cmd) == 0) {
+                System.out.println("绑定设备使用厂家的IP和端口");
+                return this.sendPackageService.getDeviceIp(clientMessageArray);
             } else if (Integer.parseInt(cmd) == 1) {
             } else if (Integer.parseInt(cmd) == 1) {
                 System.out.println("绑定序列号返回的设备id");
                 System.out.println("绑定序列号返回的设备id");
                 return this.sendPackageService.getDeviceId(clientMessageArray);
                 return this.sendPackageService.getDeviceId(clientMessageArray);
@@ -45,6 +50,7 @@ public class ClientDataPacketServiceImpl implements IClientDataPacketService {
                 System.out.println("心跳");
                 System.out.println("心跳");
                 return this.sendPackageService.getHeartbeatBag(clientMessageArray);
                 return this.sendPackageService.getHeartbeatBag(clientMessageArray);
             } else if (Integer.parseInt(cmd) == 4) {
             } else if (Integer.parseInt(cmd) == 4) {
+                System.out.println("环境温度");
                 return this.receivePackageSerivce.handleEartagTemperature(clientMessageArray);
                 return this.receivePackageSerivce.handleEartagTemperature(clientMessageArray);
             } else if (Integer.parseInt(cmd) == 5) {
             } else if (Integer.parseInt(cmd) == 5) {
                 return this.receivePackageSerivce.handleEartagDampness(clientMessageArray);
                 return this.receivePackageSerivce.handleEartagDampness(clientMessageArray);

+ 71 - 36
cloud-platform-acquisition/src/main/java/com/huimv/acquisition/socket/eartagrecive/service/impl/ReceivePackageSerivce.java

@@ -6,6 +6,7 @@ import com.huimv.acquisition.entity.*;
 import com.huimv.acquisition.mapper.CollectorRegisterDao;
 import com.huimv.acquisition.mapper.CollectorRegisterDao;
 import com.huimv.acquisition.mapper.EartagDataDao;
 import com.huimv.acquisition.mapper.EartagDataDao;
 import com.huimv.acquisition.mapper.EartagRegisterDao;
 import com.huimv.acquisition.mapper.EartagRegisterDao;
+import com.huimv.acquisition.mapper.RawDataDao;
 import com.huimv.acquisition.service.*;
 import com.huimv.acquisition.service.*;
 import com.huimv.acquisition.socket.eartagrecive.constant.ImportanteConfig;
 import com.huimv.acquisition.socket.eartagrecive.constant.ImportanteConfig;
 import com.huimv.acquisition.socket.eartagrecive.util.DateUtil;
 import com.huimv.acquisition.socket.eartagrecive.util.DateUtil;
@@ -53,35 +54,34 @@ public class ReceivePackageSerivce {
     private DeviceTempService deviceTempService;
     private DeviceTempService deviceTempService;
 
 
     @Autowired
     @Autowired
-    private CollectorRegisterService collectorRegisterService;
-
-
-    public String handleEartagData(String[] clientMessageArray) throws ParseException {
-        String head = clientMessageArray[0];           //命令头
-        String device_code = clientMessageArray[1];      //采集器ID
-        String eartag_no  = clientMessageArray[2];         //版本号
-        String bat = clientMessageArray[3];        //耳标号
-        String ear_temp = clientMessageArray[4];  //耳标帧序号
-        String env_temp = clientMessageArray[5];
-        int exercise = Integer.parseInt(clientMessageArray[6]);         //运动量
-        //重启次数
-        String rssi  = clientMessageArray[7];           //信号强度
-
-        String time = clientMessageArray[8];           //采集时间
+    private RawDataService rawDataService  ;
+    @Autowired
+    private HeartBeatRecordService heartBeatRecordService ;
+
+
+    public String handleEartagData(String[] clientMessageArray ,String rawdata) throws ParseException {
+        //这一块应该封装起来 ,而不是直接展示
+        //zj+202007239999895+133070303805451+86+0+2062+0+69+20211110104442+1.0#1.0#11567+0+end
+        String head = clientMessageArray[0];               //命令头
+        String device_code = clientMessageArray[1];        //采集器编码
+        String eartag_no  = clientMessageArray[2];         //耳标号
+        String bat = clientMessageArray[3];                //电池电量
+        String useless_field = clientMessageArray[4];      //目前来说是无用字段
+        String env_temp = clientMessageArray[5];           //环境温度
+        int exercise = Integer.parseInt(clientMessageArray[6]);   //运动量
+        String rssi  = clientMessageArray[7];             //信号强度
+        String time = clientMessageArray[8];              //采集时间
         Date sendEartagTime = DateUtilsPublic.parseDateTime(DateUtilsPublic.buildDateTimeString(time));
         Date sendEartagTime = DateUtilsPublic.parseDateTime(DateUtilsPublic.buildDateTimeString(time));
-
-        String prepare_field= clientMessageArray[9];    //耳标温度
-
-        String[] split = prepare_field.split("#"); // 1.0#1.0#9314     --耳标版本--网关版本--电阻值(用来计算环境温度)
-        String check = clientMessageArray[10];          //校验码
-        String tail  = clientMessageArray[11];          //命令尾
+        String prepare_field= clientMessageArray[9];      //复合字段 1.0#1.0#11567  --耳标版本--网关版本--电阻值(用来计算环境温度)
+        String[] split = prepare_field.split("#");  //1.0#1.0#9314
+        String check = clientMessageArray[10];            //校验码
+        String tail  = clientMessageArray[11];            //命令尾
+        //存放数据
         EartagDataEntity eartagDataEntity = new EartagDataEntity();
         EartagDataEntity eartagDataEntity = new EartagDataEntity();
-
         eartagDataEntity.setHead(head);   //命令头
         eartagDataEntity.setHead(head);   //命令头
         eartagDataEntity.setDeviceCode(device_code); //采集器ID
         eartagDataEntity.setDeviceCode(device_code); //采集器ID
         eartagDataEntity.setVersion(split[0]);  //耳标版本
         eartagDataEntity.setVersion(split[0]);  //耳标版本
         eartagDataEntity.setCommand(split[1]);  //网关版本
         eartagDataEntity.setCommand(split[1]);  //网关版本
-
         eartagDataEntity.setEartagNo(eartag_no);  //耳标号
         eartagDataEntity.setEartagNo(eartag_no);  //耳标号
         eartagDataEntity.setBat(Integer.parseInt(bat));   //电池 电量
         eartagDataEntity.setBat(Integer.parseInt(bat));   //电池 电量
         DecimalFormat df = new DecimalFormat("####0.00");
         DecimalFormat df = new DecimalFormat("####0.00");
@@ -106,10 +106,9 @@ public class ReceivePackageSerivce {
         System.out.println("设备编码 "+device_code);
         System.out.println("设备编码 "+device_code);
         if (collectorRegisterEntity==null){//设备没注册就不让他存,基础信息都没有
         if (collectorRegisterEntity==null){//设备没注册就不让他存,基础信息都没有
             System.out.println("设备登记表中没有此设备信息,请先注册");
             System.out.println("设备登记表中没有此设备信息,请先注册");
-            return "设备登记表中没有此设备信息,请先注册";
+            return  null;
         }
         }
 
 
-
         LambdaQueryWrapper<EartagDataEntity> wrapper = Wrappers.lambdaQuery();
         LambdaQueryWrapper<EartagDataEntity> wrapper = Wrappers.lambdaQuery();
         wrapper.eq(EartagDataEntity::getEartagNo, eartag_no ).orderByDesc( EartagDataEntity::getId ).last( "limit 1");
         wrapper.eq(EartagDataEntity::getEartagNo, eartag_no ).orderByDesc( EartagDataEntity::getId ).last( "limit 1");
         EartagDataEntity lastEarTagDate = eartagDataDao.selectOne(wrapper);
         EartagDataEntity lastEarTagDate = eartagDataDao.selectOne(wrapper);
@@ -123,10 +122,9 @@ public class ReceivePackageSerivce {
             movePigpenEntity.setMoveDate(DateUtilsPublic.parseDateTime(DateUtilsPublic.buildDateTimeString(time)));
             movePigpenEntity.setMoveDate(DateUtilsPublic.parseDateTime(DateUtilsPublic.buildDateTimeString(time)));
             movePigpenEntity.setStage(collectorRegisterEntity.getStage());
             movePigpenEntity.setStage(collectorRegisterEntity.getStage());
             movePigpenEntity.setOrgId(collectorRegisterEntity.getOrgId());
             movePigpenEntity.setOrgId(collectorRegisterEntity.getOrgId());
-
             movePigpenService.save(movePigpenEntity);
             movePigpenService.save(movePigpenEntity);
 
 
-            //存储注册信息(现在也是猪的基础信息---需要大量冗余,毕竟基础信息)    写定时任务刷新这张表
+            //存储注册信息(现在也是猪的基础信息---需要大量冗余,毕竟基础信息)
             EartagRegisterEntity eartagRegisterEntity = new EartagRegisterEntity();
             EartagRegisterEntity eartagRegisterEntity = new EartagRegisterEntity();
             eartagRegisterEntity.setAge(0);
             eartagRegisterEntity.setAge(0);
             eartagRegisterEntity.setDeviceCode(device_code);//给绑定的设备编码死否会改变
             eartagRegisterEntity.setDeviceCode(device_code);//给绑定的设备编码死否会改变
@@ -136,19 +134,28 @@ public class ReceivePackageSerivce {
             eartagRegisterEntity.setRegisterDate(new Date());
             eartagRegisterEntity.setRegisterDate(new Date());
             eartagRegisterEntity.setOrgId( collectorRegisterEntity.getOrgId());
             eartagRegisterEntity.setOrgId( collectorRegisterEntity.getOrgId());
             eartagRegisterEntity.setStage(collectorRegisterEntity.getStage());
             eartagRegisterEntity.setStage(collectorRegisterEntity.getStage());
+            eartagRegisterEntity.setStage(collectorRegisterEntity.getUnitId());
 
 
             eartagRegisterService.save(eartagRegisterEntity);//存储一条还没有处理的数据
             eartagRegisterService.save(eartagRegisterEntity);//存储一条还没有处理的数据
-
             //存储这一条数据
             //存储这一条数据
             eartagDataEntity.setFarmCode(collectorRegisterEntity.getFarmCode());
             eartagDataEntity.setFarmCode(collectorRegisterEntity.getFarmCode());
             eartagDataEntity.setStage(collectorRegisterEntity.getStage());
             eartagDataEntity.setStage(collectorRegisterEntity.getStage());
             eartagDataEntity.setPigpen((String.valueOf( collectorRegisterEntity.getPigpenId())));
             eartagDataEntity.setPigpen((String.valueOf( collectorRegisterEntity.getPigpenId())));
-            eartagDataEntity.setSportGap(0);
+            eartagDataEntity.setSportGap(0);//运动量
             eartagDataEntity.setOrgId(collectorRegisterEntity.getOrgId());
             eartagDataEntity.setOrgId(collectorRegisterEntity.getOrgId());
             eartagDataEntity.setUnitId(collectorRegisterEntity.getUnitId());
             eartagDataEntity.setUnitId(collectorRegisterEntity.getUnitId());
             System.out.println("存储成功------");
             System.out.println("存储成功------");
             eartagDataService.save(eartagDataEntity);
             eartagDataService.save(eartagDataEntity);
-            return "hm+6+0+6+end";
+
+            //存储原始数据
+            RawDataEntity rawDataEntity = new RawDataEntity();
+            rawDataEntity.setDetailData(rawdata);
+            rawDataEntity.setStatus(0);
+            rawDataEntity.setCreateTime(new Date());
+            rawDataService.save(rawDataEntity);
+
+            //罗工要求返回空数据
+            return null;
         }
         }
 
 
         //如果第一条不为空,通过计算时间间隔来判断是否存储
         //如果第一条不为空,通过计算时间间隔来判断是否存储
@@ -156,25 +163,32 @@ public class ReceivePackageSerivce {
         if( DateGap < ImportanteConfig.EARTAG_SEND_GAP_TIME){
         if( DateGap < ImportanteConfig.EARTAG_SEND_GAP_TIME){
             //更改存储形式,通过计算间隔时间来判断数据的存储
             //更改存储形式,通过计算间隔时间来判断数据的存储
             System.out.println("间隔时间过短,抛弃");
             System.out.println("间隔时间过短,抛弃");
-            return "间隔时间过短,抛弃";
+            return  null;
         }
         }
+
         eartagDataEntity.setFarmCode(collectorRegisterEntity.getFarmCode());
         eartagDataEntity.setFarmCode(collectorRegisterEntity.getFarmCode());
         eartagDataEntity.setStage(collectorRegisterEntity.getStage());
         eartagDataEntity.setStage(collectorRegisterEntity.getStage());
         eartagDataEntity.setPigpen((String.valueOf( collectorRegisterEntity.getPigpenId())));
         eartagDataEntity.setPigpen((String.valueOf( collectorRegisterEntity.getPigpenId())));
         eartagDataEntity.setUnitId(collectorRegisterEntity.getUnitId());
         eartagDataEntity.setUnitId(collectorRegisterEntity.getUnitId());
-
         eartagDataEntity.setSportGap(0);
         eartagDataEntity.setSportGap(0);
         eartagDataEntity.setOrgId(collectorRegisterEntity.getOrgId());
         eartagDataEntity.setOrgId(collectorRegisterEntity.getOrgId());
 
 
         eartagDataService.save(eartagDataEntity);
         eartagDataService.save(eartagDataEntity);
         System.out.println("存储成功-----");
         System.out.println("存储成功-----");
-        return "hm+6+0+6+end";
+
+        //存储原始数据
+        RawDataEntity rawDataEntity = new RawDataEntity();
+        rawDataEntity.setDetailData(rawdata);
+        rawDataEntity.setStatus(0);
+        rawDataEntity.setCreateTime(new Date());
+        rawDataService.save(rawDataEntity);
+        //罗工要求返回空数据
+        return null;
     }
     }
 
 
 
 
     public static void main(String[] args) {
     public static void main(String[] args) {
         DecimalFormat df = new DecimalFormat("####0.00");
         DecimalFormat df = new DecimalFormat("####0.00");
-
         System.out.println(df.format(23.00000));
         System.out.println(df.format(23.00000));
     }
     }
 
 
@@ -267,8 +281,6 @@ public class ReceivePackageSerivce {
      * @Time : 17:46
      * @Time : 17:46
      */
      */
     public String handleEartagTemperature(String[] clientMessageArray) throws ParseException {
     public String handleEartagTemperature(String[] clientMessageArray) throws ParseException {
-
-
         //设备温度
         //设备温度
         String header = clientMessageArray[0];
         String header = clientMessageArray[0];
         String deviceId = clientMessageArray[1];
         String deviceId = clientMessageArray[1];
@@ -299,6 +311,29 @@ public class ReceivePackageSerivce {
         deviceTempEntity.setOrgId(collectorRegisterEntity.getOrgId());
         deviceTempEntity.setOrgId(collectorRegisterEntity.getOrgId());
         deviceTempService.save(deviceTempEntity);
         deviceTempService.save(deviceTempEntity);
         // temperatureService.add(EartagTemperaturePojo);
         // temperatureService.add(EartagTemperaturePojo);
+
+
+        //hm+202007239999856+2+0+end
+        System.out.println("基站编码编码为====>"+deviceId);
+        HeartBeatRecordEntity heartBeatRecordEntity = new HeartBeatRecordEntity();
+        heartBeatRecordEntity.setCheckNo("0");
+        heartBeatRecordEntity.setCmd(3);
+        heartBeatRecordEntity.setCountyCode(collectorRegisterEntity.getCountyCode());
+        heartBeatRecordEntity.setDeviceCode(deviceId);
+        heartBeatRecordEntity.setFarmCode(collectorRegisterEntity.getFarmCode());
+        heartBeatRecordEntity.setHead("hm");
+        heartBeatRecordEntity.setPigpenId(collectorRegisterEntity.getPigpenId().toString());
+        heartBeatRecordEntity.setTail("end");
+        heartBeatRecordEntity.setUnitId(collectorRegisterEntity.getUnitId().toString());
+        heartBeatRecordEntity.setCreateTime(new Date());
+        heartBeatRecordService.save(heartBeatRecordEntity);
+
+
+
+
+
+
+
         return "hm+4+0+7+end";
         return "hm+4+0+7+end";
     }
     }
 
 

+ 64 - 4
cloud-platform-acquisition/src/main/java/com/huimv/acquisition/socket/eartagrecive/service/impl/SendPackageService.java

@@ -4,11 +4,16 @@ package com.huimv.acquisition.socket.eartagrecive.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.huimv.acquisition.entity.CollectorRegisterEntity;
 import com.huimv.acquisition.entity.CollectorRegisterEntity;
+import com.huimv.acquisition.entity.HeartBeatRecordEntity;
 import com.huimv.acquisition.mapper.CollectorRegisterDao;
 import com.huimv.acquisition.mapper.CollectorRegisterDao;
+import com.huimv.acquisition.mapper.HeartBeatRecordDao;
+import com.huimv.acquisition.service.HeartBeatRecordService;
 import com.huimv.acquisition.socket.eartagrecive.util.DateUtil;
 import com.huimv.acquisition.socket.eartagrecive.util.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
+import java.util.Date;
+
 /**
 /**
  * @Project : huimv.shiwan
  * @Project : huimv.shiwan
  * @Package : com.huimv.biosafety.uface.controller
  * @Package : com.huimv.biosafety.uface.controller
@@ -21,6 +26,11 @@ import org.springframework.stereotype.Component;
 public class SendPackageService {
 public class SendPackageService {
     @Autowired
     @Autowired
     private CollectorRegisterDao collectorRegisterDao;
     private CollectorRegisterDao collectorRegisterDao;
+
+    @Autowired
+    private HeartBeatRecordService heartBeatRecordService;
+
+
     /**
     /**
      * @Method      : _handleGetDeviceId
      * @Method      : _handleGetDeviceId
      * @Description : 获取设备id
      * @Description : 获取设备id
@@ -45,10 +55,30 @@ public class SendPackageService {
              //注册失败的标志
              //注册失败的标志
              return    "hm+1+1+158+123+8+end";
              return    "hm+1+1+158+123+8+end";
          }
          }
-
         return "hm+1+0+"+collectorRegisterEntity.getDeviceCode()+"+520+8+end";
         return "hm+1+0+"+collectorRegisterEntity.getDeviceCode()+"+520+8+end";
     }
     }
 
 
+
+    //0号命令  请求机器的IP
+    public String getDeviceIp(String[] clientMessageArray) {
+        //盒子的芯片编码为
+        String serialNo = clientMessageArray[1];
+        System.out.println("芯片编码为====>"+serialNo);
+        LambdaQueryWrapper<CollectorRegisterEntity> wrapper1 = Wrappers.lambdaQuery();
+        wrapper1.eq(CollectorRegisterEntity::getRegisteCode, serialNo );
+        CollectorRegisterEntity collectorRegisterEntity = collectorRegisterDao.selectOne(wrapper1);
+        //520---站点ID--现在随便写
+        if(collectorRegisterEntity==null) {
+            //注册失败的标志
+            return "hm+1+1+158+123+8+end";
+        }
+        //返回IP和端口
+        System.out.println("返回IP成功");
+        return "hm+0+0+"+collectorRegisterEntity.getServerIp()+"+"+collectorRegisterEntity.getPort()+"+8+end";
+    }
+
+
+
     /**
     /**
      * @Method      : _handleGetServerDateTime
      * @Method      : _handleGetServerDateTime
      * @Description : 获取获取服务器日期时间
      * @Description : 获取获取服务器日期时间
@@ -59,16 +89,38 @@ public class SendPackageService {
      * @Time        : 17:38
      * @Time        : 17:38
      */
      */
     public String getServerDateTime(String[] clientMessageArray) {
     public String getServerDateTime(String[] clientMessageArray) {
-        //
+        //hm+202007239999856+2+0+end
+        String device_code = clientMessageArray[1];
+        System.out.println("基站编码编码为====>"+device_code);
+        LambdaQueryWrapper<CollectorRegisterEntity> wrapper1 = Wrappers.lambdaQuery();
+        wrapper1.eq(CollectorRegisterEntity::getDeviceCode, device_code );
+        CollectorRegisterEntity collectorRegisterEntity = collectorRegisterDao.selectOne(wrapper1);
+        HeartBeatRecordEntity heartBeatRecordEntity = new HeartBeatRecordEntity();
+        heartBeatRecordEntity.setCheckNo("0");
+        heartBeatRecordEntity.setCmd(3);
+        heartBeatRecordEntity.setCountyCode(collectorRegisterEntity.getCountyCode());
+        heartBeatRecordEntity.setDeviceCode(device_code);
+        heartBeatRecordEntity.setFarmCode(collectorRegisterEntity.getFarmCode());
+        heartBeatRecordEntity.setHead("hm");
+        heartBeatRecordEntity.setPigpenId(collectorRegisterEntity.getPigpenId().toString());
+        heartBeatRecordEntity.setTail("end");
+        heartBeatRecordEntity.setUnitId(collectorRegisterEntity.getUnitId().toString());
+        heartBeatRecordEntity.setCreateTime(new Date());
+        heartBeatRecordService.save(heartBeatRecordEntity);
+
+
         String formatNow = DateUtil.getNowWithDigital();
         String formatNow = DateUtil.getNowWithDigital();
+
+
+
        // hm+2+20170203094133+4+end
        // hm+2+20170203094133+4+end
         return "hm+2+"+formatNow+"+4+end";
         return "hm+2+"+formatNow+"+4+end";
     }
     }
 
 
 
 
 
 
-    /**
-     * @Method      : _handleGetHeartbeatBag
+
+  /*   * @Method      : _handleGetHeartbeatBag
      * @Description : 获取心跳包
      * @Description : 获取心跳包
      * @Params      : [clientMessageArray]
      * @Params      : [clientMessageArray]
      * @Return      : java.lang.String
      * @Return      : java.lang.String
@@ -78,6 +130,14 @@ public class SendPackageService {
      * @Time        : 17:38
      * @Time        : 17:38
      */
      */
     public String getHeartbeatBag(String[] clientMessageArray) {
     public String getHeartbeatBag(String[] clientMessageArray) {
+
+
+
+
+
+
+
         return "hm+3+0+6+end";
         return "hm+3+0+6+end";
     }
     }
+
 }
 }

+ 1 - 2
cloud-platform-acquisition/src/main/java/com/huimv/acquisition/socket/eartagrecive/util/Result.java

@@ -4,8 +4,7 @@ import java.io.Serializable;
 
 
 /**
 /**
  * 描述
  * 描述
- *
- * @author 三国的包子
+ * @author 三国的包    好好研究一一下这个项目啊    东西很多 值得学习
  * @version 1.0
  * @version 1.0
  * @package entity *
  * @package entity *
  * @since 1.0
  * @since 1.0

+ 1 - 1
cloud-platform-acquisition/src/main/resources/application-dev.yml

@@ -2,7 +2,7 @@ server:
   port: 9501
   port: 9501
 spring:
 spring:
   datasource:
   datasource:
-    url: jdbc:mysql://122.112.224.199:3306/huimv-ruian?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+    url: jdbc:mysql://122.112.224.199:3306/huimv-eartag-cloud?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
     username: root
     username: root
     password: hm123456
     password: hm123456
     driver-class-name: com.mysql.cj.jdbc.Driver
     driver-class-name: com.mysql.cj.jdbc.Driver

+ 0 - 2
cloud-platform-base/platform-core/src/main/java/com/huimv/core/cache/base/AbstractRedisCacheOperator.java

@@ -29,8 +29,6 @@ import cn.hutool.core.util.StrUtil;
 import com.huimv.core.cache.CacheOperator;
 import com.huimv.core.cache.CacheOperator;
 import com.huimv.core.consts.SymbolConstant;
 import com.huimv.core.consts.SymbolConstant;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.core.RedisTemplate;
-
-
 import java.util.*;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;

+ 1 - 4
cloud-platform-main/src/main/java/com/huimv/CloudPlatformApplication.java

@@ -5,24 +5,21 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.EnableScheduling;
 
 
+
 /**
 /**
  * <p>
  * <p>
  * Springboot方式项目启动类
  * Springboot方式项目启动类
  * </p>
  * </p>
- *
  * @author yinhao
  * @author yinhao
  * @date 2021/8/9 16:26
  * @date 2021/8/9 16:26
  */
  */
 
 
-
 @SpringBootApplication
 @SpringBootApplication
 @EnableScheduling
 @EnableScheduling
 public class CloudPlatformApplication {
 public class CloudPlatformApplication {
-
     private static final Log log = Log.get();
     private static final Log log = Log.get();
     public static void main(String[] args) {
     public static void main(String[] args) {
         SpringApplication.run(CloudPlatformApplication.class, args);
         SpringApplication.run(CloudPlatformApplication.class, args);
         log.info(">>> " + CloudPlatformApplication.class.getSimpleName() + " is success!");
         log.info(">>> " + CloudPlatformApplication.class.getSimpleName() + " is success!");
     }
     }
-
 }
 }

+ 81 - 25
cloud-platform-main/src/main/java/com/huimv/modular/alarmvalueset/controller/AlarmValueSetController.java

@@ -24,20 +24,25 @@ Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意
  */
  */
 package com.huimv.modular.alarmvalueset.controller;
 package com.huimv.modular.alarmvalueset.controller;
 
 
-import com.huimv.core.annotion.BusinessLog;
-import com.huimv.core.annotion.Permission;
-import com.huimv.core.enums.LogAnnotionOpTypeEnum;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
 import com.huimv.core.pojo.response.ResponseData;
 import com.huimv.core.pojo.response.ResponseData;
 import com.huimv.core.pojo.response.SuccessResponseData;
 import com.huimv.core.pojo.response.SuccessResponseData;
+import com.huimv.modular.alarmvalueset.entity.AlarmValueSet;
+import com.huimv.modular.alarmvalueset.mapper.AlarmValueSetMapper;
 import com.huimv.modular.alarmvalueset.param.AlarmValueSetParam;
 import com.huimv.modular.alarmvalueset.param.AlarmValueSetParam;
 import com.huimv.modular.alarmvalueset.service.AlarmValueSetService;
 import com.huimv.modular.alarmvalueset.service.AlarmValueSetService;
-import org.springframework.web.bind.annotation.RestController;
+import com.huimv.modular.collectorregister.entity.CollectorRegister;
+import com.huimv.modular.collectorregister.mapper.CollectorRegisterMapper;
+
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.*;
+
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import java.util.Date;
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 /**
 /**
  * 报警参数设置控制器
  * 报警参数设置控制器
@@ -50,6 +55,10 @@ public class AlarmValueSetController {
 
 
     @Resource
     @Resource
     private AlarmValueSetService alarmValueSetService;
     private AlarmValueSetService alarmValueSetService;
+    @Resource
+    private CollectorRegisterMapper collectorRegisterMapper;
+    @Resource
+    private AlarmValueSetMapper  alarmValueSetMapper;
 
 
     /**
     /**
      * 查询报警参数设置
      * 查询报警参数设置
@@ -57,9 +66,9 @@ public class AlarmValueSetController {
      * @author ydd
      * @author ydd
      * @date 2021-08-20 13:23:30
      * @date 2021-08-20 13:23:30
      */
      */
-    @Permission
+
     @GetMapping("/alarmValueSet/page")
     @GetMapping("/alarmValueSet/page")
-    @BusinessLog(title = "报警参数设置_查询", opType = LogAnnotionOpTypeEnum.QUERY)
+   // @BusinessLog(title = "报警参数设置_查询", opType = LogAnnotionOpTypeEnum.QUERY)
     public ResponseData page(AlarmValueSetParam alarmValueSetParam) {
     public ResponseData page(AlarmValueSetParam alarmValueSetParam) {
         return new SuccessResponseData(alarmValueSetService.page(alarmValueSetParam));
         return new SuccessResponseData(alarmValueSetService.page(alarmValueSetParam));
     }
     }
@@ -70,23 +79,57 @@ public class AlarmValueSetController {
      * @author ydd
      * @author ydd
      * @date 2021-08-20 13:23:30
      * @date 2021-08-20 13:23:30
      */
      */
-    @Permission
+
     @PostMapping("/alarmValueSet/add")
     @PostMapping("/alarmValueSet/add")
-    @BusinessLog(title = "报警参数设置_增加", opType = LogAnnotionOpTypeEnum.ADD)
-    public ResponseData add(@RequestBody @Validated(AlarmValueSetParam.add.class) AlarmValueSetParam alarmValueSetParam) {
-            alarmValueSetService.add(alarmValueSetParam);
+   // @BusinessLog(title = "报警参数设置_增加", opType = LogAnnotionOpTypeEnum.ADD)
+   // public ResponseData add(@RequestBody @Validated(AlarmValueSetParam.add.class) AlarmValueSetParam alarmValueSetParam) {
+    public ResponseData add(@RequestParam Map<String, Object> params) {
+        String alarmType = (String) params.get("alarmType");//开始时间
+        Long orgId =  (Long)params.get("orgId");;
+        System.out.println(orgId+"组织ID"+alarmType);
+
+        String setValue = (String) params.get("setValue");//开始时间
+        LambdaQueryWrapper<CollectorRegister> wrapper3 = Wrappers.lambdaQuery();
+        wrapper3.eq(CollectorRegister::getOrgId, orgId).orderByAsc(CollectorRegister::getId).last("limit 1");
+        CollectorRegister collectorRegister = collectorRegisterMapper.selectOne(wrapper3);
+        if(collectorRegister==null){
+            return new SuccessResponseData("当前牧场没有数据采集设备,无法设置阈值");
+        }
+
+        LambdaQueryWrapper<AlarmValueSet> wrapper4 = Wrappers.lambdaQuery();
+        wrapper4.eq(AlarmValueSet::getOrgId, orgId).eq(AlarmValueSet::getAlarmType,Integer.valueOf(alarmType) );
+        AlarmValueSet alarmValueSet1 = alarmValueSetMapper.selectOne(wrapper4);
+        System.out.println(alarmValueSet1);
+        if (alarmValueSet1!=null) {
+            return new SuccessResponseData("已经设置此阈值");
+        }
+
+
+        AlarmValueSet alarmValueSet = new AlarmValueSet();
+        alarmValueSet.setAlarmType(Integer.valueOf(alarmType));
+        alarmValueSet.setCanStatus(0);
+        alarmValueSet.setFarmCode(collectorRegister.getFarmCode());
+        alarmValueSet.setFarmName(collectorRegister.getFarmName());
+        alarmValueSet.setOrgId(String.valueOf(orgId) );
+        alarmValueSet.setRemark("测试数据");
+        alarmValueSet.setSetValue(Double.valueOf(setValue));
+        alarmValueSet.setUpdateTime(new Date());
+        alarmValueSetService.save(alarmValueSet);
         return new SuccessResponseData();
         return new SuccessResponseData();
     }
     }
 
 
+
+
+
     /**
     /**
      * 删除报警参数设置,可批量删除
      * 删除报警参数设置,可批量删除
      *
      *
      * @author ydd
      * @author ydd
      * @date 2021-08-20 13:23:30
      * @date 2021-08-20 13:23:30
      */
      */
-    @Permission
+
     @PostMapping("/alarmValueSet/delete")
     @PostMapping("/alarmValueSet/delete")
-    @BusinessLog(title = "报警参数设置_删除", opType = LogAnnotionOpTypeEnum.DELETE)
+   // @BusinessLog(title = "报警参数设置_删除", opType = LogAnnotionOpTypeEnum.DELETE)
     public ResponseData delete(@RequestBody @Validated(AlarmValueSetParam.delete.class) List<AlarmValueSetParam> alarmValueSetParamList) {
     public ResponseData delete(@RequestBody @Validated(AlarmValueSetParam.delete.class) List<AlarmValueSetParam> alarmValueSetParamList) {
             alarmValueSetService.delete(alarmValueSetParamList);
             alarmValueSetService.delete(alarmValueSetParamList);
         return new SuccessResponseData();
         return new SuccessResponseData();
@@ -98,11 +141,24 @@ public class AlarmValueSetController {
      * @author ydd
      * @author ydd
      * @date 2021-08-20 13:23:30
      * @date 2021-08-20 13:23:30
      */
      */
-    @Permission
+
     @PostMapping("/alarmValueSet/edit")
     @PostMapping("/alarmValueSet/edit")
-    @BusinessLog(title = "报警参数设置_编辑", opType = LogAnnotionOpTypeEnum.EDIT)
-    public ResponseData edit(@RequestBody @Validated(AlarmValueSetParam.edit.class) AlarmValueSetParam alarmValueSetParam) {
-            alarmValueSetService.edit(alarmValueSetParam);
+   // @BusinessLog(title = "报警参数设置_编辑", opType = LogAnnotionOpTypeEnum.EDIT)
+    //public ResponseData edit(@RequestBody @Validated(AlarmValueSetParam.edit.class) AlarmValueSetParam alarmValueSetParam) {
+    public ResponseData edit(@RequestBody  Map<String, Object> params) {
+           // alarmValueSetService.edit(alarmValueSetParam);
+        // String farmID = (String) params.get("farmID");//牧场编码
+        String  id = (String) params.get("id");//牧场编码
+        Integer alarmType = (int) params.get("alarmType");//开始时间
+        String setValue = (String) params.get("setValue");//开始时间
+        LambdaQueryWrapper<AlarmValueSet> wrapper3 = Wrappers.lambdaQuery();
+        wrapper3.eq(AlarmValueSet::getId,Integer.valueOf(id) );
+        AlarmValueSet alarmValueSet = alarmValueSetMapper.selectOne(wrapper3);
+
+        alarmValueSet.setAlarmType(alarmType);
+        alarmValueSet.setCanStatus(0);
+        alarmValueSet.setSetValue(Double.valueOf(setValue));
+        alarmValueSetService.updateById(alarmValueSet);
         return new SuccessResponseData();
         return new SuccessResponseData();
     }
     }
 
 
@@ -112,9 +168,9 @@ public class AlarmValueSetController {
      * @author ydd
      * @author ydd
      * @date 2021-08-20 13:23:30
      * @date 2021-08-20 13:23:30
      */
      */
-    @Permission
+
     @GetMapping("/alarmValueSet/detail")
     @GetMapping("/alarmValueSet/detail")
-    @BusinessLog(title = "报警参数设置_查看", opType = LogAnnotionOpTypeEnum.DETAIL)
+   // @BusinessLog(title = "报警参数设置_查看", opType = LogAnnotionOpTypeEnum.DETAIL)
     public ResponseData detail(@Validated(AlarmValueSetParam.detail.class) AlarmValueSetParam alarmValueSetParam) {
     public ResponseData detail(@Validated(AlarmValueSetParam.detail.class) AlarmValueSetParam alarmValueSetParam) {
         return new SuccessResponseData(alarmValueSetService.detail(alarmValueSetParam));
         return new SuccessResponseData(alarmValueSetService.detail(alarmValueSetParam));
     }
     }
@@ -125,9 +181,9 @@ public class AlarmValueSetController {
      * @author ydd
      * @author ydd
      * @date 2021-08-20 13:23:30
      * @date 2021-08-20 13:23:30
      */
      */
-    @Permission
+
     @GetMapping("/alarmValueSet/list")
     @GetMapping("/alarmValueSet/list")
-    @BusinessLog(title = "报警参数设置_列表", opType = LogAnnotionOpTypeEnum.QUERY)
+   // @BusinessLog(title = "报警参数设置_列表", opType = LogAnnotionOpTypeEnum.QUERY)
     public ResponseData list(AlarmValueSetParam alarmValueSetParam) {
     public ResponseData list(AlarmValueSetParam alarmValueSetParam) {
         return new SuccessResponseData(alarmValueSetService.list(alarmValueSetParam));
         return new SuccessResponseData(alarmValueSetService.list(alarmValueSetParam));
     }
     }
@@ -138,9 +194,9 @@ public class AlarmValueSetController {
      * @author ydd
      * @author ydd
      * @date 2021-08-20 13:23:30
      * @date 2021-08-20 13:23:30
      */
      */
-    @Permission
+
     @GetMapping("/alarmValueSet/export")
     @GetMapping("/alarmValueSet/export")
-    @BusinessLog(title = "报警参数设置_导出", opType = LogAnnotionOpTypeEnum.EXPORT)
+   // @BusinessLog(title = "报警参数设置_导出", opType = LogAnnotionOpTypeEnum.EXPORT)
     public void export(AlarmValueSetParam alarmValueSetParam) {
     public void export(AlarmValueSetParam alarmValueSetParam) {
         alarmValueSetService.export(alarmValueSetParam);
         alarmValueSetService.export(alarmValueSetParam);
     }
     }

+ 12 - 1
cloud-platform-main/src/main/java/com/huimv/modular/alarmvalueset/entity/AlarmValueSet.java

@@ -28,8 +28,11 @@ import cn.afterturn.easypoi.excel.annotation.Excel;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.Data;
 
 
+import java.util.Date;
+
 /**
 /**
  * 报警参数设置
  * 报警参数设置
  *
  *
@@ -44,9 +47,14 @@ public class AlarmValueSet  {
     /**
     /**
      * 
      * 
      */
      */
-    @TableId(type = IdType.ASSIGN_ID)
+    @TableId(type = IdType.AUTO)
     private Integer id;
     private Integer id;
 
 
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    //@Excel(name = "采集时间", databaseFormat = "yyyy-MM-dd HH:mm:ss", format = "yyyy-MM-dd", width = 20)
+    private Date updateTime;
+
+
     /**
     /**
      * 组织id
      * 组织id
      */
      */
@@ -89,4 +97,7 @@ public class AlarmValueSet  {
     @Excel(name = "0.在使用  1.停止使用")
     @Excel(name = "0.在使用  1.停止使用")
     private Integer canStatus;
     private Integer canStatus;
 
 
+
+
+
 }
 }

+ 1 - 1
cloud-platform-main/src/main/java/com/huimv/modular/alarmvalueset/enums/AlarmValueSetExceptionEnum.java

@@ -24,12 +24,12 @@ Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意
  */
  */
 package com.huimv.modular.alarmvalueset.enums;
 package com.huimv.modular.alarmvalueset.enums;
 
 
+
 import com.huimv.core.annotion.ExpEnumType;
 import com.huimv.core.annotion.ExpEnumType;
 import com.huimv.core.exception.enums.abs.AbstractBaseExceptionEnum;
 import com.huimv.core.exception.enums.abs.AbstractBaseExceptionEnum;
 import com.huimv.core.factory.ExpEnumCodeFactory;
 import com.huimv.core.factory.ExpEnumCodeFactory;
 import com.huimv.sys.core.consts.SysExpEnumConstant;
 import com.huimv.sys.core.consts.SysExpEnumConstant;
 
 
-
 /**
 /**
  * 报警参数设置
  * 报警参数设置
  *
  *

+ 2 - 0
cloud-platform-main/src/main/java/com/huimv/modular/alarmvalueset/mapper/AlarmValueSetMapper.java

@@ -26,6 +26,7 @@ package com.huimv.modular.alarmvalueset.mapper;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.huimv.modular.alarmvalueset.entity.AlarmValueSet;
 import com.huimv.modular.alarmvalueset.entity.AlarmValueSet;
+import org.springframework.stereotype.Repository;
 
 
 /**
 /**
  * 报警参数设置
  * 报警参数设置
@@ -33,5 +34,6 @@ import com.huimv.modular.alarmvalueset.entity.AlarmValueSet;
  * @author ydd
  * @author ydd
  * @date 2021-08-20 13:23:30
  * @date 2021-08-20 13:23:30
  */
  */
+@Repository
 public interface AlarmValueSetMapper extends BaseMapper<AlarmValueSet> {
 public interface AlarmValueSetMapper extends BaseMapper<AlarmValueSet> {
 }
 }

+ 1 - 0
cloud-platform-main/src/main/java/com/huimv/modular/alarmvalueset/param/AlarmValueSetParam.java

@@ -24,6 +24,7 @@ Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意
  */
  */
 package com.huimv.modular.alarmvalueset.param;
 package com.huimv.modular.alarmvalueset.param;
 
 
+
 import com.huimv.core.pojo.base.param.BaseParam;
 import com.huimv.core.pojo.base.param.BaseParam;
 import lombok.Data;
 import lombok.Data;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.NotNull;

+ 3 - 0
cloud-platform-main/src/main/java/com/huimv/modular/alarmvalueset/service/AlarmValueSetService.java

@@ -24,8 +24,11 @@ Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意
  */
  */
 package com.huimv.modular.alarmvalueset.service;
 package com.huimv.modular.alarmvalueset.service;
 
 
+
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
+
 import com.huimv.core.pojo.page.PageResult;
 import com.huimv.core.pojo.page.PageResult;
+
 import com.huimv.modular.alarmvalueset.entity.AlarmValueSet;
 import com.huimv.modular.alarmvalueset.entity.AlarmValueSet;
 import com.huimv.modular.alarmvalueset.param.AlarmValueSetParam;
 import com.huimv.modular.alarmvalueset.param.AlarmValueSetParam;
 import java.util.List;
 import java.util.List;

+ 8 - 6
cloud-platform-main/src/main/java/com/huimv/modular/alarmvalueset/service/impl/AlarmValueSetServiceImpl.java

@@ -26,12 +26,11 @@ package com.huimv.modular.alarmvalueset.service.impl;
 
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.huimv.core.consts.CommonConstant;
-import com.huimv.core.enums.CommonStatusEnum;
+
+
 import com.huimv.core.exception.ServiceException;
 import com.huimv.core.exception.ServiceException;
 import com.huimv.core.factory.PageFactory;
 import com.huimv.core.factory.PageFactory;
 import com.huimv.core.pojo.page.PageResult;
 import com.huimv.core.pojo.page.PageResult;
@@ -43,7 +42,7 @@ import com.huimv.modular.alarmvalueset.param.AlarmValueSetParam;
 import com.huimv.modular.alarmvalueset.service.AlarmValueSetService;
 import com.huimv.modular.alarmvalueset.service.AlarmValueSetService;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
-import javax.annotation.Resource;
+
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -56,7 +55,7 @@ import java.util.List;
 public class AlarmValueSetServiceImpl extends ServiceImpl<AlarmValueSetMapper, AlarmValueSet> implements AlarmValueSetService {
 public class AlarmValueSetServiceImpl extends ServiceImpl<AlarmValueSetMapper, AlarmValueSet> implements AlarmValueSetService {
 
 
     @Override
     @Override
-    public PageResult<AlarmValueSet> page(AlarmValueSetParam alarmValueSetParam) {
+    public PageResult page(AlarmValueSetParam alarmValueSetParam) {
         QueryWrapper<AlarmValueSet> queryWrapper = new QueryWrapper<>();
         QueryWrapper<AlarmValueSet> queryWrapper = new QueryWrapper<>();
         if (ObjectUtil.isNotNull(alarmValueSetParam)) {
         if (ObjectUtil.isNotNull(alarmValueSetParam)) {
 
 
@@ -100,6 +99,9 @@ public class AlarmValueSetServiceImpl extends ServiceImpl<AlarmValueSetMapper, A
     @Override
     @Override
     public void add(AlarmValueSetParam alarmValueSetParam) {
     public void add(AlarmValueSetParam alarmValueSetParam) {
         AlarmValueSet alarmValueSet = new AlarmValueSet();
         AlarmValueSet alarmValueSet = new AlarmValueSet();
+
+
+
         BeanUtil.copyProperties(alarmValueSetParam, alarmValueSet);
         BeanUtil.copyProperties(alarmValueSetParam, alarmValueSet);
         this.save(alarmValueSet);
         this.save(alarmValueSet);
     }
     }

+ 0 - 2
cloud-platform-main/src/main/java/com/huimv/modular/basepigpen/service/impl/BasePigpenServiceImpl.java

@@ -69,7 +69,6 @@ public class BasePigpenServiceImpl extends ServiceImpl<BasePigpenMapper, BasePig
             Long sysLoginUserOrgId = LoginContextHolder.me().getSysLoginUserOrgId();
             Long sysLoginUserOrgId = LoginContextHolder.me().getSysLoginUserOrgId();
 
 
             queryWrapper.lambda().eq(BasePigpen::getOrgId,sysLoginUserOrgId);
             queryWrapper.lambda().eq(BasePigpen::getOrgId,sysLoginUserOrgId);
-
             // 根据栋舍名称 查询
             // 根据栋舍名称 查询
             if (ObjectUtil.isNotEmpty(basePigpenParam.getPigpenName())) {
             if (ObjectUtil.isNotEmpty(basePigpenParam.getPigpenName())) {
                 queryWrapper.lambda().like(BasePigpen::getPigpenName, basePigpenParam.getPigpenName());
                 queryWrapper.lambda().like(BasePigpen::getPigpenName, basePigpenParam.getPigpenName());
@@ -83,7 +82,6 @@ public class BasePigpenServiceImpl extends ServiceImpl<BasePigpenMapper, BasePig
                 queryWrapper.lambda().like(BasePigpen::getStage, basePigpenParam.getStage());
                 queryWrapper.lambda().like(BasePigpen::getStage, basePigpenParam.getStage());
             }
             }
 
 
-
         }
         }
         queryWrapper.lambda().eq(BasePigpen::getType, 1);
         queryWrapper.lambda().eq(BasePigpen::getType, 1);
         PageResult<BasePigpen> basePigpenPageResult = new PageResult<>(this.page(PageFactory.defaultPage(), queryWrapper));
         PageResult<BasePigpen> basePigpenPageResult = new PageResult<>(this.page(PageFactory.defaultPage(), queryWrapper));

+ 2 - 3
cloud-platform-main/src/main/java/com/huimv/modular/baseregion/entity/BaseRegion.java

@@ -25,12 +25,11 @@ Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意
 package com.huimv.modular.baseregion.entity;
 package com.huimv.modular.baseregion.entity;
 
 
 import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.annotation.*;
-import com.huimv.core.pojo.base.entity.BaseEntity;
 import lombok.Data;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
-import java.util.*;
 import cn.afterturn.easypoi.excel.annotation.Excel;
 import cn.afterturn.easypoi.excel.annotation.Excel;
 
 
+
+
 /**
 /**
  * 区域管理
  * 区域管理
  *
  *

+ 0 - 1
cloud-platform-main/src/main/java/com/huimv/modular/collectorregister/controller/CollectorRegisterController.java

@@ -72,7 +72,6 @@ public class CollectorRegisterController {
     public ResponseData page(CollectorRegisterParam collectorRegisterParam) {
     public ResponseData page(CollectorRegisterParam collectorRegisterParam) {
         return new SuccessResponseData(collectorRegisterService.page(collectorRegisterParam));
         return new SuccessResponseData(collectorRegisterService.page(collectorRegisterParam));
     }
     }
-
     /**
     /**
      * 添加设备管理
      * 添加设备管理
      *
      *

+ 16 - 0
cloud-platform-main/src/main/java/com/huimv/modular/collectorregister/entity/DeviceStatusEntity.java

@@ -0,0 +1,16 @@
+package com.huimv.modular.collectorregister.entity;
+
+
+
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Data;
+
+@Data
+public class DeviceStatusEntity {
+
+    private Integer id;
+
+    private String deviceCode;
+
+}

+ 39 - 0
cloud-platform-main/src/main/java/com/huimv/modular/collectorregister/mapper/CollectorRegisterMapper.java

@@ -26,7 +26,13 @@ package com.huimv.modular.collectorregister.mapper;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.huimv.modular.collectorregister.entity.CollectorRegister;
 import com.huimv.modular.collectorregister.entity.CollectorRegister;
+import com.huimv.modular.collectorregister.entity.DeviceStatusEntity;
+import com.huimv.modular.eartagdata.entity.EartagData;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 import org.springframework.stereotype.Repository;
 import org.springframework.stereotype.Repository;
+import java.util.List;
+
 
 
 /**
 /**
  * 设备管理
  * 设备管理
@@ -37,4 +43,37 @@ import org.springframework.stereotype.Repository;
 
 
 @Repository
 @Repository
 public interface CollectorRegisterMapper extends BaseMapper<CollectorRegister> {
 public interface CollectorRegisterMapper extends BaseMapper<CollectorRegister> {
+
+
+   /* *//**
+     * 和Mybatis使用方法一致  这样也可以的
+     * @param
+     * @return
+     *//*
+    @Select("SELECT * FROM eartag_data where eartag_no = #{eartag_no}")
+    List<EartagData> selectBy(@Param("eartag_no") String eartag_no);*/
+
+    //上传的
+    @Select(" SELECT b.device_code FROM  collector_register AS b LEFT   JOIN heart_beat_record AS a ON   a.device_code = b.device_code   WHERE   a.create_time  BETWEEN  #{start_time} AND  #{end_time}  GROUP BY device_code    ")
+    List<Long>  DeviceUnAble(@Param("start_time") String start_time ,@Param("end_time") String end_time);
+
+
+
+
+    //上传的
+    @Select("      SELECT d.device_code FROM  (  SELECT a.device_code ,  b.id  FROM  collector_register  AS  a  LEFT   JOIN   (  SELECT device_code  ,id  FROM  heart_beat_record WHERE  create_time  BETWEEN  #{start_time} AND  #{end_time}   GROUP BY device_code   )   b ON   a.device_code = b.device_code    ) d   WHERE d.id  IS NULL  ")
+    List<String>  DeviceUnAble1(@Param("start_time") String start_time , @Param("end_time") String end_time);
+
+
+
+    //上传的
+    @Select("     UPDATE  collector_register   SET  can_status =  1  WHERE   device_code    #{device_codes}   ")
+      void     DeviceUnAble1Set(@Param("device_codes") String device_codes );
+
+    //找正常上传的设备
+    @Select("    SELECT device_code     FROM  heart_beat_record WHERE  create_time  BETWEEN  #{start_time} AND  #{end_time}    GROUP BY device_code    ")
+    List<String>  DeviceAble1(@Param("start_time") String start_time , @Param("end_time") String end_time);
+
+
+
 }
 }

+ 42 - 1
cloud-platform-main/src/main/java/com/huimv/modular/eartagdata/controller/EartagDataController.java

@@ -63,6 +63,21 @@ public class EartagDataController {
         return   new SuccessResponseData(byConditions);
         return   new SuccessResponseData(byConditions);
     }
     }
 
 
+/*
+
+    @PostMapping("/manager/eartagdata/findByConditions2")
+    //@BusinessLog(title = "栋舍表_删除", opType = LogAnnotionOpTypeEnum.DELETE)
+    public ResponseData findByConditions2(@RequestParam Map<String, Object> params  ) throws ParseException {
+        System.out.println("进入查询111");
+        PageResult<EartagData> byConditions = eartagDataService.findByConditions2(params);
+        System.out.println("进入查询");
+        return   new SuccessResponseData(byConditions);
+    }
+*/
+
+
+
+
 
 
 
 
     @Permission
     @Permission
@@ -186,7 +201,33 @@ public class EartagDataController {
      */
      */
     @RequestMapping("/eartagData/countByDay")
     @RequestMapping("/eartagData/countByDay")
     public ResponseData countByDay(@RequestParam Map<String, Object> params){
     public ResponseData countByDay(@RequestParam Map<String, Object> params){
-
         return  eartagDataService.countByDay(params);
         return  eartagDataService.countByDay(params);
     }
     }
+
+
+    //删除耳标下面所有的数据
+    @Permission
+    @PostMapping("/eartagData/deletebyeartagno")
+    //@BusinessLog(title = "栋舍表_删除", opType = LogAnnotionOpTypeEnum.DELETE)
+    public ResponseData deletebyeartagno(@RequestParam Map<String, Object> params  ) throws ParseException {
+        System.out.println("进入查询111");
+        PageResult<EartagData> byConditions = eartagDataService.findByTime(params);
+        System.out.println("进入查询");
+        return   new SuccessResponseData(byConditions);
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 }
 }

+ 147 - 0
cloud-platform-main/src/main/java/com/huimv/modular/eartagdata/entity/vo/DistinctEartagEntityVo.java

@@ -0,0 +1,147 @@
+package com.huimv.modular.eartagdata.entity.vo;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+@Data
+public class DistinctEartagEntityVo {
+
+
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 组织id
+     */
+    @Excel(name = "组织id")
+    private String orgId;
+
+    /**
+     * 采集器编码
+     */
+    @Excel(name = "采集器编码")
+    private String deviceCode;
+
+    /**
+     * 耳标号
+     */
+    @Excel(name = "耳标号")
+    private String eartagNo;
+
+    /**
+     * 采集时间
+     */
+    @Excel(name = "采集时间", databaseFormat = "yyyy-MM-dd HH:mm:ss", format = "yyyy-MM-dd", width = 20)
+    private Date time;
+
+    /**
+     * 耳根温度
+     */
+    @Excel(name = "耳根温度")
+    private Double earTemp;
+
+    /**
+     * 运动量
+     */
+    @Excel(name = "运动量")
+    private Integer exercise;
+
+    /**
+     * 栋舍
+     */
+    @Excel(name = "栋舍")
+    private String pigpen;
+
+    /**
+     * 环境温度
+     */
+    @Excel(name = "环境温度")
+    private Double envTemp;
+
+    /**
+     * 电池电量
+     */
+    @Excel(name = "电池电量")
+    private Integer bat;
+
+    /**
+     * 信号强度
+     */
+    @Excel(name = "信号强度")
+    private Integer rssi;
+
+    /**
+     * 命令头
+     */
+    @Excel(name = "命令头")
+    private String head;
+
+    /**
+     * 指令
+     */
+    @Excel(name = "指令")
+    private String command;
+
+    /**
+     * 版本号
+     */
+    @Excel(name = "版本号")
+    private String version;
+
+    /**
+     * 耳标帧序号
+     */
+    @Excel(name = "耳标帧序号")
+    private Integer frameSerialNo;
+
+    /**
+     * 重启次数
+     */
+    @Excel(name = "重启次数")
+    private Integer rebootTimes;
+
+    /**
+     * 预留字段
+     */
+    @Excel(name = "预留字段")
+    private String prepareField;
+
+    /**
+     * 校验码
+     */
+    @Excel(name = "校验码")
+    private String chk;
+
+    /**
+     * 命令尾
+     */
+    @Excel(name = "命令尾")
+    private String tail;
+
+    /**
+     * 牧场编码
+     */
+    @Excel(name = "牧场编码")
+    private String farmCode;
+
+    /**
+     * 阶段
+     */
+    @Excel(name = "阶段")
+    private Integer stage;
+
+    /**
+     *
+     */
+    @Excel(name = "")
+    private Integer sportGap;
+
+
+
+
+
+
+}

+ 19 - 0
cloud-platform-main/src/main/java/com/huimv/modular/eartagdata/mapper/EartagDataMapper.java

@@ -33,6 +33,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.huimv.modular.collectorregister.EartagDataCountVo;
 import com.huimv.modular.collectorregister.EartagDataCountVo;
 import com.huimv.modular.eartagdata.entity.EartagData;
 import com.huimv.modular.eartagdata.entity.EartagData;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 import org.springframework.stereotype.Repository;
 import org.springframework.stereotype.Repository;
 
 
 import java.util.List;
 import java.util.List;
@@ -51,4 +52,22 @@ public interface EartagDataMapper extends BaseMapper<EartagData> {
 
 
     Page<EartagData> findByCondition(@Param("page")IPage<EartagData> page, @Param(Constants.WRAPPER) LambdaQueryWrapper<EartagData> wrapper);
     Page<EartagData> findByCondition(@Param("page")IPage<EartagData> page, @Param(Constants.WRAPPER) LambdaQueryWrapper<EartagData> wrapper);
 
 
+
+
+    /**
+     * 和Mybatis使用方法一致  这样也可以的
+     * @param
+     * @return
+     */
+    @Select("SELECT * FROM eartag_data where eartag_no = #{eartag_no}")
+    List<EartagData> selectByName(@Param("eartag_no") String eartag_no);
+
+    /**
+     * 和Mybatis使用方法一致  这样也可以的
+     * @param
+     * @return
+     */
+
+
+
 }
 }

+ 5 - 9
cloud-platform-main/src/main/java/com/huimv/modular/eartagdata/mapper/mapping/EartagDataMapper.xml

@@ -11,22 +11,16 @@
 
 
 
 
 
 
-    <select id="countByDay" resultType="com.huimv.modular.collectorregister.EartagDataCountVo">
-        SELECT
-          DATE_FORMAT(`time`,"%y-%m-%d") count_time,COUNT(*) upload_count, CAST(AVG(env_temp) AS DECIMAL(10,2)) envTemp
-	        FROM `eartag_data`
-	        ${ew.customSqlSegment}
-    </select>
-
 
 
     <select id="countByDay" resultType="com.huimv.modular.collectorregister.EartagDataCountVo">
     <select id="countByDay" resultType="com.huimv.modular.collectorregister.EartagDataCountVo">
         SELECT
         SELECT
           DATE_FORMAT(`time`,"%y-%m-%d") count_time,COUNT(*) upload_count, CAST(AVG(env_temp) AS DECIMAL(10,2)) envTemp
           DATE_FORMAT(`time`,"%y-%m-%d") count_time,COUNT(*) upload_count, CAST(AVG(env_temp) AS DECIMAL(10,2)) envTemp
-	        FROM `eartag_data`
-	        ${ew.customSqlSegment}
+          FROM `eartag_data`
+          ${ew.customSqlSegment}
     </select>
     </select>
 
 
 
 
+
     <select id="findByCondition" resultType="com.huimv.modular.eartagdata.entity.EartagData">
     <select id="findByCondition" resultType="com.huimv.modular.eartagdata.entity.EartagData">
         SELECT * FROM eartag_data ed1 JOIN (SELECT MAX(id) id FROM eartag_data ed2 ${ew.customSqlSegment}) b ON ed1.id = b.id
         SELECT * FROM eartag_data ed1 JOIN (SELECT MAX(id) id FROM eartag_data ed2 ${ew.customSqlSegment}) b ON ed1.id = b.id
     </select>
     </select>
@@ -35,4 +29,6 @@
 
 
 
 
 
 
+
+
 </mapper>
 </mapper>

+ 2 - 9
cloud-platform-main/src/main/java/com/huimv/modular/eartagdata/service/EartagDataService.java

@@ -44,22 +44,15 @@ public interface EartagDataService extends IService<EartagData> {
 
 
 
 
     PageResult<EartagData> findByConditions(Map<String, Object> params) throws ParseException;
     PageResult<EartagData> findByConditions(Map<String, Object> params) throws ParseException;
+    //用SQL解决之前的问题
+    //PageResult<EartagData> findByConditions2(Map<String, Object> params) throws ParseException;
 
 
     PageResult<EartagData> findByTime(Map<String, Object> params) throws ParseException;
     PageResult<EartagData> findByTime(Map<String, Object> params) throws ParseException;
 
 
-
-
-
-
-
-
-
-
     Map<String ,Object>    queryDetailsByEarTag( Map<String, Object> params) throws ParseException;
     Map<String ,Object>    queryDetailsByEarTag( Map<String, Object> params) throws ParseException;
 
 
 
 
 
 
-
     /**
     /**
      * 查询耳标数据详情
      * 查询耳标数据详情
      *
      *

+ 68 - 17
cloud-platform-main/src/main/java/com/huimv/modular/eartagdata/service/impl/EartagDataServiceImpl.java

@@ -97,9 +97,28 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataMapper, EartagD
     private EartagDataMapper eartagDataMapper   ;
     private EartagDataMapper eartagDataMapper   ;
 
 
 
 
+
+
+
+/*
+
+    @Override
+    public PageResult<EartagData> findByConditions2(Map<String, Object> params) throws ParseException {
+
+
+        List<EartagData> eartagData = eartagDataMapper.selectByName("133070303805453");
+
+        PageResult<EartagData> EartagDataPageResult;
+
+        return  EartagDataPageResult;
+    }
+*/
+
+
+
     @Override
     @Override
     public PageResult<EartagData> findByTime(Map<String, Object> params) throws ParseException {
     public PageResult<EartagData> findByTime(Map<String, Object> params) throws ParseException {
-        List<EartagData> records;
+
         String starttime = (String) params.get("startTime");//开始时间
         String starttime = (String) params.get("startTime");//开始时间
         String endtime = (String) params.get("endTime");//结束时间
         String endtime = (String) params.get("endTime");//结束时间
         String eartagNo = (String) params.get("eartagNo");//耳标号
         String eartagNo = (String) params.get("eartagNo");//耳标号
@@ -140,7 +159,6 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataMapper, EartagD
 
 
     @Override
     @Override
     public PageResult<EartagData> findByConditions(Map<String, Object> params) throws ParseException {
     public PageResult<EartagData> findByConditions(Map<String, Object> params) throws ParseException {
-
         String farmID = (String) params.get("farmID");//牧场编码
         String farmID = (String) params.get("farmID");//牧场编码
         String orgId = (String) params.get("orgId");//牧场编码
         String orgId = (String) params.get("orgId");//牧场编码
         String starttime = (String) params.get("startTime");//开始时间
         String starttime = (String) params.get("startTime");//开始时间
@@ -153,9 +171,10 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataMapper, EartagD
         String highEnvTemp = (String) params.get("highEnvTemp");//环境温度
         String highEnvTemp = (String) params.get("highEnvTemp");//环境温度
         String lowEnvTemp = (String) params.get("lowEnvTemp");//环境温度
         String lowEnvTemp = (String) params.get("lowEnvTemp");//环境温度
         String deviceCode = (String) params.get("deviceCode");//采集器编码
         String deviceCode = (String) params.get("deviceCode");//采集器编码
-        String bat = (String) params.get("bat");//电量
+        String bat = (String) params.get("pageNo");//电量
+        String pageNo =  (String)params.get("pageNo");
+        String pageSize =  (String)params.get("pageSize");
         String penId = (String) params.get("penId");//栋舍
         String penId = (String) params.get("penId");//栋舍
-        System.out.println(orgId + "耳标号");
 
 
          //日龄的展示多少有点问题
          //日龄的展示多少有点问题
         System.out.println("采集器+condition---" + deviceCode + "耳标号" + eartagNo);
         System.out.println("采集器+condition---" + deviceCode + "耳标号" + eartagNo);
@@ -182,13 +201,13 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataMapper, EartagD
         if (StringUtilsWork.isNotBlank(deviceCode)) {
         if (StringUtilsWork.isNotBlank(deviceCode)) {
             wrapper.eq(EartagData::getDeviceCode, deviceCode);
             wrapper.eq(EartagData::getDeviceCode, deviceCode);
         }
         }
+
         if (StringUtilsWork.isNotBlank(starttime) & StringUtilsWork.isNotBlank(endtime)) {
         if (StringUtilsWork.isNotBlank(starttime) & StringUtilsWork.isNotBlank(endtime)) {
             System.out.println(starttime + "***shijian**" + endtime);
             System.out.println(starttime + "***shijian**" + endtime);
             DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             //格式化传入的时间
             //格式化传入的时间
             Date startTime = fmt.parse(starttime);
             Date startTime = fmt.parse(starttime);
             Date endTime = fmt.parse(endtime);
             Date endTime = fmt.parse(endtime);
-            System.out.println("yangdi" + starttime + endtime);
             //过滤时间
             //过滤时间
             wrapper.between(EartagData::getTime, startTime, endTime);
             wrapper.between(EartagData::getTime, startTime, endTime);
         }
         }
@@ -200,28 +219,24 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataMapper, EartagD
             wrapper.between(EartagData::getEnvTemp, highEnvTemp, lowEnvTemp);
             wrapper.between(EartagData::getEnvTemp, highEnvTemp, lowEnvTemp);
         }
         }
         List<EartagData> records;
         List<EartagData> records;
-        PageResult<EartagData> EartagDataPageResult  = new PageResult<>();
+        PageResult<EartagData> EartagDataPageResult ;
        //PageResult<List<EartagData> EartagDataPageResult1  = new PageResult<>();
        //PageResult<List<EartagData> EartagDataPageResult1  = new PageResult<>();
           //如果没有传耳标号,就展示符合条件的最新一条,若是传了,就展示当前耳标下的最近数据
           //如果没有传耳标号,就展示符合条件的最新一条,若是传了,就展示当前耳标下的最近数据
         if (StringUtilsWork.isNotBlank(eartagNo)) {
         if (StringUtilsWork.isNotBlank(eartagNo)) {
             System.out.println("有耳标号,展示耳标所有数据");
             System.out.println("有耳标号,展示耳标所有数据");
+            wrapper.orderByDesc(EartagData::getId);
             EartagDataPageResult = new PageResult<>(this.page(PageFactory.defaultPage(), wrapper));
             EartagDataPageResult = new PageResult<>(this.page(PageFactory.defaultPage(), wrapper));
             records = EartagDataPageResult.getRows();  //获取信息
             records = EartagDataPageResult.getRows();  //获取信息
-
         } else {
         } else {
-            //用 result 来装page
-            System.out.println("没有耳标号,展示最新");
+            //太慢了 优化
+            System.out.println("没有耳标号,展示最新的所有的耳标数据");
             wrapper.groupBy(EartagData::getEartagNo).orderByDesc(EartagData::getId);
             wrapper.groupBy(EartagData::getEartagNo).orderByDesc(EartagData::getId);
-            IPage<EartagData> iPage = new Page<>();
+            IPage<EartagData> iPage = new Page<>( Long.parseLong(pageNo),Long.parseLong(pageSize));
             Page<EartagData> page = baseMapper.findByCondition(iPage, wrapper);
             Page<EartagData> page = baseMapper.findByCondition(iPage, wrapper);
             records=page.getRecords();
             records=page.getRecords();
             System.out.println(page);
             System.out.println(page);
-//            records = byCondition.getRows();  //获取信息
                   EartagDataPageResult = new PageResult<>(page);
                   EartagDataPageResult = new PageResult<>(page);
-
             for (EartagData record : records) {
             for (EartagData record : records) {
-                //这一页的数据
-                System.out.println("数据record" + records);
                 LambdaQueryWrapper<MovePigpen> wrapper23 = Wrappers.lambdaQuery();
                 LambdaQueryWrapper<MovePigpen> wrapper23 = Wrappers.lambdaQuery();
                 wrapper23.eq(MovePigpen::getEartagNo, record.getEartagNo()).orderByAsc(MovePigpen::getId).last("limit 1");
                 wrapper23.eq(MovePigpen::getEartagNo, record.getEartagNo()).orderByAsc(MovePigpen::getId).last("limit 1");
                 MovePigpen movePigpen = movePigpenMapper.selectOne(wrapper23);
                 MovePigpen movePigpen = movePigpenMapper.selectOne(wrapper23);
@@ -231,7 +246,6 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataMapper, EartagD
                 wrapper3.eq(CollectorRegister::getDeviceCode, record.getDeviceCode());
                 wrapper3.eq(CollectorRegister::getDeviceCode, record.getDeviceCode());
                 CollectorRegister collectorRegister = collectorRegisterMapper.selectOne(wrapper3);
                 CollectorRegister collectorRegister = collectorRegisterMapper.selectOne(wrapper3);
                 System.out.println("注册表信息" + collectorRegister);
                 System.out.println("注册表信息" + collectorRegister);
-
                 record.setVersion(collectorRegister.getUnitName());//这个多余字段存猪舍名字
                 record.setVersion(collectorRegister.getUnitName());//这个多余字段存猪舍名字
                 record.setCommand(collectorRegister.getPenName());//这个多余字段存单元名字
                 record.setCommand(collectorRegister.getPenName());//这个多余字段存单元名字
                 //格式化传入的时---第一条不应该没有----但是新耳标上来没有存信息
                 //格式化传入的时---第一条不应该没有----但是新耳标上来没有存信息
@@ -239,10 +253,12 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataMapper, EartagD
                     record.setTail(DateUtilsPublic.dateToString(movePigpen.getMoveDate()));//配标时间
                     record.setTail(DateUtilsPublic.dateToString(movePigpen.getMoveDate()));//配标时间
                 }
                 }
             }
             }
-            return  EartagDataPageResult;
 
 
 
 
+            return  EartagDataPageResult;
         }
         }
+
+
         //拼接栋舍信息在里面
         //拼接栋舍信息在里面
         for (EartagData record : records) {
         for (EartagData record : records) {
             //还要装日龄和配标日龄
             //还要装日龄和配标日龄
@@ -266,7 +282,6 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataMapper, EartagD
 
 
             record.setVersion(collectorRegister.getUnitName());//这个多余字段存猪舍名字
             record.setVersion(collectorRegister.getUnitName());//这个多余字段存猪舍名字
             record.setCommand(collectorRegister.getPenName());//这个多余字段存单元名字
             record.setCommand(collectorRegister.getPenName());//这个多余字段存单元名字
-
             //格式化传入的时---第一条不应该没有----但是新耳标上来没有存信息
             //格式化传入的时---第一条不应该没有----但是新耳标上来没有存信息
             if (movePigpen != null) {
             if (movePigpen != null) {
                 record.setTail(DateUtilsPublic.dateToString(movePigpen.getMoveDate()));//配标时间
                 record.setTail(DateUtilsPublic.dateToString(movePigpen.getMoveDate()));//配标时间
@@ -472,6 +487,42 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataMapper, EartagD
 
 
 
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
     @Override
     @Override
     public PageResult<EartagData> page(EartagDataParam eartagDataParam) {
     public PageResult<EartagData> page(EartagDataParam eartagDataParam) {
         QueryWrapper<EartagData> queryWrapper = new QueryWrapper<>();
         QueryWrapper<EartagData> queryWrapper = new QueryWrapper<>();

+ 12 - 3
cloud-platform-main/src/main/java/com/huimv/modular/heartbeatrecord/entity/HeartBeatRecord.java

@@ -37,15 +37,15 @@ import cn.afterturn.easypoi.excel.annotation.Excel;
  * @author haohao
  * @author haohao
  * @date 2021-08-20 11:00:36
  * @date 2021-08-20 11:00:36
  */
  */
-@EqualsAndHashCode(callSuper = true)
+
 @Data
 @Data
 @TableName("heart_beat_record")
 @TableName("heart_beat_record")
-public class HeartBeatRecord extends BaseEntity {
+public class HeartBeatRecord  {
 
 
     /**
     /**
      * 
      * 
      */
      */
-    @TableId(type = IdType.ASSIGN_ID)
+    @TableId(type = IdType.AUTO)
     private Integer id;
     private Integer id;
 
 
     /**
     /**
@@ -102,4 +102,13 @@ public class HeartBeatRecord extends BaseEntity {
     @Excel(name = "单元id")
     @Excel(name = "单元id")
     private String unitId;
     private String unitId;
 
 
+    /**
+     * 单元id
+     */
+    @Excel(name = "单元id")
+    private Date  createTime;
+
+
+
+
 }
 }

+ 212 - 0
cloud-platform-main/src/main/java/com/huimv/modular/rawdata/controller/RawDataController.java

@@ -0,0 +1,212 @@
+/*
+Copyright [2020] [https://www.xiaonuo.vip]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+
+1.请不要删除和修改根目录下的LICENSE文件。
+2.请不要删除和修改Snowy源码头部的版权声明。
+3.请保留源码和相关描述文件的项目出处,作者声明等。
+4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package com.huimv.modular.rawdata.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.huimv.core.annotion.BusinessLog;
+import com.huimv.core.annotion.Permission;
+import com.huimv.core.enums.LogAnnotionOpTypeEnum;
+import com.huimv.core.factory.PageFactory;
+import com.huimv.core.pojo.page.PageResult;
+import com.huimv.core.pojo.response.ResponseData;
+import com.huimv.core.pojo.response.SuccessResponseData;
+
+import com.huimv.core.util.HttpServletUtil;
+import com.huimv.modular.eartagdata.entity.EartagData;
+import com.huimv.modular.rawdata.entity.RawData;
+import com.huimv.modular.rawdata.mapper.RawDataMapper;
+import com.huimv.modular.rawdata.param.RawDataParam;
+import com.huimv.modular.rawdata.service.RawDataService;
+import com.huimv.modular.utils.util.StringUtilsWork;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 原始数据存储控制器  第三方公司要求从此处读取数据
+ *
+ * @author yangdi
+ * @date 2021-11-09 16:58:43
+ */
+@RestController
+public class RawDataController {
+
+    @Resource
+    private RawDataService rawDataService;
+
+    @Resource
+    private RawDataMapper rawDataMapper;
+
+    /**
+     * 查询原始数据存储
+     * @author yangdi
+     * @date 2021-11-09 16:58:43
+     */
+    @GetMapping("/rawData/page")
+    public ResponseData page001(RawDataParam rawDataPara) throws ParseException {
+        HttpServletRequest request = HttpServletUtil.getRequest();
+        //每页条数
+        String pageNo = request.getParameter("pageNo");
+        String starttime = request.getParameter("startTime");
+        String endtime = request.getParameter("endTime");
+        System.out.println(pageNo);
+        if (StringUtilsWork.isNotBlank(starttime) & StringUtilsWork.isNotBlank(endtime)) {
+            LambdaQueryWrapper<RawData> wrapper = Wrappers.lambdaQuery();
+            System.out.println(starttime + "***shijian**" + endtime);
+            DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            Date startTime = fmt.parse(starttime);
+            Date endTime = fmt.parse(endtime);
+            System.out.println("时间传入" + starttime + endtime);
+            //过滤时间
+            wrapper.between(RawData::getCreateTime, startTime, endTime);
+            return ResponseData.success(rawDataMapper.selectList(wrapper));
+        }
+        //倒序展示数据
+        return new SuccessResponseData(rawDataService.pageDesc(rawDataPara) );
+    }
+
+
+
+
+/*
+
+    *//**
+     * 查询原始数据存储----根据时间查询
+     * @author yangdi
+     * @date 2021-11-09 16:58:43
+     *//*
+    @GetMapping("/rawData/findByTime")
+    public ResponseData findByTime(@RequestParam Map<String, Object> params ) throws ParseException {
+    LambdaQueryWrapper<RawData> wrapper = Wrappers.lambdaQuery();
+        String starttime = (String) params.get("startTime");//开始时间
+        String endtime = (String) params.get("endTime");//结束时间
+
+            System.out.println(starttime + "***shijian**" + endtime);
+            DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            Date startTime = fmt.parse(starttime);
+            Date endTime = fmt.parse(endtime);
+            System.out.println("时间传入" + starttime + endtime);
+            //过滤时间
+            wrapper.between(RawData::getCreateTime, startTime, endTime);
+            return   ResponseData.success(rawDataMapper.selectList(wrapper)) ;
+    }*/
+
+
+
+
+
+
+
+    /**
+     * 添加原始数据存储
+     *
+     * @author yangdi
+     * @date 2021-11-09 16:58:43
+     */
+    @Permission
+    @PostMapping("/rawData/add")
+    @BusinessLog(title = "原始数据存储_增加", opType = LogAnnotionOpTypeEnum.ADD)
+    public ResponseData add(@RequestBody @Validated(RawDataParam.add.class) RawDataParam rawDataParam) {
+            rawDataService.add(rawDataParam);
+        return new SuccessResponseData();
+    }
+
+    /**
+     * 删除原始数据存储,可批量删除
+     *
+     * @author yangdi
+     * @date 2021-11-09 16:58:43
+     */
+    @Permission
+    @PostMapping("/rawData/delete")
+    @BusinessLog(title = "原始数据存储_删除", opType = LogAnnotionOpTypeEnum.DELETE)
+    public ResponseData delete(@RequestBody @Validated(RawDataParam.delete.class) List<RawDataParam> rawDataParamList) {
+            rawDataService.delete(rawDataParamList);
+        return new SuccessResponseData();
+    }
+
+    /**
+     * 编辑原始数据存储
+     *
+     * @author yangdi
+     * @date 2021-11-09 16:58:43
+     */
+    @Permission
+    @PostMapping("/rawData/edit")
+    @BusinessLog(title = "原始数据存储_编辑", opType = LogAnnotionOpTypeEnum.EDIT)
+    public ResponseData edit(@RequestBody @Validated(RawDataParam.edit.class) RawDataParam rawDataParam) {
+            rawDataService.edit(rawDataParam);
+        return new SuccessResponseData();
+    }
+
+    /**
+     * 查看原始数据存储
+     *
+     * @author yangdi
+     * @date 2021-11-09 16:58:43
+     */
+    @Permission
+    @GetMapping("/rawData/detail")
+    @BusinessLog(title = "原始数据存储_查看", opType = LogAnnotionOpTypeEnum.DETAIL)
+    public ResponseData detail(@Validated(RawDataParam.detail.class) RawDataParam rawDataParam) {
+        return new SuccessResponseData(rawDataService.detail(rawDataParam));
+    }
+
+    /**
+     * 原始数据存储列表
+     *
+     * @author yangdi
+     * @date 2021-11-09 16:58:43
+     */
+    @Permission
+    @GetMapping("/rawData/list")
+    @BusinessLog(title = "原始数据存储_列表", opType = LogAnnotionOpTypeEnum.QUERY)
+    public ResponseData list(RawDataParam rawDataParam) {
+        return new SuccessResponseData(rawDataService.list(rawDataParam));
+    }
+
+    /**
+     * 导出系统用户
+     *
+     * @author yangdi
+     * @date 2021-11-09 16:58:43
+     */
+    @Permission
+    @GetMapping("/rawData/export")
+    @BusinessLog(title = "原始数据存储_导出", opType = LogAnnotionOpTypeEnum.EXPORT)
+    public void export(RawDataParam rawDataParam) {
+        rawDataService.export(rawDataParam);
+    }
+
+}

+ 69 - 0
cloud-platform-main/src/main/java/com/huimv/modular/rawdata/entity/RawData.java

@@ -0,0 +1,69 @@
+/*
+Copyright [2020] [https://www.xiaonuo.vip]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+
+1.请不要删除和修改根目录下的LICENSE文件。
+2.请不要删除和修改Snowy源码头部的版权声明。
+3.请保留源码和相关描述文件的项目出处,作者声明等。
+4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package com.huimv.modular.rawdata.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.huimv.core.pojo.base.entity.BaseEntity;
+import com.huimv.modular.utils.util.Date2LongSerializer;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.util.*;
+import cn.afterturn.easypoi.excel.annotation.Excel;
+
+/**
+ * 原始数据存储
+ *
+ * @author yangdi
+ * @date 2021-11-09 16:58:43
+ */
+@Data
+@TableName("raw_data")
+public class RawData  {
+
+    /**
+     * 
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 
+     */
+    @Excel(name = "")
+    private String detailData;
+
+    /**
+     * 
+     */
+    @Excel(name = "")
+    private Integer status;
+
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private  Date  createTime;
+
+}

+ 65 - 0
cloud-platform-main/src/main/java/com/huimv/modular/rawdata/enums/RawDataExceptionEnum.java

@@ -0,0 +1,65 @@
+/*
+Copyright [2020] [https://www.xiaonuo.vip]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+
+1.请不要删除和修改根目录下的LICENSE文件。
+2.请不要删除和修改Snowy源码头部的版权声明。
+3.请保留源码和相关描述文件的项目出处,作者声明等。
+4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package com.huimv.modular.rawdata.enums;
+
+import com.huimv.core.annotion.ExpEnumType;
+import com.huimv.core.exception.enums.abs.AbstractBaseExceptionEnum;
+import com.huimv.core.factory.ExpEnumCodeFactory;
+import com.huimv.sys.core.consts.SysExpEnumConstant;
+
+
+/**
+ * 原始数据存储
+ *
+ * @author yangdi
+ * @date 2021-11-09 16:58:43
+ */
+@ExpEnumType(module = SysExpEnumConstant.SNOWY_SYS_MODULE_EXP_CODE)
+public enum RawDataExceptionEnum implements AbstractBaseExceptionEnum {
+
+    /**
+     * 数据不存在
+     */
+    NOT_EXIST(1, "此数据不存在");
+
+    private final Integer code;
+
+    private final String message;
+        RawDataExceptionEnum(Integer code, String message) {
+        this.code = code;
+        this.message = message;
+    }
+
+    @Override
+    public Integer getCode() {
+        return ExpEnumCodeFactory.getExpEnumCode(this.getClass(), code);
+    }
+
+    @Override
+    public String getMessage() {
+        return message;
+    }
+
+}

+ 38 - 0
cloud-platform-main/src/main/java/com/huimv/modular/rawdata/mapper/RawDataMapper.java

@@ -0,0 +1,38 @@
+/*
+Copyright [2020] [https://www.xiaonuo.vip]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+
+1.请不要删除和修改根目录下的LICENSE文件。
+2.请不要删除和修改Snowy源码头部的版权声明。
+3.请保留源码和相关描述文件的项目出处,作者声明等。
+4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package com.huimv.modular.rawdata.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.modular.rawdata.entity.RawData;
+
+
+/**
+ * 原始数据存储
+ *
+ * @author yangdi
+ * @date 2021-11-09 16:58:43
+ */
+public interface RawDataMapper extends BaseMapper<RawData> {
+}

+ 5 - 0
cloud-platform-main/src/main/java/com/huimv/modular/rawdata/mapper/mapping/RawDataMapper.xml

@@ -0,0 +1,5 @@
+<?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.huimv.modular.rawdata.mapper.RawDataMapper">
+
+</mapper>

+ 60 - 0
cloud-platform-main/src/main/java/com/huimv/modular/rawdata/param/RawDataParam.java

@@ -0,0 +1,60 @@
+/*
+Copyright [2020] [https://www.xiaonuo.vip]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+
+1.请不要删除和修改根目录下的LICENSE文件。
+2.请不要删除和修改Snowy源码头部的版权声明。
+3.请保留源码和相关描述文件的项目出处,作者声明等。
+4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package com.huimv.modular.rawdata.param;
+
+import com.huimv.core.pojo.base.param.BaseParam;
+import lombok.Data;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.NotBlank;
+import java.util.*;
+
+/**
+* 原始数据存储参数类
+ *
+ * @author yangdi
+ * @date 2021-11-09 16:58:43
+*/
+@Data
+public class RawDataParam extends BaseParam {
+
+    /**
+     * 
+     */
+    @NotNull(message = "不能为空,请检查id参数", groups = {edit.class, delete.class, detail.class})
+    private Integer id;
+
+    /**
+     * 
+     */
+    @NotBlank(message = "不能为空,请检查detailData参数", groups = {add.class, edit.class})
+    private String detailData;
+
+    /**
+     * 
+     */
+    @NotNull(message = "不能为空,请检查status参数", groups = {add.class, edit.class})
+    private Integer status;
+
+}

+ 106 - 0
cloud-platform-main/src/main/java/com/huimv/modular/rawdata/service/RawDataService.java

@@ -0,0 +1,106 @@
+/*
+Copyright [2020] [https://www.xiaonuo.vip]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+
+1.请不要删除和修改根目录下的LICENSE文件。
+2.请不要删除和修改Snowy源码头部的版权声明。
+3.请保留源码和相关描述文件的项目出处,作者声明等。
+4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package com.huimv.modular.rawdata.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.core.pojo.page.PageResult;
+import com.huimv.modular.rawdata.entity.RawData;
+import com.huimv.modular.rawdata.param.RawDataParam;
+
+import java.util.List;
+
+/**
+ * 原始数据存储service接口
+ *
+ * @author yangdi
+ * @date 2021-11-09 16:58:43
+ */
+public interface RawDataService extends IService<RawData> {
+
+    /**
+     * 查询原始数据存储
+     *
+     * @author yangdi
+     * @date 2021-11-09 16:58:43
+     */
+    PageResult<RawData> page(RawDataParam rawDataParam);
+
+
+
+    PageResult<RawData> pageDesc(RawDataParam rawDataParam);
+
+
+
+
+
+    /**
+     * 原始数据存储列表
+     *
+     * @author yangdi
+     * @date 2021-11-09 16:58:43
+     */
+    List<RawData> list(RawDataParam rawDataParam);
+
+    /**
+     * 添加原始数据存储
+     *
+     * @author yangdi
+     * @date 2021-11-09 16:58:43
+     */
+    void add(RawDataParam rawDataParam);
+
+    /**
+     * 删除原始数据存储
+     *
+     * @author yangdi
+     * @date 2021-11-09 16:58:43
+     */
+    void delete(List<RawDataParam> rawDataParamList);
+
+    /**
+     * 编辑原始数据存储
+     *
+     * @author yangdi
+     * @date 2021-11-09 16:58:43
+     */
+    void edit(RawDataParam rawDataParam);
+
+    /**
+     * 查看原始数据存储
+     *
+     * @author yangdi
+     * @date 2021-11-09 16:58:43
+     */
+     RawData detail(RawDataParam rawDataParam);
+
+    /**
+     * 导出原始数据存储
+     *
+     * @author yangdi
+     * @date 2021-11-09 16:58:43
+     */
+     void export(RawDataParam rawDataParam);
+
+}

+ 162 - 0
cloud-platform-main/src/main/java/com/huimv/modular/rawdata/service/impl/RawDataServiceImpl.java

@@ -0,0 +1,162 @@
+/*
+Copyright [2020] [https://www.xiaonuo.vip]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+
+1.请不要删除和修改根目录下的LICENSE文件。
+2.请不要删除和修改Snowy源码头部的版权声明。
+3.请保留源码和相关描述文件的项目出处,作者声明等。
+4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package com.huimv.modular.rawdata.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.core.consts.CommonConstant;
+import com.huimv.core.enums.CommonStatusEnum;
+import com.huimv.core.exception.ServiceException;
+import com.huimv.core.factory.PageFactory;
+import com.huimv.core.pojo.page.PageResult;
+import com.huimv.core.util.PoiUtil;
+
+import com.huimv.modular.rawdata.entity.RawData;
+import com.huimv.modular.rawdata.enums.RawDataExceptionEnum;
+import com.huimv.modular.rawdata.mapper.RawDataMapper;
+import com.huimv.modular.rawdata.param.RawDataParam;
+import com.huimv.modular.rawdata.service.RawDataService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 原始数据存储service接口实现类
+ *
+ * @author yangdi
+ * @date 2021-11-09 16:58:43
+ */
+@Service
+public class RawDataServiceImpl extends ServiceImpl<RawDataMapper, RawData> implements RawDataService {
+
+    @Override
+    public PageResult<RawData> page(RawDataParam rawDataParam) {
+        QueryWrapper<RawData> queryWrapper = new QueryWrapper<>();
+        if (ObjectUtil.isNotNull(rawDataParam)) {
+
+            // 根据 查询
+            if (ObjectUtil.isNotEmpty(rawDataParam.getDetailData())) {
+                queryWrapper.lambda().eq(RawData::getDetailData, rawDataParam.getDetailData());
+            }
+            // 根据 查询
+            if (ObjectUtil.isNotEmpty(rawDataParam.getStatus())) {
+                queryWrapper.lambda().eq(RawData::getStatus, rawDataParam.getStatus());
+            }
+        }
+        return new PageResult<>(this.page(PageFactory.defaultPage(), queryWrapper));
+    }
+
+
+
+    @Override
+    public PageResult<RawData> pageDesc(RawDataParam rawDataParam) {
+        QueryWrapper<RawData> queryWrapper = new QueryWrapper<>();
+        //需要倒序
+        queryWrapper.orderByDesc("id");
+        if (ObjectUtil.isNotNull(rawDataParam)) {
+            // 根据 查询
+            if (ObjectUtil.isNotEmpty(rawDataParam.getDetailData())) {
+                queryWrapper.lambda().eq(RawData::getDetailData, rawDataParam.getDetailData());
+            }
+            // 根据 查询
+            if (ObjectUtil.isNotEmpty(rawDataParam.getStatus())) {
+                queryWrapper.lambda().eq(RawData::getStatus, rawDataParam.getStatus());
+            }
+        }
+        return new PageResult<>(this.page(PageFactory.defaultPage(), queryWrapper));
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    @Override
+    public List<RawData> list(RawDataParam rawDataParam) {
+        return this.list();
+    }
+
+    @Override
+    public void add(RawDataParam rawDataParam) {
+        RawData rawData = new RawData();
+        BeanUtil.copyProperties(rawDataParam, rawData);
+        this.save(rawData);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<RawDataParam> rawDataParamList) {
+        rawDataParamList.forEach(rawDataParam -> {
+            this.removeById(rawDataParam.getId());
+        });
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(RawDataParam rawDataParam) {
+        RawData rawData = this.queryRawData(rawDataParam);
+        BeanUtil.copyProperties(rawDataParam, rawData);
+        this.updateById(rawData);
+    }
+
+    @Override
+    public RawData detail(RawDataParam rawDataParam) {
+        return this.queryRawData(rawDataParam);
+    }
+
+    /**
+     * 获取原始数据存储
+     *
+     * @author yangdi
+     * @date 2021-11-09 16:58:43
+     */
+    private RawData queryRawData(RawDataParam rawDataParam) {
+        RawData rawData = this.getById(rawDataParam.getId());
+        if (ObjectUtil.isNull(rawData)) {
+            throw new ServiceException(RawDataExceptionEnum.NOT_EXIST);
+        }
+        return rawData;
+    }
+
+    @Override
+    public void export(RawDataParam rawDataParam) {
+        List<RawData> list = this.list(rawDataParam);
+        PoiUtil.exportExcelWithStream("SnowyRawData.xls", RawData.class, list);
+    }
+
+}

+ 23 - 0
cloud-platform-main/src/main/java/com/huimv/modular/timer/constant/ImportanteConfig.java

@@ -0,0 +1,23 @@
+package com.huimv.modular.timer.constant;
+
+/**
+ * @Author Anchor
+ * @Date 2021/7/30 13:47
+ * //重要的参数配置,包括定时任务等
+ * //目前没啥用
+ * @Version 1.0.1
+ */
+public class ImportanteConfig {
+
+    //上传的网关心跳时检测,超过一定时间没有心跳包上来就报错-----用来检查网关的上线和下线
+    public static final int CHECK_DEVICE_UNABLE_GAP_TIME = 1000*60*5;    //目前设置为20分钟上传一次
+
+    //耳表数据上传时间的间隔计算需要用到牧场耳标数据上传时间
+    public static final int EARTAG_SEND_GAP_TIME = 1000*10;  //目前设置10秒上传一次
+
+
+
+
+
+
+}

+ 31 - 25
cloud-platform-main/src/main/java/com/huimv/modular/timer/tasks/CheckDeviceAble.java

@@ -1,8 +1,23 @@
 package com.huimv.modular.timer.tasks;
 package com.huimv.modular.timer.tasks;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.huimv.modular.collectorregister.entity.CollectorRegister;
+import com.huimv.modular.collectorregister.mapper.CollectorRegisterMapper;
+import com.huimv.modular.collectorregister.service.CollectorRegisterService;
+import com.huimv.modular.heartbeatrecord.entity.HeartBeatRecord;
+import com.huimv.modular.heartbeatrecord.mapper.HeartBeatRecordMapper;
+import com.huimv.modular.timer.constant.ImportanteConfig;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
 /**
 /**
  * @Author Anchor
  * @Author Anchor
  * @Date 2021/8/14 17:46
  * @Date 2021/8/14 17:46
@@ -13,41 +28,32 @@ import org.springframework.stereotype.Component;
 @Component
 @Component
 public class CheckDeviceAble {
 public class CheckDeviceAble {
 
 
-    //查找掉线的设备是否还掉线,让他上线
-/*
+    //查找掉线的设备是否还掉线,让他上线 --对应的有一个让设备下线的
     @Autowired
     @Autowired
     private CollectorRegisterService collectorRegisterService;
     private CollectorRegisterService collectorRegisterService;
 
 
-
     @Autowired
     @Autowired
-    private HeartBeatRecordDao heartBeatRecordDao ;
+    private HeartBeatRecordMapper heartBeatRecordDao ;
 
 
+    @Autowired
+    private CollectorRegisterMapper collectorRegisterMapper;
 
 
     @Autowired
     @Autowired
-    private CollectorRegisterDao collectorRegisterDao;*/
+    private CollectorRegisterMapper  collectorRegisterDao;
 
 
-   // @Scheduled(cron = "0/5 * * * * ?")
+    @Scheduled(cron = "0/59 * * * * ?")
     public void  checkDeviceAble() {
     public void  checkDeviceAble() {
-        System.out.println( "test");
-       /* LambdaQueryWrapper<CollectorRegisterEntity> wrapper11 = new LambdaQueryWrapper();
-        wrapper11.eq(CollectorRegisterEntity::getCanStatus, 0);
-        List<CollectorRegisterEntity> collectorRegisterEntities = collectorRegisterDao.selectList(wrapper11);
-        for (CollectorRegisterEntity collectorRegisterEntity : collectorRegisterEntities) {
-
-            LambdaQueryWrapper<HeartBeatRecordEntity> wrapper = new LambdaQueryWrapper();
-            wrapper.eq(HeartBeatRecordEntity::getDeviceCode,collectorRegisterEntity.getDeviceCode()).orderByDesc( HeartBeatRecordEntity::getId ).last( "limit 1");;
-            HeartBeatRecordEntity heartBeatRecordEntity = heartBeatRecordDao.selectOne(wrapper);
-            Date date = new Date();
-            if ((date.getTime() -heartBeatRecordEntity.getCreateTime().getTime())< ImportanteConfig.CHECK_DEVICE_UNABLE_GAP_TIME){
-                collectorRegisterEntity.setCanStatus(1);
-                collectorRegisterService.updateById(collectorRegisterEntity );
 
 
-            }
-
-        }*/
+        Date now = new Date();//end
+        Date GapTimeBefor_gap = new Date(now.getTime() - ImportanteConfig.CHECK_DEVICE_UNABLE_GAP_TIME);//star
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format = sdf.format(GapTimeBefor_gap);
+        String format1 = sdf.format(new Date());
+        List<String> strings = collectorRegisterMapper.DeviceAble1(format, format1);
+        LambdaUpdateWrapper<CollectorRegister> updateWrapper = Wrappers.lambdaUpdate();
+        updateWrapper.in(CollectorRegister::getDeviceCode,strings)
+                .set(CollectorRegister::getCanStatus,0);
+        collectorRegisterMapper.update(null, updateWrapper);
 
 
     }
     }
-
-
-
 }
 }

+ 63 - 0
cloud-platform-main/src/main/java/com/huimv/modular/timer/tasks/CheckDeviceUnable.java

@@ -0,0 +1,63 @@
+package com.huimv.modular.timer.tasks;//package com.huimv.modular.timer.tasks;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.huimv.modular.collectorregister.entity.CollectorRegister;
+import com.huimv.modular.collectorregister.entity.DeviceStatusEntity;
+import com.huimv.modular.collectorregister.mapper.CollectorRegisterMapper;
+import com.huimv.modular.collectorregister.service.CollectorRegisterService;
+import com.huimv.modular.heartbeatrecord.entity.HeartBeatRecord;
+import com.huimv.modular.heartbeatrecord.mapper.HeartBeatRecordMapper;
+
+import com.huimv.modular.timer.constant.ImportanteConfig;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+/**
+ * @Author Anchor
+ * @Date 2021/8/14 15:10
+ * @Version 1.0.1
+ */
+@Slf4j
+@Component
+public class CheckDeviceUnable {
+
+
+    @Autowired
+    private CollectorRegisterService collectorRegisterService;
+    @Autowired
+    private HeartBeatRecordMapper heartBeatRecordMapper;
+    @Autowired
+    private CollectorRegisterMapper collectorRegisterMapper;
+
+
+    //写一个sql应该能解决 目前没时间   后面增加   这个代码也太垃圾了    虽然用了SQL 还是好垃圾
+    @Scheduled(cron = "0/59 * * * * ?")
+    private void checkUnadleDevice() throws ParseException {
+        System.out.println("zhixing");
+        Date now = new Date();//end
+        Date GapTimeBefor_gap = new Date(now.getTime() - ImportanteConfig.CHECK_DEVICE_UNABLE_GAP_TIME);//star
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format = sdf.format(GapTimeBefor_gap);
+        String format1 = sdf.format(new Date());
+
+        List<String> strings = collectorRegisterMapper.DeviceUnAble1(format, format1);
+
+
+        LambdaUpdateWrapper<CollectorRegister> updateWrapper = Wrappers.lambdaUpdate();
+        updateWrapper.in(CollectorRegister::getDeviceCode,strings)
+                .set(CollectorRegister::getCanStatus,1);
+        collectorRegisterMapper.update(null, updateWrapper);
+
+    }
+}
+

+ 0 - 2
cloud-platform-main/src/main/java/com/huimv/modular/timer/tasks/UpdateDaily.java

@@ -30,8 +30,6 @@ import java.util.Set;
 @Component
 @Component
 public class UpdateDaily implements TimerTaskRunner {
 public class UpdateDaily implements TimerTaskRunner {
 
 
-    @Resource
-    private SysOrgService sysOrgService;
 
 
     @Resource
     @Resource
     private EartagRegisterMapper eartagRegisterMapper;
     private EartagRegisterMapper eartagRegisterMapper;

+ 79 - 0
cloud-platform-main/src/main/java/com/huimv/modular/timer/tasks/UpdateDeviceLastSendTime.java

@@ -0,0 +1,79 @@
+package com.huimv.modular.timer.tasks;//package com.huimv.modular.timer.tasks;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.huimv.modular.alarmrecord.service.AlarmRecordService;
+import com.huimv.modular.alarmvalueset.mapper.AlarmValueSetMapper;
+import com.huimv.modular.collectorregister.entity.CollectorRegister;
+import com.huimv.modular.collectorregister.mapper.CollectorRegisterMapper;
+import com.huimv.modular.collectorregister.service.CollectorRegisterService;
+import com.huimv.modular.eartagdata.entity.EartagData;
+import com.huimv.modular.eartagdata.mapper.EartagDataMapper;
+import com.huimv.modular.heartbeatrecord.entity.HeartBeatRecord;
+import com.huimv.modular.heartbeatrecord.mapper.HeartBeatRecordMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Slf4j
+@Component
+public class UpdateDeviceLastSendTime {
+
+    @Autowired
+    private EartagDataMapper eartagDataMapper   ;
+
+    @Autowired
+    private HeartBeatRecordMapper   heartBeatRecordMapper   ;
+    @Autowired
+    private AlarmValueSetMapper alarmValueSetMapper    ;
+
+    @Autowired
+    private CollectorRegisterMapper collectorRegisterMapper    ;
+    @Autowired
+    private CollectorRegisterService collectorRegisterService     ;
+
+    @Autowired
+    private AlarmRecordService alarmRecordService     ;
+
+    //更新设备最后一次上传时间
+    @Scheduled(cron = "0/10 * * * * ?")
+    public void checkDeviceAble() {
+
+        System.out.println("更新设备最后一次上传时间");
+        LambdaQueryWrapper<CollectorRegister> wrapper49 = Wrappers.lambdaQuery();
+        List<CollectorRegister> list = collectorRegisterMapper.selectList(wrapper49);
+
+        for (CollectorRegister collectorRegister : list) {
+            LambdaQueryWrapper<HeartBeatRecord> wrapper42 = Wrappers.lambdaQuery();
+            wrapper42.eq(HeartBeatRecord::getDeviceCode,collectorRegister.getDeviceCode()).orderByDesc(HeartBeatRecord::getId).last("limit 1");
+            HeartBeatRecord heartBeatRecord = heartBeatRecordMapper.selectOne(wrapper42);
+            if(heartBeatRecord!=null){
+                collectorRegister.setLastTime(heartBeatRecord.getCreateTime());
+                collectorRegisterService.updateById(collectorRegister);
+            }
+        }
+    }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 20 - 0
cloud-platform-main/src/main/java/com/huimv/modular/utils/util/Date2LongSerializer.java

@@ -0,0 +1,20 @@
+package com.huimv.modular.utils.util;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+
+import java.io.IOException;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class Date2LongSerializer extends JsonSerializer<Date> {
+
+
+    @Override
+    public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS");
+        jsonGenerator.writeNumber( sdf.format(date));
+    }
+}

+ 3 - 1
cloud-platform-main/src/main/resources/application-local.yml

@@ -2,7 +2,7 @@
 spring:
 spring:
   datasource:
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
     driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://122.112.224.199:3306/huimv-ruian?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&nullCatalogMeansCurrent=true
+    url: jdbc:mysql://122.112.224.199:3306/huimv-eartag-cloud?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&nullCatalogMeansCurrent=true
     username: root
     username: root
     password: hm123456
     password: hm123456
   redis:
   redis:
@@ -10,6 +10,8 @@ spring:
     port: 6379
     port: 6379
     password: hm123456
     password: hm123456
 
 
+
+
 # Oracle数据库
 # Oracle数据库
 #spring:
 #spring:
 #  datasource:
 #  datasource:

+ 0 - 1
cloud-platform-main/src/main/resources/application.yml

@@ -57,7 +57,6 @@ jodconverter:
     port-numbers: 8100
     port-numbers: 8100
     #libreoffice进程重启前的最大进程数
     #libreoffice进程重启前的最大进程数
     max-tasks-per-process: 100
     max-tasks-per-process: 100
-
 #验证码相关配置 去除日志打印
 #验证码相关配置 去除日志打印
 logging:
 logging:
   level:
   level: