Jelajahi Sumber

Merge remote-tracking branch 'origin/master'

yang 3 tahun lalu
induk
melakukan
c8c857c71b
59 mengubah file dengan 1683 tambahan dan 156 penghapusan
  1. 3 8
      smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/controller/BasePigpenController.java
  2. 3 9
      smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/controller/CollectorRegisterController.java
  3. 3 6
      smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/controller/DeviceTempController.java
  4. 3 9
      smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/controller/EartagRegisterController.java
  5. 3 9
      smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/controller/MovePigpenController.java
  6. 1 1
      smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/resources/application-dev.yml
  7. 2 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/HuimvSmartEartagDataManagerApplication.java
  8. 35 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/Main.java
  9. 1 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/controller/BaseRegionController.java
  10. 21 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/controller/DailyTabulateDataController.java
  11. 41 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/controller/DataAnalysisController.java
  12. 1 1
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/controller/EartagDataController.java
  13. 93 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/entity/dto/DataAnalysisDto.java
  14. 0 3
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/entity/vo/CollectorRegisterVo.java
  15. 42 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/entity/vo/DailySowVo.java
  16. 26 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/entity/vo/DailyVo.java
  17. 25 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/entity/vo/DayStockVo.java
  18. 0 3
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/entity/vo/EartagDataCountVo.java
  19. 22 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/entity/vo/SunAreaStockVo.java
  20. 25 2
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/mapper/DailyTabulateDataDao.java
  21. 2 2
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/result/R.java
  22. 5 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/DailyTabulateDataService.java
  23. 18 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/DataAnalysisService.java
  24. 76 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/impl/DailyTabulateDataServiceImpl.java
  25. 267 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/impl/DataAnalysisServiceImpl.java
  26. 59 69
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/impl/EartagDataServiceImpl.java
  27. 27 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/utils/AnalysisConstant.java
  28. 25 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/utils/Constant.java
  29. 5 5
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/resources/application-dev.yml
  30. 103 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/resources/mapper/manager/DailyTabulateDataDao.xml
  31. 78 3
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/test/java/com/huimv/manager/HuimvSmartEartagDataManagerTests.java
  32. 6 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/pom.xml
  33. 33 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/configuration/InterceptorConfig.java
  34. 65 9
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/controller/PigDataProcessingController.java
  35. 1 1
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/DailyTabulateDataEntity.java
  36. 5 4
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/EartagDataEntity.java
  37. 13 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/form/BaseForm.java
  38. 28 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/form/EartagDetailForm.java
  39. 2 2
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/form/EartagForm.java
  40. 5 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/form/PigStockForm.java
  41. 30 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/form/TokenForm.java
  42. 60 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/vo/DayPigStockVo.java
  43. 90 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/vo/EartagDetailVo.java
  44. 48 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/interceptor/JWTInterceptor.java
  45. 4 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/mapper/DailyTabulateDataDao.java
  46. 7 3
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/mapper/EartagDataDao.java
  47. 15 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/service/BaseService.java
  48. 6 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/service/DailyTabulateDataService.java
  49. 5 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/service/EartagDataService.java
  50. 4 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/service/FarmEartagChangeService.java
  51. 15 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/service/impl/BaseServiceImpl.java
  52. 39 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/service/impl/DailyTabulateDataServiceImpl.java
  53. 37 4
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/service/impl/EartagDataServiceImpl.java
  54. 27 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/service/impl/FarmEartagChangeServiceImpl.java
  55. 28 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/utils/Constant.java
  56. 53 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/utils/TokenUtil.java
  57. 2 2
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/resources/application-dev.yml
  58. 15 1
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/resources/mapper/transmission/DailyTabulateDataDao.xml
  59. 25 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/resources/mapper/transmission/EartagDataDao.xml

+ 3 - 8
smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/controller/BasePigpenController.java

@@ -8,16 +8,10 @@ import com.huimv.acquisition.result.R;
 import com.huimv.acquisition.service.BasePigpenService;
 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 org.springframework.web.bind.annotation.*;
 
 
-
-
-/**
+ /**
  * 栋舍表
  *
  * @author yinhao
@@ -26,6 +20,7 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @RestController
 @RequestMapping("management/basepigpen")
+@CrossOrigin
 public class BasePigpenController {
     @Autowired
     private BasePigpenService basePigpenService;

+ 3 - 9
smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/controller/CollectorRegisterController.java

@@ -8,17 +8,10 @@ import com.huimv.acquisition.result.R;
 import com.huimv.acquisition.service.CollectorRegisterService;
 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 org.springframework.web.bind.annotation.*;
 
 
-
-
-
-/**
+ /**
  * 
  *
  * @author yinhao
@@ -27,6 +20,7 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @RestController
 @RequestMapping("management/collectorregister")
+@CrossOrigin
 public class CollectorRegisterController {
     @Autowired
     private CollectorRegisterService collectorRegisterService;

+ 3 - 6
smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/controller/DeviceTempController.java

@@ -8,13 +8,9 @@ import com.huimv.acquisition.result.R;
 import com.huimv.acquisition.service.DeviceTempService;
 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 org.springframework.web.bind.annotation.*;
 
-/**
+ /**
  * 
  *
  * @author yinhao
@@ -23,6 +19,7 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @RestController
 @RequestMapping("management/devicetemp")
+@CrossOrigin
 public class DeviceTempController {
     @Autowired
     private DeviceTempService deviceTempService;

+ 3 - 9
smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/controller/EartagRegisterController.java

@@ -8,17 +8,10 @@ import com.huimv.acquisition.result.R;
 import com.huimv.acquisition.service.EartagRegisterService;
 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 org.springframework.web.bind.annotation.*;
 
 
-
-
-
-/**
+ /**
  * 
  *
  * @author yinhao
@@ -27,6 +20,7 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @RestController
 @RequestMapping("management/eartagregister")
+@CrossOrigin
 public class EartagRegisterController {
     @Autowired
     private EartagRegisterService eartagRegisterService;

+ 3 - 9
smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/controller/MovePigpenController.java

@@ -8,17 +8,10 @@ import com.huimv.acquisition.result.R;
 import com.huimv.acquisition.service.MovePigpenService;
 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 org.springframework.web.bind.annotation.*;
 
 
-
-
-
-/**
+ /**
  * 
  *
  * @author yinhao
@@ -27,6 +20,7 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @RestController
 @RequestMapping("management/movepigpen")
+@CrossOrigin
 public class MovePigpenController {
     @Autowired
     private MovePigpenService movePigpenService;

+ 1 - 1
smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/resources/application-dev.yml

@@ -1,5 +1,5 @@
 server:
-  port: 8210
+  port: 9500
 
 spring:
   datasource:

+ 2 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/HuimvSmartEartagDataManagerApplication.java

@@ -3,6 +3,7 @@ package com.huimv.manager;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
 /**
  * @Project : huimv.shiwan
@@ -14,6 +15,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
  **/
 @MapperScan("com.huimv.manager.mapper")
 @SpringBootApplication
+@EnableScheduling
 public class HuimvSmartEartagDataManagerApplication {
     public static void main(String[] args) {
         SpringApplication.run(HuimvSmartEartagDataManagerApplication.class, args);

+ 35 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/Main.java

@@ -0,0 +1,35 @@
+package com.huimv.manager;
+
+import cn.hutool.core.date.DateUtil;
+import com.huimv.manager.utils.Constant;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/7/29 10:18
+ */
+public class Main {
+
+    public static void main(String[] args) {
+
+        long cal1 = System.currentTimeMillis();
+        //执行代码
+        Calendar calendar = Calendar.getInstance();
+        calendar.add(Calendar.MONTH, -1);
+        Date time = calendar.getTime();
+        System.out.println(Constant.SDF_YMD.format(time));
+//        //SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+//        //System.out.println(sdf.format(new Date()));
+//        System.out.println(DateUtil.format(new Date(), "yyyy-MM-dd"));
+        //System.out.println(DateUtil.format(DateUtil.endOfYear(DateUtil.parse("2018", Constant.DATE_FORMAT_Y)), Constant.DATE_FORMAT_YMD));
+        long cal2 = System.currentTimeMillis();
+        System.out.println(cal2 -cal1);
+    }
+}

+ 1 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/controller/BaseRegionController.java

@@ -80,4 +80,5 @@ public class BaseRegionController {
         return R.ok();
     }
 
+
 }

+ 21 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/controller/DailyTabulateDataController.java

@@ -1,6 +1,7 @@
  package com.huimv.manager.controller;
 
 import java.util.Arrays;
+import java.util.List;
 import java.util.Map;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -86,4 +87,24 @@ public class DailyTabulateDataController {
         return R.ok();
     }
 
+    /**
+     * 存栏变化
+     */
+    @RequestMapping("/countAllChange")
+    public R countAll(@RequestParam Map<String, Object> params){
+        List list = dailyTabulateDataService.countAllChange(params);
+
+        return R.ok().put("page", list);
+    }
+
+    /**
+     * 母猪总存栏等
+     */
+    @RequestMapping("/countAllsow")
+    public R countAllsow(@RequestParam Map<String, Object> params){
+        List list = dailyTabulateDataService.countAllsow(params);
+
+        return R.ok().put("page", list);
+    }
+
 }

+ 41 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/controller/DataAnalysisController.java

@@ -0,0 +1,41 @@
+package com.huimv.manager.controller;
+
+import com.huimv.manager.entity.dto.DataAnalysisDto;
+import com.huimv.manager.result.R;
+import com.huimv.manager.service.DataAnalysisService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/7/28 14:04
+ */
+@CrossOrigin
+@RestController
+@RequestMapping("/dataAnalysis")
+public class DataAnalysisController {
+
+    @Autowired
+    private DataAnalysisService dataAnalysisService;
+
+    @PostMapping("/getPigStockByRegionCode")
+    public R getDayPigStockByRegionCode(@Validated @RequestBody DataAnalysisDto dataAnalysisDto) {
+        return dataAnalysisService.getDayPigStockByRegionCode(dataAnalysisDto);
+    }
+
+    @GetMapping("/childPigStock")
+    public R getChildPigStockByRegionCode(@RequestParam("regionCode") String regionCode) {
+        return dataAnalysisService.getChildPigStockByRegionCode(regionCode);
+    }
+
+//    public R getMonthPigStockByRegionCode(@Validated @RequestBody DataAnalysisDto dataAnalysisDto) {
+//        return dataAnalysisService.getMonthPigStockByRegionCode(dataAnalysisDto);
+//    }
+}

+ 1 - 1
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/controller/EartagDataController.java

