Sfoglia il codice sorgente

平养管理+其他修改

wwh 6 mesi fa
parent
commit
544161235e
93 ha cambiato i file con 4395 aggiunte e 285 eliminazioni
  1. 1 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/AdminApplication.java
  2. 1 1
      huimv-admin/src/main/java/com/huimv/guowei/admin/config/InterceptorConfig.java
  3. 23 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/controller/EnergyWarningInfoController.java
  4. 3 157
      huimv-admin/src/main/java/com/huimv/guowei/admin/controller/EnergyWarningThresholdController.java
  5. 12 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/controller/EnergyWaterController.java
  6. 11 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/controller/EnergyWaterPressureController.java
  7. 5 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/controller/EnvDataController.java
  8. 6 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/controller/EnvDeviceController.java
  9. 2 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/entity/BaseBuilding.java
  10. 3 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/entity/EnergyWarningInfo.java
  11. 21 11
      huimv-admin/src/main/java/com/huimv/guowei/admin/entity/EnergyWarningThreshold.java
  12. 4 4
      huimv-admin/src/main/java/com/huimv/guowei/admin/entity/SysCamera.java
  13. 2 2
      huimv-admin/src/main/java/com/huimv/guowei/admin/entity/SysCameraArea.java
  14. 15 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/entity/dto/ScreenWaterVo.java
  15. 2 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/entity/vo/TreeBaseBuilding.java
  16. 35 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/controller/GroupAdviseController.java
  17. 64 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/controller/GroupBatchController.java
  18. 152 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/controller/GroupDuckInfoController.java
  19. 59 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/controller/GroupEatingController.java
  20. 45 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/controller/GroupEggController.java
  21. 74 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/controller/GroupFeedingEggController.java
  22. 45 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/controller/GroupLeaveController.java
  23. 41 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/controller/GroupThresholdController.java
  24. 77 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/GroupAdvise.java
  25. 46 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/GroupBatch.java
  26. 95 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/GroupDuckInfo.java
  27. 77 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/GroupEating.java
  28. 78 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/GroupEgg.java
  29. 86 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/GroupFeedingEgg.java
  30. 70 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/GroupLeave.java
  31. 107 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/GroupThreshold.java
  32. 15 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/dto/ScreenBreedVo.java
  33. 19 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/dto/ScreenProdVo.java
  34. 19 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/BreedEatingEgg.java
  35. 17 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/BreedEatingVo.java
  36. 17 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/BreedEggVo.java
  37. 32 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/BreedingVo.java
  38. 11 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/EggAndFeedingVo.java
  39. 72 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/GroupDuckInfoOutVo.java
  40. 17 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/GroupDuckInfoVo.java
  41. 17 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/GroupEatingVo.java
  42. 19 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/GroupFeedAndEggVo.java
  43. 27 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/ImportDuckInfoVo.java
  44. 19 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/ImportEggVo.java
  45. 19 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/ImportFeedingVo.java
  46. 16 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/mapper/GroupAdviseMapper.java
  47. 16 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/mapper/GroupBatchMapper.java
  48. 34 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/mapper/GroupDuckInfoMapper.java
  49. 36 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/mapper/GroupEatingMapper.java
  50. 27 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/mapper/GroupEggMapper.java
  51. 30 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/mapper/GroupFeedingEggMapper.java
  52. 16 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/mapper/GroupLeaveMapper.java
  53. 16 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/mapper/GroupThresholdMapper.java
  54. 19 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/IGroupAdviseService.java
  55. 29 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/IGroupBatchService.java
  56. 57 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/IGroupDuckInfoService.java
  57. 31 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/IGroupEatingService.java
  58. 24 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/IGroupEggService.java
  59. 38 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/IGroupFeedingEggService.java
  60. 25 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/IGroupLeaveService.java
  61. 23 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/IGroupThresholdService.java
  62. 46 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/impl/GroupAdviseServiceImpl.java
  63. 145 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/impl/GroupBatchServiceImpl.java
  64. 762 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/impl/GroupDuckInfoServiceImpl.java
  65. 123 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/impl/GroupEatingServiceImpl.java
  66. 100 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/impl/GroupEggServiceImpl.java
  67. 275 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/impl/GroupFeedingEggServiceImpl.java
  68. 117 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/impl/GroupLeaveServiceImpl.java
  69. 49 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/impl/GroupThresholdServiceImpl.java
  70. 7 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/mapper/EnergyWaterMapper.java
  71. 8 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/mapper/EnergyWaterPressureMapper.java
  72. 158 85
      huimv-admin/src/main/java/com/huimv/guowei/admin/mqtt/EnvControll/PushCallback.java
  73. 6 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/service/IEnergyWarningThresholdService.java
  74. 6 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/service/IEnergyWaterPressureService.java
  75. 5 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/service/IEnergyWaterService.java
  76. 3 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/service/IEnvDataService.java
  77. 28 22
      huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/BaseBuildingServiceImpl.java
  78. 47 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/EnergyWarningThresholdServiceImpl.java
  79. 65 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/EnergyWaterPressureServiceImpl.java
  80. 99 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/EnergyWaterServiceImpl.java
  81. 34 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/EnvDataServiceImpl.java
  82. 4 0
      huimv-admin/src/main/java/com/huimv/guowei/admin/timer/DeviceTimer.java
  83. 46 3
      huimv-admin/src/main/java/com/huimv/guowei/admin/utils/Print.java
  84. 20 0
      huimv-admin/src/main/resources/com/huimv/guowei/admin/mapper/EnergyWaterMapper.xml
  85. 13 0
      huimv-admin/src/main/resources/mapper/EnergyWaterPressureMapper.xml
  86. 5 0
      huimv-admin/src/main/resources/mapper/GroupAdviseMapper.xml
  87. 5 0
      huimv-admin/src/main/resources/mapper/GroupBatchMapper.xml
  88. 93 0
      huimv-admin/src/main/resources/mapper/GroupDuckInfoMapper.xml
  89. 52 0
      huimv-admin/src/main/resources/mapper/GroupEatingMapper.xml
  90. 18 0
      huimv-admin/src/main/resources/mapper/GroupEggMapper.xml
  91. 27 0
      huimv-admin/src/main/resources/mapper/GroupFeedingEggMapper.xml
  92. 5 0
      huimv-admin/src/main/resources/mapper/GroupLeaveMapper.xml
  93. 5 0
      huimv-admin/src/main/resources/mapper/GroupThresholdMapper.xml

+ 1 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/AdminApplication.java

@@ -13,6 +13,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
 
 @SpringBootApplication
 @MapperScan("com.huimv.guowei.admin.mapper")
+@MapperScan("com.huimv.guowei.admin.group.mapper")
 @EnableScheduling
 public class AdminApplication {
 

+ 1 - 1
huimv-admin/src/main/java/com/huimv/guowei/admin/config/InterceptorConfig.java

@@ -30,6 +30,6 @@ public class InterceptorConfig implements WebMvcConfigurer {
                 excludePathPatterns("/admin/my/*")
                 .excludePathPatterns("/receive/feed","/base-duck-info/printDuck","/base-duck-info/printChi","/env-regular-call-egg/printEgg","/send/play","/energy-water/printWater","/energy-electricity/printElectricity",
                         "/admin/cameraArea/getUrl","/breed/importData","/duck-immunity-info/importData","/base-duck-info/importData"
-                        ,"/duck-body-size-info/importData","/duck-egg-texture-info/importData");
+                        ,"/duck-body-size-info/importData","/duck-egg-texture-info/importData","/group-duck-info/printDuckInfo");
     }
 }

+ 23 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/controller/EnergyWarningInfoController.java

@@ -1,8 +1,18 @@
 package com.huimv.guowei.admin.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
+import com.huimv.guowei.admin.entity.EnergyWarningInfo;
+import com.huimv.guowei.admin.service.IEnergyWarningInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Calendar;
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  *  前端控制器
@@ -16,4 +26,17 @@ import org.springframework.web.bind.annotation.*;
 @CrossOrigin
 public class EnergyWarningInfoController {
 
+    @Autowired
+    private IEnergyWarningInfoService warningInfoService;
+
+    @PostMapping("/listScreen")
+    public Result listWaterLine(@RequestBody Map<String ,String> paramsMap){
+        String farmId = paramsMap.get("farmId");
+        String unitId = paramsMap.get("unitId");
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
+        List<EnergyWarningInfo> list = warningInfoService.list(new QueryWrapper<EnergyWarningInfo>().eq("farm_id", farmId)
+                .eq("unit_id", unitId).ge("date", calendar.getTime()));
+        return new Result(ResultCode.SUCCESS, list);
+    }
 }

+ 3 - 157
huimv-admin/src/main/java/com/huimv/guowei/admin/controller/EnergyWarningThresholdController.java

@@ -33,170 +33,16 @@ import java.util.Map;
 public class EnergyWarningThresholdController {
     @Resource
     private IEnergyWarningThresholdService energyWarningThresholdService;
-    @Resource
-    private IEnvDeviceChipService envDeviceChipService;
 
     @PostMapping("/saveThreshold")
     @Transactional
-    public Result saveThreshold(@RequestBody Map<String ,String> paramsMap){
-        String maxWater = paramsMap.get("maxWater");
-        String maxEle = paramsMap.get("maxEle");
-        String maxWaterLine1 = paramsMap.get("maxWaterLine1");
-        String maxWaterLine2 = paramsMap.get("maxWaterLine2");
-        String maxWaterLine3 = paramsMap.get("maxWaterLine3");
-        String maxWaterLine4 = paramsMap.get("maxWaterLine4");
-        String maxWaterLinePressure1 = paramsMap.get("maxWaterLinePressure1");
-        String maxWaterLinePressure2 = paramsMap.get("maxWaterLinePressure2");
-        String maxWaterLinePressure3 = paramsMap.get("maxWaterLinePressure3");
-        String maxWaterLinePressure4 = paramsMap.get("maxWaterLinePressure4");
-        String farmId = paramsMap.get("farmId");
-
-        maxWater = nullParameter(maxWater);
-        maxEle = nullParameter(maxEle);
-        maxWaterLine1 = nullParameter(maxWaterLine1);
-        maxWaterLine2 = nullParameter(maxWaterLine2);
-        maxWaterLine3 = nullParameter(maxWaterLine3);
-        maxWaterLine4 = nullParameter(maxWaterLine4);
-        maxWaterLinePressure1 = nullParameter(maxWaterLinePressure1);
-        maxWaterLinePressure2 = nullParameter(maxWaterLinePressure2);
-        maxWaterLinePressure3 = nullParameter(maxWaterLinePressure3);
-        maxWaterLinePressure4 = nullParameter(maxWaterLinePressure4);
-
-        EnergyWarningThreshold energyWarningThreshold0 = new EnergyWarningThreshold();
-        energyWarningThreshold0.setMaxValue(maxWater);
-        energyWarningThreshold0.setFarmId(Integer.parseInt(farmId));
-        energyWarningThreshold0.setWarningType(0);
-        energyWarningThresholdService.saveOrUpdate(energyWarningThreshold0,new UpdateWrapper<EnergyWarningThreshold>()
-                .eq("farm_id",farmId)
-                .eq("warning_type",0));
-
-        EnergyWarningThreshold energyWarningThreshold1 = new EnergyWarningThreshold();
-        energyWarningThreshold1.setMaxValue(maxEle);
-        energyWarningThreshold1.setFarmId(Integer.parseInt(farmId));
-        energyWarningThreshold1.setWarningType(1);
-        energyWarningThresholdService.saveOrUpdate(energyWarningThreshold1,new UpdateWrapper<EnergyWarningThreshold>()
-                .eq("farm_id",farmId)
-                .eq("warning_type",1));
-
-        List<EnvDeviceChip> energyWarningThresholdList = envDeviceChipService.list(new QueryWrapper<EnvDeviceChip>().eq("chip_type",3));
-        for (int i = 0; i < energyWarningThresholdList.size(); i++) {
-            EnergyWarningThreshold energyWarningThreshold = new EnergyWarningThreshold();
-            String maxWaterLine = "";
-            if (i == 0) {
-                maxWaterLine = maxWaterLine1;
-            } else if (i == 1) {
-                maxWaterLine = maxWaterLine2;
-            } else if (i == 2) {
-                maxWaterLine = maxWaterLine3;
-            } else if (i == 3) {
-                maxWaterLine = maxWaterLine4;
-            }
-            energyWarningThreshold.setMaxValue(maxWaterLine);
-            energyWarningThreshold.setFarmId(Integer.parseInt(farmId));
-            energyWarningThreshold.setWarningType(2);
-            energyWarningThreshold.setChipCode(energyWarningThresholdList.get(i).getChipCode());
-            energyWarningThresholdService.saveOrUpdate(energyWarningThreshold,new UpdateWrapper<EnergyWarningThreshold>()
-                    .eq("farm_id",farmId)
-                    .eq("warning_type",2).eq("chip_code",energyWarningThresholdList.get(i).getChipCode()));
-        }
-
-        List<EnvDeviceChip> energyWarningPressureThresholdList = envDeviceChipService.list(new QueryWrapper<EnvDeviceChip>().eq("chip_type",3));
-        for (int i = 0; i < energyWarningPressureThresholdList.size(); i++) {
-            EnergyWarningThreshold energyWarningThreshold = new EnergyWarningThreshold();
-            String maxWaterLinePressure = "";
-            if (i == 0) {
-                maxWaterLinePressure = maxWaterLinePressure1;
-            } else if (i == 1) {
-                maxWaterLinePressure = maxWaterLinePressure2;
-            } else if (i == 2) {
-                maxWaterLinePressure = maxWaterLinePressure3;
-            } else if (i == 3) {
-                maxWaterLinePressure = maxWaterLinePressure4;
-            }
-            energyWarningThreshold.setMaxValue(maxWaterLinePressure);
-            energyWarningThreshold.setFarmId(Integer.parseInt(farmId));
-            energyWarningThreshold.setWarningType(3);
-            energyWarningThreshold.setChipCode(energyWarningThresholdList.get(i).getChipCode());
-            energyWarningThresholdService.saveOrUpdate(energyWarningThreshold,new UpdateWrapper<EnergyWarningThreshold>()
-                    .eq("farm_id",farmId)
-                    .eq("warning_type",3).eq("chip_code",energyWarningThresholdList.get(i).getChipCode()));
-        }
-        return Result.SUCCESS();
+    public Result saveThreshold(@RequestBody EnergyWarningThreshold warningThreshold){
+        return energyWarningThresholdService.saveThreshold(warningThreshold) ;
     }
 
     @PostMapping("/getThreshold")
     public Result getThreshold(@RequestBody Map<String ,String> paramsMap){
-        String farmId = paramsMap.get("farmId");
-        Map resultMap = new HashMap();
-        EnergyWarningThreshold waterThreshold = energyWarningThresholdService.getOne(new QueryWrapper<EnergyWarningThreshold>().eq("farm_id", farmId).eq("warning_type", 0));
-        if (ObjectUtil.isEmpty(waterThreshold)){
-            resultMap.put("maxWater",0);
-        }else {
-            if(!StringUtils.isEmpty(waterThreshold.getMaxValue())){
-                resultMap.put("maxWater", waterThreshold.getMaxValue());
-            }else {
-                resultMap.put("maxWater",0);
-            }
-        }
-        EnergyWarningThreshold eleThreshold = energyWarningThresholdService.getOne(new QueryWrapper<EnergyWarningThreshold>().eq("farm_id", farmId).eq("warning_type", 1));
-        if (ObjectUtil.isEmpty(eleThreshold)){
-            resultMap.put("maxEle",0);
-        }else {
-            if(!StringUtils.isEmpty(eleThreshold.getMaxValue())){
-                resultMap.put("maxEle",eleThreshold.getMaxValue());
-            }else {
-                resultMap.put("maxEle",0);
-            }
-        }
-        //水表
-        List<EnergyWarningThreshold> energyWarningThresholdList = energyWarningThresholdService.list(new QueryWrapper<EnergyWarningThreshold>().eq("warning_type", 2).eq("farm_id", farmId));
-        if (ObjectUtil.isEmpty(energyWarningThresholdList)){
-           resultMap.put("maxWaterLine1",0);
-           resultMap.put("maxWaterLine2",0);
-           resultMap.put("maxWaterLine3",0);
-           resultMap.put("maxWaterLine4",0);
-        }
-        for (int i = 1; i <= energyWarningThresholdList.size(); i++) {
-            EnergyWarningThreshold energyWarningThreshold = energyWarningThresholdList.get(i-1);
-            if (ObjectUtil.isEmpty(energyWarningThreshold)){
-                resultMap.put("maxWaterLine"+i,0);
-            }else {
-                if(!StringUtils.isEmpty(energyWarningThreshold.getMaxValue())){
-                    resultMap.put("maxWaterLine"+i,energyWarningThreshold.getMaxValue());
-                }else {
-                    resultMap.put("maxWaterLine"+i,0);
-                }
-            }
-        }
-        //水压
-        List<EnergyWarningThreshold> energyWarningPressureThresholdList = energyWarningThresholdService.list(new QueryWrapper<EnergyWarningThreshold>().eq("warning_type", 3).eq("farm_id", farmId));
-        if (ObjectUtil.isEmpty(energyWarningPressureThresholdList)){
-            resultMap.put("maxWaterLinePressure1",0);
-            resultMap.put("maxWaterLinePressure2",0);
-            resultMap.put("maxWaterLinePressure3",0);
-            resultMap.put("maxWaterLinePressure4",0);
-        }
-        for (int i = 1; i <= energyWarningPressureThresholdList.size(); i++) {
-            EnergyWarningThreshold energyWarningThreshold = energyWarningPressureThresholdList.get(i-1);
-            if (ObjectUtil.isEmpty(energyWarningThreshold)){
-                resultMap.put("maxWaterLinePressure"+i,0);
-            }else {
-                if(!StringUtils.isEmpty(energyWarningThreshold.getMaxValue())){
-                    resultMap.put("maxWaterLinePressure"+i,energyWarningThreshold.getMaxValue());
-                }else {
-                    resultMap.put("maxWaterLinePressure"+i,0);
-                }
-            }
-        }
-        return new Result(ResultCode.SUCCESS,resultMap);
-    }
-
-    public String nullParameter(String param){
-        if (StringUtils.isEmpty(param)){
-            param = "0";
-        }
-        return param;
+        return energyWarningThresholdService.getThreshold(paramsMap);
     }
 
-
 }

+ 12 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/controller/EnergyWaterController.java

@@ -73,4 +73,16 @@ public class EnergyWaterController {
         String path = "/opt/guowei/water.xls";
         PdfUtil.returnPdfStream3(response, path, "用水信息");
     }
+
+    //平养用水
+    @PostMapping("/listWaterGroup")
+    public Result listWaterGroup(@RequestBody Map<String ,String> paramsMap){
+        return energyWaterService.listWaterGroup(paramsMap);
+    }
+
+    //大屏平养区用水监测
+    @PostMapping("/screenWater")
+    public Result screenWater(@RequestBody Map<String ,String> paramsMap){
+        return energyWaterService.screenWater(paramsMap);
+    }
 }

+ 11 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/controller/EnergyWaterPressureController.java

@@ -38,4 +38,15 @@ public class EnergyWaterPressureController {
         return energyWaterPressureService.listWaterLinePressure(paramsMap);
     }
 
+    //平养水压
+    @PostMapping("/listGroupPressure")
+    public Result listGroupPressure(@RequestBody Map<String, String> paramsMap){
+        return energyWaterPressureService.listGroupPressure(paramsMap);
+    }
+
+    //平养区的水压监测
+    @PostMapping("/screenPressure")
+    public Result screenPressure(@RequestBody Map<String, String> paramsMap){
+        return energyWaterPressureService.screenPressure(paramsMap);
+    }
 }

+ 5 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/controller/EnvDataController.java

@@ -46,4 +46,9 @@ public class EnvDataController {
     public Result listDetail(@RequestBody Map<String ,String> paramsMap){
         return envDataService.listDetail(paramsMap);
     }
+    //大屏平养区栋舍监测
+    @PostMapping("/screenEnv")
+    public Result screenEnv(@RequestBody Map<String ,String> paramsMap){
+        return envDataService.screenEnv(paramsMap);
+    }
 }

+ 6 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/controller/EnvDeviceController.java

