Browse Source

Merge branch 'master' of http://124.70.43.205:3000/GYEE_R.D/gaia

xushili 1 year ago
parent
commit
338126d95a

+ 401 - 57
electricity/meter/src/main/java/com/gyee/gaia/meter/controller/MeterInfoController.java

@@ -1,9 +1,13 @@
 package com.gyee.gaia.meter.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.gyee.gaia.meter.entity.Equipment;
+import com.gyee.gaia.meter.entity.MeterPoint;
 import com.gyee.gaia.meter.entity.PowerStation;
 import com.gyee.gaia.meter.entity.vo.MeterInfoVo;
 import com.gyee.gaia.meter.entity.vo.Result;
+import com.gyee.gaia.meter.service.impl.EquipmentServiceImpl;
+import com.gyee.gaia.meter.service.impl.MeterPointServiceImpl;
 import com.gyee.gaia.meter.service.impl.PowerStationServiceImpl;
 import com.gyee.gaia.meter.service.meterInfo.GetMeterInfo;
 import org.springframework.web.bind.annotation.CrossOrigin;
@@ -26,118 +30,458 @@ public class MeterInfoController {
     GetMeterInfo getMeterInfo;
     @Resource
     PowerStationServiceImpl powerStationService;
-
+    @Resource
+    MeterPointServiceImpl meterPointService;
+    @Resource
+    EquipmentServiceImpl equipmentService;
 
     @GetMapping("/meter/infoall")
     public Result<Object> getPowerstation() {
-        List<PowerStation> powerStations = powerStationService.list(new QueryWrapper<PowerStation>().eq("wind_type", "-1"));
 
-        ArrayList<MeterInfoVo> meterInfoVos = new ArrayList<>();
-        for (PowerStation powerStation: powerStations ) {
+        //下拉框选择场站
+        List<PowerStation> powerStations = powerStationService.list(new QueryWrapper<PowerStation>().eq("wind_type", "-1").orderBy(true, true, "order_num"));
+        ArrayList<MeterInfoVo> powerStationsVo = new ArrayList<>();
+        for (PowerStation powerStation : powerStations) {
             MeterInfoVo meterInfoVo = new MeterInfoVo();
             meterInfoVo.setName(powerStation.getName());
             meterInfoVo.setNemCode(powerStation.getNemCode());
-            meterInfoVos.add(meterInfoVo);
+            powerStationsVo.add(meterInfoVo);
         }
 
+        //下拉框选择类型
+        List<MeterPoint> meterTypeList = meterPointService.list(new QueryWrapper<MeterPoint>()
+                .eq("property", "JSD")
+        );
+
+        Set<String> encounteredMeterTypes = new HashSet<>();
+        List<MeterInfoVo> meterTypeListVo = new ArrayList<>();
+
+        for (MeterPoint meterPoint : meterTypeList) {
+            String meterType = meterPoint.getMeterType();
+            if (!encounteredMeterTypes.contains(meterType)) {
+                MeterInfoVo meterInfoVo = new MeterInfoVo();
+                meterInfoVo.setName(meterType);
+                meterTypeListVo.add(meterInfoVo);
+                encounteredMeterTypes.add(meterType);
+            }
+        }
+
+// meterTypeListVo 中包含了过滤后的结果,其中 meterType 属性相同的值只保留一个
         Map<String, Object> response = new HashMap<>();
-        response.put("fdc", meterInfoVos);
+        response.put("fdc", powerStationsVo);
+        response.put("type", meterTypeListVo);
 
         return new Result<>(200, "成功", response);
 
     }
 
 
+    @GetMapping("/meter/getMeterTypeCalculating")
+    public Result<Object> getMeterTypeCalculating(
+            @RequestParam(required = false) String windId
+    ) {
+
+        //下拉框选择类型
+        List<MeterPoint> meterTypeList = meterPointService.list(new QueryWrapper<MeterPoint>()
+                .eq("property", "JSD")
+                .eq("windpowerstation_id", windId)
+        );
+
+        Set<String> encounteredMeterTypes = new HashSet<>();
+        List<MeterInfoVo> meterTypeListVo = new ArrayList<>();
+
+        for (MeterPoint meterPoint : meterTypeList) {
+            String meterType = meterPoint.getMeterType();
+            if (!encounteredMeterTypes.contains(meterType)) {
+                MeterInfoVo meterInfoVo = new MeterInfoVo();
+                meterInfoVo.setName(meterType);
+                meterTypeListVo.add(meterInfoVo);
+                encounteredMeterTypes.add(meterType);
+            }
+        }
+        Map<String, Object> response = new HashMap<>();
+        response.put("type", meterTypeListVo);
+        return new Result<>(200, "成功", response);
+
+    }
+
+
+    @GetMapping("/meter/getMeterTypeBottom")
+    public Result<Object> getMeterTypeBottom(
+            @RequestParam(required = false) String windId
+    ) {
+
+        //下拉框选择类型
+        List<MeterPoint> meterTypeList = meterPointService.list(new QueryWrapper<MeterPoint>()
+                .eq("property", "CD")
+                .eq("windpowerstation_id", windId)
+        );
+
+        Set<String> encounteredMeterTypes = new HashSet<>();
+        List<MeterInfoVo> meterTypeListVo = new ArrayList<>();
+
+        for (MeterPoint meterPoint : meterTypeList) {
+            String meterType = meterPoint.getMeterType();
+            if (!encounteredMeterTypes.contains(meterType)) {
+                MeterInfoVo meterInfoVo = new MeterInfoVo();
+                meterInfoVo.setName(meterType);
+                meterTypeListVo.add(meterInfoVo);
+                encounteredMeterTypes.add(meterType);
+            }
+        }
+        Map<String, Object> response = new HashMap<>();
+        response.put("type", meterTypeListVo);
+        return new Result<>(200, "成功", response);
+
+    }
+
+    @GetMapping("/meter/getEquipmentId")
+    public Result<Object> getEquipmentId(
+            @RequestParam(required = false) String windId
+    ) {
+
+        //下拉框选择类型
+        List<Equipment> equipmentServiceList = equipmentService.list(new QueryWrapper<Equipment>()
+                .eq("windpowerstation_id", windId)
+        );
+
+        List<MeterInfoVo> meterTypeListVo = new ArrayList<>();
+
+        for (Equipment equipment : equipmentServiceList) {
+
+            MeterInfoVo meterInfoVo = new MeterInfoVo();
+            meterInfoVo.setName(equipment.getName());
+            meterInfoVo.setNemCode(equipment.getNemCode());
+            meterTypeListVo.add(meterInfoVo);
+
+        }
+
+        Map<String, Object> response = new HashMap<>();
+        response.put("type", meterTypeListVo);
+        return new Result<>(200, "成功", response);
+
+    }
+
+
     @GetMapping("/meterinfo/bottom")
     public Result<Object> getBottomInfo(
             @RequestParam(required = false) String windId,
+            @RequestParam(required = false) String meterType,
             @RequestParam(required = false) long startTime,
             @RequestParam(required = false) long endTime,
             @RequestParam(defaultValue = "1") int page,
             @RequestParam(defaultValue = "25") int perPage
     ) {
-        ArrayList<MeterInfoVo> meterInfoByWindIdList = getMeterInfo.getBottomInfoByWindId(windId, startTime, endTime);
-        // 进行分页处理
-        int totalItems = meterInfoByWindIdList.size();
-        int startIndex = (page - 1) * perPage;
-        int endIndex = Math.min(startIndex + perPage, totalItems);
+        if (windId != null && meterType != null) {
+            ArrayList<MeterInfoVo> meterInfoByWindIdList = getMeterInfo.getBottomInfoByWindId(windId, meterType, startTime, endTime);
+            // 进行分页处理
+            int totalItems = meterInfoByWindIdList.size();
+            int startIndex = (page - 1) * perPage;
+            int endIndex = Math.min(startIndex + perPage, totalItems);
+
+            List<MeterInfoVo> paginatedList = meterInfoByWindIdList.subList(startIndex, endIndex);
+
+            // 构建响应
+            Map<String, Object> response = new HashMap<>();
+            response.put("bottom", paginatedList);
+            response.put("totalItems", totalItems);
+            response.put("page", page);
+            response.put("perPage", perPage);
+            return new Result<>(200, "成功", response);
+        } else if (windId != null) {
+            ArrayList<MeterInfoVo> meterInfoByWindIdList = getMeterInfo.getBottomInfoByWindId(windId, startTime, endTime);
+            // 进行分页处理
+            int totalItems = meterInfoByWindIdList.size();
+            int startIndex = (page - 1) * perPage;
+            int endIndex = Math.min(startIndex + perPage, totalItems);
+
+            List<MeterInfoVo> paginatedList = meterInfoByWindIdList.subList(startIndex, endIndex);
+
+            // 构建响应
+            Map<String, Object> response = new HashMap<>();
+            response.put("bottom", paginatedList);
+            response.put("totalItems", totalItems);
+            response.put("page", page);
+            response.put("perPage", perPage);
+            return new Result<>(200, "成功", response);
+        }
+        return new Result<>(201, "参数错误", null);
 
-        List<MeterInfoVo> paginatedList = meterInfoByWindIdList.subList(startIndex, endIndex);
+    }
 
-        // 构建响应
-        Map<String, Object> response = new HashMap<>();
-        response.put("bottom", paginatedList);
-        response.put("totalItems", totalItems);
-        response.put("page", page);
-        response.put("perPage", perPage);
-        return new Result<>(200, "成功", response);
 
+    @GetMapping("/meterinfo/equipment")
+    public Result<Object> getEquipmentInfo(
+            @RequestParam(required = false) String windId,
+            @RequestParam(required = false) String id,
+            @RequestParam(required = false) long startTime,
+            @RequestParam(required = false) long endTime,
+            @RequestParam(defaultValue = "1") int page,
+            @RequestParam(defaultValue = "25") int perPage
+    ) {
+
+        if (windId != null && id != null) {
+            ArrayList<MeterInfoVo> meterInfoByWindIdList = getMeterInfo.getEquipmentInfoByEquipmentId(id, startTime, endTime);
+
+            // 进行排序
+            meterInfoByWindIdList.sort(Comparator.comparing(MeterInfoVo::getName));
+
+            // 进行分页处理
+            int totalItems = meterInfoByWindIdList.size();
+            int startIndex = (page - 1) * perPage;
+            int endIndex = Math.min(startIndex + perPage, totalItems);
+
+            List<MeterInfoVo> paginatedList = meterInfoByWindIdList.subList(startIndex, endIndex);
+
+            // 构建响应
+            Map<String, Object> response = new HashMap<>();
+            response.put("equipment", paginatedList);
+            response.put("totalItems", totalItems);
+            response.put("page", page);
+            response.put("perPage", perPage);
+            return new Result<>(200, "成功", response);
+
+        } else if (windId != null) {
+            ArrayList<MeterInfoVo> meterInfoByWindIdList = getMeterInfo.getEquipmentInfoByWindId(windId, startTime, endTime);
+            // 进行排序
+            meterInfoByWindIdList.sort(Comparator.comparing(MeterInfoVo::getName));
+            // 进行分页处理
+            int totalItems = meterInfoByWindIdList.size();
+            int startIndex = (page - 1) * perPage;
+            int endIndex = Math.min(startIndex + perPage, totalItems);
+
+            List<MeterInfoVo> paginatedList = meterInfoByWindIdList.subList(startIndex, endIndex);
+
+            // 构建响应
+            Map<String, Object> response = new HashMap<>();
+            response.put("equipment", paginatedList);
+            response.put("totalItems", totalItems);
+            response.put("page", page);
+            response.put("perPage", perPage);
+            return new Result<>(200, "成功", response);
+        }
+
+        return new Result<>(201, "参数错误", null);
     }
 
 
+    @GetMapping("/meterinfo/calculating")
+    public Result<Object> getCalculatingInfo(
+            @RequestParam(required = false) String windId,
+            @RequestParam(required = false) String meterType,
+            @RequestParam(required = true) long startTime,
+            @RequestParam(required = true) long endTime,
+            @RequestParam(defaultValue = "1") int page,
+            @RequestParam(defaultValue = "25") int perPage
+    ) {
+        if (windId != null && meterType != null) {
+            ArrayList<MeterInfoVo> meterInfoByWindIdList = getMeterInfo.getCalculatingInfoByWindId(windId, meterType, startTime, endTime);
+            // 进行排序
+            meterInfoByWindIdList.sort(Comparator.comparing(MeterInfoVo::getName));
+
+            // 进行分页处理
+            int totalItems = meterInfoByWindIdList.size();
+            int startIndex = (page - 1) * perPage;
+            int endIndex = Math.min(startIndex + perPage, totalItems);
+
+            List<MeterInfoVo> paginatedList = meterInfoByWindIdList.subList(startIndex, endIndex);
+
+            // 构建响应
+            Map<String, Object> response = new HashMap<>();
+            response.put("calculating", paginatedList);
+            response.put("totalItems", totalItems);
+            response.put("page", page);
+            response.put("perPage", perPage);
+            return new Result<>(200, "成功", response);
+
+
+        } else if (windId != null) {
+            ArrayList<MeterInfoVo> meterInfoByWindIdList = getMeterInfo.getCalculatingInfoByWindId(windId, startTime, endTime);
+
+            // 进行排序
+            meterInfoByWindIdList.sort(Comparator.comparing(MeterInfoVo::getName));
+
+            // 进行分页处理
+            int totalItems = meterInfoByWindIdList.size();
+            int startIndex = (page - 1) * perPage;
+            int endIndex = Math.min(startIndex + perPage, totalItems);
+
+            List<MeterInfoVo> paginatedList = meterInfoByWindIdList.subList(startIndex, endIndex);
+
+            // 构建响应
+            Map<String, Object> response = new HashMap<>();
+            response.put("calculating", paginatedList);
+            response.put("totalItems", totalItems);
+            response.put("page", page);
+            response.put("perPage", perPage);
+            return new Result<>(200, "成功", response);
+        }
+        return new Result<>(201, "参数错误", null);
+    }
 
-    @GetMapping("/meterinfo/equipment")
-    public Result<Object> getEquipmentInfo(
+
+    @GetMapping("/meterinfo/calculatingMonth")
+    public Result<Object> getCalculatingInfoMonth(
             @RequestParam(required = false) String windId,
-            @RequestParam(required = false) String startTime,
-            @RequestParam(required = false) String endTime,
+            @RequestParam(required = false) String meterType,
+            @RequestParam(required = false) long startTime,
+            @RequestParam(required = false) long endTime,
             @RequestParam(defaultValue = "1") int page,
             @RequestParam(defaultValue = "25") int perPage
     ) {
-        ArrayList<MeterInfoVo> meterInfoByWindIdList = getMeterInfo.getEquipmentInfoByWindId(windId, startTime, endTime);
 
-        // 进行排序
-        meterInfoByWindIdList.sort(Comparator.comparing(MeterInfoVo::getName));
+        if (windId != null && meterType != null) {
+            ArrayList<MeterInfoVo> meterInfoByWindIdList = getMeterInfo.getCalculatingInfoMonthByWindId(windId, meterType, startTime, endTime);
 
-        // 进行分页处理
-        int totalItems = meterInfoByWindIdList.size();
-        int startIndex = (page - 1) * perPage;
-        int endIndex = Math.min(startIndex + perPage, totalItems);
+            // 进行排序
+            meterInfoByWindIdList.sort(Comparator.comparing(MeterInfoVo::getName));
 
-        List<MeterInfoVo> paginatedList = meterInfoByWindIdList.subList(startIndex, endIndex);
+            // 进行分页处理
+            int totalItems = meterInfoByWindIdList.size();
+            int startIndex = (page - 1) * perPage;
+            int endIndex = Math.min(startIndex + perPage, totalItems);
 
-        // 构建响应
-        Map<String, Object> response = new HashMap<>();
-        response.put("equipment", paginatedList);
-        response.put("totalItems", totalItems);
-        response.put("page", page);
-        response.put("perPage", perPage);
-        return new Result<>(200, "成功", response);
+            List<MeterInfoVo> paginatedList = meterInfoByWindIdList.subList(startIndex, endIndex);
+
+            // 构建响应
+            Map<String, Object> response = new HashMap<>();
+            response.put("calculating", paginatedList);
+            response.put("totalItems", totalItems);
+            response.put("page", page);
+            response.put("perPage", perPage);
+            return new Result<>(200, "成功", response);
+        } else if (windId != null) {
+            ArrayList<MeterInfoVo> meterInfoByWindIdList = getMeterInfo.getCalculatingInfoMonthByWindId(windId, startTime, endTime);
+
+            // 进行排序
+            meterInfoByWindIdList.sort(Comparator.comparing(MeterInfoVo::getName));
+
+            // 进行分页处理
+            int totalItems = meterInfoByWindIdList.size();
+            int startIndex = (page - 1) * perPage;
+            int endIndex = Math.min(startIndex + perPage, totalItems);
+
+            List<MeterInfoVo> paginatedList = meterInfoByWindIdList.subList(startIndex, endIndex);
+
+            // 构建响应
+            Map<String, Object> response = new HashMap<>();
+            response.put("calculating", paginatedList);
+            response.put("totalItems", totalItems);
+            response.put("page", page);
+            response.put("perPage", perPage);
+            return new Result<>(200, "成功", response);
+
+        }
 
+        return new Result<>(201, "参数错误", null);
     }
 
 
-    @GetMapping("/meterinfo/calculating")
-    public Result<Object> getCalculatingInfo(
+    @GetMapping("/meterinfo/equipmentMonth")
+    public Result<Object> getEquipmentInfoMonth(
             @RequestParam(required = false) String windId,
-            @RequestParam(required = false) String startTime,
-            @RequestParam(required = false) String endTime,
+            @RequestParam(required = false) String id,
+            @RequestParam(required = false) long startTime,
+            @RequestParam(required = false) long endTime,
             @RequestParam(defaultValue = "1") int page,
             @RequestParam(defaultValue = "25") int perPage
     ) {
-        ArrayList<MeterInfoVo> meterInfoByWindIdList = getMeterInfo.getCalculatingInfoByWindId(windId, startTime, endTime);
 
-        // 进行排序
-        meterInfoByWindIdList.sort(Comparator.comparing(MeterInfoVo::getName));
+        if (windId != null && id != null) {
+            ArrayList<MeterInfoVo> meterInfoByWindIdList = getMeterInfo.getEquipmentInfoMonthByWindId(windId, id, startTime, endTime);
 
-        // 进行分页处理
-        int totalItems = meterInfoByWindIdList.size();
-        int startIndex = (page - 1) * perPage;
-        int endIndex = Math.min(startIndex + perPage, totalItems);
+            // 进行排序
+            meterInfoByWindIdList.sort(Comparator.comparing(MeterInfoVo::getName));
 
-        List<MeterInfoVo> paginatedList = meterInfoByWindIdList.subList(startIndex, endIndex);
+            // 进行分页处理
+            int totalItems = meterInfoByWindIdList.size();
+            int startIndex = (page - 1) * perPage;
+            int endIndex = Math.min(startIndex + perPage, totalItems);
 
-        // 构建响应
-        Map<String, Object> response = new HashMap<>();
-        response.put("calculating", paginatedList);
-        response.put("totalItems", totalItems);
-        response.put("page", page);
-        response.put("perPage", perPage);
-        return new Result<>(200, "成功", response);
+            List<MeterInfoVo> paginatedList = meterInfoByWindIdList.subList(startIndex, endIndex);
+
+            // 构建响应
+            Map<String, Object> response = new HashMap<>();
+            response.put("calculating", paginatedList);
+            response.put("totalItems", totalItems);
+            response.put("page", page);
+            response.put("perPage", perPage);
+            return new Result<>(200, "成功", response);
+        } else if (windId != null) {
+
+
+            ArrayList<MeterInfoVo> meterInfoByWindIdList = getMeterInfo.getEquipmentInfoMonthByWindId(windId, startTime, endTime);
+
+            // 进行排序
+            meterInfoByWindIdList.sort(Comparator.comparing(MeterInfoVo::getName));
+
+            // 进行分页处理
+            int totalItems = meterInfoByWindIdList.size();
+            int startIndex = (page - 1) * perPage;
+            int endIndex = Math.min(startIndex + perPage, totalItems);
+
+            List<MeterInfoVo> paginatedList = meterInfoByWindIdList.subList(startIndex, endIndex);
+
+            // 构建响应
+            Map<String, Object> response = new HashMap<>();
+            response.put("calculating", paginatedList);
+            response.put("totalItems", totalItems);
+            response.put("page", page);
+            response.put("perPage", perPage);
+            return new Result<>(200, "成功", response);
+        }
+        return new Result<>(201, "参数错误", null);
 
     }
 
 
+    @GetMapping("/meterinfo/bottomMonth")
+    public Result<Object> getBottomInfoMonth(
+            @RequestParam(required = false) String windId,
+            @RequestParam(required = false) String meterType,
+            @RequestParam(required = false) long startTime,
+            @RequestParam(required = false) long endTime,
+            @RequestParam(defaultValue = "1") int page,
+            @RequestParam(defaultValue = "25") int perPage
+    ) {
+
+        if (windId != null && meterType != null) {
+            ArrayList<MeterInfoVo> meterInfoByWindIdList = getMeterInfo.getBottomInfoMonthByWindId(windId, meterType, startTime, endTime);
+            // 进行分页处理
+            int totalItems = meterInfoByWindIdList.size();
+            int startIndex = (page - 1) * perPage;
+            int endIndex = Math.min(startIndex + perPage, totalItems);
+
+            List<MeterInfoVo> paginatedList = meterInfoByWindIdList.subList(startIndex, endIndex);
+
+            // 构建响应
+            Map<String, Object> response = new HashMap<>();
+            response.put("bottom", paginatedList);
+            response.put("totalItems", totalItems);
+            response.put("page", page);
+            response.put("perPage", perPage);
+            return new Result<>(200, "成功", response);
+
+        } else if (windId != null) {
+            ArrayList<MeterInfoVo> meterInfoByWindIdList = getMeterInfo.getBottomInfoMonthByWindId(windId, startTime, endTime);
+            // 进行分页处理
+            int totalItems = meterInfoByWindIdList.size();
+            int startIndex = (page - 1) * perPage;
+            int endIndex = Math.min(startIndex + perPage, totalItems);
+
+            List<MeterInfoVo> paginatedList = meterInfoByWindIdList.subList(startIndex, endIndex);
+
+            // 构建响应
+            Map<String, Object> response = new HashMap<>();
+            response.put("bottom", paginatedList);
+            response.put("totalItems", totalItems);
+            response.put("page", page);
+            response.put("perPage", perPage);
+            return new Result<>(200, "成功", response);
+
+        }
+        return new Result<>(201, "参数错误", null);
+    }
 
 
 }

+ 1 - 0
electricity/meter/src/main/java/com/gyee/gaia/meter/entity/vo/MeterInfoVo.java

@@ -20,4 +20,5 @@ public class MeterInfoVo {
     private BigDecimal rdl;
 
 
+
 }

+ 866 - 28
electricity/meter/src/main/java/com/gyee/gaia/meter/service/meterInfo/GetMeterInfo.java

@@ -4,16 +4,16 @@ import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.date.LocalDateTimeUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.gyee.gaia.meter.entity.MeterInfoBottomcode;
-import com.gyee.gaia.meter.entity.MeterInfoCalculating;
-import com.gyee.gaia.meter.entity.MeterInfoEquipment;
+import com.gyee.gaia.meter.entity.*;
 import com.gyee.gaia.meter.entity.vo.MeterInfoVo;
-import com.gyee.gaia.meter.service.impl.MeterInfoBottomcodeServiceImpl;
-import com.gyee.gaia.meter.service.impl.MeterInfoCalculatingServiceImpl;
-import com.gyee.gaia.meter.service.impl.MeterInfoEquipmentServiceImpl;
+import com.gyee.gaia.meter.service.impl.*;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.temporal.ChronoUnit;
@@ -34,23 +34,23 @@ public class GetMeterInfo {
     MeterInfoEquipmentServiceImpl meterInfoEquipmentService;
     @Resource
     MeterInfoCalculatingServiceImpl meterInfoCalculatingService;
+    @Resource
+    MeterPointServiceImpl meterPointService;
+    @Resource
+    EquipmentServiceImpl equipmentService;
 
-    //根据场站ID,开始时间,结束时间,查询获取场站下所有数据
     public ArrayList<MeterInfoVo> getBottomInfoByWindId(String windId, long startTime, long endTime) {
 
-        Date date1 = new Date(startTime);
-        Date date2 = new Date(endTime);
-
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        String format1 = simpleDateFormat.format(date1);
-        String format2 = simpleDateFormat.format(date2);
+        String format1 = simpleDateFormat.format(new Date(startTime));
+        String format2 = simpleDateFormat.format(new Date(endTime));
 
         //设置取值开始时间
-        DateTime startDateTime = DateUtil.parse(format1);
-
-        //设置取值结束时间
-        DateTime endDateTime = DateUtil.parse(format2);
+        DateTime startDateTime1 = DateUtil.parse(format1);
+        DateTime endDateTime1 = DateUtil.parse(format2);
 
+        DateTime startDateTime = DateUtil.beginOfDay(startDateTime1);
+        DateTime endDateTime = DateUtil.beginOfDay(endDateTime1);
 
         //指定开始日期到结束日期的天数
         LocalDateTime day1 = LocalDateTimeUtil.of(startDateTime);
@@ -87,15 +87,78 @@ public class GetMeterInfo {
 
     }
 
+    public ArrayList<MeterInfoVo> getBottomInfoByWindId(String windId, String meterType, long startTime, long endTime) {
+
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format1 = simpleDateFormat.format(new Date(startTime));
+        String format2 = simpleDateFormat.format(new Date(endTime));
+
+        // 设置取值开始时间
+        DateTime startDateTime1 = DateUtil.parse(format1);
+        DateTime endDateTime1 = DateUtil.parse(format2);
+
+        DateTime startDateTime = DateUtil.beginOfDay(startDateTime1);
+        DateTime endDateTime = DateUtil.beginOfDay(endDateTime1);
+
+        // 指定开始日期到结束日期的天数
+        LocalDateTime day1 = LocalDateTimeUtil.of(startDateTime);
+        LocalDateTime day2 = LocalDateTimeUtil.of(endDateTime);
+        long betweenDays = ChronoUnit.DAYS.between(day1, day2);
+        System.out.println("相差天数" + betweenDays);
+
+        ArrayList<MeterInfoVo> meterInfoVos = new ArrayList<>();
+
+        List<MeterPoint> meterPoints = meterPointService.list(new QueryWrapper<MeterPoint>()
+                .eq("windpowerstation_id", windId)
+                .eq("property", "CD")
+                .eq("meter_type", meterType)
+        );
+
+        List<String> meterPointNemCodes = new ArrayList<>();
+        for (MeterPoint meterPoint : meterPoints) {
+            meterPointNemCodes.add(meterPoint.getNemCode());
+        }
+
+
+        //需要批量查询的日期集合
+        List<DateTime> dateTimes = new ArrayList<>();
+        for (int i = 0; i <= betweenDays; i++) {
+            DateTime dateTime4 = DateUtil.offsetDay(startDateTime, i);
+            dateTimes.add(dateTime4);
+        }
+
+        List<MeterInfoBottomcode> meterInfoBottomcodes = meterInfoBottomcodeService.list(new QueryWrapper<MeterInfoBottomcode>()
+                .in("start_time", dateTimes)
+                .in("code", meterPointNemCodes)
+        );
+
+        for (MeterInfoBottomcode meterInfoBottomcode : meterInfoBottomcodes) {
+
+            MeterInfoVo meterInfoVo = new MeterInfoVo();
+            meterInfoVo.setDate(new DateTime(meterInfoBottomcode.getStartTime()));
+            meterInfoVo.setName(meterInfoBottomcode.getName());
+            meterInfoVo.setStartCode(meterInfoBottomcode.getStartValue());
+            meterInfoVo.setEndCode(meterInfoBottomcode.getEndValue());
+            meterInfoVo.setRdl(meterInfoBottomcode.getDayValue());
+            meterInfoVos.add(meterInfoVo);
+        }
+
+        return meterInfoVos;
+    }
+
 
-    //根据场站ID,开始时间,结束时间,查询获取场站下所有数据
-    public ArrayList<MeterInfoVo> getEquipmentInfoByWindId(String windId, String startTime, String endTime) {
+    public ArrayList<MeterInfoVo> getEquipmentInfoByWindId(String windId, long startTime, long endTime) {
+
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format1 = simpleDateFormat.format(new Date(startTime));
+        String format2 = simpleDateFormat.format(new Date(endTime));
 
         //设置取值开始时间
-        DateTime startDateTime = DateUtil.parse(startTime);
+        DateTime startDateTime1 = DateUtil.parse(format1);
+        DateTime endDateTime1 = DateUtil.parse(format2);
 
-        //设置取值结束时间
-        DateTime endDateTime = DateUtil.parse(endTime);
+        DateTime startDateTime = DateUtil.beginOfDay(startDateTime1);
+        DateTime endDateTime = DateUtil.beginOfDay(endDateTime1);
 
         //指定开始日期到结束日期的天数
         LocalDateTime day1 = LocalDateTimeUtil.of(startDateTime);
@@ -119,9 +182,65 @@ public class GetMeterInfo {
                 MeterInfoVo meterInfoVo = new MeterInfoVo();
                 meterInfoVo.setDate(dateTime1);
                 meterInfoVo.setName(meterInfoEquipment.getName());
-                meterInfoVo.setRdl(meterInfoEquipment.getRfdl());
+                meterInfoVo.setRdl(meterInfoEquipment.getRfdl().divide(BigDecimal.valueOf(10000), 4, RoundingMode.HALF_EVEN));
+                meterInfoVos.add(meterInfoVo);
+            }
+
+            MeterInfoCalculating meterInfoCalculating = meterInfoCalculatingService.getOne(new QueryWrapper<MeterInfoCalculating>().eq("windpowerstation_id", windId).eq("date", dateTime1).like("code", "%_FJFDL_P0%"));
+            MeterInfoVo meterInfoVo1 = new MeterInfoVo();
+            meterInfoVo1.setDate(dateTime1);
+            meterInfoVo1.setName(meterInfoCalculating.getName());
+            meterInfoVo1.setRdl(meterInfoCalculating.getValue());
+            meterInfoVos.add(meterInfoVo1);
+
+
+        }
+        System.out.println(meterInfoVos.size());
+
+        return meterInfoVos;
+
+
+    }
+
+    public ArrayList<MeterInfoVo> getEquipmentInfoByEquipmentId(String id, long startTime, long endTime) {
+
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format1 = simpleDateFormat.format(new Date(startTime));
+        String format2 = simpleDateFormat.format(new Date(endTime));
+
+        //设置取值开始时间
+        DateTime startDateTime1 = DateUtil.parse(format1);
+        DateTime endDateTime1 = DateUtil.parse(format2);
+
+        DateTime startDateTime = DateUtil.beginOfDay(startDateTime1);
+        DateTime endDateTime = DateUtil.beginOfDay(endDateTime1);
+
+        //指定开始日期到结束日期的天数
+        LocalDateTime day1 = LocalDateTimeUtil.of(startDateTime);
+        LocalDateTime day2 = LocalDateTimeUtil.of(endDateTime);
+        long between = ChronoUnit.DAYS.between(day1, day2);
+
+
+        ArrayList<MeterInfoVo> meterInfoVos = new ArrayList<>();
+
+        for (int i = 0; i <= between; i++) {
+
+            DateTime dateTime1 = DateUtil.offsetDay(startDateTime, i);
+            DateTime dateTime2 = DateUtil.offsetDay(startDateTime, i + 1);
+
+            List<MeterInfoEquipment> meterInfoEquipmentList = meterInfoEquipmentService.list(new QueryWrapper<MeterInfoEquipment>().eq("equipment_nem_code", id).eq("date", dateTime1));
+            //遍历集合
+
+
+            for (MeterInfoEquipment meterInfoEquipment : meterInfoEquipmentList) {
+
+                MeterInfoVo meterInfoVo = new MeterInfoVo();
+                meterInfoVo.setDate(dateTime1);
+                meterInfoVo.setName(meterInfoEquipment.getName());
+                meterInfoVo.setRdl(meterInfoEquipment.getRfdl().divide(BigDecimal.valueOf(10000), 4, RoundingMode.HALF_EVEN));
                 meterInfoVos.add(meterInfoVo);
             }
+
         }
         System.out.println(meterInfoVos.size());
 
@@ -131,14 +250,18 @@ public class GetMeterInfo {
     }
 
 
-    //根据场站ID,开始时间,结束时间,查询获取场站下所有数据
-    public ArrayList<MeterInfoVo> getCalculatingInfoByWindId(String windId, String startTime, String endTime) {
+    public ArrayList<MeterInfoVo> getCalculatingInfoByWindId(String windId, long startTime, long endTime) {
+
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format1 = simpleDateFormat.format(new Date(startTime));
+        String format2 = simpleDateFormat.format(new Date(endTime));
 
         //设置取值开始时间
-        DateTime startDateTime = DateUtil.parse(startTime);
+        DateTime startDateTime1 = DateUtil.parse(format1);
+        DateTime endDateTime1 = DateUtil.parse(format2);
 
-        //设置取值结束时间
-        DateTime endDateTime = DateUtil.parse(endTime);
+        DateTime startDateTime = DateUtil.beginOfDay(startDateTime1);
+        DateTime endDateTime = DateUtil.beginOfDay(endDateTime1);
 
         //指定开始日期到结束日期的天数
         LocalDateTime day1 = LocalDateTimeUtil.of(startDateTime);
@@ -173,4 +296,719 @@ public class GetMeterInfo {
 
     }
 
-}
+    public ArrayList<MeterInfoVo> getCalculatingInfoByWindId(String windId, String meterType, long startTime, long endTime) {
+
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format1 = simpleDateFormat.format(new Date(startTime));
+        String format2 = simpleDateFormat.format(new Date(endTime));
+
+        // 设置取值开始时间
+        DateTime startDateTime1 = DateUtil.parse(format1);
+        DateTime endDateTime1 = DateUtil.parse(format2);
+
+        DateTime startDateTime = DateUtil.beginOfDay(startDateTime1);
+        DateTime endDateTime = DateUtil.beginOfDay(endDateTime1);
+
+        // 指定开始日期到结束日期的天数
+        LocalDateTime day1 = LocalDateTimeUtil.of(startDateTime);
+        LocalDateTime day2 = LocalDateTimeUtil.of(endDateTime);
+        long betweenDays = ChronoUnit.DAYS.between(day1, day2);
+        System.out.println("相差月数" + betweenDays);
+
+        ArrayList<MeterInfoVo> meterInfoVos = new ArrayList<>();
+
+        List<MeterPoint> meterPoints = meterPointService.list(new QueryWrapper<MeterPoint>()
+                .eq("windpowerstation_id", windId)
+                .eq("property", "JSD")
+                .eq("meter_type", meterType)
+        );
+
+        List<String> meterPointNemCodes = new ArrayList<>();
+        for (MeterPoint meterPoint : meterPoints) {
+            meterPointNemCodes.add(meterPoint.getNemCode());
+        }
+
+
+        //需要批量查询的日期集合
+        List<DateTime> dateTimes = new ArrayList<>();
+        for (int i = 0; i <= betweenDays; i++) {
+            DateTime dateTime4 = DateUtil.offsetDay(startDateTime, i);
+            dateTimes.add(dateTime4);
+        }
+
+        List<MeterInfoCalculating> meterInfoCalculatings = meterInfoCalculatingService.list(new QueryWrapper<MeterInfoCalculating>()
+                .in("date", dateTimes)
+                .in("code", meterPointNemCodes)
+        );
+
+        for (MeterInfoCalculating meterInfoCalculating : meterInfoCalculatings) {
+
+            MeterInfoVo meterInfoVo = new MeterInfoVo();
+            meterInfoVo.setDate(new DateTime(meterInfoCalculating.getDate()));
+            meterInfoVo.setName(meterInfoCalculating.getName());
+            meterInfoVo.setRdl(meterInfoCalculating.getValue());
+            meterInfoVos.add(meterInfoVo);
+
+        }
+
+        return meterInfoVos;
+    }
+
+
+    public ArrayList<MeterInfoVo> getCalculatingInfoMonthByWindId(String windId, long startTime, long endTime) {
+
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format1 = simpleDateFormat.format(new Date(startTime));
+        String format2 = simpleDateFormat.format(new Date(endTime));
+
+        // 设置取值开始时间
+        DateTime startDateTime1 = DateUtil.parse(format1);
+        DateTime endDateTime1 = DateUtil.parse(format2);
+
+        DateTime startDateTime = DateUtil.beginOfMonth(startDateTime1);
+        DateTime endDateTime = DateUtil.endOfMonth(endDateTime1);
+
+        // 指定开始日期到结束日期的天数
+        LocalDateTime day1 = LocalDateTimeUtil.of(startDateTime);
+        LocalDateTime day2 = LocalDateTimeUtil.of(endDateTime);
+        long between = ChronoUnit.MONTHS.between(day1, day2);
+        long betweenDays = ChronoUnit.DAYS.between(day1, day2);
+        System.out.println("相差月数" + between);
+
+        ArrayList<MeterInfoVo> meterInfoVos = new ArrayList<>();
+
+        List<MeterPoint> meterPoints = meterPointService.list(new QueryWrapper<MeterPoint>()
+                .eq("windpowerstation_id", windId)
+                .like("property", "JSD%"));
+
+
+        // 批量查询MeterInfoCalculating数据
+        List<DateTime> dateTimes = new ArrayList<>();
+        for (int i = 0; i <= betweenDays; i++) {
+            DateTime dateTime4 = DateUtil.offsetDay(startDateTime, i);
+            dateTimes.add(dateTime4);
+        }
+
+        List<MeterInfoCalculating> meterInfoCalculatings = meterInfoCalculatingService.list(new QueryWrapper<MeterInfoCalculating>()
+                .in("date", dateTimes));
+
+
+        for (int i = 0; i <= between; i++) {
+            DateTime dateTime1 = DateUtil.offsetMonth(startDateTime, i);
+            DateTime dateTime2 = DateUtil.endOfMonth(dateTime1);
+
+            LocalDateTime day3 = LocalDateTimeUtil.of(dateTime1);
+            LocalDateTime day4 = LocalDateTimeUtil.of(dateTime2);
+            long betweenDay = ChronoUnit.DAYS.between(day3, day4);
+            System.out.println("这月相差天数:" + betweenDay);
+
+            for (MeterPoint meterPoint : meterPoints) {
+                System.out.println(meterPoint.getName());
+
+                MeterInfoVo meterInfoVo = new MeterInfoVo();
+                meterInfoVo.setDate(dateTime1);
+                meterInfoVo.setName(meterPoint.getName());
+
+                BigDecimal ydl = BigDecimal.valueOf(0);
+                System.out.println("ydl开始值" + ydl);
+
+                for (int j = 0; j <= betweenDay; j++) {
+                    System.out.println("J的值(第-1天)" + j);
+
+                    DateTime dateTime3 = DateUtil.offsetDay(dateTime1, j);
+
+//                    MeterInfoCalculating meterInfoCalculating = meterInfoCalculatingService.getOne(new QueryWrapper<MeterInfoCalculating>().eq("code", meterPoint.getNemCode()).eq("date", dateTime3));
+                    MeterInfoCalculating meterInfoCalculating = findMeterInfoCalculating(meterInfoCalculatings, meterPoint.getNemCode(), dateTime3);
+
+                    if (meterInfoCalculating != null) {
+                        ydl = ydl.add(meterInfoCalculating.getValue());
+                        System.out.println("当月每天累加" + ydl);
+                    }
+                }
+                meterInfoVo.setRdl(ydl);
+                meterInfoVos.add(meterInfoVo);
+            }
+        }
+
+        return meterInfoVos;
+    }
+
+    public ArrayList<MeterInfoVo> getCalculatingInfoMonthByWindId(String windId, String meterType, long startTime, long endTime) {
+
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format1 = simpleDateFormat.format(new Date(startTime));
+        String format2 = simpleDateFormat.format(new Date(endTime));
+
+        // 设置取值开始时间
+        DateTime startDateTime1 = DateUtil.parse(format1);
+        DateTime endDateTime1 = DateUtil.parse(format2);
+
+        DateTime startDateTime = DateUtil.beginOfMonth(startDateTime1);
+        DateTime endDateTime = DateUtil.endOfMonth(endDateTime1);
+
+        // 指定开始日期到结束日期的天数
+        LocalDateTime day1 = LocalDateTimeUtil.of(startDateTime);
+        LocalDateTime day2 = LocalDateTimeUtil.of(endDateTime);
+        long between = ChronoUnit.MONTHS.between(day1, day2);
+        long betweenDays = ChronoUnit.DAYS.between(day1, day2);
+        System.out.println("相差月数" + between);
+
+        ArrayList<MeterInfoVo> meterInfoVos = new ArrayList<>();
+
+        List<MeterPoint> meterPoints = meterPointService.list(new QueryWrapper<MeterPoint>()
+                .eq("windpowerstation_id", windId)
+                .eq("meter_type", meterType)
+                .like("property", "JSD%"));
+
+
+        // 批量查询MeterInfoCalculating数据
+        List<DateTime> dateTimes = new ArrayList<>();
+        for (int i = 0; i <= betweenDays; i++) {
+            DateTime dateTime4 = DateUtil.offsetDay(startDateTime, i);
+            dateTimes.add(dateTime4);
+        }
+
+        List<MeterInfoCalculating> meterInfoCalculatings = meterInfoCalculatingService.list(new QueryWrapper<MeterInfoCalculating>()
+                .in("date", dateTimes));
+
+
+        for (int i = 0; i <= between; i++) {
+            DateTime dateTime1 = DateUtil.offsetMonth(startDateTime, i);
+            DateTime dateTime2 = DateUtil.endOfMonth(dateTime1);
+
+            LocalDateTime day3 = LocalDateTimeUtil.of(dateTime1);
+            LocalDateTime day4 = LocalDateTimeUtil.of(dateTime2);
+            long betweenDay = ChronoUnit.DAYS.between(day3, day4);
+            System.out.println("这月相差天数:" + betweenDay);
+
+            for (MeterPoint meterPoint : meterPoints) {
+                System.out.println(meterPoint.getName());
+
+                MeterInfoVo meterInfoVo = new MeterInfoVo();
+                meterInfoVo.setDate(dateTime1);
+                meterInfoVo.setName(meterPoint.getName());
+
+                BigDecimal ydl = BigDecimal.valueOf(0);
+                System.out.println("ydl开始值" + ydl);
+
+                for (int j = 0; j <= betweenDay; j++) {
+                    System.out.println("J的值(第-1天)" + j);
+
+                    DateTime dateTime3 = DateUtil.offsetDay(dateTime1, j);
+
+//                    MeterInfoCalculating meterInfoCalculating = meterInfoCalculatingService.getOne(new QueryWrapper<MeterInfoCalculating>().eq("code", meterPoint.getNemCode()).eq("date", dateTime3));
+                    MeterInfoCalculating meterInfoCalculating = findMeterInfoCalculating(meterInfoCalculatings, meterPoint.getNemCode(), dateTime3);
+
+                    if (meterInfoCalculating != null) {
+                        ydl = ydl.add(meterInfoCalculating.getValue());
+                        System.out.println("当月每天累加" + ydl);
+                    }
+                }
+                meterInfoVo.setRdl(ydl);
+                meterInfoVos.add(meterInfoVo);
+            }
+        }
+
+        return meterInfoVos;
+    }
+
+
+    public ArrayList<MeterInfoVo> getEquipmentInfoMonthByWindId(String windId, long startTime, long endTime) {
+
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format1 = simpleDateFormat.format(new Date(startTime));
+        String format2 = simpleDateFormat.format(new Date(endTime));
+
+        // 设置取值开始时间
+        DateTime startDateTime1 = DateUtil.parse(format1);
+        DateTime endDateTime1 = DateUtil.parse(format2);
+
+        DateTime startDateTime = DateUtil.beginOfMonth(startDateTime1);
+        DateTime endDateTime = DateUtil.endOfMonth(endDateTime1);
+
+        // 指定开始日期到结束日期的天数
+        LocalDateTime day1 = LocalDateTimeUtil.of(startDateTime);
+        LocalDateTime day2 = LocalDateTimeUtil.of(endDateTime);
+        long between = ChronoUnit.MONTHS.between(day1, day2);
+        long betweenDays = ChronoUnit.DAYS.between(day1, day2);
+        System.out.println("相差天数" + between);
+
+        ArrayList<MeterInfoVo> meterInfoVos = new ArrayList<>();
+
+        List<Equipment> equipments = equipmentService.list(new QueryWrapper<Equipment>()
+                .eq("windpowerstation_id", windId)
+        );
+
+
+        List<DateTime> dateTimes = new ArrayList<>();
+        for (int i = 0; i <= betweenDays; i++) {
+            DateTime dateTime4 = DateUtil.offsetDay(startDateTime, i);
+            dateTimes.add(dateTime4);
+        }
+
+        List<MeterInfoEquipment> meterInfoEquipments = meterInfoEquipmentService.list(new QueryWrapper<MeterInfoEquipment>()
+                .in("date", dateTimes)
+                .eq("powerstation_nem_code", windId)
+        );
+
+
+        for (int i = 0; i <= between; i++) {
+            DateTime dateTime1 = DateUtil.offsetMonth(startDateTime, i);
+            DateTime dateTime2 = DateUtil.endOfMonth(dateTime1);
+
+            LocalDateTime day3 = LocalDateTimeUtil.of(dateTime1);
+            LocalDateTime day4 = LocalDateTimeUtil.of(dateTime2);
+            long betweenDay = ChronoUnit.DAYS.between(day3, day4);
+            System.out.println("这月相差天数:" + betweenDay);
+
+            for (Equipment equipment : equipments) {
+
+                MeterInfoVo meterInfoVo = new MeterInfoVo();
+                meterInfoVo.setDate(dateTime1);
+                meterInfoVo.setName(equipment.getName());
+
+                BigDecimal ydl = BigDecimal.valueOf(0);
+                System.out.println("ydl开始值" + ydl);
+
+                for (int j = 0; j <= betweenDay; j++) {
+                    System.out.println("J的值(第-1天)" + j);
+
+                    DateTime dateTime3 = DateUtil.offsetDay(dateTime1, j);
+
+                    MeterInfoEquipment meterInfoEquipment = findMeterInfoEquipment(meterInfoEquipments, equipment.getNemCode(), dateTime3);
+
+                    if (meterInfoEquipment != null) {
+                        ydl = ydl.add(meterInfoEquipment.getRfdl());
+                        System.out.println("当月每天累加" + ydl);
+                    }
+                }
+                meterInfoVo.setRdl(ydl);
+                meterInfoVos.add(meterInfoVo);
+            }
+        }
+
+        return meterInfoVos;
+    }
+
+    public ArrayList<MeterInfoVo> getEquipmentInfoMonthByWindId(String windId, String id, long startTime, long endTime) {
+
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format1 = simpleDateFormat.format(new Date(startTime));
+        String format2 = simpleDateFormat.format(new Date(endTime));
+
+        // 设置取值开始时间
+        DateTime startDateTime1 = DateUtil.parse(format1);
+        DateTime endDateTime1 = DateUtil.parse(format2);
+
+        DateTime startDateTime = DateUtil.beginOfMonth(startDateTime1);
+        DateTime endDateTime = DateUtil.endOfMonth(endDateTime1);
+
+        // 指定开始日期到结束日期的天数
+        LocalDateTime day1 = LocalDateTimeUtil.of(startDateTime);
+        LocalDateTime day2 = LocalDateTimeUtil.of(endDateTime);
+        long between = ChronoUnit.MONTHS.between(day1, day2);
+        long betweenDays = ChronoUnit.DAYS.between(day1, day2);
+        System.out.println("相差天数" + between);
+
+        ArrayList<MeterInfoVo> meterInfoVos = new ArrayList<>();
+
+        List<Equipment> equipments = equipmentService.list(new QueryWrapper<Equipment>()
+                .eq("windpowerstation_id", windId)
+                .eq("nem_code", id)
+        );
+
+
+        List<DateTime> dateTimes = new ArrayList<>();
+        for (int i = 0; i <= betweenDays; i++) {
+            DateTime dateTime4 = DateUtil.offsetDay(startDateTime, i);
+            dateTimes.add(dateTime4);
+        }
+
+        List<MeterInfoEquipment> meterInfoEquipments = meterInfoEquipmentService.list(new QueryWrapper<MeterInfoEquipment>()
+                .in("date", dateTimes)
+                .eq("equipment_nem_code", id)
+        );
+
+
+        for (int i = 0; i <= between; i++) {
+            DateTime dateTime1 = DateUtil.offsetMonth(startDateTime, i);
+            DateTime dateTime2 = DateUtil.endOfMonth(dateTime1);
+
+            LocalDateTime day3 = LocalDateTimeUtil.of(dateTime1);
+            LocalDateTime day4 = LocalDateTimeUtil.of(dateTime2);
+            long betweenDay = ChronoUnit.DAYS.between(day3, day4);
+            System.out.println("这月相差天数:" + betweenDay);
+
+            for (Equipment equipment : equipments) {
+
+                MeterInfoVo meterInfoVo = new MeterInfoVo();
+                meterInfoVo.setDate(dateTime1);
+                meterInfoVo.setName(equipment.getName());
+
+                BigDecimal ydl = BigDecimal.valueOf(0);
+                System.out.println("ydl开始值" + ydl);
+
+                for (int j = 0; j <= betweenDay; j++) {
+                    System.out.println("J的值(第-1天)" + j);
+
+                    DateTime dateTime3 = DateUtil.offsetDay(dateTime1, j);
+
+                    MeterInfoEquipment meterInfoEquipment = findMeterInfoEquipment(meterInfoEquipments, equipment.getNemCode(), dateTime3);
+
+                    if (meterInfoEquipment != null) {
+                        ydl = ydl.add(meterInfoEquipment.getRfdl());
+                        System.out.println("当月每天累加" + ydl);
+                    }
+                }
+                meterInfoVo.setRdl(ydl);
+                meterInfoVos.add(meterInfoVo);
+            }
+        }
+
+        return meterInfoVos;
+    }
+
+
+    public ArrayList<MeterInfoVo> getBottomInfoMonthByWindId1(String windId, long startTime, long endTime) {
+
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format1 = simpleDateFormat.format(new Date(startTime));
+        String format2 = simpleDateFormat.format(new Date(endTime));
+
+        // 设置取值开始时间
+        DateTime startDateTime1 = DateUtil.parse(format1);
+        DateTime endDateTime1 = DateUtil.parse(format2);
+
+        DateTime startDateTime = DateUtil.beginOfMonth(startDateTime1);
+        DateTime endDateTime = DateUtil.endOfMonth(endDateTime1);
+
+        // 指定开始日期到结束日期的天数
+        LocalDateTime day1 = LocalDateTimeUtil.of(startDateTime);
+        LocalDateTime day2 = LocalDateTimeUtil.of(endDateTime);
+        long between = ChronoUnit.MONTHS.between(day1, day2);
+        System.out.println("相差月数" + between);
+
+        ArrayList<MeterInfoVo> meterInfoVos = new ArrayList<>();
+
+        List<MeterPoint> meterPoints = meterPointService.list(new QueryWrapper<MeterPoint>().eq("windpowerstation_id", windId).eq("property", "CD"));
+
+        for (int i = 0; i <= between; i++) {
+            DateTime dateTime1 = DateUtil.offsetMonth(startDateTime, i);
+            DateTime dateTime2 = DateUtil.endOfMonth(dateTime1);
+
+            LocalDateTime day3 = LocalDateTimeUtil.of(dateTime1);
+            LocalDateTime day4 = LocalDateTimeUtil.of(dateTime2);
+            long betweenDay = ChronoUnit.DAYS.between(day3, day4);
+            System.out.println("这月相差天数:" + betweenDay);
+
+            for (MeterPoint meterPoint : meterPoints) {
+                System.out.println(meterPoint.getName());
+
+                MeterInfoVo meterInfoVo = new MeterInfoVo();
+                meterInfoVo.setDate(dateTime1);
+                meterInfoVo.setName(meterPoint.getName());
+
+                BigDecimal ydl = BigDecimal.valueOf(0);
+                System.out.println("ydl开始值" + ydl);
+
+                for (int j = 0; j <= betweenDay; j++) {
+                    System.out.println("J的值(第-1天)" + j);
+
+                    DateTime dateTime3 = DateUtil.offsetDay(dateTime1, j);
+
+                    MeterInfoBottomcode meterInfoBottomcode = meterInfoBottomcodeService.getOne(new QueryWrapper<MeterInfoBottomcode>().eq("code", meterPoint.getNemCode()).eq("start_time", dateTime3));
+
+                    if (meterInfoBottomcode != null) {
+                        ydl = ydl.add(meterInfoBottomcode.getDayValue());
+                        System.out.println("当月每天累加" + ydl);
+
+                        if (j == 0) {
+                            meterInfoVo.setStartCode(meterInfoBottomcode.getStartValue());
+                        }
+                        if (!(meterInfoBottomcode.getStartValue() == null)) {
+                            meterInfoVo.setEndCode(meterInfoBottomcode.getEndValue());
+                        }
+                    }
+                }
+                meterInfoVo.setRdl(ydl);
+                meterInfoVos.add(meterInfoVo);
+            }
+        }
+
+        return meterInfoVos;
+    }
+
+    public ArrayList<MeterInfoVo> getBottomInfoMonthByWindId1(String windId, String meterType, long startTime, long endTime) {
+
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format1 = simpleDateFormat.format(new Date(startTime));
+        String format2 = simpleDateFormat.format(new Date(endTime));
+
+        // 设置取值开始时间
+        DateTime startDateTime1 = DateUtil.parse(format1);
+        DateTime endDateTime1 = DateUtil.parse(format2);
+
+        DateTime startDateTime = DateUtil.beginOfMonth(startDateTime1);
+        DateTime endDateTime = DateUtil.endOfMonth(endDateTime1);
+
+        // 指定开始日期到结束日期的天数
+        LocalDateTime day1 = LocalDateTimeUtil.of(startDateTime);
+        LocalDateTime day2 = LocalDateTimeUtil.of(endDateTime);
+        long between = ChronoUnit.MONTHS.between(day1, day2);
+        System.out.println("相差月数" + between);
+
+        ArrayList<MeterInfoVo> meterInfoVos = new ArrayList<>();
+
+        List<MeterPoint> meterPoints = meterPointService.list(new QueryWrapper<MeterPoint>()
+                .eq("windpowerstation_id", windId)
+                .eq("property", "CD")
+                .eq("meter_type", meterType)
+        );
+
+        for (int i = 0; i <= between; i++) {
+            DateTime dateTime1 = DateUtil.offsetMonth(startDateTime, i);
+            DateTime dateTime2 = DateUtil.endOfMonth(dateTime1);
+
+            LocalDateTime day3 = LocalDateTimeUtil.of(dateTime1);
+            LocalDateTime day4 = LocalDateTimeUtil.of(dateTime2);
+            long betweenDay = ChronoUnit.DAYS.between(day3, day4);
+            System.out.println("这月相差天数:" + betweenDay);
+
+            for (MeterPoint meterPoint : meterPoints) {
+                System.out.println(meterPoint.getName());
+
+                MeterInfoVo meterInfoVo = new MeterInfoVo();
+                meterInfoVo.setDate(dateTime1);
+                meterInfoVo.setName(meterPoint.getName());
+
+                BigDecimal ydl = BigDecimal.valueOf(0);
+                System.out.println("ydl开始值" + ydl);
+
+                for (int j = 0; j <= betweenDay; j++) {
+                    System.out.println("J的值(第-1天)" + j);
+
+                    DateTime dateTime3 = DateUtil.offsetDay(dateTime1, j);
+
+                    MeterInfoBottomcode meterInfoBottomcode = meterInfoBottomcodeService.getOne(new QueryWrapper<MeterInfoBottomcode>().eq("code", meterPoint.getNemCode()).eq("start_time", dateTime3));
+
+                    if (meterInfoBottomcode != null) {
+                        ydl = ydl.add(meterInfoBottomcode.getDayValue());
+                        System.out.println("当月每天累加" + ydl);
+
+                        if (j == 0) {
+                            meterInfoVo.setStartCode(meterInfoBottomcode.getStartValue());
+                        }
+                        if (!(meterInfoBottomcode.getStartValue() == null)) {
+                            meterInfoVo.setEndCode(meterInfoBottomcode.getEndValue());
+                        }
+                    }
+                }
+                meterInfoVo.setRdl(ydl);
+                meterInfoVos.add(meterInfoVo);
+            }
+        }
+
+        return meterInfoVos;
+    }
+
+    public ArrayList<MeterInfoVo> getBottomInfoMonthByWindId(String windId, long startTime, long endTime) {
+
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format1 = simpleDateFormat.format(new Date(startTime));
+        String format2 = simpleDateFormat.format(new Date(endTime));
+
+        // 设置取值开始时间
+        DateTime startDateTime1 = DateUtil.parse(format1);
+        DateTime endDateTime1 = DateUtil.parse(format2);
+
+        DateTime startDateTime = DateUtil.beginOfMonth(startDateTime1);
+        DateTime endDateTime = DateUtil.endOfMonth(endDateTime1);
+
+        // 指定开始日期到结束日期的天数
+        LocalDateTime day1 = LocalDateTimeUtil.of(startDateTime);
+        LocalDateTime day2 = LocalDateTimeUtil.of(endDateTime);
+        long between = ChronoUnit.MONTHS.between(day1, day2);
+        long betweenDays = ChronoUnit.DAYS.between(day1, day2);
+        System.out.println("相差月数" + between);
+
+        ArrayList<MeterInfoVo> meterInfoVos = new ArrayList<>();
+
+        List<MeterPoint> meterPoints = meterPointService.list(new QueryWrapper<MeterPoint>()
+                .eq("windpowerstation_id", windId)
+                .like("property", "CD"));
+
+
+        // 批量查询MeterInfoCalculating数据
+        List<DateTime> dateTimes = new ArrayList<>();
+        for (int i = 0; i <= betweenDays; i++) {
+            DateTime dateTime4 = DateUtil.offsetDay(startDateTime, i);
+            dateTimes.add(dateTime4);
+        }
+
+        List<MeterInfoBottomcode> meterInfoBottomcodes = meterInfoBottomcodeService.list(new QueryWrapper<MeterInfoBottomcode>()
+                .in("start_time", dateTimes));
+
+
+        for (int i = 0; i <= between; i++) {
+            DateTime dateTime1 = DateUtil.offsetMonth(startDateTime, i);
+            DateTime dateTime2 = DateUtil.endOfMonth(dateTime1);
+
+            LocalDateTime day3 = LocalDateTimeUtil.of(dateTime1);
+            LocalDateTime day4 = LocalDateTimeUtil.of(dateTime2);
+            long betweenDay = ChronoUnit.DAYS.between(day3, day4);
+            System.out.println("这月相差天数:" + betweenDay);
+
+            for (MeterPoint meterPoint : meterPoints) {
+                System.out.println(meterPoint.getName());
+
+                MeterInfoVo meterInfoVo = new MeterInfoVo();
+                meterInfoVo.setDate(dateTime1);
+                meterInfoVo.setName(meterPoint.getName());
+
+                BigDecimal ydl = BigDecimal.valueOf(0);
+                System.out.println("ydl开始值" + ydl);
+
+                for (int j = 0; j <= betweenDay; j++) {
+                    System.out.println("J的值(第-1天)" + j);
+
+                    DateTime dateTime3 = DateUtil.offsetDay(dateTime1, j);
+
+                    MeterInfoBottomcode meterInfoBottomcode = findMeterInfoBottomcode(meterInfoBottomcodes, meterPoint.getNemCode(), dateTime3);
+
+
+                    if (meterInfoBottomcode != null) {
+                        if (j == 0) {
+                            meterInfoVo.setStartCode(meterInfoBottomcode.getStartValue());
+                        }
+                        ydl = ydl.add(meterInfoBottomcode.getDayValue());
+                        meterInfoVo.setEndCode(meterInfoBottomcode.getEndValue());
+                        System.out.println("当月每天累加" + ydl);
+                    }
+                }
+                meterInfoVo.setRdl(ydl);
+                meterInfoVos.add(meterInfoVo);
+            }
+        }
+
+        return meterInfoVos;
+    }
+
+    public ArrayList<MeterInfoVo> getBottomInfoMonthByWindId(String windId, String meterType, long startTime, long endTime) {
+
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format1 = simpleDateFormat.format(new Date(startTime));
+        String format2 = simpleDateFormat.format(new Date(endTime));
+
+        // 设置取值开始时间
+        DateTime startDateTime1 = DateUtil.parse(format1);
+        DateTime endDateTime1 = DateUtil.parse(format2);
+
+        DateTime startDateTime = DateUtil.beginOfMonth(startDateTime1);
+        DateTime endDateTime = DateUtil.endOfMonth(endDateTime1);
+
+        // 指定开始日期到结束日期的天数
+        LocalDateTime day1 = LocalDateTimeUtil.of(startDateTime);
+        LocalDateTime day2 = LocalDateTimeUtil.of(endDateTime);
+        long between = ChronoUnit.MONTHS.between(day1, day2);
+        long betweenDays = ChronoUnit.DAYS.between(day1, day2);
+        System.out.println("相差月数" + between);
+
+        ArrayList<MeterInfoVo> meterInfoVos = new ArrayList<>();
+
+        List<MeterPoint> meterPoints = meterPointService.list(new QueryWrapper<MeterPoint>()
+                .eq("windpowerstation_id", windId)
+                .like("property", "CD")
+                .eq("meter_type", meterType));
+
+
+        // 批量查询MeterInfoCalculating数据
+        List<DateTime> dateTimes = new ArrayList<>();
+        for (int i = 0; i <= betweenDays; i++) {
+            DateTime dateTime4 = DateUtil.offsetDay(startDateTime, i);
+            dateTimes.add(dateTime4);
+        }
+
+        List<MeterInfoBottomcode> meterInfoBottomcodes = meterInfoBottomcodeService.list(new QueryWrapper<MeterInfoBottomcode>()
+                .in("start_time", dateTimes));
+
+
+        for (int i = 0; i <= between; i++) {
+            DateTime dateTime1 = DateUtil.offsetMonth(startDateTime, i);
+            DateTime dateTime2 = DateUtil.endOfMonth(dateTime1);
+
+            LocalDateTime day3 = LocalDateTimeUtil.of(dateTime1);
+            LocalDateTime day4 = LocalDateTimeUtil.of(dateTime2);
+            long betweenDay = ChronoUnit.DAYS.between(day3, day4);
+            System.out.println("这月相差天数:" + betweenDay);
+
+            for (MeterPoint meterPoint : meterPoints) {
+                System.out.println(meterPoint.getName());
+
+                MeterInfoVo meterInfoVo = new MeterInfoVo();
+                meterInfoVo.setDate(dateTime1);
+                meterInfoVo.setName(meterPoint.getName());
+
+                BigDecimal ydl = BigDecimal.valueOf(0);
+                System.out.println("ydl开始值" + ydl);
+
+                for (int j = 0; j <= betweenDay; j++) {
+                    System.out.println("J的值(第-1天)" + j);
+
+                    DateTime dateTime3 = DateUtil.offsetDay(dateTime1, j);
+
+                    MeterInfoBottomcode meterInfoBottomcode = findMeterInfoBottomcode(meterInfoBottomcodes, meterPoint.getNemCode(), dateTime3);
+
+
+                    if (meterInfoBottomcode != null) {
+                        if (j == 0) {
+                            meterInfoVo.setStartCode(meterInfoBottomcode.getStartValue());
+                        }
+                        ydl = ydl.add(meterInfoBottomcode.getDayValue());
+                        meterInfoVo.setEndCode(meterInfoBottomcode.getEndValue());
+                        System.out.println("当月每天累加" + ydl);
+                    }
+
+                }
+                meterInfoVo.setRdl(ydl);
+                meterInfoVos.add(meterInfoVo);
+            }
+        }
+
+        return meterInfoVos;
+    }
+
+
+    // 辅助方法,根据日期和NemCode查找MeterInfoCalculating对象
+    @Nullable
+    private MeterInfoCalculating findMeterInfoCalculating(@NotNull List<MeterInfoCalculating> meterInfoCalculatings, String nemCode, DateTime date) {
+
+        for (MeterInfoCalculating meterInfoCalculating : meterInfoCalculatings) {
+            if (meterInfoCalculating.getCode().equals(nemCode) && DateUtil.isSameDay(new DateTime(meterInfoCalculating.getDate()), date)) {
+                return meterInfoCalculating;
+            }
+        }
+        return null;
+    }
+
+    @Nullable
+    private MeterInfoEquipment findMeterInfoEquipment(@NotNull List<MeterInfoEquipment> meterInfoEquipments, String nemCode, DateTime date) {
+        for (MeterInfoEquipment meterInfoEquipment : meterInfoEquipments) {
+            if (meterInfoEquipment.getEquipmentNemCode().equals(nemCode) && DateUtil.isSameDay(new DateTime(meterInfoEquipment.getDate()), date)) {
+                return meterInfoEquipment;
+            }
+        }
+        return null;
+    }
+
+    @Nullable
+    private MeterInfoBottomcode findMeterInfoBottomcode(@NotNull List<MeterInfoBottomcode> meterInfoBottomcodes, String nemCode, DateTime date) {
+        for (MeterInfoBottomcode meterInfoBottomcode : meterInfoBottomcodes) {
+            if (meterInfoBottomcode.getCode().equals(nemCode) && DateUtil.isSameDay(new DateTime(meterInfoBottomcode.getStartTime()), date)) {
+                return meterInfoBottomcode;
+            }
+        }
+        return null;
+    }
+
+
+}