浏览代码

bug修改

wwh 11 月之前
父节点
当前提交
afba8c5621

+ 13 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/entity/vo/FeedingAndEggVo.java

@@ -0,0 +1,13 @@
+package com.huimv.guowei.admin.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class FeedingAndEggVo {
+    private Integer eggNum;
+    private String duckWeight;
+    private String duckNum;
+    private String chiNum;
+    private String unitName;
+    private String unitId;
+}

+ 3 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/mapper/EnvRegularCallEggMapper.java

@@ -8,6 +8,7 @@ import com.huimv.guowei.admin.entity.EnvRegularCallEgg;
 import com.huimv.guowei.admin.entity.EnvRegularCallFeeding;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.huimv.guowei.admin.entity.vo.EggVo;
+import com.huimv.guowei.admin.entity.vo.FeedingAndEggVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.Date;
@@ -33,4 +34,6 @@ public interface EnvRegularCallEggMapper extends BaseMapper<EnvRegularCallEgg> {
     IPage<EnvRegularCallEgg> listAll(Page<EnvRegularCallEgg> page,@Param(Constants.WRAPPER) QueryWrapper<EnvRegularCallEgg> queryWrapper);
 
     EggVo print(@Param(Constants.WRAPPER) QueryWrapper<EnvRegularCallEgg> queryWrapper1);
+
+    List<FeedingAndEggVo> getOneFeedAndEgg(String farmId,List<Integer> list);
 }

+ 203 - 153
huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/BaseDuckInfoServiceImpl.java

