Commit f6397894 authored by ZWT's avatar ZWT

feat(吉林演示): 松原

1.修改天气数据抽取定时任务,解决部分历史数据丢失问题;
2.修改第三方风机电站真实数据定时任务,修改代码逻辑,解决时间未按照15分钟间隔推送问题;
3.修改第三方风机电站模拟数据定时任务,解决时间日期格式错误导致数据重复问题;
4.新建第三方风力发电数据(每日最新数据)表,同时生成对应代码,修改第三方风机电站模拟数据定时任务,增加每日最新数据更新逻辑;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 75c7c5dc
package pps.core.base.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/09/04
*/
@Data
@TableName("third_wind_power_generation_update")
public class ThirdWindPowerGenerationUpdateEnt 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 collectTime;
@XText("实际风速(m/s)")
@TableField
private BigDecimal actualWindSpeed;
@XText("实际功率(kw)")
@TableField
private BigDecimal actualPower;
@XText("实际风向")
@TableField
private Integer actualWindDirection;
@XText("录入时间")
@TableField
private Date inputTime;
@XText("来源系统")
@TableField
private String systemSource;
}
\ No newline at end of file
package pps.core.base.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 第三方风力发电数据(每日最新数据)
*
* @author ZWT
* @date 2024/09/04
*/
@Data
public class ThirdWindPowerGenerationUpdateView implements Serializable {
@XText("ID")
@TableField
private Long id;
@XText("风电站名称")
@TableField
private String stationName;
@XText("风电站ID")
@TableField
private String stationId;
@XText("采集时间")
@TableField
private Date collectTime;
@XText("实际风速(m/s)")
@TableField
private BigDecimal actualWindSpeed;
@XText("实际功率(kw)")
@TableField
private BigDecimal actualPower;
@XText("实际风向")
@TableField
private Integer actualWindDirection;
@XText("录入时间")
@TableField
private Date inputTime;
@XText("来源系统")
@TableField
private String systemSource;
}
\ No newline at end of file
package pps.core.base.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import pps.core.base.entity.ThirdWindPowerGenerationUpdateEnt;
/**
* 第三方风力发电数据(每日最新数据)
*
* @author ZWT
* @date 2024/09/04
*/
@Repository(value = "pps.core.base.mapper.ThirdWindPowerGenerationUpdateMapper")
public interface ThirdWindPowerGenerationUpdateMapper extends BaseMapper<ThirdWindPowerGenerationUpdateEnt> {
}
package pps.core.base.mapper;
import cn.hutool.core.date.DateTime;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import pps.core.base.entity.ThirdWindPowerGenerationUpdateView;
import java.util.List;
/**
* 第三方风力发电数据(每日最新数据)
*
* @author ZWT
* @date 2024/09/04
*/
@Repository(value = "pps.core.base.mapper.ThirdWindPowerGenerationUpdateViewMapper")
public interface ThirdWindPowerGenerationUpdateViewMapper {
ThirdWindPowerGenerationUpdateView selectOne(ThirdWindPowerGenerationUpdateView record);
List<ThirdWindPowerGenerationUpdateView> selectList(ThirdWindPowerGenerationUpdateView record);
/**
* 批量插入
*
* @param list 列表
* @return int
*/
int batchInsert(@Param(value = "list") List<ThirdWindPowerGenerationUpdateView> list);
/**
* 批量删除
*
* @param deleteList 删除列表
* @param create 创造
* @param end 结束
* @return int
*/
int deleteBatch(@Param(value = "list") List<String> deleteList, @Param(value = "create") DateTime create, @Param(value = "end") DateTime end);
}
......@@ -4,7 +4,9 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import pps.cloud.base.service.IThirdWindPowerGenerationCloudService;
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.common.utils.BaseUtils;
......@@ -16,6 +18,7 @@ import xstartup.data.XSingleResult;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 第三方风力发电数据
......@@ -44,6 +47,7 @@ public class ThirdWindPowerGenerationCloudServiceImpl implements IThirdWindPower
.build());
if (CollUtil.isNotEmpty(list)) {
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();
......@@ -56,6 +60,8 @@ public class ThirdWindPowerGenerationCloudServiceImpl implements IThirdWindPower
copy = XCopyUtils.copyNewObject(thirdWindPowerGenerationView, ThirdWindPowerGenerationView.class);
copy.setCollectTime(DateUtil.offsetMinute(copy.getCollectTime(), -15));
batchList.add(copy);
//每日最新数据
batchUpdateList.add(XCopyUtils.copyNewObject(thirdWindPowerGenerationView, ThirdWindPowerGenerationUpdateView.class));
}
//批量新增
if (batchList.size() > BaseUtils.BATCH_SIZE) {
......@@ -64,6 +70,19 @@ public class ThirdWindPowerGenerationCloudServiceImpl implements IThirdWindPower
} else {
viewMapper.batchInsert(batchList);
}
//生成每日最新数据
ThirdWindPowerGenerationUpdateViewMapper mapper = context.getBean(ThirdWindPowerGenerationUpdateViewMapper.class);
mapper.deleteBatch(list.stream()
.map(ThirdWindPowerGenerationView::getStationName)
.collect(Collectors.toList()),
DateUtil.beginOfDay(endTime), DateUtil.endOfDay(endTime));
//批量新增
if (batchUpdateList.size() > BaseUtils.BATCH_SIZE) {
List<List<ThirdWindPowerGenerationUpdateView>> subList = BaseUtils.getSubList(batchUpdateList);
subList.forEach(mapper::batchInsert);
} else {
mapper.batchInsert(batchUpdateList);
}
}
return XServiceResult.OK;
}
......
......@@ -118,6 +118,9 @@ public class WindPredictionFutureService {
@XText("场站发电量统计")
public XSingleResult<GetStationPowerGenerationOutput> stationPowerGeneration(XContext context, GetBaseWindTurbineViewInput input) {
List<BaseWindTurbineEnt> turbineList = this.getWindTurbineList(context, input.getOuId());
DateTime now = DateUtil.beginOfDay(DateUtil.date());
//todo 暂时没接数据
return XSingleResult.success(GetStationPowerGenerationOutput.builder()
.dailyGeneration(BigDecimal.ZERO)
......
<?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.base.mapper.ThirdWindPowerGenerationUpdateViewMapper">
<resultMap id="BaseResultMap" type="pps.core.base.entity.ThirdWindPowerGenerationUpdateView">
<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="collect_time" property="collectTime" jdbcType="VARCHAR"/>
<result column="actual_wind_speed" property="actualWindSpeed" jdbcType="DECIMAL"/>
<result column="actual_power" property="actualPower" jdbcType="DECIMAL"/>
<result column="actual_wind_direction" property="actualWindDirection" jdbcType="INTEGER"/>
<result column="input_time" property="inputTime" jdbcType="VARCHAR"/>
<result column="system_source" property="systemSource" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
id
,
station_name,
station_id,
collect_time,
actual_wind_speed,
actual_power,
actual_wind_direction,
input_time,
system_source
</sql>
<select id="selectOne" parameterType="pps.core.base.entity.ThirdWindPowerGenerationUpdateView"
resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from third_wind_power_generation_update
where
id=#{id}
</select>
<select id="selectList" parameterType="pps.core.base.entity.ThirdWindPowerGenerationUpdateView"
resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from third_wind_power_generation_update
where
id=#{id}
</select>
<insert id="batchInsert" parameterType="list">
INSERT INTO third_wind_power_generation_update (station_name, station_id, collect_time, actual_wind_speed,
actual_power, actual_wind_direction, input_time, system_source) VALUES
<foreach collection="list" separator="," item="item">
(
#{item.stationName},
#{item.stationId},
#{item.collectTime},
#{item.actualWindSpeed},
#{item.actualPower},
#{item.actualWindDirection},
#{item.inputTime},
#{item.systemSource}
)
</foreach>
</insert>
<delete id="deleteBatch" parameterType="list">
DELETE FROM third_wind_power_generation_update
WHERE
station_name IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
AND collect_time BETWEEN #{create}
AND #{end}
</delete>
</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