Commit dec4e87b authored by ZWT's avatar ZWT

feat(吉林演示): 松原

1.天气数据接收定时任务,解决代码扫描问题,修改文件读取相关代码,解决资源未关流问题;
2.修改登录验证码生成工具类,解决代码扫描问题,修复随机数不安全问题;
3.删除除主程序启动类外其他启动类模块,解决代码扫描问题;
4.删除自定义httputlis类,解决代码扫描问题,替换部分代码远程调用方法;
5.重构光伏预测模块下载电站实际发电数据导入模板接口,解决代码扫描问题;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 48bb8af9
......@@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.io.NioUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil;
......@@ -383,24 +382,6 @@ public class BaseWeatherCloudServiceImpl implements IBaseWeatherCloudService {
return filePath;
}
/**
* 保存临时文件
*
* @param fileName 文件名
* @param in 在里面
* @return {@link String}
*/
private String saveTempFile(String fileName, InputStream in) {
StringBuilder stringBuilder = new StringBuilder(storeDir)
.append(File.separator)
.append(DateTime.now().toString("yyyyMMdd"));
String filePath = stringBuilder.append(File.separator).append(fileName).toString();
FileUtil.touch(filePath);
FileUtil.writeFromStream(in, filePath);
IoUtil.close(in);
return filePath;
}
/**
* 保存临时文件
*
......
package pps.core.prediction.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.excel.EasyExcelFactory;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import pps.core.common.constant.BusinessConstant;
import pps.core.common.excel.util.EasyExcelUtil;
import pps.core.common.excel.util.ExcelStyleTool;
import pps.core.common.utils.ExcelUtils;
import pps.core.common.utils.ExportExcelUtils;
import pps.core.prediction.entity.PlantPowerDataEnt;
import pps.core.prediction.entity.PlantPowerDataView;
import pps.core.prediction.enums.ImportFieldDic;
import pps.core.prediction.mapper.PlantPowerDataMapper;
import pps.core.prediction.mapper.PlantPowerDataViewMapper;
import pps.core.prediction.service.data.plant_power_data.ExcelPlantPowerTemplate;
import pps.core.prediction.service.data.plant_power_data.ImportFileInput;
import pps.core.prediction.service.data.plant_power_data.QueryPlantPowerDataInput;
import pps.core.prediction.service.data.plant_power_data.QueryPlantPowerDataOutput;
......@@ -28,7 +34,7 @@ import xstartup.feature.api.annotation.XApiGet;
import xstartup.feature.api.annotation.XApiUpload;
import xstartup.feature.mybatis.helper.XMapperHelper;
import java.io.InputStream;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
......@@ -49,22 +55,39 @@ public class PlantPowerDataService {
return XMapperHelper.query(mapper, input, queryWrapper, QueryPlantPowerDataOutput.class);
}
/**
* 下载导入模板
*
* @param context 上下文
* @return {@link XFileResult }
*/
@XText("下载电站实际发电数据导入模板")
@XApiGet
public XFileResult downloadImportTemplate(XContext context) {
String today = DateUtil.formatDate(DateUtil.date());
String fileSavePath = XStorageTool.getAbsolutePath("/temp/excel/导入模板_" + DateUtil.formatDate(DateUtil.date()) + ".xlsx");
String templateFilePath = "template/import_plant_data_template.xlsx";
try (InputStream templateInputStream = this.getClass().getClassLoader().getResourceAsStream(templateFilePath)) {
byte[] excelContent = ExportExcelUtils.genSingleExcelFileData(templateInputStream, null);
ExportExcelUtils.outputFileData(excelContent, fileSavePath);
} catch (Exception e) {
context.getLogger().error(e);
}
//生成模板
EasyExcelFactory.write(FileUtil.touch(fileSavePath))
.registerWriteHandler(ExcelStyleTool.getStyleStrategy())
.autoCloseStream(Boolean.TRUE)
.build()
.write(CollUtil.list(false, ExcelPlantPowerTemplate.builder()
.dataDate(today)
.windSpeed(BusinessConstant.BIG_DECIMAL_6_67)
.windDirection(BigDecimal.ZERO)
.temperature(BusinessConstant.BIG_DECIMAL_4)
.pressure(BigDecimal.ONE)
.humidity(BusinessConstant.BIG_DECIMAL_3)
.planeIrradiance(BusinessConstant.BIG_DECIMAL_2)
.horizontalIrradiance(BusinessConstant.BIG_DECIMAL_4)
.power(BusinessConstant.BIG_DECIMAL_60)
.build()), EasyExcelUtil.writeSelectedSheet(ExcelPlantPowerTemplate.class, 0, "导入模板"))
.finish();
return XFileResult.success(XFileType.APPLICATION_XLSX, fileSavePath);
}
@XText("导入电站实际发电数据")
@XApiUpload
@XApiUpload(anonymous = true)
public XServiceResult importPlantPowerData(XContext context, ImportFileInput input) {
List<String> headerList = getExcelHeaderList();
List<Map<String, Object>> mapList = ExcelUtils.readExcel(input.getFile().getInputStream(), input.getFile().getFileName(), headerList, 0);
......
package pps.core.prediction.service.data.plant_power_data;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* excel预测算法训练
*
* @author ZWT
* @date 2024/09/12
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ColumnWidth(value = 25)
public class ExcelPlantPowerTemplate implements Serializable {
private static final long serialVersionUID = -6773651457799858074L;
/**
* 日期
*/
@ExcelProperty(index = 0, value = "日期")
private String dataDate;
/**
* 风速
*/
@ExcelProperty(index = 1, value = "风速")
private BigDecimal windSpeed;
/**
* 风向
*/
@ExcelProperty(index = 2, value = "风向")
private BigDecimal windDirection;
/**
* 温度
*/
@ExcelProperty(index = 3, value = "温度")
private BigDecimal temperature;
/**
* 压强
*/
@ExcelProperty(index = 4, value = "压强")
private BigDecimal pressure;
/**
* 湿度
*/
@ExcelProperty(index = 5, value = "湿度")
private BigDecimal humidity;
/**
* 组件平面辐照度
*/
@ExcelProperty(index = 6, value = "组件平面辐照度")
private BigDecimal planeIrradiance;
/**
* 全水平辐照度
*/
@ExcelProperty(index = 7, value = "全水平辐照度")
private BigDecimal horizontalIrradiance;
/**
* 实际功率
*/
@ExcelProperty(index = 8, value = "实际功率")
private BigDecimal power;
}
\ 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