@@ -115,6 +115,7 @@ public class EnvDeviceController {
             int fan = 1;
             int tp = 1;
             int spray = 1;
+            int light = 1;
             for (int i = 0; i <list.size() ; i++) {
                 EnvDeviceEquipment envDeviceEquipment = new EnvDeviceEquipment();
                 envDeviceEquipment.setFarmId(Integer.parseInt(farmId));
@@ -139,6 +140,11 @@ public class EnvDeviceController {
                         envDeviceEquipment.setEquipmentType(3);
                         envDeviceEquipment.setDeviceAlias(unitName+"喷雾");
                         spray++;
+                    case 4:
+                        envDeviceEquipment.setEquipmentName("照明"+light);
+                        envDeviceEquipment.setEquipmentType(4);
+                        envDeviceEquipment.setDeviceAlias(unitName+"照明");
+                        spray++;
                     break;
                 }
                 if (!envDeviceEquipmentService.save(envDeviceEquipment)) {

+ 2 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/entity/BaseBuilding.java

@@ -57,5 +57,7 @@ public class BaseBuilding implements Serializable {
 
     private String other3;
 
+    private Integer type;
+
 
 }

+ 3 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/entity/EnergyWarningInfo.java

@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import  java.util.Date;
 import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -66,6 +68,7 @@ public class EnergyWarningInfo implements Serializable {
     /**
      * 日期
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date date;
 
     private Integer farmId;

+ 21 - 11
huimv-admin/src/main/java/com/huimv/guowei/admin/entity/EnergyWarningThreshold.java

@@ -27,21 +27,31 @@ public class EnergyWarningThreshold implements Serializable {
     @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
-    private String maxValue;
+    private Integer farmId;
 
-    private String minValue;
+    private String waterCount;
 
-    private Integer farmId;
+    private String electricityCount;
+
+    private String waterOne;
+
+    private String waterTwo;
+
+    private String waterThree;
+
+    private String waterFour;
+
+    private String pressureOne;
+
+    private String pressureTwo;
+
+    private String pressureThree;
+
+    private String pressureFour;
 
-    /**
-     * 0 总水 ,1总电 ,2单个设备
-     */
-    private Integer warningType;
+    private String groupWater;
 
-    /**
-     * 设备id
-     */
-    private String chipCode;
+    private String groupPressure;
 
 
 }

+ 4 - 4
huimv-admin/src/main/java/com/huimv/guowei/admin/entity/SysCamera.java

@@ -6,9 +6,9 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.io.Serializable;
 
-import com.fhs.core.trans.anno.Trans;
-import com.fhs.core.trans.constant.TransType;
-import com.fhs.core.trans.vo.TransPojo;
+//import com.fhs.core.trans.anno.Trans;
+//import com.fhs.core.trans.constant.TransType;
+//import com.fhs.core.trans.vo.TransPojo;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -25,7 +25,7 @@ import lombok.experimental.Accessors;
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
 @TableName("sys_camera")
-public class SysCamera implements Serializable, TransPojo {
+public class SysCamera implements Serializable/*, TransPojo*/ {
 
     private static final long serialVersionUID = 1L;
 

+ 2 - 2
huimv-admin/src/main/java/com/huimv/guowei/admin/entity/SysCameraArea.java

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.io.Serializable;
 
-import com.fhs.core.trans.vo.TransPojo;
+//import com.fhs.core.trans.vo.TransPojo;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -22,7 +22,7 @@ import lombok.experimental.Accessors;
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
 @TableName("sys_camera_area")
-public class SysCameraArea implements TransPojo {
+public class SysCameraArea /*implements TransPojo*/ {
 
     @TableId(value = "id", type = IdType.AUTO)
     private Integer id;

+ 15 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/entity/dto/ScreenWaterVo.java

@@ -0,0 +1,15 @@
+package com.huimv.guowei.admin.entity.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ScreenWaterVo {
+
+    private String waterValue;
+
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date createDate;
+}

+ 2 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/entity/vo/TreeBaseBuilding.java

@@ -29,6 +29,8 @@ public class TreeBaseBuilding implements Comparable<TreeBaseBuilding>  {
 
     private Integer sort;
 
+    private Integer type;
+
     private List<TreeBaseBuilding> childNode;
 
     @Override

+ 35 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/controller/GroupAdviseController.java

@@ -0,0 +1,35 @@
+package com.huimv.guowei.admin.group.controller;
+
+
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.group.service.IGroupAdviseService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 建议信息 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-10-08
+ */
+@RestController
+@RequestMapping("/group-advise")
+@CrossOrigin
+public class GroupAdviseController {
+
+    @Autowired
+    private IGroupAdviseService adviseService;
+
+    @RequestMapping("/listPage")
+    public Result listPage(@RequestBody Map<String, String> paramsMap) {
+        return adviseService.listPage(paramsMap);
+    }
+}

+ 64 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/controller/GroupBatchController.java

@@ -0,0 +1,64 @@
+package com.huimv.guowei.admin.group.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
+import com.huimv.guowei.admin.group.entity.GroupBatch;
+import com.huimv.guowei.admin.group.service.IGroupBatchService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 平养批次 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+@RestController
+@RequestMapping("/group-batch")
+@CrossOrigin
+public class GroupBatchController {
+
+    @Autowired
+    private IGroupBatchService batchService;
+
+    @RequestMapping("/listPage")
+    public Result listPage(@RequestBody Map<String, String> paramsMap) {
+        return batchService.listPage(paramsMap);
+    }
+
+    @RequestMapping("/add")
+    public Result add(@RequestBody GroupBatch groupBatch) {
+        return batchService.add(groupBatch);
+    }
+
+    @RequestMapping("/edit")
+    public Result edit(@RequestBody GroupBatch groupBatch) {
+        return batchService.edit(groupBatch);
+    }
+
+    @RequestMapping("/remove")
+    public Result remove(@RequestBody Map<String, String> paramsMap) {
+        return batchService.remove(paramsMap);
+    }
+
+    @RequestMapping("/list")
+    public Result list(@RequestBody Map<String, String> paramsMap) {
+        return new Result(ResultCode.SUCCESS,batchService.list(new QueryWrapper<GroupBatch>().eq("farm_id",paramsMap.get("farmId"))));
+    }
+
+    //大屏平养区健康评估
+    @RequestMapping("/screenBatch")
+    public Result screenBatch(@RequestBody Map<String, String> paramsMap) {
+        return batchService.screenBatch(paramsMap);
+    }
+}

+ 152 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/controller/GroupDuckInfoController.java

@@ -0,0 +1,152 @@
+package com.huimv.guowei.admin.group.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.huimv.guowei.admin.common.utils.PdfUtil;
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
+import com.huimv.guowei.admin.group.entity.GroupDuckInfo;
+import com.huimv.guowei.admin.group.service.IGroupDuckInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.text.ParseException;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * <p>
+ * 平养鸭只档案 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+@RestController
+@RequestMapping("/group-duck-info")
+@CrossOrigin
+public class GroupDuckInfoController {
+
+    @Autowired
+    private IGroupDuckInfoService groupDuckInfoService;
+
+    @RequestMapping("/listPage")
+    public Result listPage(@RequestBody Map<String, String> paramsMap) {
+        return groupDuckInfoService.listPage(paramsMap);
+    }
+
+    @RequestMapping("/add")
+    public Result addDuck(HttpServletRequest httpServletRequest, @RequestParam(name = "imgUrl", required = false) MultipartFile imgUrl,
+                          @RequestParam(name = "farmId") String farmId,
+                          @RequestParam(name = "deviceCode") String deviceCode,
+                          @RequestParam(name = "chiCode", required = false) String chiCode,
+                          @RequestParam(name = "batchNum") String batchNum,
+                          @RequestParam(name = "duckBreed") String duckBreed,
+                          @RequestParam(name = "sex") String sex,
+                          @RequestParam(name = "birthDate") String birthDate,
+                          @RequestParam(name = "weight") String weight,
+                          @RequestParam(name = "unitId") String unitId,
+                          @RequestParam(name = "unitName") String unitName) throws IOException, ParseException {
+
+        httpServletRequest.setCharacterEncoding("UTF-8");
+        Map<String, String> map = new HashMap<>();
+        map.put("farmId", farmId);
+        map.put("deviceCode", deviceCode);
+        map.put("chiCode", chiCode);
+        map.put("batchNum", batchNum);
+        map.put("sex", sex);
+        map.put("duckBreed", duckBreed);
+        map.put("birthDate", birthDate);
+        map.put("weight", weight);
+        map.put("unitId", unitId);
+        map.put("unitName", unitName);
+        return groupDuckInfoService.addDuck(httpServletRequest, map, imgUrl);
+    }
+
+    @RequestMapping("/editDuck")
+    public Result editDuck(HttpServletRequest httpServletRequest,@RequestBody GroupDuckInfo groupDuckInfo) {
+        return groupDuckInfoService.editDuck(httpServletRequest,groupDuckInfo);
+    }
+
+    @RequestMapping("/remove")
+    public Result deleteDuck(HttpServletRequest httpServletRequest,@RequestBody Map<String, String> paramsMap) {
+        return groupDuckInfoService.deleteDuck(httpServletRequest,paramsMap);
+    }
+
+    @RequestMapping("/listDetail")
+    public Result listDetail(HttpServletRequest httpServletRequest,@RequestBody Map<String, String> paramsMap) {
+        return new Result(ResultCode.SUCCESS,groupDuckInfoService.getById(paramsMap.get("id")));
+    }
+
+    @RequestMapping("/list")
+    public Result list(HttpServletRequest httpServletRequest,@RequestBody Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String keyword = paramsMap.get("keyword");
+        String unitId = paramsMap.get("unitId");
+        QueryWrapper<GroupDuckInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId).eq(StringUtils.isNotBlank(unitId), "unit_id", unitId);
+        if (StringUtils.isNotBlank(keyword)) {
+            queryWrapper.and(wrapper -> wrapper.like(StringUtils.isNotBlank(keyword), "device_code", keyword)
+                    .or().like(StringUtils.isNotBlank(keyword), "chi_code", keyword));
+        }
+        return new Result(ResultCode.SUCCESS,groupDuckInfoService.list(queryWrapper));
+    }
+
+    //后台平养鸭只档案信息带总采食量等等
+    @RequestMapping("/duckDetail")
+    public Result duckDetail(HttpServletRequest httpServletRequest,@RequestBody Map<String, String> paramsMap) {
+        return groupDuckInfoService.duckDetail(httpServletRequest,paramsMap);
+    }
+
+    @RequestMapping("/breedingList")
+    public Result breedingList(@RequestBody Map<String, String> paramsMap) {
+        return groupDuckInfoService.breedingList(paramsMap);
+    }
+
+    @RequestMapping("/breedingDetail")
+    public Result breedingDetail(@RequestBody Map<String, String> paramsMap) {
+        return groupDuckInfoService.breedingDetail(paramsMap);
+    }
+
+    //导入档案数据
+    @PostMapping("/importData")
+    public Result importData(@RequestParam(name = "file") MultipartFile file
+                             ) throws Exception {
+        return groupDuckInfoService.importData(file);
+    }
+    //导出档案数据
+    @GetMapping("/printDuckInfo")
+    public void printChi(HttpServletResponse response, @RequestParam(name = "farmId") String farmId,
+                         @RequestParam(name = "ids") String ids) throws Exception {
+        Map<String, String> map = new HashMap<>();
+        map.put("farmId", farmId);
+        map.put("ids", ids);
+        groupDuckInfoService.printDuckIfo(response, map);
+        String path = "/opt/guowei/groupDuckInfo.xls";
+        PdfUtil.returnPdfStream3(response, path, "平养档案");
+    }
+
+    //大屏平养区--生产数据
+    @RequestMapping("/screenProd")
+    public Result screenProd(@RequestBody Map<String, String> paramsMap) {
+        return groupDuckInfoService.screenProd(paramsMap);
+    }
+
+    //智慧选育大屏梯队排名
+    @RequestMapping("/listRank")
+    public Result listRank(@RequestBody Map<String, String> paramsMap) {
+        return groupDuckInfoService.listRank(paramsMap);
+    }
+
+    //智慧选育大屏点击梯队鸭只展示
+    @RequestMapping("/listRankList")
+    public Result listRankList(@RequestBody Map<String, String> paramsMap) {
+        return groupDuckInfoService.listRankList(paramsMap);
+    }
+}

+ 59 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/controller/GroupEatingController.java

@@ -0,0 +1,59 @@
+package com.huimv.guowei.admin.group.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
+import com.huimv.guowei.admin.group.entity.GroupDuckInfo;
+import com.huimv.guowei.admin.group.entity.GroupEating;
+import com.huimv.guowei.admin.group.entity.GroupFeedingEgg;
+import com.huimv.guowei.admin.group.service.IGroupEatingService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 平养采食记录 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+@RestController
+@RequestMapping("/group-eating")
+@CrossOrigin
+public class GroupEatingController {
+
+    @Autowired
+    private IGroupEatingService eatingService;
+
+
+    @RequestMapping("/listPage")
+    public Result listPage(@RequestBody Map<String, String> paramsMap) {
+        return eatingService.listPage(paramsMap);
+    }
+
+    //详情
+    @RequestMapping("/listDetail")
+    public Result listDetail(@RequestBody Map<String, String> paramsMap) {
+        return eatingService.listDetail(paramsMap);
+    }
+
+    @RequestMapping("/BreedingEgg")
+    public Result BreedingEgg(@RequestBody Map<String, String> paramsMap) {
+        return eatingService.BreedingEating(paramsMap);
+    }
+
+    @RequestMapping("/BreedingEatingEgg")
+    public Result BreedingEatingEgg(@RequestBody Map<String, String> paramsMap) {
+        return eatingService.BreedingEatingEgg(paramsMap);
+    }
+}

+ 45 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/controller/GroupEggController.java

@@ -0,0 +1,45 @@
+package com.huimv.guowei.admin.group.controller;
+
+
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.group.service.IGroupEggService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 平养产蛋 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+@RestController
+@RequestMapping("/group-egg")
+@CrossOrigin
+public class GroupEggController {
+    @Autowired
+    private IGroupEggService eggService;
+
+    @RequestMapping("/listPage")
+    public Result listPage(@RequestBody Map<String, String> paramsMap) {
+        return eggService.listPage(paramsMap);
+    }
+
+    @RequestMapping("/listDetail")
+    public Result listDetail(@RequestBody Map<String, String> paramsMap) {
+        return eggService.listDetail(paramsMap);
+    }
+
+    @RequestMapping("/BreedingEgg")
+    public Result BreedingEgg(@RequestBody Map<String, String> paramsMap) {
+        return eggService.BreedingEgg(paramsMap);
+    }
+
+}

+ 74 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/controller/GroupFeedingEggController.java

@@ -0,0 +1,74 @@
+package com.huimv.guowei.admin.group.controller;
+
+
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.group.entity.GroupFeedingEgg;
+import com.huimv.guowei.admin.group.service.IGroupFeedingEggService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * <p>
+ * 平养投料捡蛋 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+@RestController
+@RequestMapping("/group-feeding-egg")
+@CrossOrigin
+public class GroupFeedingEggController {
+
+    @Autowired
+    private IGroupFeedingEggService feedingEggService;
+
+    @RequestMapping("/listPage")
+    public Result listPage(@RequestBody Map<String, String> paramsMap) {
+        return feedingEggService.listPage(paramsMap);
+    }
+
+    @RequestMapping("/listDetail")
+    public Result listDetail(@RequestBody Map<String, String> paramsMap) {
+        return feedingEggService.listDetail(paramsMap);
+    }
+
+    @RequestMapping("/add")
+    public Result add(@RequestBody GroupFeedingEgg feedingEgg) {
+        return feedingEggService.add(feedingEgg);
+    }
+    @RequestMapping("/edit")
+    public Result edit(@RequestBody GroupFeedingEgg feedingEgg) {
+        return feedingEggService.edit(feedingEgg);
+    }
+    @RequestMapping("/remove")
+    public Result remove(@RequestBody Map<String, String> paramsMap) {
+        return feedingEggService.remove(paramsMap);
+    }
+
+    //导入投料
+    @RequestMapping("/importData")
+    public Result importData(@RequestParam(name = "file") MultipartFile file) {
+        Map<String, String> map = new HashMap<>();
+        return feedingEggService.importData(map, file);
+    }
+
+    //导入捡蛋
+    @RequestMapping("/importData1")
+    public Result importData1(@RequestParam(name = "file") MultipartFile file) {
+        Map<String, String> map = new HashMap<>();
+        return feedingEggService.importData1(map, file);
+    }
+
+    //大屏平养区用料监测
+    @RequestMapping("/screenBreed")
+    public Result screenBreed(@RequestBody Map<String, String> paramsMap) {
+        return feedingEggService.screenBreed(paramsMap);
+    }
+
+
+}

+ 45 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/controller/GroupLeaveController.java

@@ -0,0 +1,45 @@
+package com.huimv.guowei.admin.group.controller;
+
+
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.group.entity.GroupFeedingEgg;
+import com.huimv.guowei.admin.group.entity.GroupLeave;
+import com.huimv.guowei.admin.group.service.IGroupLeaveService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 平养离场记录 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+@RestController
+@RequestMapping("/group-leave")
+@CrossOrigin
+public class GroupLeaveController {
+
+    @Autowired
+    private IGroupLeaveService leaveService;
+
+    @RequestMapping("/add")
+    public Result add(@RequestBody GroupLeave leave) {
+        return leaveService.add(leave);
+    }
+    @RequestMapping("/edit")
+    public Result edit(@RequestBody GroupLeave leave) {
+        return leaveService.edit(leave);
+    }
+    @RequestMapping("/listPage")
+    public Result listPage(@RequestBody Map<String, String> paramsMap) {
+        return leaveService.listPage(paramsMap);
+    }
+}

+ 41 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/controller/GroupThresholdController.java

@@ -0,0 +1,41 @@
+package com.huimv.guowei.admin.group.controller;
+
+
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.group.entity.GroupThreshold;
+import com.huimv.guowei.admin.group.service.IGroupThresholdService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 参数设置 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-10-08
+ */
+@RestController
+@RequestMapping("/group-threshold")
+@CrossOrigin
+public class GroupThresholdController {
+
+    @Autowired
+    private IGroupThresholdService thresholdService;
+
+    @RequestMapping("/list")
+    public Result list(@RequestBody Map<String, String> paramsMap) {
+        return thresholdService.list(paramsMap);
+    }
+
+    @RequestMapping("/addAndEdit")
+    public Result addAndEdit(@RequestBody GroupThreshold groupThreshold) {
+        return thresholdService.addAndEdit(groupThreshold);
+    }
+}

+ 77 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/GroupAdvise.java

@@ -0,0 +1,77 @@
+package com.huimv.guowei.admin.group.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 建议信息
+ * </p>
+ *
+ * @author author
+ * @since 2024-10-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("group_advise")
+public class GroupAdvise implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 提醒时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+
+    /**
+     * 脚环号
+     */
+    private String deviceCode;
+
+    /**
+     * 批次号
+     */
+    private String batchNum;
+
+    /**
+     * 栋舍id
+     */
+    private Integer unitId;
+
+    /**
+     * 栋舍名称
+     */
+    private String unitName;
+
+    /**
+     * 提示原因
+     */
+    private String version;
+
+    /**
+     * 建议类型 0未体检建议 1为淘汰建议
+     */
+    private Integer type;
+
+    /**
+     * 牧场编码
+     */
+    private Integer farmId;
+
+
+}

+ 46 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/GroupBatch.java

@@ -0,0 +1,46 @@
+package com.huimv.guowei.admin.group.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 平养批次
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("group_batch")
+public class GroupBatch implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 批次号
+     */
+    private String batchNum;
+
+    /**
+     * 鸭只id
+     */
+    private String duckId;
+
+    /**
+     * 牧场编码
+     */
+    private Integer farmId;
+
+
+}

+ 95 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/GroupDuckInfo.java

@@ -0,0 +1,95 @@
+package com.huimv.guowei.admin.group.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 平养鸭只档案
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("group_duck_info")
+public class GroupDuckInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 脚环号
+     */
+    private String deviceCode;
+
+    /**
+     * 翅号
+     */
+    private String chiCode;
+
+    /**
+     * 批次号
+     */
+    private String batchNum;
+
+    /**
+     * 1北京鸭、2连城白鸭、3山麻鸭、4攸县麻鸭、5白改鸭、6缙云麻鸭、7绍兴鸭(带圈白翼梢)、8绍兴鸭(红毛绿翼梢)、9绍兴鸭(白羽绍鸭)
+     */
+    private Integer duckBreed;
+
+    /**
+     * 性别0雄性,1雌性
+     */
+    private Integer sex;
+
+    /**
+     * 出生日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date birthDate;
+
+    /**
+     * 日龄
+     */
+    private Integer dayNum;
+
+    /**
+     * 当前体重
+     */
+    private String weight;
+
+    /**
+     * 栋舍id
+     */
+    private Integer unitId;
+
+    /**
+     * 栋舍名称
+     */
+    private String unitName;
+
+    /**
+     * 牧场编码
+     */
+    private Integer farmId;
+
+    private String duckImgUrl;
+
+    private Integer isLeave;
+
+
+}

+ 77 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/GroupEating.java

@@ -0,0 +1,77 @@
+package com.huimv.guowei.admin.group.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 平养采食记录
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("group_eating")
+public class GroupEating implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 脚环号
+     */
+    private String deviceCode;
+
+    /**
+     * 采食量
+     */
+    private String eatingValue;
+
+    /**
+     * 采食日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date eatingDate;
+
+    /**
+     * 批次号
+     */
+    private String batchNum;
+
+    /**
+     * 牧场编码
+     */
+    private Integer farmId;
+
+    /**
+     * 栋舍id
+     */
+    private Integer unitId;
+
+    /**
+     * 栋舍名称
+     */
+    private String unitName;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+
+}

+ 78 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/GroupEgg.java

@@ -0,0 +1,78 @@
+package com.huimv.guowei.admin.group.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 平养产蛋
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("group_egg")
+public class GroupEgg implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 脚环号
+     */
+    private String deviceCode;
+
+    /**
+     * 产蛋日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date eggDate;
+
+    /**
+     * 产蛋数量
+     */
+    private Integer eggNum;
+
+    /**
+     * 批次号
+     */
+    private String batchNum;
+
+    /**
+     * 栋舍id
+     */
+    private Integer unitId;
+
+    /**
+     * 栋舍名称
+     */
+    private String unitName;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 牧场编码
+     */
+    private Integer farmId;
+
+    private Integer eggCount;
+
+
+}

+ 86 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/GroupFeedingEgg.java

@@ -0,0 +1,86 @@
+package com.huimv.guowei.admin.group.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 平养投料捡蛋
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("group_feeding_egg")
+public class GroupFeedingEgg implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 栋舍id
+     */
+    private Integer unitId;
+
+    /**
+     * 栋舍名称
+     */
+    private String unitName;
+
+    /**
+     * 投料或产蛋时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date dateTime;
+
+    /**
+     * 饲料重量
+     */
+    private String feedValue;
+
+    /**
+     * 产蛋数量
+     */
+    private Integer eggNum;
+
+    /**
+     * 0为投料 1为产蛋
+     */
+    private Integer type;
+
+    /**
+     * 饲料种类
+     */
+    private String feedType;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 牧场编码
+     */
+    private Integer farmId;
+
+    private String eggWeight;
+
+    private String eggAvg;
+
+
+}

+ 70 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/GroupLeave.java

@@ -0,0 +1,70 @@
+package com.huimv.guowei.admin.group.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 平养离场记录
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("group_leave")
+public class GroupLeave implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 脚环号或者批次号
+     */
+    private String deviceCode;
+
+    /**
+     * 离场日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date leaveDate;
+
+    /**
+     * 离场原因
+     */
+    private String leaveReason;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 牧场编码
+     */
+    private Integer farmId;
+
+
+    /**
+     * 0 未撤回 1撤回离场
+     */
+    private Integer isWithdraw;
+
+    private Integer type;
+
+
+}

+ 107 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/GroupThreshold.java

@@ -0,0 +1,107 @@
+package com.huimv.guowei.admin.group.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 参数设置
+ * </p>
+ *
+ * @author author
+ * @since 2024-10-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("group_threshold")
+public class GroupThreshold implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 平均采食时间
+     */
+    private String avgFeeding;
+
+    /**
+     * 平均产蛋时间
+     */
+    private String avgEgg;
+
+    /**
+     * 采食采集时间下限
+     */
+    private String feedTimeDown;
+
+    /**
+     * 采食采集时间上线
+     */
+
+    private String feedTimeUpper;
+
+    /**
+     * 产蛋采集时间下限
+     */
+
+    private String eggTimeDown;
+
+    /**
+     * 产蛋采集时间上线
+     */
+
+    private String eggTimeUpper;
+
+    /**
+     * 最长时间未读取
+     */
+    private String times;
+
+    /**
+     * 料蛋比
+     */
+    private String feedEggRank;
+
+    /**
+     * 日产蛋量低阈值
+     */
+    private String dayFeedDown;
+
+    /**
+     * 日采食量高阈值
+     */
+    private String dayFeedUpper;
+
+    /**
+     * 日产蛋量低阈值
+     */
+    private String dayEggDown;
+
+    /**
+     * 日产蛋量高阈值
+     */
+    private String dayEggUpper;
+
+    /**
+     * 牧场编码
+     */
+    private Integer farmId;
+
+    private String first;
+
+    private String second;
+
+
+}

+ 15 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/dto/ScreenBreedVo.java

@@ -0,0 +1,15 @@
+package com.huimv.guowei.admin.group.entity.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ScreenBreedVo {
+
+    private String values;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date createDate;
+}

+ 19 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/dto/ScreenProdVo.java

@@ -0,0 +1,19 @@
+package com.huimv.guowei.admin.group.entity.dto;
+
+import lombok.Data;
+
+@Data
+public class ScreenProdVo {
+
+    private Integer duckCount;
+
+    private Integer eggCount;
+
+    private Integer feedingCount;
+
+    private String feedingAvg;
+
+    private String waterAvg;
+
+    private Integer leaveCount;
+}

+ 19 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/BreedEatingEgg.java

@@ -0,0 +1,19 @@
+package com.huimv.guowei.admin.group.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class BreedEatingEgg {
+
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date dateTime;
+
+    private String deviceCode;
+
+    private String eatingValue;
+
+    private Integer eggNum;
+}

+ 17 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/BreedEatingVo.java

@@ -0,0 +1,17 @@
+package com.huimv.guowei.admin.group.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class BreedEatingVo {
+
+    private String deviceCode;
+
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date eatingDate;
+
+    private String eatingValue;
+}

+ 17 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/BreedEggVo.java

@@ -0,0 +1,17 @@
+package com.huimv.guowei.admin.group.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class BreedEggVo {
+
+    private String deviceCode;
+
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date eggDate;
+
+    private Integer eggNum;
+}

+ 32 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/BreedingVo.java

@@ -0,0 +1,32 @@
+package com.huimv.guowei.admin.group.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class BreedingVo {
+
+
+    private String deviceCode;
+
+    private Integer dayAge;
+
+    private Integer unitId;
+
+    private String unitName;
+
+    private Integer eggCount;
+
+    private Integer eggMonth;
+
+    private Integer eggDay;
+
+    private String feedingMonth;
+
+    private String feedingDay;
+
+    private String feedEgg;
+
+    private String batchNum;
+
+    private Integer type;
+}

+ 11 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/EggAndFeedingVo.java

@@ -0,0 +1,11 @@
+package com.huimv.guowei.admin.group.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class EggAndFeedingVo {
+
+    private String feedingCount;
+
+    private Integer eggCount;
+}

+ 72 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/GroupDuckInfoOutVo.java

@@ -0,0 +1,72 @@
+package com.huimv.guowei.admin.group.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class GroupDuckInfoOutVo {
+
+    private String deviceCode;
+
+    private String chiCode;
+
+    private String batchNum;
+
+    private String duckBreed;
+
+    private String sex;
+
+
+    private String birthDate;
+
+    private String weight;
+
+    private String unitName;
+
+    private String feedingCount;
+
+    private String eggCount;
+
+    private String FeedCountEggCount;
+
+    private String feedingValue1;
+    private String feedingValue2;
+    private String feedingValue3;
+    private String feedingValue4;
+    private String feedingValue5;
+    private String feedingValue6;
+    private String feedingValue7;
+    private String feedingValue8;
+    private String feedingValue9;
+    private String feedingValue10;
+    private String feedingValue11;
+    private String feedingValue12;
+
+    private String eggValue1;
+    private String eggValue2;
+    private String eggValue3;
+    private String eggValue4;
+    private String eggValue5;
+    private String eggValue6;
+    private String eggValue7;
+    private String eggValue8;
+    private String eggValue9;
+    private String eggValue10;
+    private String eggValue11;
+    private String eggValue12;
+
+    private String feedEgg1;
+    private String feedEgg2;
+    private String feedEgg3;
+    private String feedEgg4;
+    private String feedEgg5;
+    private String feedEgg6;
+    private String feedEgg7;
+    private String feedEgg8;
+    private String feedEgg9;
+    private String feedEgg10;
+    private String feedEgg11;
+    private String feedEgg12;
+}

