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