Commit a6853b3a authored by ZWT's avatar ZWT

feat(吉林演示): 松原

1.修改风电站运行状态接口,增加模拟实际发电功率处理逻辑,完成接口冒烟测试;
2.修改天气数据处理定时任务,解决晚上十一点半天气预报数据处理异常问题,修改风资源预测数据和光伏资源预测数据时间处理逻辑,完成接口冒烟测试;
3.修改风机预测数据模块相关功能接口,增加判断当前部署环境逻辑,解决查询全量数据问题;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 9cd3c0d2
......@@ -8,13 +8,12 @@ import pps.core.base.entity.ThirdWindPowerGenerationUpdateView;
import pps.core.base.entity.ThirdWindPowerGenerationView;
import pps.core.base.mapper.ThirdWindPowerGenerationUpdateViewMapper;
import pps.core.base.mapper.ThirdWindPowerGenerationViewMapper;
import pps.core.base.service.data.config_oil_field.GetConfigOilFieldOutput;
import pps.core.base.utils.ServiceUtil;
import pps.core.common.utils.BaseUtils;
import xstartup.annotation.XService;
import xstartup.base.XContext;
import xstartup.base.util.XCopyUtils;
import xstartup.data.XServiceResult;
import xstartup.data.XSingleResult;
import java.util.ArrayList;
import java.util.List;
......@@ -49,9 +48,7 @@ public class ThirdWindPowerGenerationCloudServiceImpl implements IThirdWindPower
List<ThirdWindPowerGenerationView> batchList = new ArrayList<>(list.size() * 2);
List<ThirdWindPowerGenerationUpdateView> batchUpdateList = new ArrayList<>(list.size());
//查当前环境
XSingleResult<GetConfigOilFieldOutput> result = context.getBean(ConfigOilFieldService.class).getCurrentConfig(context);
result.throwIfFail();
String systemSource = result.getResult().getOilFieldCode();
String systemSource = ServiceUtil.getOilFieldCode(context);
ThirdWindPowerGenerationView copy;
for (ThirdWindPowerGenerationView thirdWindPowerGenerationView : list) {
thirdWindPowerGenerationView.setSystemSource(systemSource);
......
......@@ -113,9 +113,6 @@ public class WindPredictionFutureService {
if (CollUtil.isEmpty(turbineList)) {
return XSingleResult.success(new GetStationPowerGenerationOutput());
}
List<String> collect = turbineList.stream()
.map(BaseWindTurbineEnt::getStationName)
.collect(Collectors.toList());
DateTime now = DateUtil.date();
DateTime beginOfMonth = DateUtil.beginOfMonth(now);
DateTime endOfMonth = DateUtil.endOfMonth(now);
......@@ -148,7 +145,9 @@ public class WindPredictionFutureService {
DateUtil.offset(beginOfYear, DateField.YEAR, -1), DateUtil.offset(endOfYear, DateField.YEAR, -1));
//统计
ThirdWindPowerGenerationUpdateViewMapper viewMapper = context.getBean(ThirdWindPowerGenerationUpdateViewMapper.class);
ThirdWindPowerGenerationUpdateView stationedPowerGeneration = viewMapper.stationPowerGeneration(collect, dateList);
ThirdWindPowerGenerationUpdateView stationedPowerGeneration = viewMapper.stationPowerGeneration(turbineList.stream()
.map(BaseWindTurbineEnt::getId)
.collect(Collectors.toList()), dateList);
return XSingleResult.success(GetStationPowerGenerationOutput.builder()
.dailyGeneration(stationedPowerGeneration.getTodayPower())
.monthGeneration(stationedPowerGeneration.getMonthPower())
......@@ -200,6 +199,7 @@ public class WindPredictionFutureService {
.groupBy("collect_time")
.lambda()
.in(ThirdWindPowerGenerationEnt::getStationId, stationIds)
.eq(ThirdWindPowerGenerationEnt::getSystemSource, ServiceUtil.getOilFieldCode(context))
.between(ThirdWindPowerGenerationEnt::getCollectTime, startTime, endTime)
);
Map<Date, BigDecimal> powerMap;
......@@ -264,8 +264,10 @@ public class WindPredictionFutureService {
return XSingleResult.success(output);
}
List<String> collect = turbineList.stream()
.map(BaseWindTurbineEnt::getStationName)
.map(BaseWindTurbineEnt::getId)
.collect(Collectors.toList());
//当前环境
String oilFieldCode = ServiceUtil.getOilFieldCode(context);
ThirdWindPowerGenerationUpdateMapper mapper = context.getBean(ThirdWindPowerGenerationUpdateMapper.class);
//确定时间范围
DateTime beginTime, endTime;
......@@ -280,7 +282,8 @@ public class WindPredictionFutureService {
.groupBy("DAY( collect_time )")
.lambda()
.between(ThirdWindPowerGenerationUpdateEnt::getCollectTime, beginTime, endTime)
.in(ThirdWindPowerGenerationUpdateEnt::getStationName, collect)
.in(ThirdWindPowerGenerationUpdateEnt::getStationId, collect)
.eq(ThirdWindPowerGenerationUpdateEnt::getSystemSource, oilFieldCode)
).stream()
.collect(Collectors.toMap(ThirdWindPowerGenerationUpdateEnt::getActualWindDirection, ThirdWindPowerGenerationUpdateEnt::getActualWindSpeed));
//月度
......@@ -301,7 +304,8 @@ public class WindPredictionFutureService {
.groupBy("MONTH( collect_time )")
.lambda()
.between(ThirdWindPowerGenerationUpdateEnt::getCollectTime, beginTime, endTime)
.in(ThirdWindPowerGenerationUpdateEnt::getStationName, collect)
.in(ThirdWindPowerGenerationUpdateEnt::getStationId, collect)
.eq(ThirdWindPowerGenerationUpdateEnt::getSystemSource, oilFieldCode)
).stream()
.collect(Collectors.toMap(ThirdWindPowerGenerationUpdateEnt::getActualWindDirection, ThirdWindPowerGenerationUpdateEnt::getActualWindSpeed));
//年度
......@@ -315,12 +319,14 @@ public class WindPredictionFutureService {
);
}
}
//风速统计
ThirdWindPowerGenerationUpdateEnt windSpeed = mapper.selectOne(new QueryWrapper<ThirdWindPowerGenerationUpdateEnt>()
.select("IFNULL( MAX( actual_wind_speed ), 0 ) AS max_wind_speed",
"IFNULL( MIN( actual_wind_speed ), 0 ) AS min_wind_speed",
"IFNULL( AVG( actual_wind_speed ), 0 ) AS avg_wind_speed")
.lambda()
.between(ThirdWindPowerGenerationUpdateEnt::getCollectTime, beginTime, endTime)
.eq(ThirdWindPowerGenerationUpdateEnt::getSystemSource, oilFieldCode)
.in(ThirdWindPowerGenerationUpdateEnt::getStationName, collect)
);
//平均风速
......@@ -366,9 +372,10 @@ public class WindPredictionFutureService {
.select("actual_wind_direction", "COUNT( 1 ) AS actual_wind_speed")
.lambda()
.between(ThirdWindPowerGenerationEnt::getCollectTime, beginTime, endTime)
.in(ThirdWindPowerGenerationEnt::getStationName, turbineList.stream()
.map(BaseWindTurbineEnt::getStationName)
.in(ThirdWindPowerGenerationEnt::getStationId, turbineList.stream()
.map(BaseWindTurbineEnt::getId)
.collect(Collectors.toList()))
.eq(ThirdWindPowerGenerationEnt::getSystemSource, ServiceUtil.getOilFieldCode(context))
.groupBy(ThirdWindPowerGenerationEnt::getActualWindDirection)
);
if (CollUtil.isEmpty(list)) {
......@@ -443,6 +450,7 @@ public class WindPredictionFutureService {
.map(BaseModel::getId)
.collect(Collectors.toList()))
.ge(ThirdWindPowerGenerationUpdateEnt::getCollectTime, DateUtil.beginOfDay(DateUtil.date()))
.eq(ThirdWindPowerGenerationUpdateEnt::getSystemSource, ServiceUtil.getOilFieldCode(context))
);
Map<String, ThirdWindPowerGenerationUpdateEnt> collect;
if (CollUtil.isEmpty(list)) {
......@@ -513,10 +521,13 @@ public class WindPredictionFutureService {
output.setVaneLength(turbineView.getVaneLength());
output.setHubHeight(turbineView.getHubHeight());
output.setAreaName(turbineView.getCityName());
//环境
String oilFieldCode = ServiceUtil.getOilFieldCode(context);
//模拟数据
ThirdWindPowerGenerationUpdateMapper bean = context.getBean(ThirdWindPowerGenerationUpdateMapper.class);
ThirdWindPowerGenerationUpdateEnt selectOne = bean.selectOne(new LambdaQueryWrapper<ThirdWindPowerGenerationUpdateEnt>()
.eq(ThirdWindPowerGenerationUpdateEnt::getStationId, input.getStationId())
.eq(ThirdWindPowerGenerationUpdateEnt::getSystemSource, oilFieldCode)
.orderByDesc(ThirdWindPowerGenerationUpdateEnt::getCollectTime)
.last(BusinessConstant.LAST_LIMIT)
);
......@@ -529,6 +540,7 @@ public class WindPredictionFutureService {
selectOne = bean.selectOne(new QueryWrapper<ThirdWindPowerGenerationUpdateEnt>()
.select("SUM( actual_generation ) AS actual_generation")
.lambda()
.eq(ThirdWindPowerGenerationUpdateEnt::getSystemSource, oilFieldCode)
.eq(ThirdWindPowerGenerationUpdateEnt::getStationId, input.getStationId())
);
output.setGrossGeneration(selectOne.getActualGeneration());
......@@ -565,14 +577,14 @@ public class WindPredictionFutureService {
.lambda()
.between(ThirdWindPowerGenerationEnt::getCollectTime, beginTime, endTime)
.eq(ThirdWindPowerGenerationEnt::getStationId, input.getStationId())
.eq(ThirdWindPowerGenerationEnt::getSystemSource, ServiceUtil.getOilFieldCode(context))
.groupBy(ThirdWindPowerGenerationEnt::getCollectTime)
);
List<GetWindActivePowerOutput> outputs = new ArrayList<>();
if (CollUtil.isNotEmpty(list)) {
Map<Date, BigDecimal> map = list.stream()
.collect(Collectors.toMap(ThirdWindPowerGenerationEnt::getCollectTime, ThirdWindPowerGenerationEnt::getActualPower));
List<DateTime> rangeToList = DateUtil.rangeToList(beginTime, endTime, DateField.MINUTE, 15);
for (DateTime dateTime : rangeToList) {
for (DateTime dateTime : DateUtil.rangeToList(beginTime, endTime, DateField.MINUTE, 15)) {
outputs.add(
GetWindActivePowerOutput.builder()
.dataTime(dateTime)
......@@ -603,6 +615,7 @@ public class WindPredictionFutureService {
}
DateTime beginOfYear = DateUtil.beginOfYear(DateUtil.date());
DateTime endOfYear = DateUtil.endOfYear(beginOfYear);
String oilFieldCode = ServiceUtil.getOilFieldCode(context);
//查本年发电
ThirdWindPowerGenerationUpdateMapper generationMapper = context.getBean(ThirdWindPowerGenerationUpdateMapper.class);
List<ThirdWindPowerGenerationUpdateEnt> list = generationMapper.selectList(new QueryWrapper<ThirdWindPowerGenerationUpdateEnt>()
......@@ -610,6 +623,7 @@ public class WindPredictionFutureService {
.groupBy("MONTH ( collect_time )")
.lambda()
.eq(ThirdWindPowerGenerationUpdateEnt::getStationId, input.getStationId())
.eq(ThirdWindPowerGenerationUpdateEnt::getSystemSource, oilFieldCode)
.between(ThirdWindPowerGenerationUpdateEnt::getCollectTime, beginOfYear, endOfYear)
);
Map<Integer, BigDecimal> nowMap;
......@@ -644,6 +658,7 @@ public class WindPredictionFutureService {
.groupBy("MONTH ( collect_time )")
.lambda()
.eq(ThirdWindPowerGenerationUpdateEnt::getStationId, input.getStationId())
.eq(ThirdWindPowerGenerationUpdateEnt::getSystemSource, oilFieldCode)
.between(ThirdWindPowerGenerationUpdateEnt::getCollectTime, beginOfYear, endOfYear)
);
Map<Integer, BigDecimal> lastMap;
......@@ -844,6 +859,7 @@ public class WindPredictionFutureService {
.groupBy("collect_time")
.lambda()
.eq(ThirdWindPowerGenerationEnt::getStationId, stationId)
.eq(ThirdWindPowerGenerationEnt::getSystemSource, ServiceUtil.getOilFieldCode(context))
.between(ThirdWindPowerGenerationEnt::getCollectTime, beginTime, endTime)
);
Map<Date, ThirdWindPowerGenerationEnt> collect;
......
......@@ -12,6 +12,7 @@ import pps.core.base.entity.WindPredictionHistoryView;
import pps.core.base.mapper.ThirdWindPowerGenerationMapper;
import pps.core.base.mapper.WindPredictionFutureMapper;
import pps.core.base.mapper.WindPredictionHistoryViewMapper;
import pps.core.base.utils.ServiceUtil;
import pps.core.common.utils.BaseUtils;
import xstartup.annotation.XService;
import xstartup.base.XContext;
......@@ -55,6 +56,7 @@ public class WindPredictionHistoryCloudServiceImpl implements IWindPredictionHis
"MAX( actual_wind_direction ) AS actual_wind_direction")
.lambda()
.between(ThirdWindPowerGenerationEnt::getCollectTime, startTime, endTime)
.eq(ThirdWindPowerGenerationEnt::getSystemSource, ServiceUtil.getOilFieldCode(context))
.groupBy(ThirdWindPowerGenerationEnt::getStationId, ThirdWindPowerGenerationEnt::getCollectTime)
);
Map<String, Map<Date, ThirdWindPowerGenerationEnt>> collect;
......
package pps.core.base.utils;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import pps.cloud.base.service.data.config_oil_field.GetConfigOilFieldOutput;
import pps.cloud.system.service.SysOrganizationCloudService;
import pps.cloud.system.service.SystemAreaService;
import pps.cloud.system.service.SystemDictionaryService;
......@@ -13,8 +15,11 @@ import pps.cloud.system.service.data.sys_dictionary.QuerySysDictionaryViewOutput
import pps.cloud.system.service.data.sys_organization.GetAllOuListByOuIdInput;
import pps.cloud.system.service.data.sys_organization.GetSysOrganizationViewInput;
import pps.cloud.system.service.data.sys_organization.GetSysOrganizationViewOutput;
import pps.core.base.service.ConfigOilFieldCloudServiceImpl;
import pps.core.common.constant.BusinessConstant;
import xstartup.base.XContext;
import xstartup.data.XListResult;
import xstartup.data.XSingleResult;
import java.util.List;
import java.util.Map;
......@@ -28,6 +33,31 @@ import java.util.stream.Collectors;
*/
public class ServiceUtil {
/**
* 获取油田代码
*
* @param context 上下文
* @return {@link String }
*/
public static String getOilFieldCode(XContext context) {
//判断部署环境
GetConfigOilFieldOutput currentConfig = getCurrentConfig(context);
return ObjectUtil.defaultIfNull(currentConfig.getOilFieldCode(), BusinessConstant.DEFAULT_VALUE);
}
/**
* 获取当前配置
*
* @param context 上下文
* @return {@link GetConfigOilFieldOutput }
*/
public static GetConfigOilFieldOutput getCurrentConfig(XContext context) {
ConfigOilFieldCloudServiceImpl service = context.getBean(ConfigOilFieldCloudServiceImpl.class);
XSingleResult<GetConfigOilFieldOutput> result = service.getCurrentConfig(context);
result.throwIfFail();
return result.getResult();
}
/*-------------------------服务调用-------------------------*/
/**
......
......@@ -112,42 +112,42 @@
SELECT IFNULL(SUM(actual_generation), 0) AS today_power,
(SELECT IFNULL(SUM(actual_generation), 0)
FROM third_wind_power_generation_update
WHERE collect_time BETWEEN #{dateList[2]} AND #{dateList[3]} AND station_name IN
WHERE collect_time BETWEEN #{dateList[2]} AND #{dateList[3]} AND station_id IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
) AS month_power,
(SELECT IFNULL(SUM(actual_generation), 0)
FROM third_wind_power_generation_update
WHERE collect_time BETWEEN #{dateList[4]} AND #{dateList[5]} AND station_name IN
WHERE collect_time BETWEEN #{dateList[4]} AND #{dateList[5]} AND station_id IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
) AS last_month_power,
(SELECT IFNULL(SUM(actual_generation), 0)
FROM third_wind_power_generation_update
WHERE collect_time BETWEEN #{dateList[6]} AND #{dateList[7]} AND station_name IN
WHERE collect_time BETWEEN #{dateList[6]} AND #{dateList[7]} AND station_id IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
) AS season_power,
(SELECT IFNULL(SUM(actual_generation), 0)
FROM third_wind_power_generation_update
WHERE collect_time BETWEEN #{dateList[8]} AND #{dateList[9]} AND station_name IN
WHERE collect_time BETWEEN #{dateList[8]} AND #{dateList[9]} AND station_id IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
) AS last_season_power,
(SELECT IFNULL(SUM(actual_generation), 0)
FROM third_wind_power_generation_update
WHERE collect_time BETWEEN #{dateList[10]} AND #{dateList[11]} AND station_name IN
WHERE collect_time BETWEEN #{dateList[10]} AND #{dateList[11]} AND station_id IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
) AS year_power,
(SELECT IFNULL(SUM(actual_generation), 0)
FROM third_wind_power_generation_update
WHERE collect_time BETWEEN #{dateList[12]} AND #{dateList[13]} AND station_name IN
WHERE collect_time BETWEEN #{dateList[12]} AND #{dateList[13]} AND station_id IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
......@@ -155,7 +155,7 @@
FROM third_wind_power_generation_update
WHERE collect_time BETWEEN #{dateList[0]}
AND #{dateList[1]}
AND station_name IN
AND station_id IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
......
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