+ 17 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/GroupDuckInfoVo.java

@@ -0,0 +1,17 @@
+package com.huimv.guowei.admin.group.entity.vo;
+
+import com.huimv.guowei.admin.group.entity.GroupDuckInfo;
+import lombok.Data;
+
+@Data
+public class GroupDuckInfoVo {
+
+    private GroupDuckInfo duckInfo;
+
+    private String feedingCount;
+
+    private Integer eggCount;
+
+    private String feedEgg;
+
+}

+ 17 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/GroupEatingVo.java

@@ -0,0 +1,17 @@
+package com.huimv.guowei.admin.group.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class GroupEatingVo {
+
+    private String deviceCode;
+
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date dateTime;
+
+    private String values;
+}

+ 19 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/GroupFeedAndEggVo.java

@@ -0,0 +1,19 @@
+package com.huimv.guowei.admin.group.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class GroupFeedAndEggVo {
+
+    private Integer unitId;
+
+    private String unitName;
+
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date dateTime;
+
+    private String values;
+}

+ 27 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/ImportDuckInfoVo.java

@@ -0,0 +1,27 @@
+package com.huimv.guowei.admin.group.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ImportDuckInfoVo {
+
+    private String deviceCode;
+
+    private String chiCode;
+
+    private String batchNum;
+
+    private String duckBreed;
+
+    private String sex;
+
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date birthDate;
+
+    private String weight;
+
+    private String unitName;
+}

+ 19 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/ImportEggVo.java

@@ -0,0 +1,19 @@
+package com.huimv.guowei.admin.group.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ImportEggVo {
+
+    private String unitName;
+
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date dateTime;
+
+    private String eggWeight;
+
+    private String eggAvg;
+}

+ 19 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/entity/vo/ImportFeedingVo.java

@@ -0,0 +1,19 @@
+package com.huimv.guowei.admin.group.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ImportFeedingVo {
+
+    private String unitName;
+
+    private String feedValue;
+
+    private String feedType;
+
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date dateTime;
+}

+ 16 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/mapper/GroupAdviseMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.guowei.admin.group.mapper;
+
+import com.huimv.guowei.admin.group.entity.GroupAdvise;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 建议信息 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-10-08
+ */
+public interface GroupAdviseMapper extends BaseMapper<GroupAdvise> {
+
+}

+ 16 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/mapper/GroupBatchMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.guowei.admin.group.mapper;
+
+import com.huimv.guowei.admin.group.entity.GroupBatch;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 平养批次 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+public interface GroupBatchMapper extends BaseMapper<GroupBatch> {
+
+}

+ 34 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/mapper/GroupDuckInfoMapper.java

@@ -0,0 +1,34 @@
+package com.huimv.guowei.admin.group.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.guowei.admin.group.entity.GroupDuckInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.guowei.admin.group.entity.dto.ScreenProdVo;
+import com.huimv.guowei.admin.group.entity.vo.BreedingVo;
+import com.huimv.guowei.admin.group.entity.vo.GroupDuckInfoOutVo;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 平养鸭只档案 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+public interface GroupDuckInfoMapper extends BaseMapper<GroupDuckInfo> {
+
+    IPage<BreedingVo> breedingList(String farmId,String today,String month, Page<BreedingVo> page,String deviceCode);
+
+    List<BreedingVo> breedingRank(String farmId,String today,String month);
+
+    BreedingVo breedingList1(String farmId,String today,String month,String deviceCode);
+
+    void updateDayAge();
+
+    List<GroupDuckInfoOutVo> getOutDuckInfo(Integer year,String[] deviceCode,String farmId);
+
+    ScreenProdVo screenProd(String today);
+}

+ 36 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/mapper/GroupEatingMapper.java

@@ -0,0 +1,36 @@
+package com.huimv.guowei.admin.group.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.huimv.guowei.admin.group.entity.GroupEating;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.guowei.admin.group.entity.vo.BreedEatingEgg;
+import com.huimv.guowei.admin.group.entity.vo.BreedEatingVo;
+import com.huimv.guowei.admin.group.entity.vo.EggAndFeedingVo;
+import com.huimv.guowei.admin.group.entity.vo.GroupEatingVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 平养采食记录 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+public interface GroupEatingMapper extends BaseMapper<GroupEating> {
+
+    List<GroupEatingVo> listDetail(@Param(Constants.WRAPPER) QueryWrapper<GroupEating> queryWrapper);
+
+    EggAndFeedingVo getCount(String deviceCode,String startTime );
+
+    List<BreedEatingVo> breedList(@Param(Constants.WRAPPER) QueryWrapper<GroupEating> queryWrapper);
+
+    List<BreedEatingEgg> breedEggEating(String farmId,String deviceCode,String dateTime);
+
+    List<BreedEatingEgg> breedEggEating1(String farmId,String deviceCode,String startTime,String endTime);
+
+    List<BreedEatingEgg> breedEggEating2(String farmId,String deviceCode,String dateTime);
+}

+ 27 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/mapper/GroupEggMapper.java

@@ -0,0 +1,27 @@
+package com.huimv.guowei.admin.group.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.huimv.guowei.admin.group.entity.GroupEgg;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.guowei.admin.group.entity.vo.BreedEggVo;
+import com.huimv.guowei.admin.group.entity.vo.GroupEatingVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 平养产蛋 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+public interface GroupEggMapper extends BaseMapper<GroupEgg> {
+
+    List<GroupEatingVo> listDetail(@Param(Constants.WRAPPER) QueryWrapper<GroupEgg> queryWrapper);
+
+    List<BreedEggVo> listDetail1(@Param(Constants.WRAPPER) QueryWrapper<GroupEgg> queryWrapper);
+
+}

+ 30 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/mapper/GroupFeedingEggMapper.java

@@ -0,0 +1,30 @@
+package com.huimv.guowei.admin.group.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.huimv.guowei.admin.group.entity.GroupFeedingEgg;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.guowei.admin.group.entity.dto.ScreenBreedVo;
+import com.huimv.guowei.admin.group.entity.vo.GroupEatingVo;
+import com.huimv.guowei.admin.group.entity.vo.GroupFeedAndEggVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 平养投料捡蛋 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+public interface GroupFeedingEggMapper extends BaseMapper<GroupFeedingEgg> {
+
+    IPage<GroupFeedAndEggVo> listFeed(@Param(Constants.WRAPPER)QueryWrapper<GroupFeedingEgg> queryWrapper,IPage<GroupFeedAndEggVo> page);
+
+    List<ScreenBreedVo> screenBreed(@Param(Constants.WRAPPER)QueryWrapper<GroupFeedingEgg> queryWrapper);
+
+    List<ScreenBreedVo> screenBreedMonth(@Param(Constants.WRAPPER)QueryWrapper<GroupFeedingEgg> queryWrapper);
+}

+ 16 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/mapper/GroupLeaveMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.guowei.admin.group.mapper;
+
+import com.huimv.guowei.admin.group.entity.GroupLeave;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 平养离场记录 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+public interface GroupLeaveMapper extends BaseMapper<GroupLeave> {
+
+}

+ 16 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/mapper/GroupThresholdMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.guowei.admin.group.mapper;
+
+import com.huimv.guowei.admin.group.entity.GroupThreshold;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 参数设置 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-10-08
+ */
+public interface GroupThresholdMapper extends BaseMapper<GroupThreshold> {
+
+}

+ 19 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/IGroupAdviseService.java

@@ -0,0 +1,19 @@
+package com.huimv.guowei.admin.group.service;
+
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.group.entity.GroupAdvise;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 建议信息 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-10-08
+ */
+public interface IGroupAdviseService extends IService<GroupAdvise> {
+    Result listPage(Map<String, String> paramsMap);
+}

+ 29 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/IGroupBatchService.java

@@ -0,0 +1,29 @@
+package com.huimv.guowei.admin.group.service;
+
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.group.entity.GroupBatch;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 平养批次 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+public interface IGroupBatchService extends IService<GroupBatch> {
+
+    Result listPage(Map<String,String> paramsMap);
+
+    Result add(GroupBatch groupBatch);
+
+    Result edit(GroupBatch groupBatch);
+
+    Result remove(Map<String,String> paramsMap);
+
+    //大屏平养区健康评估
+    Result screenBatch(Map<String,String> paramsMap);
+}

+ 57 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/IGroupDuckInfoService.java

@@ -0,0 +1,57 @@
+package com.huimv.guowei.admin.group.service;
+
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.entity.BaseDuckInfo;
+import com.huimv.guowei.admin.group.entity.GroupDuckInfo;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.text.ParseException;
+import java.util.Map;
+
+/**
+ * <p>
+ * 平养鸭只档案 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+public interface IGroupDuckInfoService extends IService<GroupDuckInfo> {
+
+    Result listPage(Map<String,String> paramsMap);
+
+    Result addDuck(HttpServletRequest httpServletRequest, Map<String,String> paramsMap, MultipartFile imgUrl) throws ParseException, IOException;
+
+    Result editDuck(HttpServletRequest httpServletRequest, GroupDuckInfo groupDuckInfo);
+
+
+    Result deleteDuck(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+
+    void updateDayAge();
+
+    Result duckDetail(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+
+    //智慧选育
+    Result breedingList(Map<String, String> paramsMap);
+
+    Result breedingDetail(Map<String, String> paramsMap);
+
+    //导入档案数据
+    Result importData( MultipartFile files) throws Exception;
+
+    //导出档案数据
+    void printDuckIfo(HttpServletResponse response, Map<String,String> paramsMap) throws Exception;
+
+    //大屏平养区--生产数据
+    Result screenProd(Map<String, String> paramsMap);
+
+    //智慧选育大屏梯队排名
+    Result listRank(Map<String, String> paramsMap);
+
+    //智慧选育大屏点击梯队鸭只展示
+    Result listRankList(Map<String, String> paramsMap);
+}

+ 31 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/IGroupEatingService.java

@@ -0,0 +1,31 @@
+package com.huimv.guowei.admin.group.service;
+
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.group.entity.GroupEating;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 平养采食记录 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+public interface IGroupEatingService extends IService<GroupEating> {
+    Result listPage(Map<String, String> paramsMap);
+
+    Result listDetail(Map<String, String> paramsMap);
+
+
+    //鸭只生产性能中的采食统计分析
+    Result BreedingEating(Map<String, String> paramsMap);
+
+    //鸭只生产性能中的料单比统计分析
+    Result BreedingEatingEgg(Map<String, String> paramsMap);
+
+
+}

+ 24 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/IGroupEggService.java

@@ -0,0 +1,24 @@
+package com.huimv.guowei.admin.group.service;
+
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.group.entity.GroupEgg;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 平养产蛋 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+public interface IGroupEggService extends IService<GroupEgg> {
+    Result listDetail(Map<String, String> paramsMap);
+
+    Result listPage(Map<String, String> paramsMap);
+
+    //鸭只生产性能中的产蛋统计分析
+    Result BreedingEgg(Map<String, String> paramsMap);
+}

+ 38 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/IGroupFeedingEggService.java

@@ -0,0 +1,38 @@
+package com.huimv.guowei.admin.group.service;
+
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.group.entity.GroupFeedingEgg;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 平养投料捡蛋 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+public interface IGroupFeedingEggService extends IService<GroupFeedingEgg> {
+
+    Result listPage(Map<String, String> paramsMap);
+
+    Result listDetail(Map<String, String> paramsMap);
+
+    Result add(GroupFeedingEgg feedingEgg);
+
+    Result edit(GroupFeedingEgg feedingEgg);
+
+    Result remove(Map<String, String> paramsMap);
+
+    //投料导入数据
+    Result importData(Map<String, String> paramsMap, MultipartFile file);
+
+    //捡蛋导入数据
+    Result importData1(Map<String, String> paramsMap, MultipartFile file);
+
+    //大屏平养区用料监测
+    Result screenBreed(Map<String, String> paramsMap);
+}

+ 25 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/IGroupLeaveService.java

@@ -0,0 +1,25 @@
+package com.huimv.guowei.admin.group.service;
+
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.group.entity.GroupLeave;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 平养离场记录 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+public interface IGroupLeaveService extends IService<GroupLeave> {
+
+    Result listPage(Map<String, String> paramsMap);
+
+    Result add(GroupLeave leave);
+
+    Result edit(GroupLeave leave);
+
+}

+ 23 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/IGroupThresholdService.java

@@ -0,0 +1,23 @@
+package com.huimv.guowei.admin.group.service;
+
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.group.entity.GroupThreshold;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 参数设置 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-10-08
+ */
+public interface IGroupThresholdService extends IService<GroupThreshold> {
+
+    Result list(Map<String,String> paramsMap);
+
+    Result addAndEdit(GroupThreshold groupThreshold);
+
+}

+ 46 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/impl/GroupAdviseServiceImpl.java

@@ -0,0 +1,46 @@
+package com.huimv.guowei.admin.group.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
+import com.huimv.guowei.admin.group.entity.GroupAdvise;
+import com.huimv.guowei.admin.group.mapper.GroupAdviseMapper;
+import com.huimv.guowei.admin.group.service.IGroupAdviseService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 建议信息 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-10-08
+ */
+@Service
+public class GroupAdviseServiceImpl extends ServiceImpl<GroupAdviseMapper, GroupAdvise> implements IGroupAdviseService {
+
+    @Autowired
+    private GroupAdviseMapper adviseMapper;
+
+    @Override
+    public Result listPage(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String pageNum = paramsMap.get("pageNum");
+        String pageSize = paramsMap.get("pageSize");
+        if ("".equals(pageNum) || null == pageNum) {
+            pageNum = "1";
+            pageSize = "20";
+        }
+        String type = paramsMap.get("type");
+        Page<GroupAdvise> page = new Page(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
+        QueryWrapper<GroupAdvise> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId).eq(StringUtils.isNotBlank(type),"type", type).orderByDesc("create_time");
+        return new Result(ResultCode.SUCCESS, adviseMapper.selectPage(page, queryWrapper));
+    }
+}

+ 145 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/impl/GroupBatchServiceImpl.java

