Commit 078abd09 authored by ZWT's avatar ZWT

feat(吉林演示): 松原

1.基础信息配置模块创建风资源历史数据表和风资源预测数据表,同时生成对应代码;
2.修改天气数据获取处理定时任务,修改光伏预测数据插入逻辑,同时增加风资源数据插入逻辑,完成功能测试;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 3fc4e7d9
package pps.core.common.constant; package pps.core.common.constant;
import cn.hutool.core.collection.CollUtil;
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 java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
/** /**
* 业务操作常量 * 业务操作常量
...@@ -18,6 +20,11 @@ public class BusinessConstant { ...@@ -18,6 +20,11 @@ public class BusinessConstant {
*/ */
public static final Long LOGIN_FLAG_SIMULATE = 1000000L; public static final Long LOGIN_FLAG_SIMULATE = 1000000L;
/**
* 时间表
*/
public static final List<String> TIME_LIST = CollUtil.newArrayList("15:00", "30:00", "45:00");
/** /**
* 权重数组 * 权重数组
*/ */
...@@ -220,6 +227,11 @@ public class BusinessConstant { ...@@ -220,6 +227,11 @@ public class BusinessConstant {
*/ */
public static final String DATE_FORMAT_HOUR = "yyyy-MM-dd HH:00:00"; public static final String DATE_FORMAT_HOUR = "yyyy-MM-dd HH:00:00";
/**
* 日期格式到小时2
*/
public static final String DATE_FORMAT_HOUR2 = "yyyy-MM-dd HH";
/** /**
* 日期格式化到天(年月日) * 日期格式化到天(年月日)
*/ */
......
package pps.core.base.entity; package pps.core.base.entity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import pps.core.common.entity.BaseModel; import pps.core.common.entity.BaseModel;
import xstartup.annotation.XText; import xstartup.annotation.XText;
...@@ -16,6 +19,9 @@ import java.util.List; ...@@ -16,6 +19,9 @@ import java.util.List;
* @date 2024/08/28 * @date 2024/08/28
*/ */
@Data @Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class BaseWindTurbineView extends BaseModel implements Serializable { public class BaseWindTurbineView extends BaseModel implements Serializable {
@XText("组织机构ID") @XText("组织机构ID")
...@@ -68,4 +74,11 @@ public class BaseWindTurbineView extends BaseModel implements Serializable { ...@@ -68,4 +74,11 @@ public class BaseWindTurbineView extends BaseModel implements Serializable {
@XText("组织ID集合") @XText("组织ID集合")
@TableField(exist = false) @TableField(exist = false)
private List<String> ouList; private List<String> ouList;
/**
* 城市代码
*/
@XText("城市编码")
@TableField(exist = false)
private String cityCode;
} }
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.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/08/29
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("wind_prediction_future")
public class WindPredictionFutureEnt implements Serializable {
@XText("ID")
@TableId(type = IdType.AUTO)
private Long id;
@XText("风电站ID")
@TableField
private String stationId;
@XText("记录时间")
@TableField
private Date dataTime;
@XText("风向")
@TableField
private Integer windDirection;
@XText("预报风速(m/s)")
@TableField
private BigDecimal windSpeed;
@XText("气温(℃)")
@TableField
private BigDecimal airTemperature;
@XText("湿度(%)")
@TableField
private BigDecimal humidity;
@XText("气压(hPa)")
@TableField
private BigDecimal pressure;
@XText("实际风速(m/s)")
@TableField
private BigDecimal actualWindSpeed;
@XText("实际功率(kw)")
@TableField
private BigDecimal actualPower;
@XText("预测功率(kw)")
@TableField
private BigDecimal predictedPower;
}
package pps.core.base.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/08/29
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class WindPredictionFutureView implements Serializable {
@XText("ID")
@TableField
private Long id;
@XText("风电站ID")
@TableField
private String stationId;
@XText("记录时间")
@TableField
private Date dataTime;
@XText("风向")
@TableField
private Integer windDirection;
@XText("预报风速(m/s)")
@TableField
private BigDecimal windSpeed;
@XText("气温(℃)")
@TableField
private BigDecimal airTemperature;
@XText("湿度(%)")
@TableField
private BigDecimal humidity;
@XText("气压(hPa)")
@TableField
private BigDecimal pressure;
@XText("实际风速(m/s)")
@TableField
private BigDecimal actualWindSpeed;
@XText("实际功率(kw)")
@TableField
private BigDecimal actualPower;
@XText("预测功率(kw)")
@TableField
private BigDecimal predictedPower;
@XText("创建时间")
@TableField(exist = false)
private Date createTime;
@XText("结束时间")
@TableField(exist = false)
private Date endTime;
}
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/08/29
*/
@Data
@TableName("wind_prediction_history")
public class WindPredictionHistoryEnt implements Serializable {
@XText("ID")
@TableId(type = IdType.AUTO)
private Long id;
@XText("风电站ID")
@TableField
private String stationId;
@XText("记录时间")
@TableField
private Date dataTime;
@XText("风向")
@TableField
private Integer windDirection;
@XText("预报风速(m/s)")
@TableField
private BigDecimal windSpeed;
@XText("气温(℃)")
@TableField
private BigDecimal airTemperature;
@XText("湿度(%)")
@TableField
private BigDecimal humidity;
@XText("气压(hPa)")
@TableField
private BigDecimal pressure;
@XText("实际风速(m/s)")
@TableField
private BigDecimal actualWindSpeed;
@XText("实际功率(kw)")
@TableField
private BigDecimal actualPower;
@XText("预测功率(kw)")
@TableField
private BigDecimal predictedPower;
}
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/08/29
*/
@Data
public class WindPredictionHistoryView implements Serializable {
@XText("ID")
@TableField
private Long id;
@XText("风电站ID")
@TableField
private String stationId;
@XText("记录时间")
@TableField
private Date dataTime;
@XText("风向")
@TableField
private Integer windDirection;
@XText("预报风速(m/s)")
@TableField
private BigDecimal windSpeed;
@XText("气温(℃)")
@TableField
private BigDecimal airTemperature;
@XText("湿度(%)")
@TableField
private BigDecimal humidity;
@XText("气压(hPa)")
@TableField
private BigDecimal pressure;
@XText("实际风速(m/s)")
@TableField
private BigDecimal actualWindSpeed;
@XText("实际功率(kw)")
@TableField
private BigDecimal actualPower;
@XText("预测功率(kw)")
@TableField
private BigDecimal predictedPower;
}
...@@ -16,4 +16,12 @@ public interface BaseWindTurbineViewMapper { ...@@ -16,4 +16,12 @@ public interface BaseWindTurbineViewMapper {
BaseWindTurbineView selectOne(BaseWindTurbineView record); BaseWindTurbineView selectOne(BaseWindTurbineView record);
List<BaseWindTurbineView> selectList(BaseWindTurbineView record); List<BaseWindTurbineView> selectList(BaseWindTurbineView record);
/**
* 风机列表
*
* @param record 记录
* @return {@link List }<{@link BaseWindTurbineView }>
*/
List<BaseWindTurbineView> selectWindTurbineList(BaseWindTurbineView record);
} }
package pps.core.base.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import pps.core.base.entity.WindPredictionFutureEnt;
/**
* 风预测数据
*
* @author ZWT
* @date 2024/08/29
*/
@Repository(value = "pps.core.base.mapper.WindPredictionFutureMapper")
public interface WindPredictionFutureMapper extends BaseMapper<WindPredictionFutureEnt> {
}
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.WindPredictionFutureView;
import java.util.List;
/**
* 风预测数据
*
* @author ZWT
* @date 2024/08/29
*/
@Repository(value = "pps.core.base.mapper.WindPredictionFutureViewMapper")
public interface WindPredictionFutureViewMapper {
WindPredictionFutureView selectOne(WindPredictionFutureView record);
List<WindPredictionFutureView> selectList(WindPredictionFutureView record);
/**
* 批量删除
*
* @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);
/**
* 批量新增
*
* @param list 列表
* @return int
*/
int insertBatch(List<WindPredictionFutureView> list);
}
package pps.core.base.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import pps.core.base.entity.WindPredictionHistoryEnt;
/**
* 风预测历史数据
*
* @author ZWT
* @date 2024/08/29
*/
@Repository(value = "pps.core.base.mapper.WindPredictionHistoryMapper")
public interface WindPredictionHistoryMapper extends BaseMapper<WindPredictionHistoryEnt> {
}
package pps.core.base.mapper;
import org.springframework.stereotype.Repository;
import pps.core.base.entity.WindPredictionHistoryView;
import java.util.List;
/**
* 风预测历史数据
*
* @author ZWT
* @date 2024/08/29
*/
@Repository(value = "pps.core.base.mapper.WindPredictionHistoryViewMapper")
public interface WindPredictionHistoryViewMapper {
WindPredictionHistoryView selectOne(WindPredictionHistoryView record);
List<WindPredictionHistoryView> selectList(WindPredictionHistoryView record);
}
...@@ -29,10 +29,10 @@ import java.util.List; ...@@ -29,10 +29,10 @@ import java.util.List;
@XService @XService
public class BaseLineService { public class BaseLineService {
@XText("天气") @XText("天气")
@XApiGet @XApiGet(anonymous = true)
public XServiceResult test(XContext context) { public XServiceResult test(XContext context) {
BaseWeatherCloudServiceImpl bean = context.getBean(BaseWeatherCloudServiceImpl.class); BaseWeatherCloudServiceImpl bean = context.getBean(BaseWeatherCloudServiceImpl.class);
bean.weatherDataProcess(context, "CQ"); bean.weatherDataProcess(context, "SY");
return XServiceResult.OK; return XServiceResult.OK;
} }
......
...@@ -112,7 +112,7 @@ ...@@ -112,7 +112,7 @@
p.area_code, p.area_code,
a.city_code a.city_code
FROM base_photovoltaic_plant p FROM base_photovoltaic_plant p
LEFT JOIN sys_area a ON a.id = p.area_code JOIN sys_area a ON a.id = p.area_code
WHERE p.is_deleted = 1 WHERE p.is_deleted = 1
AND p.area_code IS NOT NULL AND p.area_code IS NOT NULL
<if test="ouIdNotIn != null and ouIdNotIn.size() > 0"> <if test="ouIdNotIn != null and ouIdNotIn.size() > 0">
......
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="pps.core.base.mapper.BaseWindTurbineViewMapper"> <mapper namespace="pps.core.base.mapper.BaseWindTurbineViewMapper">
<resultMap id="BaseResultMap" type="pps.core.base.entity.BaseWindTurbineView"> <resultMap id="BaseResultMap" type="pps.core.base.entity.BaseWindTurbineView">
<id column="id" property="id" jdbcType="VARCHAR" /> <id column="id" property="id" jdbcType="VARCHAR"/>
<result column="is_deleted" property="isDeleted" jdbcType="INTEGER" /> <result column="is_deleted" property="isDeleted" jdbcType="INTEGER"/>
<result column="create_by_id" property="createById" jdbcType="VARCHAR" /> <result column="create_by_id" property="createById" jdbcType="VARCHAR"/>
<result column="create_by_name" property="createByName" jdbcType="VARCHAR" /> <result column="create_by_name" property="createByName" jdbcType="VARCHAR"/>
<result column="create_time" property="createTime" jdbcType="DATE" /> <result column="create_time" property="createTime" jdbcType="DATE"/>
<result column="modify_by_id" property="modifyById" jdbcType="VARCHAR" /> <result column="modify_by_id" property="modifyById" jdbcType="VARCHAR"/>
<result column="modify_by_name" property="modifyByName" jdbcType="VARCHAR" /> <result column="modify_by_name" property="modifyByName" jdbcType="VARCHAR"/>
<result column="modify_time" property="modifyTime" jdbcType="DATE" /> <result column="modify_time" property="modifyTime" jdbcType="DATE"/>
<result column="ou_id" property="ouId" jdbcType="VARCHAR" /> <result column="ou_id" property="ouId" jdbcType="VARCHAR"/>
<result column="ou_name" property="ouName" jdbcType="VARCHAR" /> <result column="ou_name" property="ouName" jdbcType="VARCHAR"/>
<result column="station_name" property="stationName" jdbcType="VARCHAR" /> <result column="station_name" property="stationName" jdbcType="VARCHAR"/>
<result column="total_power" property="totalPower" jdbcType="DECIMAL" /> <result column="total_power" property="totalPower" jdbcType="DECIMAL"/>
<result column="diameter" property="diameter" jdbcType="DECIMAL" /> <result column="diameter" property="diameter" jdbcType="DECIMAL"/>
<result column="vane_length" property="vaneLength" jdbcType="DECIMAL" /> <result column="vane_length" property="vaneLength" jdbcType="DECIMAL"/>
<result column="hub_height" property="hubHeight" jdbcType="DECIMAL" /> <result column="hub_height" property="hubHeight" jdbcType="DECIMAL"/>
<result column="longitude" property="longitude" jdbcType="DECIMAL" /> <result column="longitude" property="longitude" jdbcType="DECIMAL"/>
<result column="latitude" property="latitude" jdbcType="DECIMAL" /> <result column="latitude" property="latitude" jdbcType="DECIMAL"/>
<result column="elevation" property="elevation" jdbcType="DECIMAL" /> <result column="elevation" property="elevation" jdbcType="DECIMAL"/>
<result column="area_code" property="areaCode" jdbcType="INTEGER" /> <result column="area_code" property="areaCode" jdbcType="INTEGER"/>
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, id
,
is_deleted, is_deleted,
create_by_id, create_by_id,
create_by_name, create_by_name,
...@@ -42,28 +43,63 @@ ...@@ -42,28 +43,63 @@
latitude, latitude,
elevation, elevation,
area_code area_code
</sql> </sql>
<select id="selectOne" parameterType="pps.core.base.entity.BaseWindTurbineView" resultMap="BaseResultMap"> <select id="selectOne" parameterType="pps.core.base.entity.BaseWindTurbineView" resultMap="BaseResultMap">
select select
<include refid="Base_Column_List" /> <include refid="Base_Column_List"/>
from base_wind_turbine from base_wind_turbine
where where
id=#{id} id=#{id}
</select> </select>
<select id="selectList" parameterType="pps.core.base.entity.BaseWindTurbineView" resultMap="BaseResultMap"> <select id="selectList" parameterType="pps.core.base.entity.BaseWindTurbineView" resultMap="BaseResultMap">
select select
<include refid="Base_Column_List"/> <include refid="Base_Column_List"/>
from base_wind_turbine from base_wind_turbine
where where
is_deleted = 1 is_deleted = 1
AND ou_id in AND ou_id in
<foreach collection="ouList" open="(" close=")" separator="," item="item"> <foreach collection="ouList" open="(" close=")" separator="," item="item">
#{item} #{item}
</foreach> </foreach>
<if test="stationName != null and stationName != ''"> <if test="stationName != null and stationName != ''">
AND station_name LIKE CONCAT( '%', #{stationName}, '%' ) AND station_name LIKE CONCAT( '%', #{stationName}, '%' )
</if> </if>
ORDER BY ORDER BY
station_name ASC station_name ASC
</select> </select>
<resultMap id="ExtResultMap" type="pps.core.base.entity.BaseWindTurbineView" extends="BaseResultMap">
<result column="city_code" property="cityCode" jdbcType="VARCHAR"/>
</resultMap>
<select id="selectWindTurbineList" resultMap="ExtResultMap">
SELECT p.id,
p.is_deleted,
p.create_by_id,
p.create_by_name,
p.create_time,
p.modify_by_id,
p.modify_by_name,
p.modify_time,
p.ou_id,
p.ou_name,
p.station_name,
p.total_power,
p.diameter,
p.vane_length,
p.hub_height,
p.longitude,
p.latitude,
p.elevation,
p.area_code,
a.city_code
FROM base_wind_turbine p
JOIN sys_area a ON a.id = p.area_code
WHERE p.is_deleted = 1
AND p.area_code IS NOT NULL
<if test="ouId != null and ouId != ''">
AND p.ou_id = #{ouId}
</if>
ORDER BY modify_time DESC
</select>
</mapper> </mapper>
\ No newline at end of file
<?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.WindPredictionFutureViewMapper">
<resultMap id="BaseResultMap" type="pps.core.base.entity.WindPredictionFutureView">
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="station_id" property="stationId" jdbcType="VARCHAR"/>
<result column="data_time" property="dataTime" jdbcType="DATE"/>
<result column="wind_direction" property="windDirection" jdbcType="INTEGER"/>
<result column="wind_speed" property="windSpeed" jdbcType="DECIMAL"/>
<result column="air_temperature" property="airTemperature" jdbcType="DECIMAL"/>
<result column="humidity" property="humidity" jdbcType="DECIMAL"/>
<result column="pressure" property="pressure" jdbcType="DECIMAL"/>
<result column="actual_wind_speed" property="actualWindSpeed" jdbcType="DECIMAL"/>
<result column="actual_power" property="actualPower" jdbcType="DECIMAL"/>
<result column="predicted_power" property="predictedPower" jdbcType="DECIMAL"/>
</resultMap>
<sql id="Base_Column_List">
id
,
station_id,
data_time,
wind_direction,
wind_speed,
air_temperature,
humidity,
pressure,
actual_wind_speed,
actual_power,
predicted_power
</sql>
<select id="selectOne" parameterType="pps.core.base.entity.WindPredictionFutureView" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from wind_prediction_future
where
id=#{id}
</select>
<select id="selectList" parameterType="pps.core.base.entity.WindPredictionFutureView" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from wind_prediction_future
where
id=#{id}
</select>
<delete id="deleteBatch" parameterType="list">
DELETE FROM wind_prediction_future
WHERE
station_id IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
AND data_time BETWEEN #{create}
AND #{end}
</delete>
<insert id="insertBatch" parameterType="java.util.List">
INSERT INTO wind_prediction_future (station_id, data_time, wind_direction, wind_speed, air_temperature,
humidity, pressure ) VALUES
<foreach collection="list" separator="," item="item">
(
#{item.stationId},
#{item.dataTime},
#{item.windDirection},
#{item.windSpeed},
#{item.airTemperature},
#{item.humidity},
#{item.pressure}
)
</foreach>
</insert>
</mapper>
\ No newline at end of file
<?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.WindPredictionHistoryViewMapper">
<resultMap id="BaseResultMap" type="pps.core.base.entity.WindPredictionHistoryView">
<id column="id" property="id" jdbcType="BIGINT" />
<result column="station_id" property="stationId" jdbcType="VARCHAR" />
<result column="data_time" property="dataTime" jdbcType="DATE" />
<result column="wind_direction" property="windDirection" jdbcType="INTEGER" />
<result column="wind_speed" property="windSpeed" jdbcType="DECIMAL" />
<result column="air_temperature" property="airTemperature" jdbcType="DECIMAL" />
<result column="humidity" property="humidity" jdbcType="DECIMAL" />
<result column="pressure" property="pressure" jdbcType="DECIMAL" />
<result column="actual_wind_speed" property="actualWindSpeed" jdbcType="DECIMAL" />
<result column="actual_power" property="actualPower" jdbcType="DECIMAL" />
<result column="predicted_power" property="predictedPower" jdbcType="DECIMAL" />
</resultMap>
<sql id="Base_Column_List">
id
,
station_id,
data_time,
wind_direction,
wind_speed,
air_temperature,
humidity,
pressure,
actual_wind_speed,
actual_power,
predicted_power
</sql>
<select id="selectOne" parameterType="pps.core.base.entity.WindPredictionHistoryView" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from wind_prediction_history
where
id=#{id}
</select>
<select id="selectList" parameterType="pps.core.base.entity.WindPredictionHistoryView" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from wind_prediction_history
where
id=#{id}
</select>
</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