@@ -93,7 +93,7 @@ public class EartagDataController {
     /*
     * 获取每日数据统计
     */
-    @Scheduled(cron = "1 1 1 * * ? ")
+    @Scheduled(cron = "1 1 * * * ?")
 //    @RequestMapping("/test")
     private void updateDailyData(){
         eartagDataService.updateDailyData();

+ 93 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/entity/dto/DataAnalysisDto.java

@@ -0,0 +1,93 @@
+package com.huimv.manager.entity.dto;
+
+import cn.hutool.core.date.DateUtil;
+import com.huimv.manager.utils.Constant;
+import lombok.Data;
+import org.apache.commons.lang.StringUtils;
+import org.hibernate.validator.constraints.Range;
+
+import javax.validation.constraints.NotBlank;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/7/28 15:06
+ */
+@Data
+public class DataAnalysisDto {
+
+    @NotBlank(message = "区域代码不能为空!")
+    private String regionCode;
+
+    private String start;
+
+    private String end;
+
+    @Range(min = 1, max = 3,message = "请传递指定的type参数!")
+    private Integer type;
+
+    public String getStart() {
+        return start;
+    }
+
+    public void setStart(String start) {
+        this.start = start;
+    }
+
+    public String getEnd() {
+        return end;
+    }
+
+    public void setEnd(String end) {
+        this.end = end;
+    }
+
+
+    public String getDayStart() {
+        if (StringUtils.isEmpty(start)) {
+            return Constant.SDF_YMD.format(DateUtil.offsetMonth(DateUtil.date(), -1));
+        }
+        return start;
+    }
+
+    public String getDayEnd() {
+        if (StringUtils.isEmpty(end)) {
+            return Constant.SDF_YMD.format(new Date());
+        }
+        return end;
+    }
+
+    public String getMonthStart() {
+        if (StringUtils.isEmpty(start)) {
+            return Constant.SDF_YM.format(DateUtil.offsetMonth(new Date(), -12)) + "-01";
+        }
+        return start + "-01";
+    }
+
+    public String getMonthEnd() {
+        Date nowDate = new Date();
+        if (StringUtils.isEmpty(end) || end.equals(Constant.SDF_YM.format(nowDate))) {
+            return Constant.SDF_YMD.format(nowDate);
+        }
+        return Constant.SDF_YMD.format(DateUtil.endOfMonth(DateUtil.parse(end, Constant.DATE_FORMAT_YM)));
+    }
+
+    public String getYearStart() {
+        if (StringUtils.isEmpty(start)) {
+            return DateUtil.offsetMonth(new Date(), -60).year() + "-01-01";
+        }
+        return start + "-01-01";
+    }
+
+    public String getYearEnd() {
+        Date nowDate = new Date();
+        if (StringUtils.isEmpty(end) || end.equals(DateUtil.format(nowDate, Constant.DATE_FORMAT_Y))) {
+            return Constant.SDF_YMD.format(nowDate);
+        }
+        return Constant.SDF_YMD.format(DateUtil.endOfYear(DateUtil.parse(end, Constant.DATE_FORMAT_Y)));
+    }
+}

+ 0 - 3
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/entity/vo/CollectorRegisterVo.java

@@ -8,9 +8,6 @@ import java.io.Serializable;
 import java.util.Date;
 
 /**
- * @Project : huimv.shiwan
- * @Package : com.huimv.manager.entity.vo
- * @Description : TODO
  * @Author : yuxuexuan
  * @Create : 2021/7/24 0024 17:46
  **/

+ 42 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/entity/vo/DailySowVo.java

@@ -0,0 +1,42 @@
+package com.huimv.manager.entity.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Author : yuxuexuan
+ * @Create : 2021/8/4 0004 17:28
+ **/
+@Data
+public class DailySowVo implements Serializable {
+    /*
+    * 母猪总存栏
+    */
+    private Integer stockTotal;
+
+    /*
+     * 能繁母猪存栏
+     */
+    private Integer sowStock;
+
+    /*
+     * 配怀存栏
+     */
+    private Integer stock1;
+
+    /*
+     * 分娩存栏
+     */
+    private Integer stock2;
+
+
+    /*
+     *后备存栏
+     */
+    private Integer stock4;
+
+
+
+
+}

+ 26 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/entity/vo/DailyVo.java

@@ -0,0 +1,26 @@
+package com.huimv.manager.entity.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Author : yuxuexuan
+ * @Create : 2021/8/2 0002 17:01
+ **/
+@Data
+public class DailyVo  implements Serializable {
+
+    private String ydate;
+
+    private Integer stock1;
+
+    private Integer stock2;
+
+
+    private Integer stock3;
+
+    private Integer stockNew;
+
+    private Integer offlineNo;
+}

+ 25 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/entity/vo/DayStockVo.java

@@ -0,0 +1,25 @@
+package com.huimv.manager.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/7/28 17:45
+ */
+@Data
+public class DayStockVo implements Serializable {
+    private static final long serialVersionUID = -7824209169654447620L;
+
+    //@JsonFormat(pattern = "MM-dd", timezone = "GMT+8")
+    private String date;
+
+    private Integer total;
+}

+ 0 - 3
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/entity/vo/EartagDataCountVo.java

@@ -6,9 +6,6 @@ import lombok.Data;
 import java.util.Date;
 
 /**
- * @Project : huimv.shiwan
- * @Package : com.huimv.manager.entity.vo
- * @Description : TODO
  * @Author : yuxuexuan
  * @Create : 2021/7/26 0026 14:28
  **/

+ 22 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/entity/vo/SunAreaStockVo.java

@@ -0,0 +1,22 @@
+package com.huimv.manager.entity.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/7/28 18:28
+ */
+@Data
+public class SunAreaStockVo implements Serializable {
+    private static final long serialVersionUID = -8882516746295570193L;
+
+    private String region;
+
+    private Integer total;
+}

+ 25 - 2
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/mapper/DailyTabulateDataDao.java

@@ -1,13 +1,23 @@
 package com.huimv.manager.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.huimv.manager.entity.BaseFarmInfoEntity;
 import com.huimv.manager.entity.DailyTabulateDataEntity;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.manager.entity.vo.DailySowVo;
+import com.huimv.manager.entity.vo.DayStockVo;
+import com.huimv.manager.entity.vo.SunAreaStockVo;
+import com.huimv.manager.entity.vo.DailyVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
  * 耳标每日汇总表
- * 
+ *
  * @author yinhao
  * @version ${version}
  * @date 2021-07-24 16:29:33
@@ -15,5 +25,18 @@ import org.springframework.stereotype.Repository;
 @Mapper
 @Repository
 public interface DailyTabulateDataDao extends BaseMapper<DailyTabulateDataEntity> {
-	
+
+    List<DayStockVo> getDayStockByRegion(@Param(Constants.WRAPPER) QueryWrapper<DayStockVo> query,@Param("type") Integer type);
+
+    List<SunAreaStockVo> getCityPigStock(@Param(Constants.WRAPPER) QueryWrapper<SunAreaStockVo> sunAreaQuery,@Param("type") String type);
+
+    List<DayStockVo> getMunicipalDayStock(@Param(Constants.WRAPPER) QueryWrapper<DayStockVo> query);
+
+    List<DailyVo> selectDay(@Param(Constants.WRAPPER) QueryWrapper<DailyTabulateDataEntity> wrapper);
+
+    List<DailyVo> selectMonth(@Param(Constants.WRAPPER) QueryWrapper<DailyTabulateDataEntity> wrapper);
+
+    List<DailyVo> selectYear(@Param(Constants.WRAPPER) QueryWrapper<DailyTabulateDataEntity> wrapper);
+
+    DailySowVo counSowAll(@Param(Constants.WRAPPER) QueryWrapper<BaseFarmInfoEntity> wrapper);
 }

+ 2 - 2
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/result/R.java

@@ -1,10 +1,10 @@
 package com.huimv.manager.result;
 
 
-import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.Map;
 
-public class R extends HashMap<String, Object> {
+public class R extends LinkedHashMap<String, Object> {
 
     private static final long serialVersionUID = 1L;
 

+ 5 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/DailyTabulateDataService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.huimv.manager.utils.PageUtils;
 import com.huimv.manager.entity.DailyTabulateDataEntity;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -18,5 +19,9 @@ public interface DailyTabulateDataService extends IService<DailyTabulateDataEnti
     PageUtils queryPage(Map<String, Object> params);
 
     DailyTabulateDataEntity listByFarm(Map<String, Object> params);
+
+    List countAllChange(Map<String, Object> params);
+
+    List countAllsow(Map<String, Object> params);
 }
 

+ 18 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/DataAnalysisService.java

@@ -0,0 +1,18 @@
+package com.huimv.manager.service;
+
+import com.huimv.manager.entity.dto.DataAnalysisDto;
+import com.huimv.manager.result.R;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/7/28 14:16
+ */
+public interface DataAnalysisService {
+    R getDayPigStockByRegionCode(DataAnalysisDto dataAnalysisDto);
+
+    R getChildPigStockByRegionCode(String regionCode);
+}

+ 76 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/impl/DailyTabulateDataServiceImpl.java

@@ -1,13 +1,23 @@
 package com.huimv.manager.service.impl;
 
+import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.huimv.manager.entity.BaseFarmInfoEntity;
+import com.huimv.manager.entity.vo.DailySowVo;
+import com.huimv.manager.entity.vo.DailyVo;
+import com.huimv.manager.mapper.BaseFarmInfoDao;
 import com.huimv.manager.mapper.DailyTabulateDataDao;
 import com.huimv.manager.result.R;
 import com.huimv.manager.result.RRException;
+import jdk.nashorn.internal.ir.IfNode;
+import net.bytebuddy.implementation.bytecode.Throw;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 import java.util.Map;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -27,6 +37,8 @@ import com.huimv.manager.service.DailyTabulateDataService;
  */
 @Service("dailyTabulateDataService")
 public class DailyTabulateDataServiceImpl extends ServiceImpl<DailyTabulateDataDao, DailyTabulateDataEntity> implements DailyTabulateDataService {
+    @Autowired
+    private BaseFarmInfoDao baseFarmInfoDao;
 
     @Override
     public PageUtils queryPage(Map<String, Object> params) {
@@ -90,4 +102,68 @@ public class DailyTabulateDataServiceImpl extends ServiceImpl<DailyTabulateDataD
 
         return   baseMapper.selectOne(wrapper);
     }
+
+    @Override
+    public List countAllChange(Map<String, Object> params) {
+        List<DailyVo> list = new ArrayList<>();
+
+        String farmCode = (String)params.get("farmCode");
+        String startDate = (String)params.get("startDate");
+        String endDate = (String)params.get("endDate");
+        String type = (String)params.get("type");
+
+        if (farmCode == null){
+            throw new RRException("请选择牧场");
+        }
+
+        QueryWrapper<DailyTabulateDataEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq("farm_code",farmCode);
+        wrapper.ge(StringUtils.isNotBlank(startDate),"statistic_date",startDate);
+        wrapper.ge(StringUtils.isNotBlank(startDate),"statistic_date",endDate);
+        wrapper.groupBy("ydate");
+        wrapper.orderByDesc("statistic_date");
+
+        if ("1".equals(type)){
+            if (StringUtils.isBlank(startDate) || StringUtils.isBlank(endDate)){
+                wrapper.last("limit 7");
+            }
+            list = baseMapper.selectDay(wrapper);
+        }
+        if ("2".equals(type)){
+            if (StringUtils.isBlank(startDate) || StringUtils.isBlank(endDate)){
+                wrapper.last("limit 6");
+            }
+            list = baseMapper.selectMonth(wrapper);
+        }
+        if ("3".equals(type)){
+            if (StringUtils.isBlank(startDate) || StringUtils.isBlank(endDate)){
+                wrapper.last("limit 5");
+            }
+            list = baseMapper.selectYear(wrapper);
+        }
+
+        return list;
+    }
+
+    @Override
+    public List countAllsow(Map<String, Object> params) {
+//        String type =(String)params.get("type");
+        String countyCode = (String)params.get("countyCode");
+
+        QueryWrapper<BaseFarmInfoEntity> wrapper = new QueryWrapper<>();
+        if (StringUtils.isNotBlank(countyCode)){
+            wrapper.eq("county",countyCode).or().eq("city",countyCode);
+        }
+
+        List<String>  farmCodeList = new ArrayList();
+        List<BaseFarmInfoEntity> baseFarmInfoEntities = baseFarmInfoDao.selectList(wrapper);
+        for (BaseFarmInfoEntity baseFarmInfoEntity : baseFarmInfoEntities) {
+            farmCodeList.add( baseFarmInfoEntity.getFarmCode());
+        }
+        wrapper.in("farm_code",farmCodeList);
+        wrapper.eq("statistic_date", DateUtil.beginOfDay(new Date()));
+        DailySowVo dailySowVo = baseMapper.counSowAll(wrapper);
+
+        return null;
+    }
 }

+ 267 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/impl/DataAnalysisServiceImpl.java

@@ -0,0 +1,267 @@
+package com.huimv.manager.service.impl;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.huimv.manager.entity.BaseRegionEntity;
+import com.huimv.manager.entity.dto.DataAnalysisDto;
+import com.huimv.manager.entity.vo.DayStockVo;
+import com.huimv.manager.entity.vo.SunAreaStockVo;
+import com.huimv.manager.mapper.BaseRegionDao;
+import com.huimv.manager.mapper.DailyTabulateDataDao;
+import com.huimv.manager.result.R;
+import com.huimv.manager.result.RRException;
+import com.huimv.manager.service.DataAnalysisService;
+import com.huimv.manager.utils.AnalysisConstant;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/7/28 14:17
+ */
+@Service("dataAnalysisService")
+public class DataAnalysisServiceImpl implements DataAnalysisService {
+
+    @Autowired
+    private BaseRegionDao baseRegionDao;
+
+    @Autowired
+    private DailyTabulateDataDao dailyTabulateDataDao;
+
+    @Override
+    public R getDayPigStockByRegionCode(DataAnalysisDto dataAnalysisDto) {
+
+        String regionCode = dataAnalysisDto.getRegionCode();
+        BaseRegionEntity baseRegionEntity = selectBaseRegion(regionCode);
+
+        Integer type = dataAnalysisDto.getType();
+        String parentCode = baseRegionEntity.getParentCode();
+        //省级
+        if (parentCode == null) {
+            switch (type) {
+                case 1:
+                    return buildBackData(dataAnalysisDto, AnalysisConstant.PROVINCE_FIELD, AnalysisConstant.DAY_GROUP_FIELD);
+                case 2:
+                    return buildBackData(dataAnalysisDto, AnalysisConstant.PROVINCE_FIELD, AnalysisConstant.MONTH_GROUP_FIELD);
+                case 3:
+                    return buildBackData(dataAnalysisDto, AnalysisConstant.PROVINCE_FIELD, AnalysisConstant.YEAR_GROUP_FIELD);
+                default:
+                    throw new RRException("type参数有误,请检查!");
+            }
+        } else {
+            BaseRegionEntity entity = selectBaseRegion(parentCode);
+            //市级
+            if (entity.getParentCode() == null) {
+                switch (type) {
+                    case 1:
+                        return buildBackData(dataAnalysisDto, AnalysisConstant.CITY_FIELD, AnalysisConstant.DAY_GROUP_FIELD);
+                    case 2:
+                        return buildBackData(dataAnalysisDto, AnalysisConstant.CITY_FIELD, AnalysisConstant.MONTH_GROUP_FIELD);
+                    case 3:
+                        return buildBackData(dataAnalysisDto, AnalysisConstant.CITY_FIELD, AnalysisConstant.YEAR_GROUP_FIELD);
+                    default:
+                        throw new RRException("type参数有误,请检查!");
+                }
+                //区县级
+            } else {
+                switch (type) {
+                    case 1:
+                        return buildBackData(dataAnalysisDto, AnalysisConstant.COUNTY_FIELD, AnalysisConstant.DAY_GROUP_FIELD);
+                    case 2:
+                        return buildBackData(dataAnalysisDto, AnalysisConstant.COUNTY_FIELD, AnalysisConstant.MONTH_GROUP_FIELD);
+                    case 3:
+                        return buildBackData(dataAnalysisDto, AnalysisConstant.COUNTY_FIELD, AnalysisConstant.YEAR_GROUP_FIELD);
+                    default:
+                        throw new RRException("type参数有误,请检查!");
+                }
+            }
+        }
+    }
+
+    private R buildBackData(DataAnalysisDto dataAnalysisDto, String countField, String typeGroupField) {
+        QueryWrapper<DayStockVo> query = Wrappers.query();
+
+
+        String regionCode = dataAnalysisDto.getRegionCode();
+        String start = null;
+        String end = null;
+        int type;
+
+        if (AnalysisConstant.DAY_GROUP_FIELD.equals(typeGroupField)) {
+            start = dataAnalysisDto.getDayStart();
+            end = dataAnalysisDto.getDayEnd();
+            type = 1;
+        } else if (AnalysisConstant.MONTH_GROUP_FIELD.equals(typeGroupField)) {
+            start = dataAnalysisDto.getMonthStart();
+            end = dataAnalysisDto.getMonthEnd();
+            type = 2;
+        } else {
+            start = dataAnalysisDto.getYearStart();
+            end = dataAnalysisDto.getYearEnd();
+            type = 3;
+        }
+
+        query.eq(countField, regionCode)
+                .ge("dtd.statistic_date", start)
+                .le("dtd.statistic_date", end)
+                .groupBy(countField, typeGroupField)
+                .orderByAsc("date");
+
+        List<DayStockVo> dayStockVoList = dailyTabulateDataDao.getDayStockByRegion(query, type);
+        List<String> dateList = new ArrayList<>();
+        List<Integer> stockList = new ArrayList<>();
+        fillList(dateList, stockList, dayStockVoList);
+
+//        QueryWrapper<SunAreaStockVo> sunAreaQuery = Wrappers.query();
+//        sunAreaQuery.eq(countField, regionCode)
+//                .groupBy(regionGroupField, "dtd.statistic_date")
+//                .orderByDesc("dtd.statistic_date");
+//
+//        List<SunAreaStockVo> sunAreaStockVoList = dailyTabulateDataDao.getCityPigStock(sunAreaQuery);
+//        List<String> regionList = new ArrayList<>();
+//        List<Integer> regionStockList = new ArrayList<>();
+//        fillList(regionList, regionStockList, sunAreaStockVoList);
+
+        return R.ok().put("dateList", dateList).put("stockList", stockList);
+    }
+
+    private void fillList(List<String> list1, List<Integer> list2, List<?> dbList) {
+        for (Object o : dbList) {
+            if (o instanceof DayStockVo) {
+                list1.add(((DayStockVo) o).getDate());
+                list2.add(((DayStockVo) o).getTotal());
+            } else if (o instanceof SunAreaStockVo) {
+                list1.add(((SunAreaStockVo) o).getRegion());
+                list2.add(((SunAreaStockVo) o).getTotal());
+            }
+        }
+    }
+
+    @Override
+    public R getChildPigStockByRegionCode(String regionCode) {
+
+        BaseRegionEntity baseRegionEntity = selectBaseRegion(regionCode);
+        String parentCode = baseRegionEntity.getParentCode();
+        //省级
+        if (parentCode == null) {
+            return buildChildStockBack(regionCode, AnalysisConstant.PROVINCE_FIELD, AnalysisConstant.CITY_FIELD);
+        } else {
+            BaseRegionEntity entity = selectBaseRegion(parentCode);
+            //市级
+            if (entity.getParentCode() == null) {
+                return buildChildStockBack(regionCode, AnalysisConstant.CITY_FIELD, AnalysisConstant.COUNTY_FIELD);
+                //区县级
+            } else {
+                return buildChildStockBack(regionCode, AnalysisConstant.COUNTY_FIELD, AnalysisConstant.FARM_FIELD);
+            }
+        }
+    }
+
+    private R buildChildStockBack(String regionCode, String countField, String regionGroupField) {
+
+        QueryWrapper<SunAreaStockVo> sunAreaQuery = Wrappers.query();
+        sunAreaQuery.eq(countField, regionCode)
+                .groupBy(regionGroupField, "dtd.statistic_date")
+                .orderByDesc("dtd.statistic_date");
+
+        List<SunAreaStockVo> sunAreaStockVoList = dailyTabulateDataDao.getCityPigStock(sunAreaQuery,regionGroupField);
+        List<String> regionList = new ArrayList<>();
+        List<Integer> regionStockList = new ArrayList<>();
+        fillList(regionList, regionStockList, sunAreaStockVoList);
+
+        return R.ok().put("regionList", regionList).put("regionStockList", regionStockList);
+    }
+
+
+    private BaseRegionEntity selectBaseRegion(String regionCode) {
+        LambdaQueryWrapper<BaseRegionEntity> lambdaQuery = Wrappers.lambdaQuery();
+        lambdaQuery.eq(BaseRegionEntity::getRegionCode, regionCode);
+        BaseRegionEntity baseRegionEntity = baseRegionDao.selectOne(lambdaQuery);
+        if (baseRegionEntity == null) {
+            throw new RRException("未查询到该区域信息,请检查!", 10001);
+        }
+        return baseRegionEntity;
+    }
+
+
+    //   private R provincialDataAnalysis(DataAnalysisDto dataAnalysisDto) {
+//        return buildBackData(dataAnalysisDto, AnalysisConstant.PROVINCE_FIELD, AnalysisConstant.CITY_FIELD, AnalysisConstant.DAY_GROUP_FIELD);
+//
+////        QueryWrapper<DayStockVo> dayStockVoQueryWrapper = buildDayStockQueryWrapper(dataAnalysisDto);
+////        dayStockVoQueryWrapper.groupBy("farm.province", "dtd.statistic_date");
+////
+////        List<DayStockVo> dayStockVoList = dailyTabulateDataDao.getDayStockByRegion(dayStockVoQueryWrapper);
+////
+////        List<String> dateList = new ArrayList<>();
+////        List<Integer> stockList = new ArrayList<>();
+////        fillList(dateList, stockList, dayStockVoList);
+////
+////
+////        QueryWrapper<SunAreaStockVo> sunAreaQuery = Wrappers.query();
+////        sunAreaQuery.eq("farm.province", dataAnalysisDto.getRegionCode())
+////                .groupBy("farm.city", "dtd.statistic_date")
+////                .orderByDesc("dtd.statistic_date");
+////        List<SunAreaStockVo> sunAreaStockVoList = dailyTabulateDataDao.getCityPigStock(sunAreaQuery);
+////        List<String> regionList = new ArrayList<>();
+////        List<Integer> regionStockList = new ArrayList<>();
+////        fillList(regionList, regionStockList, sunAreaStockVoList);
+////
+////        return R.ok().put("dateList", dateList)
+////                .put("stockList", stockList)
+////                .put("regionList", regionList)
+////                .put("regionStockList", regionStockList);
+//    }
+//
+//
+//    private R municipalDataAnalysis(DataAnalysisDto dataAnalysisDto) {
+////        String start = dataAnalysisDto.getDayStart();
+////        String end = dataAnalysisDto.getDayEnd();
+//
+////        QueryWrapper<DayStockVo> query = Wrappers.query();
+////        query.eq("farm.city", dataAnalysisDto.getRegionCode())
+////                .ge("dtd.statistic_date", start)
+////                .le("dtd.statistic_date", end)
+////                .groupBy("farm.city", "dtd.statistic_date")
+////                .orderByAsc("date");
+////
+////        List<DayStockVo> dayStockVoList = dailyTabulateDataDao.getMunicipalDayStock(query);
+//
+//        return buildBackData(dataAnalysisDto, AnalysisConstant.CITY_FIELD, AnalysisConstant.COUNTY_FIELD, AnalysisConstant.DAY_GROUP_FIELD);
+////        QueryWrapper<DayStockVo> dayStockVoQueryWrapper = buildDayStockQueryWrapper(dataAnalysisDto);
+////        dayStockVoQueryWrapper.groupBy("farm.city", "dtd.statistic_date");
+////        List<DayStockVo> dayStockVoList = dailyTabulateDataDao.getDayStockByRegion(dayStockVoQueryWrapper);
+////
+////
+////        List<String> dateList = new ArrayList<>();
+////        List<Integer> stockList = new ArrayList<>();
+////        fillList(dateList, stockList, dayStockVoList);
+////
+////        QueryWrapper<SunAreaStockVo> sunAreaQuery = Wrappers.query();
+////        sunAreaQuery.eq("farm.city", dataAnalysisDto.getRegionCode())
+////                .groupBy("farm.county", "dtd.statistic_date")
+////                .orderByDesc("dtd.statistic_date");
+////        List<SunAreaStockVo> sunAreaStockVoList = dailyTabulateDataDao.getCityPigStock(sunAreaQuery);
+////        List<String> regionList = new ArrayList<>();
+////        List<Integer> regionStockList = new ArrayList<>();
+////        fillList(regionList, regionStockList, sunAreaStockVoList);
+////
+////        return R.ok().put("dateList", dateList)
+////                .put("stockList", stockList)
+////                .put("regionList", regionList)
+////                .put("regionStockList", regionStockList);
+//
+//    }
+
+//        private R countyDataAnalysis(DataAnalysisDto dataAnalysisDto) {
+//            return buildBackData(dataAnalysisDto, AnalysisConstant.COUNTY_FIELD, AnalysisConstant.FARM_FIELD, AnalysisConstant.DAY_GROUP_FIELD);
+//        }
+}

+ 59 - 69
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/impl/EartagDataServiceImpl.java

@@ -23,8 +23,6 @@ import com.huimv.manager.utils.Query;
 import com.huimv.manager.service.EartagDataService;
 
 /**
- * 
- *
  * @author yinhao
  * @version ${version}
  * @date 2021-07-24 16:29:33
@@ -36,38 +34,36 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataDao, EartagData
     public PageUtils queryPage(Map<String, Object> params) {
 
 
-        String time = (String)params.get("time");//采集时间
-        String farmName = (String)params.get("farmName");//牧场名称
-        String eartagNo = (String)params.get("eartagNo");//耳标号
-        String dayAge = (String)params.get("dayAge");//耳标号
-        String earTemp = (String)params.get("earTemp");//耳根温度
-        String envTemp = (String)params.get("envTemp");//环境温度
-        String bat = (String)params.get("bat");//电量
-        String rssi = (String)params.get("rssi");//信号强度
-        String pigpenName = (String)params.get("pigpenName");
-        String deviceCode = (String)params.get("deviceCode");
+        String time = (String) params.get("time");//采集时间
+        //String farmName = (String) params.get("farmName");//牧场名称
+        String eartagNo = (String) params.get("eartagNo");//耳标号
+        String dayAge = (String) params.get("dayAge");//耳标号
+        String earTemp = (String) params.get("earTemp");//耳根温度
+        String envTemp = (String) params.get("envTemp");//环境温度
+        String bat = (String) params.get("bat");//电量
+        String rssi = (String) params.get("rssi");//信号强度
+        String pigpenName = (String) params.get("pigpenName");
+        String deviceCode = (String) params.get("deviceCode");
 
         //TODO 多条件查询
         QueryWrapper<EartagDataEntity> wrapper = new QueryWrapper<>();
 
 
-
-
-        IPage<EartagDataEntity> page = this.page(new Query<EartagDataEntity>().getPage(params),wrapper);
+        IPage<EartagDataEntity> page = this.page(new Query<EartagDataEntity>().getPage(params), wrapper);
         return new PageUtils(page);
     }
 
     @Override
     public List countByTime(Map<String, Object> params) {
-        String  startTime = (String)params.get("startTime");
-        String  endTime = (String) params.get("endTime");
-        String deviceCode = (String)params.get("deviceCode");
+        String startTime = (String) params.get("startTime");
+        String endTime = (String) params.get("endTime");
+        String deviceCode = (String) params.get("deviceCode");
 
 
         QueryWrapper<EartagDataEntity> wrapper = new QueryWrapper<>();
-        wrapper.eq("device_code",deviceCode);
-        wrapper.ge(StringUtils.isNotBlank(startTime),"time",startTime);
-        wrapper.le(StringUtils.isNotBlank(endTime),"time",endTime);
+        wrapper.eq("device_code", deviceCode);
+        wrapper.ge(StringUtils.isNotBlank(startTime), "time", startTime);
+        wrapper.le(StringUtils.isNotBlank(endTime), "time", endTime);
         wrapper.groupBy("count_time");
         List<EartagDataCountVo> list = baseMapper.countByTime(wrapper);
 
@@ -99,26 +95,25 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataDao, EartagData
             String city = baseFarmInfoEntity.getCity();
 
 
-
             //查询当日牧场下耳标数据
             Date now = new Date();
             QueryWrapper<EartagDataEntity> wrapper = new QueryWrapper<>();
-            wrapper.eq("farm_code",farmCode);
+            wrapper.eq("farm_code", farmCode);
             wrapper.ge("time", DateUtil.beginOfDay(now));
             wrapper.groupBy("eartag_no");
             List<EartagDataEntity> eartagDataEntities = baseMapper.selectList(wrapper);
 
             //过滤
-            Set<String>  nowSet = new HashSet();
+            Set<String> nowSet = new HashSet();
             for (EartagDataEntity eartagDataEntity : eartagDataEntities) {
                 nowSet.add(eartagDataEntity.getEartagNo());
             }
 
             //查询昨日牧场下耳标数据
             wrapper.clear();
-            wrapper.eq("farm_code",farmCode);
+            wrapper.eq("farm_code", farmCode);
             wrapper.le("time", DateUtil.beginOfDay(now));
-            wrapper.ge("time", DateUtil.offsetDay(DateUtil.beginOfDay(now),-1));
+            wrapper.ge("time", DateUtil.offsetDay(DateUtil.beginOfDay(now), -1));
             wrapper.groupBy("eartag_no");
             List<EartagDataEntity> yesterdayEartagDataEntities = baseMapper.selectList(wrapper);
 
@@ -127,7 +122,7 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataDao, EartagData
             for (EartagDataEntity eartagDataEntity : yesterdayEartagDataEntities) {
                 yesterdaySet.add(eartagDataEntity.getEartagNo());
             }
-            Set<String>  set = ObjectUtil.cloneByStream(nowSet);
+            Set<String> set = ObjectUtil.cloneByStream(nowSet);
 
             //当日母猪总存栏
             int allSow = nowSet.size();
@@ -142,8 +137,8 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataDao, EartagData
             //添加离线表
             for (String eartagNo : yesterdaySet) {
                 wrapper.clear();
-                wrapper.eq("eartag_no",eartagNo);
-                wrapper.eq("farm_code",farmCode);
+                wrapper.eq("eartag_no", eartagNo);
+                wrapper.eq("farm_code", farmCode);
                 wrapper.orderByDesc("time");
                 EartagDataEntity dataEntity = baseMapper.selectList(wrapper).get(0);
 
@@ -158,58 +153,58 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataDao, EartagData
 
 
             //计算日龄
-            Integer ratio1 = 0 ,ratio2 = 0,ratio3= 0,ratio4 = 0;
+            Integer ratio1 = 0, ratio2 = 0, ratio3 = 0, ratio4 = 0;
             //1:配怀存栏,2:分娩存栏,3:后备存栏,4:空怀母猪,5:公猪存栏,
-            Integer stock1 = 0 ,stock2 = 0,stock3= 0,stock4 = 0,stock5=0;
+            Integer stock1 = 0, stock2 = 0, stock3 = 0, stock4 = 0, stock5 = 0;
             for (EartagDataEntity eartagDataEntity : eartagDataEntities) {
                 Integer dayAge = eartagDataEntity.getDayAge2();
-                if (dayAge != null ){
-                    if (dayAge>250 &&  dayAge < 1000 ){
+                if (dayAge != null) {
+                    if (dayAge > 250 && dayAge < 1000) {
                         ratio1++;
                     }
 
-                    if (dayAge >=1000 &&  dayAge < 1700 ){
+                    if (dayAge >= 1000 && dayAge < 1700) {
                         ratio2++;
                     }
 
-                    if (dayAge >= 1700 &&  dayAge < 2400 ){
+                    if (dayAge >= 1700 && dayAge < 2400) {
                         ratio3++;
                     }
 
-                    if (dayAge >= 2400 ){
+                    if (dayAge >= 2400) {
                         ratio4++;
                     }
 
                     Integer stage = eartagDataEntity.getStage();
-                    if (stage== 1){
+                    if (stage == 1) {
                         stock1++;
                     }
-                    if (stage== 2){
+                    if (stage == 2) {
                         stock2++;
                     }
-                    if (stage== 3){
+                    if (stage == 3) {
                         stock3++;
                     }
-                    if (stage== 4){
+                    if (stage == 4) {
                         stock4++;
                     }
-                    if (stage== 5){
+                    if (stage == 5) {
                         stock5++;
                     }
                 }
             }
             String ratioStr1 = CalculateUtil(BigDecimal.valueOf(ratio1), BigDecimal.valueOf(allSow));
-            String ratioStr2 = CalculateUtil(BigDecimal.valueOf(ratio2),BigDecimal.valueOf(allSow));
-            String ratioStr3 = CalculateUtil(BigDecimal.valueOf(ratio3),BigDecimal.valueOf(allSow));
-            String ratioStr4 = CalculateUtil(BigDecimal.valueOf(ratio4),BigDecimal.valueOf(allSow));
+            String ratioStr2 = CalculateUtil(BigDecimal.valueOf(ratio2), BigDecimal.valueOf(allSow));
+            String ratioStr3 = CalculateUtil(BigDecimal.valueOf(ratio3), BigDecimal.valueOf(allSow));
+            String ratioStr4 = CalculateUtil(BigDecimal.valueOf(ratio4), BigDecimal.valueOf(allSow));
 
 
             //新数据
             QueryWrapper<DailyTabulateDataEntity> dailyWrapper = new QueryWrapper<>();
-            dailyWrapper.eq("statistic_date",DateUtil.beginOfDay(now));
-            dailyWrapper.eq("farm_code",farmCode);
+            dailyWrapper.eq("statistic_date", DateUtil.beginOfDay(now));
+            dailyWrapper.eq("farm_code", farmCode);
             DailyTabulateDataEntity dailyTabulateDataEntity = dailyTabulateDataDao.selectOne(dailyWrapper);
-            if (dailyTabulateDataEntity == null){
+            if (dailyTabulateDataEntity == null) {
                 dailyTabulateDataEntity = new DailyTabulateDataEntity();
             }
             dailyTabulateDataEntity.setFarmCode(farmCode);
@@ -217,32 +212,31 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataDao, EartagData
             dailyTabulateDataEntity.setStatisticDate(now);
             dailyTabulateDataEntity.setStockNew(newSow);
             dailyTabulateDataEntity.setOfflineNo(offSow);
-            dailyTabulateDataEntity.setRatio1(ratio1 +" ("+ratioStr1+")");
-            dailyTabulateDataEntity.setRatio2(ratio2 +" ("+ratioStr2+")");
-            dailyTabulateDataEntity.setRatio3(ratio3 +" ("+ratioStr3+")");
-            dailyTabulateDataEntity.setRatio4(ratio4 +" ("+ratioStr4+")");
+            dailyTabulateDataEntity.setRatio1(ratio1 + " (" + ratioStr1 + ")");
+            dailyTabulateDataEntity.setRatio2(ratio2 + " (" + ratioStr2 + ")");
+            dailyTabulateDataEntity.setRatio3(ratio3 + " (" + ratioStr3 + ")");
+            dailyTabulateDataEntity.setRatio4(ratio4 + " (" + ratioStr4 + ")");
             dailyTabulateDataEntity.setStock1(stock1);
             dailyTabulateDataEntity.setStock2(stock2);
             dailyTabulateDataEntity.setStock3(stock3);
             dailyTabulateDataEntity.setStock4(stock4);
             dailyTabulateDataEntity.setStock5(stock5);
-            dailyTabulateDataEntity.setSowStock(stock1+stock2+stock3);
+            dailyTabulateDataEntity.setSowStock(stock1 + stock2 + stock3);
 
-            if (dailyTabulateDataEntity.getId()==null){
+            if (dailyTabulateDataEntity.getId() == null) {
                 dailyTabulateDataDao.insert(dailyTabulateDataEntity);
-            }else {
+            } else {
                 dailyTabulateDataDao.updateById(dailyTabulateDataEntity);
             }
 
 
-
             //牧场存栏统计
             QueryWrapper<FarmStockEntity> farmStockEQueryWrapper = new QueryWrapper<>();
-            farmStockEQueryWrapper.eq("year",DateUtil.year(now));
-            farmStockEQueryWrapper.eq("month",DateUtil.month(now));
-            farmStockEQueryWrapper.eq("farm_code",farmCode);
+            farmStockEQueryWrapper.eq("year", DateUtil.year(now));
+            farmStockEQueryWrapper.eq("month", DateUtil.month(now));
+            farmStockEQueryWrapper.eq("farm_code", farmCode);
             FarmStockEntity farmStockEntity = farmStockDao.selectOne(farmStockEQueryWrapper);
-            if (farmStockEntity == null){
+            if (farmStockEntity == null) {
                 farmStockEntity = new FarmStockEntity();
             }
 
@@ -251,7 +245,7 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataDao, EartagData
             farmStockEntity.setSowTotalStock(allSow);
             farmStockEntity.setEartagNew(newSow);
             farmStockEntity.setEartagOffone(offSow);
-            farmStockEntity.setSowStock(stock1+stock2+stock3);
+            farmStockEntity.setSowStock(stock1 + stock2 + stock3);
             farmStockEntity.setStock1(stock1);
             farmStockEntity.setStock2(stock2);
             farmStockEntity.setStock3(stock3);
@@ -261,29 +255,25 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataDao, EartagData
             farmStockEntity.setMonth(DateUtil.month(now));
             farmStockEntity.setCityCode(city);
             farmStockEntity.setCountyCode(county);
-            if(farmStockEntity.getId() == null){
+            if (farmStockEntity.getId() == null) {
                 farmStockDao.insert(farmStockEntity);
-            }else {
+            } else {
                 farmStockDao.updateById(farmStockEntity);
             }
 
 
-
         }
 
 
-
-
-
     }
 
     //计算百分比
-    public  String CalculateUtil(BigDecimal a, BigDecimal b){
+    public String CalculateUtil(BigDecimal a, BigDecimal b) {
         String percent =
                 b == null ? "-" :
-                        b.compareTo(new BigDecimal(0)) == 0 ? "-":
+                        b.compareTo(new BigDecimal(0)) == 0 ? "-" :
                                 a == null ? "0.00%" :
-                                        a.multiply(new BigDecimal(100)).divide(b,2,BigDecimal.ROUND_HALF_UP) + "%";
+                                        a.multiply(new BigDecimal(100)).divide(b, 2, BigDecimal.ROUND_HALF_UP) + "%";
         return percent;
     }
 }

+ 27 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/utils/AnalysisConstant.java

@@ -0,0 +1,27 @@
+package com.huimv.manager.utils;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/7/29 14:08
+ */
+public interface AnalysisConstant {
+
+    String PROVINCE_FIELD = "farm.province";
+
+    String CITY_FIELD = "farm.city";
+
+    String COUNTY_FIELD = "farm.county";
+
+    String FARM_FIELD = "farm.farm_code";
+
+    String DAY_GROUP_FIELD = "dtd.statistic_date";
+
+    String MONTH_GROUP_FIELD = "DATE_FORMAT(dtd.statistic_date,'%Y-%m')";
+
+    String YEAR_GROUP_FIELD = "DATE_FORMAT(dtd.statistic_date,'%Y')";
+
+}

File diff ditekan karena terlalu besar
+ 25 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/utils/Constant.java


+ 5 - 5
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/resources/application-dev.yml

@@ -1,15 +1,15 @@
-     server:
-  port: 8220
+server:
+  port: 9000
 
 spring:
   datasource:
-    url: jdbc:mysql://192.168.1.7:3306/smart_eartag_data_platform?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+    url: jdbc:mysql://115.238.57.190:3306/smart_eartag_data_platform?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
     username: root
     password: hm123456
     driver-class-name: com.mysql.cj.jdbc.Driver
   jpa:
-#    hibernate:
-#      ddl-auto: update  #validate
+    #    hibernate:
+    #      ddl-auto: update  #validate
     database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
     show-sql: true
   servlet:

+ 103 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/resources/mapper/manager/DailyTabulateDataDao.xml

@@ -19,6 +19,109 @@
         <result property="stock3" column="stock3"/>
         <result property="stock4" column="stock4"/>
     </resultMap>
+    <select id="selectDay" resultType="com.huimv.manager.entity.vo.DailyVo">
+         SELECT
+             DATE_FORMAT( statistic_date,"%m-%d") ydate,
+             SUM(stock1) stock1,
+             SUM(stock2) stock2,
+             SUM(stock3) stock3 ,
+             SUM(stock_new) stockNew,
+             SUM(offline_no) offlineNo
+             FROM `daily_tabulate_data`
+         ${ew.customSqlSegment}
+
+    </select>
+    <select id="selectMonth" resultType="com.huimv.manager.entity.vo.DailyVo">
+       SELECT
+         DATE_FORMAT(statistic_date,"%Y-%m") ydate,
+         SUM(stock1) stock1,
+         SUM(stock2) stock2,
+         SUM(stock3) stock3 ,
+         SUM(stock_new) stockNew,
+         SUM(offline_no) offlineNo
+
+          FROM `daily_tabulate_data`
+
+        ${ew.customSqlSegment}
+    </select>
+    <select id="selectYear" resultType="com.huimv.manager.entity.vo.DailyVo">
+        SELECT
+         DATE_FORMAT(statistic_date,"%Y")  ydate,
+         SUM(stock1) stock1,
+         SUM(stock2) stock2,
+         SUM(stock3) stock3 ,
+         SUM(stock_new) stockNew,
+         SUM(offline_no) offlineNo
+
+          FROM `daily_tabulate_data`
+
+        ${ew.customSqlSegment}
+    </select>
+
+    <select id="getDayStockByRegion" resultType="com.huimv.manager.entity.vo.DayStockVo">
+        SELECT
+          <choose>
+              <when test="type == '1'.toString()">
+                  DATE_FORMAT(dtd.statistic_date,'%m-%d') date,
+              </when>
+              <when test="type == '2'.toString()">
+                  DATE_FORMAT(dtd.statistic_date,'%Y-%m') date,
+              </when>
+              <otherwise>
+                  DATE_FORMAT(dtd.statistic_date,'%Y') date,
+              </otherwise>
+          </choose>
+          SUM(dtd.stock_total) total
+        FROM daily_tabulate_data dtd
+        JOIN base_farm_info farm ON dtd.farm_code = farm.farm_code
+        ${ew.customSqlSegment}
+    </select>
+
+    <select id="getCityPigStock" resultType="com.huimv.manager.entity.vo.SunAreaStockVo">
+        SELECT region,total FROM
+        (SELECT
+        <choose>
+            <when test="type == 'farm.city'.toString() or type == 'farm.county'.toString()">
+                region.region_name region,
+            </when>
+            <otherwise>
+                farm.farm_name region,
+            </otherwise>
+        </choose>
+        SUM(dtd.stock_total) total
+        FROM
+        daily_tabulate_data dtd
+        JOIN base_farm_info farm ON dtd.farm_code = farm.farm_code
+        <choose>
+            <when test="type == 'farm.city'.toString()">
+                JOIN base_region region ON farm.city = region.region_code
+            </when>
+            <when test="type == 'farm.county'.toString()">
+                JOIN base_region region ON farm.county = region.region_code
+            </when>
+        </choose>
+        ${ew.customSqlSegment}
+        ) a group by region order by total desc
+    </select>
+
+
+    <select id="getMunicipalDayStock" resultType="com.huimv.manager.entity.vo.DayStockVo">
+        SELECT
+        DATE_FORMAT(dtd.statistic_date,'%Y-%m') date,SUM(dtd.stock_total) total
+        from daily_tabulate_data dtd
+        join base_farm_info farm on dtd.farm_code = farm.farm_code
+        ${ew.customSqlSegment}
+    </select>
+    <select id="counSowAll" resultType="com.huimv.manager.entity.vo.DailySowVo">
+        SELECT
+            SUM(stock_total) stockTotal,
+            SUM(sow_stock) sowStock,
+            SUM(stock1) stock1,
+            SUM(stock2) stock2,
+            SUM(stock4) stock4
+        ${ew.customSqlSegment}
+
+    </select>
 
 
 </mapper>

+ 78 - 3
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/test/java/com/huimv/manager/HuimvSmartEartagDataManagerTests.java

@@ -1,7 +1,17 @@
 package com.huimv.manager;
 
-import com.huimv.manager.entity.BasePigpenEntity;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.huimv.manager.entity.dto.DataAnalysisDto;
+import com.huimv.manager.entity.vo.DayStockVo;
+import com.huimv.manager.entity.vo.SunAreaStockVo;
 import com.huimv.manager.mapper.BasePigpenMapper;
+import com.huimv.manager.mapper.BaseRegionDao;
+import com.huimv.manager.mapper.DailyTabulateDataDao;
+import com.huimv.manager.utils.Constant;
+import org.apache.commons.lang.StringUtils;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -22,9 +32,74 @@ public class HuimvSmartEartagDataManagerTests {
     @Autowired
     private BasePigpenMapper basePigpenMapper;
 
+    @Autowired
+    private BaseRegionDao baseRegionDao;
+
+    @Autowired
+    private DailyTabulateDataDao dailyTabulateDataDao;
+
     @Test
     void contextLoads() {
-        List<BasePigpenEntity> basePigpenEntities = basePigpenMapper.selectList(null);
-        System.out.println(basePigpenEntities);
+//        List<BasePigpenEntity> basePigpenEntities = basePigpenMapper.selectList(null);
+//        System.out.println(basePigpenEntities);
+
+
+//        List<BaseRegionEntity> all = baseRegionDao.selectList(Wrappers.<BaseRegionEntity>lambdaQuery().eq(BaseRegionEntity::getParentCode, "001"));
+//        all.stream().filter()
+
+        DataAnalysisDto dataAnalysisDto = new DataAnalysisDto();
+        dataAnalysisDto.setRegionCode("001");
+        String start = dataAnalysisDto.getStart();
+        if (StringUtils.isEmpty(start)) {
+            start = DateUtil.format(DateUtil.offsetMonth(DateUtil.date(), -1), "yyyy-MM-dd");
+        }
+        String end = dataAnalysisDto.getEnd();
+        if (StringUtils.isEmpty(end)) {
+            end = DateUtil.format(DateUtil.date(), "yyyy-MM-dd");
+        }
+
+//        List<DayStockVo> dayStockVoList =  dailyTabulateDataDao.getDayStockByRegion(query);
+//        System.out.println(dayStockVoList);
+
+
+        QueryWrapper<SunAreaStockVo> sunAreaQuery = Wrappers.query();
+        sunAreaQuery.eq("farm.province", dataAnalysisDto.getRegionCode())
+                .ge("dtd.statistic_date", start)
+                .le("dtd.statistic_date", end)
+                .groupBy("farm.city", "dtd.statistic_date")
+                .orderByDesc("dtd.statistic_date");
+//        List<SunAreaStockVo> sunAreaStockVoList = dailyTabulateDataDao.getCityPigStock(sunAreaQuery);
+
+//        System.out.println(sunAreaStockVoList);
+
+    }
+
+    @Test
+    void testdata() {
+        DataAnalysisDto dataAnalysisDto = new DataAnalysisDto();
+        dataAnalysisDto.setRegionCode("002");
+        QueryWrapper<DayStockVo> query = Wrappers.query();
+        String start = dataAnalysisDto.getStart();
+        DateTime nowDate = DateUtil.date();
+        if (StringUtils.isEmpty(start)) {
+            start = DateUtil.format(DateUtil.offsetMonth(nowDate, -12), Constant.DATE_FORMAT_YM) + "-01";
+        } else {
+            start += "-01";
+        }
+        String end = dataAnalysisDto.getEnd();
+        if (StringUtils.isEmpty(end) || end.equals(DateUtil.format(nowDate, Constant.DATE_FORMAT_YM))) {
+            end = DateUtil.format(nowDate, Constant.DATE_FORMAT_YMD);
+        } else {
+            end = DateUtil.format(DateUtil.endOfMonth(DateUtil.parse(end, Constant.DATE_FORMAT_YM)),Constant.DATE_FORMAT_YMD);
+        }
+
+        query.eq("farm.city", dataAnalysisDto.getRegionCode())
+                .ge("dtd.statistic_date", start)
+                .le("dtd.statistic_date", end)
+                .groupBy("farm.city", "DATE_FORMAT(dtd.statistic_date,'%Y-%m')")
+                .orderByAsc("date");
+
+        List<DayStockVo> dayStockVoList = dailyTabulateDataDao.getMunicipalDayStock(query);
+        System.out.println(dayStockVoList);
     }
 }

+ 6 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/pom.xml

@@ -18,6 +18,12 @@
             <artifactId>httpclient</artifactId>
             <version>4.5.13</version>
         </dependency>
+        <!-- jwt -->
+        <dependency>
+            <groupId>com.auth0</groupId>
+            <artifactId>java-jwt</artifactId>
+            <version>3.8.3</version>
+        </dependency>
     </dependencies>
 
 

+ 33 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/configuration/InterceptorConfig.java

@@ -0,0 +1,33 @@
+package com.huimv.transmission.configuration;
+
+import com.huimv.transmission.interceptor.JWTInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * 注册验证token的拦截器
+ * @author yinhao
+ * @date 2021/4/19 20:41
+ * @version V1.0
+ */
+@Configuration
+public class InterceptorConfig implements WebMvcConfigurer {
+    @Bean
+    public JWTInterceptor jwtInterceptor(){
+        return new JWTInterceptor();
+    }
+
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        registry.addInterceptor(jwtInterceptor()).
+                excludePathPatterns("/getToken").
+                excludePathPatterns("/").
+                excludePathPatterns("/*.ico").
+                excludePathPatterns("/js/**").
+                excludePathPatterns("/img/**").
+                excludePathPatterns("/css/**").
+                addPathPatterns("/**");
+    }
+}

+ 65 - 9
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/controller/PigDataProcessingController.java

@@ -1,15 +1,26 @@
 package com.huimv.transmission.controller;
 
-import com.huimv.transmission.entity.form.EartagForm;
-import com.huimv.transmission.entity.form.PigStockForm;
+import com.huimv.transmission.entity.form.*;
 import com.huimv.transmission.result.R;
+import com.huimv.transmission.result.RRException;
+import com.huimv.transmission.service.DailyTabulateDataService;
 import com.huimv.transmission.service.DataPushService;
 import com.huimv.transmission.service.EartagDataService;
+import com.huimv.transmission.service.FarmEartagChangeService;
+import com.huimv.transmission.utils.Constant;
 import com.huimv.transmission.utils.PageUtils;
+import com.huimv.transmission.utils.TokenUtil;
+import org.apache.commons.codec.binary.Hex;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.nio.charset.StandardCharsets;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.Calendar;
+import java.util.Date;
+
 
 /**
  * <p>
@@ -30,22 +41,55 @@ public class PigDataProcessingController {
     @Autowired
     private EartagDataService eartagDataService;
 
+    @Autowired
+    private DailyTabulateDataService dailyTabulateDataService;
+
+    @Autowired
+    private FarmEartagChangeService farmEartagChangeService;
+
+
+    @GetMapping("/getAccessToken")
+    public R getAccessToken(@Validated TokenForm tokenForm) throws NoSuchAlgorithmException {
+
+        Long timestamp = tokenForm.getTimestamp();
+        try {
+            new Date(timestamp);
+        } catch (Exception e) {
+            throw new RRException("时间戳有误!", 10002);
+        }
+        MessageDigest md = MessageDigest.getInstance("MD5");
+        String data = tokenForm.getRandom() + ";" + timestamp;
+        String oneSign = Hex.encodeHexString(md.digest(data.getBytes(StandardCharsets.UTF_8)));
+        oneSign = oneSign + "zhejiangxumu";
+        String twoSign = Hex.encodeHexString(md.digest(oneSign.getBytes(StandardCharsets.UTF_8)));
+
+        if (!tokenForm.getSign().equals(twoSign)) {
+            throw new RRException("签名验证失败!", 10003);
+        }
+
+        String token = TokenUtil.sign(null);
+        Calendar calendar = Calendar.getInstance();
+        calendar.add(Calendar.HOUR_OF_DAY, 24);
+        Date expireTime = calendar.getTime();
+        return R.ok().put("accessToken", token).put("expireTime", expireTime);
+    }
+
     @GetMapping("/getPigStock")
     public R getPigStock(PigStockForm pigStockForm) {
-        PageUtils page = dataPushService.getPigStock(pigStockForm);
-        return R.ok().put("resultData",page);
+        PageUtils page = dailyTabulateDataService.getPigStock(pigStockForm);
+        return R.ok().put("resultData", page);
     }
 
     @GetMapping("/getNewPigStock")
-    public R getNewPigStock() {
-        PageUtils page =  dataPushService.getNewPigStock(1,10);
-        return R.ok().put("resultData",page);
+    public R getNewPigStock(PigStockForm pigStockForm) {
+        PageUtils page = farmEartagChangeService.getChangePigStock(pigStockForm, Constant.NEW_EARTAG_TYPE);
+        return R.ok().put("resultData", page);
     }
 
     @GetMapping("/getOffLinePigStock")
     public R getOffLinePigStock() {
-        PageUtils page =  dataPushService.getOffLinePigStock(1,10);
-        return R.ok().put("resultData",page);
+        PageUtils page = dataPushService.getOffLinePigStock(1, 10);
+        return R.ok().put("resultData", page);
     }
 
     @PostMapping("/recive")
@@ -59,4 +103,16 @@ public class PigDataProcessingController {
         PageUtils page = eartagDataService.getEartag(eartagForm);
         return R.ok().put("resultData", page);
     }
+
+    @GetMapping("/getEartagDetails")
+    public R getEartagDetails(@Validated EartagDetailForm eartagDetailForm) {
+        PageUtils page = eartagDataService.getEartagDetails(eartagDetailForm);
+        return R.ok().put("resultData", page);
+    }
+
+    @GetMapping("/getPigStockByDay")
+    public R getPigStockByDay(@Validated BaseForm baseForm) {
+        PageUtils page = dailyTabulateDataService.getPigStockByDay(baseForm);
+        return R.ok().put("resultData", page);
+    }
 }

+ 1 - 1
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/DailyTabulateDataEntity.java

@@ -82,6 +82,6 @@ public class DailyTabulateDataEntity implements Serializable {
     /**
      * 牧场编码
      */
-    private String farmId;
+    private String farmCode;
 
 }

+ 5 - 4
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/EartagDataEntity.java

@@ -114,14 +114,15 @@ public class EartagDataEntity implements Serializable {
      */
     private String tail;
 
-    /**
-     * 牧场编码
-     */
     private String farmCode;
-
     /**
      * 阶段
      */
     private Integer stage;
 
+    /**
+     * 区间运动量
+     */
+    private Integer sportGap;
+
 }

+ 13 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/form/BaseForm.java

@@ -1,8 +1,12 @@
 package com.huimv.transmission.entity.form;
 
+import cn.hutool.core.date.DateUtil;
+import com.huimv.transmission.utils.Constant;
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
 import java.util.Date;
 
 /**
@@ -39,4 +43,13 @@ public class BaseForm {
         this.pageNo = pageNo;
         this.pageSize = pageSize;
     }
+
+    public Date getEndDate() {
+        Date date = new Date();
+        if (Constant.SDF_YMD.format(endDate).equals(Constant.SDF_YMD.format(date))) {
+            return endDate = date;
+        } else {
+            return DateUtil.offsetDay(endDate, 1);
+        }
+    }
 }

+ 28 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/form/EartagDetailForm.java

@@ -0,0 +1,28 @@
+package com.huimv.transmission.entity.form;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/7/30 9:19
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class EartagDetailForm extends BaseForm implements Serializable {
+    private static final long serialVersionUID = 4639496303202356788L;
+
+    @NotBlank(message = "farmID不能为空!")
+    private String farmID;
+    /**
+     * 阶段
+     */
+    private Integer stage;
+}

