Commit 5d9aff9f authored by ZWT's avatar ZWT

feat(吉林演示): 松原

1.开发中间库表结构及数据导出功能,检查中间库表结构是否有变动,同时获取最新数据,验证数据是否更新;
2.创建场站每日信息统计记录表,新建场站日信息数据采集汇总定时任务,整理汇总场站纬度每日数据,完成功能验证;
3.针对吉林提供的统计数据,对吉林首页部分功能修改;
4.针对中间库每日井口数据统计表结构变动,修改井口日统计定时任务数据处理逻辑,完成功能验证;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 5fa1b744
package pps.core.task.job;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import pps.cloud.prediction.service.IStationDailyCloudService;
import pps.core.common.cache.TaskLockCache;
import pps.core.task.constant.TaskConstant;
import pps.core.task.utils.ServiceUtil;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.data.XServiceResult;
/**
* 场站纬度每日信息统计定时任务
*
* @author ZWT
* @date 2024/10/20 16:22
*/
@XText("场站纬度每日信息统计定时任务")
public class StationDailyProductionSituationJob {
/**
* 每天0点10分执行 0 10 0 * * ?
*
* @param xContext x上下文
* @return {@link XServiceResult}
*/
public XServiceResult execute(XContext xContext) {
xContext.getLogger().info("------ StationDailyProductionSituationJob start:{}", DateUtil.date());
String key = TaskConstant.TASK_LOCK_KEY + "StationDailyProductionSituationJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key);
if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key);
try {
IStationDailyCloudService service = xContext.getBean(IStationDailyCloudService.class);
XServiceResult result = service.stationDailyJob(xContext);
result.throwIfFail();
} catch (Exception e) {
xContext.getLogger().error("------ StationDailyProductionSituationJob Exception: ", e);
} finally {
xContext.getLogger().info("------ StationDailyProductionSituationJob end:{}", DateUtil.date());
TaskLockCache.delete(xContext, key);
}
}
return XServiceResult.OK;
}
}
package pps.cloud.prediction.service;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.data.XServiceResult;
/**
* 场站日统计
*
* @author ZWT
* @date 2024/10/20 16:25
*/
@XService
@XText("场站日统计Cloud模块")
public interface IStationDailyCloudService {
/**
* 场站日统计定时任务
*
* @param context 上下文
* @return {@link XServiceResult}
*/
@XText("光伏预测Cloud模块--场站日统计定时任务")
XServiceResult stationDailyJob(XContext context);
}
...@@ -174,7 +174,7 @@ public class PlantPredictedPowerCloudServiceImpl implements IPlantPredictedPower ...@@ -174,7 +174,7 @@ public class PlantPredictedPowerCloudServiceImpl implements IPlantPredictedPower
*/ */
@Override @Override
public XServiceResult wellTechDailyJob(XContext context) { public XServiceResult wellTechDailyJob(XContext context) {
List<WellheadDailyProductionSituationJob> list; List<WellheadDailyProductionSituationJob> list = null;
//区分环境 //区分环境
String oilFieldCode = ServiceUtil.getOilFieldCode(context); String oilFieldCode = ServiceUtil.getOilFieldCode(context);
switch (oilFieldCode) { switch (oilFieldCode) {
...@@ -182,7 +182,31 @@ public class PlantPredictedPowerCloudServiceImpl implements IPlantPredictedPower ...@@ -182,7 +182,31 @@ public class PlantPredictedPowerCloudServiceImpl implements IPlantPredictedPower
IWellDailyProductionSituationCloudService service = context.getBean(IWellDailyProductionSituationCloudService.class); IWellDailyProductionSituationCloudService service = context.getBean(IWellDailyProductionSituationCloudService.class);
XListResult<GetWellheadDailyProductionSituationOutput> result = service.getWellDailyProductionSituationList(context, new GetWellheadDailyProductionSituationInput()); XListResult<GetWellheadDailyProductionSituationOutput> result = service.getWellDailyProductionSituationList(context, new GetWellheadDailyProductionSituationInput());
result.throwIfFail(); result.throwIfFail();
list = XCopyUtils.copyNewList(result.getResult(), WellheadDailyProductionSituationJob.class); List<GetWellheadDailyProductionSituationOutput> dailyList = result.getResult();
if (CollUtil.isNotEmpty(dailyList)) {
list = new ArrayList<>(dailyList.size());
for (GetWellheadDailyProductionSituationOutput output : dailyList) {
list.add(
WellheadDailyProductionSituationJob.builder()
.wellNumber(output.getWellNumber())
.dataDate(DateUtil.parseDate(output.getDataDate()))
.dailyLiquidProduction(output.getDailyLiquidProduction())
.productionTime(output.getProductionTime())
.dailyElectricityConsumption(output.getDailyElectricityConsumption())
.dailyUtilityElectricityConsumption(output.getDailyUtilityElectricityConsumption())
.electricityConsumptionPh(output.getElectricityConsumptionPh())
.electricityConsumptionHh(output.getElectricityConsumptionHh())
.electricityConsumptionNp(output.getElectricityConsumptionNp())
.electricityConsumptionVh(output.getElectricityConsumptionVh())
.electricityChargeCity(output.getElectricityChargeCity())
.electricityChargesPh(output.getElectricityChargesPh())
.peakHourTariff(output.getPeakHourTariff())
.normalPeriodTariff(output.getNormalPeriodTariff())
.alleyHoursTariff(output.getAlleyHoursTariff())
.build()
);
}
}
break; break;
case BusinessConstant.ENV_CQ: case BusinessConstant.ENV_CQ:
String token = ServiceUtil.getToken(context); String token = ServiceUtil.getToken(context);
...@@ -198,9 +222,7 @@ public class PlantPredictedPowerCloudServiceImpl implements IPlantPredictedPower ...@@ -198,9 +222,7 @@ public class PlantPredictedPowerCloudServiceImpl implements IPlantPredictedPower
list = JSON.parseArray(data, WellheadDailyProductionSituationJob.class); list = JSON.parseArray(data, WellheadDailyProductionSituationJob.class);
break; break;
default: default:
return XServiceResult.OK;
} }
DateTime now = DateUtil.date();
if (CollUtil.isEmpty(list)) { if (CollUtil.isEmpty(list)) {
context.getLogger().info("------ WellTechDailyJob 未发现数据: {}", DateUtil.yesterday().toString("yyyy-MM-dd")); context.getLogger().info("------ WellTechDailyJob 未发现数据: {}", DateUtil.yesterday().toString("yyyy-MM-dd"));
return XServiceResult.OK; return XServiceResult.OK;
...@@ -212,6 +234,7 @@ public class PlantPredictedPowerCloudServiceImpl implements IPlantPredictedPower ...@@ -212,6 +234,7 @@ public class PlantPredictedPowerCloudServiceImpl implements IPlantPredictedPower
.wellNumbers(collect) .wellNumbers(collect)
.build()).stream() .build()).stream()
.collect(Collectors.toMap(DynamicQueryBaseWellheadOutput::getWellNumber, DynamicQueryBaseWellheadOutput::getId)); .collect(Collectors.toMap(DynamicQueryBaseWellheadOutput::getWellNumber, DynamicQueryBaseWellheadOutput::getId));
DateTime now = DateUtil.date();
List<WellheadDailyProductionSituationView> dtoList = new ArrayList<>(list.size()); List<WellheadDailyProductionSituationView> dtoList = new ArrayList<>(list.size());
for (WellheadDailyProductionSituationJob wellhead : list) { for (WellheadDailyProductionSituationJob wellhead : list) {
dtoList.add(WellheadDailyProductionSituationView.builder() dtoList.add(WellheadDailyProductionSituationView.builder()
......
package pps.core.prediction.service;
import pps.cloud.prediction.service.IStationDailyCloudService;
import xstartup.annotation.XService;
import xstartup.base.XContext;
import xstartup.data.XServiceResult;
/**
* 场站日统计
*
* @author ZWT
* @date 2024/10/20 16:27
*/
@XService
public class StationDailyCloudServiceImpl implements IStationDailyCloudService {
@Override
public XServiceResult stationDailyJob(XContext context) {
return XServiceResult.OK;
}
}
\ No newline at end of file
package pps.core.prediction.service.data.wellhead_daily_production_situation; package pps.core.prediction.service.data.wellhead_daily_production_situation;
import com.alibaba.fastjson2.annotation.JSONField; import com.alibaba.fastjson2.annotation.JSONField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import xstartup.annotation.XText; import xstartup.annotation.XText;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -14,6 +17,9 @@ import java.util.Date; ...@@ -14,6 +17,9 @@ import java.util.Date;
* @date 2023/09/27 * @date 2023/09/27
*/ */
@Data @Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class WellheadDailyProductionSituationJob { public class WellheadDailyProductionSituationJob {
@XText("井号") @XText("井号")
......
...@@ -26,4 +26,4 @@ public interface IWellDailyProductionSituationCloudService { ...@@ -26,4 +26,4 @@ public interface IWellDailyProductionSituationCloudService {
*/ */
@XText("井口日累计生产数据列表") @XText("井口日累计生产数据列表")
XListResult<GetWellheadDailyProductionSituationOutput> getWellDailyProductionSituationList(XContext context, GetWellheadDailyProductionSituationInput input); XListResult<GetWellheadDailyProductionSituationOutput> getWellDailyProductionSituationList(XContext context, GetWellheadDailyProductionSituationInput input);
} }
\ No newline at end of file
...@@ -21,7 +21,7 @@ public class GetWellheadDailyProductionSituationInput { ...@@ -21,7 +21,7 @@ public class GetWellheadDailyProductionSituationInput {
private String wellNumber; private String wellNumber;
@XText("数据日期") @XText("数据日期")
private Date dataDate; private String dataDate;
@XText("日耗电量(kW-h)") @XText("日耗电量(kW-h)")
private BigDecimal powerConsumeDaily; private BigDecimal powerConsumeDaily;
......
...@@ -4,7 +4,6 @@ import lombok.Data; ...@@ -4,7 +4,6 @@ import lombok.Data;
import xstartup.annotation.XText; import xstartup.annotation.XText;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
/** /**
* 井口日累计生产数据 * 井口日累计生产数据
...@@ -19,7 +18,7 @@ public class GetWellheadDailyProductionSituationOutput { ...@@ -19,7 +18,7 @@ public class GetWellheadDailyProductionSituationOutput {
private String wellNumber; private String wellNumber;
@XText("数据日期") @XText("数据日期")
private Date dataDate; private String dataDate;
@XText("日耗电量(kW-h)") @XText("日耗电量(kW-h)")
private BigDecimal powerConsumeDaily; private BigDecimal powerConsumeDaily;
......
...@@ -30,7 +30,7 @@ public class WellheadDailyProductionSituationEnt implements Serializable { ...@@ -30,7 +30,7 @@ public class WellheadDailyProductionSituationEnt implements Serializable {
@XText("数据日期") @XText("数据日期")
@TableField @TableField
private Date dataDate; private String dataDate;
@XText("日耗电量(kW-h)") @XText("日耗电量(kW-h)")
@TableField @TableField
......
...@@ -32,7 +32,7 @@ public class WellheadDailyProductionSituationView implements Serializable { ...@@ -32,7 +32,7 @@ public class WellheadDailyProductionSituationView implements Serializable {
@XText("数据日期") @XText("数据日期")
@TableField @TableField
private Date dataDate; private String dataDate;
@XText("日耗电量(kW-h)") @XText("日耗电量(kW-h)")
@TableField @TableField
......
...@@ -26,7 +26,7 @@ public class WellDailyProductionSituationCloudServiceImpl implements IWellDailyP ...@@ -26,7 +26,7 @@ public class WellDailyProductionSituationCloudServiceImpl implements IWellDailyP
public XListResult<GetWellheadDailyProductionSituationOutput> getWellDailyProductionSituationList(XContext context, GetWellheadDailyProductionSituationInput input) { public XListResult<GetWellheadDailyProductionSituationOutput> getWellDailyProductionSituationList(XContext context, GetWellheadDailyProductionSituationInput input) {
WellheadDailyProductionSituationViewMapper viewMapper = context.getBean(WellheadDailyProductionSituationViewMapper.class); WellheadDailyProductionSituationViewMapper viewMapper = context.getBean(WellheadDailyProductionSituationViewMapper.class);
List<WellheadDailyProductionSituationView> list = viewMapper.selectWellDailyProductionSituationList(WellheadDailyProductionSituationView.builder() List<WellheadDailyProductionSituationView> list = viewMapper.selectWellDailyProductionSituationList(WellheadDailyProductionSituationView.builder()
.dataDate(DateUtil.beginOfDay(DateUtil.yesterday())) .dataDate(DateUtil.beginOfDay(DateUtil.yesterday()).toDateStr())
.build()); .build());
return XListResult.success(XCopyUtils.copyNewList(list, GetWellheadDailyProductionSituationOutput.class)); return XListResult.success(XCopyUtils.copyNewList(list, GetWellheadDailyProductionSituationOutput.class));
} }
......
...@@ -84,6 +84,6 @@ ...@@ -84,6 +84,6 @@
STARTHOURS AS PRODUCTION_TIME, STARTHOURS AS PRODUCTION_TIME,
DAILY_LIQUID_PRODUCTION DAILY_LIQUID_PRODUCTION
FROM WELLHEAD_DAILY_PRODUCTION_SITUATION FROM WELLHEAD_DAILY_PRODUCTION_SITUATION
WHERE TRUNC(DATA_DATE) = #{dataDate} WHERE DATA_DATE = #{dataDate}
</select> </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