Commit 1e318aa3 authored by ZWT's avatar ZWT

feat(吉林演示): 松原

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

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 30224d8e
...@@ -23,30 +23,6 @@ ...@@ -23,30 +23,6 @@
<artifactId>guava</artifactId> <artifactId>guava</artifactId>
<version>32.0.0-android</version> <version>32.0.0-android</version>
</dependency> </dependency>
<!--POI start-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls</artifactId>
<version>2.4.6</version>
</dependency>
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls-poi</artifactId>
<version>1.0.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
<scope>compile</scope>
</dependency>
<!--POI end-->
<dependency> <dependency>
<groupId>com.belerweb</groupId> <groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId> <artifactId>pinyin4j</artifactId>
......
package pps.core.common.utils;
import cn.hutool.core.collection.CollUtil;
import org.jxls.common.Context;
import org.jxls.expression.JexlExpressionEvaluator;
import org.jxls.transform.Transformer;
import org.jxls.util.JxlsHelper;
import java.io.*;
import java.nio.file.Files;
import java.util.HashMap;
import java.util.Map;
/**
* Description:模板导出工具类
* date: 2020/8/20 18:56
*
* @author zjw
*/
public class ExportExcelUtils {
public static void outputFileData(byte[] fileBuff, String filePath) {
File file = new File(filePath);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
try (OutputStream out = Files.newOutputStream(file.toPath())) {
out.write(fileBuff);
out.flush();
} catch (IOException ignored) {
}
}
/**
* 根据参数生成excel文件的二进制数据
*
* @param inputStream excel模板路径
* @param params 模板中相关参数的Map
* @return 生成文件的byte数组
*/
public static byte[] genSingleExcelFileData(InputStream inputStream, Map<String, Object> params) {
Context context = new Context();
if (CollUtil.isNotEmpty(params)) {
for (String key : params.keySet()) {
context.putVar(key, params.get(key));
}
}
ByteArrayOutputStream buff = new ByteArrayOutputStream();
try {
JxlsHelper jxlsHelper = JxlsHelper.getInstance();
Transformer transformer = jxlsHelper.createTransformer(inputStream, buff);
JexlExpressionEvaluator evaluator = (JexlExpressionEvaluator) transformer.getTransformationConfig().getExpressionEvaluator();
Map<String, Object> funcs = new HashMap<>();
funcs.put("utils", new JxlsUtils()); //添加自定义功能
evaluator.getJexlEngine().setFunctions(funcs);
jxlsHelper.processTemplate(context, transformer);
} catch (IOException ignored) {
}
return buff.toByteArray();
}
}
\ No newline at end of file
package pps.core.common.utils;
import cn.hutool.core.util.ObjectUtil;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Description:
* date: 2021/3/31 16:15
*
* @author zhujiangwei
*/
public class JxlsUtils {
public String dateFormat(Date date) {
return this.dateFormat(date, "yyyy-MM-dd");
}
public String dateFormat(Date date, String pattern) {
if (ObjectUtil.isNull(date)) {
return "";
}
try {
SimpleDateFormat dateFmt = new SimpleDateFormat(pattern);
return dateFmt.format(date);
} catch (Exception ignored) {
}
return "";
}
}
\ No newline at end of file
package pps.core.base.service; package pps.core.base.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; 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;
...@@ -10,34 +9,29 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; ...@@ -10,34 +9,29 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import pps.core.base.entity.BaseDataEnt; import pps.core.base.entity.BaseDataEnt;
import pps.core.base.entity.BaseDataImportLogEnt; import pps.core.base.entity.BaseDataImportLogEnt;
import pps.core.base.entity.BaseDataView;
import pps.core.base.entity.BaseModelValEnt; import pps.core.base.entity.BaseModelValEnt;
import pps.core.base.enums.ImportFieldDic; import pps.core.base.enums.ImportFieldDic;
import pps.core.base.mapper.BaseDataImportLogMapper; import pps.core.base.mapper.BaseDataImportLogMapper;
import pps.core.base.mapper.BaseDataMapper; import pps.core.base.mapper.BaseDataMapper;
import pps.core.base.mapper.BaseDataViewMapper;
import pps.core.base.mapper.BaseModelValMapper; import pps.core.base.mapper.BaseModelValMapper;
import pps.core.base.service.data.base_data.*; import pps.core.base.service.data.base_data.*;
import pps.core.base.service.data.base_line.ImportFileInput;
import pps.core.common.constant.BusinessConstant; import pps.core.common.constant.BusinessConstant;
import pps.core.common.utils.ExcelUtils;
import pps.core.common.utils.ExportExcelUtils;
import xstartup.annotation.XService; import xstartup.annotation.XService;
import xstartup.annotation.XText; import xstartup.annotation.XText;
import xstartup.base.XContext; import xstartup.base.XContext;
import xstartup.base.data.CustomQueryInput; import xstartup.base.data.CustomQueryInput;
import xstartup.base.tool.XStorageTool;
import xstartup.base.util.XCopyUtils; import xstartup.base.util.XCopyUtils;
import xstartup.base.util.XHttpUtils; import xstartup.base.util.XHttpUtils;
import xstartup.base.util.XJsonUtils; import xstartup.base.util.XJsonUtils;
import xstartup.data.*; import xstartup.data.XListResult;
import xstartup.data.XPageResult;
import xstartup.data.XServiceResult;
import xstartup.data.XSingleResult;
import xstartup.error.XError; import xstartup.error.XError;
import xstartup.feature.api.annotation.XApiGet; import xstartup.feature.api.annotation.XApiGet;
import xstartup.feature.api.annotation.XApiPost; import xstartup.feature.api.annotation.XApiPost;
import xstartup.feature.api.annotation.XApiUpload;
import xstartup.feature.mybatis.helper.XMapperHelper; import xstartup.feature.mybatis.helper.XMapperHelper;
import java.io.InputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -195,70 +189,70 @@ public class BaseDataService { ...@@ -195,70 +189,70 @@ public class BaseDataService {
return XMapperHelper.query(mapper, input, BaseDataEnt.class, QueryBaseDataOutput.class); return XMapperHelper.query(mapper, input, BaseDataEnt.class, QueryBaseDataOutput.class);
} }
@XText("下载导入模板") // @XText("下载导入模板")
@XApiGet // @XApiGet
public XFileResult downloadImportTemplate(XContext context) { // public XFileResult downloadImportTemplate(XContext context) {
String fileSavePath = XStorageTool.getAbsolutePath("/temp/excel/导入模板_" + DateUtil.formatDate(new Date()) + ".xlsx"); // String fileSavePath = XStorageTool.getAbsolutePath("/temp/excel/导入模板_" + DateUtil.formatDate(new Date()) + ".xlsx");
String templateFilePath = "template/import_template.xlsx"; // String templateFilePath = "template/import_template.xlsx";
InputStream templateInputStream = this.getClass().getClassLoader().getResourceAsStream(templateFilePath); // InputStream templateInputStream = this.getClass().getClassLoader().getResourceAsStream(templateFilePath);
byte[] excelContent = ExportExcelUtils.genSingleExcelFileData(templateInputStream, null); // byte[] excelContent = ExportExcelUtils.genSingleExcelFileData(templateInputStream, null);
try { // try {
ExportExcelUtils.outputFileData(excelContent, fileSavePath); // ExportExcelUtils.outputFileData(excelContent, fileSavePath);
} catch (Exception e) { // } catch (Exception e) {
context.getLogger().error(e); // context.getLogger().error(e);
} // }
return XFileResult.success(XFileType.APPLICATION_XLSX, fileSavePath); // return XFileResult.success(XFileType.APPLICATION_XLSX, fileSavePath);
} // }
//
@XText("新增导入") // @XText("新增导入")
@XApiUpload // @XApiUpload
public XServiceResult importFile(XContext context, ImportFileInput input) { // public XServiceResult importFile(XContext context, ImportFileInput input) {
List<String> headerList = getExcelHeaderList(); // List<String> headerList = getExcelHeaderList();
List<Map<String, Object>> mapList = ExcelUtils.readExcel(input.getFile().getInputStream(), input.getFile().getFileName(), headerList, 0); // List<Map<String, Object>> mapList = ExcelUtils.readExcel(input.getFile().getInputStream(), input.getFile().getFileName(), headerList, 0);
try { // try {
List<BaseDataView> dataList = new ArrayList<>(mapList.size()); // List<BaseDataView> dataList = new ArrayList<>(mapList.size());
Date minDate = null; // Date minDate = null;
Date maxDate = null; // Date maxDate = null;
for (Map<String, Object> objectMap : mapList) { // for (Map<String, Object> objectMap : mapList) {
BaseDataView dataView = BeanUtil.toBean(objectMap, BaseDataView.class); // BaseDataView dataView = BeanUtil.toBean(objectMap, BaseDataView.class);
dataView.setOuId(input.getWellOuId()); // dataView.setOuId(input.getWellOuId());
dataView.setLineId(input.getLineId()); // dataView.setLineId(input.getLineId());
if (ObjectUtil.isNotNull(dataView.getDataDate())) { // if (ObjectUtil.isNotNull(dataView.getDataDate())) {
if (ObjectUtil.isNull(minDate)) { // if (ObjectUtil.isNull(minDate)) {
minDate = dataView.getDataDate(); // minDate = dataView.getDataDate();
maxDate = dataView.getDataDate(); // maxDate = dataView.getDataDate();
} // }
if (DateUtil.compare(minDate, dataView.getDataDate()) > 0) { // if (DateUtil.compare(minDate, dataView.getDataDate()) > 0) {
minDate = dataView.getDataDate(); // minDate = dataView.getDataDate();
} else if (DateUtil.compare(maxDate, dataView.getDataDate()) < 0) { // } else if (DateUtil.compare(maxDate, dataView.getDataDate()) < 0) {
maxDate = dataView.getDataDate(); // maxDate = dataView.getDataDate();
} // }
} // }
dataList.add(dataView); // dataList.add(dataView);
} // }
if (ObjectUtil.isNull(minDate)) { // if (ObjectUtil.isNull(minDate)) {
return XServiceResult.error(1000, "日期错误"); // return XServiceResult.error(1000, "日期错误");
} // }
BaseDataMapper mapper = context.getBean(BaseDataMapper.class); // BaseDataMapper mapper = context.getBean(BaseDataMapper.class);
mapper.delete(new LambdaQueryWrapper<BaseDataEnt>() // mapper.delete(new LambdaQueryWrapper<BaseDataEnt>()
.eq(BaseDataEnt::getLineId, input.getLineId()) // .eq(BaseDataEnt::getLineId, input.getLineId())
.ge(BaseDataEnt::getDataDate, minDate) // .ge(BaseDataEnt::getDataDate, minDate)
.le(BaseDataEnt::getDataDate, maxDate)); // .le(BaseDataEnt::getDataDate, maxDate));
BaseDataViewMapper viewMapper = context.getBean(BaseDataViewMapper.class); // BaseDataViewMapper viewMapper = context.getBean(BaseDataViewMapper.class);
viewMapper.batchInsert(dataList); // viewMapper.batchInsert(dataList);
BaseDataImportLogMapper logMapper = context.getBean(BaseDataImportLogMapper.class); // BaseDataImportLogMapper logMapper = context.getBean(BaseDataImportLogMapper.class);
BaseDataImportLogEnt ent = new BaseDataImportLogEnt(); // BaseDataImportLogEnt ent = new BaseDataImportLogEnt();
ent.setOuId(input.getWellOuId()); // ent.setOuId(input.getWellOuId());
ent.setLineId(input.getLineId()); // ent.setLineId(input.getLineId());
ent.setBeginDate(minDate); // ent.setBeginDate(minDate);
ent.setEndDate(maxDate); // ent.setEndDate(maxDate);
ent.setCreateTime(new Date()); // ent.setCreateTime(new Date());
logMapper.insert(ent); // logMapper.insert(ent);
} catch (Exception e) { // } catch (Exception e) {
return XServiceResult.error(-1, e.getMessage()); // return XServiceResult.error(-1, e.getMessage());
} // }
return XServiceResult.OK; // return XServiceResult.OK;
} // }
private List<String> getExcelHeaderList() { private List<String> getExcelHeaderList() {
List<Map<String, Object>> fieldList = new ArrayList<>(); List<Map<String, Object>> fieldList = new ArrayList<>();
......
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