Commit 9b80b434 authored by ZWT's avatar ZWT

feat(零碳): 长庆

1.添加easy excel配置,增加转换器,增加全局excel导出样式,增加场站下拉选解析器;
2.开发光伏电站模板导出接口,增加模板导出类,并完成接口冒烟测试及接口文档;
3.间开制度管理模块新增设为基础制度开关接口,添加线上接口文档并完成接口冒烟测试;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 867a5f12
package pps.core.prediction.excel.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import pps.core.prediction.service.ThirdDataAccessCloudServiceImpl;
import pps.core.prediction.service.data.third_active_power.ThirdActivePowerExcelData;
import xstartup.base.XContext;
import java.util.ArrayList;
import java.util.List;
/**
* 有功功率监听器
*
* @author ZWT
* @date 2024/04/30 11:04
*/
public class ThirdActivePowerDataListener implements ReadListener<ThirdActivePowerExcelData> {
private XContext context;
public ThirdActivePowerDataListener(XContext context) {
this.context = context;
}
/**
* 缓存的数据
*/
private List<ThirdActivePowerExcelData> cachedDataList = new ArrayList<>(4096);
@Override
public void invoke(ThirdActivePowerExcelData thirdApiWeatherData, AnalysisContext analysisContext) {
cachedDataList.add(thirdApiWeatherData);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
ThirdDataAccessCloudServiceImpl bean = context.getBean(ThirdDataAccessCloudServiceImpl.class);
bean.thirdActivePowerHistory(context, cachedDataList);
}
}
......@@ -29,6 +29,16 @@ public interface ThirdActivePowerDailyUpdateViewMapper {
int deleteByCurrentDayData(@Param(value = "list") List<ThirdActivePowerDailyUpdateView> list,
@Param(value = "currentDay") Date currentDay);
/**
* 删除当日最新数据
*
* @param list 列表
* @param currentDayList 日期列表
* @return int
*/
int deleteByCurrentDayDataList(@Param(value = "list") List<ThirdActivePowerDailyUpdateView> list,
@Param(value = "currentDayList") List<Date> currentDayList);
/**
* 批量新增
*
......
......@@ -16,6 +16,7 @@ import pps.core.prediction.constant.ThirdPartyApiConstant;
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_active_power.ThirdActivePowerExcelData;
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;
......@@ -385,6 +386,80 @@ public class ThirdDataAccessCloudServiceImpl implements IThirdDataAccessCloudSer
return XServiceResult.OK;
});
}
/**
* 第三有功功率历史
*
* @param context 上下文
* @param cachedDataList 缓存数据列表
* @return {@link XServiceResult}
*/
public XServiceResult thirdActivePowerHistory(XContext context, List<ThirdActivePowerExcelData> cachedDataList) {
Map<String, String> collect = this.getPhotovoltaicPlantMap(context);
LambdaQueryWrapper<ThirdActivePowerEnt> queryWrapper = new LambdaQueryWrapper<ThirdActivePowerEnt>()
.select(ThirdActivePowerEnt::getId);
List<ThirdActivePowerView> dtoList = new ArrayList<>(cachedDataList.size());
List<ThirdActivePowerDailyUpdateView> dtoDailyList = new ArrayList<>(cachedDataList.size());
BigDecimal photovoltaicPower;
BigDecimal meterPower;
for (ThirdActivePowerExcelData o : cachedDataList) {
photovoltaicPower = Optional.ofNullable(o.getPhotovoltaicPower())
.orElse(BigDecimal.ZERO)
.abs();
meterPower = Optional.ofNullable(o.getMeterPower())
.orElse(BigDecimal.ZERO)
.abs();
dtoList.add(
ThirdActivePowerView.builder()
.stationName(o.getStationName())
.stationId(collect.get(o.getStationName()))
.createDate(o.getCreateDate())
.photovoltaicPower(photovoltaicPower)
.meterPower(meterPower)
.systemSource(ThirdPartyApiConstant.CQ_SOURCE)
.inputTime(o.getCreateDate())
.build()
);
queryWrapper.or(w -> w.eq(ThirdActivePowerEnt::getStationName, o.getStationName())
.eq(ThirdActivePowerEnt::getCreateDate, o.getCreateDate())
.eq(ThirdActivePowerEnt::getSystemSource, ThirdPartyApiConstant.CQ_SOURCE)
);
dtoDailyList.add(
ThirdActivePowerDailyUpdateView.builder()
.stationName(o.getStationName())
.stationId(collect.get(o.getStationName()))
.createDate(o.getCreateDate())
.photovoltaicPower(photovoltaicPower)
.meterPower(meterPower)
.systemSource(ThirdPartyApiConstant.CQ_SOURCE)
.saveDate(DateUtil.beginOfDay(o.getCreateDate()))
.saveHour(DateUtil.beginOfHour(o.getCreateDate()))
.build()
);
}
return XTransactionHelper.begin(context, () -> {
//删除重复数据
ThirdActivePowerMapper powerMapper = context.getBean(ThirdActivePowerMapper.class);
List<ThirdActivePowerEnt> list = powerMapper.selectList(queryWrapper);
if (CollUtil.isNotEmpty(list)) {
powerMapper.deleteBatchIds(list.stream()
.map(ThirdActivePowerEnt::getId)
.collect(Collectors.toList()));
}
ThirdActivePowerViewMapper mapper = context.getBean(ThirdActivePowerViewMapper.class);
//保存历史数据
mapper.batchInsertList(dtoList);
ThirdActivePowerDailyUpdateViewMapper dailyMapper = context.getBean(ThirdActivePowerDailyUpdateViewMapper.class);
//删除当日最新数据
dailyMapper.deleteByCurrentDayDataList(dtoDailyList, dtoDailyList.stream()
.map(ThirdActivePowerDailyUpdateView::getSaveHour)
.distinct()
.collect(Collectors.toList()));
//保存当日最新数据
dailyMapper.batchInsertList(dtoDailyList);
return XServiceResult.OK;
});
}
/*----------------------------------- private -----------------------------------*/
......
......@@ -2,6 +2,7 @@ package pps.core.prediction.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
......@@ -11,7 +12,9 @@ import org.apache.commons.lang3.StringUtils;
import pps.core.auth.HttpRequestClient;
import pps.core.prediction.constant.ThirdPartyApiConstant;
import pps.core.prediction.entity.WellheadDailyProductionSituationEnt;
import pps.core.prediction.excel.listener.ThirdActivePowerDataListener;
import pps.core.prediction.mapper.WellheadDailyProductionSituationMapper;
import pps.core.prediction.service.data.third_active_power.ThirdActivePowerExcelData;
import pps.core.prediction.service.data.wellhead_daily_production_situation.GetWellheadDailyProductionSituationInput;
import pps.core.prediction.service.data.wellhead_daily_production_situation.GetWellheadDailyProductionSituationOutput;
import pps.core.prediction.service.data.wellhead_daily_production_situation.QueryWellheadDailyProductionSituationInput;
......@@ -196,4 +199,12 @@ public class WellheadDailyProductionSituationService {
}
return XServiceResult.OK;
}
@XText("有功功率历史数据导入")
@XApiGet(anonymous = true)
public XServiceResult importHistory(XContext context) {
String fileName = "D:\\home\\历史数据汇总.xlsx";
EasyExcel.read(fileName, ThirdActivePowerExcelData.class, new ThirdActivePowerDataListener(context)).sheet().doRead();
return XServiceResult.OK;
}
}
\ No newline at end of file
package pps.core.prediction.service.data.third_active_power;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* 第三方有功功率导入
*
* @author ZWT
* @date 2024/05/08 15:41
*/
@Data
@ExcelIgnoreUnannotated
public class ThirdActivePowerExcelData {
@ExcelProperty(value = "STATIONNAME")
private String stationName;
@ExcelProperty(value = "TS")
private Date createDate;
@ExcelProperty(value = "NBQ1_P")
private BigDecimal photovoltaicPower;
@ExcelProperty(value = "PJ_P")
private BigDecimal meterPower;
}
......@@ -51,6 +51,19 @@
</foreach>
</delete>
<delete id="deleteByCurrentDayDataList" parameterType="java.util.List">
delete
from third_active_power_daily_update
where save_hour IN
<foreach collection="currentDayList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
and station_name IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item.stationName}
</foreach>
</delete>
<insert id="batchInsertList" parameterType="java.util.List">
insert into third_active_power_daily_update (station_name, station_id, create_date, photovoltaic_power,
meter_power,
......
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