fanxiaoyu 7 місяців тому
батько
коміт
16b7b14a39

+ 32 - 15
cpp-admin/src/main/java/com/cpp/web/service/electricityRestriction/impl/ElectricityRestrictionServiceImpl.java

@@ -13,9 +13,7 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 
@@ -68,9 +66,11 @@ public class ElectricityRestrictionServiceImpl implements ElectricityRestriction
                 if (collectList.size() > 0) {
                     ElectricityRestrictionDto electricityRestrictionDto = new ElectricityRestrictionDto();
                     // 总限电量
-                    BigDecimal totalPowerLimit = collectList.stream().map(PowerStationStatusData::getBlockedCapacity).reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal(12), 2, RoundingMode.HALF_UP);
+                    BigDecimal ableValueAdd = collectList.stream().map(PowerStationStatusData::getAbleValue).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    BigDecimal realValueAdd = collectList.stream().map(PowerStationStatusData::getRealValue).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    BigDecimal offSiteObstructed = ableValueAdd.subtract(realValueAdd);
                     electricityRestrictionDto.setTime(s);
-                    electricityRestrictionDto.setTotalPowerLimit(totalPowerLimit.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));
@@ -90,26 +90,43 @@ public class ElectricityRestrictionServiceImpl implements ElectricityRestriction
      * @return
      */
     public String mergeTime(List<PowerStationStatusData> list) {
+        // 根据时间升序
+        Collections.sort(list, new Comparator<PowerStationStatusData>() {
+            @Override
+            public int compare(PowerStationStatusData b1, PowerStationStatusData b2) {
+                return b1.getTime().compareTo(b2.getTime());
+            }
+        });
         // 检查并拼接连续的日期
         StringBuilder result = new StringBuilder();
         Date prevDate = null;
         for (int i = 0; i < list.size(); i++) {
-            Date finalTime = list.get(i).getTime();
+             Date calculateTime = list.get(i).getTime();
+            Date finalTime = new Date(list.get(i).getTime().getTime()-5*60*1000l);
             if (null == prevDate) {
-                prevDate = finalTime;
-                result.append(formatDate.format(finalTime) + "~");
+                if (i == list.size()-1){
+                    prevDate = calculateTime;
+                    result.append(formatDate.format(finalTime) + "~").append(formatDate.format(calculateTime) + ";");;
+                }else {
+                    prevDate = calculateTime;
+                    result.append(formatDate.format(finalTime) + "~");
+                }
             } else {
-                if (DateTimeUtil.isMinutesDifference(finalTime, prevDate, 5L)) {
-                    prevDate = finalTime;
+                if (DateTimeUtil.isMinutesDifference(calculateTime, prevDate, 5L)) {
+                    prevDate = calculateTime;
                     if (i == list.size() - 1) {
-                        result.append(formatDate.format(finalTime) + ";");
+                        result.append(formatDate.format(calculateTime) + ";");
                     }
                 } else if (i == list.size() - 1) {
-                    result.append(formatDate.format(list.get(i - 1).getTime()) + ";").append(formatDate.format(finalTime) + "~").append(formatDate.format(finalTime) + ";");
-                    prevDate = finalTime;
+                    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;
+                    }
                 } else {
-                    result.append(formatDate.format(list.get(i - 1).getTime()) + ";").append(formatDate.format(finalTime) + "~");
-                    prevDate = finalTime;
+                    result.append(formatDate.format(prevDate) + ";").append(formatDate.format(finalTime) + "~");
+                    prevDate = calculateTime;
                 }
             }
         }

+ 6 - 0
cpp-ui/src/views/statistics/electricityRestriction/index.vue

@@ -11,6 +11,7 @@
           end-placeholder="结束日期"
           :default-time="['00:00:00', '23:59:59']"
           popper-class="cpp-popper"
+          :picker-options="pickerOptions"
         />
       </el-form-item>
       <el-form-item label="场站名称">
@@ -81,6 +82,11 @@ export default {
       tableData: [],
       loading: false,
       electricFieldTypeEnum: '',
+      pickerOptions: {
+        disabledDate: (time) => {
+          return time.getTime() > new Date(new Date().toLocaleDateString()).getTime()+24 * 60 * 60 * 1000 -1
+        }
+      },
     }
   },
   created() {