Jelajahi Sumber

Merge remote-tracking branch 'origin/master'

yang 3 tahun lalu
induk
melakukan
4dcefb42c3
49 mengubah file dengan 1314 tambahan dan 107 penghapusan
  1. 1 1
      smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/resources/application-dev.yml
  2. 9 1
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/Main.java
  3. 43 2
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/controller/CollectorRegisterController.java
  4. 20 14
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/controller/DailyTabulateDataController.java
  5. 2 1
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/controller/DataAnalysisController.java
  6. 1 1
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/controller/EartagDataController.java
  7. 11 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/controller/FarmStockController.java
  8. 85 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/controller/RegionStockDayController.java
  9. 5 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/entity/CollectorRegisterEntity.java
  10. 80 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/entity/RegionStockDayEntity.java
  11. 44 20
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/entity/dto/DataAnalysisDto.java
  12. 3 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/entity/vo/EartagDataCountVo.java
  13. 19 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/mapper/RegionStockDayDao.java
  14. 5 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/CollectorRegisterService.java
  15. 3 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/DailyTabulateDataService.java
  16. 3 1
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/DataAnalysisService.java
  17. 1 1
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/EartagDataService.java
  18. 4 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/FarmStockService.java
  19. 20 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/RegionStockDayService.java
  20. 81 6
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/impl/CollectorRegisterServiceImpl.java
  21. 30 2
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/impl/DailyTabulateDataServiceImpl.java
  22. 3 2
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/impl/DataAnalysisServiceImpl.java
  23. 18 4
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/impl/EartagDataServiceImpl.java
  24. 2 2
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/impl/EnvironmentDataServiceImpl.java
  25. 464 2
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/impl/FarmStockServiceImpl.java
  26. 34 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/impl/RegionStockDayServiceImpl.java
  27. 7 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/utils/Constant.java
  28. 1 1
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/resources/application-dev.yml
  29. 1 1
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/resources/mapper/manager/EartagDataDao.xml
  30. 25 0
      smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/resources/mapper/manager/RegionStockDayDao.xml
  31. 1 1
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/configuration/InterceptorConfig.java
  32. 54 13
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/controller/PigDataProcessingController.java
  33. 2 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/FarmEartagChangeEntity.java
  34. 4 5
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/form/BaseForm.java
  35. 33 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/form/NewAndOffLineForm.java
  36. 4 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/form/PigStockForm.java
  37. 3 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/vo/ChangeEartagDataVo.java
  38. 28 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/entity/vo/OffLineEartagsVo.java
  39. 2 1
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/interceptor/JWTInterceptor.java
  40. 4 1
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/mapper/EartagDataDao.java
  41. 4 1
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/service/FarmEartagChangeService.java
  42. 4 2
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/service/impl/DailyTabulateDataServiceImpl.java
  43. 5 1
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/service/impl/EartagDataServiceImpl.java
  44. 79 8
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/service/impl/FarmEartagChangeServiceImpl.java
  45. 7 7
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/task/DataProcessingTask.java
  46. 1 1
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/utils/TokenUtil.java
  47. 2 0
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/resources/application-dev.yml
  48. 1 1
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/resources/mapper/transmission/DailyTabulateDataDao.xml
  49. 51 3
      smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/resources/mapper/transmission/EartagDataDao.xml

+ 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:

+ 9 - 1
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/Main.java

