Commit 2ec4483f authored by ZWT's avatar ZWT

feat(零碳): 长庆

1.长庆演示首页功能开发,新增采油厂统计信息查询接口,添加线上接口并完成接口冒烟测试;
2.长庆演示首页功能开发,新增线路图查询接口,添加线上接口并完成接口冒烟测试;
3.长庆演示首页功能开发,新增线路详情查询接口,添加线上接口并完成接口冒烟测试;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent fcbee54c
package pps.core.task.job;
import cn.hutool.core.util.ObjectUtil;
import pps.cloud.prediction.service.IThirdDataAccessCloudService;
import pps.core.common.cache.TaskLockCache;
import pps.core.task.constant.TaskConstant;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.data.XServiceResult;
import xstartup.service.job.XJob;
import xstartup.service.job.annotation.XCronTrigger;
/**
* 第三方井场日累计数据定时任务
*
* @author ZWT
* @date 2024/04/01 14:58
*/
@XText("第三方井场日累计数据定时任务")
@XService
public class ThirdDailyAccumulationJob implements XJob {
/**
* 半小时一次
*
* @param xContext x上下文
* @return {@link XServiceResult}
*/
@XCronTrigger(value = TaskConstant.HALF_HOUR_ZERO)
@Override
public XServiceResult execute(XContext xContext) {
xContext.getLogger().info("------ ThirdDailyAccumulationJob start:{}", System.currentTimeMillis());
String key = TaskConstant.TASK_LOCK_KEY + "ThirdDailyAccumulationJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key);
if (ObjectUtil.isNull(exist)) {
TaskLockCache cache = new TaskLockCache();
cache.setRedisKey(key);
cache.setRedisValue(key);
TaskLockCache.set(xContext, cache);
try {
IThirdDataAccessCloudService service = xContext.getBean(IThirdDataAccessCloudService.class);
XServiceResult result = service.thirdDailyAccumulationJob(xContext);
result.throwIfFail();
} catch (Exception e) {
xContext.getLogger().error("------ ThirdDailyAccumulationJob Exception: ", e);
} finally {
xContext.getLogger().info("------ ThirdDailyAccumulationJob end:{}", System.currentTimeMillis());
TaskLockCache.delete(xContext, key);
}
}
return XServiceResult.OK;
}
}
......@@ -50,4 +50,13 @@ public interface IThirdDataAccessCloudService {
*/
@XText("能耗分析定时任务")
XServiceResult energyConsumptionAnalysisJob(XContext context);
/**
* 第三方井场日累计数据定时任务
*
* @param context 上下文
* @return {@link XServiceResult}
*/
@XText("第三方井场日累计数据定时任务")
XServiceResult thirdDailyAccumulationJob(XContext context);
}
package pps.core.prediction.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 第三方井场日累计数据
*
* @author ZWT
* @date 2024/04/01
*/
@Data
@TableName("third_daily_accumulation")
public class ThirdDailyAccumulationEnt implements Serializable {
@XText("ID")
@TableId(type = IdType.AUTO)
private Long id;
@XText("井组名称(线路/光伏电站)")
@TableField
private String stationName;
@XText("井组ID(光伏电站)")
@TableField
private String stationId;
@XText("创建时间")
@TableField
private Date createDate;
@XText("光伏日累计发电(KWh)")
@TableField
private BigDecimal photovoltaicPower;
@XText("日累计用电量(KW·h)")
@TableField
private BigDecimal dailyElectricityConsumption;
@XText("日累计产液量(m³)")
@TableField
private BigDecimal dailyLiquidProduction;
@XText("就地消纳电量(KWh)")
@TableField
private BigDecimal inPlaceConsumption;
@XText("入库日期")
@TableField
private Date saveDate;
@XText("来源系统")
@TableField
private String systemSource;
}
package pps.core.prediction.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 第三方井场日累计数据
*
* @author ZWT
* @date 2024/04/01
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ThirdDailyAccumulationView implements Serializable {
@XText("ID")
@TableField
private Long id;
@XText("井组名称(线路/光伏电站)")
@TableField
private String stationName;
@XText("井组ID(光伏电站)")
@TableField
private String stationId;
@XText("创建时间")
@TableField
private Date createDate;
@XText("光伏日累计发电(KWh)")
@TableField
private BigDecimal photovoltaicPower;
@XText("日累计用电量(KW·h)")
@TableField
private BigDecimal dailyElectricityConsumption;
@XText("日累计产液量(m³)")
@TableField
private BigDecimal dailyLiquidProduction;
@XText("就地消纳电量(KWh)")
@TableField
private BigDecimal inPlaceConsumption;
@XText("入库日期")
@TableField
private Date saveDate;
@XText("来源系统")
@TableField
private String systemSource;
}
package pps.core.prediction.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import pps.core.prediction.entity.ThirdDailyAccumulationEnt;
/**
* 第三方井场日累计数据
*
* @author ZWT
* @date 2024/04/01
*/
@Repository(value = "pps.core.prediction.mapper.ThirdDailyAccumulationMapper")
public interface ThirdDailyAccumulationMapper extends BaseMapper<ThirdDailyAccumulationEnt> {
}
package pps.core.prediction.mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import pps.core.prediction.entity.ThirdDailyAccumulationView;
import java.util.List;
/**
* 第三方井场日累计数据
*
* @author ZWT
* @date 2024/04/01
*/
@Repository(value = "pps.core.prediction.mapper.ThirdDailyAccumulationViewMapper")
public interface ThirdDailyAccumulationViewMapper {
ThirdDailyAccumulationView selectOne(ThirdDailyAccumulationView record);
List<ThirdDailyAccumulationView> selectList(ThirdDailyAccumulationView record);
/**
* 批量插入
*
* @param dtoList dto列表
* @return int
*/
int batchInsertList(@Param(value = "list") List<ThirdDailyAccumulationView> dtoList);
}
......@@ -40,7 +40,7 @@ import pps.core.prediction.mapper.ThirdActivePowerDailyUpdateViewMapper;
import pps.core.prediction.service.data.energy_consumption_analysis.DynamicQueryEnergyConsumptionAnalysisViewOutput;
import pps.core.prediction.service.data.home_page.*;
import pps.core.prediction.service.data.third_current_well_condition.GetThirdCurrentWellConditionViewOutput;
import pps.core.prediction.service.data.third_photovoltaic_power.GetCumulativePowerGenerationOutput;
import pps.core.prediction.service.data.third_daily_accumulation.GetCumulativePowerGenerationOutput;
import pps.core.prediction.utils.ServiceUtil;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
......
......@@ -17,6 +17,7 @@ import pps.core.prediction.entity.*;
import pps.core.prediction.mapper.*;
import pps.core.prediction.service.data.third_active_power.GetThirdActivePowerViewOutput;
import pps.core.prediction.service.data.third_current_well_condition.GetThirdCurrentWellConditionViewOutput;
import pps.core.prediction.service.data.third_daily_accumulation.GetCumulativePowerGenerationOutput;
import pps.core.prediction.service.data.third_photovoltaic_power.GetThirdPhotovoltaicPowerViewOutput;
import pps.core.prediction.utils.ServiceUtil;
import xstartup.annotation.XService;
......@@ -56,10 +57,7 @@ public class ThirdDataAccessCloudServiceImpl implements IThirdDataAccessCloudSer
if (CollUtil.isEmpty(outputs)) {
return XServiceResult.OK;
}
XListResult<GetBasePhotovoltaicPlantCloudOutput> result = context.getBean(BasePhotovoltaicPlantCloudService.class)
.getBasePhotovoltaicPlantList(context, new GetBasePhotovoltaicPlantCloudInput());
Map<String, String> collect = result.getResult().stream()
.collect(Collectors.toMap(GetBasePhotovoltaicPlantCloudOutput::getStationName, GetBasePhotovoltaicPlantCloudOutput::getId));
Map<String, String> collect = this.getPhotovoltaicPlantMap(context);
List<ThirdActivePowerView> dtoList = new ArrayList<>(outputs.size());
List<ThirdActivePowerDailyUpdateView> dtoDailyList = new ArrayList<>(outputs.size());
DateTime now = DateTime.now();
......@@ -247,8 +245,74 @@ public class ThirdDataAccessCloudServiceImpl implements IThirdDataAccessCloudSer
});
}
/**
* 第三方井场日累计数据定时任务
*
* @param context 上下文
* @return {@link XServiceResult}
*/
@Override
public XServiceResult thirdDailyAccumulationJob(XContext context) {
String resultStr = ServiceUtil.doPostFormCq(context,
ThirdPartyApiConstant.CQ_GROUP_REAL_PV_DATA,
new HashMap<>(0));
context.getLogger().info("*** CQ_GROUP_REAL_PV_DATA : {}", resultStr);
List<GetCumulativePowerGenerationOutput> outputs = JSON.parseArray(resultStr, GetCumulativePowerGenerationOutput.class);
if (CollUtil.isEmpty(outputs)) {
return XServiceResult.OK;
}
//取电站
Map<String, String> plantMap = this.getPhotovoltaicPlantMap(context);
DateTime beginOfDay = DateUtil.beginOfDay(DateUtil.date());
//封装数据
List<ThirdDailyAccumulationView> dtoList = new ArrayList<>(outputs.size());
LambdaQueryWrapper<ThirdDailyAccumulationEnt> queryWrapper = new LambdaQueryWrapper<ThirdDailyAccumulationEnt>();
for (GetCumulativePowerGenerationOutput o : outputs) {
dtoList.add(
ThirdDailyAccumulationView.builder()
.saveDate(beginOfDay)
.stationId(plantMap.get(o.getStationName()))
.stationName(o.getStationName())
.createDate(o.getCreateDate())
.photovoltaicPower(o.getPhotovoltaicPower())
.dailyElectricityConsumption(o.getDailyElectricityConsumption())
.dailyLiquidProduction(o.getDailyLiquidProduction())
.inPlaceConsumption(o.getInPlaceConsumption())
.systemSource(ThirdPartyApiConstant.CQ_SOURCE)
.build()
);
//组装删除条件
queryWrapper.or(w -> w.eq(ThirdDailyAccumulationEnt::getStationName, o.getStationName())
.eq(ThirdDailyAccumulationEnt::getSaveDate, beginOfDay)
.eq(ThirdDailyAccumulationEnt::getSystemSource, ThirdPartyApiConstant.CQ_SOURCE)
);
}
return XTransactionHelper.begin(context, () -> {
//先删除
ThirdDailyAccumulationMapper bean = context.getBean(ThirdDailyAccumulationMapper.class);
bean.delete(queryWrapper);
ThirdDailyAccumulationViewMapper mapper = context.getBean(ThirdDailyAccumulationViewMapper.class);
//保存当日最新数据
mapper.batchInsertList(dtoList);
return XServiceResult.OK;
});
}
/*----------------------------------- private -----------------------------------*/
/**
* 获取光伏电站Map
*
* @param context 上下文
* @return {@link Map}<{@link String}, {@link String}>
*/
private Map<String, String> getPhotovoltaicPlantMap(XContext context) {
XListResult<GetBasePhotovoltaicPlantCloudOutput> result = context.getBean(BasePhotovoltaicPlantCloudService.class)
.getBasePhotovoltaicPlantList(context, new GetBasePhotovoltaicPlantCloudInput());
return result.getResult().stream()
.collect(Collectors.toMap(GetBasePhotovoltaicPlantCloudOutput::getStationName, GetBasePhotovoltaicPlantCloudOutput::getId));
}
/**
* 查询线路列表通过线路名称
*
......
package pps.core.prediction.service.data.third_photovoltaic_power;
package pps.core.prediction.service.data.third_daily_accumulation;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
import xstartup.annotation.XText;
import java.math.BigDecimal;
import java.util.Date;
/**
* 当日累计发电量
......@@ -19,6 +20,10 @@ public class GetCumulativePowerGenerationOutput {
@JSONField(name = "stationname")
private String stationName;
@XText("时间")
@JSONField(name = "calC_DATE")
private Date createDate;
@XText("光伏日累计发电(KWh)")
@JSONField(name = "pV_DAY_ELECTRIC_POWER")
private BigDecimal photovoltaicPower;
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="pps.core.prediction.mapper.ThirdDailyAccumulationViewMapper">
<resultMap id="BaseResultMap" type="pps.core.prediction.entity.ThirdDailyAccumulationView">
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="station_name" property="stationName" jdbcType="VARCHAR"/>
<result column="station_id" property="stationId" jdbcType="VARCHAR"/>
<result column="create_date" property="createDate" jdbcType="DATE"/>
<result column="photovoltaic_power" property="photovoltaicPower" jdbcType="DECIMAL"/>
<result column="daily_electricity_consumption" property="dailyElectricityConsumption" jdbcType="DECIMAL"/>
<result column="daily_liquid_production" property="dailyLiquidProduction" jdbcType="DECIMAL"/>
<result column="in_place_consumption" property="inPlaceConsumption" jdbcType="DECIMAL"/>
<result column="save_date" property="saveDate" jdbcType="DATE"/>
</resultMap>
<sql id="Base_Column_List">
id
,
station_name,
station_id,
create_date,
photovoltaic_power,
daily_electricity_consumption,
daily_liquid_production,
in_place_consumption,
save_date
</sql>
<select id="selectOne" parameterType="pps.core.prediction.entity.ThirdDailyAccumulationView"
resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from third_daily_accumulation
where
id=#{id}
</select>
<select id="selectList" parameterType="pps.core.prediction.entity.ThirdDailyAccumulationView"
resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from third_daily_accumulation
where
id=#{id}
</select>
<insert id="batchInsertList" parameterType="list">
INSERT INTO third_daily_accumulation ( station_name, station_id, create_date, photovoltaic_power,
daily_electricity_consumption, daily_liquid_production, in_place_consumption, save_date, system_source )
VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.stationName},
#{item.stationId},
#{item.createDate},
#{item.photovoltaicPower},
#{item.dailyElectricityConsumption},
#{item.dailyLiquidProduction},
#{item.inPlaceConsumption},
#{item.saveDate},
#{item.systemSource}
)
</foreach>
</insert>
</mapper>
\ No newline at end of file
......@@ -37,6 +37,7 @@ public class DeployPpsAllApplication {
startup.enable(XJobFeature.class).config(new XJobServiceConf(ThirdActivePowerJob.class));
startup.enable(XJobFeature.class).config(new XJobServiceConf(ThirdCurrentWellConditionJob.class));
startup.enable(XJobFeature.class).config(new XJobServiceConf(ThirdPhotovoltaicPowerJob.class));
startup.enable(XJobFeature.class).config(new XJobServiceConf(ThirdDailyAccumulationJob.class));
startup.enable(XJobFeature.class).config(new XJobServiceConf(EnergyConsumptionAnalysisJob.class));
startup.enable(XJobFeature.class).config(new XJobServiceConf(PlantPredictedPowerLongTermDataJob.class));
startup.run(args);
......
......@@ -53,6 +53,7 @@ x.job.service=pps.core.task.job.SpaceOptimizeLongJob,\
pps.core.task.job.ThirdActivePowerJob,\
pps.core.task.job.ThirdCurrentWellConditionJob,\
pps.core.task.job.ThirdPhotovoltaicPowerJob,\
pps.core.task.job.ThirdDailyAccumulationJob,\
pps.core.task.job.EnergyConsumptionAnalysisJob,\
pps.core.task.job.PlantPredictedPowerLongTermDataJob,\
pps.core.task.job.WeatherJob
......
......@@ -38,6 +38,7 @@ public class DeployPpsTaskApplication {
startup.enable(XJobFeature.class).config(new XJobServiceConf(ThirdActivePowerJob.class));
startup.enable(XJobFeature.class).config(new XJobServiceConf(ThirdCurrentWellConditionJob.class));
startup.enable(XJobFeature.class).config(new XJobServiceConf(ThirdPhotovoltaicPowerJob.class));
startup.enable(XJobFeature.class).config(new XJobServiceConf(ThirdDailyAccumulationJob.class));
startup.enable(XJobFeature.class).config(new XJobServiceConf(EnergyConsumptionAnalysisJob.class));
startup.enable(XJobFeature.class).config(new XJobServiceConf(PlantPredictedPowerLongTermDataJob.class));
startup.enable(XRpcFeature.class);
......
......@@ -15,6 +15,7 @@ x.job.service=pps.core.task.job.SpaceOptimizeLongJob,\
pps.core.task.job.ThirdActivePowerJob,\
pps.core.task.job.ThirdCurrentWellConditionJob,\
pps.core.task.job.ThirdPhotovoltaicPowerJob,\
pps.core.task.job.ThirdDailyAccumulationJob,\
pps.core.task.job.EnergyConsumptionAnalysisJob,\
pps.core.task.job.PlantPredictedPowerLongTermDataJob
#\uFFFD\uFFFD\u05BE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
......
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