|
@@ -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;
|
|
|
}
|
|
|
}
|
|
|
}
|