@@ -22,9 +22,17 @@ public class Main {
         long cal1 = System.currentTimeMillis();
         //执行代码
         Calendar calendar = Calendar.getInstance();
-        calendar.add(Calendar.MONTH, -1);
         Date time = calendar.getTime();
+        int month = time.getMonth();
+        System.out.println(month);
+//        System.out.println(time);
+        calendar.add(Calendar.MONTH, -1);
+        Date time2 = calendar.getTime();
+//        System.out.println(time2);
+        int i = calendar.get(Calendar.MONTH);
+        System.out.println(i);
         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"));

+ 43 - 2
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/controller/CollectorRegisterController.java

@@ -1,12 +1,18 @@
  package com.huimv.manager.controller;
 
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.huimv.manager.entity.BasePigpenEntity;
 import com.huimv.manager.entity.EartagDataEntity;
+import com.huimv.manager.mapper.BasePigpenDao;
+import com.huimv.manager.mapper.BasePigpenMapper;
 import com.huimv.manager.result.RRException;
+import com.huimv.manager.service.BasePigpenService;
 import com.huimv.manager.service.EartagDataService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -33,6 +39,8 @@ public class CollectorRegisterController {
     @Autowired
     private EartagDataService eartagDataService;
 
+    @Autowired
+    private BasePigpenService basePigpenService;
     /**
      * 列表
      */
@@ -52,8 +60,31 @@ public class CollectorRegisterController {
     @RequestMapping("/info/{id}")
     public R info(@PathVariable("id") Integer id){
 		CollectorRegisterEntity collectorRegister = collectorRegisterService.getById(id);
-
-        return R.ok().put("collectorRegister", collectorRegister);
+        BasePigpenEntity pigpen = basePigpenService.getById(collectorRegister.getPigpenId());
+        BasePigpenEntity unit = basePigpenService.getById(collectorRegister.getUnitId());
+        Map map = new HashMap();
+        map.put("acqStatus",collectorRegister.getAcqStatus());
+        map.put("canStatus",collectorRegister.getCanStatus());
+        map.put("countyCode",collectorRegister.getCountyCode());
+        map.put("countyName",collectorRegister.getCountyName());
+        map.put("delStatus",collectorRegister.getDelStatus());
+        map.put("deviceCode",collectorRegister.getDeviceCode());
+        map.put("farmCode",collectorRegister.getFarmCode());
+        map.put("farmName",collectorRegister.getFarmName());
+        map.put("id",collectorRegister.getId());
+        map.put("lastTime",collectorRegister.getLastTime());
+        map.put("networkStatus",collectorRegister.getNetworkStatus());
+        map.put("pigpenId",collectorRegister.getPigpenId());
+        map.put("port",collectorRegister.getPort());
+        map.put("registerTime",collectorRegister.getRegisterTime());
+        map.put("serverIp",collectorRegister.getServerIp());
+        map.put("stage",collectorRegister.getStage());
+        map.put("typeF",collectorRegister.getTypeF());
+        map.put("unitId",collectorRegister.getUnitId());
+        map.put("registeCode",collectorRegister.getRegisteCode());
+        map.put("pigpenName",pigpen.getPigpenName());
+        map.put("unitName",unit.getPigpenName());
+        return R.ok().put("collectorRegister", map);
     }
 
     /**
@@ -108,6 +139,16 @@ public class CollectorRegisterController {
         return R.ok().put("data", map);
     }
 
+    @GetMapping("/everyStatusCollectors")
+    public R selectEveryStatusCollectors(@RequestParam("farmCode") String farmCode) {
+        return collectorRegisterService.selectEveryStatusCollectors(farmCode);
+    }
+
+    @GetMapping("/selectPcEveryStatusCollectors")
+    public R selectEveryStatusCollectors() {
+        return collectorRegisterService.selectPcEveryStatusCollectors();
+    }
+
 
 
 }

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

@@ -1,4 +1,4 @@
- package com.huimv.manager.controller;
+package com.huimv.manager.controller;
 
 import java.util.Arrays;
 import java.util.List;
@@ -32,8 +32,8 @@ public class DailyTabulateDataController {
      * 列表
      */
     @RequestMapping("/listByFarm")
-    public R listByFarm(@RequestParam Map<String, Object> params){
-         DailyTabulateDataEntity dataEntity = dailyTabulateDataService.listByFarm(params);
+    public R listByFarm(@RequestParam Map<String, Object> params) {
+        DailyTabulateDataEntity dataEntity = dailyTabulateDataService.listByFarm(params);
 
         return R.ok().put("page", dataEntity);
     }
@@ -42,7 +42,7 @@ public class DailyTabulateDataController {
      * 列表
      */
     @RequestMapping("/list")
-    public R list(@RequestParam Map<String, Object> params){
+    public R list(@RequestParam Map<String, Object> params) {
         PageUtils page = dailyTabulateDataService.queryPage(params);
 
         return R.ok().put("page", page);
@@ -52,8 +52,8 @@ public class DailyTabulateDataController {
      * 信息
      */
     @RequestMapping("/info/{id}")
-    public R info(@PathVariable("id") Integer id){
-		DailyTabulateDataEntity dailyTabulateData = dailyTabulateDataService.getById(id);
+    public R info(@PathVariable("id") Integer id) {
+        DailyTabulateDataEntity dailyTabulateData = dailyTabulateDataService.getById(id);
 
         return R.ok().put("dailyTabulateData", dailyTabulateData);
     }
@@ -62,8 +62,8 @@ public class DailyTabulateDataController {
      * 保存
      */
     @RequestMapping("/save")
-    public R save(@RequestBody DailyTabulateDataEntity dailyTabulateData){
-		dailyTabulateDataService.save(dailyTabulateData);
+    public R save(@RequestBody DailyTabulateDataEntity dailyTabulateData) {
+        dailyTabulateDataService.save(dailyTabulateData);
 
         return R.ok();
     }
@@ -72,8 +72,8 @@ public class DailyTabulateDataController {
      * 修改
      */
     @RequestMapping("/update")
-    public R update(@RequestBody DailyTabulateDataEntity dailyTabulateData){
-		dailyTabulateDataService.updateById(dailyTabulateData);
+    public R update(@RequestBody DailyTabulateDataEntity dailyTabulateData) {
+        dailyTabulateDataService.updateById(dailyTabulateData);
 
         return R.ok();
     }
@@ -82,8 +82,8 @@ public class DailyTabulateDataController {
      * 删除
      */
     @RequestMapping("/delete")
-    public R delete(@RequestBody Integer[] ids){
-		dailyTabulateDataService.removeByIds(Arrays.asList(ids));
+    public R delete(@RequestBody Integer[] ids) {
+        dailyTabulateDataService.removeByIds(Arrays.asList(ids));
 
         return R.ok();
     }
@@ -92,7 +92,7 @@ public class DailyTabulateDataController {
      * 存栏变化
      */
     @RequestMapping("/countAllChange")
-    public R countAll(@RequestParam Map<String, Object> params){
+    public R countAll(@RequestParam Map<String, Object> params) {
         List list = dailyTabulateDataService.countAllChange(params);
 
         return R.ok().put("page", list);
@@ -102,10 +102,16 @@ public class DailyTabulateDataController {
      * 母猪总存栏等
      */
     @RequestMapping("/countAllsow")
-    public R countAllsow(@RequestParam Map<String, Object> params){
+    public R countAllsow(@RequestParam Map<String, Object> params) {
         Map list = dailyTabulateDataService.countAllsow(params);
 
         return R.ok().put("data", list);
     }
 
+
+    @GetMapping("/everyDaySowStock")
+    public R everydaySowTotalStockByFarmCode(@RequestParam("farmCode") String farmCode) {
+        return dailyTabulateDataService.selectEverydaySowTotalStockByFarmCode(farmCode);
+    }
+
 }

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

@@ -7,6 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.text.ParseException;
 
 
 /**
@@ -26,7 +27,7 @@ public class DataAnalysisController {
     private DataAnalysisService dataAnalysisService;
 
     @PostMapping("/getPigStockByRegionCode")
-    public R getDayPigStockByRegionCode(@Validated @RequestBody DataAnalysisDto dataAnalysisDto) {
+    public R getDayPigStockByRegionCode(@Validated @RequestBody DataAnalysisDto dataAnalysisDto) throws ParseException {
         return dataAnalysisService.getDayPigStockByRegionCode(dataAnalysisDto);
     }
 

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

@@ -85,7 +85,7 @@ public class EartagDataController {
      */
     @RequestMapping("/countByTime")
     public R countByTime(@RequestParam Map<String, Object> params){
-       List list =  eartagDataService.countByTime(params);
+        Map list =  eartagDataService.countByTime(params);
 
         return R.ok().put("data",list);
     }

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

@@ -8,6 +8,7 @@ import com.huimv.manager.result.R;
 import com.huimv.manager.service.FarmStockService;
 import com.huimv.manager.utils.PageUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.web.bind.annotation.*;
 
 
@@ -53,6 +54,16 @@ public class FarmStockController {
          return R.ok().put("page", list);
      }
 
+
+     /*
+     * 定时更新regionStockDay表
+     */
+     @Scheduled(cron = "1 10 * * * ?")
+    public void updateRegionStockDay(){
+         farmStockService.updateRegionStockDay();
+
+    }
+
     /**
      * 信息
      */

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

@@ -0,0 +1,85 @@
+ package com.huimv.manager.controller;
+
+import java.util.Arrays;
+import java.util.Map;
+
+import com.huimv.manager.entity.RegionStockDayEntity;
+import com.huimv.manager.result.R;
+import com.huimv.manager.service.RegionStockDayService;
+import com.huimv.manager.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;
+
+
+
+
+
+/**
+ * 
+ *
+ * @author yinhao
+ * @version ${version}
+ * @date 2021-08-05 18:46:23
+ */
+@RestController
+@RequestMapping("management/regionstockday")
+public class RegionStockDayController {
+    @Autowired
+    private RegionStockDayService regionStockDayService;
+
+    /**
+     * 列表
+     */
+    @RequestMapping("/list")
+    public R list(@RequestParam Map<String, Object> params){
+        PageUtils page = regionStockDayService.queryPage(params);
+
+        return R.ok().put("page", page);
+    }
+
+
+    /**
+     * 信息
+     */
+    @RequestMapping("/info/{id}")
+    public R info(@PathVariable("id") Integer id){
+		RegionStockDayEntity regionStockDay = regionStockDayService.getById(id);
+
+        return R.ok().put("regionStockDay", regionStockDay);
+    }
+
+    /**
+     * 保存
+     */
+    @RequestMapping("/save")
+    public R save(@RequestBody RegionStockDayEntity regionStockDay){
+		regionStockDayService.save(regionStockDay);
+
+        return R.ok();
+    }
+
+    /**
+     * 修改
+     */
+    @RequestMapping("/update")
+    public R update(@RequestBody RegionStockDayEntity regionStockDay){
+		regionStockDayService.updateById(regionStockDay);
+
+        return R.ok();
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping("/delete")
+    public R delete(@RequestBody Integer[] ids){
+		regionStockDayService.removeByIds(Arrays.asList(ids));
+
+        return R.ok();
+    }
+
+}

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

@@ -26,6 +26,11 @@ public class CollectorRegisterEntity implements Serializable {
     private String deviceCode;
 
     /**
+     * 盒子的芯片编码
+     */
+    private String registeCode;
+
+    /**
      * 地县编码
      */
     private String countyCode;

+ 80 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/entity/RegionStockDayEntity.java

@@ -0,0 +1,80 @@
+package com.huimv.manager.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 
+ * 
+ * @author yinhao
+ * @version ${version}
+ * @date 2021-08-05 18:46:23
+ */
+@Data
+@TableName("region_stock_day")
+public class RegionStockDayEntity implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 
+	 */
+	@TableId
+	private Integer id;
+	/**
+	 * 行政区划代码
+	 */
+	private String regionCode;
+	/**
+	 * 行政区划名称
+	 */
+	private String regionName;
+	/**
+	 * 母猪总存栏
+	 */
+	private Integer sowTotalStock;
+	/**
+	 * 母猪新增
+	 */
+	private Integer eartagNew;
+	/**
+	 * 耳标离线
+	 */
+	private Integer eartagOffone;
+	/**
+	 * 能繁母猪存栏
+	 */
+	private Integer sowStock;
+	/**
+	 * 配怀存栏
+	 */
+	private Integer stock1;
+	/**
+	 * 分娩存栏
+	 */
+	private Integer stock2;
+	/**
+	 * 空怀存栏
+	 */
+	private Integer stock3;
+	/**
+	 * 后备存栏
+	 */
+	private Integer stock4;
+	/**
+	 * 公猪存栏
+	 */
+	private Integer stock5;
+	/**
+	 * 日期
+	 */
+	private Integer date;
+	/**
+	 * 上级行政区划代码
+	 */
+	private String parentCode;
+
+}

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

@@ -1,5 +1,6 @@
 package com.huimv.manager.entity.dto;
 
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import com.huimv.manager.utils.Constant;
 import lombok.Data;
@@ -7,6 +8,7 @@ import org.apache.commons.lang.StringUtils;
 import org.hibernate.validator.constraints.Range;
 
 import javax.validation.constraints.NotBlank;
+import java.text.ParseException;
 import java.util.Date;
 
 /**
@@ -27,7 +29,7 @@ public class DataAnalysisDto {
 
     private String end;
 
-    @Range(min = 1, max = 3,message = "请传递指定的type参数!")
+    @Range(min = 1, max = 3, message = "请传递指定的type参数!")
     private Integer type;
 
     public String getStart() {
@@ -47,47 +49,69 @@ public class DataAnalysisDto {
     }
 
 
-    public String getDayStart() {
-        if (StringUtils.isEmpty(start)) {
+    public String getDayStart() throws ParseException {
+        if (StringUtils.isEmpty(start) && StringUtils.isEmpty(end)) {
             return Constant.SDF_YMD.format(DateUtil.offsetMonth(DateUtil.date(), -1));
+        } else if (StringUtils.isEmpty(start) && StringUtils.isNotEmpty(end)) {
+            return Constant.SDF_YMD.format(DateUtil.offsetMonth(Constant.SDF_YMD.parse(end), -1));
+        } else {
+            return start;
         }
-        return start;
     }
 
-    public String getDayEnd() {
-        if (StringUtils.isEmpty(end)) {
-            return Constant.SDF_YMD.format(new Date());
+    public String getDayEnd() throws ParseException {
+        Date nowDate = new Date();
+        if (StringUtils.isEmpty(end) && StringUtils.isEmpty(start)) {
+            return Constant.SDF_YMD.format(nowDate);
+        } else if (StringUtils.isEmpty(end) && StringUtils.isNotEmpty(start)) {
+            DateTime time = DateUtil.offsetMonth(Constant.SDF_YMD.parse(start), 1);
+            return time.getTime() > nowDate.getTime() ? Constant.SDF_YMD.format(nowDate) : Constant.SDF_YMD.format(time);
+        } else {
+            return end;
         }
-        return end;
     }
 
-    public String getMonthStart() {
-        if (StringUtils.isEmpty(start)) {
+    public String getMonthStart() throws ParseException {
+        if (StringUtils.isEmpty(start) && StringUtils.isEmpty(end)) {
             return Constant.SDF_YM.format(DateUtil.offsetMonth(new Date(), -12)) + "-01";
+        } else if (StringUtils.isEmpty(start) && StringUtils.isNotEmpty(end)) {
+            return Constant.SDF_YM.format(DateUtil.offsetMonth(Constant.SDF_YM.parse(end), -12)) + "-01";
+        } else {
+            return start + "-01";
         }
-        return start + "-01";
     }
 
-    public String getMonthEnd() {
+    public String getMonthEnd() throws ParseException {
         Date nowDate = new Date();
-        if (StringUtils.isEmpty(end) || end.equals(Constant.SDF_YM.format(nowDate))) {
+        if (Constant.SDF_YM.format(nowDate).equals(end) || (StringUtils.isEmpty(end) && StringUtils.isEmpty(start))) {
             return Constant.SDF_YMD.format(nowDate);
+        } else if (StringUtils.isEmpty(end) && StringUtils.isNotEmpty(start)) {
+            DateTime time = DateUtil.offsetMonth(Constant.SDF_YM.parse(start), 12);
+            return time.getTime() > nowDate.getTime() ? Constant.SDF_YMD.format(nowDate) : Constant.SDF_YMD.format(time);
+        } else {
+            return Constant.SDF_YMD.format(DateUtil.endOfMonth(DateUtil.parse(end, Constant.DATE_FORMAT_YM)));
         }
-        return Constant.SDF_YMD.format(DateUtil.endOfMonth(DateUtil.parse(end, Constant.DATE_FORMAT_YM)));
     }
 
-    public String getYearStart() {
-        if (StringUtils.isEmpty(start)) {
+    public String getYearStart() throws ParseException {
+        if (StringUtils.isEmpty(start) && StringUtils.isEmpty(end)) {
             return DateUtil.offsetMonth(new Date(), -60).year() + "-01-01";
+        } else if (StringUtils.isEmpty(start) && StringUtils.isNotEmpty(end)) {
+            return DateUtil.offsetMonth(Constant.SDF_Y.parse(end), -60).year() + "-01-01";
+        } else {
+            return start + "-01-01";
         }
-        return start + "-01-01";
     }
 
-    public String getYearEnd() {
+    public String getYearEnd() throws ParseException {
         Date nowDate = new Date();
-        if (StringUtils.isEmpty(end) || end.equals(DateUtil.format(nowDate, Constant.DATE_FORMAT_Y))) {
+        if (Constant.SDF_Y.format(nowDate).equals(end) || (StringUtils.isEmpty(end) && StringUtils.isEmpty(start))) {
             return Constant.SDF_YMD.format(nowDate);
+        } else if (StringUtils.isEmpty(end) && StringUtils.isNotEmpty(start)) {
+            DateTime time = DateUtil.offsetMonth(Constant.SDF_Y.parse(start), 60);
+            return time.getTime() > nowDate.getTime() ? Constant.SDF_YMD.format(nowDate) : Constant.SDF_YMD.format(time);
+        } else {
+            return Constant.SDF_YMD.format(DateUtil.endOfYear(DateUtil.parse(end, Constant.DATE_FORMAT_Y)));
         }
-        return Constant.SDF_YMD.format(DateUtil.endOfYear(DateUtil.parse(end, Constant.DATE_FORMAT_Y)));
     }
 }

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

@@ -16,4 +16,7 @@ public class EartagDataCountVo {
 
 
     private String countTime;
+
+
+    private Double envTemp;
 }

+ 19 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/mapper/RegionStockDayDao.java

@@ -0,0 +1,19 @@
+package com.huimv.manager.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.manager.entity.RegionStockDayEntity;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 
+ * 
+ * @author yinhao
+ * @version ${version}
+ * @date 2021-08-05 18:46:23
+ */
+@Mapper
+@Repository
+public interface RegionStockDayDao extends BaseMapper<RegionStockDayEntity> {
+	
+}

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

@@ -1,6 +1,7 @@
 package com.huimv.manager.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.manager.result.R;
 import com.huimv.manager.utils.PageUtils;
 import com.huimv.manager.entity.CollectorRegisterEntity;
 
@@ -19,5 +20,9 @@ public interface CollectorRegisterService extends IService<CollectorRegisterEnti
     PageUtils queryPage(Map<String, Object> params);
 
     Map countState(Map<String, Object> params);
+
+    R selectEveryStatusCollectors(String farmCode);
+
+    R selectPcEveryStatusCollectors();
 }
 

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

@@ -2,6 +2,7 @@ package com.huimv.manager.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.huimv.manager.entity.vo.DailySowVo;
+import com.huimv.manager.result.R;
 import com.huimv.manager.utils.PageUtils;
 import com.huimv.manager.entity.DailyTabulateDataEntity;
 
@@ -24,5 +25,7 @@ public interface DailyTabulateDataService extends IService<DailyTabulateDataEnti
     List countAllChange(Map<String, Object> params);
 
     Map countAllsow(Map<String, Object> params);
+
+    R selectEverydaySowTotalStockByFarmCode(String farmCode);
 }
 

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

@@ -3,6 +3,8 @@ package com.huimv.manager.service;
 import com.huimv.manager.entity.dto.DataAnalysisDto;
 import com.huimv.manager.result.R;
 
+import java.text.ParseException;
+
 /**
  * <p>
  *
@@ -12,7 +14,7 @@ import com.huimv.manager.result.R;
  * @date 2021/7/28 14:16
  */
 public interface DataAnalysisService {
-    R getDayPigStockByRegionCode(DataAnalysisDto dataAnalysisDto);
+    R getDayPigStockByRegionCode(DataAnalysisDto dataAnalysisDto) throws ParseException;
 
     R getChildPigStockByRegionCode(String regionCode);
 }

+ 1 - 1
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/EartagDataService.java

@@ -18,7 +18,7 @@ public interface EartagDataService extends IService<EartagDataEntity> {
 
     PageUtils queryPage(Map<String, Object> params);
 
-    List countByTime(Map<String, Object> params);
+    Map countByTime(Map<String, Object> params);
 
 
     void updateDailyData();

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

@@ -18,8 +18,12 @@ public interface FarmStockService extends IService<FarmStockEntity> {
 
     PageUtils queryPage(Map<String, Object> params);
 
+    void updateRegionStockDay();
+
     List countAll(Map<String, Object> params);
 
     List cityCountAll(Map<String, Object> params);
+
+//    List cityCountAll(Map<String, Object> params);
 }
 

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

@@ -0,0 +1,20 @@
+package com.huimv.manager.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.manager.entity.RegionStockDayEntity;
+import com.huimv.manager.utils.PageUtils;
+
+import java.util.Map;
+
+/**
+ * 
+ *
+ * @author yinhao
+ * @version ${version}
+ * @date 2021-08-05 18:46:23
+ */
+public interface RegionStockDayService extends IService<RegionStockDayEntity> {
+
+    PageUtils queryPage(Map<String, Object> params);
+}
+

+ 81 - 6
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/impl/CollectorRegisterServiceImpl.java

@@ -1,16 +1,21 @@
 package com.huimv.manager.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.huimv.manager.entity.vo.CollectorRegisterVo;
 import com.huimv.manager.mapper.CollectorRegisterDao;
+import com.huimv.manager.result.R;
 import com.huimv.manager.result.RRException;
+import com.huimv.manager.utils.Constant;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -44,14 +49,25 @@ public class CollectorRegisterServiceImpl extends ServiceImpl<CollectorRegisterD
         String deviceCode = (String)params.get("deviceCode");
         String countyName = (String)params.get("countyName");
         String farmName = (String)params.get("farmName");
-        String state = (String)params.get("acqStatus");
+        String acqStatus = (String)params.get("acqStatus");
+        String canStatus = (String)params.get("canStatus");
+        String networkStatus = (String)params.get("networkStatus");
+
+        wrapper.like(StringUtils.isNotBlank(deviceCode),"register.device_code",deviceCode);
+        wrapper.like(StringUtils.isNotBlank(countyName),"county_name",countyName);
+        wrapper.like(StringUtils.isNotBlank(farmName),"farm_name",farmName);
 
-        wrapper.like(StringUtils.isNotBlank(deviceCode),"register.device_code",deviceCode)
-        .or().like(StringUtils.isNotBlank(countyName),"register.county_name",countyName)
-        .or().like(StringUtils.isNotBlank(farmName),"register.farm_name",farmName);
         wrapper.eq(StringUtils.isNotBlank(farmCode),"register.farm_code",farmCode);
-        if (StringUtils.isNotBlank(state)){
-            wrapper.eq("state",Integer.parseInt(state));
+        if (StringUtils.isNotBlank(acqStatus)){
+            wrapper.eq("acq_status",Integer.parseInt(acqStatus));
+        }
+
+        if (StringUtils.isNotBlank(canStatus)){
+            wrapper.eq("can_status",Integer.parseInt(canStatus));
+        }
+
+        if (StringUtils.isNotBlank(networkStatus)){
+            wrapper.eq("network_status",Integer.parseInt(networkStatus));
         }
         wrapper.le(StringUtils.isNotBlank(registerEndTime),"rregister.egister_time",registerEndTime);
         wrapper.ge(StringUtils.isNotBlank(registerEndTime),"register.register_time",registerStartTime);
@@ -85,4 +101,63 @@ public class CollectorRegisterServiceImpl extends ServiceImpl<CollectorRegisterD
 
         return map;
     }
+
+    @Override
+    public R selectEveryStatusCollectors(String farmCode) {
+        LambdaQueryWrapper<CollectorRegisterEntity> lambdaQuery = Wrappers.lambdaQuery();
+        lambdaQuery.eq(CollectorRegisterEntity::getFarmCode, farmCode)
+                .eq(CollectorRegisterEntity::getDelStatus, Constant.NORMAL);
+
+        Map<String, Integer> map = new LinkedHashMap<>();
+
+        map.put("total", count(lambdaQuery));
+
+        lambdaQuery.eq(CollectorRegisterEntity::getNetworkStatus, Constant.NORMAL)
+                .eq(CollectorRegisterEntity::getAcqStatus, Constant.NORMAL)
+                .eq(CollectorRegisterEntity::getCanStatus, Constant.NORMAL);
+        map.put("normal", count(lambdaQuery));
+
+        lambdaQuery.clear();
+        lambdaQuery.eq(CollectorRegisterEntity::getFarmCode, farmCode)
+                .eq(CollectorRegisterEntity::getNetworkStatus, Constant.ABNORMAL)
+                .or().eq(CollectorRegisterEntity::getAcqStatus, Constant.ACQ_ABNORMAL)
+                .eq(CollectorRegisterEntity::getDelStatus, Constant.NORMAL);
+        map.put("abnormal", count(lambdaQuery));
+
+        lambdaQuery.clear();
+        lambdaQuery.eq(CollectorRegisterEntity::getFarmCode, farmCode)
+                .eq(CollectorRegisterEntity::getCanStatus, Constant.ABNORMAL)
+                .eq(CollectorRegisterEntity::getDelStatus, Constant.NORMAL);
+        map.put("logout", count(lambdaQuery));
+
+        return R.ok().put("data", map);
+    }
+
+    @Override
+    public R selectPcEveryStatusCollectors() {
+        LambdaQueryWrapper<CollectorRegisterEntity> lambdaQuery = Wrappers.lambdaQuery();
+        lambdaQuery.eq(CollectorRegisterEntity::getDelStatus, Constant.NORMAL);
+
+        Map<String, Integer> map = new LinkedHashMap<>();
+
+        map.put("total", count(lambdaQuery));
+
+        lambdaQuery.eq(CollectorRegisterEntity::getNetworkStatus, Constant.NORMAL)
+                .eq(CollectorRegisterEntity::getAcqStatus, Constant.NORMAL)
+                .eq(CollectorRegisterEntity::getCanStatus, Constant.NORMAL);
+        map.put("normal", count(lambdaQuery));
+
+        lambdaQuery.clear();
+        lambdaQuery.eq(CollectorRegisterEntity::getNetworkStatus, Constant.ABNORMAL)
+                .or().eq(CollectorRegisterEntity::getAcqStatus, Constant.ACQ_ABNORMAL)
+                .eq(CollectorRegisterEntity::getDelStatus, Constant.NORMAL);
+        map.put("abnormal", count(lambdaQuery));
+
+        lambdaQuery.clear();
+        lambdaQuery.eq(CollectorRegisterEntity::getCanStatus, Constant.ABNORMAL)
+                .eq(CollectorRegisterEntity::getDelStatus, Constant.NORMAL);
+        map.put("logout", count(lambdaQuery));
+
+        return R.ok().put("data", map);
+    }
 }

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

@@ -1,7 +1,10 @@
 package com.huimv.manager.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.huimv.manager.entity.BaseFarmInfoEntity;
 import com.huimv.manager.entity.vo.DailySowVo;
 import com.huimv.manager.entity.vo.DailyVo;
@@ -9,6 +12,7 @@ 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 com.huimv.manager.utils.Constant;
 import jdk.nashorn.internal.ir.IfNode;
 import net.bytebuddy.implementation.bytecode.Throw;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -72,6 +76,7 @@ public class DailyTabulateDataServiceImpl extends ServiceImpl<DailyTabulateDataD
 
         wrapper.ge(StringUtils.isNotBlank(minOfflineNo),"sow_stock",minSowStock);
         wrapper.le(StringUtils.isNotBlank(maxOfflineNo),"sow_stock",maxSowStock);
+        wrapper.orderByDesc("statistic_date");
 
 
         IPage<DailyTabulateDataEntity> page = this.page(
@@ -182,14 +187,16 @@ public class DailyTabulateDataServiceImpl extends ServiceImpl<DailyTabulateDataD
 
         QueryWrapper<DailyTabulateDataEntity> wrapper1 = new QueryWrapper<>();
 
-        wrapper1.in(farmCodeList != null && farmCodeList.size() >0,"farm_code",farmCodeList).or().eq(StringUtils.isNotBlank(farmCode),"farm_code",farmCode);
+        wrapper1.in(farmCodeList != null && farmCodeList.size() >0,"farm_code",farmCodeList);
+        wrapper1.eq(StringUtils.isNotBlank(farmCode),"farm_code",farmCode);
         wrapper1.eq("statistic_date", DateUtil.beginOfDay(new Date()));
         DailySowVo dailySowVo = baseMapper.counSowAll(wrapper1);
 
 
         wrapper1.clear();
-        wrapper1.in(farmCodeList != null && farmCodeList.size() >0,"farm_code",farmCodeList).or().or().eq(StringUtils.isNotBlank(farmCode),"farm_code",farmCode);
+        wrapper1.in(farmCodeList != null && farmCodeList.size() >0,"farm_code",farmCodeList);
         wrapper1.eq("statistic_date", DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),-1));
+        wrapper1.eq(StringUtils.isNotBlank(farmCode),"farm_code",farmCode);
         DailySowVo yestDayDailySowVo = baseMapper.counSowAll(wrapper1);
         Integer sowTotalStock = dailySowVo.getStockTotal();
         Integer yestdayTotalSowStock = yestDayDailySowVo.getStockTotal();
@@ -215,4 +222,25 @@ public class DailyTabulateDataServiceImpl extends ServiceImpl<DailyTabulateDataD
 
         return map;
     }
+
+
+    @Override
+    public R selectEverydaySowTotalStockByFarmCode(String farmCode) {
+        LambdaQueryWrapper<DailyTabulateDataEntity> lambdaQuery = Wrappers.lambdaQuery();
+        Date today = new Date();
+        lambdaQuery.eq(DailyTabulateDataEntity::getFarmCode, farmCode)
+                .ge(DailyTabulateDataEntity::getStatisticDate, Constant.SDF_YMD.format(DateUtil.offsetDay(today, -7)))
+                .le(DailyTabulateDataEntity::getStatisticDate, Constant.SDF_YMD.format(today));
+
+        List<DailyTabulateDataEntity> list = list(lambdaQuery);
+        List<String> dateList = new ArrayList<>();
+        List<Integer> stockList = new ArrayList<>();
+        if (CollUtil.isNotEmpty(list)) {
+            for (DailyTabulateDataEntity entity : list) {
+                dateList.add(Constant.SDF_MD.format(entity.getStatisticDate()));
+                stockList.add(entity.getStockTotal());
+            }
+        }
+        return Objects.requireNonNull(R.ok().put("dateList", dateList)).put("stockList", stockList);
+    }
 }

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

@@ -17,6 +17,7 @@ import com.huimv.manager.utils.AnalysisConstant;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -38,7 +39,7 @@ public class DataAnalysisServiceImpl implements DataAnalysisService {
     private DailyTabulateDataDao dailyTabulateDataDao;
 
     @Override
-    public R getDayPigStockByRegionCode(DataAnalysisDto dataAnalysisDto) {
+    public R getDayPigStockByRegionCode(DataAnalysisDto dataAnalysisDto) throws ParseException {
 
         String regionCode = dataAnalysisDto.getRegionCode();
         BaseRegionEntity baseRegionEntity = selectBaseRegion(regionCode);
@@ -87,7 +88,7 @@ public class DataAnalysisServiceImpl implements DataAnalysisService {
         }
     }
 
-    private R buildBackData(DataAnalysisDto dataAnalysisDto, String countField, String typeGroupField) {
+    private R buildBackData(DataAnalysisDto dataAnalysisDto, String countField, String typeGroupField) throws ParseException {
         QueryWrapper<DayStockVo> query = Wrappers.query();
 
 

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

@@ -54,20 +54,34 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataDao, EartagData
     }
 
     @Override
-    public List countByTime(Map<String, Object> params) {
+    public Map countByTime(Map<String, Object> params) {
         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.eq(StringUtils.isNotBlank(deviceCode),"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);
+        List<EartagDataCountVo> eartagDataCountVos = baseMapper.countByTime(wrapper);
+
+        List timeList = new ArrayList();
+        List envTempList = new ArrayList();
+        List count = new ArrayList();
+        for (EartagDataCountVo eartagDataCountVo : eartagDataCountVos) {
+           timeList.add(eartagDataCountVo.getCountTime());
+           envTempList.add(eartagDataCountVo.getEnvTemp());
+           count.add(eartagDataCountVo.getUploadCount());
+        }
+        Map map = new HashMap();
+        map.put("time",timeList);
+        map.put("envTemp",envTempList);
+        map.put("count",count);
+
 
-        return list;
+        return map;
     }
 
 

+ 2 - 2
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/impl/EnvironmentDataServiceImpl.java

@@ -51,13 +51,13 @@ public class EnvironmentDataServiceImpl extends ServiceImpl<EnvironmentDataDao,
 
         QueryWrapper<EnvironmentDataEntity> wrapper = new QueryWrapper<>();
 //        wrapper.eq(StringUtils.isNotBlank(farmCode),"farm_code",farmCode);
-        wrapper.eq("device_code",deviceCode);
+        wrapper.eq(StringUtils.isNotBlank(deviceCode),"device_code",deviceCode);
         wrapper.ge(StringUtils.isNotBlank(startTime),"acq_date",startTime);
         wrapper.le(StringUtils.isNotBlank(endTime),"acq_date",endTime);
 
 
        wrapper.groupBy("acq");
-        List<EnvironmentDataEntity> environmentDataEntities = baseMapper.selectList(wrapper);
+//        List<EnvironmentDataEntity> environmentDataEntities = baseMapper.selectList(wrapper);
         List<EnvironmentDataVo> list = baseMapper.countEnvironmentTemperature(wrapper);
 
 

+ 464 - 2
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/java/com/huimv/manager/service/impl/FarmStockServiceImpl.java

@@ -1,11 +1,15 @@
 package com.huimv.manager.service.impl;
 
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.huimv.manager.entity.BaseRegionEntity;
 import com.huimv.manager.entity.FarmStockEntity;
 import com.huimv.manager.entity.InterfaceRegisterEntity;
+import com.huimv.manager.entity.RegionStockDayEntity;
 import com.huimv.manager.mapper.BaseRegionDao;
 import com.huimv.manager.mapper.FarmStockDao;
+import com.huimv.manager.mapper.RegionStockDayDao;
+import com.huimv.manager.result.R;
 import com.huimv.manager.service.FarmStockService;
 import com.huimv.manager.utils.PageUtils;
 import com.huimv.manager.utils.Query;
@@ -19,6 +23,7 @@ import java.util.stream.Stream;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import sun.jvm.hotspot.debugger.Page;
 
 
 /**
@@ -78,12 +83,20 @@ public class FarmStockServiceImpl extends ServiceImpl<FarmStockDao, FarmStockEnt
 
     @Autowired
     private BaseRegionDao baseRegionDao;
-    @Override
+   /* @Override
     public List countAll(Map<String, Object> params) {
         QueryWrapper<BaseRegionEntity> baseRegionwrapper = new QueryWrapper<>();
         List<BaseRegionEntity> baseRegionEntities = baseRegionDao.selectList(baseRegionwrapper);
 
+
         String countyCode =(String) params.get("countyCode");
+        for (BaseRegionEntity baseRegionEntity : baseRegionEntities) {
+            if (baseRegionEntity.getRegionCode().equals(countyCode)){
+                if (baseRegionEntity.getParentCode() == null){
+                    countyCode =null;
+                }
+            }
+        }
 
         String farmName = (String) params.get("farmName");
         String minStockTotal =(String) params.get("minStockTotal");
@@ -115,7 +128,7 @@ public class FarmStockServiceImpl extends ServiceImpl<FarmStockDao, FarmStockEnt
 
 
         List<FarmStockEntity> farmStockEntities = baseMapper.selectList(wrapper);
-        List list = new ArrayList();
+        List<Map> list = new ArrayList();
 
         for (BaseRegionEntity baseRegionEntity : baseRegionEntities) {
             if (baseRegionEntity.getParentCode() ==null){
@@ -150,6 +163,10 @@ public class FarmStockServiceImpl extends ServiceImpl<FarmStockDao, FarmStockEnt
                         map.put("code",regionEntity.getRegionCode());
                         map.put("children",getChildren(regionEntity.getRegionCode(),farmStockEntities,baseRegionEntities));
                         map.put("type",1);
+
+                        RegionStockDayEntity regionStockDayEntity = new RegionStockDayEntity();
+//                        regionStockDayEntity.set
+
                         list.add(map);
                     }
 
@@ -319,5 +336,450 @@ public class FarmStockServiceImpl extends ServiceImpl<FarmStockDao, FarmStockEnt
             }
         }
         return endList;
+    }*/
+   @Autowired
+   private RegionStockDayDao regionStockDayDao;
+   @Override
+   public void updateRegionStockDay() {
+       QueryWrapper<BaseRegionEntity> baseRegionwrapper = new QueryWrapper<>();
+       List<BaseRegionEntity> baseRegionEntities = baseRegionDao.selectList(baseRegionwrapper);
+
+       QueryWrapper<FarmStockEntity> wrapper = new QueryWrapper<>();
+//       wrapper.eq(StringUtils.isNotBlank(countyCode),"county_code",countyCode).or().eq(StringUtils.isNotBlank(countyCode),"city_code",countyCode);
+
+       wrapper.apply("id IN( SELECT MAX(id) FROM `farm_stock` GROUP BY farm_code)");
+
+
+       List<FarmStockEntity> farmStockEntities = baseMapper.selectList(wrapper);
+
+       for (BaseRegionEntity baseRegionEntity : baseRegionEntities) {
+           if (baseRegionEntity.getParentCode() ==null){
+               for (BaseRegionEntity regionEntity : baseRegionEntities) {
+                   if(baseRegionEntity.getRegionCode().equals(regionEntity.getParentCode())){
+                       Integer sowTotalStock = 0,eartagNew = 0,eartagOffone =0,sowStock =0,stock1=0,stock2=0,stock3=0,stock4=0,stock5=0;
+
+                       Map map =new HashMap();
+                       for (FarmStockEntity farmStockEntity : farmStockEntities) {
+                           if (farmStockEntity.getCityCode().equals(regionEntity.getRegionCode())){
+                               sowTotalStock += farmStockEntity.getSowTotalStock();
+                               eartagNew += farmStockEntity.getEartagNew();
+                               eartagOffone += farmStockEntity.getEartagOffone();
+                               sowStock += farmStockEntity.getSowStock();
+                               stock1 += farmStockEntity.getStock1();
+                               stock2 += farmStockEntity.getStock2();
+                               stock3 += farmStockEntity.getStock3();
+                               stock4 += farmStockEntity.getStock4();
+                               stock5 += farmStockEntity.getStock5();
+                           }
+                       }
+
+
+                       QueryWrapper<RegionStockDayEntity> regionStockDayEntityQueryWrapper = new QueryWrapper<>();
+                       regionStockDayEntityQueryWrapper.eq("region_code",regionEntity.getRegionCode());
+                       RegionStockDayEntity regionStockDayEntity = regionStockDayDao.selectOne(regionStockDayEntityQueryWrapper);
+                       if (regionStockDayEntity == null){
+                           regionStockDayEntity = new RegionStockDayEntity();
+                       }
+                       regionStockDayEntity.setEartagNew(eartagNew);
+                       regionStockDayEntity.setSowTotalStock(sowTotalStock);
+                       regionStockDayEntity.setEartagOffone(eartagOffone);
+                       regionStockDayEntity.setSowStock(sowStock);
+                       regionStockDayEntity.setStock1(stock1);
+                       regionStockDayEntity.setStock2(stock2);
+                       regionStockDayEntity.setStock3(stock3);
+                       regionStockDayEntity.setStock4(stock4);
+                       regionStockDayEntity.setStock5(stock5);
+                       regionStockDayEntity.setRegionCode(regionEntity.getRegionCode());
+                       regionStockDayEntity.setParentCode(regionEntity.getParentCode());
+                       regionStockDayEntity.setRegionName(regionEntity.getRegionName());
+                       if (regionStockDayEntity.getId() == null){
+                           regionStockDayDao.insert(regionStockDayEntity);
+                       }else {
+                           regionStockDayDao.updateById(regionStockDayEntity);
+                       }
+
+                       cityCountAll();
+
+                   }
+
+               }
+           }
+       }
+
+
+   }
+
+
+
+
+    public void cityCountAll() {
+        QueryWrapper<BaseRegionEntity> baseRegionwrapper = new QueryWrapper<>();
+        List<BaseRegionEntity> baseRegionEntities = baseRegionDao.selectList(baseRegionwrapper);
+
+        QueryWrapper<FarmStockEntity> wrapper = new QueryWrapper<>();
+
+        wrapper.apply("id IN( SELECT MAX(id) FROM `farm_stock` GROUP BY farm_code)");
+
+
+        List<FarmStockEntity> farmStockEntities = baseMapper.selectList(wrapper);
+        List list = new ArrayList();
+
+        for (BaseRegionEntity baseRegionEntity : baseRegionEntities) {
+            if (baseRegionEntity.getParentCode() ==null){
+                for (BaseRegionEntity regionEntity : baseRegionEntities) {
+                    if(baseRegionEntity.getRegionCode().equals(regionEntity.getParentCode())) {
+                        for (BaseRegionEntity regionEntity1 : baseRegionEntities) {
+                            if (regionEntity.getRegionCode().equals(regionEntity1.getParentCode())) {
+                                Integer sowTotalStock = 0, eartagNew = 0, eartagOffone = 0, sowStock = 0, stock1 = 0, stock2 = 0, stock3 = 0, stock4 = 0, stock5 = 0;
+                                for (FarmStockEntity farmStockEntity : farmStockEntities) {
+                                    if (farmStockEntity.getCountyCode().equals(regionEntity1.getRegionCode())) {
+                                        sowTotalStock += farmStockEntity.getSowTotalStock();
+                                        eartagNew += farmStockEntity.getEartagNew();
+                                        eartagOffone += farmStockEntity.getEartagOffone();
+                                        sowStock += farmStockEntity.getSowStock();
+                                        stock1 += farmStockEntity.getStock1();
+                                        stock2 += farmStockEntity.getStock2();
+                                        stock3 += farmStockEntity.getStock3();
+                                        stock4 += farmStockEntity.getStock4();
+                                        stock5 += farmStockEntity.getStock5();
+                                    }
+                                }
+                                QueryWrapper<RegionStockDayEntity> regionStockDayEntityQueryWrapper = new QueryWrapper<>();
+                                regionStockDayEntityQueryWrapper.eq("region_code",regionEntity1.getRegionCode());
+                                RegionStockDayEntity regionStockDayEntity = regionStockDayDao.selectOne(regionStockDayEntityQueryWrapper);
+                                if (regionStockDayEntity == null){
+                                    regionStockDayEntity = new RegionStockDayEntity();
+                                }
+                                regionStockDayEntity.setEartagNew(eartagNew);
+                                regionStockDayEntity.setSowTotalStock(sowTotalStock);
+                                regionStockDayEntity.setEartagOffone(eartagOffone);
+                                regionStockDayEntity.setSowStock(sowStock);
+                                regionStockDayEntity.setStock1(stock1);
+                                regionStockDayEntity.setStock2(stock2);
+                                regionStockDayEntity.setStock3(stock3);
+                                regionStockDayEntity.setStock4(stock4);
+                                regionStockDayEntity.setStock5(stock5);
+                                regionStockDayEntity.setRegionCode(regionEntity1.getRegionCode());
+                                regionStockDayEntity.setParentCode(regionEntity1.getParentCode());
+                                regionStockDayEntity.setRegionName(regionEntity1.getRegionName());
+                                if (regionStockDayEntity.getId() == null){
+                                    regionStockDayDao.insert(regionStockDayEntity);
+                                }else {
+                                    regionStockDayDao.updateById(regionStockDayEntity);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+    }
+
+
+    public List countAll11(Map<String, Object> params) {
+
+        String countyCode =(String) params.get("countyCode");
+
+        QueryWrapper<BaseRegionEntity> baseRegionEntityQueryWrapper = new QueryWrapper<>();
+        List<BaseRegionEntity> baseRegionEntities = baseRegionDao.selectList(baseRegionEntityQueryWrapper);
+        for (BaseRegionEntity baseRegionEntity : baseRegionEntities) {
+            if (countyCode.equals(baseRegionEntity.getRegionCode())){
+                if (baseRegionEntity.getParentCode() == null){
+                    countyCode = null;
+                    break;
+                }
+            }
+        }
+
+        String minStockTotal =(String) params.get("minStockTotal");
+        String maxStockTotal =(String) params.get("maxStockTotal");
+        String minStockNew =(String) params.get("minStockNew");
+        String maxStockNew =(String) params.get("maxStockNew");
+        String minOfflineNo =(String) params.get("minOfflineNo");
+        String maxOfflineNo =(String) params.get("maxOfflineNo");
+        String minSowStock =(String) params.get("minSowStock");
+        String maxSowStock =(String) params.get("maxSowStock");
+
+        QueryWrapper<RegionStockDayEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.isNotBlank(countyCode),"region_code",countyCode).or().eq(StringUtils.isNotBlank(countyCode),"parent_code",countyCode);
+
+
+        wrapper.ge(StringUtils.isNotBlank(minStockTotal),"sow_total_stock",minStockTotal);
+        wrapper.le(StringUtils.isNotBlank(maxStockTotal),"sow_total_stock",maxStockTotal);
+
+        wrapper.ge(StringUtils.isNotBlank(minStockNew),"eartag_new",minStockNew);
+        wrapper.le(StringUtils.isNotBlank(maxStockNew),"eartag_new",maxStockNew);
+
+        wrapper.ge(StringUtils.isNotBlank(minOfflineNo),"eartag_offone",minOfflineNo);
+        wrapper.le(StringUtils.isNotBlank(maxOfflineNo),"eartag_offone",maxOfflineNo);
+
+        wrapper.ge(StringUtils.isNotBlank(minOfflineNo),"sow_stock",minSowStock);
+        wrapper.le(StringUtils.isNotBlank(maxOfflineNo),"sow_stock",maxSowStock);
+        List<RegionStockDayEntity> regionStockDayEntities = regionStockDayDao.selectList(wrapper);
+
+
+        for (BaseRegionEntity baseRegionEntity : baseRegionEntities) {
+            if (baseRegionEntity.getParentCode() == null){
+                for (RegionStockDayEntity regionStockDayEntity : regionStockDayEntities) {
+                    if (regionStockDayEntity.getParentCode().equals(baseRegionEntity.getRegionCode())){
+
+                    }
+                }
+            }
+        }
+
+
+        return null;
+    }
+
+    @Override
+    public List countAll(Map<String, Object> params) {
+
+        String countyCode =(String) params.get("countyCode");
+
+        QueryWrapper<BaseRegionEntity> baseRegionEntityQueryWrapper = new QueryWrapper<>();
+        List<BaseRegionEntity> baseRegionEntities = baseRegionDao.selectList(baseRegionEntityQueryWrapper);
+
+        for (BaseRegionEntity baseRegionEntity : baseRegionEntities) {
+            if (baseRegionEntity.getParentCode()== null){
+                for (BaseRegionEntity regionEntity : baseRegionEntities) {
+                    if (baseRegionEntity.getRegionCode().equals(regionEntity.getParentCode())){
+                        for (BaseRegionEntity entity : baseRegionEntities) {
+                            if (regionEntity.getRegionCode().equals(entity.getParentCode())){
+
+                                String regionCode = entity.getRegionCode();
+                                if (regionCode.equals(countyCode)){
+                                  /*  Map map = new HashMap();
+                                    map.put("countyCode",regionCode);
+                                    PageUtils pageUtils = queryPage(map);
+                                    return   pageUtils.getList();*/
+                                    QueryWrapper<RegionStockDayEntity> regionStockDayEntityQueryWrapper = new QueryWrapper<>();
+                                    regionStockDayEntityQueryWrapper.eq("region_code",regionCode);
+                                    RegionStockDayEntity regionStockDayEntity = regionStockDayDao.selectOne(regionStockDayEntityQueryWrapper);
+                                    Map map = new HashMap();
+                                    map.put("code",regionStockDayEntity.getRegionCode());
+                                    map.put("eartagNew",regionStockDayEntity.getEartagNew());
+                                    map.put("eartagOffone",regionStockDayEntity.getEartagOffone());
+                                    map.put("name",regionStockDayEntity.getRegionName());
+                                    map.put("sowStock",regionStockDayEntity.getSowStock());
+                                    map.put("sowTotalStock",regionStockDayEntity.getSowTotalStock());
+                                    map.put("stock1",regionStockDayEntity.getStock1());
+                                    map.put("stock2",regionStockDayEntity.getStock2());
+                                    map.put("stock3",regionStockDayEntity.getStock3());
+                                    map.put("stock4",regionStockDayEntity.getStock4());
+                                    map.put("stock5",regionStockDayEntity.getStock5());
+                                    map.put("children",null);
+                                    map.put("type",2);
+                                    List list = new ArrayList();
+                                    list.add(map);
+                                    return list;
+                                }
+
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        for (BaseRegionEntity baseRegionEntity : baseRegionEntities) {
+            if (baseRegionEntity.getRegionCode().equals(countyCode)){
+                if (baseRegionEntity.getParentCode() == null){
+                    countyCode = null;
+                    break;
+                }
+            }
+        }
+
+        String minStockTotal =(String) params.get("minStockTotal");
+        String maxStockTotal =(String) params.get("maxStockTotal");
+        String minStockNew =(String) params.get("minStockNew");
+        String maxStockNew =(String) params.get("maxStockNew");
+        String minOfflineNo =(String) params.get("minOfflineNo");
+        String maxOfflineNo =(String) params.get("maxOfflineNo");
+        String minSowStock =(String) params.get("minSowStock");
+        String maxSowStock =(String) params.get("maxSowStock");
+
+        QueryWrapper<RegionStockDayEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.isNotBlank(countyCode),"region_code",countyCode).or().eq(StringUtils.isNotBlank(countyCode),"parent_code",countyCode);
+
+
+        wrapper.ge(StringUtils.isNotBlank(minStockTotal),"sow_total_stock",minStockTotal);
+        wrapper.le(StringUtils.isNotBlank(maxStockTotal),"sow_total_stock",maxStockTotal);
+
+        wrapper.ge(StringUtils.isNotBlank(minStockNew),"eartag_new",minStockNew);
+        wrapper.le(StringUtils.isNotBlank(maxStockNew),"eartag_new",maxStockNew);
+
+        wrapper.ge(StringUtils.isNotBlank(minOfflineNo),"eartag_offone",minOfflineNo);
+        wrapper.le(StringUtils.isNotBlank(maxOfflineNo),"eartag_offone",maxOfflineNo);
+
+        wrapper.ge(StringUtils.isNotBlank(minOfflineNo),"sow_stock",minSowStock);
+        wrapper.le(StringUtils.isNotBlank(maxOfflineNo),"sow_stock",maxSowStock);
+        List<RegionStockDayEntity> regionStockDayEntities = regionStockDayDao.selectList(wrapper);
+
+
+        return getChildren(regionStockDayEntities);
+    }
+
+
+    @Override
+    public List cityCountAll(Map<String, Object> params) {
+        String countyCode =(String) params.get("countyCode");
+        QueryWrapper<BaseRegionEntity> baseRegionEntityQueryWrapper = new QueryWrapper<>();
+        List<BaseRegionEntity> baseRegionEntities = baseRegionDao.selectList(baseRegionEntityQueryWrapper);
+        for (BaseRegionEntity baseRegionEntity : baseRegionEntities) {
+            if (countyCode.equals(baseRegionEntity.getRegionCode())){
+                if (baseRegionEntity.getParentCode() == null){
+                    countyCode = null;
+                    break;
+                }
+            }
+        }
+
+        String minStockTotal =(String) params.get("minStockTotal");
+        String maxStockTotal =(String) params.get("maxStockTotal");
+        String minStockNew =(String) params.get("minStockNew");
+        String maxStockNew =(String) params.get("maxStockNew");
+        String minOfflineNo =(String) params.get("minOfflineNo");
+        String maxOfflineNo =(String) params.get("maxOfflineNo");
+        String minSowStock =(String) params.get("minSowStock");
+        String maxSowStock =(String) params.get("maxSowStock");
+
+        QueryWrapper<RegionStockDayEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.isNotBlank(countyCode),"region_code",countyCode).or().eq(StringUtils.isNotBlank(countyCode),"parent_code",countyCode);
+
+
+        wrapper.ge(StringUtils.isNotBlank(minStockTotal),"sow_total_stock",minStockTotal);
+        wrapper.le(StringUtils.isNotBlank(maxStockTotal),"sow_total_stock",maxStockTotal);
+
+        wrapper.ge(StringUtils.isNotBlank(minStockNew),"eartag_new",minStockNew);
+        wrapper.le(StringUtils.isNotBlank(maxStockNew),"eartag_new",maxStockNew);
+
+        wrapper.ge(StringUtils.isNotBlank(minOfflineNo),"eartag_offone",minOfflineNo);
+        wrapper.le(StringUtils.isNotBlank(maxOfflineNo),"eartag_offone",maxOfflineNo);
+
+        wrapper.ge(StringUtils.isNotBlank(minOfflineNo),"sow_stock",minSowStock);
+        wrapper.le(StringUtils.isNotBlank(maxOfflineNo),"sow_stock",maxSowStock);
+        List<RegionStockDayEntity> regionStockDayEntities = regionStockDayDao.selectList(wrapper);
+
+
+        return getCityChildren(regionStockDayEntities);
+    }
+
+    private List getCityChildren(List<RegionStockDayEntity> regionStockDayEntities) {
+
+        QueryWrapper<BaseRegionEntity> baseRegionwrapper = new QueryWrapper<>();
+        List<BaseRegionEntity> baseRegionEntities = baseRegionDao.selectList(baseRegionwrapper);
+        List endList = new ArrayList();
+        for (BaseRegionEntity baseRegionEntity : baseRegionEntities) {
+            if(baseRegionEntity.getParentCode() == null){
+                for (BaseRegionEntity regionEntity : baseRegionEntities) {
+                    if (baseRegionEntity.getRegionCode().equals(regionEntity.getParentCode())){
+                        for (RegionStockDayEntity regionStockDayEntity : regionStockDayEntities) {
+                            if (regionStockDayEntity.getParentCode().equals(regionEntity.getRegionCode())){
+                                Map map = new HashMap();
+                                map.put("code",regionStockDayEntity.getRegionCode());
+                                map.put("eartagNew",regionStockDayEntity.getEartagNew());
+                                map.put("eartagOffone",regionStockDayEntity.getEartagOffone());
+                                map.put("name",regionStockDayEntity.getRegionName());
+                                map.put("sowStock",regionStockDayEntity.getSowStock());
+                                map.put("sowTotalStock",regionStockDayEntity.getSowTotalStock());
+                                map.put("stock1",regionStockDayEntity.getStock1());
+                                map.put("stock2",regionStockDayEntity.getStock2());
+                                map.put("stock3",regionStockDayEntity.getStock3());
+                                map.put("stock4",regionStockDayEntity.getStock4());
+                                map.put("stock5",regionStockDayEntity.getStock5());
+                                map.put("type",2);
+                                List childreList = new ArrayList();
+                                QueryWrapper<FarmStockEntity> farmStockEntityQueryWrapper = new QueryWrapper<>();
+                                farmStockEntityQueryWrapper.eq("330110",regionStockDayEntity.getRegionCode());
+                                farmStockEntityQueryWrapper.apply("id IN( SELECT MAX(id) FROM `farm_stock` GROUP BY farm_code)");
+                                List<FarmStockEntity> farmStockEntities = baseMapper.selectList(farmStockEntityQueryWrapper);
+                                for (FarmStockEntity farmStockEntity : farmStockEntities) {
+                                    Map childrMap = new HashMap();
+                                    childrMap.put("code",farmStockEntity.getFarmCode());
+                                    childrMap.put("eartagNew",farmStockEntity.getEartagNew());
+                                    childrMap.put("eartagOffone",farmStockEntity.getEartagOffone());
+                                    childrMap.put("name",farmStockEntity.getFarmName());
+                                    childrMap.put("sowStock",farmStockEntity.getSowStock());
+                                    childrMap.put("sowTotalStock",farmStockEntity.getSowTotalStock());
+                                    childrMap.put("stock1",farmStockEntity.getStock1());
+                                    childrMap.put("stock2",farmStockEntity.getStock2());
+                                    childrMap.put("stock3",farmStockEntity.getStock3());
+                                    childrMap.put("stock4",farmStockEntity.getStock4());
+                                    childrMap.put("stock5",farmStockEntity.getStock5());
+                                    childrMap.put("type",4);
+                                    childrMap.put("children",null);
+                                    childreList.add(childrMap);
+                                }
+
+                                map.put("children",childreList);
+                                endList.add(map);
+                            }
+                      }
+                   }
+                }
+            }
+        }
+
+
+        return  endList;
+
+    }
+
+
+    private List getChildren(List<RegionStockDayEntity> regionStockDayEntities) {
+        QueryWrapper<BaseRegionEntity> baseRegionwrapper = new QueryWrapper<>();
+        List<BaseRegionEntity> baseRegionEntities = baseRegionDao.selectList(baseRegionwrapper);
+       List endList = new ArrayList();
+        for (BaseRegionEntity baseRegionEntity : baseRegionEntities) {
+            if(baseRegionEntity.getParentCode() == null){
+                for (RegionStockDayEntity regionStockDayEntity : regionStockDayEntities) {
+                    if (regionStockDayEntity.getParentCode().equals(baseRegionEntity.getRegionCode())){
+                        Map map = new HashMap();
+                        map.put("code",regionStockDayEntity.getRegionCode());
+                        map.put("eartagNew",regionStockDayEntity.getEartagNew());
+                        map.put("eartagOffone",regionStockDayEntity.getEartagOffone());
+                        map.put("name",regionStockDayEntity.getRegionName());
+                        map.put("sowStock",regionStockDayEntity.getSowStock());
+                        map.put("sowTotalStock",regionStockDayEntity.getSowTotalStock());
+                        map.put("stock1",regionStockDayEntity.getStock1());
+                        map.put("stock2",regionStockDayEntity.getStock2());
+                        map.put("stock3",regionStockDayEntity.getStock3());
+                        map.put("stock4",regionStockDayEntity.getStock4());
+                        map.put("stock5",regionStockDayEntity.getStock5());
+                        map.put("type",1);
+                        List childreList = new ArrayList();
+
+                        for (RegionStockDayEntity stockDayEntity : regionStockDayEntities) {
+                            if (stockDayEntity.getParentCode().equals(regionStockDayEntity.getRegionCode())){
+                                Map childrMap = new HashMap();
+                                childrMap.put("code",stockDayEntity.getRegionCode());
+                                childrMap.put("eartagNew",stockDayEntity.getEartagNew());
+                                childrMap.put("eartagOffone",stockDayEntity.getEartagOffone());
+                                childrMap.put("name",stockDayEntity.getRegionName());
+                                childrMap.put("sowStock",stockDayEntity.getSowStock());
+                                childrMap.put("sowTotalStock",stockDayEntity.getSowTotalStock());
+                                childrMap.put("stock1",stockDayEntity.getStock1());
+                                childrMap.put("stock2",stockDayEntity.getStock2());
+                                childrMap.put("stock3",stockDayEntity.getStock3());
+                                childrMap.put("stock4",stockDayEntity.getStock4());
+                                childrMap.put("stock5",stockDayEntity.getStock5());
+                                childrMap.put("type",2);
+                                childrMap.put("children",null);
+                                childreList.add(childrMap);
+                            }
+                        }
+                        map.put("children",childreList);
+                        endList.add(map);
+                    }
+
+                }
+            }
+        }
+
+
+       return  endList;
     }
 }

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

@@ -0,0 +1,34 @@
+package com.huimv.manager.service.impl;
+
+import com.huimv.manager.entity.RegionStockDayEntity;
+import com.huimv.manager.mapper.RegionStockDayDao;
+import com.huimv.manager.service.RegionStockDayService;
+import com.huimv.manager.utils.PageUtils;
+import com.huimv.manager.utils.Query;
+import org.springframework.stereotype.Service;
+import java.util.Map;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * 
+ *
+ * @author yinhao
+ * @version ${version}
+ * @date 2021-08-05 18:46:23
+ */
+@Service("regionStockDayService")
+public class RegionStockDayServiceImpl extends ServiceImpl<RegionStockDayDao, RegionStockDayEntity> implements RegionStockDayService {
+
+    @Override
+    public PageUtils queryPage(Map<String, Object> params) {
+        IPage<RegionStockDayEntity> page = this.page(
+                new Query<RegionStockDayEntity>().getPage(params),
+                new QueryWrapper<RegionStockDayEntity>()
+        );
+
+        return new PageUtils(page);
+    }
+
+}

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

@@ -139,9 +139,16 @@ public class Constant {
      */
     public static final String DATE_FORMAT_Y = "yyyy";
 
+    public static final String DATE_FORMAT_MD = "MM-dd";
+
     public static final SimpleDateFormat SDF_YMD = new SimpleDateFormat(DATE_FORMAT_YMD);
     public static final SimpleDateFormat SDF_YM = new SimpleDateFormat(DATE_FORMAT_YM);
     public static final SimpleDateFormat SDF_Y = new SimpleDateFormat(DATE_FORMAT_Y);
+    public static final SimpleDateFormat SDF_MD = new SimpleDateFormat(DATE_FORMAT_MD);
+
+    public static final Integer NORMAL = 1;
+    public static final Integer ACQ_ABNORMAL = 2;
+    public static final Integer ABNORMAL = 0;
 
     /**
      * 私钥

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

@@ -3,7 +3,7 @@ server:
 
 spring:
   datasource:
-    url: jdbc:mysql://115.238.57.190: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&&failOverReadOnly=false&serverTimezone=Asia/Shanghai
     username: root
     password: hm123456
     driver-class-name: com.mysql.cj.jdbc.Driver

+ 1 - 1
smart.eartag.data.platform/huimv-smart-eartag-data-manager/src/main/resources/mapper/manager/EartagDataDao.xml

@@ -28,7 +28,7 @@
     </resultMap>
     <select id="countByTime" resultType="com.huimv.manager.entity.vo.EartagDataCountVo">
          SELECT
-          DATE_FORMAT(`time`,"%y-%m-%d %H") count_time,COUNT(*) upload_count
+          DATE_FORMAT(`time`,"%y-%m-%d %H") count_time,COUNT(*) upload_count, CAST(AVG(env_temp) AS DECIMAL(10,2)) envTemp
 	        FROM `eartag_data`
 	        ${ew.customSqlSegment}
     </select>

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

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.huimv.manager.mapper.RegionStockDayDao">
+
+	<!-- 可根据自己的需求,是否要使用 -->
+    <resultMap type="com.huimv.manager.entity.RegionStockDayEntity" id="regionStockDayMap">
+        <result property="id" column="id"/>
+        <result property="regionCode" column="region_code"/>
+        <result property="regionName" column="region_name"/>
+        <result property="sowTotalStock" column="sow_total_stock"/>
+        <result property="eartagNew" column="eartag_new"/>
+        <result property="eartagOffone" column="eartag_offone"/>
+        <result property="sowStock" column="sow_stock"/>
+        <result property="stock1" column="stock1"/>
+        <result property="stock2" column="stock2"/>
+        <result property="stock3" column="stock3"/>
+        <result property="stock4" column="stock4"/>
+        <result property="stock5" column="stock5"/>
+        <result property="date" column="date"/>
+        <result property="parentCode" column="parent_code"/>
+    </resultMap>
+
+
+</mapper>

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

@@ -22,7 +22,7 @@ public class InterceptorConfig implements WebMvcConfigurer {
     @Override
     public void addInterceptors(InterceptorRegistry registry) {
         registry.addInterceptor(jwtInterceptor()).
-                excludePathPatterns("/getToken").
+                excludePathPatterns("/pig/getAccessToken").
                 excludePathPatterns("/").
                 excludePathPatterns("/*.ico").
                 excludePathPatterns("/js/**").

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

@@ -7,7 +7,6 @@ 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;
@@ -24,7 +23,7 @@ import java.util.Date;
 
 /**
  * <p>
- * 数据推送
+ * 电信智慧养殖云平台接口
  * </p>
  *
  * @author yinhao
@@ -48,6 +47,12 @@ public class PigDataProcessingController {
     private FarmEartagChangeService farmEartagChangeService;
 
 
+    /**
+     * 1. 申请 AccessToken 令牌
+     * @param tokenForm
+     * @return
+     * @throws NoSuchAlgorithmException
+     */
     @GetMapping("/getAccessToken")
     public R getAccessToken(@Validated TokenForm tokenForm) throws NoSuchAlgorithmException {
 
@@ -62,6 +67,7 @@ public class PigDataProcessingController {
         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)));
+        System.out.println(twoSign);
 
         if (!tokenForm.getSign().equals(twoSign)) {
             throw new RRException("签名验证失败!", 10003);
@@ -74,45 +80,80 @@ public class PigDataProcessingController {
         return R.ok().put("accessToken", token).put("expireTime", expireTime);
     }
 
+    /**
+     * 2. 生猪存栏数读取接口
+     * @param pigStockForm
+     * @return
+     */
     @GetMapping("/getPigStock")
     public R getPigStock(PigStockForm pigStockForm) {
         PageUtils page = dailyTabulateDataService.getPigStock(pigStockForm);
         return R.ok().put("resultData", page);
     }
 
-    @GetMapping("/getNewPigStock")
-    public R getNewPigStock(PigStockForm pigStockForm) {
-        PageUtils page = farmEartagChangeService.getChangePigStock(pigStockForm, Constant.NEW_EARTAG_TYPE);
+    /**
+     * 3. 新增生猪耳标号读取接口
+     * @param newAndOffLineForm
+     * @return
+     */
+    @GetMapping("/getNewEartagNo")
+    public R getNewPigStock(NewAndOffLineForm newAndOffLineForm) {
+        PageUtils page = farmEartagChangeService.getChangePigStock(newAndOffLineForm);
         return R.ok().put("resultData", page);
     }
 
-    @GetMapping("/getOffLinePigStock")
-    public R getOffLinePigStock() {
-        PageUtils page = dataPushService.getOffLinePigStock(1, 10);
+    /**
+     * 4. 离线生猪耳标号读取接口
+     * @param newAndOffLineForm
+     * @return
+     */
+    @GetMapping("/getEliminateEartagNo")
+    public R getOffLinePigStock(NewAndOffLineForm newAndOffLineForm) {
+        PageUtils page = farmEartagChangeService.getOffLinePigStock(newAndOffLineForm);
         return R.ok().put("resultData", page);
     }
 
-    @PostMapping("/recive")
-    public void receiveData(@RequestBody String body) {
-        System.out.println(body);
-    }
-
 
+    /**
+     * 5. 智能耳标接口
+     * @param eartagForm
+     * @return
+     */
     @GetMapping("/getEartag")
     public R getEartag(@Validated EartagForm eartagForm) {
         PageUtils page = eartagDataService.getEartag(eartagForm);
         return R.ok().put("resultData", page);
     }
 
+    /**
+     * 6. 耳标明细数据读取接口
+     * @param eartagDetailForm
+     * @return
+     */
     @GetMapping("/getEartagDetails")
     public R getEartagDetails(@Validated EartagDetailForm eartagDetailForm) {
         PageUtils page = eartagDataService.getEartagDetails(eartagDetailForm);
         return R.ok().put("resultData", page);
     }
 
+    /**
+     * 7. 每日存栏统计读取接口
+     * @param baseForm
+     * @return
+     */
     @GetMapping("/getPigStockByDay")
     public R getPigStockByDay(@Validated BaseForm baseForm) {
         PageUtils page = dailyTabulateDataService.getPigStockByDay(baseForm);
         return R.ok().put("resultData", page);
     }
+
+
+    /**
+     * 测试接收推送数据接口
+     * @param body
+     */
+    @PostMapping("/recive")
+    public void receiveData(@RequestBody String body) {
+        System.out.println(body);
+    }
 }

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

@@ -1,5 +1,6 @@
 package com.huimv.transmission.entity;
 
+import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -13,6 +14,7 @@ import java.io.Serializable;
  * @date 2021/7/26 17:18
  */
 @Data
+@TableName("farm_eartag_change")
 public class FarmEartagChangeEntity implements Serializable {
 
     private static final long serialVersionUID = 1L;

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

@@ -45,11 +45,10 @@ public class BaseForm {
     }
 
     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);
+        if (endDate != null) {
+            Date date = new Date();
+            return Constant.SDF_YMD.format(endDate).equals(Constant.SDF_YMD.format(date)) ? date : DateUtil.offsetDay(endDate, 1);
         }
+        return null;
     }
 }

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

@@ -0,0 +1,33 @@
+package com.huimv.transmission.entity.form;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/8/3 16:17
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class NewAndOffLineForm extends BaseForm implements Serializable {
+    private static final long serialVersionUID = -5462646837332791519L;
+
+    private Integer stage;
+
+    @Override
+    public Date getStartDate() {
+        return startDate == null ? new Date() : startDate;
+    }
+
+    @Override
+    public Date getEndDate() {
+        return endDate == null ? new Date() : endDate;
+    }
+}

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

@@ -4,6 +4,8 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
+import java.util.Calendar;
+import java.util.Date;
 
 /**
  * <p>
@@ -27,4 +29,6 @@ public class PigStockForm extends BaseForm implements Serializable {
     public PigStockForm(Integer pageNo, Integer pageSize) {
         super(pageNo, pageSize);
     }
+
+
 }

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

@@ -2,6 +2,8 @@ package com.huimv.transmission.entity.vo;
 
 import com.alibaba.fastjson.annotation.JSONField;
 import com.alibaba.fastjson.annotation.JSONType;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -24,6 +26,7 @@ public class ChangeEartagDataVo implements Serializable {
 
     private List<String> newEartagNo;
 
+    @JsonIgnore
     @JSONField(serialize = false)
     private Integer type;
 }

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

@@ -0,0 +1,28 @@
+package com.huimv.transmission.entity.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yinhao
+ * @date 2021/8/3 14:50
+ */
+@Data
+public class OffLineEartagsVo implements Serializable {
+    private static final long serialVersionUID = 6897456478389794661L;
+
+    /**
+     * 牧场编码
+     */
+    private String farmID;
+    /**
+     * 离线耳标列表
+     */
+    private List<String> eliminateEartagNo;
+}

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

@@ -4,6 +4,7 @@ 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.apache.http.HttpStatus;
 import org.springframework.web.method.HandlerMethod;
 import org.springframework.web.servlet.HandlerInterceptor;
 
@@ -28,7 +29,7 @@ public class JWTInterceptor implements HandlerInterceptor {
             return true;
         }
 
-        if (response.getStatus() == 404 || response.getStatus() == 500) {
+        if (response.getStatus() == HttpStatus.SC_NOT_FOUND || response.getStatus() == HttpStatus.SC_INTERNAL_SERVER_ERROR) {
             return false;
         }
 

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

@@ -13,6 +13,7 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -24,7 +25,9 @@ import java.util.List;
 @Repository
 public interface EartagDataDao extends BaseMapper<EartagDataEntity> {
 
-    List<NewAndOffLineEartagEntity> selectChangeEartagList();
+    List<NewAndOffLineEartagEntity> selectNowDayChangeEartagList();
+
+    IPage<NewAndOffLineEartagEntity> selectChangeEartagList(@Param("page") IPage page, @Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("farmCode") String farmCode, @Param("stage") Integer stage);
 
     IPage<EartagDataVo> selectByConditions(@Param("page") IPage<EartagDataVo> ipage, @Param(Constants.WRAPPER) LambdaQueryWrapper<EartagDataEntity> lambdaQuery);
 

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

@@ -3,6 +3,7 @@ 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.NewAndOffLineForm;
 import com.huimv.transmission.entity.form.PigStockForm;
 import com.huimv.transmission.entity.vo.ChangeEartagDataVo;
 import com.huimv.transmission.utils.PageUtils;
@@ -18,5 +19,7 @@ import com.huimv.transmission.utils.PageUtils;
 public interface FarmEartagChangeService extends IService<FarmEartagChangeEntity> {
     IPage<ChangeEartagDataVo> getPigStockByChangeType(Integer currPage, Integer pageSize, Integer type);
 
-    PageUtils getChangePigStock(PigStockForm pigStockForm,Integer type);
+    PageUtils getChangePigStock(NewAndOffLineForm newAndOffLineForm);
+
+    PageUtils getOffLinePigStock(NewAndOffLineForm newAndOffLineForm);
 }

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

@@ -68,9 +68,10 @@ public class DailyTabulateDataServiceImpl extends ServiceImpl<DailyTabulateDataD
         }
 
         LambdaQueryWrapper<DailyTabulateDataEntity> lambdaQuery = Wrappers.lambdaQuery();
-        lambdaQuery.eq(DailyTabulateDataEntity::getFarmCode, farmID)
+        lambdaQuery.eq(StringUtils.isNotEmpty(farmID), DailyTabulateDataEntity::getFarmCode, farmID)
                 .ge(baseForm.getStartDate() != null, DailyTabulateDataEntity::getStatisticDate, baseForm.getStartDate())
-                .le(baseForm.getEndDate() != null, DailyTabulateDataEntity::getStatisticDate, baseForm.getEndDate());
+                .le(baseForm.getEndDate() != null, DailyTabulateDataEntity::getStatisticDate, baseForm.getEndDate())
+                .orderByDesc(DailyTabulateDataEntity::getStatisticDate);
 
         IPage<DayPigStockVo> iPage = new Page<>(baseForm.getPageNo(), baseForm.getPageSize());
         IPage<DayPigStockVo> page = baseMapper.getPigStockByDay(iPage, lambdaQuery);
@@ -88,5 +89,6 @@ public class DailyTabulateDataServiceImpl extends ServiceImpl<DailyTabulateDataD
         IPage<DailyTabulateDataVo> iPage = new Page<>(pigStockForm.getPageNo(), pigStockForm.getPageSize());
         IPage<DailyTabulateDataVo> page = baseMapper.getPigStockPage(iPage, lambdaQuery);
         return new PageUtils(page);
+
     }
 }

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

@@ -46,7 +46,7 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataDao, EartagData
     @Override
     @Transactional(rollbackFor = Throwable.class)
     public void handleNewAndOffLineEartag() {
-        List<NewAndOffLineEartagEntity> list = baseMapper.selectChangeEartagList();
+        List<NewAndOffLineEartagEntity> list = baseMapper.selectNowDayChangeEartagList();
         HashSet<String> todaySet = new HashSet<>();
         HashSet<String> todaySetTemp = new HashSet<>();
         HashSet<String> beforeSet = new HashSet<>();
@@ -82,6 +82,10 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataDao, EartagData
             if (CollUtil.isNotEmpty(beforeSet)) {
                 farmEartagChangeDao.batchInsertNewEartags(farmCode, 2, beforeSet);
             }
+
+            todaySet.clear();
+            beforeSet.clear();
+            todaySetTemp.clear();
         }
     }
 

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

@@ -1,13 +1,18 @@
 package com.huimv.transmission.service.impl;
 
 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;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.transmission.entity.EartagDataEntity;
 import com.huimv.transmission.entity.FarmEartagChangeEntity;
+import com.huimv.transmission.entity.NewAndOffLineEartagEntity;
+import com.huimv.transmission.entity.form.NewAndOffLineForm;
 import com.huimv.transmission.entity.form.PigStockForm;
 import com.huimv.transmission.entity.vo.ChangeEartagDataVo;
+import com.huimv.transmission.entity.vo.OffLineEartagsVo;
 import com.huimv.transmission.mapper.BaseFarmInfoDao;
 import com.huimv.transmission.mapper.EartagDataDao;
 import com.huimv.transmission.mapper.FarmEartagChangeDao;
@@ -15,9 +20,16 @@ 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.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * <p>
  *
@@ -33,7 +45,7 @@ public class FarmEartagChangeServiceImpl extends ServiceImpl<FarmEartagChangeDao
     private BaseFarmInfoDao baseFarmInfoDao;
 
     @Autowired
-    private EartagDataService eartagDataService;
+    private EartagDataDao eartagDataDao;
 
     @Override
     public IPage<ChangeEartagDataVo> getPigStockByChangeType(Integer currPage, Integer pageSize, Integer type) {
@@ -44,16 +56,75 @@ public class FarmEartagChangeServiceImpl extends ServiceImpl<FarmEartagChangeDao
     }
 
     @Override
-    public PageUtils getChangePigStock(PigStockForm pigStockForm, Integer type) {
-        String farmID = pigStockForm.getFarmID();
+    public PageUtils getChangePigStock(NewAndOffLineForm newAndOffLineForm) {
+
+        IPage<NewAndOffLineEartagEntity> page = selectNewAndOffLineEartags(newAndOffLineForm);
+        List<NewAndOffLineEartagEntity> records = page.getRecords();
+
+        List<ChangeEartagDataVo> collect = records.stream().map(entity -> {
+            ChangeEartagDataVo changeEartagDataVo = new ChangeEartagDataVo();
+            String beforeEartags = entity.getBeforeEartags();
+            String todayEartags = entity.getTodayEartags();
+            List<String> list = buildList(todayEartags, beforeEartags);
+            changeEartagDataVo.setFarmID(entity.getFarmCode());
+            changeEartagDataVo.setNewEartagNo(list);
+            return changeEartagDataVo;
+        }).collect(Collectors.toList());
+
+        IPage<ChangeEartagDataVo> newEartagPage = new Page<>();
+        buildPage(page, newEartagPage);
+        newEartagPage.setRecords(collect);
+
+        return new PageUtils(newEartagPage);
+    }
+
+    @Override
+    public PageUtils getOffLinePigStock(NewAndOffLineForm newAndOffLineForm) {
+
+        IPage<NewAndOffLineEartagEntity> page = selectNewAndOffLineEartags(newAndOffLineForm);
+        List<NewAndOffLineEartagEntity> records = page.getRecords();
+
+        List<OffLineEartagsVo> collect = records.stream().map(entity -> {
+            OffLineEartagsVo offLineEartagsVo = new OffLineEartagsVo();
+            String todayEartags = entity.getTodayEartags();
+            String beforeEartags = entity.getBeforeEartags();
+            List<String> list = buildList(beforeEartags, todayEartags);
+            offLineEartagsVo.setFarmID(entity.getFarmCode());
+            offLineEartagsVo.setEliminateEartagNo(list);
+            return offLineEartagsVo;
+        }).collect(Collectors.toList());
+
+        IPage<OffLineEartagsVo> eliminateEartagPage = new Page<>();
+        buildPage(page, eliminateEartagPage);
+        eliminateEartagPage.setRecords(collect);
+        return new PageUtils(eliminateEartagPage);
+    }
+
+    private IPage<NewAndOffLineEartagEntity> selectNewAndOffLineEartags(NewAndOffLineForm newAndOffLineForm) {
+        String farmID = newAndOffLineForm.getFarmID();
         if (StringUtils.isNotEmpty(farmID)) {
             EartagDataServiceImpl.checkFarmCode(farmID, baseFarmInfoDao);
         }
+        IPage<NewAndOffLineEartagEntity> iPage = new Page<>(newAndOffLineForm.getPageNo(), newAndOffLineForm.getPageSize());
+        return eartagDataDao.selectChangeEartagList(iPage, newAndOffLineForm.getStartDate(), newAndOffLineForm.getEndDate(), newAndOffLineForm.getFarmID(), newAndOffLineForm.getStage());
+    }
+
+    private List<String> buildList(String first, String second) {
+        List<String> list = new ArrayList<>();
+        if (StringUtils.isNotEmpty(first)) {
+            list.addAll(Arrays.asList(first.split(",")));
+        }
+        if (StringUtils.isNotEmpty(second)) {
+            list.removeAll(Arrays.asList(second.split(",")));
+        }
+        return list;
+    }
+
 
-//        LambdaQueryWrapper<FarmEartagChangeEntity> lambdaQuery = Wrappers.lambdaQuery();
-//        lambdaQuery.eq(StringUtils.isNotEmpty(farmID), FarmEartagChangeEntity::getFarmId, farmID)
-//                .ge(pigStockForm.getStartDate() != null,)
-//                .eq(FarmEartagChangeEntity::getChangeType, type)
-        return null;
+    private void buildPage(IPage source, IPage target) {
+        target.setPages(source.getPages());
+        target.setTotal(source.getTotal());
+        target.setCurrent(source.getCurrent());
+        target.setSize(source.getSize());
     }
 }

+ 7 - 7
smart.eartag.data.platform/huimv-smart-eartag-data-transmission/src/main/java/com/huimv/transmission/task/DataProcessingTask.java

@@ -27,7 +27,7 @@ import java.nio.charset.Charset;
  * @author yinhao
  * @date 2021/7/27 8:39
  */
-@EnableAsync
+//@EnableAsync
 @Configuration
 public class DataProcessingTask {
 
@@ -38,8 +38,8 @@ public class DataProcessingTask {
     private EartagDataService eartagDataService;
 
 
-    @Async
-    @Scheduled(cron = "0 0 0 * * ?")
+//    @Async
+//    @Scheduled(cron = "0 0 0 * * ?")
     public void getNewEartagList() {
 
         CloseableHttpClient httpClient = null;
@@ -72,8 +72,8 @@ public class DataProcessingTask {
         }
     }
 
-    @Async
-    @Scheduled(cron = "0 0 0 * * ?")
+//    @Async
+//    @Scheduled(cron = "0 0 0 * * ?")
     public void getOffLineEartagList() {
         CloseableHttpClient httpClient = null;
         try {
@@ -119,8 +119,8 @@ public class DataProcessingTask {
         httpClient.execute(httpPost);
     }
 
-    @Async
-    @Scheduled(cron = "0 0 0 * * ?")
+//    @Async
+//    @Scheduled(cron = "0 0 0 * * ?")
     public void pushPigStock() {
 
         CloseableHttpClient httpClient = null;

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

@@ -10,7 +10,7 @@ import java.util.Date;
 
 public class TokenUtil {
 
-    private static final long EXPIRE_TIME =  24L * 60L * 60L * 1000L;  //有效时长
+    private static final long EXPIRE_TIME = 24L * 60L * 60L * 1000L;  //有效时长
     private static final String TOKEN_SECRET = "ben";       // 秘钥
 
     /**

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

@@ -24,6 +24,8 @@ spring:
     view:
       prefix: /
       suffix: .html
+#    format:
+#      date: yyyy-MM-dd
   main:
     allow-bean-definition-overriding: true
 #  redis:

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

@@ -11,7 +11,7 @@
           statistic_date time,
           stock_total quantity,
           stock_new new_count,
-          offline_no eliminate,
+          offline_no eliminate
         FROM daily_tabulate_data
         ${ew.customSqlSegment}
     </select>

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

@@ -39,9 +39,15 @@
             GROUP_CONCAT( DISTINCT ed.eartag_no ) AS today_eartags
             FROM
             eartag_data ed
-            WHERE
-            DATE_FORMAT( ed.time, '%Y-%m-%d' ) = DATE_FORMAT( NOW(), '%Y-%m-%d' )
+            WHERE DATE_FORMAT( ed.time, '%Y-%m-%d' ) &lt;= DATE_FORMAT( #{endDate}, '%Y-%m-%d' )
+            AND DATE_FORMAT( ed.time, '%Y-%m-%d' ) &gt;= DATE_FORMAT( #{startDate}, '%Y-%m-%d' )
             AND farm_code IS NOT NULL
+            <if test="farmCode != null and farmCode != ''">
+                AND farm_code = #{farmCode}
+            </if>
+            <if test="stage != null">
+                AND stage = #{stage}
+            </if>
             GROUP BY
             ed.farm_code
             ) today
@@ -53,7 +59,14 @@
             FROM
             eartag_data ed
             WHERE
-            DATE_FORMAT( ed.time, '%Y-%m-%d' ) &lt; DATE_FORMAT( NOW(), '%Y-%m-%d' )
+            DATE_FORMAT( ed.time, '%Y-%m-%d' ) &lt; DATE_FORMAT( #{startDate}, '%Y-%m-%d' )
+            AND farm_code IS NOT NULL
+            <if test="farmCode != null and farmCode != ''">
+                AND farm_code = #{farmCode}
+            </if>
+            <if test="stage != null">
+                AND stage = #{stage}
+            </if>
             GROUP BY
             ed.farm_code
             ) old
@@ -100,4 +113,39 @@
     </select>
 
 
+    <select id="selectNowDayChangeEartagList" resultType="com.huimv.transmission.entity.NewAndOffLineEartagEntity">
+        SELECT
+            today.farm_code,
+            today.today_eartags,
+            old.before_eartags
+        FROM
+            (
+            SELECT
+                ed.farm_code,
+                GROUP_CONCAT( DISTINCT ed.eartag_no ) AS today_eartags
+            FROM
+              eartag_data ed
+            WHERE
+              DATE_FORMAT( ed.time, '%Y-%m-%d' ) = DATE_FORMAT( NOW(), '%Y-%m-%d' )
+              AND farm_code IS NOT NULL
+            GROUP BY
+            ed.farm_code
+            ) today
+        LEFT JOIN
+            (
+            SELECT
+              ed.farm_code,
+              GROUP_CONCAT( DISTINCT ed.eartag_no ) AS before_eartags
+            FROM
+              eartag_data ed
+            WHERE
+              DATE_FORMAT( ed.time, '%Y-%m-%d' ) &lt; DATE_FORMAT( NOW(), '%Y-%m-%d' )
+            AND farm_code IS NOT NULL
+            GROUP BY
+              ed.farm_code
+            ) old
+        ON today.farm_code = old.farm_code
+    </select>
+
+
 </mapper>