@@ -703,116 +703,156 @@ public class BaseDuckInfoServiceImpl extends ServiceImpl<BaseDuckInfoMapper, Bas
         callQueryWrapper.eq("farm_id", farmId).eq("duck_num", duckNum);
         List<EnvMoveCall> moveCalls = moveCallMapper.selectList(callQueryWrapper);
         if (moveCalls.size() == 0) {
-            QueryWrapper<EnvMoveCall> queryWrapper = new QueryWrapper<>();
-            queryWrapper.eq("farm_id", farmId).ge("call_date", dateTime);
-            List<EnvMoveCallVo> envMoveCallVos = moveCallMapper.listScreen2(queryWrapper);
-            for (EnvMoveCallVo envMoveCallVo : envMoveCallVos) {
-                EnvMoveCallVo moveCallVo = new EnvMoveCallVo();
-                moveCallVo.setCallDate(envMoveCallVo.getCallDate());
-                moveCallVo.setDuckWeight(BigDecimal.ZERO);
-                moveCallVo.setAvgWeight(envMoveCallVo.getAvgWeight());
-                envMoveCallVoList.add(moveCallVo);
-            }
-            jsonObject.put("weight", envMoveCallVoList);
-        } else {
-            QueryWrapper<EnvMoveCall> queryWrapper = new QueryWrapper<>();
-            queryWrapper.eq("farm_id", farmId).ge("call_date", dateTime);
-            List<EnvMoveCallVo> envMoveCallVos = moveCallMapper.listScreen2(queryWrapper);
+            QueryWrapper<BaseDuckInfo> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("farm_id", farmId).eq("duck_num", duckNum);
+            BaseDuckInfo baseDuckInfo = duckInfoMapper.selectOne(queryWrapper);
             int i = 7;
-            QueryWrapper<EnvMoveCall> queryWrapper2 = new QueryWrapper<>();
-            queryWrapper2.eq("farm_id", farmId).eq("duck_num", duckNum)
-                    .orderByDesc("id").last(" limit 1");
-            EnvMoveCall call = moveCallMapper.selectOne(queryWrapper2);
-            if (envMoveCallVos.size() == 0) {
-                QueryWrapper<EnvMoveCall> queryWrapper1 = new QueryWrapper<>();
-                queryWrapper1.eq("farm_id", farmId);
-                List<EnvMoveCallVo> moveCallVoList = moveCallMapper.listScreen2(queryWrapper1);
-                BigDecimal avgWeight = BigDecimal.ZERO;
-                if (moveCallVoList.size() > 6) {
-                    for (int j = 0; j < 7; j++) {
-                        EnvMoveCallVo moveCallVo = new EnvMoveCallVo();
-                        DateTime dateTime1 = DateUtil.offsetDay(DateUtil.beginOfDay(new Date()), -i);
-                        moveCallVo.setCallDate(dateTime1);
-                        moveCallVo.setDuckWeight(call.getDuckWeight());
-                        envMoveCallVoList.add(moveCallVo);
-                        if (moveCallVoList.size() > 7) {
-                            moveCallVo.setAvgWeight(moveCallVoList.get(moveCallVoList.size() - 7 + j).getAvgWeight());
-                        } else {
-                            if (ObjectUtil.isNotEmpty(moveCallVoList.get(j))) {
-                                avgWeight = moveCallVoList.get(j).getAvgWeight();
-                            }
-                            moveCallVo.setAvgWeight(avgWeight);
+            QueryWrapper<EnvMoveCall> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.eq("farm_id", farmId);
+            List<EnvMoveCallVo> moveCallVoList = moveCallMapper.listScreen2(queryWrapper1);
+            BigDecimal avgWeight = BigDecimal.ZERO;
+            if (moveCallVoList.size() > 6) {
+                for (int j = 0; j < 7; j++) {
+                    EnvMoveCallVo moveCallVo = new EnvMoveCallVo();
+                    DateTime dateTime1 = DateUtil.offsetDay(DateUtil.beginOfDay(new Date()), -i);
+                    moveCallVo.setCallDate(dateTime1);
+                    moveCallVo.setDuckWeight(baseDuckInfo.getNowWeight());
+                    if (moveCallVoList.size() > 7) {
+                        moveCallVo.setAvgWeight(moveCallVoList.get(moveCallVoList.size() - 7 + j).getAvgWeight());
+                    } else {
+                        if (ObjectUtil.isNotEmpty(moveCallVoList.get(j))) {
+                            avgWeight = moveCallVoList.get(j).getAvgWeight();
                         }
-                        envMoveCallVoList.add(moveCallVo);
-                        i--;
-                    }
-                } else {
-                    BigDecimal decimal = BigDecimal.ZERO;
-                    for (EnvMoveCallVo moveCallVo : moveCallVoList) {
-                        EnvMoveCallVo moveCallVo1 = new EnvMoveCallVo();
-                        DateTime dateTime1 = DateUtil.offsetDay(DateUtil.beginOfDay(new Date()), -i);
-                        moveCallVo1.setCallDate(dateTime1);
-                        moveCallVo1.setDuckWeight(call.getDuckWeight());
-                        decimal = moveCallVo.getAvgWeight();
-                        moveCallVo1.setAvgWeight(decimal);
-                        envMoveCallVoList.add(moveCallVo1);
-                        i--;
-                    }
-                    int a = 7 - moveCallVoList.size();
-                    for (int j = 0; j < 7 - moveCallVoList.size(); j++) {
-                        EnvMoveCallVo moveCallVo1 = new EnvMoveCallVo();
-                        DateTime dateTime1 = DateUtil.offsetDay(DateUtil.beginOfDay(new Date()), -a);
-                        moveCallVo1.setCallDate(dateTime1);
-                        moveCallVo1.setDuckWeight(call.getDuckWeight());
-                        moveCallVo1.setAvgWeight(decimal);
-                        envMoveCallVoList.add(moveCallVo1);
-                        a--;
+                        moveCallVo.setAvgWeight(avgWeight);
                     }
+                    envMoveCallVoList.add(moveCallVo);
+                    i--;
                 }
-
-
             } else {
+                BigDecimal decimal = BigDecimal.ZERO;
+                for (EnvMoveCallVo moveCallVo : moveCallVoList) {
+                    EnvMoveCallVo moveCallVo1 = new EnvMoveCallVo();
+                    DateTime dateTime1 = DateUtil.offsetDay(DateUtil.beginOfDay(new Date()), -i);
+                    moveCallVo1.setCallDate(dateTime1);
+                    moveCallVo1.setDuckWeight(baseDuckInfo.getNowWeight());
+                    decimal = moveCallVo.getAvgWeight();
+                    moveCallVo1.setAvgWeight(decimal);
+                    envMoveCallVoList.add(moveCallVo1);
+                    i--;
+                }
+                int a = 7 - moveCallVoList.size();
+                for (int j = 0; j < 7 - moveCallVoList.size(); j++) {
+                    EnvMoveCallVo moveCallVo1 = new EnvMoveCallVo();
+                    DateTime dateTime1 = DateUtil.offsetDay(DateUtil.beginOfDay(new Date()), -a);
+                    moveCallVo1.setCallDate(dateTime1);
+                    moveCallVo1.setDuckWeight(baseDuckInfo.getNowWeight());
+                    moveCallVo1.setAvgWeight(decimal);
+                    envMoveCallVoList.add(moveCallVo1);
+                    a--;
+                }
+            }
+
+        jsonObject.put("weight", envMoveCallVoList);
+    } else
+
+    {
+        QueryWrapper<EnvMoveCall> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId).ge("call_date", dateTime);
+        List<EnvMoveCallVo> envMoveCallVos = moveCallMapper.listScreen2(queryWrapper);
+        int i = 7;
+        QueryWrapper<EnvMoveCall> queryWrapper2 = new QueryWrapper<>();
+        queryWrapper2.eq("farm_id", farmId).eq("duck_num", duckNum)
+                .orderByDesc("id").last(" limit 1");
+        EnvMoveCall call = moveCallMapper.selectOne(queryWrapper2);
+        if (envMoveCallVos.size() == 0) {
+            QueryWrapper<EnvMoveCall> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.eq("farm_id", farmId);
+            List<EnvMoveCallVo> moveCallVoList = moveCallMapper.listScreen2(queryWrapper1);
+            BigDecimal avgWeight = BigDecimal.ZERO;
+            if (moveCallVoList.size() > 6) {
                 for (int j = 0; j < 7; j++) {
-                    if (envMoveCallVos.size() > j) {
-                        System.out.println("这个是平均值的时间:" + envMoveCallVos.get(j).getCallDate());
-                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-                        String format = sdf.format(envMoveCallVos.get(j).getCallDate());
-                        System.out.println("格式化后的时间:" + format);
-                        EnvMoveCallVo moveCallVo = new EnvMoveCallVo();
-                        moveCallVo.setCallDate(sdf.parse(format));
-                        String start = format + " 00:00:00";
-                        String end = format + " 23:59:59";
-                        QueryWrapper<EnvMoveCall> queryWrapper1 = new QueryWrapper<>();
-                        queryWrapper1.eq("farm_id", farmId).eq("duck_num", duckNum)
-                                .between("call_date", start, end)
-                                .orderByDesc("id")
-                                .last(" limit 1");
-                        EnvMoveCall envMoveCall = moveCallMapper.selectOne(queryWrapper1);
-
-                        if (ObjectUtil.isEmpty(envMoveCall)) {
-                            moveCallVo.setDuckWeight(call.getDuckWeight());
-                        } else {
-                            moveCallVo.setDuckWeight(envMoveCall.getDuckWeight());
+                    EnvMoveCallVo moveCallVo = new EnvMoveCallVo();
+                    DateTime dateTime1 = DateUtil.offsetDay(DateUtil.beginOfDay(new Date()), -i);
+                    moveCallVo.setCallDate(dateTime1);
+                    moveCallVo.setDuckWeight(call.getDuckWeight());
+                    if (moveCallVoList.size() > 7) {
+                        moveCallVo.setAvgWeight(moveCallVoList.get(moveCallVoList.size() - 7 + j).getAvgWeight());
+                    } else {
+                        if (ObjectUtil.isNotEmpty(moveCallVoList.get(j))) {
+                            avgWeight = moveCallVoList.get(j).getAvgWeight();
                         }
+                        moveCallVo.setAvgWeight(avgWeight);
+                    }
+                    envMoveCallVoList.add(moveCallVo);
+                    i--;
+                }
+            } else {
+                BigDecimal decimal = BigDecimal.ZERO;
+                for (EnvMoveCallVo moveCallVo : moveCallVoList) {
+                    EnvMoveCallVo moveCallVo1 = new EnvMoveCallVo();
+                    DateTime dateTime1 = DateUtil.offsetDay(DateUtil.beginOfDay(new Date()), -i);
+                    moveCallVo1.setCallDate(dateTime1);
+                    moveCallVo1.setDuckWeight(call.getDuckWeight());
+                    decimal = moveCallVo.getAvgWeight();
+                    moveCallVo1.setAvgWeight(decimal);
+                    envMoveCallVoList.add(moveCallVo1);
+                    i--;
+                }
+                int a = 7 - moveCallVoList.size();
+                for (int j = 0; j < 7 - moveCallVoList.size(); j++) {
+                    EnvMoveCallVo moveCallVo1 = new EnvMoveCallVo();
+                    DateTime dateTime1 = DateUtil.offsetDay(DateUtil.beginOfDay(new Date()), -a);
+                    moveCallVo1.setCallDate(dateTime1);
+                    moveCallVo1.setDuckWeight(call.getDuckWeight());
+                    moveCallVo1.setAvgWeight(decimal);
+                    envMoveCallVoList.add(moveCallVo1);
+                    a--;
+                }
+            }
 
-                        moveCallVo.setAvgWeight(envMoveCallVos.get(j).getAvgWeight());
-                        envMoveCallVoList.add(moveCallVo);
-                    } else {
-                        DateTime dateTime1 = DateUtil.offsetDay(DateUtil.beginOfDay(new Date()), -i);
-                        EnvMoveCallVo moveCallVo = new EnvMoveCallVo();
+
+        } else {
+            for (int j = 0; j < 7; j++) {
+                if (envMoveCallVos.size() > j) {
+                    System.out.println("这个是平均值的时间:" + envMoveCallVos.get(j).getCallDate());
+                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+                    String format = sdf.format(envMoveCallVos.get(j).getCallDate());
+                    System.out.println("格式化后的时间:" + format);
+                    EnvMoveCallVo moveCallVo = new EnvMoveCallVo();
+                    moveCallVo.setCallDate(sdf.parse(format));
+                    String start = format + " 00:00:00";
+                    String end = format + " 23:59:59";
+                    QueryWrapper<EnvMoveCall> queryWrapper1 = new QueryWrapper<>();
+                    queryWrapper1.eq("farm_id", farmId).eq("duck_num", duckNum)
+                            .between("call_date", start, end)
+                            .orderByDesc("id")
+                            .last(" limit 1");
+                    EnvMoveCall envMoveCall = moveCallMapper.selectOne(queryWrapper1);
+
+                    if (ObjectUtil.isEmpty(envMoveCall)) {
                         moveCallVo.setDuckWeight(call.getDuckWeight());
-                        moveCallVo.setCallDate(dateTime1);
-                        if (ObjectUtil.isNull(envMoveCallVos) || envMoveCallVos.size() < 1) {
-                            moveCallVo.setAvgWeight(new BigDecimal(0));
-                        } else {
-                            moveCallVo.setAvgWeight(envMoveCallVos.get(0).getAvgWeight());
-                        }
+                    } else {
+                        moveCallVo.setDuckWeight(envMoveCall.getDuckWeight());
+                    }
 
-                        envMoveCallVoList.add(moveCallVo);
+                    moveCallVo.setAvgWeight(envMoveCallVos.get(j).getAvgWeight());
+                    envMoveCallVoList.add(moveCallVo);
+                } else {
+                    DateTime dateTime1 = DateUtil.offsetDay(DateUtil.beginOfDay(new Date()), -i);
+                    EnvMoveCallVo moveCallVo = new EnvMoveCallVo();
+                    moveCallVo.setDuckWeight(call.getDuckWeight());
+                    moveCallVo.setCallDate(dateTime1);
+                    if (ObjectUtil.isNull(envMoveCallVos) || envMoveCallVos.size() < 1) {
+                        moveCallVo.setAvgWeight(new BigDecimal(0));
+                    } else {
+                        moveCallVo.setAvgWeight(envMoveCallVos.get(0).getAvgWeight());
                     }
-                    i--;
+
+                    envMoveCallVoList.add(moveCallVo);
                 }
+                i--;
             }
+        }
 
 
 //            for (EnvMoveCallVo envMoveCallVo : envMoveCallVos) {
@@ -844,65 +884,75 @@ public class BaseDuckInfoServiceImpl extends ServiceImpl<BaseDuckInfoMapper, Bas
 //
 //                envMoveCallVoList.add(moveCallVo);
 //            }
-            jsonObject.put("weight", envMoveCallVoList);
-        }
-        List<EnvRegularCallFeedingVo> feedingVoList = new ArrayList<>();
-        QueryWrapper<EnvRegularCallFeeding> feedingQueryWrapper = new QueryWrapper<>();
-        feedingQueryWrapper.eq("farm_id", farmId).eq("duck_num", duckNum);
-        List<EnvRegularCallFeeding> feedings = feedingMapper.selectList(feedingQueryWrapper);
-        if (feedings.size() == 0) {
-            QueryWrapper<EnvRegularCallFeeding> queryWrapper1 = new QueryWrapper<>();
-            queryWrapper1.eq("farm_id", farmId).eq("event_type", 0).ge("call_date", dateTime);
-            List<EnvRegularCallFeedingVo> envRegularCallFeedingVos = feedingMapper.listScreen2(queryWrapper1);
-            queryWrapper1.groupBy("duck_num");
-            List<EnvRegularCallFeeding> list = feedingMapper.selectList(queryWrapper1);
-            for (EnvRegularCallFeedingVo envRegularCallFeedingVo : envRegularCallFeedingVos) {
-                EnvRegularCallFeedingVo feedingVo = new EnvRegularCallFeedingVo();
-                BigDecimal value = BigDecimal.valueOf(envRegularCallFeedingVo.getDuckWeight());
-                BigDecimal decimal = BigDecimal.valueOf(list.size());
-                BigDecimal decimal1 = value.divide(decimal, 2);//pingjun
-                feedingVo.setAvgWeight(decimal1);
-                feedingVo.setDuckWeight(0);
-                feedingVo.setCallDate(envRegularCallFeedingVo.getCallDate());
-                feedingVoList.add(feedingVo);
-            }
-            jsonObject.put("feed", feedingVoList);
-        } else {
-            QueryWrapper<EnvRegularCallFeeding> queryWrapper1 = new QueryWrapper<>();
-            queryWrapper1.eq("farm_id", farmId).eq("event_type", 0);
-            queryWrapper1.groupBy("duck_num");
-            List<EnvRegularCallFeeding> list = feedingMapper.selectList(queryWrapper1);
-            QueryWrapper<EnvRegularCallFeeding> queryWrapper2 = new QueryWrapper<>();
-            queryWrapper2.eq("farm_id", farmId).eq("duck_num", duckNum).eq("event_type", 0).ge("call_date", dateTime);
-            List<EnvRegularCallFeedingVo> feedingVoList1 = feedingMapper.listScreen2(queryWrapper2);//某只鸭子的总采食量
-            int i = 0;
-            for (EnvRegularCallFeedingVo envRegularCallFeedingVo : feedingVoList1) {
-                Date callDate = envRegularCallFeedingVo.getCallDate();
-                System.out.println("这个是平均值的时间:" + callDate);
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-                String format = sdf.format(callDate);
-                System.out.println("格式化后的时间:" + format);
-                String start = format + " 00:00:00";
-                String end = format + " 23:59:59";
-                QueryWrapper<EnvRegularCallFeeding> callFeedingQueryWrapper = new QueryWrapper<>();
-                callFeedingQueryWrapper.eq("farm_id", farmId).eq("event_type", 0).between("call_date", start, end);
-                callFeedingQueryWrapper.select("IFNULL(SUM(duck_weight),0) duckWeight");
-                EnvRegularCallFeeding feeding = feedingMapper.selectOne(callFeedingQueryWrapper);
-                EnvRegularCallFeedingVo feedingVo = new EnvRegularCallFeedingVo();
-                BigDecimal value = BigDecimal.valueOf(feeding.getDuckWeight());
-                BigDecimal decimal = BigDecimal.valueOf(list.size());
-                BigDecimal decimal1 = value.divide(decimal, 2);//pingjun
-                feedingVo.setAvgWeight(decimal1);
-                feedingVo.setDuckWeight(envRegularCallFeedingVo.getDuckWeight());
-                feedingVo.setCallDate(envRegularCallFeedingVo.getCallDate());
-                feedingVoList.add(feedingVo);
-                i++;
-            }
-            jsonObject.put("feed", feedingVoList);
+        jsonObject.put("weight", envMoveCallVoList);
+    }
+
+    List<EnvRegularCallFeedingVo> feedingVoList = new ArrayList<>();
+    QueryWrapper<EnvRegularCallFeeding> feedingQueryWrapper = new QueryWrapper<>();
+        feedingQueryWrapper.eq("farm_id",farmId).
+
+    eq("duck_num",duckNum);
+
+    List<EnvRegularCallFeeding> feedings = feedingMapper.selectList(feedingQueryWrapper);
+        if(feedings.size()==0)
+
+    {
+        QueryWrapper<EnvRegularCallFeeding> queryWrapper1 = new QueryWrapper<>();
+        queryWrapper1.eq("farm_id", farmId).eq("event_type", 0).ge("call_date", dateTime);
+        List<EnvRegularCallFeedingVo> envRegularCallFeedingVos = feedingMapper.listScreen2(queryWrapper1);
+        queryWrapper1.groupBy("duck_num");
+        List<EnvRegularCallFeeding> list = feedingMapper.selectList(queryWrapper1);
+        for (EnvRegularCallFeedingVo envRegularCallFeedingVo : envRegularCallFeedingVos) {
+            EnvRegularCallFeedingVo feedingVo = new EnvRegularCallFeedingVo();
+            BigDecimal value = BigDecimal.valueOf(envRegularCallFeedingVo.getDuckWeight());
+            BigDecimal decimal = BigDecimal.valueOf(list.size());
+            BigDecimal decimal1 = value.divide(decimal, 2);//pingjun
+            feedingVo.setAvgWeight(decimal1);
+            feedingVo.setDuckWeight(0);
+            feedingVo.setCallDate(envRegularCallFeedingVo.getCallDate());
+            feedingVoList.add(feedingVo);
         }
-        return new Result(ResultCode.SUCCESS, jsonObject);
+        jsonObject.put("feed", feedingVoList);
+    } else
 
+    {
+        QueryWrapper<EnvRegularCallFeeding> queryWrapper1 = new QueryWrapper<>();
+        queryWrapper1.eq("farm_id", farmId).eq("event_type", 0);
+        queryWrapper1.groupBy("duck_num");
+        List<EnvRegularCallFeeding> list = feedingMapper.selectList(queryWrapper1);
+        QueryWrapper<EnvRegularCallFeeding> queryWrapper2 = new QueryWrapper<>();
+        queryWrapper2.eq("farm_id", farmId).eq("duck_num", duckNum).eq("event_type", 0).ge("call_date", dateTime);
+        List<EnvRegularCallFeedingVo> feedingVoList1 = feedingMapper.listScreen2(queryWrapper2);//某只鸭子的总采食量
+        int i = 0;
+        for (EnvRegularCallFeedingVo envRegularCallFeedingVo : feedingVoList1) {
+            Date callDate = envRegularCallFeedingVo.getCallDate();
+            System.out.println("这个是平均值的时间:" + callDate);
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            String format = sdf.format(callDate);
+            System.out.println("格式化后的时间:" + format);
+            String start = format + " 00:00:00";
+            String end = format + " 23:59:59";
+            QueryWrapper<EnvRegularCallFeeding> callFeedingQueryWrapper = new QueryWrapper<>();
+            callFeedingQueryWrapper.eq("farm_id", farmId).eq("event_type", 0).between("call_date", start, end);
+            callFeedingQueryWrapper.select("IFNULL(SUM(duck_weight),0) duckWeight");
+            EnvRegularCallFeeding feeding = feedingMapper.selectOne(callFeedingQueryWrapper);
+            EnvRegularCallFeedingVo feedingVo = new EnvRegularCallFeedingVo();
+            BigDecimal value = BigDecimal.valueOf(feeding.getDuckWeight());
+            BigDecimal decimal = BigDecimal.valueOf(list.size());
+            BigDecimal decimal1 = value.divide(decimal, 2);//pingjun
+            feedingVo.setAvgWeight(decimal1);
+            feedingVo.setDuckWeight(envRegularCallFeedingVo.getDuckWeight());
+            feedingVo.setCallDate(envRegularCallFeedingVo.getCallDate());
+            feedingVoList.add(feedingVo);
+            i++;
+        }
+        jsonObject.put("feed", feedingVoList);
     }
+        return new
+
+    Result(ResultCode.SUCCESS, jsonObject);
+
+}
 
     @Override
     public Result listAppDuck(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {

+ 40 - 42
huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/EnvRegularCallEggServiceImpl.java

@@ -13,6 +13,7 @@ import com.huimv.guowei.admin.common.utils.Result;
 import com.huimv.guowei.admin.common.utils.ResultCode;
 import com.huimv.guowei.admin.entity.*;
 import com.huimv.guowei.admin.entity.vo.EnvRegularCallEggVo;
+import com.huimv.guowei.admin.entity.vo.FeedingAndEggVo;
 import com.huimv.guowei.admin.mapper.*;
 import com.huimv.guowei.admin.service.IEnvRegularCallEggService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -25,10 +26,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * <p>
@@ -55,6 +53,8 @@ public class EnvRegularCallEggServiceImpl extends ServiceImpl<EnvRegularCallEggM
     private EnergyWaterMapper waterMapper;
     @Autowired
     private BaseBuildingMapper buildingMapper;
+    @Autowired
+    private EnvDeviceMapper deviceMapper;
 
     @Override
     public Result listById(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
@@ -223,7 +223,7 @@ public class EnvRegularCallEggServiceImpl extends ServiceImpl<EnvRegularCallEggM
         QueryWrapper<BaseDuckInfo> infoQueryWrapper = new QueryWrapper<>();
         infoQueryWrapper.eq("farm_id", farmId).eq("duck_num", duckNum);
         BaseDuckInfo duckInfo = infoMapper.selectOne(infoQueryWrapper);
-        if (duckInfo.getDuckSex() .equals("0")) {
+        if (duckInfo.getDuckSex().equals("0")) {
             return new Result(10001, "雄鸭没有产蛋数量!", false);
         }
 
@@ -240,52 +240,50 @@ public class EnvRegularCallEggServiceImpl extends ServiceImpl<EnvRegularCallEggM
         String duckNum = paramsMap.get("chiNum");//鸭只编号
         String farmId = paramsMap.get("farmId");
         String unitId = paramsMap.get("unitId");//传入的是某个舍的id
-        QueryWrapper<BaseBuilding> buildingQueryWrapper = new QueryWrapper<>();
-        buildingQueryWrapper.eq("farm_id", farmId).eq("parent_id", unitId);
-        List<BaseBuilding> baseBuildings = buildingMapper.selectList(buildingQueryWrapper);//某个舍下所有的笼子
-
         JSONArray jsonArray = new JSONArray();
-
-        for (BaseBuilding baseBuilding : baseBuildings) {
-            Integer baseBuildingId = baseBuilding.getId();//笼子id
+        if ("".equals(duckNum) || null == duckNum) {
+            QueryWrapper<BaseBuilding> buildingQueryWrapper = new QueryWrapper<>();
+            buildingQueryWrapper.eq("farm_id", farmId).eq("parent_id", unitId);
+            List<BaseBuilding> baseBuildings = buildingMapper.selectList(buildingQueryWrapper);//某个舍下所有的笼子
+
+            List<Integer> idLists = new ArrayList<>();
+            baseBuildings.forEach(item->{
+                idLists.add(item.getId());
+            });
+            List<FeedingAndEggVo> oneFeedAndEgg = eggMapper.getOneFeedAndEgg(farmId, idLists);
+            for (FeedingAndEggVo feedingAndEggVo : oneFeedAndEgg) {
+                JSONObject jsonObject = new JSONObject();
+                if (ObjectUtil.isNotEmpty(feedingAndEggVo)) {
+                    jsonObject.put("egg", feedingAndEggVo.getEggNum());
+                    jsonObject.put("feed", feedingAndEggVo.getDuckWeight());
+                    jsonObject.put("duckNum", feedingAndEggVo.getDuckNum());
+                    jsonObject.put("chiNum", feedingAndEggVo.getChiNum());
+                    jsonObject.put("location", feedingAndEggVo.getUnitName());
+                    jsonArray.add(jsonObject);
+                }
+            }
+        } else {
             QueryWrapper<BaseDuckInfo> queryWrapper = new QueryWrapper<>();
-            queryWrapper.eq("farm_id", farmId).eq("unit_id", baseBuildingId).like(StringUtils.isNotBlank(duckNum), "chi_num", duckNum).eq("is_cage",0);
+            queryWrapper.eq("farm_id", farmId).like(StringUtils.isNotBlank(duckNum), "chi_num", duckNum).eq("is_cage", 0);
             BaseDuckInfo baseDuckInfo = infoMapper.selectOne(queryWrapper);//笼子里的鸭只信息
-
             if (ObjectUtil.isNotEmpty(baseDuckInfo)) {
-                QueryWrapper<EnvRegularCallEgg> queryWrapper1 = new QueryWrapper<>();
-                queryWrapper1.eq("farm_id", farmId).eq("duck_num", baseDuckInfo.getDuckNum());
-                queryWrapper1.select("SUM(egg_num) eggNum,duck_num duckNum");
-                queryWrapper1.groupBy("duck_num");
-                EnvRegularCallEgg egg = eggMapper.selectOne(queryWrapper1);//鸡蛋个数
-
-                QueryWrapper<EnvRegularCallFeeding> queryWrapper2 = new QueryWrapper<>();
-                queryWrapper2.eq("farm_id", farmId).eq("duck_num", baseDuckInfo.getDuckNum());
-                queryWrapper2.select("SUM(duck_weight) duckWeight,duck_num duckNum");
-                queryWrapper2.groupBy("duck_num");
-                EnvRegularCallFeeding envRegularCallFeeding = feedingMapper.selectOne(queryWrapper2);//采食量
-
-
+                List<Integer> idLists = new ArrayList<>();
+                idLists.add(baseDuckInfo.getUnitId());
+                List<FeedingAndEggVo> oneFeedAndEgg = eggMapper.getOneFeedAndEgg(farmId, idLists);
                 JSONObject jsonObject = new JSONObject();
-                if (ObjectUtil.isEmpty(egg)) {
-                    jsonObject.put("egg", 0);
-                } else {
-                    jsonObject.put("egg", egg.getEggNum());
+                if (oneFeedAndEgg.size() > 0) {
+                    for (FeedingAndEggVo feedingAndEggVo : oneFeedAndEgg) {
+                        jsonObject.put("egg", feedingAndEggVo.getEggNum());
+                        jsonObject.put("feed", feedingAndEggVo.getDuckWeight());
+                        jsonObject.put("duckNum", baseDuckInfo.getDuckNum());
+                        jsonObject.put("chiNum", baseDuckInfo.getChiNum());
+                        jsonObject.put("location", baseDuckInfo.getUnitName());
+                        jsonArray.add(jsonObject);
+                    }
                 }
-                if (ObjectUtil.isEmpty(envRegularCallFeeding)) {
-                    jsonObject.put("feed", 0);
-                } else {
-                    jsonObject.put("feed", envRegularCallFeeding.getDuckWeight());
-                }
-                jsonObject.put("duckNum", baseDuckInfo.getDuckNum());
-                jsonObject.put("chiNum", baseDuckInfo.getChiNum());
-                jsonObject.put("location", baseDuckInfo.getUnitName());
-                jsonArray.add(jsonObject);
             }
 
         }
-
-
         return new Result(ResultCode.SUCCESS, jsonArray);
     }
 

+ 13 - 0
huimv-admin/src/main/resources/com/huimv/guowei/admin/mapper/EnvRegularCallEggMapper.xml

@@ -50,4 +50,17 @@
         select sum(egg_num) as totalEgg,sum(duck_weight) as totalWeight,Round((SUM(duck_weight)/SUM(egg_num)),2) as 'avgWeight' from `env_regular_call_egg`
         ${ew.customSqlSegment}
     </select>
+
+    <select id="getOneFeedAndEgg" resultType="com.huimv.guowei.admin.entity.vo.FeedingAndEggVo">
+        SELECT sum(duck_weight) duckWeight,a.eggNum eggNum,duck_num duckNum,unit_id unitId,chi_num chiNum,unit_name unitName FROM env_regular_call_feeding f
+INNER JOIN
+(SELECT sum(egg_num) eggNum,duck_num duckNum,unit_id unitId FROM env_regular_call_egg WHERE farm_id=#{farmId}
+AND unit_id in
+ <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+     #{item}
+ </foreach>
+  group by unit_id) a
+ ON  f.unit_id=a.unitId
+ group by unit_id
+    </select>
 </mapper>