+ 2 - 2
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/form/EartagForm.java

@@ -1,10 +1,9 @@
 package com.huimv.transmission.entity.form;
 
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
-import java.util.Date;
-
 /**
  * <p>
  *
@@ -13,6 +12,7 @@ import java.util.Date;
  * @author yinhao
  * @date 2021/7/27 17:06
  */
+@EqualsAndHashCode(callSuper = true)
 @Data
 public class EartagForm extends BaseForm implements Serializable {
 

+ 5 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/form/PigStockForm.java

@@ -1,6 +1,7 @@
 package com.huimv.transmission.entity.form;
 
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
 
@@ -12,6 +13,7 @@ import java.io.Serializable;
  * @author yinhao
  * @date 2021/7/27 20:14
  */
+@EqualsAndHashCode(callSuper = true)
 @Data
 public class PigStockForm extends BaseForm implements Serializable {
 
@@ -19,6 +21,9 @@ public class PigStockForm extends BaseForm implements Serializable {
 
     private Integer stage;
 
+    public PigStockForm() {
+    }
+
     public PigStockForm(Integer pageNo, Integer pageSize) {
         super(pageNo, pageSize);
     }

+ 30 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/form/TokenForm.java

@@ -0,0 +1,30 @@
+package com.huimv.transmission.entity.form;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/7/30 17:18
+ */
+@Data
+public class TokenForm implements Serializable {
+    private static final long serialVersionUID = -1959068300303938491L;
+
+    @NotNull(message = "随机数不能为空!")
+    private Integer random;
+
+    @NotNull(message = "时间戳不能为空!")
+    private Long timestamp;
+
+    @NotBlank(message = "签名不能为空!")
+    private String sign;
+
+}

+ 60 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/vo/DayPigStockVo.java

@@ -0,0 +1,60 @@
+package com.huimv.transmission.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/7/30 15:32
+ */
+@Data
+@JsonPropertyOrder({"date","farmID","stock1","stock2","stock3","stock4","newQuantity","offlineQuantity"})
+public class DayPigStockVo implements Serializable {
+    private static final long serialVersionUID = 6611629039599120627L;
+
+    /**
+     * 日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date date;
+
+    /**
+     * 牧场编码
+     */
+    private String farmID;
+    /**
+     * 母猪存栏
+     */
+    private Integer stock1;
+    /**
+     * 能繁母猪存栏
+     */
+    private Integer stock2;
+    /**
+     * 分娩舍母猪存栏
+     */
+    private Integer stock3;
+    /**
+     * 配怀舍母猪存栏
+     */
+    private Integer stock4;
+    /**
+     * 母猪新增
+     */
+    @JsonProperty("new_quantity")
+    private Integer newQuantity;
+    /**
+     * 母猪离线
+     */
+    @JsonProperty("offline_quantity")
+    private Integer offlineQuantity;
+}

+ 90 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/vo/EartagDetailVo.java

@@ -0,0 +1,90 @@
+package com.huimv.transmission.entity.vo;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 耳标具体信息vo
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/7/30 9:52
+ */
+@Data
+@JsonPropertyOrder({"farmID","time","eartagNo","firstTime","dayAge","dayAge2","earTemp","envTemp","exercise","bat","rssi","stage","pigpen","deviceCode"})
+public class EartagDetailVo implements Serializable {
+    private static final long serialVersionUID = 6647833319738689903L;
+
+    /**
+     * 牧场编码
+     */
+    private String farmID;
+    /**
+     * 采集时间
+     */
+    private Date time;
+    /**
+     * 耳标号
+     */
+    @JsonProperty("eartag_no")
+    private String eartagNo;
+    /**
+     * 配标时间
+     */
+    @JsonProperty("first_time")
+    private Date firstTime;
+    /**
+     * 配标日龄
+     */
+    @JsonProperty("day_age")
+    private Integer dayAge;
+    /**
+     * 日龄
+     */
+    @JsonProperty("day_age2")
+    private Integer dayAge2;
+    /**
+     * 耳根温度
+     */
+    @JsonProperty("ear_temp")
+    private Double earTemp;
+    /**
+     * 环境温度
+     */
+    @JsonProperty("env_temp")
+    private Double envTemp;
+    /**
+     * 运动量
+     */
+    private Integer exercise;
+    /**
+     * 电池电量
+     */
+    private Integer bat;
+    /**
+     * 信号强度
+     */
+    private Integer rssi;
+    /**
+     * 阶段
+     */
+    private Integer stage;
+    /**
+     * 栋舍
+     */
+    private String pigpen;
+    /**
+     * 采集器编码
+     */
+    @JsonProperty("device_code")
+    private String deviceCode;
+
+
+}

+ 48 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/interceptor/JWTInterceptor.java

@@ -0,0 +1,48 @@
+package com.huimv.transmission.interceptor;
+
+import com.alibaba.fastjson.JSONObject;
+import com.huimv.transmission.result.R;
+import com.huimv.transmission.utils.TokenUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.method.HandlerMethod;
+import org.springframework.web.servlet.HandlerInterceptor;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ *  jwt拦截器
+ * </p>
+ * @author yinhao
+ * @since 2021/4/19
+ */
+
+public class JWTInterceptor implements HandlerInterceptor {
+
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+        // 如果不是映射到方法,则直接通过
+        if (!(handler instanceof HandlerMethod)) {
+            return true;
+        }
+
+        if (response.getStatus() == 404 || response.getStatus() == 500) {
+            return false;
+        }
+
+
+        response.setContentType("application/json;charset=utf-8");
+
+        // 获取token
+        String accessToken = request.getParameter("accessToken");
+
+        if (StringUtils.isEmpty(accessToken) || !TokenUtil.verify(accessToken)) {
+            response.getWriter().write(JSONObject.toJSONString(R.error(401401,"无效令牌,请重新申请!")));
+            return false;
+        }
+        return true;
+    }
+
+}

+ 4 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/mapper/DailyTabulateDataDao.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.huimv.transmission.entity.DailyTabulateDataEntity;
 import com.huimv.transmission.entity.vo.DailyTabulateDataVo;
+import com.huimv.transmission.entity.vo.DayPigStockVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
@@ -22,4 +23,7 @@ import org.springframework.stereotype.Repository;
 public interface DailyTabulateDataDao extends BaseMapper<DailyTabulateDataEntity> {
 
     IPage<DailyTabulateDataVo> getPigStockPage(@Param("page") IPage<DailyTabulateDataVo> iPage,@Param(Constants.WRAPPER) LambdaQueryWrapper<DailyTabulateDataEntity> lambdaQuery);
+
+    IPage<DayPigStockVo> getPigStockByDay(@Param("page") IPage<DayPigStockVo> iPage, @Param(Constants.WRAPPER) LambdaQueryWrapper<DailyTabulateDataEntity> lambdaQuery);
+
 }

+ 7 - 3
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/mapper/EartagDataDao.java

@@ -1,28 +1,32 @@
 package com.huimv.transmission.mapper;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.huimv.transmission.entity.EartagDataEntity;
 import com.huimv.transmission.entity.NewAndOffLineEartagEntity;
 import com.huimv.transmission.entity.vo.EartagDataVo;
+import com.huimv.transmission.entity.vo.EartagDetailVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
 
 import java.util.List;
 
 /**
- * 
- * 
  * @author yinhao
  * @version ${version}
  * @date 2021-07-24 16:29:33
  */
 @Mapper
+@Repository
 public interface EartagDataDao extends BaseMapper<EartagDataEntity> {
 
     List<NewAndOffLineEartagEntity> selectChangeEartagList();
 
-    IPage<EartagDataVo> selectByConditions(@Param("page") IPage<EartagDataVo> ipage,@Param(Constants.WRAPPER) LambdaQueryWrapper<EartagDataEntity> lambdaQuery);
+    IPage<EartagDataVo> selectByConditions(@Param("page") IPage<EartagDataVo> ipage, @Param(Constants.WRAPPER) LambdaQueryWrapper<EartagDataEntity> lambdaQuery);
+
+    IPage<EartagDetailVo> selectEartagDetails(@Param("page") IPage<EartagDetailVo> iPage, @Param(Constants.WRAPPER) QueryWrapper<EartagDetailVo> query);
 }

+ 15 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/service/BaseService.java

@@ -0,0 +1,15 @@
+package com.huimv.transmission.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/7/30 16:09
+ */
+public interface BaseService extends IService {
+
+}

+ 6 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/service/DailyTabulateDataService.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.huimv.transmission.entity.DailyTabulateDataEntity;
+import com.huimv.transmission.entity.form.BaseForm;
 import com.huimv.transmission.entity.form.PigStockForm;
 import com.huimv.transmission.entity.vo.DailyTabulateDataVo;
 import com.huimv.transmission.utils.PageUtils;
@@ -25,5 +26,10 @@ public interface DailyTabulateDataService extends IService<DailyTabulateDataEnti
     PageUtils queryPage(Map<String, Object> params);
 
     IPage<DailyTabulateDataVo> getPigStockPage(PigStockForm pigStockForm);
+
+    PageUtils getPigStockByDay(BaseForm baseForm);
+
+    PageUtils getPigStock(PigStockForm pigStockForm);
+
 }
 

+ 5 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/service/EartagDataService.java

@@ -2,7 +2,9 @@ package com.huimv.transmission.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.huimv.transmission.entity.EartagDataEntity;
+import com.huimv.transmission.entity.form.EartagDetailForm;
 import com.huimv.transmission.entity.form.EartagForm;
+import com.huimv.transmission.entity.form.PigStockForm;
 import com.huimv.transmission.utils.PageUtils;
 
 
@@ -18,5 +20,8 @@ public interface EartagDataService extends IService<EartagDataEntity> {
     void handleNewAndOffLineEartag();
 
     PageUtils getEartag(EartagForm eartagForm);
+
+    PageUtils getEartagDetails(EartagDetailForm eartagDetailForm);
+
 }
 

+ 4 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/service/FarmEartagChangeService.java

@@ -3,7 +3,9 @@ package com.huimv.transmission.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.huimv.transmission.entity.FarmEartagChangeEntity;
+import com.huimv.transmission.entity.form.PigStockForm;
 import com.huimv.transmission.entity.vo.ChangeEartagDataVo;
+import com.huimv.transmission.utils.PageUtils;
 
 /**
  * <p>
@@ -15,4 +17,6 @@ import com.huimv.transmission.entity.vo.ChangeEartagDataVo;
  */
 public interface FarmEartagChangeService extends IService<FarmEartagChangeEntity> {
     IPage<ChangeEartagDataVo> getPigStockByChangeType(Integer currPage, Integer pageSize, Integer type);
+
+    PageUtils getChangePigStock(PigStockForm pigStockForm,Integer type);
 }

+ 15 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/service/impl/BaseServiceImpl.java

@@ -0,0 +1,15 @@
+package com.huimv.transmission.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.transmission.service.BaseService;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/7/30 16:12
+ */
+public class BaseServiceImpl extends ServiceImpl implements BaseService {
+}

+ 39 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/service/impl/DailyTabulateDataServiceImpl.java

@@ -8,13 +8,20 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import com.huimv.transmission.entity.BaseFarmInfoEntity;
 import com.huimv.transmission.entity.DailyTabulateDataEntity;
+import com.huimv.transmission.entity.form.BaseForm;
 import com.huimv.transmission.entity.form.PigStockForm;
 import com.huimv.transmission.entity.vo.DailyTabulateDataVo;
+import com.huimv.transmission.entity.vo.DayPigStockVo;
+import com.huimv.transmission.mapper.BaseFarmInfoDao;
 import com.huimv.transmission.mapper.DailyTabulateDataDao;
+import com.huimv.transmission.result.RRException;
 import com.huimv.transmission.service.DailyTabulateDataService;
 import com.huimv.transmission.utils.PageUtils;
 import com.huimv.transmission.utils.Query;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.Date;
@@ -30,6 +37,9 @@ import java.util.Map;
 @Service("dailyTabulateDataService")
 public class DailyTabulateDataServiceImpl extends ServiceImpl<DailyTabulateDataDao, DailyTabulateDataEntity> implements DailyTabulateDataService {
 
+    @Autowired
+    private BaseFarmInfoDao baseFarmInfoDao;
+
     @Override
     public PageUtils queryPage(Map<String, Object> params) {
         IPage<DailyTabulateDataEntity> page = this.page(
@@ -48,6 +58,35 @@ public class DailyTabulateDataServiceImpl extends ServiceImpl<DailyTabulateDataD
         lambdaQuery.eq(DailyTabulateDataEntity::getStatisticDate, yesterday);
 
         return baseMapper.getPigStockPage(iPage, lambdaQuery);
+    }
+
+    @Override
+    public PageUtils getPigStockByDay(BaseForm baseForm) {
+        String farmID = baseForm.getFarmID();
+        if (StringUtils.isNotEmpty(farmID)) {
+            EartagDataServiceImpl.checkFarmCode(farmID, baseFarmInfoDao);
+        }
 
+        LambdaQueryWrapper<DailyTabulateDataEntity> lambdaQuery = Wrappers.lambdaQuery();
+        lambdaQuery.eq(DailyTabulateDataEntity::getFarmCode, farmID)
+                .ge(baseForm.getStartDate() != null, DailyTabulateDataEntity::getStatisticDate, baseForm.getStartDate())
+                .le(baseForm.getEndDate() != null, DailyTabulateDataEntity::getStatisticDate, baseForm.getEndDate());
+
+        IPage<DayPigStockVo> iPage = new Page<>(baseForm.getPageNo(), baseForm.getPageSize());
+        IPage<DayPigStockVo> page = baseMapper.getPigStockByDay(iPage, lambdaQuery);
+
+        return new PageUtils(page);
+    }
+
+    @Override
+    public PageUtils getPigStock(PigStockForm pigStockForm) {
+        LambdaQueryWrapper<DailyTabulateDataEntity> lambdaQuery = Wrappers.lambdaQuery();
+        lambdaQuery.eq(StringUtils.isNotEmpty(pigStockForm.getFarmID()), DailyTabulateDataEntity::getFarmCode, pigStockForm.getFarmID())
+                .ge(pigStockForm.getStartDate() != null, DailyTabulateDataEntity::getStatisticDate, pigStockForm.getStartDate())
+                .le(pigStockForm.getEndDate() != null, DailyTabulateDataEntity::getStatisticDate, pigStockForm.getEndDate());
+
+        IPage<DailyTabulateDataVo> iPage = new Page<>(pigStockForm.getPageNo(), pigStockForm.getPageSize());
+        IPage<DailyTabulateDataVo> page = baseMapper.getPigStockPage(iPage, lambdaQuery);
+        return new PageUtils(page);
     }
 }

+ 37 - 4
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/service/impl/EartagDataServiceImpl.java

@@ -2,6 +2,7 @@ package com.huimv.transmission.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -9,8 +10,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.huimv.transmission.entity.BaseFarmInfoEntity;
 import com.huimv.transmission.entity.EartagDataEntity;
 import com.huimv.transmission.entity.NewAndOffLineEartagEntity;
+import com.huimv.transmission.entity.form.EartagDetailForm;
 import com.huimv.transmission.entity.form.EartagForm;
 import com.huimv.transmission.entity.vo.EartagDataVo;
+import com.huimv.transmission.entity.vo.EartagDetailVo;
 import com.huimv.transmission.mapper.BaseFarmInfoDao;
 import com.huimv.transmission.mapper.EartagDataDao;
 import com.huimv.transmission.mapper.FarmEartagChangeDao;
@@ -87,11 +90,9 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataDao, EartagData
 
         String farmID = eartagForm.getFarmID();
         if (StringUtils.isNotEmpty(farmID)) {
-            Integer count = baseFarmInfoDao.selectCount(Wrappers.<BaseFarmInfoEntity>lambdaQuery().eq(BaseFarmInfoEntity::getFarmCode, farmID).last("limit 1"));
-            if (count <= 0) {
-                throw new RRException("farmID不存在,请检查!", 10001);
-            }
+            checkFarm(farmID);
         }
+
         String eartag = eartagForm.getEartag();
         if (StringUtils.isNotEmpty(eartag)) {
             int count = count(Wrappers.<EartagDataEntity>lambdaQuery().eq(EartagDataEntity::getEartagNo, eartag).last("limit 1"));
@@ -112,4 +113,36 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataDao, EartagData
         IPage<EartagDataVo> page = baseMapper.selectByConditions(ipage, lambdaQuery);
         return new PageUtils(page);
     }
+
+    @Override
+    public PageUtils getEartagDetails(EartagDetailForm eartagDetailForm) {
+
+        String farmID = eartagDetailForm.getFarmID();
+        if (StringUtils.isNotEmpty(farmID)) {
+            checkFarm(farmID);
+        }
+
+        QueryWrapper<EartagDetailVo> query = Wrappers.query();
+        query.eq("eartag.farm_code", farmID)
+                .ge(eartagDetailForm.getStartDate() != null, "eartag.time", eartagDetailForm.getStartDate())
+                .le(eartagDetailForm.getEndDate() != null, "eartag.time", eartagDetailForm.getEndDate())
+                .eq(eartagDetailForm.getStage() != null, "eartag.stage", eartagDetailForm.getStage());
+
+        IPage<EartagDetailVo> iPage = new Page<>(eartagDetailForm.getPageNo(), eartagDetailForm.getPageSize());
+        IPage<EartagDetailVo> page = baseMapper.selectEartagDetails(iPage, query);
+
+        return new PageUtils(page);
+    }
+
+
+    private void checkFarm(String farmID) {
+        checkFarmCode(farmID, baseFarmInfoDao);
+    }
+
+    static void checkFarmCode(String farmID, BaseFarmInfoDao baseFarmInfoDao) {
+        Integer count = baseFarmInfoDao.selectCount(Wrappers.<BaseFarmInfoEntity>lambdaQuery().eq(BaseFarmInfoEntity::getFarmCode, farmID).last("limit 1"));
+        if (count <= 0) {
+            throw new RRException("farmID不存在,请检查!", 10001);
+        }
+    }
 }

+ 27 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/service/impl/FarmEartagChangeServiceImpl.java

@@ -6,9 +6,16 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.huimv.transmission.entity.FarmEartagChangeEntity;
+import com.huimv.transmission.entity.form.PigStockForm;
 import com.huimv.transmission.entity.vo.ChangeEartagDataVo;
+import com.huimv.transmission.mapper.BaseFarmInfoDao;
+import com.huimv.transmission.mapper.EartagDataDao;
 import com.huimv.transmission.mapper.FarmEartagChangeDao;
+import com.huimv.transmission.service.EartagDataService;
 import com.huimv.transmission.service.FarmEartagChangeService;
+import com.huimv.transmission.utils.PageUtils;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 /**
@@ -22,6 +29,12 @@ import org.springframework.stereotype.Service;
 @Service("farmEartagChangeService")
 public class FarmEartagChangeServiceImpl extends ServiceImpl<FarmEartagChangeDao, FarmEartagChangeEntity> implements FarmEartagChangeService {
 
+    @Autowired
+    private BaseFarmInfoDao baseFarmInfoDao;
+
+    @Autowired
+    private EartagDataService eartagDataService;
+
     @Override
     public IPage<ChangeEartagDataVo> getPigStockByChangeType(Integer currPage, Integer pageSize, Integer type) {
         IPage<ChangeEartagDataVo> iPage = new Page<>(currPage, pageSize);
@@ -29,4 +42,18 @@ public class FarmEartagChangeServiceImpl extends ServiceImpl<FarmEartagChangeDao
         lambdaQuery.eq(FarmEartagChangeEntity::getChangeType, type);
         return baseMapper.getPigStockByChangeType(iPage, lambdaQuery);
     }
+
+    @Override
+    public PageUtils getChangePigStock(PigStockForm pigStockForm, Integer type) {
+        String farmID = pigStockForm.getFarmID();
+        if (StringUtils.isNotEmpty(farmID)) {
+            EartagDataServiceImpl.checkFarmCode(farmID, baseFarmInfoDao);
+        }
+
+//        LambdaQueryWrapper<FarmEartagChangeEntity> lambdaQuery = Wrappers.lambdaQuery();
+//        lambdaQuery.eq(StringUtils.isNotEmpty(farmID), FarmEartagChangeEntity::getFarmId, farmID)
+//                .ge(pigStockForm.getStartDate() != null,)
+//                .eq(FarmEartagChangeEntity::getChangeType, type)
+        return null;
+    }
 }

File diff ditekan karena terlalu besar
+ 28 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/utils/Constant.java


+ 53 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/utils/TokenUtil.java

@@ -0,0 +1,53 @@
+package com.huimv.transmission.utils;
+
+import cn.hutool.core.date.DateUtil;
+import com.auth0.jwt.JWT;
+import com.auth0.jwt.JWTVerifier;
+import com.auth0.jwt.algorithms.Algorithm;
+import com.auth0.jwt.interfaces.DecodedJWT;
+
+import java.util.Date;
+
+public class TokenUtil {
+
+    private static final long EXPIRE_TIME =  24L * 60L * 60L * 1000L;  //有效时长
+    private static final String TOKEN_SECRET = "ben";       // 秘钥
+
+    /**
+     * 签名 生成
+     *
+     * @parm userName
+     */
+    public static String sign(String userName) {
+        String token = null;
+        try {
+            Date expiresAt = new Date(System.currentTimeMillis() + EXPIRE_TIME);
+            token = JWT.create()
+                    .withIssuer("auth0")
+                    .withClaim("userName", userName)
+                    .withExpiresAt(expiresAt)
+                    //使用HMAC256算法加密
+                    .sign(Algorithm.HMAC256(TOKEN_SECRET));
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return token;
+    }
+
+    /**
+     * 签名验证
+     *
+     * @param token
+     */
+    public static boolean verify(String token) {
+        try {
+            JWTVerifier verifier = JWT.require(Algorithm.HMAC256(TOKEN_SECRET))
+                    .withIssuer("auth0").build();
+            DecodedJWT jwt = verifier.verify(token);
+            System.out.println("TOKEN过期时间:" + DateUtil.format(jwt.getExpiresAt(), "yyyy-MM-dd HH:mm:ss"));
+            return true;
+        } catch (Exception e) {
+            return false;
+        }
+    }
+}

+ 2 - 2
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/resources/application-dev.yml

@@ -1,9 +1,9 @@
 server:
-  port: 8220
+  port: 9700
 
 spring:
   datasource:
-    url: jdbc:mysql://192.168.1.7:3306/smart_eartag_data_platform?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+    url: jdbc:mysql://115.238.57.190:3306/smart_eartag_data_platform?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
     username: root
     password: hm123456
     driver-class-name: com.mysql.cj.jdbc.Driver

+ 15 - 1
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/resources/mapper/transmission/DailyTabulateDataDao.xml

@@ -8,11 +8,25 @@
     <select id="getPigStockPage" resultType="com.huimv.transmission.entity.vo.DailyTabulateDataVo">
         SELECT
           farm_code farmID,
+          statistic_date time,
           stock_total quantity,
           stock_new new_count,
           offline_no eliminate,
-          statistic_date time
         FROM daily_tabulate_data
         ${ew.customSqlSegment}
     </select>
+
+    <select id="getPigStockByDay" resultType="com.huimv.transmission.entity.vo.DayPigStockVo">
+        SELECT
+          statistic_date date,
+          farm_code farmID,
+          stock1,
+          stock2,
+          stock3,
+          stock4,
+          stock_new new_quantity,
+          offline_no offline_quantity
+        FROM daily_tabulate_data dtd
+        ${ew.customSqlSegment}
+    </select>
 </mapper>

+ 25 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/resources/mapper/transmission/EartagDataDao.xml

@@ -74,5 +74,30 @@
         ${ew.customSqlSegment}
     </select>
 
+    <select id="selectEartagDetails" resultType="com.huimv.transmission.entity.vo.EartagDetailVo">
+        SELECT
+          eartag.farm_code farmID,
+          eartag.time,
+          eartag.eartag_no,
+          er.register_date first_time,
+          eartag.day_age,
+          eartag.day_age2,
+          eartag.ear_temp,
+          eartag.env_temp,
+          eartag.exercise,
+          eartag.bat,
+          eartag.rssi,
+          eartag.stage,
+          CONCAT(bp1.pigpen_name,bp2.pigpen_name) pigpen,
+          eartag.device_code
+        FROM
+          eartag_data eartag
+        JOIN collector_register cr ON eartag.device_code = cr.device_code
+        JOIN base_pigpen bp1 ON cr.pigpen_id = bp1.id
+        JOIN base_pigpen bp2 ON cr.unit_id = bp2.id
+        JOIN eartag_register er ON eartag.eartag_no = er.eartag_no
+        ${ew.customSqlSegment}
+    </select>
+
 
 </mapper>