Forráskód Böngészése

限电统计查询跨天调整

fanxiaoyu 4 hónapja
szülő
commit
f08c1abc41

+ 27 - 12
cpp-admin/src/main/java/com/cpp/web/service/electricityRestriction/impl/ElectricityRestrictionServiceImpl.java

@@ -33,7 +33,7 @@ public class ElectricityRestrictionServiceImpl implements ElectricityRestriction
     public List getElectricityRestriction(Date startTime, Date endTime, String stationCode) {
         List<ElectricField> electricFieldList;
         List<ElectricityRestrictionDto> list = new ArrayList<>();
-        List<PowerStationStatusData> powerStationStatusDataList = powerStationStatusDataService.findByTimeBetweenAndStationCode(startTime, endTime, stationCode);
+        List<PowerStationStatusData> powerStationStatusDataList = powerStationStatusDataService.findByTimeBetweenAndStationCode(startTime, new Date(endTime.getTime() + 1000L), stationCode);
 
         if (null == stationCode) {
             electricFieldList = electricFieldService.list();
@@ -62,7 +62,15 @@ public class ElectricityRestrictionServiceImpl implements ElectricityRestriction
         if (null != powerStationStatusDataList && powerStationStatusDataList.size() > 0) {
             List<String> dayList = DateTimeUtil.getDatesInRange(startTime, endTime);
             for (String s : dayList) {
-                List<PowerStationStatusData> collectList = powerStationStatusDataList.stream().filter(f -> dateFormat.format(f.getTime()).equals(s)).collect(Collectors.toList());
+                List<PowerStationStatusData> collectList = powerStationStatusDataList.stream().filter(f -> dateFormat.format(f.getTime()).equals(s) && !formatDate.format(f.getTime()).equals("00:00")).collect(Collectors.toList());
+                // 判断下一天00:00数据是否限电
+                List<PowerStationStatusData> dataList = powerStationStatusDataList.stream().filter(f -> f.getTime().getTime() == DateTimeUtil.getDayStartTime(startTime.getTime() + 24 * 60 * 60 * 1000L).getTime()).collect(Collectors.toList());
+                if (dataList.size() > 0) {
+                    PowerStationStatusData powerStationStatusData = new PowerStationStatusData();
+                    powerStationStatusData = dataList.get(0);
+                    powerStationStatusData.setTime(new Date(startTime.getTime() + 24 * 60 * 60 * 1000L - 60*1000L));
+                    collectList.add(powerStationStatusData);
+                }
                 if (collectList.size() > 0) {
                     ElectricityRestrictionDto electricityRestrictionDto = new ElectricityRestrictionDto();
                     // 总限电量
@@ -70,7 +78,7 @@ public class ElectricityRestrictionServiceImpl implements ElectricityRestriction
                     BigDecimal realValueAdd = collectList.stream().map(PowerStationStatusData::getRealValue).reduce(BigDecimal.ZERO, BigDecimal::add);
                     BigDecimal offSiteObstructed = ableValueAdd.subtract(realValueAdd);
                     electricityRestrictionDto.setTime(s);
-                    electricityRestrictionDto.setTotalPowerLimit(offSiteObstructed.divide(new BigDecimal(12),2,RoundingMode.HALF_UP));
+                    electricityRestrictionDto.setTotalPowerLimit(offSiteObstructed.divide(new BigDecimal(12), 2, RoundingMode.HALF_UP));
                     // 限电时长
                     electricityRestrictionDto.setDuration(new BigDecimal(collectList.size()).divide(new BigDecimal(12), 2, RoundingMode.HALF_UP).doubleValue());
                     electricityRestrictionDto.setTimeSlot(mergeTime(collectList));
@@ -101,26 +109,33 @@ public class ElectricityRestrictionServiceImpl implements ElectricityRestriction
         StringBuilder result = new StringBuilder();
         Date prevDate = null;
         for (int i = 0; i < list.size(); i++) {
-             Date calculateTime = list.get(i).getTime();
-            Date finalTime = new Date(list.get(i).getTime().getTime()-5*60*1000l);
+            Date calculateTime = list.get(i).getTime();
+            Date finalTime;
+            if (formatDate.format(list.get(i).getTime()).equals("23:59")){
+                finalTime= new Date(list.get(i).getTime().getTime() - 4 * 60 * 1000l);
+            }else {
+                finalTime = new Date(list.get(i).getTime().getTime() - 5 * 60 * 1000l);
+            }
+
             if (null == prevDate) {
-                if (i == list.size()-1){
+                if (i == list.size() - 1) {
                     prevDate = calculateTime;
-                    result.append(formatDate.format(finalTime) + "~").append(formatDate.format(calculateTime) + ";");;
-                }else {
+                    result.append(formatDate.format(finalTime) + "~").append(formatDate.format(calculateTime) + ";");
+                    ;
+                } else {
                     prevDate = calculateTime;
                     result.append(formatDate.format(finalTime) + "~");
                 }
             } else {
-                if (DateTimeUtil.isMinutesDifference(calculateTime, prevDate, 5L)) {
+                if ( formatDate.format(calculateTime).equals("23:59")?DateTimeUtil.isMinutesDifference(calculateTime, prevDate, 4L) :DateTimeUtil.isMinutesDifference(calculateTime, prevDate, 5L)) {
                     prevDate = calculateTime;
                     if (i == list.size() - 1) {
                         result.append(formatDate.format(calculateTime) + ";");
                     }
                 } else if (i == list.size() - 1) {
-                    if (!DateTimeUtil.isMinutesDifference(calculateTime, prevDate, 5L)){
-                        result.append(formatDate.format(prevDate) + ";").append(formatDate.format(finalTime) + "~").append(formatDate.format(calculateTime)+";");
-                    }else {
+                    if (!DateTimeUtil.isMinutesDifference(calculateTime, prevDate, 5L)) {
+                        result.append(formatDate.format(prevDate) + ";").append(formatDate.format(finalTime) + "~").append(formatDate.format(calculateTime) + ";");
+                    } else {
                         result.append(formatDate.format(calculateTime) + ";");
                         prevDate = calculateTime;
                     }