@@ -0,0 +1,145 @@
+package com.huimv.guowei.admin.group.service.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.guowei.admin.common.utils.DataUill;
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
+import com.huimv.guowei.admin.entity.EnergyWater;
+import com.huimv.guowei.admin.group.entity.*;
+import com.huimv.guowei.admin.group.mapper.*;
+import com.huimv.guowei.admin.group.service.IGroupBatchService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.guowei.admin.mapper.EnergyWaterMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 平养批次 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+@Service
+public class GroupBatchServiceImpl extends ServiceImpl<GroupBatchMapper, GroupBatch> implements IGroupBatchService {
+
+    @Autowired
+    private GroupBatchMapper batchMapper;
+    @Autowired
+    private GroupDuckInfoMapper infoMapper;
+    @Autowired
+    private GroupEatingMapper eatingMapper;
+    @Autowired
+    private EnergyWaterMapper waterMapper;
+    @Autowired
+    private GroupEggMapper eggMapper;
+
+    @Override
+    public Result listPage(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String pageNum = paramsMap.get("pageNum");
+        String pageSize = paramsMap.get("pageSize");
+        if ("".equals(pageNum) || null == pageNum) {
+            pageNum = "1";
+            pageSize = "20";
+        }
+        String batchNum = paramsMap.get("batchNum");
+        Page<GroupBatch> page = new Page(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
+        QueryWrapper<GroupBatch> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId).like(StringUtils.isNotBlank(batchNum), "batch_num", batchNum);
+        return new Result(ResultCode.SUCCESS, batchMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public Result add(GroupBatch groupBatch) {
+        Integer count = batchMapper.selectCount(new QueryWrapper<GroupBatch>().eq("batch_num", groupBatch.getBatchNum())
+                .eq("farm_id", groupBatch.getFarmId()));
+        if (count != 0) {
+            return new Result(10001, "添加失败,批次号已存在", false);
+        }
+        batchMapper.insert(groupBatch);
+        return new Result(ResultCode.SUCCESS);
+    }
+
+    @Override
+    public Result edit(GroupBatch groupBatch) {
+        Integer count = batchMapper.selectCount(new QueryWrapper<GroupBatch>().eq("batch_num", groupBatch.getBatchNum())
+                .eq("farm_id", groupBatch.getFarmId()).ne("id",groupBatch.getId()));
+        if (count != 0) {
+            return new Result(10001, "修改失败,批次号已存在", false);
+        }
+        String duckId = groupBatch.getDuckId();
+        String[] split = duckId.split(",");
+        for (String muskId : split) {
+            GroupDuckInfo duckInfo = infoMapper.selectById(muskId);
+            duckInfo.setBatchNum(groupBatch.getBatchNum());
+            infoMapper.updateById(duckInfo);
+        }
+        batchMapper.updateById(groupBatch);
+        return new Result(ResultCode.SUCCESS);
+    }
+
+    @Override
+    public Result remove(Map<String, String> paramsMap) {
+        String id = paramsMap.get("id");
+        GroupBatch groupBatch = batchMapper.selectById(id);
+        String duckId = groupBatch.getDuckId();
+        if (StringUtils.isNotBlank(duckId)) {
+            String[] split = duckId.split(",");
+            for (String muskId : split) {
+                GroupDuckInfo duckInfo = infoMapper.selectById(muskId);
+                duckInfo.setBatchNum(null);
+                infoMapper.updateById(duckInfo);
+            }
+        }
+        batchMapper.deleteById(id);
+        return new Result(ResultCode.SUCCESS);
+    }
+
+    @Override
+    public Result screenBatch(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        Date timesmorning = DataUill.getTimesmorning();
+        List<GroupBatch> batches = batchMapper.selectList(new QueryWrapper<GroupBatch>().eq("farm_id", farmId));
+        JSONArray jsonArray = new JSONArray();
+        if (batches.size() != 0) {
+            for (GroupBatch batch : batches) {
+                JSONObject jsonObject = new JSONObject();
+                jsonObject.put("batch", batch.getBatchNum());
+                QueryWrapper<GroupEating> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("farm_id", farmId).in("device_code", batch.getDuckId()).ge("eating_date", timesmorning);
+                queryWrapper.select("IFNULL(sum(eating_value),'0') 'eatingValue'");
+                GroupEating groupEating = eatingMapper.selectOne(queryWrapper);
+                jsonObject.put("eating", groupEating.getEatingValue());
+                QueryWrapper<EnergyWater> queryWrapper1 = new QueryWrapper<>();
+                queryWrapper1.eq("farm_id", farmId).eq("chip_code", 1006).ge("create_date", timesmorning);
+                queryWrapper1.select("IFNULL(sum(water_value),'0') 'waterValue'");
+                EnergyWater water = waterMapper.selectOne(queryWrapper1);
+                jsonObject.put("water", water.getWaterValue());
+                QueryWrapper<GroupEgg> queryWrapper2 = new QueryWrapper<>();
+                queryWrapper2.eq("farm_id", farmId).in("device_code", batch.getDuckId()).ge("egg_date", timesmorning);
+                queryWrapper2.select("IFNULL(sum(egg_num),'0') 'eggNum'");
+                GroupEgg egg = eggMapper.selectOne(queryWrapper2);
+                jsonObject.put("egg", egg.getEggNum());
+                queryWrapper2.clear();
+                queryWrapper2.eq("farm_id", farmId).in("device_code", batch.getDuckId());
+                queryWrapper2.select("IFNULL(sum(egg_num),'0') 'eggNum'");
+                GroupEgg groupEgg = eggMapper.selectOne(queryWrapper2);
+                jsonObject.put("eggCount", groupEgg.getEggNum());
+                jsonObject.put("result", "健康");
+                jsonArray.add(jsonObject);
+            }
+        }
+
+        return new Result(ResultCode.SUCCESS, jsonArray);
+    }
+}

+ 762 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/impl/GroupDuckInfoServiceImpl.java

@@ -0,0 +1,762 @@
+package com.huimv.guowei.admin.group.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.guowei.admin.common.utils.DataUill;
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
+import com.huimv.guowei.admin.common.utils.UploadImage;
+import com.huimv.guowei.admin.entity.*;
+import com.huimv.guowei.admin.entity.vo.BaseDuckInfoImportData;
+import com.huimv.guowei.admin.group.entity.*;
+import com.huimv.guowei.admin.group.entity.dto.ScreenProdVo;
+import com.huimv.guowei.admin.group.entity.vo.*;
+import com.huimv.guowei.admin.group.mapper.*;
+import com.huimv.guowei.admin.group.service.IGroupDuckInfoService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.guowei.admin.mapper.BaseBuildingMapper;
+import com.huimv.guowei.admin.mapper.BaseDuckBreedImgMapper;
+import com.huimv.guowei.admin.mapper.EnergyWaterMapper;
+import com.huimv.guowei.admin.utils.ExcelImportSheet;
+import com.huimv.guowei.admin.utils.Print;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.text.DecimalFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * <p>
+ * 平养鸭只档案 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+@Service
+public class GroupDuckInfoServiceImpl extends ServiceImpl<GroupDuckInfoMapper, GroupDuckInfo> implements IGroupDuckInfoService {
+
+    @Autowired
+    private GroupDuckInfoMapper duckInfoMapper;
+    @Autowired
+    private UploadImage uploadImage;
+    @Autowired
+    private BaseDuckBreedImgMapper imgMapper;
+    @Autowired
+    private GroupBatchMapper batchMapper;
+    @Autowired
+    private GroupEatingMapper eatingMapper;
+    @Autowired
+    private GroupEggMapper eggMapper;
+    @Autowired
+    private BaseBuildingMapper buildingMapper;
+    @Autowired
+    private EnergyWaterMapper waterMapper;
+    @Autowired
+    private GroupLeaveMapper leaveMapper;
+    @Autowired
+    private GroupThresholdMapper thresholdMapper;
+
+    @Override
+    public Result listPage(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String pageNum = paramsMap.get("pageNum");
+        String pageSize = paramsMap.get("pageSize");
+        if ("".equals(pageNum) || null == pageNum) {
+            pageNum = "1";
+            pageSize = "20";
+        }
+        String keyword = paramsMap.get("keyword");
+        String unitId = paramsMap.get("unitId");
+        Page<GroupDuckInfo> page = new Page(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
+        QueryWrapper<GroupDuckInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId).eq(StringUtils.isNotBlank(unitId), "unit_id", unitId);
+        if (StringUtils.isNotBlank(keyword)) {
+            queryWrapper.and(wrapper -> wrapper.like(StringUtils.isNotBlank(keyword), "device_code", keyword)
+                    .or().like(StringUtils.isNotBlank(keyword), "chi_code", keyword));
+        }
+        return new Result(ResultCode.SUCCESS, duckInfoMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public Result addDuck(HttpServletRequest httpServletRequest, Map<String, String> paramsMap, MultipartFile imgUrl) throws ParseException, IOException {
+        String deviceCode = paramsMap.get("deviceCode");
+        String farmId = paramsMap.get("farmId");
+        GroupDuckInfo duckInfo = new GroupDuckInfo();
+        duckInfo.setFarmId(Integer.parseInt(farmId));
+        duckInfo.setDeviceCode(deviceCode);
+        QueryWrapper<GroupDuckInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId).eq("is_leave", 0);
+        if (StringUtils.isNotBlank(paramsMap.get("chiCode"))) {
+            queryWrapper.eq("device_code", deviceCode).or().eq("chi_code", paramsMap.get("chiCode"));
+        } else {
+            queryWrapper.eq("device_code", deviceCode);
+        }
+        if (duckInfoMapper.selectCount(queryWrapper) != 0) {
+            return new Result(10001, "脚环号或者翅号已存在", false);
+        }
+        if (StringUtils.isNotBlank(paramsMap.get("chiCode"))) {
+            duckInfo.setChiCode(paramsMap.get("chiCode"));
+        }
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        Date date = new Date();
+        long l = date.getTime() - sdf.parse(paramsMap.get("birthDate")).getTime();
+        long l1 = l / (24 * 60 * 60 * 1000);
+        duckInfo.setDayNum((int) l1);
+        duckInfo.setBatchNum(paramsMap.get("batchNum"));
+        duckInfo.setDuckBreed(Integer.parseInt(paramsMap.get("duckBreed")));
+        duckInfo.setSex(Integer.parseInt(paramsMap.get("sex")));
+        duckInfo.setBirthDate(sdf.parse(paramsMap.get("birthDate")));
+        duckInfo.setUnitId(Integer.parseInt(paramsMap.get("unitId")));
+        duckInfo.setUnitName(paramsMap.get("unitName"));
+        duckInfo.setWeight(paramsMap.get("weight"));
+        duckInfo.setIsLeave(0);
+        if (ObjectUtil.isEmpty(imgUrl)) {
+            String duckBreed = paramsMap.get("duckBreed");
+            QueryWrapper<BaseDuckBreedImg> imgQueryWrapper = new QueryWrapper<>();
+            imgQueryWrapper.eq("duck_breed", duckBreed);
+            BaseDuckBreedImg breedImg = imgMapper.selectOne(imgQueryWrapper);
+            duckInfo.setDuckImgUrl(breedImg.getImgUrl());
+        } else {
+            String content = uploadImage.getImageCom(imgUrl);
+            duckInfo.setDuckImgUrl(content);
+        }
+        duckInfoMapper.insert(duckInfo);
+        GroupDuckInfo duckInfo1 = duckInfoMapper.selectOne(new QueryWrapper<GroupDuckInfo>().eq("device_code", deviceCode));
+        GroupBatch groupBatch = batchMapper.selectOne(new QueryWrapper<GroupBatch>().eq("batch_num", paramsMap.get("batchNum")));
+        String batchDuckId = groupBatch.getDuckId();
+        if (StringUtils.isBlank(batchDuckId)) {
+            groupBatch.setDuckId(duckInfo1.getDeviceCode());
+        } else {
+            String[] split = batchDuckId.split(",");
+            java.util.ArrayList<String> list = new java.util.ArrayList<>();
+            for (String s1 : split) {
+                if (!s1.equals(duckInfo1.getDeviceCode())) {
+                    list.add(s1);
+                }
+            }
+            String[] newArray = list.toArray(new String[0]);
+            String b = "";
+            for (int i = 0; i < newArray.length; i++) {
+                if (i < newArray.length - 1) {
+                    b = newArray[i] + "," + b;
+                } else {
+                    b = b + newArray[i];
+                }
+            }
+            groupBatch.setDuckId(b + "," + duckInfo1.getDeviceCode());
+        }
+        batchMapper.updateById(groupBatch);
+        return new Result(ResultCode.SUCCESS);
+    }
+
+    @Override
+    public Result editDuck(HttpServletRequest httpServletRequest, GroupDuckInfo groupDuckInfo) {
+        QueryWrapper<GroupDuckInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", groupDuckInfo.getFarmId()).eq("is_leave", 0)
+                .ne("id", groupDuckInfo.getId()).eq("device_code", groupDuckInfo.getDeviceCode());
+        if (StringUtils.isNotBlank(groupDuckInfo.getChiCode())) {
+            queryWrapper.eq("chi_code", groupDuckInfo.getChiCode());
+        }
+        if (duckInfoMapper.selectCount(queryWrapper) != 0) {
+            return new Result(10001, "脚环号或者翅号已存在", false);
+        }
+        Date date = new Date();
+        long l = date.getTime() - groupDuckInfo.getBirthDate().getTime();
+        long l1 = l / (24 * 60 * 60 * 1000);
+        groupDuckInfo.setDayNum((int) l1);
+        duckInfoMapper.updateById(groupDuckInfo);
+        return new Result(ResultCode.SUCCESS);
+    }
+
+    @Override
+    public Result deleteDuck(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String id = paramsMap.get("id");
+        GroupDuckInfo duckInfo = duckInfoMapper.selectById(id);
+//        if (duckInfo.getIsLeave() == 0) {
+//            return new Result(10001, "暂未离场,不可删除!", false);
+//        }
+        duckInfoMapper.deleteById(id);
+        String batchNum = duckInfo.getBatchNum();
+        GroupBatch batch = batchMapper.selectOne(new QueryWrapper<GroupBatch>().eq("batch_num", batchNum));
+        String duckId = batch.getDuckId();
+        String[] split = duckId.split(",");
+        java.util.ArrayList<String> list = new java.util.ArrayList<>();
+        for (String s1 : split) {
+            if (!s1.equals(duckInfo.getDeviceCode())) {
+                list.add(s1);
+            }
+        }
+        String[] newArray = list.toArray(new String[0]);
+        String b = "";
+        for (int i = 0; i < newArray.length; i++) {
+            if (i < newArray.length - 1) {
+                b = newArray[i] + "," + b;
+            } else {
+                b = b + newArray[i];
+            }
+        }
+        batch.setDuckId(b);
+        batchMapper.updateById(batch);
+        return new Result(ResultCode.SUCCESS);
+    }
+
+    @Override
+    public Result duckDetail(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String deviceCode = paramsMap.get("deviceCode");
+        GroupDuckInfo duckInfo = duckInfoMapper.selectOne(new QueryWrapper<GroupDuckInfo>().eq("device_code", deviceCode));
+        GroupDuckInfoVo duckInfoVo = new GroupDuckInfoVo();
+        duckInfoVo.setDuckInfo(duckInfo);
+        EggAndFeedingVo feedingVo = eatingMapper.getCount(deviceCode, null);
+        duckInfoVo.setFeedingCount(feedingVo.getFeedingCount());
+        duckInfoVo.setEggCount(feedingVo.getEggCount());
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(new Date());
+        calendar.add(Calendar.DAY_OF_MONTH, -30);
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        EggAndFeedingVo feedingVo1 = eatingMapper.getCount(deviceCode, sdf.format(calendar.getTime()));
+        duckInfoVo.setFeedEgg(feedingVo1.getFeedingCount() + ":" + feedingVo1.getEggCount());
+        return new Result(ResultCode.SUCCESS, duckInfoVo);
+    }
+
+    @Override
+    public void updateDayAge() {
+        duckInfoMapper.updateDayAge();
+    }
+
+    @Override
+    public Result breedingList(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String pageNum = paramsMap.get("pageNum");
+        String pageSize = paramsMap.get("pageSize");
+        if ("".equals(pageNum) || null == pageNum) {
+            pageNum = "1";
+            pageSize = "20";
+        }
+        String deviceCode = paramsMap.get("deviceCode");
+        Date timesmorning = DataUill.getTimesmorning();
+        Date monthmorning = DataUill.getTimesMonthmorning();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Page<BreedingVo> page = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
+        IPage<BreedingVo> breedingVoIPage = duckInfoMapper.breedingList(farmId, sdf.format(timesmorning), sdf.format(monthmorning), page, deviceCode);
+        List<BreedingVo> records = breedingVoIPage.getRecords();
+        if (records.size() != 0) {
+            for (BreedingVo record : records) {
+                Double aDouble = Double.valueOf(record.getFeedingMonth());
+                if (record.getEggMonth() == 0) {
+                    record.setFeedEgg("0");
+                } else {
+                    double v = aDouble / 1000 / record.getEggMonth();
+                    DecimalFormat def = new DecimalFormat("0.00");
+                    record.setFeedEgg(def.format(v));
+                }
+
+            }
+        }
+        return new Result(ResultCode.SUCCESS, breedingVoIPage);
+
+    }
+
+    @Override
+    public Result breedingDetail(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String deviceCode = paramsMap.get("deviceCode");
+        Date timesmorning = DataUill.getTimesmorning();
+        Date monthmorning = DataUill.getTimesMonthmorning();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        BreedingVo breedingVo = duckInfoMapper.breedingList1(farmId, sdf.format(timesmorning), sdf.format(monthmorning), deviceCode);
+        if (ObjectUtil.isNotEmpty(breedingVo)) {
+            Double aDouble = Double.valueOf(breedingVo.getFeedingMonth());
+            if (0 == breedingVo.getEggMonth()) {
+                breedingVo.setFeedEgg("0");
+            } else {
+                double v = aDouble / 1000 / breedingVo.getEggMonth();
+                DecimalFormat def = new DecimalFormat("0.00");
+                breedingVo.setFeedEgg(def.format(v));
+            }
+        }
+        return new Result(ResultCode.SUCCESS, breedingVo);
+    }
+
+    @Transactional
+    @Override
+    public Result importData(MultipartFile files) throws Exception {
+        Map<String, String> map = new HashMap<>();
+        //表头与键值对的映射关系
+        map.put("脚环号", "deviceCode");
+        map.put("翅号", "chiCode");
+        map.put("批次号", "batchNum");
+        map.put("品种", "duckBreed");
+        map.put("性别", "sex");
+        map.put("出生日期", "birthDate");
+        map.put("当前体重", "weight");
+        map.put("栋舍名称", "unitName");
+        try (
+                //这里面的对象会自动关闭
+                InputStream in = files.getInputStream();
+                Workbook workbook = ExcelImportSheet.getTypeFromExtends(in, files.getOriginalFilename())
+        ) {
+
+            //根据名称获取单张表对象 也可以使用getSheetAt(int index)获取单张表的对象 获取第一张表
+            Sheet sheet = workbook.getSheetAt(0);
+            List<ImportDuckInfoVo> list = ExcelImportSheet.getListFromExcel(sheet, ImportDuckInfoVo.class, map);
+
+            for (ImportDuckInfoVo breed : list) {
+                //底层数据库操作 insert什么的
+                QueryWrapper<BaseBuilding> buildingQueryWrapper = new QueryWrapper<>();
+                buildingQueryWrapper.eq("type", 1).eq("build_name", breed.getUnitName());
+                BaseBuilding building = buildingMapper.selectOne(buildingQueryWrapper);
+                if (ObjectUtil.isEmpty(building)) {
+                    return new Result(10001, "栋舍名称不存在!", false);
+                }
+
+                QueryWrapper<GroupDuckInfo> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("is_leave", 0).eq("device_code", breed.getDeviceCode());
+                GroupDuckInfo duckInfo1 = duckInfoMapper.selectOne(queryWrapper);
+                if (ObjectUtil.isNotEmpty(duckInfo1)) {
+                    if (StringUtils.isNotBlank(breed.getChiCode())) {
+                        duckInfo1.setChiCode(breed.getChiCode());
+                    }
+                    duckInfo1.setUnitName(building.getBuildName());
+                    duckInfo1.setUnitId(building.getId());
+                    QueryWrapper<GroupBatch> batchQueryWrapper = new QueryWrapper<>();
+                    batchQueryWrapper.eq("batch_num", breed.getBatchNum());
+                    GroupBatch groupBatch = batchMapper.selectOne(batchQueryWrapper);
+                    if (ObjectUtil.isEmpty(groupBatch)) {
+                        return new Result(10001, "批次号不存在!", false);
+                    }
+                    duckInfo1.setBatchNum(breed.getBatchNum());
+                    duckInfo1.setWeight(breed.getWeight());
+                    Date date = new Date();
+                    long l = date.getTime() - breed.getBirthDate().getTime();
+                    long l1 = l / (24 * 60 * 60 * 1000);
+                    duckInfo1.setDayNum((int) l1);
+                    Date birthday = breed.getBirthDate();
+                    Date date2 = new Date();
+                    int result = birthday.compareTo(date2);
+                    if (result > 0) {
+                        return new Result(10001, "出生日期不能超过当前时间", false);
+                    }
+                    duckInfo1.setBirthDate(breed.getBirthDate());
+                    if (StringUtils.isNotBlank(breed.getSex())) {
+                        if ("雄性".equals(breed.getSex())) {
+                            duckInfo1.setSex(0);
+                        }
+                        if ("雌性".equals(breed.getSex())) {
+                            duckInfo1.setSex(1);
+                        }
+                    }
+                    QueryWrapper<BaseDuckBreedImg> queryWrapper1 = new QueryWrapper<>();
+                    if ("北京鸭".equals(breed.getDuckBreed())) {
+                        queryWrapper1.eq("duck_breed", 1);
+                        BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
+                        duckInfo1.setDuckBreed(1);
+                        duckInfo1.setDuckImgUrl(img.getImgUrl());
+                    } else if ("连城白鸭".equals(breed.getDuckBreed())) {
+                        queryWrapper1.eq("duck_breed", 2);
+                        BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
+                        duckInfo1.setDuckBreed(2);
+                        duckInfo1.setDuckImgUrl(img.getImgUrl());
+                    } else if ("山麻鸭".equals(breed.getDuckBreed())) {
+                        queryWrapper1.eq("duck_breed", 3);
+                        BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
+                        duckInfo1.setDuckBreed(3);
+                        duckInfo1.setDuckImgUrl(img.getImgUrl());
+                    } else if ("攸县麻鸭".equals(breed.getDuckBreed())) {
+                        queryWrapper1.eq("duck_breed", 4);
+                        BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
+                        duckInfo1.setDuckBreed(4);
+                        duckInfo1.setDuckImgUrl(img.getImgUrl());
+                    } else if ("白改鸭".equals(breed.getDuckBreed())) {
+                        queryWrapper1.eq("duck_breed", 5);
+                        BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
+                        duckInfo1.setDuckBreed(5);
+                        duckInfo1.setDuckImgUrl(img.getImgUrl());
+                    } else if ("缙云麻鸭".equals(breed.getDuckBreed())) {
+                        queryWrapper1.eq("duck_breed", 6);
+                        BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
+                        duckInfo1.setDuckBreed(6);
+                        duckInfo1.setDuckImgUrl(img.getImgUrl());
+                    } else if ("绍兴鸭(带圈白翼梢)".equals(breed.getDuckBreed())) {
+                        queryWrapper1.eq("duck_breed", 7);
+                        BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
+                        duckInfo1.setDuckBreed(7);
+                        duckInfo1.setDuckImgUrl(img.getImgUrl());
+                    } else if ("绍兴鸭(红毛绿翼梢)".equals(breed.getDuckBreed())) {
+                        queryWrapper1.eq("duck_breed", 8);
+                        BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
+                        duckInfo1.setDuckBreed(8);
+                        duckInfo1.setDuckImgUrl(img.getImgUrl());
+                    } else if ("绍兴鸭(白羽绍鸭)".equals(breed.getDuckBreed())) {
+                        queryWrapper1.eq("duck_breed", 9);
+                        BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
+                        duckInfo1.setDuckBreed(9);
+                        duckInfo1.setDuckImgUrl(img.getImgUrl());
+                    }
+
+                    String batchDuckId = groupBatch.getDuckId();
+                    if (StringUtils.isBlank(batchDuckId)) {
+                        groupBatch.setDuckId(duckInfo1.getDeviceCode());
+                    } else {
+                        String[] split = batchDuckId.split(",");
+                        java.util.ArrayList<String> list1 = new java.util.ArrayList<>();
+                        for (String s1 : split) {
+                            if (!s1.equals(duckInfo1.getDeviceCode())) {
+                                list1.add(s1);
+                            }
+                        }
+                        String[] newArray = list1.toArray(new String[0]);
+                        String b = "";
+                        for (int i = 0; i < newArray.length; i++) {
+                            if (i < newArray.length - 1) {
+                                b = newArray[i] + "," + b;
+                            } else {
+                                b = b + newArray[i];
+                            }
+                        }
+                        groupBatch.setDuckId(b + "," + duckInfo1.getDeviceCode());
+                    }
+                    batchMapper.updateById(groupBatch);
+                    duckInfoMapper.updateById(duckInfo1);
+                } else {
+                    GroupDuckInfo duckInfo = new GroupDuckInfo();
+                    duckInfo.setDeviceCode(breed.getDeviceCode());
+                    duckInfo.setIsLeave(0);
+                    duckInfo.setFarmId(21);
+                    if (StringUtils.isNotBlank(breed.getChiCode())) {
+                        duckInfo.setChiCode(breed.getChiCode());
+                    }
+                    duckInfo.setUnitName(building.getBuildName());
+                    duckInfo.setUnitId(building.getId());
+                    QueryWrapper<GroupBatch> batchQueryWrapper = new QueryWrapper<>();
+                    batchQueryWrapper.eq("batch_num", breed.getBatchNum());
+                    GroupBatch groupBatch = batchMapper.selectOne(batchQueryWrapper);
+                    if (ObjectUtil.isEmpty(groupBatch)) {
+                        return new Result(10001, "批次号不存在!", false);
+                    }
+                    duckInfo.setBatchNum(breed.getBatchNum());
+                    duckInfo.setWeight(breed.getWeight());
+                    Date date = new Date();
+                    long l = date.getTime() - breed.getBirthDate().getTime();
+                    long l1 = l / (24 * 60 * 60 * 1000);
+                    duckInfo.setDayNum((int) l1);
+                    Date birthday = breed.getBirthDate();
+                    Date date2 = new Date();
+                    int result = birthday.compareTo(date2);
+                    if (result > 0) {
+                        return new Result(10001, "出生日期不能超过当前时间", false);
+                    }
+                    duckInfo.setBirthDate(breed.getBirthDate());
+                    if (StringUtils.isNotBlank(breed.getSex())) {
+                        if ("雄性".equals(breed.getSex())) {
+                            duckInfo.setSex(0);
+                        }
+                        if ("雌性".equals(breed.getSex())) {
+                            duckInfo.setSex(1);
+                        }
+                    }
+                    QueryWrapper<BaseDuckBreedImg> queryWrapper1 = new QueryWrapper<>();
+                    if ("北京鸭".equals(breed.getDuckBreed())) {
+                        queryWrapper1.eq("duck_breed", 1);
+                        BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
+                        duckInfo.setDuckBreed(1);
+                        duckInfo.setDuckImgUrl(img.getImgUrl());
+                    } else if ("连城白鸭".equals(breed.getDuckBreed())) {
+                        queryWrapper1.eq("duck_breed", 2);
+                        BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
+                        duckInfo.setDuckBreed(2);
+                        duckInfo.setDuckImgUrl(img.getImgUrl());
+                    } else if ("山麻鸭".equals(breed.getDuckBreed())) {
+                        queryWrapper1.eq("duck_breed", 3);
+                        BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
+                        duckInfo.setDuckBreed(3);
+                        duckInfo.setDuckImgUrl(img.getImgUrl());
+                    } else if ("攸县麻鸭".equals(breed.getDuckBreed())) {
+                        queryWrapper1.eq("duck_breed", 4);
+                        BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
+                        duckInfo.setDuckBreed(4);
+                        duckInfo.setDuckImgUrl(img.getImgUrl());
+                    } else if ("白改鸭".equals(breed.getDuckBreed())) {
+                        queryWrapper1.eq("duck_breed", 5);
+                        BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
+                        duckInfo.setDuckBreed(5);
+                        duckInfo.setDuckImgUrl(img.getImgUrl());
+                    } else if ("缙云麻鸭".equals(breed.getDuckBreed())) {
+                        queryWrapper1.eq("duck_breed", 6);
+                        BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
+                        duckInfo.setDuckBreed(6);
+                        duckInfo.setDuckImgUrl(img.getImgUrl());
+                    } else if ("绍兴鸭(带圈白翼梢)".equals(breed.getDuckBreed())) {
+                        queryWrapper1.eq("duck_breed", 7);
+                        BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
+                        duckInfo.setDuckBreed(7);
+                        duckInfo.setDuckImgUrl(img.getImgUrl());
+                    } else if ("绍兴鸭(红毛绿翼梢)".equals(breed.getDuckBreed())) {
+                        queryWrapper1.eq("duck_breed", 8);
+                        BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
+                        duckInfo.setDuckBreed(8);
+                        duckInfo.setDuckImgUrl(img.getImgUrl());
+                    } else if ("绍兴鸭(白羽绍鸭)".equals(breed.getDuckBreed())) {
+                        queryWrapper1.eq("duck_breed", 9);
+                        BaseDuckBreedImg img = imgMapper.selectOne(queryWrapper1);
+                        duckInfo.setDuckBreed(9);
+                        duckInfo.setDuckImgUrl(img.getImgUrl());
+                    }
+
+                    String batchDuckId = groupBatch.getDuckId();
+                    if (StringUtils.isBlank(batchDuckId)) {
+                        groupBatch.setDuckId(duckInfo.getDeviceCode());
+                    } else {
+                        String[] split = batchDuckId.split(",");
+                        java.util.ArrayList<String> list1 = new java.util.ArrayList<>();
+                        for (String s1 : split) {
+                            if (!s1.equals(duckInfo.getDeviceCode())) {
+                                list1.add(s1);
+                            }
+                        }
+                        String[] newArray = list1.toArray(new String[0]);
+                        String b = "";
+                        for (int i = 0; i < newArray.length; i++) {
+                            if (i < newArray.length - 1) {
+                                b = newArray[i] + "," + b;
+                            } else {
+                                b = b + newArray[i];
+                            }
+                        }
+                        groupBatch.setDuckId(b + "," + duckInfo.getDeviceCode());
+                    }
+                    batchMapper.updateById(groupBatch);
+                    duckInfoMapper.insert(duckInfo);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            return new Result(10001, "数据格式异常!", false);
+        } finally {
+            //写着好看的
+        }
+        return new Result(10000, "保存成功!", true);
+    }
+
+    @Override
+    public void printDuckIfo(HttpServletResponse response, Map<String, String> paramsMap) throws Exception {
+        String farmId = paramsMap.get("farmId");
+        String ids = paramsMap.get("ids");
+        String[] split = ids.split(",");
+        Calendar calendar = Calendar.getInstance();
+        int year = calendar.get(Calendar.YEAR);
+        List<GroupDuckInfoOutVo> outDuckInfo = duckInfoMapper.getOutDuckInfo(year, split, farmId);
+        for (GroupDuckInfoOutVo groupDuckInfoOutVo : outDuckInfo) {
+            groupDuckInfoOutVo.setFeedCountEggCount(groupDuckInfoOutVo.getFeedingCount() + ":" + groupDuckInfoOutVo.getEggCount());
+            groupDuckInfoOutVo.setFeedEgg1(groupDuckInfoOutVo.getFeedingValue1() + ":" + groupDuckInfoOutVo.getEggValue1());
+            groupDuckInfoOutVo.setFeedEgg2(groupDuckInfoOutVo.getFeedingValue2() + ":" + groupDuckInfoOutVo.getEggValue2());
+            groupDuckInfoOutVo.setFeedEgg3(groupDuckInfoOutVo.getFeedingValue3() + ":" + groupDuckInfoOutVo.getEggValue3());
+            groupDuckInfoOutVo.setFeedEgg4(groupDuckInfoOutVo.getFeedingValue4() + ":" + groupDuckInfoOutVo.getEggValue4());
+            groupDuckInfoOutVo.setFeedEgg5(groupDuckInfoOutVo.getFeedingValue5() + ":" + groupDuckInfoOutVo.getEggValue5());
+            groupDuckInfoOutVo.setFeedEgg6(groupDuckInfoOutVo.getFeedingValue6() + ":" + groupDuckInfoOutVo.getEggValue6());
+            groupDuckInfoOutVo.setFeedEgg7(groupDuckInfoOutVo.getFeedingValue7() + ":" + groupDuckInfoOutVo.getEggValue7());
+            groupDuckInfoOutVo.setFeedEgg8(groupDuckInfoOutVo.getFeedingValue8() + ":" + groupDuckInfoOutVo.getEggValue8());
+            groupDuckInfoOutVo.setFeedEgg9(groupDuckInfoOutVo.getFeedingValue9() + ":" + groupDuckInfoOutVo.getEggValue9());
+            groupDuckInfoOutVo.setFeedEgg10(groupDuckInfoOutVo.getFeedingValue10() + ":" + groupDuckInfoOutVo.getEggValue10());
+            groupDuckInfoOutVo.setFeedEgg11(groupDuckInfoOutVo.getFeedingValue11() + ":" + groupDuckInfoOutVo.getEggValue11());
+            groupDuckInfoOutVo.setFeedEgg12(groupDuckInfoOutVo.getFeedingValue12() + ":" + groupDuckInfoOutVo.getEggValue12());
+        }
+        Print.printGroupDuckInfo(outDuckInfo);
+    }
+
+    @Override
+    public Result screenProd(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String unitId = paramsMap.get("unitId");
+        Date timesmorning = DataUill.getTimesmorning();
+        Integer count = duckInfoMapper.selectCount(new QueryWrapper<GroupDuckInfo>().eq("unit_id",unitId)
+                .eq("farm_id", farmId).eq("is_leave", 0));
+        List<GroupEgg> groupEggs = eggMapper.selectList(new QueryWrapper<GroupEgg>()
+                .eq("unit_id",unitId).eq("farm_id", farmId)
+                .ge("egg_date", timesmorning).groupBy("device_code"));
+        Integer eggCount = 0;
+        if (groupEggs.size() != 0) {
+            for (GroupEgg groupEgg : groupEggs) {
+                eggCount = eggCount + groupEgg.getEggCount();
+            }
+        }
+
+        List<GroupEating> groupEatings = eatingMapper.selectList(new QueryWrapper<GroupEating>()
+                .eq("unit_id",unitId).eq("farm_id", farmId)
+                .ge("eating_date", timesmorning));
+        Integer feedingCount = 0;
+        double feedingAvg=0.00;
+        if (groupEatings.size() != 0) {
+            for (GroupEating groupEating : groupEatings) {
+                feedingCount = feedingCount + Integer.valueOf(groupEating.getEatingValue());
+            }
+             feedingAvg = feedingCount / groupEatings.size();
+        }
+        DecimalFormat def = new DecimalFormat("0.00");
+        List<EnergyWater> waters = waterMapper.selectList(new QueryWrapper<EnergyWater>().eq("unit_id",unitId)
+                .eq("farm_id", farmId).eq("chip_code", 1006)
+                .ge("create_date", timesmorning));
+        double waterCount = 0.00;
+        double waterAvg = 0.00;
+        if (waters.size() != 0) {
+            for (EnergyWater water : waters) {
+                waterCount = waterCount + Double.valueOf(water.getWaterValue());
+            }
+            waterAvg = waterCount / waters.size();
+        }
+
+        Integer count1 = leaveMapper.selectCount(new QueryWrapper<GroupLeave>()
+                .eq("farm_id", farmId).ge("leave_date", timesmorning));
+        ScreenProdVo screenProdVo = new ScreenProdVo();
+        screenProdVo.setDuckCount(count);
+        screenProdVo.setFeedingAvg(def.format(feedingAvg));
+        screenProdVo.setFeedingCount(feedingCount);
+        screenProdVo.setWaterAvg(def.format(waterAvg));
+        screenProdVo.setEggCount(eggCount);
+        screenProdVo.setLeaveCount(count1);
+        return new Result(ResultCode.SUCCESS, screenProdVo);
+    }
+
+    @Override
+    public Result listRank(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        GroupThreshold groupThreshold = thresholdMapper.selectOne(new QueryWrapper<GroupThreshold>().eq("farm_id", farmId));
+        Double first = 0.00;
+        Double second = 0.00;
+        if (ObjectUtil.isNotEmpty(groupThreshold)) {
+            first = Double.valueOf(groupThreshold.getFirst());
+            second = Double.valueOf(groupThreshold.getSecond());
+        }
+        Date timesmorning = DataUill.getTimesmorning();
+        Date monthmorning = DataUill.getTimesMonthmorning();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        List<BreedingVo> breedingVos = duckInfoMapper.breedingRank(farmId, sdf.format(timesmorning), sdf.format(monthmorning));
+        if (breedingVos.size() != 0) {
+            for (BreedingVo record : breedingVos) {
+                Double aDouble = Double.valueOf(record.getFeedingMonth());
+                if (record.getEggMonth() == 0) {
+                    record.setFeedEgg("0");
+                    record.setType(1);
+                } else {
+                    double v = aDouble / 1000 / record.getEggMonth();
+                    DecimalFormat def = new DecimalFormat("0.00");
+                    record.setFeedEgg(def.format(v));
+                    if (v <= first) {
+                        record.setType(1);
+                    } else if (v <= second && v > first) {
+                        record.setType(2);
+                    } else {
+                        record.setType(3);
+                    }
+                }
+
+            }
+        }
+        Integer firstCount = 0;
+        Integer secondCount = 0;
+        Integer threeCont = 0;
+        if (breedingVos.size() != 0) {
+            for (BreedingVo breedingVo : breedingVos) {
+                if (Double.valueOf(breedingVo.getFeedEgg()) <= first) {
+                    firstCount = firstCount + 1;
+                } else if (Double.valueOf(breedingVo.getFeedEgg()) <= second && Double.valueOf(breedingVo.getFeedEgg()) > first) {
+                    secondCount = secondCount + 1;
+                } else {
+                    threeCont = threeCont + 1;
+                }
+            }
+        }
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("first", firstCount);
+        jsonObject.put("secondCount", secondCount);
+        jsonObject.put("threeCont", threeCont);
+        return new Result(ResultCode.SUCCESS,jsonObject);
+    }
+
+    @Override
+    public Result listRankList(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String type = paramsMap.get("type");
+        String deviceCode = paramsMap.get("deviceCode");
+
+        List<BreedingVo> list = new ArrayList<>();
+        Date timesmorning = DataUill.getTimesmorning();
+        Date monthmorning = DataUill.getTimesMonthmorning();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        GroupThreshold groupThreshold = thresholdMapper.selectOne(new QueryWrapper<GroupThreshold>().eq("farm_id", farmId));
+        if ("".equals(deviceCode) || null == deviceCode) {
+            Double down = 0.00;
+            Double upper = 0.00;
+            if (ObjectUtil.isNotEmpty(groupThreshold)) {
+                if ("1".equals(type)) {
+                    upper = Double.valueOf(groupThreshold.getFirst());
+                } else if ("2".equals(type)) {
+                    down = Double.valueOf(groupThreshold.getFirst());
+                    upper = Double.valueOf(groupThreshold.getSecond());
+                } else {
+                    down = Double.valueOf(groupThreshold.getSecond());
+                    upper = Double.MAX_VALUE;
+                }
+            }
+            List<BreedingVo> breedingVos = duckInfoMapper.breedingRank(farmId, sdf.format(timesmorning), sdf.format(monthmorning));
+            if (breedingVos.size() != 0) {
+                for (BreedingVo record : breedingVos) {
+                    Double aDouble = Double.valueOf(record.getFeedingMonth());
+                    if (record.getEggMonth() == 0) {
+                        record.setFeedEgg("0");
+                    } else {
+                        double v = aDouble / 1000 / record.getEggMonth();
+                        DecimalFormat def = new DecimalFormat("0.00");
+                        record.setFeedEgg(def.format(v));
+                    }
+
+                }
+            }
+            for (BreedingVo breedingVo : breedingVos) {
+                if (Double.valueOf(breedingVo.getFeedEgg()) < upper && Double.valueOf(breedingVo.getFeedEgg()) >= down) {
+                    breedingVo.setType(Integer.parseInt(type));
+                    list.add(breedingVo);
+                }
+            }
+        } else {
+            BreedingVo breedingVo = duckInfoMapper.breedingList1(farmId, sdf.format(timesmorning), sdf.format(monthmorning), deviceCode);
+            if (ObjectUtil.isNotEmpty(breedingVo)) {
+                Double aDouble = Double.valueOf(breedingVo.getFeedingMonth());
+                if (0 == breedingVo.getEggMonth()) {
+                    breedingVo.setFeedEgg("0");
+                    breedingVo.setType(1);
+                } else {
+                    double v = aDouble / 1000 / breedingVo.getEggMonth();
+                    DecimalFormat def = new DecimalFormat("0.00");
+                    breedingVo.setFeedEgg(def.format(v));
+                    if (v <= Double.valueOf(groupThreshold.getFirst())) {
+                        breedingVo.setType(1);
+                    } else if (v <= Double.valueOf(groupThreshold.getSecond()) && v > Double.valueOf(groupThreshold.getSecond())) {
+                        breedingVo.setType(2);
+                    } else {
+                        breedingVo.setType(3);
+                    }
+                }
+            }
+            list.add(breedingVo);
+        }
+
+        return new Result(ResultCode.SUCCESS, list);
+    }
+}

+ 123 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/impl/GroupEatingServiceImpl.java

@@ -0,0 +1,123 @@
+package com.huimv.guowei.admin.group.service.impl;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.guowei.admin.common.utils.DataUill;
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
+import com.huimv.guowei.admin.group.entity.GroupEating;
+import com.huimv.guowei.admin.group.entity.GroupEgg;
+import com.huimv.guowei.admin.group.mapper.GroupEatingMapper;
+import com.huimv.guowei.admin.group.service.IGroupEatingService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * <p>
+ * 平养采食记录 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+@Service
+public class GroupEatingServiceImpl extends ServiceImpl<GroupEatingMapper, GroupEating> implements IGroupEatingService {
+
+    @Autowired
+    private GroupEatingMapper eatingMapper;
+
+    @Override
+    public Result listPage(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String pageNum = paramsMap.get("pageNum");
+        String pageSize = paramsMap.get("pageSize");
+        if ("".equals(pageNum) || null == pageNum) {
+            pageNum = "1";
+            pageSize = "20";
+        }
+        String keyword = paramsMap.get("keyword");
+        String time = paramsMap.get("time");
+        Page<GroupEating> page = new Page(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
+        QueryWrapper<GroupEating> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId).orderByDesc("eating_date");
+        if (StringUtils.isNotBlank(keyword)) {
+            queryWrapper.and(wrapper -> wrapper.like(StringUtils.isNotBlank(keyword), "device_code", keyword)
+                    .or().like(StringUtils.isNotBlank(keyword), "batch_num", keyword));
+        }
+        queryWrapper.between(StringUtils.isNotBlank(time), "eating_date", time + " 00:00:00", time + " 23:59:59");
+        return new Result(ResultCode.SUCCESS, eatingMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public Result listDetail(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String deviceCode = paramsMap.get("id");
+        QueryWrapper<GroupEating> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId).eq("device_code", deviceCode);
+        return new Result(ResultCode.SUCCESS, eatingMapper.listDetail(queryWrapper));
+    }
+
+    @Override
+    public Result BreedingEating(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String deviceCode = paramsMap.get("deviceCode");
+        String type = paramsMap.get("type");
+        if ("".equals(type) || null == type) {
+            type = "2";
+        }
+        QueryWrapper<GroupEating> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId).eq("device_code", deviceCode);
+        if ("1".equals(type)) {
+            Date timesmorning = DataUill.getTimesmorning();
+            queryWrapper.ge("eating_date", timesmorning);
+            return new Result(ResultCode.SUCCESS, eatingMapper.selectList(queryWrapper));
+        } else if ("2".equals(type)) {
+            DateTime beginOfWeek = DateUtil.beginOfWeek(new Date());
+            queryWrapper.ge("eating_date", beginOfWeek);
+            return new Result(ResultCode.SUCCESS, eatingMapper.breedList(queryWrapper));
+        } else if ("3".equals(type)) {
+            Date monthmorning = DataUill.getTimesMonthmorning();
+            queryWrapper.ge("eating_date", monthmorning);
+            return new Result(ResultCode.SUCCESS, eatingMapper.breedList(queryWrapper));
+        } else {
+            String startTime = paramsMap.get("startTime");
+            String endTime = paramsMap.get("endTime");
+            queryWrapper.between("eating_date", startTime, endTime);
+            return new Result(ResultCode.SUCCESS, eatingMapper.selectList(queryWrapper));
+        }
+    }
+
+    @Override
+    public Result BreedingEatingEgg(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String deviceCode = paramsMap.get("deviceCode");
+        String type = paramsMap.get("type");
+        if ("".equals(type) || null == type) {
+            type = "1";
+        }
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        if ("1".equals(type)) {
+            DateTime beginOfWeek = DateUtil.beginOfWeek(new Date());
+            return new Result(ResultCode.SUCCESS, eatingMapper.breedEggEating(farmId, deviceCode, sdf.format(beginOfWeek)));
+        } else if ("2".equals(type)) {
+            Date monthmorning = DataUill.getTimesMonthmorning();
+            return new Result(ResultCode.SUCCESS, eatingMapper.breedEggEating(farmId, deviceCode, sdf.format(monthmorning)));
+        } else if ("3".equals(type)) {
+            Date monthmorning = DateUtil.beginOfYear(new Date());
+            return new Result(ResultCode.SUCCESS, eatingMapper.breedEggEating2(farmId, deviceCode, sdf.format(monthmorning)));
+        } else {
+            String startTime = paramsMap.get("startTime");
+            String endTime = paramsMap.get("endTime");
+            return new Result(ResultCode.SUCCESS, eatingMapper.breedEggEating1(farmId, deviceCode, startTime, endTime));
+        }
+    }
+
+}

+ 100 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/impl/GroupEggServiceImpl.java

@@ -0,0 +1,100 @@
+package com.huimv.guowei.admin.group.service.impl;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.guowei.admin.common.utils.DataUill;
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
+import com.huimv.guowei.admin.group.entity.GroupEating;
+import com.huimv.guowei.admin.group.entity.GroupEgg;
+import com.huimv.guowei.admin.group.entity.vo.GroupEatingVo;
+import com.huimv.guowei.admin.group.mapper.GroupEggMapper;
+import com.huimv.guowei.admin.group.service.IGroupEggService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 平养产蛋 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+@Service
+public class GroupEggServiceImpl extends ServiceImpl<GroupEggMapper, GroupEgg> implements IGroupEggService {
+
+    @Autowired
+    private GroupEggMapper eggMapper;
+
+    @Override
+    public Result listDetail(Map<String, String> paramsMap) {
+        String deviceCode = paramsMap.get("deviceCode");
+        String farmId = paramsMap.get("farmId");
+        QueryWrapper<GroupEgg> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId).eq(StringUtils.isNotBlank(deviceCode), "device_code", deviceCode);
+        return new Result(ResultCode.SUCCESS, eggMapper.listDetail(queryWrapper));
+    }
+
+    @Override
+    public Result listPage(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String pageNum = paramsMap.get("pageNum");
+        String pageSize = paramsMap.get("pageSize");
+        if ("".equals(pageNum) || null == pageNum) {
+            pageNum = "1";
+            pageSize = "20";
+        }
+        String keyword = paramsMap.get("keyword");
+        String time = paramsMap.get("time");
+        Page<GroupEgg> page = new Page(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
+        QueryWrapper<GroupEgg> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId).orderByDesc("egg_date");
+        if (StringUtils.isNotBlank(keyword)) {
+            queryWrapper.and(wrapper -> wrapper.like(StringUtils.isNotBlank(keyword), "device_code", keyword)
+                    .or().like(StringUtils.isNotBlank(keyword), "batch_num", keyword));
+        }
+        queryWrapper.between(StringUtils.isNotBlank(time), "egg_date", time + " 00:00:00", time + " 23:59:59");
+        return new Result(ResultCode.SUCCESS, eggMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public Result BreedingEgg(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String deviceCode = paramsMap.get("deviceCode");
+        String type = paramsMap.get("type");
+        if ("".equals(type) || null == type) {
+            type = "2";
+        }
+        QueryWrapper<GroupEgg> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId).eq("device_code", deviceCode);
+        if ("1".equals(type)) {
+            Date timesmorning = DataUill.getTimesmorning();
+            queryWrapper.ge("egg_date", timesmorning);
+            return new Result(ResultCode.SUCCESS, eggMapper.selectList(queryWrapper));
+        } else if ("2".equals(type)) {
+            DateTime beginOfWeek = DateUtil.beginOfWeek(new Date());
+            queryWrapper.ge("egg_date", beginOfWeek);
+            return new Result(ResultCode.SUCCESS, eggMapper.listDetail1(queryWrapper));
+        } else if ("3".equals(type)) {
+            Date monthmorning = DataUill.getTimesMonthmorning();
+            queryWrapper.ge("egg_date", monthmorning);
+            return new Result(ResultCode.SUCCESS, eggMapper.listDetail1(queryWrapper));
+        } else {
+            String startTime = paramsMap.get("startTime");
+            String endTime = paramsMap.get("endTime");
+            queryWrapper.between("egg_date", startTime, endTime);
+            return new Result(ResultCode.SUCCESS, eggMapper.selectList(queryWrapper));
+        }
+    }
+}

+ 275 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/impl/GroupFeedingEggServiceImpl.java

@@ -0,0 +1,275 @@
+package com.huimv.guowei.admin.group.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.guowei.admin.common.utils.DataUill;
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
+import com.huimv.guowei.admin.entity.BaseBuilding;
+import com.huimv.guowei.admin.entity.BaseDuckBreedImg;
+import com.huimv.guowei.admin.entity.BaseDuckInfo;
+import com.huimv.guowei.admin.entity.Batch;
+import com.huimv.guowei.admin.entity.vo.BaseDuckInfoImportData;
+import com.huimv.guowei.admin.group.entity.GroupEating;
+import com.huimv.guowei.admin.group.entity.GroupFeedingEgg;
+import com.huimv.guowei.admin.group.entity.dto.ScreenBreedVo;
+import com.huimv.guowei.admin.group.entity.vo.GroupFeedAndEggVo;
+import com.huimv.guowei.admin.group.entity.vo.ImportEggVo;
+import com.huimv.guowei.admin.group.entity.vo.ImportFeedingVo;
+import com.huimv.guowei.admin.group.mapper.GroupFeedingEggMapper;
+import com.huimv.guowei.admin.group.service.IGroupFeedingEggService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.guowei.admin.mapper.BaseBuildingMapper;
+import com.huimv.guowei.admin.utils.ExcelImportSheet;
+import org.apache.commons.lang.time.DateUtils;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.InputStream;
+import java.text.DateFormat;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 平养投料捡蛋 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+@Service
+public class GroupFeedingEggServiceImpl extends ServiceImpl<GroupFeedingEggMapper, GroupFeedingEgg> implements IGroupFeedingEggService {
+
+    @Autowired
+    private GroupFeedingEggMapper feedingEggMapper;
+    @Autowired
+    private BaseBuildingMapper buildingMapper;
+
+    @Override
+    public Result listPage(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String type = paramsMap.get("type");
+        String pageNum = paramsMap.get("pageNum");
+        String pageSize = paramsMap.get("pageSize");
+        if ("".equals(pageNum) || null == pageNum) {
+            pageNum = "1";
+            pageSize = "20";
+        }
+        String unitId = paramsMap.get("unitId");
+        String time = paramsMap.get("time");
+        Page<GroupFeedingEgg> page = new Page(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
+        QueryWrapper<GroupFeedingEgg> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId).eq("type", type).orderByDesc("date_time")
+                .eq(StringUtils.isNotBlank(unitId),"unit_id", unitId);
+        queryWrapper.between(StringUtils.isNotBlank(time), "date_time", time + " 00:00:00", time + " 23:59:59");
+        return new Result(ResultCode.SUCCESS, feedingEggMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public Result listDetail(Map<String, String> paramsMap) {
+        String type = paramsMap.get("type");
+        String farmId = paramsMap.get("farmId");
+        String id = paramsMap.get("id");
+        QueryWrapper<GroupFeedingEgg> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id",farmId).eq("type",type).eq("id",id);
+        return new Result(ResultCode.SUCCESS, feedingEggMapper.selectOne(queryWrapper));
+    }
+
+    @Override
+    public Result add(GroupFeedingEgg feedingEgg) {
+        if (feedingEgg.getType() == 1) {
+            double v = Double.valueOf(feedingEgg.getEggWeight())*1000 / Double.valueOf(feedingEgg.getEggAvg());
+            int num = (int) Math.round(v);
+            feedingEgg.setEggNum(num);
+        }
+        feedingEgg.setCreateTime(new Date());
+        feedingEggMapper.insert(feedingEgg);
+        return new Result(ResultCode.SUCCESS);
+    }
+
+    @Override
+    public Result edit(GroupFeedingEgg feedingEgg) {
+        if (feedingEgg.getType() == 1) {
+            double v = Double.valueOf(feedingEgg.getEggWeight())*1000 / Double.valueOf(feedingEgg.getEggAvg());
+            int num = (int) Math.round(v);
+            feedingEgg.setEggNum(num);
+        }
+        feedingEggMapper.updateById(feedingEgg);
+        return new Result(ResultCode.SUCCESS);
+    }
+
+    @Override
+    public Result remove(Map<String, String> paramsMap) {
+        String id = paramsMap.get("id");
+        feedingEggMapper.deleteById(id);
+        return new Result(ResultCode.SUCCESS);
+    }
+
+    @Transactional
+    @Override
+    public Result importData(Map<String, String> paramsMap, MultipartFile file) {
+
+        Map<String, String> map = new HashMap<>();
+        //表头与键值对的映射关系
+        map.put("栋舍名称", "unitName");
+        map.put("投料日期", "dateTime");
+        map.put("饲料种类", "feedType");
+        map.put("投料重量", "feedValue");
+
+        try (
+                //这里面的对象会自动关闭
+                InputStream in = file.getInputStream();
+                Workbook workbook = ExcelImportSheet.getTypeFromExtends(in, file.getOriginalFilename())
+        ) {
+
+            //根据名称获取单张表对象 也可以使用getSheetAt(int index)获取单张表的对象 获取第一张表
+            Sheet sheet = workbook.getSheetAt(0);
+            List<ImportFeedingVo> list = ExcelImportSheet.getListFromExcel(sheet, ImportFeedingVo.class, map);
+            for (ImportFeedingVo feedingVo : list) {
+                GroupFeedingEgg feedingEgg = new GroupFeedingEgg();
+                QueryWrapper<BaseBuilding> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("build_name", feedingVo.getUnitName()).eq("type", 1);
+                BaseBuilding baseBuilding = buildingMapper.selectOne(queryWrapper);
+                if (ObjectUtil.isEmpty(baseBuilding)) {
+                    return new Result(10001, "栋舍名称不存在!", false);
+                } else {
+                    feedingEgg.setUnitName(feedingVo.getUnitName());
+                    feedingEgg.setUnitId(baseBuilding.getId());
+                    feedingEgg.setFarmId(baseBuilding.getFarmId());
+                    feedingEgg.setType(0);
+                    feedingEgg.setDateTime(feedingVo.getDateTime());
+                    feedingEgg.setFeedValue(feedingVo.getFeedValue());
+                    feedingEgg.setCreateTime(new Date());
+                    feedingEgg.setFeedType(feedingVo.getFeedType());
+                    feedingEggMapper.insert(feedingEgg);
+                }
+
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            return new Result(10001, "数据格式异常!", false);
+        } finally {
+            //写着好看的
+        }
+        return new Result(ResultCode.SUCCESS);
+    }
+
+    @Override
+    public Result importData1(Map<String, String> paramsMap, MultipartFile file) {
+        Map<String, String> map = new HashMap<>();
+        //表头与键值对的映射关系
+        map.put("栋舍名称", "unitName");
+        map.put("捡蛋日期", "dateTime");
+        map.put("捡蛋总重量(kg)", "eggWeight");
+        map.put("捡蛋均重(g)", "eggAvg");
+
+        try (
+                //这里面的对象会自动关闭
+                InputStream in = file.getInputStream();
+                Workbook workbook = ExcelImportSheet.getTypeFromExtends(in, file.getOriginalFilename())
+        ) {
+
+            //根据名称获取单张表对象 也可以使用getSheetAt(int index)获取单张表的对象 获取第一张表
+            Sheet sheet = workbook.getSheetAt(0);
+            List<ImportEggVo> list = ExcelImportSheet.getListFromExcel(sheet, ImportEggVo.class, map);
+            for (ImportEggVo feedingVo : list) {
+                GroupFeedingEgg feedingEgg = new GroupFeedingEgg();
+                QueryWrapper<BaseBuilding> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("build_name", feedingVo.getUnitName()).eq("type", 1);
+                BaseBuilding baseBuilding = buildingMapper.selectOne(queryWrapper);
+                if (ObjectUtil.isEmpty(baseBuilding)) {
+                    return new Result(10001, "栋舍名称不存在!", false);
+                } else {
+                    feedingEgg.setUnitName(feedingVo.getUnitName());
+                    feedingEgg.setUnitId(baseBuilding.getId());
+                    feedingEgg.setFarmId(baseBuilding.getFarmId());
+                    feedingEgg.setType(1);
+                    feedingEgg.setDateTime(feedingVo.getDateTime());
+                    feedingEgg.setEggWeight(feedingVo.getEggWeight());
+                    feedingEgg.setEggAvg(feedingVo.getEggAvg());
+                    double v = Double.valueOf(feedingEgg.getEggWeight())*1000 / Double.valueOf(feedingEgg.getEggAvg());
+                    int num = (int) Math.round(v);
+                    feedingEgg.setEggNum(num);
+                    feedingEgg.setCreateTime(new Date());
+                    feedingEggMapper.insert(feedingEgg);
+                }
+
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            return new Result(10001, "数据格式异常!", false);
+        } finally {
+            //写着好看的
+        }
+        return new Result(ResultCode.SUCCESS);
+    }
+
+    @Override
+    public Result screenBreed(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String unitId = paramsMap.get("unitId");
+        Date monthmorning = DataUill.getTimesMonthmorning();
+        DateTime dateTime = DateUtil.beginOfYear(new Date());
+
+        QueryWrapper<GroupFeedingEgg> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id",farmId).eq("type",0).eq("unit_id",unitId);
+        queryWrapper.ge("date_time", monthmorning);
+        List<ScreenBreedVo> breedVos = feedingEggMapper.screenBreed(queryWrapper);
+        queryWrapper.clear();
+        queryWrapper.eq("farm_id",farmId).eq("type",0).eq("unit_id",unitId);
+        queryWrapper.ge("date_time", dateTime);
+        List<ScreenBreedVo> breedVos1 = feedingEggMapper.screenBreedMonth(queryWrapper);
+
+        JSONObject jsonObject = new JSONObject();
+        DecimalFormat sdf = new DecimalFormat("0.00");
+
+        jsonObject.put("todayList", breedVos);
+        if (breedVos.size() != 0) {
+            jsonObject.put("todayFeeding", breedVos.get(breedVos.size() - 1).getValues());
+            String feeding = breedVos.get(breedVos.size() - 1).getValues();
+            if (breedVos.size()!=1) {
+                String lastValues = breedVos.get(breedVos.size() - 2).getValues();
+                double value = ((Double.valueOf(feeding) - Double.valueOf(lastValues)) / Double.valueOf(lastValues))*100;
+                jsonObject.put("today", sdf.format(value));
+            } else {
+                jsonObject.put("today", 100);
+            }
+        } else {
+            jsonObject.put("today", 0);
+        }
+
+        jsonObject.put("monthList", breedVos1);
+        if (breedVos1.size() != 0) {
+            jsonObject.put("monthFeeding", breedVos1.get(breedVos1.size() - 1).getValues());
+            String feeding = breedVos1.get(breedVos1.size() - 1).getValues();
+            if (breedVos1.size() != 1) {
+                String lastValues = breedVos1.get(breedVos1.size() - 2).getValues();
+                double value = ((Double.valueOf(feeding) - Double.valueOf(lastValues)) / Double.valueOf(lastValues))*100;
+                jsonObject.put("month", sdf.format(value));
+            } else {
+                jsonObject.put("month", 100);
+            }
+            }
+           else {
+            jsonObject.put("month", 0);
+        }
+        return new Result(ResultCode.SUCCESS,jsonObject);
+    }
+
+}

+ 117 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/impl/GroupLeaveServiceImpl.java

@@ -0,0 +1,117 @@
+package com.huimv.guowei.admin.group.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
+import com.huimv.guowei.admin.group.entity.GroupBatch;
+import com.huimv.guowei.admin.group.entity.GroupDuckInfo;
+import com.huimv.guowei.admin.group.entity.GroupEating;
+import com.huimv.guowei.admin.group.entity.GroupLeave;
+import com.huimv.guowei.admin.group.mapper.GroupBatchMapper;
+import com.huimv.guowei.admin.group.mapper.GroupDuckInfoMapper;
+import com.huimv.guowei.admin.group.mapper.GroupLeaveMapper;
+import com.huimv.guowei.admin.group.service.IGroupLeaveService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * <p>
+ * 平养离场记录 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-09-25
+ */
+@Service
+public class GroupLeaveServiceImpl extends ServiceImpl<GroupLeaveMapper, GroupLeave> implements IGroupLeaveService {
+
+    @Autowired
+    private GroupLeaveMapper leaveMapper;
+    @Autowired
+    private GroupBatchMapper batchMapper;
+    @Autowired
+    private GroupDuckInfoMapper duckInfoMapper;
+
+    @Override
+    public Result listPage(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String pageNum = paramsMap.get("pageNum");
+        String pageSize = paramsMap.get("pageSize");
+        if ("".equals(pageNum) || null == pageNum) {
+            pageNum = "1";
+            pageSize = "20";
+        }
+        String keyword = paramsMap.get("keyword");
+        String time = paramsMap.get("time");
+        Page<GroupLeave> page = new Page(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
+        QueryWrapper<GroupLeave> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId).orderByDesc("leave_date");
+        if (StringUtils.isNotBlank(keyword)) {
+            queryWrapper.and(wrapper -> wrapper.like(StringUtils.isNotBlank(keyword), "device_code", keyword)
+                    .or().like(StringUtils.isNotBlank(keyword), "batch_num", keyword));
+        }
+        queryWrapper.between(StringUtils.isNotBlank(time), "leave_date", time + " 00:00:00", time + " 23:59:59");
+        return new Result(ResultCode.SUCCESS, leaveMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public Result add(GroupLeave leave) {
+        leave.setCreateTime(new Date());
+        if (leave.getType() == 0) {
+            String deviceCode = leave.getDeviceCode();
+            QueryWrapper<GroupDuckInfo> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("farm_id", leave.getFarmId()).eq("device_code", deviceCode);
+            GroupDuckInfo duckInfo = duckInfoMapper.selectOne(queryWrapper);
+            duckInfo.setIsLeave(1);
+            duckInfoMapper.updateById(duckInfo);
+        } else {
+            String deviceCode = leave.getDeviceCode();
+            QueryWrapper<GroupBatch> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("farm_id", leave.getFarmId()).eq("batch_num", deviceCode);
+            GroupBatch groupBatch = batchMapper.selectOne(queryWrapper);
+            String duckId = groupBatch.getDuckId();
+            String[] split = duckId.split(",");
+            for (String muskId : split) {
+                GroupDuckInfo duckInfo = duckInfoMapper.selectOne(new QueryWrapper<GroupDuckInfo>().eq("device_code", muskId));
+                duckInfo.setIsLeave(1);
+                duckInfoMapper.updateById(duckInfo);
+            }
+        }
+        return new Result(ResultCode.SUCCESS, leaveMapper.insert(leave));
+    }
+
+    @Override
+    public Result edit(GroupLeave leave) {
+        if (leave.getIsWithdraw() == 1) {
+            if (leave.getType() == 0) {
+                String deviceCode = leave.getDeviceCode();
+                QueryWrapper<GroupDuckInfo> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("farm_id", leave.getFarmId()).eq("device_code", deviceCode);
+                GroupDuckInfo duckInfo = duckInfoMapper.selectOne(queryWrapper);
+                duckInfo.setIsLeave(0);
+                duckInfoMapper.updateById(duckInfo);
+            }else {
+                String deviceCode = leave.getDeviceCode();
+                QueryWrapper<GroupBatch> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("farm_id", leave.getFarmId()).eq("batch_num", deviceCode);
+                GroupBatch groupBatch = batchMapper.selectOne(queryWrapper);
+                String duckId = groupBatch.getDuckId();
+                String[] split = duckId.split(",");
+                for (String muskId : split) {
+                    GroupDuckInfo duckInfo = duckInfoMapper.selectOne(new QueryWrapper<GroupDuckInfo>().eq("device_code", muskId));
+                    duckInfo.setIsLeave(0);
+                    duckInfoMapper.updateById(duckInfo);
+                }
+            }
+            leaveMapper.deleteById(leave.getId());
+        }
+        leaveMapper.updateById(leave);
+        return new Result(ResultCode.SUCCESS);
+    }
+}

+ 49 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/group/service/impl/GroupThresholdServiceImpl.java

@@ -0,0 +1,49 @@
+package com.huimv.guowei.admin.group.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
+import com.huimv.guowei.admin.group.entity.GroupThreshold;
+import com.huimv.guowei.admin.group.mapper.GroupThresholdMapper;
+import com.huimv.guowei.admin.group.service.IGroupThresholdService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 参数设置 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-10-08
+ */
+@Service
+public class GroupThresholdServiceImpl extends ServiceImpl<GroupThresholdMapper, GroupThreshold> implements IGroupThresholdService {
+
+    @Autowired
+    private GroupThresholdMapper thresholdMapper;
+
+    @Override
+    public Result list(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        QueryWrapper<GroupThreshold> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId);
+        return new Result(ResultCode.SUCCESS, thresholdMapper.selectOne(queryWrapper));
+    }
+
+    @Override
+    public Result addAndEdit(GroupThreshold groupThreshold) {
+        QueryWrapper<GroupThreshold> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", groupThreshold.getFarmId());
+        if (ObjectUtil.isNotEmpty(thresholdMapper.selectOne(queryWrapper))) {
+            thresholdMapper.updateById(groupThreshold);
+        } else {
+            thresholdMapper.insert(groupThreshold);
+        }
+        return new Result(ResultCode.SUCCESS);
+    }
+}

+ 7 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/mapper/EnergyWaterMapper.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.huimv.guowei.admin.entity.EnergyElectricity;
 import com.huimv.guowei.admin.entity.EnergyWater;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.guowei.admin.entity.dto.ScreenWaterVo;
 import com.huimv.guowei.admin.entity.vo.EnergyWaterVo;
 import com.huimv.guowei.admin.entity.vo.WaterLineVo;
 import org.apache.ibatis.annotations.Param;
@@ -59,4 +60,10 @@ public interface EnergyWaterMapper extends BaseMapper<EnergyWater> {
     List<EnergyWater> printWater(@Param(Constants.WRAPPER) QueryWrapper<EnergyWater> queryWrapper);
 
     EnergyWater printWaterCount(@Param(Constants.WRAPPER) QueryWrapper<EnergyWater> queryWrapper);
+
+    List<EnergyWater> listDayGroupDetail(@Param(Constants.WRAPPER) QueryWrapper<EnergyWater> queryWrapper);
+
+    List<EnergyWater> listDayGroupDetail2(@Param(Constants.WRAPPER) QueryWrapper<EnergyWater> queryWrapper);
+
+    List<ScreenWaterVo> screenWater(@Param(Constants.WRAPPER) QueryWrapper<EnergyWater> queryWrapper);
 }

+ 8 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/mapper/EnergyWaterPressureMapper.java

@@ -1,9 +1,13 @@
 package com.huimv.guowei.admin.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.huimv.guowei.admin.entity.EnergyWater;
 import com.huimv.guowei.admin.entity.EnergyWaterPressure;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.huimv.guowei.admin.entity.vo.WaterLinePressureVo;
 import com.huimv.guowei.admin.entity.vo.WaterLineVo;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -30,4 +34,8 @@ public interface EnergyWaterPressureMapper extends BaseMapper<EnergyWaterPressur
     List<WaterLinePressureVo> listWaterLineMonthDetail(String farmId, List<String> chipCodeList, String chipCodes);
 
     List<WaterLinePressureVo> listWaterLineCustomDetail(String farmId, List<String> chipCodeList, String chipCodes, String startDate, String endDate);
+
+    List<EnergyWaterPressure> listGroupDayDetail(@Param(Constants.WRAPPER) QueryWrapper<EnergyWaterPressure> queryWrapper);
+
+    List<EnergyWaterPressure> listGroupDayDetail2(@Param(Constants.WRAPPER) QueryWrapper<EnergyWaterPressure> queryWrapper);
 }

+ 158 - 85
huimv-admin/src/main/java/com/huimv/guowei/admin/mqtt/EnvControll/PushCallback.java

@@ -55,6 +55,7 @@ public class PushCallback implements MqttCallbackExtended {
         String chip = split[2];
         System.out.println(chip);
         String messages = new String(message.getPayload());
+
         if ("sync_time".equals(messages)) {
             log.info("-----开始配置同步时间----");
             JSONObject jsonObject1 = new JSONObject();
@@ -89,15 +90,17 @@ public class PushCallback implements MqttCallbackExtended {
             queryWrapper.eq("device_code", one.getId()).orderByDesc("equipment_port");
             List<EnvDeviceEquipment> list = envDeviceEquipmentService.list(queryWrapper);
             String deviceStatus = "";
-            for (EnvDeviceEquipment envDeviceEquipment1 : list) {
-                deviceStatus = deviceStatus + envDeviceEquipment1.getUploadStart();
+            if (list.size() != 0) {
+                for (EnvDeviceEquipment envDeviceEquipment1 : list) {
+                    deviceStatus = deviceStatus + envDeviceEquipment1.getUploadStart();
+                }
+                String s = deviceStatus;
+                int i = Integer.parseInt(s, 2);
+                jsonObject.put("dev_ctrl", i);
+                log.info("设备配置完成开始发送:" + i);
+                PublishMQTT publishMQTT = new PublishMQTT();
+                publishMQTT.start("tcp://115.238.57.190:1883", "GUOWEIpublish", "admin", "admin", "huimv_down_" + chip, jsonObject.toJSONString());
             }
-            String s = deviceStatus;
-            int i = Integer.parseInt(s, 2);
-            jsonObject.put("dev_ctrl", i);
-            log.info("设备配置完成开始发送:" + i);
-            PublishMQTT publishMQTT = new PublishMQTT();
-            publishMQTT.start("tcp://115.238.57.190:1883", "GUOWEIpublish", "admin", "admin", "huimv_down_" + chip, jsonObject.toJSONString());
             log.info("---设备控制发送完成---");
         } else if ("dev_ctrl_suc".equals(messages)) {
             QueryWrapper<EnvDevice> queryWrapper = new QueryWrapper<>();
@@ -109,14 +112,15 @@ public class PushCallback implements MqttCallbackExtended {
             QueryWrapper<EnvDeviceEquipment> queryWrapper1 = new QueryWrapper<>();
             queryWrapper1.eq("device_code", one.getId()).orderByDesc("equipment_port");
             List<EnvDeviceEquipment> list = envDeviceEquipmentService.list(queryWrapper1);
-            for (EnvDeviceEquipment equipment : list) {
-                equipment.setUpdateTime(new Date());
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                System.out.println("----这个是应答时间:" + sdf.format(new Date()));
-                envDeviceEquipmentService.updateById(equipment);
-                System.out.println("-----收到控制响应后修改标识成功!!");
+            if (list.size() != 0) {
+                for (EnvDeviceEquipment equipment : list) {
+                    equipment.setUpdateTime(new Date());
+                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                    System.out.println("----这个是应答时间:" + sdf.format(new Date()));
+                    envDeviceEquipmentService.updateById(equipment);
+                    System.out.println("-----收到控制响应后修改标识成功!!");
+                }
             }
-
             System.out.println("收到控制响应");
         } else {
             JSONObject jsonObject = JSON.parseObject(messages);
@@ -166,20 +170,24 @@ public class PushCallback implements MqttCallbackExtended {
                 BigDecimal data1 = new BigDecimal(Integer.parseInt(jsonArray1.get(0).toString()));
                 BigDecimal humi2 = data1.divide(big);
 
-                Map ph = (Map) map.get("ph");
-                JSONArray jsonArrayPH = (JSONArray) ph.get("data");
-                BigDecimal dataPH = new BigDecimal(Integer.parseInt(jsonArrayPH.get(0).toString()));
-                BigDecimal ph2 = dataPH.divide(big);
-
                 EnvData envData = new EnvData();
+                if ("867699060005759".equals(chip) || "867699060004794".equals(chip)) {
+                } else {
+                    Map ph = (Map) map.get("ph");
+                    JSONArray jsonArrayPH = (JSONArray) ph.get("data");
+                    BigDecimal dataPH = new BigDecimal(Integer.parseInt(jsonArrayPH.get(0).toString()));
+                    BigDecimal ph2 = dataPH.divide(big);
+                    envData.setOther1(ph2.toString());
+                }
+
                 envData.setCreateTime(new Date());
                 envData.setEnvTemp(temp2.toString());
                 envData.setEnvHum(humi2.toString());
                 //ph 值
                 //除了9号舍有真实数据外 其他舍生成7.8-8
 
-                envData.setOther1(ph2.toString());
 
+                envData.setDeviceId(device.getDeviceCode());
                 envData.setUnitId(device.getUnitId());
                 envData.setFarmId(device.getFarmId());
                 IEnvDataService dataService = SpringUtil.getBean(IEnvDataService.class);
@@ -189,85 +197,151 @@ public class PushCallback implements MqttCallbackExtended {
                 dataService.save(envData);
                 log.info("温湿度处理完成!");
 
+
                 //水表的值
-                Map waterMeter = (Map) map.get("water_meter");
-                JSONArray jsonArray2 = (JSONArray) waterMeter.get("data");
-                IEnergyWaterService waterService = SpringUtil.getBean(IEnergyWaterService.class);
-                QueryWrapper<EnvDeviceChip> queryWrapper = new QueryWrapper<>();
-                queryWrapper.eq("device_code", device.getDeviceCode()).eq("chip_type", 3);
-                List<EnvDeviceChip> chips = chipService.list(queryWrapper);
+                if ("867699060005759".equals(chip) || "867699060004794".equals(chip)) {
+                    Map waterMeter = (Map) map.get("special_water_meter");
+                    JSONArray jsonArray2 = (JSONArray) waterMeter.get("data");
+                    JSONArray sta = (JSONArray) waterMeter.get("sta");
+                    IEnergyWaterService waterService = SpringUtil.getBean(IEnergyWaterService.class);
+                    QueryWrapper<EnvDeviceChip> queryWrapper = new QueryWrapper<>();
+                    EnvDevice device1 = deviceService.getOne(new QueryWrapper<EnvDevice>().eq("device_type", 1).eq("device_code", chip));
+                    queryWrapper.eq("device_code", device1.getDeviceCode()).eq("chip_type", 3);
+                    List<EnvDeviceChip> chips = chipService.list(queryWrapper);
 //                IEnvDeviceChipService chipService = SpringUtil.getBean(IEnvDeviceChipService.class);
-                for (int i = 0; i < jsonArray2.size(); i++) {
-                    QueryWrapper<EnergyWater> queryWrapper1 = new QueryWrapper<>();
-                    queryWrapper1.eq("farm_id", device.getFarmId()).orderByDesc("id").eq("chip_code", chips.get(i).getChipCode())
-                            .last(" limit 1");
-                    EnergyWater water1 = waterService.getOne(queryWrapper1);
-                    EnergyWater water = new EnergyWater();
-                    BigDecimal data2 = new BigDecimal(Integer.parseInt(jsonArray2.get(i).toString()));
-                    BigDecimal waterMeter2 = data2.divide(big);
-                    if (ObjectUtil.isNotEmpty(water1)) {
-                        if ("".equals(water1.getOriginalValue()) || water1.getOriginalValue() == null) {
-                            water.setOriginalValue(waterMeter2.toString());
-                            water.setWaterValue(waterMeter2.toString());
+                    for (int i = 0; i < jsonArray2.size(); i++) {
+                        BigDecimal big1 = BigDecimal.valueOf(1000);
+                        QueryWrapper<EnergyWater> queryWrapper1 = new QueryWrapper<>();
+                        queryWrapper1.eq("farm_id", device1.getFarmId()).orderByDesc("id").eq("chip_code", 1006)
+                                .last(" limit 1");
+                        if ("867699060005759".equals(chip)) {
+                            queryWrapper1.eq("unit_id", 9942);
                         } else {
-                            water.setOriginalValue(waterMeter2.toString());
-                            BigDecimal bd = new BigDecimal(water1.getOriginalValue());
-                            if (bd.compareTo(BigDecimal.ZERO) == -1) {
-                                water.setWaterValue(BigDecimal.ZERO.toString());
+                            queryWrapper1.eq("unit_id", 9943);
+                        }
+                        EnergyWater water1 = waterService.getOne(queryWrapper1);
+                        EnergyWater water = new EnergyWater();
+                        BigDecimal data2 = new BigDecimal(Integer.parseInt(jsonArray2.get(i).toString()));
+                        BigDecimal waterMeter2 = data2.divide(big1);
+
+                        if (sta.get(0).equals("4")||waterMeter2.equals(BigDecimal.ZERO)) {
+                            water.setWaterValue("0");
+                            if (ObjectUtil.isNotEmpty(water1)) {
+                                water.setOriginalValue(water1.getOriginalValue());
+                            } else {
+                                water.setOriginalValue("0");
+                            }
+                        }else {
+                            if (ObjectUtil.isNotEmpty(water1)) {
+                                BigDecimal bd = new BigDecimal(water1.getOriginalValue());
+                                    if (waterMeter2.compareTo(bd) <= 0) {
+                                        water.setOriginalValue(water1.getOriginalValue());
+                                        water.setWaterValue("0");
+                                    } else {
+                                        water.setOriginalValue(waterMeter2.toString());
+                                        water.setWaterValue(waterMeter2.subtract(bd).toString());
+                                    }
+
                             } else {
-                                water.setWaterValue(waterMeter2.subtract(bd).toString());
+                                water.setWaterValue(waterMeter2.toString());
+                                water.setOriginalValue(waterMeter2.toString());
                             }
                         }
-                    } else {
-                        water.setWaterValue(waterMeter2.toString());
-                        water.setOriginalValue(waterMeter2.toString());
+
+                        water.setCreateDate(new Date());
+                        water.setFarmId(device1.getFarmId());
+                        water.setUnitId(device1.getUnitId());
+                        water.setChipCode(chips.get(i).getChipCode());
+                        waterService.save(water);
+                    }
+                    log.info("水表处理完成!");
+                } else {
+                    Map waterMeter = (Map) map.get("water_meter");
+                    JSONArray jsonArray2 = (JSONArray) waterMeter.get("data");
+                    IEnergyWaterService waterService = SpringUtil.getBean(IEnergyWaterService.class);
+                    QueryWrapper<EnvDeviceChip> queryWrapper = new QueryWrapper<>();
+                    queryWrapper.eq("device_code", device.getDeviceCode()).eq("chip_type", 3);
+                    List<EnvDeviceChip> chips = chipService.list(queryWrapper);
+//                IEnvDeviceChipService chipService = SpringUtil.getBean(IEnvDeviceChipService.class);
+                    for (int i = 0; i < jsonArray2.size(); i++) {
+                        QueryWrapper<EnergyWater> queryWrapper1 = new QueryWrapper<>();
+                        queryWrapper1.eq("farm_id", device.getFarmId()).orderByDesc("id").eq("chip_code", chips.get(i).getChipCode())
+                                .last(" limit 1");
+                        EnergyWater water1 = waterService.getOne(queryWrapper1);
+                        EnergyWater water = new EnergyWater();
+                        BigDecimal data2 = new BigDecimal(Integer.parseInt(jsonArray2.get(i).toString()));
+                        BigDecimal waterMeter2 = data2.divide(big);
+                        if (ObjectUtil.isNotEmpty(water1)) {
+                            if ("".equals(water1.getOriginalValue()) || water1.getOriginalValue() == null) {
+                                water.setOriginalValue(waterMeter2.toString());
+                                water.setWaterValue(waterMeter2.toString());
+                            } else {
+                                water.setOriginalValue(waterMeter2.toString());
+                                BigDecimal bd = new BigDecimal(water1.getOriginalValue());
+                                if (bd.compareTo(BigDecimal.ZERO) == -1) {
+                                    water.setWaterValue(BigDecimal.ZERO.toString());
+                                } else {
+                                    water.setWaterValue(waterMeter2.subtract(bd).toString());
+                                }
+                            }
+                        } else {
+                            water.setWaterValue(waterMeter2.toString());
+                            water.setOriginalValue(waterMeter2.toString());
+                        }
+                        water.setCreateDate(new Date());
+                        water.setFarmId(device.getFarmId());
+                        water.setUnitId(device.getUnitId());
+                        water.setChipCode(chips.get(i).getChipCode());
+                        waterService.save(water);
                     }
-                    water.setCreateDate(new Date());
-                    water.setFarmId(device.getFarmId());
-                    water.setUnitId(device.getUnitId());
-                    water.setChipCode(chips.get(i).getChipCode());
-                    waterService.save(water);
+                    log.info("水表处理完成!");
                 }
-                log.info("水表处理完成!");
+
 
                 //电表的值
-                Map elect = (Map) map.get("electr_meter");
-                JSONArray jsonArray3 = (JSONArray) elect.get("data");
-                IEnergyElectricityService electricityService = SpringUtil.getBean(IEnergyElectricityService.class);
-
-                QueryWrapper<EnvDeviceChip> queryWrapper1 = new QueryWrapper<>();
-                queryWrapper1.eq("device_code", device.getDeviceCode()).eq("chip_type", 4);
-                List<EnvDeviceChip> chips2 = chipService.list(queryWrapper1);
-
-                for (EnvDeviceChip deviceChip : chips2) {
-                    QueryWrapper<EnergyElectricity> queryWrapper2 = new QueryWrapper<>();
-                    queryWrapper2.eq("farm_id", device.getFarmId()).orderByDesc("id").eq("chip_code", deviceChip.getChipCode())
-                            .last(" limit 1");
-                    EnergyElectricity water1 = electricityService.getOne(queryWrapper2);
-                    EnergyElectricity electricity = new EnergyElectricity();
-                    BigDecimal data2 = new BigDecimal(Integer.parseInt(jsonArray3.get(0).toString()));
-                    BigDecimal elect2 = data2.divide(big);
-                    if (ObjectUtil.isNotEmpty(water1)) {
-                        if ("".equals(water1.getOriginalValue()) || water1.getOriginalValue() == null) {
-                            electricity.setOriginalValue(elect2.toString());
-                            electricity.setElectricityValue(elect2.toString());
+                if ("867699060005759".equals(chip) || "867699060004794".equals(chip)) {
+
+                } else {
+                    Map elect = (Map) map.get("electr_meter");
+                    JSONArray jsonArray3 = (JSONArray) elect.get("data");
+                    IEnergyElectricityService electricityService = SpringUtil.getBean(IEnergyElectricityService.class);
+
+                    QueryWrapper<EnvDeviceChip> queryWrapper1 = new QueryWrapper<>();
+                    queryWrapper1.eq("device_code", device.getDeviceCode()).eq("chip_type", 4);
+                    List<EnvDeviceChip> chips2 = chipService.list(queryWrapper1);
+
+                    for (EnvDeviceChip deviceChip : chips2) {
+                        QueryWrapper<EnergyElectricity> queryWrapper2 = new QueryWrapper<>();
+                        queryWrapper2.eq("farm_id", device.getFarmId()).orderByDesc("id").eq("chip_code", deviceChip.getChipCode())
+                                .last(" limit 1");
+                        EnergyElectricity water1 = electricityService.getOne(queryWrapper2);
+                        EnergyElectricity electricity = new EnergyElectricity();
+                        BigDecimal data2 = new BigDecimal(Integer.parseInt(jsonArray3.get(0).toString()));
+                        BigDecimal elect2 = data2.divide(big);
+                        if (ObjectUtil.isNotEmpty(water1)) {
+                            if ("".equals(water1.getOriginalValue()) || water1.getOriginalValue() == null) {
+                                electricity.setOriginalValue(elect2.toString());
+                                electricity.setElectricityValue(elect2.toString());
+                            } else {
+                                electricity.setOriginalValue(elect2.toString());
+                                BigDecimal bd = new BigDecimal(water1.getOriginalValue());
+                                electricity.setElectricityValue(elect2.subtract(bd).toString());
+                            }
                         } else {
+                            electricity.setElectricityValue(elect2.toString());
                             electricity.setOriginalValue(elect2.toString());
-                            BigDecimal bd = new BigDecimal(water1.getOriginalValue());
-                            electricity.setElectricityValue(elect2.subtract(bd).toString());
                         }
-                    } else {
-                        electricity.setElectricityValue(elect2.toString());
-                        electricity.setOriginalValue(elect2.toString());
+                        electricity.setCreateDate(new Date());
+                        electricity.setUnitId(device.getUnitId());
+                        electricity.setFarmId(device.getFarmId());
+                        electricity.setChipCode(deviceChip.getChipCode());
+                        electricityService.save(electricity);
                     }
-                    electricity.setCreateDate(new Date());
-                    electricity.setUnitId(device.getUnitId());
-                    electricity.setFarmId(device.getFarmId());
-                    electricity.setChipCode(deviceChip.getChipCode());
-                    electricityService.save(electricity);
+
+                    log.info("电表处理完成!");
                 }
 
-                log.info("电表处理完成!");
+
 
 
                 //水压的值
@@ -291,7 +365,6 @@ public class PushCallback implements MqttCallbackExtended {
                     pressureService.save(waterPressure);
                     log.info("水压处理完成!");
                 }
-
             }
 
             System.out.println("数据处理完成!");

+ 6 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/service/IEnergyWarningThresholdService.java

@@ -1,8 +1,11 @@
 package com.huimv.guowei.admin.service;
 
+import com.huimv.guowei.admin.common.utils.Result;
 import com.huimv.guowei.admin.entity.EnergyWarningThreshold;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.Map;
+
 /**
  * <p>
  *  服务类
@@ -13,4 +16,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IEnergyWarningThresholdService extends IService<EnergyWarningThreshold> {
 
+    Result saveThreshold(EnergyWarningThreshold warningThreshold);
+
+    Result getThreshold(Map<String ,String> paramsMap);
 }

+ 6 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/service/IEnergyWaterPressureService.java

@@ -21,4 +21,10 @@ public interface IEnergyWaterPressureService extends IService<EnergyWaterPressur
     Result listWaterPressure(Map<String, String> paramsMap);
 
     Result listWaterLinePressure(Map<String, String> paramsMap);
+
+    //平养水压
+    Result listGroupPressure(Map<String, String> paramsMap);
+
+    //平养区的水压监测
+    Result screenPressure(Map<String, String> paramsMap);
 }

+ 5 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/service/IEnergyWaterService.java

@@ -30,4 +30,9 @@ public interface IEnergyWaterService extends IService<EnergyWater> {
     Result listScreenUnitWater(Map<String, String> paramsMap);
 
     void printWater(HttpServletResponse response, Map<String, String> paramsMap)throws Exception ;
+
+    Result listWaterGroup(Map<String, String> paramsMap);
+
+    //大屏平养区用水监测
+    Result screenWater(Map<String, String> paramsMap);
 }

+ 3 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/service/IEnvDataService.java

@@ -25,4 +25,7 @@ public interface IEnvDataService extends IService<EnvData> {
     Result listDetail(Map<String, String> paramsMap);
 
     Result listTodayByBuild(Map<String, String> paramsMap);
+
+    //大屏平养区栋舍监测
+    Result screenEnv(Map<String, String> paramsMap);
 }

+ 28 - 22
huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/BaseBuildingServiceImpl.java

@@ -65,20 +65,21 @@ public class BaseBuildingServiceImpl extends ServiceImpl<BaseBuildingMapper, Bas
         baseBuilding.setFType(1);
         this.save(baseBuilding);
         Integer cageNum = baseBuilding.getCageNum();
-        List<BaseBuilding> cageList = new ArrayList<>();
-        for (int i = 1; i <= cageNum; i++) {
-            BaseBuilding building = new BaseBuilding();
-            building.setParentId(baseBuilding.getId());
-            building.setFType(2);
-            building.setStageCode(baseBuilding.getStageCode());
-            building.setBuildName(baseBuilding.getBuildName()+ i +"笼");
-            building.setCageName(i +"笼");
-            building.setFarmId(baseBuilding.getFarmId());
-            cageList.add(building);
+        if (baseBuilding.getType() == 0) {
+            List<BaseBuilding> cageList = new ArrayList<>();
+            for (int i = 1; i <= cageNum; i++) {
+                BaseBuilding building = new BaseBuilding();
+                building.setParentId(baseBuilding.getId());
+                building.setFType(2);
+                building.setStageCode(baseBuilding.getStageCode());
+                building.setBuildName(baseBuilding.getBuildName()+ i +"笼");
+                building.setCageName(i +"笼");
+                building.setFarmId(baseBuilding.getFarmId());
+                cageList.add(building);
+            }
+            this.saveBatch(cageList);
         }
-        this.saveBatch(cageList);
         return Result.SUCCESS();
-
     }
 
     @Override
@@ -138,11 +139,12 @@ public class BaseBuildingServiceImpl extends ServiceImpl<BaseBuildingMapper, Bas
         if (ObjectUtil.isNotEmpty(envDeviceMapper.selectList(new QueryWrapper<EnvDevice>().eq("unit_id",id)))) {
             return new Result(10001,"删除失败,该栋舍存在设备",false);
         }
-        if (this.removeById(id) && this.removeByIds(cageIds)){
-            return new Result(10000, "删除成功", true);
-        }else {
-            return new Result(10001, "删除失败", true);
+        baseBuildingMapper.deleteById(id);
+        for (Integer cageId : cageIds) {
+            baseBuildingMapper.deleteById(cageId);
         }
+        return new Result(10000, "删除成功", true);
+
     }
 
     @Override
@@ -152,10 +154,12 @@ public class BaseBuildingServiceImpl extends ServiceImpl<BaseBuildingMapper, Bas
         String buildName = map.get("buildName");
         String pageNum = map.get("pageNum");
         String pageSize = map.get("pageSize");
+        String type = map.get("type");
         Page<BaseBuilding> page = new Page(Integer.valueOf(pageNum),Integer.valueOf(pageSize));
         Page<BaseBuilding> baseBuildingPage = this.page(page, new QueryWrapper<BaseBuilding>()
                 .eq("farm_id", farmId)
-                .eq("f_type",1)
+                .eq(StringUtils.isNotBlank(type),"type", type)
+                .eq("f_type", 1)
                 .eq(StringUtils.isNotBlank(stageCode), "stage_code", stageCode)
                 .like(StringUtils.isNotBlank(buildName), "build_name", buildName)
                 .orderByAsc("id"));
@@ -165,8 +169,9 @@ public class BaseBuildingServiceImpl extends ServiceImpl<BaseBuildingMapper, Bas
     @Override
     public Result listTreeBuilding(Map<String, String> map) {
         String farmId = map.get("farmId");
+        String type = map.get("type");
         List<BaseBuilding> baseBuildings = this.list(new QueryWrapper<BaseBuilding>()
-                .eq("farm_id", farmId)
+                .eq("farm_id", farmId).eq(StringUtils.isNotBlank(type),"type", type)
                 .orderByAsc("id"));
         List<TreeBaseBuilding> treeBaseBuildings = parseBizBaseArea(baseBuildings);
         Collections.sort(treeBaseBuildings);
@@ -224,7 +229,7 @@ public class BaseBuildingServiceImpl extends ServiceImpl<BaseBuildingMapper, Bas
         unitList.addAll(baseBuildingList.stream().map(baseBuilding -> baseBuilding.getId()).collect(Collectors.toList()));
         long deviceNum = envDeviceMapper.selectCount(new QueryWrapper<EnvDevice>().lambda().in(EnvDevice::getUnitId,unitList)) + 5;
         resultMap.put("deviceNum",deviceNum);
-        List<EnvDeviceEquipment> deviceList =envDeviceEquipmentMapper.selectList(new QueryWrapper<EnvDeviceEquipment>().eq("unit_id",unitId).orderByAsc("equipment_port"));
+        List<EnvDeviceEquipment> deviceList =envDeviceEquipmentMapper.selectList(new QueryWrapper<EnvDeviceEquipment>().eq("unit_id",unitId).ne("id",162).orderByAsc("equipment_port"));
         resultMap.put("deviceList",deviceList);
         return new Result(ResultCode.SUCCESS,resultMap);
     }
@@ -294,9 +299,9 @@ public class BaseBuildingServiceImpl extends ServiceImpl<BaseBuildingMapper, Bas
                 .eq("farm_id", farmId)
                 .eq("f_type",1)
                 .orderByAsc("id"));
-        baseBuildings.removeIf(baseBuilding -> envDeviceMapper.selectCount(new QueryWrapper<EnvDevice>().lambda()
-                .eq(EnvDevice::getUnitId, baseBuilding.getId())
-                .in(EnvDevice::getDeviceType, 1, 4)) == 0);
+//        baseBuildings.removeIf(baseBuilding -> envDeviceMapper.selectCount(new QueryWrapper<EnvDevice>().lambda()
+//                .eq(EnvDevice::getUnitId, baseBuilding.getId())
+//                .in(EnvDevice::getDeviceType, 1, 4)) == 0);
         return new Result(ResultCode.SUCCESS,baseBuildings);
     }
 
@@ -328,6 +333,7 @@ public class BaseBuildingServiceImpl extends ServiceImpl<BaseBuildingMapper, Bas
             baseVo.setFarmCode(baseBuilding.getFarmId());
             baseVo.setParentId(baseBuilding.getParentId());
             baseVo.setSort(baseBuilding.getSort());
+            baseVo.setType(baseBuilding.getType());
             baseVo.setStageCode(baseBuilding.getStageCode());
             baseVo.setBuildName(baseBuilding.getBuildName());
             baseVo.setFType(baseBuilding.getFType());

+ 47 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/EnergyWarningThresholdServiceImpl.java

@@ -1,11 +1,18 @@
 package com.huimv.guowei.admin.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.guowei.admin.common.utils.Result;
+import com.huimv.guowei.admin.common.utils.ResultCode;
 import com.huimv.guowei.admin.entity.EnergyWarningThreshold;
 import com.huimv.guowei.admin.mapper.EnergyWarningThresholdMapper;
 import com.huimv.guowei.admin.service.IEnergyWarningThresholdService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Map;
+
 /**
  * <p>
  *  服务实现类
@@ -17,4 +24,44 @@ import org.springframework.stereotype.Service;
 @Service
 public class EnergyWarningThresholdServiceImpl extends ServiceImpl<EnergyWarningThresholdMapper, EnergyWarningThreshold> implements IEnergyWarningThresholdService {
 
+    @Autowired
+    private EnergyWarningThresholdMapper thresholdMapper;
+
+    @Override
+    public Result saveThreshold(EnergyWarningThreshold warningThreshold) {
+        Integer farmId = warningThreshold.getFarmId();
+        EnergyWarningThreshold threshold = thresholdMapper.selectOne(new QueryWrapper<EnergyWarningThreshold>().eq("farm_id", farmId));
+        if (ObjectUtil.isNotEmpty(threshold)) {
+            thresholdMapper.updateById(warningThreshold);
+        } else {
+            thresholdMapper.insert(warningThreshold);
+        }
+        return new Result(ResultCode.SUCCESS);
+    }
+
+    @Override
+    public Result getThreshold(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        EnergyWarningThreshold threshold = thresholdMapper.selectOne(new QueryWrapper<EnergyWarningThreshold>().eq("farm_id", farmId));
+        if (ObjectUtil.isNotEmpty(threshold)) {
+            return new Result(ResultCode.SUCCESS, threshold);
+        } else {
+            EnergyWarningThreshold threshold1 = new EnergyWarningThreshold();
+            threshold1.setElectricityCount("0");
+            threshold1.setGroupPressure("0");
+            threshold1.setGroupWater("0");
+            threshold1.setPressureFour("0");
+            threshold1.setPressureOne("0");
+            threshold1.setPressureThree("0");
+            threshold1.setPressureTwo("0");
+            threshold1.setWaterCount("0");
+            threshold1.setWaterFour("0");
+            threshold1.setWaterOne("0");
+            threshold1.setWaterThree("0");
+            threshold1.setWaterTwo("0");
+            return new Result(ResultCode.SUCCESS, threshold1);
+        }
+
+    }
+
 }

+ 65 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/EnergyWaterPressureServiceImpl.java

@@ -1,8 +1,12 @@
 package com.huimv.guowei.admin.service.impl;
 
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.guowei.admin.common.utils.DataUill;
 import com.huimv.guowei.admin.common.utils.Result;
 import com.huimv.guowei.admin.common.utils.ResultCode;
 import com.huimv.guowei.admin.entity.EnergyWaterPressure;
@@ -18,6 +22,7 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -120,4 +125,64 @@ public class EnergyWaterPressureServiceImpl extends ServiceImpl<EnergyWaterPress
         }
         return new Result(ResultCode.SUCCESS,waterLineList);
     }
+
+    @Override
+    public Result listGroupPressure(Map<String, String> paramsMap) {
+        String type = paramsMap.get("type");
+        String farmId = paramsMap.get("farmId");
+        String startDate = paramsMap.get("startDate");
+        String unitId = paramsMap.get("unitId");
+        String endDate = paramsMap.get("endDate")+" 23:59:59";
+        List<EnergyWaterPressure> waterLineList = new ArrayList<>();
+        QueryWrapper<EnergyWaterPressure> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId).eq("unit_id", unitId).eq("chip_code", 1006);
+        if ("1".equals(type)){
+            Date timesmorning = DataUill.getTimesmorning();
+            queryWrapper.ge("create_date", timesmorning);
+            waterLineList = energyWaterPressureMapper.listGroupDayDetail(queryWrapper);
+        }
+        if ("2".equals(type)){
+            DateTime dateTime = DateUtil.beginOfWeek(new Date());
+            queryWrapper.ge("create_date", dateTime);
+            waterLineList = energyWaterPressureMapper.listGroupDayDetail2(queryWrapper);
+        }
+        if ("3".equals(type)){
+            Date monthmorning = DataUill.getTimesMonthmorning();
+            queryWrapper.ge("create_date", monthmorning);
+            waterLineList = energyWaterPressureMapper.listGroupDayDetail2(queryWrapper);
+        }
+        if ("4".equals(type)){
+            queryWrapper.between("create_date", startDate,endDate);
+            waterLineList = energyWaterPressureMapper.listGroupDayDetail2(queryWrapper);
+        }
+        return new Result(ResultCode.SUCCESS,waterLineList);
+    }
+
+    @Override
+    public Result screenPressure(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String unitId = paramsMap.get("unitId");
+        QueryWrapper<EnergyWaterPressure> queryWrapper = new QueryWrapper<>();
+        Date timesmorning = DataUill.getTimesmorning();
+        queryWrapper.eq("farm_id", farmId).eq("unit_id", unitId)
+                .eq("chip_code", 1006).ge("create_date",timesmorning);
+        List<EnergyWaterPressure> pressures = energyWaterPressureMapper.listGroupDayDetail(queryWrapper);
+        double maxValue = 0.0;
+        double minValue = 0.0;
+        if (pressures.size() != 0) {
+            for (EnergyWaterPressure pressure : pressures) {
+                if (Double.valueOf(pressure.getWaterValue()) > maxValue) {
+                    maxValue = Double.valueOf(pressure.getWaterValue());
+                }
+                if (Double.valueOf(pressure.getWaterValue())< minValue) {
+                    minValue = Double.valueOf(pressure.getWaterValue());
+                }
+            }
+        }
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("maxValue", maxValue);
+        jsonObject.put("minValue", minValue);
+        jsonObject.put("list", pressures);
+        return new Result(ResultCode.SUCCESS, jsonObject);
+    }
 }

+ 99 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/EnergyWaterServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.huimv.guowei.admin.common.utils.DataUill;
 import com.huimv.guowei.admin.common.utils.Result;
@@ -12,6 +13,7 @@ import com.huimv.guowei.admin.entity.BaseBuilding;
 import com.huimv.guowei.admin.entity.EnergyElectricity;
 import com.huimv.guowei.admin.entity.EnergyWater;
 import com.huimv.guowei.admin.entity.EnvDeviceChip;
+import com.huimv.guowei.admin.entity.dto.ScreenWaterVo;
 import com.huimv.guowei.admin.entity.vo.EnergyWaterVo;
 import com.huimv.guowei.admin.entity.vo.WaterLineVo;
 import com.huimv.guowei.admin.mapper.BaseBuildingMapper;
@@ -28,9 +30,11 @@ import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 
 /**
@@ -275,4 +279,99 @@ public class EnergyWaterServiceImpl extends ServiceImpl<EnergyWaterMapper, Energ
         EnergyWater water = energyWaterMapper.printWaterCount(queryWrapper);//总吨数
         Print.printWater(waterVos, water);
     }
+
+    @Override
+    public Result listWaterGroup(Map<String, String> paramsMap) {
+        String type = paramsMap.get("type");
+        String unitId = paramsMap.get("unitId");
+        String farmId = paramsMap.get("farmId");
+        String startDate = paramsMap.get("startDate");
+        String endDate = paramsMap.get("endDate") + " 23:59:59";
+
+        List<EnergyWater> energyWaterList = null;
+        QueryWrapper<EnergyWater> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId).eq("unit_id",unitId).eq("chip_code", 1006);
+        if ("1".equals(type)) {
+            Date timesmorning = DataUill.getTimesmorning();
+            queryWrapper.ge("create_date", timesmorning);
+            energyWaterList = energyWaterMapper.listDayGroupDetail(queryWrapper);
+        }
+        if ("2".equals(type)) {
+            DateTime dateTime = DateUtil.beginOfWeek(new Date());
+            queryWrapper.ge("create_date", dateTime);
+            energyWaterList = energyWaterMapper.listDayGroupDetail2(queryWrapper);
+        }
+        if ("3".equals(type)) {
+            Date monthmorning = DataUill.getTimesMonthmorning();
+            queryWrapper.ge("create_date", monthmorning);
+            energyWaterList = energyWaterMapper.listDayGroupDetail2(queryWrapper);
+        }
+        if ("4".equals(type)) {
+            queryWrapper.between("create_date", startDate,endDate);
+            energyWaterList = energyWaterMapper.listDayGroupDetail2(queryWrapper);
+        }
+        return new Result(ResultCode.SUCCESS, energyWaterList);
+    }
+
+    @Override
+    public Result screenWater(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String unitId = paramsMap.get("unitId");
+
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
+
+        // 获取当前日期
+        LocalDate currentDate = LocalDate.now();
+        // 计算最近12个月的开始和结束时间
+        LocalDate startMonth = currentDate.minusMonths(11);
+        LocalDate endMonth = currentDate;
+        // 格式化日期为字符串
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        String startMonthStr = startMonth.format(formatter);
+        String endMonthStr = endMonth.format(formatter);
+
+        QueryWrapper<EnergyWater> queryWrapper = new QueryWrapper<>();
+        queryWrapper.ge("create_date", calendar.getTime()).eq("farm_id", farmId).eq("unit_id",unitId);
+        List<EnergyWater> energyWaters = energyWaterMapper.listDayGroupDetail2(queryWrapper);
+
+        queryWrapper.clear();
+        queryWrapper.between("create_date", startMonthStr+" 00:00:00", endMonthStr+" 23:59:59")
+                .eq("farm_id", farmId).eq("unit_id",unitId);
+        List<ScreenWaterVo> waterVos = energyWaterMapper.screenWater(queryWrapper);
+
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("todayList", energyWaters);
+        DecimalFormat sdf = new DecimalFormat("0.00");
+        if (energyWaters.size() != 0) {
+            String waterValue = energyWaters.get(energyWaters.size() - 1).getWaterValue();
+            if (energyWaters.size()!=1) {
+                String lastValues = energyWaters.get(energyWaters.size() - 2).getWaterValue();
+                double value = ((Double.valueOf(waterValue) - Double.valueOf(lastValues))/ Double.valueOf(lastValues))*100;
+                jsonObject.put("today", sdf.format(value));
+            } else {
+                jsonObject.put("today", 100);
+            }
+        } else {
+            jsonObject.put("today", 0);
+        }
+
+        jsonObject.put("monthList", waterVos);
+        if (waterVos.size() != 0) {
+            String waterValue = waterVos.get(waterVos.size() - 1).getWaterValue();
+            if (waterVos.size()!=1) {
+                String lastValues = waterVos.get(waterVos.size() - 2).getWaterValue();
+                double value = ((Double.valueOf(waterValue) - Double.valueOf(lastValues)) / Double.valueOf(lastValues))*100;
+                jsonObject.put("month", sdf.format(value));
+            } else {
+                jsonObject.put("month", 100);
+            }
+        } else {
+            jsonObject.put("month", 0);
+        }
+        return new Result(ResultCode.SUCCESS, jsonObject);
+    }
+
+
+
 }

+ 34 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/EnvDataServiceImpl.java

@@ -11,13 +11,16 @@ import com.huimv.guowei.admin.common.utils.ResultCode;
 import com.huimv.guowei.admin.entity.BaseBuilding;
 import com.huimv.guowei.admin.entity.EnvData;
 import com.huimv.guowei.admin.entity.EnvDevice;
+import com.huimv.guowei.admin.entity.EnvDeviceEquipment;
 import com.huimv.guowei.admin.entity.vo.EnvDataGetOneVo;
 import com.huimv.guowei.admin.entity.vo.EnvDataVo;
 import com.huimv.guowei.admin.mapper.BaseBuildingMapper;
 import com.huimv.guowei.admin.mapper.EnvDataMapper;
+import com.huimv.guowei.admin.mapper.EnvDeviceEquipmentMapper;
 import com.huimv.guowei.admin.mapper.EnvDeviceMapper;
 import com.huimv.guowei.admin.service.IEnvDataService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -45,6 +48,8 @@ public class EnvDataServiceImpl extends ServiceImpl<EnvDataMapper, EnvData> impl
     private BaseBuildingMapper baseBuildingMapper;
     @Resource
     private EnvDeviceMapper deviceMapper;
+    @Autowired
+    private EnvDeviceEquipmentMapper equipmentMapper;
 
     @Override
     public Result getLastFlow(Map<String, String> paramsMap) {
@@ -154,4 +159,33 @@ public class EnvDataServiceImpl extends ServiceImpl<EnvDataMapper, EnvData> impl
         return new Result(ResultCode.SUCCESS,envDataList);
     }
 
+    @Override
+    public Result screenEnv(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String unitId = paramsMap.get("unitId");
+        QueryWrapper<EnvData> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId).eq("unit_id", unitId).orderByDesc("id").last(" limit 1");
+        EnvData envData = envDataMapper.selectOne(queryWrapper);
+        JSONObject jsonObject = new JSONObject();
+        if (ObjectUtil.isNotEmpty(envData)) {
+            jsonObject.put("temp", envData.getEnvTemp());
+            jsonObject.put("hum", envData.getEnvHum());
+        } else {
+            jsonObject.put("temp", 0);
+            jsonObject.put("hum", 0);
+        }
+        if ("9942".equals(unitId)) {
+            List<EnvDeviceEquipment> list = equipmentMapper.selectList(new QueryWrapper<EnvDeviceEquipment>().eq("unit_id", unitId));
+            jsonObject.put("light1", list.get(0).getUploadStart());
+            jsonObject.put("light2", list.get(1).getUploadStart());
+        }
+        if ("9943".equals(unitId)) {
+            List<EnvDeviceEquipment> list = equipmentMapper.selectList(new QueryWrapper<EnvDeviceEquipment>().eq("unit_id", unitId));
+            jsonObject.put("light1", list.get(0).getUploadStart());
+            jsonObject.put("light2", list.get(1).getUploadStart());
+        }
+        jsonObject.put("nh3", 0);
+        return new Result(ResultCode.SUCCESS, jsonObject);
+    }
+
 }

+ 4 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/timer/DeviceTimer.java

@@ -7,6 +7,7 @@ import com.huimv.guowei.admin.entity.EnvDevice;
 import com.huimv.guowei.admin.entity.EnvDeviceOnline;
 import com.huimv.guowei.admin.entity.EnvMoveCall;
 import com.huimv.guowei.admin.entity.RawData;
+import com.huimv.guowei.admin.group.service.IGroupDuckInfoService;
 import com.huimv.guowei.admin.service.*;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.annotation.EnableScheduling;
@@ -36,6 +37,8 @@ public class DeviceTimer {
     private IRawDataService rawDataService;
     @Resource
     private IEnvMoveCallService callService;
+    @Resource
+    private IGroupDuckInfoService groupDuckInfoService;
 
 
 //    @Scheduled(cron = "*/5 * * * * ?")
@@ -67,6 +70,7 @@ public class DeviceTimer {
     private void setDayAge(){
         System.out.println("--->更新日龄");
         baseDuckInfoService.updateDayAge();
+        groupDuckInfoService.updateDayAge();
         System.out.println("--->更新成功");
     }
 

+ 46 - 3
huimv-admin/src/main/java/com/huimv/guowei/admin/utils/Print.java

@@ -8,6 +8,7 @@ import com.huimv.guowei.admin.entity.*;
 import com.huimv.guowei.admin.entity.vo.EnergyWaterVo;
 import com.huimv.guowei.admin.entity.vo.EnvRegularCallEggVo;
 import com.huimv.guowei.admin.entity.vo.WaterVo;
+import com.huimv.guowei.admin.group.entity.vo.GroupDuckInfoOutVo;
 import org.jxls.common.Context;
 import org.jxls.util.JxlsHelper;
 
@@ -73,10 +74,9 @@ public class Print {
                 printEntrtyVo.setDuckBreed("绍兴鸭(白羽绍鸭)");
 
             }
-            if (ObjectUtil.isEmpty(duckInfo.getDuckSex())){
+            if (ObjectUtil.isEmpty(duckInfo.getDuckSex())) {
                 printEntrtyVo.setDuckSex("未填写");
-            }
-            else if (duckInfo.getDuckSex() == 0) {
+            } else if (duckInfo.getDuckSex() == 0) {
                 printEntrtyVo.setDuckSex("雄");
             } else {
                 printEntrtyVo.setDuckSex("雌");
@@ -243,4 +243,47 @@ public class Print {
         //生成
         JxlsHelper.getInstance().processTemplate(is, os, context);
     }
+
+    public static void printGroupDuckInfo(List<GroupDuckInfoOutVo> outVoList) throws Exception {
+
+        //准备数据
+        String path = "/opt/guowei/groupDuckInfo.xls";
+        //获取模板文件,你自己当前模板的位置  我这里为当前项目下
+        InputStream is = new FileInputStream("/opt/guowei/groupDuckInfo.xlsx");
+        //根据模板生成的文件保存路径  我这里保存在本地D盘
+        OutputStream os = new FileOutputStream(path);
+        //绑定数据
+        Context context = new Context();
+        for (GroupDuckInfoOutVo duckInfoOutVo : outVoList) {
+            if ("1".equals(duckInfoOutVo.getDuckBreed())) {
+                duckInfoOutVo.setDuckBreed("北京鸭");
+            } else if ("2".equals(duckInfoOutVo.getDuckBreed())) {
+                duckInfoOutVo.setDuckBreed("连城白鸭");
+            } else if ("3".equals(duckInfoOutVo.getDuckBreed())) {
+                duckInfoOutVo.setDuckBreed("山麻鸭");
+            } else if ("4".equals(duckInfoOutVo.getDuckBreed())) {
+                duckInfoOutVo.setDuckBreed("攸县麻鸭");
+            } else if ("5".equals(duckInfoOutVo.getDuckBreed())) {
+                duckInfoOutVo.setDuckBreed("白改鸭");
+            } else if ("6".equals(duckInfoOutVo.getDuckBreed())) {
+                duckInfoOutVo.setDuckBreed("缙云麻鸭");
+            } else if ("7".equals(duckInfoOutVo.getDuckBreed())) {
+                duckInfoOutVo.setDuckBreed("绍兴鸭(带圈白翼梢)");
+            } else if ("8".equals(duckInfoOutVo.getDuckBreed())) {
+                duckInfoOutVo.setDuckBreed("绍兴鸭(红毛绿翼梢)");
+            } else if ("9".equals(duckInfoOutVo.getDuckBreed())) {
+                duckInfoOutVo.setDuckBreed("绍兴鸭(白羽绍鸭)");
+
+            }
+            if ("0".equals(duckInfoOutVo.getSex())) {
+                duckInfoOutVo.setSex("雄");
+            } else {
+                duckInfoOutVo.setSex("雌");
+            }
+        }
+
+        context.putVar("list", outVoList);
+        //生成
+        JxlsHelper.getInstance().processTemplate(is, os, context);
+    }
 }

+ 20 - 0
huimv-admin/src/main/resources/com/huimv/guowei/admin/mapper/EnergyWaterMapper.xml

@@ -182,4 +182,24 @@
         SELECT IFNULL(sum(water_value),0) 'waterValue' FROM `energy_water`
          ${ew.customSqlSegment}
     </select>
+
+    <select id="listDayGroupDetail" resultType="com.huimv.guowei.admin.entity.EnergyWater">
+        select * from energy_water
+        ${ew.customSqlSegment}
+        ORDER BY create_date ASC
+    </select>
+
+    <select id="listDayGroupDetail2" resultType="com.huimv.guowei.admin.entity.EnergyWater">
+        select IFNULL(sum(water_value),'0') 'waterValue',create_date 'createDate' from energy_water
+        ${ew.customSqlSegment}
+        GROUP BY DATE_FORMAT(create_date,'%Y-%m-%d')
+        ORDER BY create_date ASC
+    </select>
+
+    <select id="screenWater" resultType="com.huimv.guowei.admin.entity.dto.ScreenWaterVo">
+        select IFNULL(sum(water_value),'0') 'waterValue',create_date 'createDate' from energy_water
+        ${ew.customSqlSegment}
+        GROUP BY DATE_FORMAT(create_date,'%Y-%m')
+        ORDER BY create_date ASC
+    </select>
 </mapper>

+ 13 - 0
huimv-admin/src/main/resources/mapper/EnergyWaterPressureMapper.xml

@@ -90,4 +90,17 @@
         GROUP BY DATE_FORMAT(create_date,"%Y-%m-%d")
         order by create_date asc
     </select>
+
+    <select id="listGroupDayDetail" resultType="com.huimv.guowei.admin.entity.EnergyWaterPressure">
+        select * from energy_water_pressure
+        ${ew.customSqlSegment}
+        ORDER BY create_date ASC
+    </select>
+
+    <select id="listGroupDayDetail2" resultType="com.huimv.guowei.admin.entity.EnergyWaterPressure">
+        select IFNULL(ROUND(AVG(water_value),2), 0) 'waterValue',create_date 'createDate' from energy_water_pressure
+        ${ew.customSqlSegment}
+        GROUP BY DATE_FORMAT(create_date,'%Y-%m-%d')
+        ORDER BY create_date ASC
+    </select>
 </mapper>

+ 5 - 0
huimv-admin/src/main/resources/mapper/GroupAdviseMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.guowei.admin.group.mapper.GroupAdviseMapper">
+
+</mapper>

+ 5 - 0
huimv-admin/src/main/resources/mapper/GroupBatchMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.guowei.admin.group.mapper.GroupBatchMapper">
+
+</mapper>

+ 93 - 0
huimv-admin/src/main/resources/mapper/GroupDuckInfoMapper.xml

@@ -0,0 +1,93 @@
+<?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.guowei.admin.group.mapper.GroupDuckInfoMapper">
+
+    <select id="breedingList" resultType="com.huimv.guowei.admin.group.entity.vo.BreedingVo">
+      select a.deviceCode 'deviceCode',a.dayAge 'dayAge',a.unitId 'unitId',a.unitName 'unitName',a.batchNum 'batchNum',IFNULL(g.egg_count,'0') 'eggCount'
+      ,CONVERT(IFNULL(sum(case when b.eating_date >= #{today} then b.eating_value else 0 END),'0'),DECIMAL(10,2)) as 'feedingDay',
+            CONVERT(IFNULL(sum(case when b.eating_date >= #{month} then b.eating_value else 0 END),'0'),DECIMAL(10,2)) as 'feedingMonth'
+            ,IFNULL(sum(case when g.egg_date >= #{today} then g.egg_num else 0 END),'0') as 'eggDay',
+            IFNULL(sum(case when g.egg_date >= #{month} then g.egg_num else 0 END),'0') as 'eggMonth'
+						FROM group_eating b RIGHT JOIN
+(select device_code 'deviceCode',unit_id 'unitId',unit_name 'unitName',day_num 'dayAge',batch_num 'batchNum' FROM group_duck_info
+        <if test="deviceCode!=null and deviceCode!=''">
+            where device_code=#{deviceCode}
+        </if>
+        ) a ON a.deviceCode=b.device_code
+LEFT JOIN group_egg g ON a.deviceCode=g.device_code
+GROUP BY a.deviceCode
+    </select>
+
+    <select id="breedingRank" resultType="com.huimv.guowei.admin.group.entity.vo.BreedingVo">
+        select a.deviceCode 'deviceCode',a.dayAge 'dayAge',a.unitId 'unitId',a.unitName 'unitName',a.batchNum 'batchNum',IFNULL(g.egg_count,'0') 'eggCount'
+        ,CONVERT(IFNULL(sum(case when b.eating_date >= #{today} then b.eating_value else 0 END),'0'),DECIMAL(10,2)) as 'feedingDay',
+        CONVERT(IFNULL(sum(case when b.eating_date >= #{month} then b.eating_value else 0 END),'0'),DECIMAL(10,2)) as 'feedingMonth'
+        ,IFNULL(sum(case when g.egg_date >= #{today} then g.egg_num else 0 END),'0') as 'eggDay',
+        IFNULL(sum(case when g.egg_date >= #{month} then g.egg_num else 0 END),'0') as 'eggMonth'
+        FROM group_eating b RIGHT JOIN
+        (select device_code 'deviceCode',unit_id 'unitId',unit_name 'unitName',day_num 'dayAge',batch_num 'batchNum' FROM group_duck_info
+        ) a ON a.deviceCode=b.device_code
+        LEFT JOIN group_egg g ON a.deviceCode=g.device_code
+        GROUP BY a.deviceCode
+    </select>
+
+    <select id="breedingList1" resultType="com.huimv.guowei.admin.group.entity.vo.BreedingVo">
+     select a.deviceCode 'deviceCode',a.dayAge 'dayAge',a.unitId 'unitId',a.unitName 'unitName',a.batchNum 'batchNum',IFNULL(g.egg_count,'0') 'eggCount'
+      ,CONVERT(IFNULL(sum(case when b.eating_date >= #{today} then b.eating_value else 0 END),'0'),DECIMAL(10,2)) as 'feedingDay',
+            CONVERT(IFNULL(sum(case when b.eating_date >= #{month} then b.eating_value else 0 END),'0'),DECIMAL(10,2)) as 'feedingMonth'
+            ,IFNULL(sum(case when g.egg_date >= #{today} then g.egg_num else 0 END),'0') as 'eggDay',
+            IFNULL(sum(case when g.egg_date >= #{month} then g.egg_num else 0 END),'0') as 'eggMonth'
+						FROM group_eating b RIGHT JOIN
+(select device_code 'deviceCode',unit_id 'unitId',unit_name 'unitName',day_num 'dayAge',batch_num 'batchNum' FROM group_duck_info where farm_id=#{farmId} and device_code=#{deviceCode}) a ON a.deviceCode=b.device_code
+LEFT JOIN group_egg g ON a.deviceCode=g.device_code
+GROUP BY a.deviceCode
+    </select>
+
+    <update id="updateDayAge">
+        UPDATE group_duck_info SET day_num = day_num + 1 WHERE is_leave = 0;
+    </update>
+
+    <select id="getOutDuckInfo" resultType="com.huimv.guowei.admin.group.entity.vo.GroupDuckInfoOutVo">
+        select a.deviceCode 'deviceCode',a.chiCode 'chiCode',a.batchNum 'batchNum',a.duckBreed 'duckBreed',a.sex 'sex',a.birthDate 'birthDate'
+        ,a.weight 'weight',a.unitName 'unitName',CONVERT(IFNULL(sum(b.eating_value),'0'),decimal(10,2)) as 'feedingCount',
+        IFNULL(sum(d.egg_num),'0') as 'eggCount',
+        CONVERT(IFNULL(sum(case when b.eating_date between '${year}-01-01 00:00:00' and '${year}-01-31 23:59:59' then b.eating_value else 0 END),'0'),DECIMAL(10,2)) as 'feedingValue1',
+        CONVERT(IFNULL(sum(case when b.eating_date between '${year}-02-01 00:00:00' and '${year}-02-31 23:59:59' then b.eating_value else 0 END),'0'),DECIMAL(10,2)) as 'feedingValue2',
+        CONVERT(IFNULL(sum(case when b.eating_date between '${year}-03-01 00:00:00' and '${year}-03-31 23:59:59' then b.eating_value else 0 END),'0'),DECIMAL(10,2)) as 'feedingValue3',
+        CONVERT(IFNULL(sum(case when b.eating_date between '${year}-04-01 00:00:00' and '${year}-04-31 23:59:59' then b.eating_value else 0 END),'0'),DECIMAL(10,2)) as 'feedingValue4',
+        CONVERT(IFNULL(sum(case when b.eating_date between '${year}-05-01 00:00:00' and '${year}-05-31 23:59:59' then b.eating_value else 0 END),'0'),DECIMAL(10,2)) as 'feedingValue5',
+        CONVERT(IFNULL(sum(case when b.eating_date between '${year}-06-01 00:00:00' and '${year}-06-31 23:59:59' then b.eating_value else 0 END),'0'),DECIMAL(10,2)) as 'feedingValue6',
+        CONVERT(IFNULL(sum(case when b.eating_date between '${year}-07-01 00:00:00' and '${year}-07-31 23:59:59' then b.eating_value else 0 END),'0'),DECIMAL(10,2)) as 'feedingValue7',
+        CONVERT(IFNULL(sum(case when b.eating_date between '${year}-08-01 00:00:00' and '${year}-08-31 23:59:59' then b.eating_value else 0 END),'0'),DECIMAL(10,2)) as 'feedingValue8',
+        CONVERT(IFNULL(sum(case when b.eating_date between '${year}-09-01 00:00:00' and '${year}-09-31 23:59:59' then b.eating_value else 0 END),'0'),DECIMAL(10,2)) as 'feedingValue9',
+        CONVERT(IFNULL(sum(case when b.eating_date between '${year}-10-01 00:00:00' and '${year}-10-31 23:59:59' then b.eating_value else 0 END),'0'),DECIMAL(10,2)) as 'feedingValue10',
+        CONVERT(IFNULL(sum(case when b.eating_date between '${year}-11-01 00:00:00' and '${year}-11-31 23:59:59' then b.eating_value else 0 END),'0'),DECIMAL(10,2)) as 'feedingValue11',
+        CONVERT(IFNULL(sum(case when b.eating_date between '${year}-12-01 00:00:00' and '${year}-12-31 23:59:59' then b.eating_value else 0 END),'0'),DECIMAL(10,2)) as 'feedingValue12',
+        IFNULL(sum(case when d.egg_date between '${year}-01-01 00:00:00' and '${year}-01-31 23:59:59' then d.egg_num else 0 END),'0') as 'eggValue1',
+        IFNULL(sum(case when d.egg_date between '${year}-02-01 00:00:00' and '${year}-02-31 23:59:59' then d.egg_num else 0 END),'0') as 'eggValue2',
+        IFNULL(sum(case when d.egg_date between '${year}-03-01 00:00:00' and '${year}-03-31 23:59:59' then d.egg_num else 0 END),'0') as 'eggValue3',
+        IFNULL(sum(case when d.egg_date between '${year}-04-01 00:00:00' and '${year}-04-31 23:59:59' then d.egg_num else 0 END),'0') as 'eggValue4',
+        IFNULL(sum(case when d.egg_date between '${year}-05-01 00:00:00' and '${year}-05-31 23:59:59' then d.egg_num else 0 END),'0') as 'eggValue5',
+        IFNULL(sum(case when d.egg_date between '${year}-06-01 00:00:00' and '${year}-06-31 23:59:59' then d.egg_num else 0 END),'0') as 'eggValue6',
+        IFNULL(sum(case when d.egg_date between '${year}-07-01 00:00:00' and '${year}-07-31 23:59:59' then d.egg_num else 0 END),'0') as 'eggValue7',
+        IFNULL(sum(case when d.egg_date between '${year}-08-01 00:00:00' and '${year}-08-31 23:59:59' then d.egg_num else 0 END),'0') as 'eggValue8',
+        IFNULL(sum(case when d.egg_date between '${year}-09-01 00:00:00' and '${year}-09-31 23:59:59' then d.egg_num else 0 END),'0') as 'eggValue9',
+        IFNULL(sum(case when d.egg_date between '${year}-10-01 00:00:00' and '${year}-10-31 23:59:59' then d.egg_num else 0 END),'0') as 'eggValue10',
+        IFNULL(sum(case when d.egg_date between '${year}-11-01 00:00:00' and '${year}-11-31 23:59:59' then d.egg_num else 0 END),'0') as 'eggValue11',
+        IFNULL(sum(case when d.egg_date between '${year}-12-01 00:00:00' and '${year}-12-31 23:59:59' then d.egg_num else 0 END),'0') as 'eggValue12'
+        FROM group_eating b RIGHT JOIN
+(select device_code 'deviceCode',chi_code 'chiCode',batch_num 'batchNum',unit_name 'unitName',duck_breed 'duckBreed',sex 'sex',birth_date 'birthDate',weight 'weight'
+FROM group_duck_info
+where farm_id=#{farmId} and id IN
+        <foreach collection="deviceCode"   item="farmMenu"  open="(" separator=","   close=")">
+            #{farmMenu}
+        </foreach>) a ON a.deviceCode=b.device_code
+LEFT JOIN group_egg d ON a.deviceCode=d.device_code
+GROUP BY a.deviceCode
+    </select>
+
+
+    <select id="screenProd" resultType="com.huimv.guowei.admin.group.entity.dto.ScreenProdVo">
+
+    </select>
+</mapper>

+ 52 - 0
huimv-admin/src/main/resources/mapper/GroupEatingMapper.xml

@@ -0,0 +1,52 @@
+<?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.guowei.admin.group.mapper.GroupEatingMapper">
+
+    <select id="listDetail" resultType="com.huimv.guowei.admin.group.entity.vo.GroupEatingVo">
+        select device_code 'deviceCode',eating_date 'dateTime',IFNULL(sum(eating_value),'0') 'values' from group_eating
+        ${ew.customSqlSegment}
+        GROUP BY DATE_FORMAT(eating_date,'%Y-%m-%d')
+        order by eating_date desc
+    </select>
+
+    <select id="getCount" resultType="com.huimv.guowei.admin.group.entity.vo.EggAndFeedingVo">
+        select IFNULL(sum(a.eating_value),'0') 'feedingCount',IFNULL(sum(b.egg_num),'0') 'eggCount' from group_eating a inner join group_egg b
+        on a.device_code=b.device_code
+        where a.device_code=#{deviceCode}
+        <if test="startTime !=null and startTime!=''">
+            and a.eating_date >=#{startTime}
+        </if>
+    </select>
+
+    <select id="breedList" resultType="com.huimv.guowei.admin.group.entity.vo.BreedEatingVo">
+        select device_code 'deviceCode',eating_date 'eatingDate',IFNULL(sum(eating_value),'0') 'eatingValue' from group_eating
+        ${ew.customSqlSegment}
+        GROUP BY DATE_FORMAT(eating_date,'%Y-%m-%d')
+        order by eating_date asc
+    </select>
+
+    <select id="breedEggEating" resultType="com.huimv.guowei.admin.group.entity.vo.BreedEatingEgg">
+        select a.eating_date 'dateTime',a.device_code 'deviceCode',IFNULL(sum(a.eating_value),'0') 'eatingValue',IFNULL(sum(b.egg_num),'0') 'eggNum'
+        from group_eating a inner join group_egg b
+        on a.device_code=b.device_code
+        where a.device_code=#{deviceCode} and a.farm_id=#{farmId} and a.eating_date >=#{dateTime}
+        GROUP BY DATE_FORMAT(a.eating_date,'%Y-%m-%d'),DATE_FORMAT(b.egg_date,'%Y-%m-%d')
+        order by a.eating_date asc
+    </select>
+    <select id="breedEggEating1" resultType="com.huimv.guowei.admin.group.entity.vo.BreedEatingEgg">
+        select a.eating_date 'dateTime',a.device_code 'deviceCode',IFNULL(sum(a.eating_value),'0') 'eatingValue',IFNULL(sum(b.egg_num),'0') 'eggNum'
+        from group_eating a inner join group_egg b
+        on a.device_code=b.device_code
+        where a.device_code=#{deviceCode} and a.farm_id=#{farmId} and a.eating_date between #{startTime} and #{endTime}
+        GROUP BY DATE_FORMAT(a.eating_date,'%Y-%m-%d'),DATE_FORMAT(b.egg_date,'%Y-%m-%d')
+        order by a.eating_date asc
+    </select>
+    <select id="breedEggEating2" resultType="com.huimv.guowei.admin.group.entity.vo.BreedEatingEgg">
+        select a.eating_date 'dateTime',a.device_code 'deviceCode',IFNULL(sum(a.eating_value),'0') 'eatingValue',IFNULL(sum(b.egg_num),'0') 'eggNum'
+        from group_eating a inner join group_egg b
+        on a.device_code=b.device_code
+        where a.device_code=#{deviceCode} and a.farm_id=#{farmId} and a.eating_date >=#{dateTime}
+        GROUP BY DATE_FORMAT(a.eating_date,'%Y-%m'),DATE_FORMAT(b.egg_date,'%Y-%m')
+        order by a.eating_date asc
+    </select>
+</mapper>

+ 18 - 0
huimv-admin/src/main/resources/mapper/GroupEggMapper.xml

@@ -0,0 +1,18 @@
+<?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.guowei.admin.group.mapper.GroupEggMapper">
+
+    <select id="listDetail" resultType="com.huimv.guowei.admin.group.entity.vo.GroupEatingVo">
+        select device_code 'deviceCode',egg_date 'dateTime',IFNULL(sum(egg_num),'0') 'values' from group_egg
+        ${ew.customSqlSegment}
+        GROUP BY DATE_FORMAT(egg_date,'%Y-%m-%d')
+        order by egg_date desc
+    </select>
+
+    <select id="listDetail1" resultType="com.huimv.guowei.admin.group.entity.vo.BreedEggVo">
+        select device_code 'deviceCode',egg_date 'eggDate',IFNULL(sum(egg_num),'0') 'eggNum' from group_egg
+        ${ew.customSqlSegment}
+        GROUP BY DATE_FORMAT(egg_date,'%Y-%m-%d')
+        order by egg_date asc
+    </select>
+</mapper>

+ 27 - 0
huimv-admin/src/main/resources/mapper/GroupFeedingEggMapper.xml

@@ -0,0 +1,27 @@
+<?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.guowei.admin.group.mapper.GroupFeedingEggMapper">
+
+    <select id="listFeed" resultType="com.huimv.guowei.admin.group.entity.vo.GroupFeedAndEggVo">
+        select unit_id 'unitId',unit_name 'unitName',date_time 'dateTime',IFNULL(sum(feed_value),'0') 'values'
+         from group_feeding_egg
+         ${ew.customSqlSegment}
+         group by DATE_FORMAT(date_time,'%y-%m-%d')
+         order by date_time desc
+    </select>
+
+    <select id="screenBreed" resultType="com.huimv.guowei.admin.group.entity.dto.ScreenBreedVo">
+        select CONVERT(IFNULL(sum(feed_value),'0'),decimal(10,2)) 'values',date_time 'createDate' from group_feeding_egg
+        ${ew.customSqlSegment}
+        group by DATE_FORMAT(date_time,'%y-%m-%d')
+        order by date_time asc
+    </select>
+
+    <select id="screenBreedMonth" resultType="com.huimv.guowei.admin.group.entity.dto.ScreenBreedVo">
+        select CONVERT(IFNULL(sum(feed_value),'0'),decimal(10,2)) 'values',date_time 'createDate' from group_feeding_egg
+        ${ew.customSqlSegment}
+        group by DATE_FORMAT(date_time,'%y-%m')
+        order by date_time asc
+    </select>
+
+</mapper>

+ 5 - 0
huimv-admin/src/main/resources/mapper/GroupLeaveMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.guowei.admin.group.mapper.GroupLeaveMapper">
+
+</mapper>

+ 5 - 0
huimv-admin/src/main/resources/mapper/GroupThresholdMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.guowei.admin.group.mapper.GroupThresholdMapper">
+
+</mapper>