Commit cf0cfd37 authored by ZWT's avatar ZWT

feat(吉林演示): 松原

1.开发间开优化结果统计功能,创建间开优化效果统计表,生成对应代码;
2.修改15天,10天,3天,1天间开优化功能,修改代码结构;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 96c46bb3
package pps.core.space.service; package pps.core.space.service;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import pps.cloud.prediction.service.IThirdPowerCloudService;
import pps.cloud.prediction.service.data.third_active_power.GetThirdActivePowerInput;
import pps.cloud.prediction.service.data.third_active_power.GetThirdActivePowerOutput;
import pps.cloud.space.service.ISpaceYesterdayGreenRateCloudService; import pps.cloud.space.service.ISpaceYesterdayGreenRateCloudService;
import pps.core.common.constant.BusinessConstant;
import pps.core.space.entity.SpaceOptimizeShortDurationView; import pps.core.space.entity.SpaceOptimizeShortDurationView;
import pps.core.space.mapper.SpaceOptimizeShortDurationViewMapper; import pps.core.space.mapper.SpaceOptimizeShortDurationViewMapper;
import xstartup.annotation.XService; import xstartup.annotation.XService;
import xstartup.base.XContext; import xstartup.base.XContext;
import xstartup.data.XListResult;
import xstartup.data.XServiceResult; import xstartup.data.XServiceResult;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 昨日绿电占比Cloud模块 * 昨日绿电占比Cloud模块
...@@ -36,10 +45,35 @@ public class SpaceYesterdayGreenRateCloudServiceImpl extends SpaceOptimizeBaseSe ...@@ -36,10 +45,35 @@ public class SpaceYesterdayGreenRateCloudServiceImpl extends SpaceOptimizeBaseSe
List<SpaceOptimizeShortDurationView> durationViewList = spaceMapper.selectResultList(SpaceOptimizeShortDurationView.builder() List<SpaceOptimizeShortDurationView> durationViewList = spaceMapper.selectResultList(SpaceOptimizeShortDurationView.builder()
.optimizeDate(beginOfYesterday) .optimizeDate(beginOfYesterday)
.build()); .build());
Map<String, Map<String, Map<Integer, List<SpaceOptimizeShortDurationView>>>> durationCollect;
Map<String, List<GetThirdActivePowerOutput>> activePowerMap;
if (CollUtil.isEmpty(durationViewList)) { if (CollUtil.isEmpty(durationViewList)) {
return XServiceResult.OK; durationCollect = Collections.emptyMap();
activePowerMap = Collections.emptyMap();
} else {
//间开区间Map
durationCollect = durationViewList.stream()
.collect(Collectors.groupingBy(SpaceOptimizeShortDurationView::getLineName,
Collectors.groupingBy(SpaceOptimizeShortDurationView::getWellNumber,
Collectors.groupingBy(SpaceOptimizeShortDurationView::getIsOptimize))));
//取昨日实际发电功率
IThirdPowerCloudService cloudService = context.getBean(IThirdPowerCloudService.class);
XListResult<GetThirdActivePowerOutput> result = cloudService.queryPhotovoltaicPower30(context, GetThirdActivePowerInput.builder()
.stationNames(durationCollect.keySet())
.createDate(beginOfYesterday)
.build());
result.throwIfFail();
List<GetThirdActivePowerOutput> powerList = result.getResult();
if (CollUtil.isEmpty(powerList)) {
activePowerMap = Collections.emptyMap();
} else {
activePowerMap = powerList.stream()
.collect(Collectors.groupingBy(GetThirdActivePowerOutput::getStationName));
}
} }
//初始化时间轴
List<DateTime> rangeToList = DateUtil.rangeToList(DateUtil.offsetDay(BusinessConstant.DATE_FLAG, -1), BusinessConstant.DATE_FLAG, DateField.MINUTE, 30);
return XServiceResult.OK; return XServiceResult.OK;
} }
......
...@@ -31,6 +31,17 @@ public interface IThirdPowerCloudService { ...@@ -31,6 +31,17 @@ public interface IThirdPowerCloudService {
@XText("第三方Cloud模块--获得15分钟平均功率") @XText("第三方Cloud模块--获得15分钟平均功率")
XListResult<GetThirdActivePowerOutput> queryAvgPhotovoltaicPower(XContext context, GetThirdActivePowerInput input); XListResult<GetThirdActivePowerOutput> queryAvgPhotovoltaicPower(XContext context, GetThirdActivePowerInput input);
/**
* 获得30分钟实际功率
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult }<{@link GetThirdActivePowerOutput }>
*/
@XText("第三方Cloud模块--获得15分钟平均功率")
XListResult<GetThirdActivePowerOutput> queryPhotovoltaicPower30(XContext context, GetThirdActivePowerInput input);
/** /**
* 查询每日井场日累计数据 * 查询每日井场日累计数据
* *
......
...@@ -6,6 +6,7 @@ import lombok.Data; ...@@ -6,6 +6,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import xstartup.annotation.XText; import xstartup.annotation.XText;
import java.util.Collection;
import java.util.Date; import java.util.Date;
/** /**
...@@ -20,9 +21,15 @@ import java.util.Date; ...@@ -20,9 +21,15 @@ import java.util.Date;
@Builder @Builder
public class GetThirdActivePowerInput { public class GetThirdActivePowerInput {
@XText("电站名称")
private String stationName;
@XText("创建时间") @XText("创建时间")
private Date createDate; private Date createDate;
@XText("来源系统") @XText("来源系统")
private String systemSource; private String systemSource;
@XText("电站名称列表")
private Collection<String> stationNames;
} }
...@@ -9,8 +9,8 @@ import xstartup.annotation.XText; ...@@ -9,8 +9,8 @@ import xstartup.annotation.XText;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Collection;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* 第三方有功功率 * 第三方有功功率
...@@ -61,7 +61,7 @@ public class ThirdActivePowerView implements Serializable { ...@@ -61,7 +61,7 @@ public class ThirdActivePowerView implements Serializable {
@XText("电站名称列表") @XText("电站名称列表")
@TableField(exist = false) @TableField(exist = false)
private List<String> stationNames; private Collection<String> stationNames;
@XText("开始时间") @XText("开始时间")
@TableField(exist = false) @TableField(exist = false)
......
...@@ -57,4 +57,13 @@ public interface ThirdActivePowerViewMapper { ...@@ -57,4 +57,13 @@ public interface ThirdActivePowerViewMapper {
* @return {@link List }<{@link ThirdActivePowerView }> * @return {@link List }<{@link ThirdActivePowerView }>
*/ */
List<ThirdActivePowerView> selectAvgPower15(ThirdActivePowerView record); List<ThirdActivePowerView> selectAvgPower15(ThirdActivePowerView record);
/**
* 获得30分钟实际功率
*
* @param record 记录
* @return {@link List }<{@link ThirdActivePowerView }>
*/
List<ThirdActivePowerView> selectAvgPower30(ThirdActivePowerView record);
} }
package pps.core.prediction.service; package pps.core.prediction.service;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.CharSequenceUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import pps.cloud.prediction.service.IThirdPowerCloudService; import pps.cloud.prediction.service.IThirdPowerCloudService;
...@@ -15,6 +16,7 @@ import pps.core.prediction.entity.WellheadDailyProductionSituationEnt; ...@@ -15,6 +16,7 @@ import pps.core.prediction.entity.WellheadDailyProductionSituationEnt;
import pps.core.prediction.mapper.ThirdActivePowerViewMapper; import pps.core.prediction.mapper.ThirdActivePowerViewMapper;
import pps.core.prediction.mapper.ThirdDailyAccumulationUpdateMapper; import pps.core.prediction.mapper.ThirdDailyAccumulationUpdateMapper;
import pps.core.prediction.mapper.WellheadDailyProductionSituationMapper; import pps.core.prediction.mapper.WellheadDailyProductionSituationMapper;
import pps.core.prediction.utils.ServiceUtil;
import xstartup.annotation.XService; import xstartup.annotation.XService;
import xstartup.annotation.XText; import xstartup.annotation.XText;
import xstartup.base.XContext; import xstartup.base.XContext;
...@@ -50,6 +52,26 @@ public class ThirdPowerCloudServiceImpl implements IThirdPowerCloudService { ...@@ -50,6 +52,26 @@ public class ThirdPowerCloudServiceImpl implements IThirdPowerCloudService {
return XListResult.success(XCopyUtils.copyNewList(list, GetThirdActivePowerOutput.class)); return XListResult.success(XCopyUtils.copyNewList(list, GetThirdActivePowerOutput.class));
} }
/**
* 获得30分钟实际功率
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult }<{@link GetThirdActivePowerOutput }>
*/
@Override
public XListResult<GetThirdActivePowerOutput> queryPhotovoltaicPower30(XContext context, GetThirdActivePowerInput input) {
ThirdActivePowerViewMapper mapper = context.getBean(ThirdActivePowerViewMapper.class);
List<ThirdActivePowerView> list = mapper.selectAvgPower30(ThirdActivePowerView.builder()
.stationName(input.getStationName())
.stationNames(input.getStationNames())
.systemSource(ServiceUtil.getOilFieldCode(context))
.startTime(input.getCreateDate())
.endTime(DateUtil.offsetDay(input.getCreateDate(), 1))
.build());
return XListResult.success(XCopyUtils.copyNewList(list, GetThirdActivePowerOutput.class));
}
/** /**
* 查询每日井场日累计数据 * 查询每日井场日累计数据
* *
......
...@@ -196,4 +196,41 @@ ...@@ -196,4 +196,41 @@
ORDER BY ORDER BY
z.input_time z.input_time
</select> </select>
<select id="selectAvgPower30" parameterType="pps.core.prediction.entity.ThirdActivePowerView"
resultMap="BaseResultMap">
SELECT z.station_name,
z.create_date,
MAX(z.photovoltaic_power) AS photovoltaic_power
FROM (SELECT station_name,
CASE
WHEN MINUTE ( create_date) &lt; 31 THEN
DATE_FORMAT( create_date, '%H:00:00' ) ELSE DATE_FORMAT( create_date, '%H:30:00' )
END create_date ,
photovoltaic_power
FROM
third_active_power
WHERE
create_date BETWEEN #{startTime}
AND #{endTime}
<if test="systemSource != null">
AND system_source = #{systemSource}
</if>
<if test="stationName != null and stationName != ''">
AND station_name = #{stationName}
</if>
<if test="stationNames != null and stationNames.size() > 0">
AND station_name IN
<foreach collection="stationNames" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
) z
GROUP BY
z.station_name,
z.create_date
ORDER BY
z.station_name,
z.create_date
</select>
</mapper> </mapper>
\ No newline at end of file
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