Commit aa91ab63 authored by ZWT's avatar ZWT

feat(零碳): 长庆

1.长庆演示首页功能开发,新增查询井场/场站列表接口,添加接口文档并完成接口冒烟测试;
2.长庆演示首页功能开发,新增总览信息统计接口,添加接口文档并完成接口冒烟测试;
3.长庆演示首页功能开发,新增用能分析统计接口,添加接口文档并完成接口冒烟测试;
4.长庆演示首页功能开发,新增累计用电统计接口,添加接口文档并完成接口冒烟测试;
5.长庆演示首页功能开发,新增光伏实时监控统计接口,添加接口文档并完成接口冒烟测试;
6.长庆演示首页功能开发,新增先导实验井间开制度统计接口,添加接口文档并完成接口冒烟测试;
7.长庆演示首页功能开发,新增零碳井场收益分析统计接口,添加接口文档并完成接口冒烟测试;
8.长庆演示首页功能开发,新增零碳井场实时监控接口,添加接口文档并完成接口冒烟测试;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 5c732cb0
......@@ -49,6 +49,10 @@ public class SpaceOptimizeDurationDTO extends BaseModel implements Serializable
@TableField
private Integer firstStart;
@XText("优化日期")
@TableField
private Date optimizeDate;
@XText("开井时间")
@TableField(exist = false)
private Date openTime;
......
......@@ -10,6 +10,7 @@ import pps.core.common.entity.BaseModel;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.util.Date;
/**
* 中期间开优化井口制度记录
......@@ -55,4 +56,8 @@ public class SpaceOptimizeLongDurationEnt extends BaseModel implements Serializa
@XText("是否第一次启动(0_是;1_否)")
@TableField
private Integer firstStart;
@XText("优化日期")
@TableField
private Date optimizeDate;
}
......@@ -6,6 +6,7 @@ import pps.core.common.entity.BaseModel;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.util.Date;
/**
* 中期间开优化井口制度记录
......@@ -47,4 +48,8 @@ public class SpaceOptimizeLongDurationView extends BaseModel implements Serializ
@XText("是否第一次启动(0_是;1_否)")
@TableField
private Integer firstStart;
@XText("优化日期")
@TableField
private Date optimizeDate;
}
......@@ -7,6 +7,7 @@ import pps.core.common.entity.BaseModel;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.util.Date;
/**
* 短期间开开优化井口制度记录
......@@ -49,4 +50,8 @@ public class SpaceOptimizeMidDurationEnt extends BaseModel implements Serializab
@XText("是否第一次启动(0_是;1_否)")
@TableField
private Integer firstStart;
@XText("优化日期")
@TableField
private Date optimizeDate;
}
......@@ -6,6 +6,7 @@ import pps.core.common.entity.BaseModel;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.util.Date;
/**
* 短期间开开优化井口制度记录
......@@ -47,4 +48,8 @@ public class SpaceOptimizeMidDurationView extends BaseModel implements Serializa
@XText("是否第一次启动(0_是;1_否)")
@TableField
private Integer firstStart;
@XText("优化日期")
@TableField
private Date optimizeDate;
}
......@@ -7,6 +7,7 @@ import pps.core.common.entity.BaseModel;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.util.Date;
/**
* 极短期间开优化井口制度记录
......@@ -49,4 +50,8 @@ public class SpaceOptimizeShortDurationEnt extends BaseModel implements Serializ
@XText("是否第一次启动(0_是;1_否)")
@TableField
private Integer firstStart;
@XText("优化日期")
@TableField
private Date optimizeDate;
}
......@@ -55,6 +55,10 @@ public class SpaceOptimizeShortDurationView extends BaseModel implements Seriali
@TableField
private Integer firstStart;
@XText("优化日期")
@TableField
private Date optimizeDate;
/*------------------------------------------------------*/
@XText("组织ID")
......
......@@ -7,6 +7,7 @@ import pps.core.common.entity.BaseModel;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.util.Date;
/**
* 长期间开开优化井口制度记录
......@@ -49,4 +50,8 @@ public class SpaceOptimizeUltraDurationEnt extends BaseModel implements Serializ
@XText("是否第一次启动(0_是;1_否)")
@TableField
private Integer firstStart;
@XText("优化日期")
@TableField
private Date optimizeDate;
}
......@@ -6,6 +6,7 @@ import pps.core.common.entity.BaseModel;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.util.Date;
/**
* 长期间开开优化井口制度记录
......@@ -47,4 +48,8 @@ public class SpaceOptimizeUltraDurationView extends BaseModel implements Seriali
@XText("是否第一次启动(0_是;1_否)")
@TableField
private Integer firstStart;
@XText("优化日期")
@TableField
private Date optimizeDate;
}
......@@ -85,10 +85,12 @@ public class SpaceOptimizeBaseService {
}
//创建记录
String periodId = this.createOptimizePeriod(periodDTOList, detail.getId(), detail.getLineId(), BaseUtils.getExecutionCycleForCalibration(date, DateUtil.offsetDay(optimizeDeadline, -1)), optimizeDeadline);
for (int i = offset; i <= offset; i++) {
DateTime optimizeDate = DateUtil.offsetDay(date, i);
DynamicQueryPlantPredictedPowerInput powerInput = DynamicQueryPlantPredictedPowerInput.builder()
.plantIds(relation.getPlantIdsByLineIdMap().get(detail.getLineId()))
.startTime(date.toString(BusinessConstant.DATE_FORMAT_DAY))
.endTime(optimizeDeadline.toString(BusinessConstant.DATE_FORMAT_DAY))
.endTime(optimizeDate.toString(BusinessConstant.DATE_FORMAT_DAY))
.dateType(dateType)
.build();
switch (detail.getGridTypeKey()) {
......@@ -96,7 +98,7 @@ public class SpaceOptimizeBaseService {
case "1":
this.gridConnectedOptimization(context, wellheadDTOList, durationDTOList, unOptimizeDurationList,
relation.getWellheadsByInstitutionIdIdMap().get(detail.getId()), detail, monthNum, periodId,
powerInput
powerInput, optimizeDate
);
break;
//离网型优化
......@@ -105,9 +107,9 @@ public class SpaceOptimizeBaseService {
relation.getWellheadsByInstitutionIdIdMap().get(detail.getId()), relation.getStorageAvgMap(), detail, periodId,
DynamicQueryStoragePredictedPowerInput.builder()
.storageIds(relation.getStorageIdsByLineIdMap().get(detail.getLineId()))
.startTime(DateUtil.offsetDay(date, -offset).toString(BusinessConstant.DATE_FORMAT_DAY))
.endTime(DateUtil.offsetDay(optimizeDeadline, -offset).toString(BusinessConstant.DATE_FORMAT_DAY))
.build(), powerInput
.startTime(DateUtil.offsetDay(date, -i).toString(BusinessConstant.DATE_FORMAT_DAY))
.endTime(DateUtil.offsetDay(optimizeDeadline, -i).toString(BusinessConstant.DATE_FORMAT_DAY))
.build(), powerInput, optimizeDate
);
break;
default:
......@@ -115,6 +117,7 @@ public class SpaceOptimizeBaseService {
}
}
}
}
/**
* 获得生效中的基础间开
......@@ -190,19 +193,20 @@ public class SpaceOptimizeBaseService {
* @param monthNum 月份
* @param periodId 期间id
* @param plantPowerInput 电厂功率输入
* @param optimizeDate 优化日期
*/
public void gridConnectedOptimization(XContext context, List<SpaceOptimizeWellheadDTO> wellheadDTOList,
List<SpaceOptimizeDurationDTO> durationDTOList, List<SpaceOptimizeDurationDTO> unOptimizeDurationList,
List<SpaceInstitutionWellheadView> spaceWellheadList,
SpaceInstitutionDetailEnt detail, int monthNum, String periodId,
DynamicQueryPlantPredictedPowerInput plantPowerInput) {
DynamicQueryPlantPredictedPowerInput plantPowerInput, DateTime optimizeDate) {
//获取当前制度对应的光伏预测数据列表
Map<String, List<SpaceInstitutionDurationEnt>> durationMap = this.getDurationMap(context, detail.getId());
List<DynamicQueryPlantPredictedPowerOutput> avgPowerList = this.getAveragePowerGenerationListByPlantIds(context, plantPowerInput);
if (CollUtil.isEmpty(avgPowerList)) {
//没有预测数据都不优化
this.setUnOptimizeWellheadConfig(durationDTOList, unOptimizeDurationList, wellheadDTOList,
spaceWellheadList, durationMap, periodId);
spaceWellheadList, durationMap, periodId, optimizeDate);
return;
}
//取光伏出力峰值
......@@ -213,7 +217,7 @@ public class SpaceOptimizeBaseService {
Map<Boolean, List<SpaceInstitutionWellheadView>> wellheadViewMap = this.getWellheadViewList(spaceWellheadList, detail.getId());
//保存不需要优化的井口
this.setUnOptimizeWellheadConfig(durationDTOList, unOptimizeDurationList, wellheadDTOList,
wellheadViewMap.get(false), durationMap, periodId);
wellheadViewMap.get(false), durationMap, periodId, optimizeDate);
List<SpaceInstitutionWellheadView> wellheadViewList = wellheadViewMap.get(true);
if (CollUtil.isEmpty(wellheadViewList)) {
return;
......@@ -226,7 +230,7 @@ public class SpaceOptimizeBaseService {
if (powerMax.compareTo(wellheadTotalPower) >= BusinessConstant.ZERO) {
//---------------------------------绿电消纳策略---------------------------------
this.greenElectricityConsumptionStrategy(wellheadDTOList, unOptimizeDurationList, durationDTOList,
wellheadViewList, avgPowerList, durationMap, detail, periodId);
wellheadViewList, avgPowerList, durationMap, detail, periodId, optimizeDate);
} else {
//遍历井口,按发电功率大于等于光伏出力峰值条件分组
Map<Boolean, List<SpaceInstitutionWellheadView>> collect = this.getWellheadViewMapByPower(wellheadViewList, powerMax);
......@@ -237,17 +241,17 @@ public class SpaceOptimizeBaseService {
if (size == lowWellheadListSize) {
//---------------------------------消峰平谷策略---------------------------------
this.peakEliminationAndValleyLevelingStrategy(context, wellheadDTOList, unOptimizeDurationList, durationDTOList, wellheadViewList,
durationMap, detail, monthNum, periodId);
durationMap, detail, monthNum, periodId, optimizeDate);
}
//光伏出力峰值>=线路哪部分井口运行功率:满足的部分井口采用绿电消纳优先,不满足的井采用消峰平谷
else {
List<SpaceInstitutionWellheadView> highWellheadList = collect.get(true);
if (CollUtil.isNotEmpty(highWellheadList)) {
this.greenElectricityConsumptionStrategy(wellheadDTOList, unOptimizeDurationList, durationDTOList,
highWellheadList, avgPowerList, durationMap, detail, periodId);
highWellheadList, avgPowerList, durationMap, detail, periodId, optimizeDate);
}
this.peakEliminationAndValleyLevelingStrategy(context, wellheadDTOList, unOptimizeDurationList, durationDTOList,
lowWellheadList, durationMap, detail, monthNum, periodId);
lowWellheadList, durationMap, detail, monthNum, periodId, optimizeDate);
}
}
}
......@@ -265,11 +269,12 @@ public class SpaceOptimizeBaseService {
* @param periodId 期间id
* @param input 输入
* @param plantPowerInput 电厂功率输入
* @param optimizeDate 优化日期
*/
public void offGridOptimization(XContext context, List<SpaceOptimizeWellheadDTO> wellheadDTOList, List<SpaceOptimizeDurationDTO> durationDTOList,
List<SpaceOptimizeDurationDTO> unOptimizeDurationList, List<SpaceInstitutionWellheadView> spaceWellheadList,
Map<String, List<DynamicQueryBasePowerLineStorageViewOutput>> storageAvgMap, SpaceInstitutionDetailEnt detail, String periodId,
DynamicQueryStoragePredictedPowerInput input, DynamicQueryPlantPredictedPowerInput plantPowerInput) {
DynamicQueryStoragePredictedPowerInput input, DynamicQueryPlantPredictedPowerInput plantPowerInput, DateTime optimizeDate) {
//获取井口间开时间段
Map<String, List<SpaceInstitutionDurationEnt>> durationMap = this.getDurationMap(context, detail.getId());
//获取当前制度对应的光伏预测数据列表
......@@ -277,14 +282,14 @@ public class SpaceOptimizeBaseService {
if (CollUtil.isEmpty(avgPowerList)) {
//没有预测数据都不优化
this.setUnOptimizeWellheadConfig(durationDTOList, unOptimizeDurationList, wellheadDTOList,
spaceWellheadList, durationMap, periodId);
spaceWellheadList, durationMap, periodId, optimizeDate);
return;
}
//根据类型过滤井口:大间开,连抽井不优化
Map<Boolean, List<SpaceInstitutionWellheadView>> wellheadViewMap = this.getWellheadViewList(spaceWellheadList, detail.getId());
//保存不需要优化的井口
this.setUnOptimizeWellheadConfig(durationDTOList, unOptimizeDurationList, wellheadDTOList,
wellheadViewMap.get(false), durationMap, periodId);
wellheadViewMap.get(false), durationMap, periodId, optimizeDate);
List<SpaceInstitutionWellheadView> wellheadViewList = wellheadViewMap.get(true);
if (CollUtil.isEmpty(wellheadViewList)) {
return;
......@@ -310,7 +315,7 @@ public class SpaceOptimizeBaseService {
for (int w = 0, wellheadSize = wellheadViewList.size(); w < wellheadSize; w++) {
SpaceInstitutionWellheadView wellhead = wellheadViewList.get(w);
String wellheadId = wellhead.getWellheadId();
String recordId = this.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber(), wellhead.getStartSeq());
String recordId = this.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber(), wellhead.getStartSeq(), optimizeDate);
//取当前井口最大发电量
BigDecimal serviceRating = wellhead.getServiceRating();
List<SpaceInstitutionDurationEnt> durationConfigList = durationMap.get(wellheadId);
......@@ -320,7 +325,7 @@ public class SpaceOptimizeBaseService {
}
//保存原始记录
for (SpaceInstitutionDurationEnt durationEnt : durationConfigList) {
this.createUnOptimizeDuration(unOptimizeDurationList, durationEnt, periodId, recordId, wellheadId);
this.createUnOptimizeDuration(unOptimizeDurationList, durationEnt, periodId, recordId, wellheadId, optimizeDate);
}
totalOperatingPower = totalOperatingPower.add(serviceRating);
if (w == 0) {
......@@ -484,21 +489,21 @@ public class SpaceOptimizeBaseService {
if (openTime.compareTo(BusinessConstant.DATE_FLAG) < 0 && closeTime.compareTo(BusinessConstant.DATE_FLAG) > 0) {
this.createOptimizeDuration(durationDTOList, periodId, durationDTO.getRecordId(), durationDTO.getWellheadId(), BusinessConstant.PHOTOVOLTAIC,
openTime.toString(BusinessConstant.MINUTES_FORMAT), BusinessConstant.END_OF_DAY_TIME,
durationDTO.getFirstStart()
durationDTO.getFirstStart(), optimizeDate
);
this.createOptimizeDuration(durationDTOList, periodId, durationDTO.getRecordId(), durationDTO.getWellheadId(), BusinessConstant.PHOTOVOLTAIC,
BusinessConstant.START_OF_DAY_TIME, closeTime.toString(BusinessConstant.MINUTES_FORMAT),
durationDTO.getFirstStart()
durationDTO.getFirstStart(), optimizeDate
);
} else if (closeTime.compareTo(BusinessConstant.DATE_FLAG) == 0) {
this.createOptimizeDuration(durationDTOList, periodId, durationDTO.getRecordId(), durationDTO.getWellheadId(), BusinessConstant.PHOTOVOLTAIC,
openTime.toString(BusinessConstant.MINUTES_FORMAT), BusinessConstant.END_OF_DAY_TIME,
durationDTO.getFirstStart()
durationDTO.getFirstStart(), optimizeDate
);
} else {
this.createOptimizeDuration(durationDTOList, periodId, durationDTO.getRecordId(), durationDTO.getWellheadId(), BusinessConstant.PHOTOVOLTAIC,
openTime.toString(BusinessConstant.MINUTES_FORMAT), closeTime.toString(BusinessConstant.MINUTES_FORMAT),
durationDTO.getFirstStart()
durationDTO.getFirstStart(), optimizeDate
);
}
//-----------------------------------原始逻辑
......@@ -647,16 +652,18 @@ public class SpaceOptimizeBaseService {
* @param wellheadId 井口id
* @param wellNumber 井号
* @param startSeq 开始seq
* @param optimizeDate 优化日期
* @return {@link String}
*/
public String createOptimizeWellhead(List<SpaceOptimizeWellheadDTO> wellheadDTOList, String periodId,
String wellheadId, String wellNumber, Integer startSeq) {
String wellheadId, String wellNumber, Integer startSeq, DateTime optimizeDate) {
SpaceOptimizeWellheadDTO wellheadDTO = new SpaceOptimizeWellheadDTO();
BaseUtils.setBaseModelDefaultForJob(wellheadDTO);
wellheadDTO.setPeriodId(periodId);
wellheadDTO.setWellheadId(wellheadId);
wellheadDTO.setWellNumber(wellNumber);
wellheadDTO.setStartSeq(startSeq);
wellheadDTO.setOptimizeDate(optimizeDate);
wellheadDTOList.add(wellheadDTO);
return wellheadDTO.getId();
}
......@@ -669,13 +676,14 @@ public class SpaceOptimizeBaseService {
* @param periodId 期间id
* @param recordId 记录id
* @param wellheadId 井口id
* @param optimizeDate 优化时间
*/
public void createUnOptimizeDuration(List<SpaceOptimizeDurationDTO> unOptimizeDurationList,
SpaceInstitutionDurationEnt durationEnt,
String periodId, String recordId, String wellheadId) {
String periodId, String recordId, String wellheadId, DateTime optimizeDate) {
this.createDuration(unOptimizeDurationList, recordId, periodId, wellheadId, BusinessConstant.ONE,
durationEnt.getOpenWellTime(), durationEnt.getCloseWellTime(), null,
BusinessConstant.ONE);
BusinessConstant.ONE, optimizeDate);
}
/**
......@@ -689,12 +697,13 @@ public class SpaceOptimizeBaseService {
* @param openWellTime 开井时间
* @param endTimeString 结束时间字符串
* @param firstStart 是否第一次启动
* @param optimizeDate 优化时间
*/
public void createOptimizeDuration(List<SpaceOptimizeDurationDTO> durationDTOList, String periodId,
String recordId, String wellheadId, String generationTypeKey,
String openWellTime, String endTimeString, Integer firstStart) {
String openWellTime, String endTimeString, Integer firstStart, DateTime optimizeDate) {
this.createDuration(durationDTOList, recordId, periodId, wellheadId, BusinessConstant.ZERO,
openWellTime, endTimeString, generationTypeKey, firstStart);
openWellTime, endTimeString, generationTypeKey, firstStart, optimizeDate);
}
/**
......@@ -709,10 +718,11 @@ public class SpaceOptimizeBaseService {
* @param closeWellTime 关井时间
* @param generationTypeKey 生成类型密钥
* @param firstStart 是否第一次启动
* @param optimizeDate 优化时间
*/
public void createDuration(List<SpaceOptimizeDurationDTO> durationDTOList, String recordId,
String periodId, String wellheadId, Integer isOptimize, String openWellTime,
String closeWellTime, String generationTypeKey, Integer firstStart) {
String closeWellTime, String generationTypeKey, Integer firstStart, DateTime optimizeDate) {
SpaceOptimizeDurationDTO durationDTO = new SpaceOptimizeDurationDTO();
BaseUtils.setBaseModelDefaultForJob(durationDTO);
durationDTO.setRecordId(recordId);
......@@ -723,6 +733,7 @@ public class SpaceOptimizeBaseService {
durationDTO.setCloseWellTime(closeWellTime);
durationDTO.setGenerationTypeKey(generationTypeKey);
durationDTO.setFirstStart(firstStart);
durationDTO.setOptimizeDate(optimizeDate);
durationDTOList.add(durationDTO);
}
......@@ -739,11 +750,12 @@ public class SpaceOptimizeBaseService {
* @param durationMap 持续时间图
* @param detail 细节
* @param periodId 期间id
* @param optimizeDate 优化日期
*/
private void greenElectricityConsumptionStrategy(List<SpaceOptimizeWellheadDTO> wellheadDTOList, List<SpaceOptimizeDurationDTO> unOptimizeDurationList,
List<SpaceOptimizeDurationDTO> durationDTOList, List<SpaceInstitutionWellheadView> wellheadViewList,
List<DynamicQueryPlantPredictedPowerOutput> avgPowerList, Map<String, List<SpaceInstitutionDurationEnt>> durationMap,
SpaceInstitutionDetailEnt detail, String periodId) {
SpaceInstitutionDetailEnt detail, String periodId, DateTime optimizeDate) {
//时间差
int between = 0;
//启动间隔累积
......@@ -757,7 +769,7 @@ public class SpaceOptimizeBaseService {
for (int w = 0, wellheadSize = wellheadViewList.size(); w < wellheadSize; w++) {
SpaceInstitutionWellheadView wellhead = wellheadViewList.get(w);
String wellheadId = wellhead.getWellheadId();
String recordId = this.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber(), wellhead.getStartSeq());
String recordId = this.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber(), wellhead.getStartSeq(), optimizeDate);
//取当前井口最大发电量
BigDecimal serviceRating = wellhead.getServiceRating();
List<SpaceInstitutionDurationEnt> durationConfigList = durationMap.get(wellheadId);
......@@ -767,7 +779,7 @@ public class SpaceOptimizeBaseService {
}
//保存原始记录
for (SpaceInstitutionDurationEnt durationEnt : durationConfigList) {
this.createUnOptimizeDuration(unOptimizeDurationList, durationEnt, periodId, recordId, wellheadId);
this.createUnOptimizeDuration(unOptimizeDurationList, durationEnt, periodId, recordId, wellheadId, optimizeDate);
}
//累加
totalOperatingPower = totalOperatingPower.add(serviceRating);
......@@ -809,7 +821,7 @@ public class SpaceOptimizeBaseService {
DateTime endTimeOptimize = startTimeOptimize.offsetNew(DateField.MINUTE, startDuration);
this.createOptimizeDuration(durationDTOList, periodId, recordId, wellheadId, null,
startTimeOptimize.toString(BusinessConstant.MINUTES_FORMAT), endTimeOptimize.toString(BusinessConstant.MINUTES_FORMAT),
BusinessConstant.ZERO
BusinessConstant.ZERO, optimizeDate
);
firstStartTime = startTimeOptimize;
//计算时间偏移,取时间间隔(分钟)
......@@ -838,7 +850,7 @@ public class SpaceOptimizeBaseService {
DateTime endTimeOptimize = startTimeOptimize.offsetNew(DateField.MINUTE, openDuration);
this.createOptimizeDuration(durationDTOList, periodId, recordId, wellheadId, null,
startTimeOptimize.toString(BusinessConstant.MINUTES_FORMAT), BaseUtils.getEndTimeString(endTimeOptimize),
BusinessConstant.ZERO
BusinessConstant.ZERO, optimizeDate
);
//取时间间隔(分钟)
between = BaseUtils.getTimeDifferenceMinute(endTimeOptimize, endTime);
......@@ -854,25 +866,25 @@ public class SpaceOptimizeBaseService {
this.createOptimizeDuration(durationDTOList, periodId, recordId, wellheadId, null,
startOffset.toString(BusinessConstant.MINUTES_FORMAT),
BusinessConstant.END_OF_DAY_TIME,
BusinessConstant.ONE
BusinessConstant.ONE, optimizeDate
);
this.createOptimizeDuration(durationDTOList, periodId, recordId, wellheadId, null,
BusinessConstant.START_OF_DAY_TIME,
endOffset.toString(BusinessConstant.MINUTES_FORMAT),
BusinessConstant.ONE
BusinessConstant.ONE, optimizeDate
);
} else if (endOffset.compareTo(BusinessConstant.DATE_FLAG) == 0) {
this.createOptimizeDuration(durationDTOList, periodId, recordId, wellheadId, null,
startOffset.toString(BusinessConstant.MINUTES_FORMAT),
BusinessConstant.END_OF_DAY_TIME,
BusinessConstant.ONE
BusinessConstant.ONE, optimizeDate
);
} else {
//计算偏移
this.createOptimizeDuration(durationDTOList, periodId, recordId, wellheadId, null,
startOffset.toString(BusinessConstant.MINUTES_FORMAT),
endOffset.toString(BusinessConstant.MINUTES_FORMAT),
BusinessConstant.ONE
BusinessConstant.ONE, optimizeDate
);
}
}
......@@ -892,11 +904,12 @@ public class SpaceOptimizeBaseService {
* @param detail 细节
* @param monthNum 月份
* @param periodId id
* @param optimizeDate 优化日期
*/
private void peakEliminationAndValleyLevelingStrategy(XContext context, List<SpaceOptimizeWellheadDTO> wellheadDTOList, List<SpaceOptimizeDurationDTO> unOptimizeDurationList,
List<SpaceOptimizeDurationDTO> durationDTOList, List<SpaceInstitutionWellheadView> wellheadViewList,
Map<String, List<SpaceInstitutionDurationEnt>> durationMap, SpaceInstitutionDetailEnt detail,
int monthNum, String periodId) {
int monthNum, String periodId, DateTime optimizeDate) {
//判断是否第一口井
boolean isFirstWellhead;
//时间差
......@@ -910,7 +923,7 @@ public class SpaceOptimizeBaseService {
for (int w = 0, wellheadSize = wellheadViewList.size(); w < wellheadSize; w++) {
SpaceInstitutionWellheadView wellhead = wellheadViewList.get(w);
String wellheadId = wellhead.getWellheadId();
String recordId = this.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber(), wellhead.getStartSeq());
String recordId = this.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber(), wellhead.getStartSeq(), optimizeDate);
List<SpaceInstitutionDurationEnt> durationConfigList = durationMap.get(wellheadId);
if (CollUtil.isEmpty(durationConfigList)) {
//没有设置时间段,无法优化
......@@ -918,7 +931,7 @@ public class SpaceOptimizeBaseService {
}
//保存原始记录
for (SpaceInstitutionDurationEnt durationEnt : durationConfigList) {
this.createUnOptimizeDuration(unOptimizeDurationList, durationEnt, periodId, recordId, wellheadId);
this.createUnOptimizeDuration(unOptimizeDurationList, durationEnt, periodId, recordId, wellheadId, optimizeDate);
}
if (w == 0) {
//第一个井口
......@@ -979,7 +992,7 @@ public class SpaceOptimizeBaseService {
DateTime endTimeOptimize = firstStartTime.offsetNew(DateField.MINUTE, startDuration);
this.createOptimizeDuration(durationDTOList, periodId, recordId, wellheadId, null,
startTimeString, endTimeOptimize.toString(BusinessConstant.MINUTES_FORMAT),
BusinessConstant.ZERO
BusinessConstant.ZERO, optimizeDate
);
//取时间间隔(分钟)
between = BaseUtils.getTimeDifferenceMinute(endTimeOptimize, endTime);
......@@ -992,7 +1005,7 @@ public class SpaceOptimizeBaseService {
between = BaseUtils.getTimeDifferenceMinute(endTimeOffset, endTime);
this.createOptimizeDuration(durationDTOList, periodId, recordId, wellheadId, null,
startTimeOffset.toString(BusinessConstant.MINUTES_FORMAT), endTimeOffset.toString(BusinessConstant.MINUTES_FORMAT),
BusinessConstant.ONE
BusinessConstant.ONE, optimizeDate
);
}
} else {
......@@ -1003,25 +1016,25 @@ public class SpaceOptimizeBaseService {
this.createOptimizeDuration(durationDTOList, periodId, recordId, wellheadId, null,
startOffset.toString(BusinessConstant.MINUTES_FORMAT),
BusinessConstant.END_OF_DAY_TIME,
BusinessConstant.ONE
BusinessConstant.ONE, optimizeDate
);
this.createOptimizeDuration(durationDTOList, periodId, recordId, wellheadId, null,
BusinessConstant.START_OF_DAY_TIME,
endOffset.toString(BusinessConstant.MINUTES_FORMAT),
BusinessConstant.ONE
BusinessConstant.ONE, optimizeDate
);
} else if (endOffset.compareTo(BusinessConstant.DATE_FLAG) == 0) {
this.createOptimizeDuration(durationDTOList, periodId, recordId, wellheadId, null,
startOffset.toString(BusinessConstant.MINUTES_FORMAT),
BusinessConstant.END_OF_DAY_TIME,
BusinessConstant.ONE
BusinessConstant.ONE, optimizeDate
);
} else {
//计算偏移
this.createOptimizeDuration(durationDTOList, periodId, recordId, wellheadId, null,
startOffset.toString(BusinessConstant.MINUTES_FORMAT),
endOffset.toString(BusinessConstant.MINUTES_FORMAT),
BusinessConstant.ONE
BusinessConstant.ONE, optimizeDate
);
}
}
......@@ -1038,14 +1051,15 @@ public class SpaceOptimizeBaseService {
* @param unOptimizeWellheadList 取消优化井口列表
* @param durationMap 持续时间图
* @param periodId 期间id
* @param optimizeDate 优化日期
*/
private void setUnOptimizeWellheadConfig(List<SpaceOptimizeDurationDTO> durationDTOList, List<SpaceOptimizeDurationDTO> unOptimizeDurationList,
List<SpaceOptimizeWellheadDTO> wellheadDTOList, List<SpaceInstitutionWellheadView> unOptimizeWellheadList,
Map<String, List<SpaceInstitutionDurationEnt>> durationMap, String periodId) {
Map<String, List<SpaceInstitutionDurationEnt>> durationMap, String periodId, DateTime optimizeDate) {
if (CollUtil.isNotEmpty(unOptimizeWellheadList)) {
for (SpaceInstitutionWellheadView wellhead : unOptimizeWellheadList) {
String wellheadId = wellhead.getWellheadId();
String recordId = this.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber(), wellhead.getStartSeq());
String recordId = this.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber(), wellhead.getStartSeq(), optimizeDate);
switch (wellhead.getIntervalTypeKey()) {
//小间开(不优化)
case "0":
......@@ -1055,10 +1069,10 @@ public class SpaceOptimizeBaseService {
//初始化未优化间开
List<SpaceInstitutionDurationEnt> durationList = durationMap.get(wellheadId);
for (SpaceInstitutionDurationEnt durationEnt : durationList) {
this.createUnOptimizeDuration(unOptimizeDurationList, durationEnt, periodId, recordId, wellheadId);
this.createUnOptimizeDuration(unOptimizeDurationList, durationEnt, periodId, recordId, wellheadId, optimizeDate);
this.createOptimizeDuration(durationDTOList, periodId, recordId, wellheadId, null,
durationEnt.getOpenWellTime(), durationEnt.getCloseWellTime(),
BusinessConstant.ONE
BusinessConstant.ONE, optimizeDate
);
}
break;
......@@ -1066,22 +1080,22 @@ public class SpaceOptimizeBaseService {
case "1":
//创建间开记录(全开)
this.createDuration(unOptimizeDurationList, recordId, periodId, wellheadId, BusinessConstant.ONE, BusinessConstant.START_OF_DAY_TIME, BusinessConstant.END_OF_DAY_TIME, null,
BusinessConstant.ONE);
BusinessConstant.ONE, optimizeDate);
this.createDuration(durationDTOList, recordId, periodId, wellheadId, BusinessConstant.ZERO, BusinessConstant.START_OF_DAY_TIME, BusinessConstant.END_OF_DAY_TIME, null,
BusinessConstant.ONE);
BusinessConstant.ONE, optimizeDate);
break;
default:
if (StringUtils.equals(wellhead.getRunTypeKey(), BusinessConstant.CONTINUOUS_PUMPING_WELL)) {
this.createDuration(unOptimizeDurationList, recordId, periodId, wellheadId, BusinessConstant.ONE, BusinessConstant.START_OF_DAY_TIME, BusinessConstant.END_OF_DAY_TIME, null,
BusinessConstant.ONE);
BusinessConstant.ONE, optimizeDate);
this.createDuration(durationDTOList, recordId, periodId, wellheadId, BusinessConstant.ZERO, BusinessConstant.START_OF_DAY_TIME, BusinessConstant.END_OF_DAY_TIME, null,
BusinessConstant.ONE);
BusinessConstant.ONE, optimizeDate);
} else {
//未配置全关
this.createDuration(unOptimizeDurationList, recordId, periodId, wellheadId, BusinessConstant.ONE, BusinessConstant.START_OF_DAY_TIME, BusinessConstant.START_OF_DAY_TIME, null,
BusinessConstant.ONE);
BusinessConstant.ONE, optimizeDate);
this.createDuration(durationDTOList, recordId, periodId, wellheadId, BusinessConstant.ZERO, BusinessConstant.START_OF_DAY_TIME, BusinessConstant.START_OF_DAY_TIME, null,
BusinessConstant.ONE);
BusinessConstant.ONE, optimizeDate);
}
}
}
......
......@@ -27,7 +27,7 @@
<insert id="longWellheadBatchInsertList" parameterType="list">
INSERT INTO space_optimize_long_wellhead ( id, create_by_id, create_by_name, create_time,
modify_by_id, modify_by_name, modify_time, long_period_id, wellhead_id, well_number, start_seq)
modify_by_id, modify_by_name, modify_time, long_period_id, wellhead_id, well_number, start_seq, optimize_date)
VALUES
<foreach collection="list" item="item" separator=",">
(
......@@ -41,7 +41,8 @@
#{item.periodId},
#{item.wellheadId},
#{item.wellNumber},
#{item.startSeq}
#{item.startSeq},
#{item.optimizeDate}
)
</foreach>
</insert>
......@@ -62,7 +63,7 @@
generation_type_key,
open_well_time,
close_well_time,
first_start
first_start, optimize_date
)
VALUES
<foreach collection="list" item="item" separator=",">
......@@ -88,7 +89,8 @@
</choose>
#{item.openWellTime},
#{item.closeWellTime},
#{item.firstStart}
#{item.firstStart},
#{item.optimizeDate}
)
</foreach>
</insert>
......@@ -118,7 +120,7 @@
<insert id="midWellheadBatchInsertList" parameterType="list">
INSERT INTO space_optimize_mid_wellhead ( id, create_by_id, create_by_name, create_time,
modify_by_id, modify_by_name, modify_time, mid_period_id, wellhead_id, well_number, start_seq)
modify_by_id, modify_by_name, modify_time, mid_period_id, wellhead_id, well_number, start_seq, optimize_date)
VALUES
<foreach collection="list" item="item" separator=",">
(
......@@ -132,7 +134,8 @@
#{item.periodId},
#{item.wellheadId},
#{item.wellNumber},
#{item.startSeq}
#{item.startSeq},
#{item.optimizeDate}
)
</foreach>
</insert>
......@@ -153,7 +156,7 @@
generation_type_key,
open_well_time,
close_well_time,
first_start
first_start, optimize_date
)
VALUES
<foreach collection="list" item="item" separator=",">
......@@ -179,7 +182,8 @@
</choose>
#{item.openWellTime},
#{item.closeWellTime},
#{item.firstStart}
#{item.firstStart},
#{item.optimizeDate}
)
</foreach>
</insert>
......@@ -207,7 +211,7 @@
<insert id="shortWellheadBatchInsertList" parameterType="list">
INSERT INTO space_optimize_short_wellhead (id, create_by_id, create_by_name, create_time, modify_by_id,
modify_by_name, modify_time, short_period_id, wellhead_id, well_number, start_seq)
modify_by_name, modify_time, short_period_id, wellhead_id, well_number, start_seq, optimize_date)
VALUES
<foreach collection="list" item="item" separator=",">
(
......@@ -221,7 +225,8 @@
#{item.periodId},
#{item.wellheadId},
#{item.wellNumber},
#{item.startSeq}
#{item.startSeq},
#{item.optimizeDate}
)
</foreach>
</insert>
......@@ -229,7 +234,7 @@
<insert id="shortDurationBatchInsertList" parameterType="list">
INSERT INTO space_optimize_short_duration (id, create_by_id, create_by_name, create_time,
modify_by_id, modify_by_name, modify_time, record_id, short_period_id, wellhead_id, is_optimize,
generation_type_key, open_well_time, close_well_time, first_start)
generation_type_key, open_well_time, close_well_time, first_start, optimize_date)
VALUES
<foreach collection="list" item="item" separator=",">
(
......@@ -254,7 +259,8 @@
</choose>
#{item.openWellTime},
#{item.closeWellTime},
#{item.firstStart}
#{item.firstStart},
#{item.optimizeDate}
)
</foreach>
</insert>
......@@ -284,7 +290,7 @@
<insert id="ultraWellheadBatchInsertList" parameterType="list">
INSERT INTO space_optimize_ultra_wellhead ( id, create_by_id, create_by_name, create_time,
modify_by_id, modify_by_name, modify_time, ultra_period_id, wellhead_id, well_number, start_seq)
modify_by_id, modify_by_name, modify_time, ultra_period_id, wellhead_id, well_number, start_seq, optimize_date)
VALUES
<foreach collection="list" item="item" separator=",">
(
......@@ -298,7 +304,8 @@
#{item.periodId},
#{item.wellheadId},
#{item.wellNumber},
#{item.startSeq}
#{item.startSeq},
#{item.optimizeDate}
)
</foreach>
</insert>
......@@ -319,7 +326,7 @@
generation_type_key,
open_well_time,
close_well_time,
first_start
first_start, optimize_date
)
VALUES
<foreach collection="list" item="item" separator=",">
......@@ -345,7 +352,8 @@
</choose>
#{item.openWellTime},
#{item.closeWellTime},
#{item.firstStart}
#{item.firstStart},
#{item.optimizeDate}
)
</foreach>
</insert>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment