Commit 351fbc36 authored by ZWT's avatar ZWT

feat(零碳): 长庆

1.添加easy excel配置,增加转换器,增加全局excel导出样式,增加场站下拉选解析器;
2.开发光伏电站模板导出接口,增加模板导出类,并完成接口冒烟测试及接口文档;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent b575cda4
package pps.core.base.config.excel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.metadata.style.WriteFont;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import java.util.List;
/**
* excel样式工具
*
* @author ZWT
* @date 2024/03/04
*/
public class ExcelStyleTool {
/**
* 写入sheet页
*
* @param excelWriter 优秀作家
* @param sheetNo 图纸编号
* @param sheetName 图纸名称
* @param clazz 拍手
* @param data 数据
*/
public static void writeSheet(ExcelWriter excelWriter, Integer sheetNo, String sheetName, Class<?> clazz, List data) {
WriteSheet writeSheet = new WriteSheet();
writeSheet.setClazz(clazz);
writeSheet.setSheetNo(sheetNo);
writeSheet.setSheetName(sheetName);
excelWriter.write(data, writeSheet);
}
/**
* 设置自定义样式
*
* @return {@link HorizontalCellStyleStrategy}
*/
public static HorizontalCellStyleStrategy getStyleStrategy() {
//头的策略 样式调整
WriteCellStyle headWriteCellStyle = new WriteCellStyle();
//设置头部样式
setRowStyle(headWriteCellStyle, true, true);
//设置细边框
setBorder(headWriteCellStyle);
//表头字体样式
WriteFont headWriteFont = getHeadFont(IndexedColors.SKY_BLUE.getIndex());
headWriteCellStyle.setWriteFont(headWriteFont);
//内容的策略
WriteCellStyle contentStyle = new WriteCellStyle();
//设置内容样式
setRowStyle(headWriteCellStyle, false, false);
//设置边框
setBorder(contentStyle);
//内容字体
contentStyle.setWriteFont(setContentFont());
//这个策略是 头是头的样式 内容是内容的样式 其他的策略可以自己实现
return new HorizontalCellStyleStrategy(headWriteCellStyle, contentStyle);
}
/*-------------------------- 私有方法 --------------------------*/
/**
* 获取表头字体
*
* @param color
* @return
*/
private static WriteFont getHeadFont(Short color) {
//表头字体样式
WriteFont headWriteFont = new WriteFont();
//头字号
headWriteFont.setFontHeightInPoints((short) 12);
//字体样式
headWriteFont.setFontName("微软雅黑");
//字体颜色
headWriteFont.setColor(color);
//字体加粗
headWriteFont.setBold(true);
return headWriteFont;
}
/**
* 设置内容字体
*
* @return {@link WriteFont}
*/
private static WriteFont setContentFont() {
//内容字体
WriteFont contentWriteFont = new WriteFont();
//内容字号
contentWriteFont.setFontHeightInPoints((short) 11);
//字体样式
contentWriteFont.setFontName("宋体");
return contentWriteFont;
}
/**
* 设置行样式
*
* @param cellStyle
* @param wrappedFlag 自动换行标识,true:开启自动换行
* @param centerFlag 水平居中开关,true:开启水平居中
*/
private static void setRowStyle(WriteCellStyle cellStyle, boolean wrappedFlag, boolean centerFlag) {
//行背景:白色
cellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());
if (wrappedFlag) {
//设置自动换行
cellStyle.setWrapped(true);
}
if (centerFlag) {
//设置水平对齐方式
cellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
}
//设置垂直对齐方式
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
}
/**
* 设置边框
*
* @param cellStyle 单元格样式
*/
private static void setBorder(WriteCellStyle cellStyle) {
//设置细边框
cellStyle.setBorderBottom(BorderStyle.THIN);
cellStyle.setBorderLeft(BorderStyle.THIN);
cellStyle.setBorderRight(BorderStyle.THIN);
cellStyle.setBorderTop(BorderStyle.THIN);
//设置边框颜色 25灰度
cellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());
cellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());
cellStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());
cellStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());
}
}
\ No newline at end of file
package pps.core.base.service;
import cn.hutool.core.io.FileUtil;
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import pps.core.base.config.excel.ExcelStyleTool;
import pps.core.base.service.data.base_excel.ExcelPhotovoltaicPlantTemplate;
import pps.core.base.utils.EasyExcelUtil;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.data.XServiceResult;
import xstartup.feature.api.annotation.XApiPost;
import xstartup.base.tool.XStorageTool;
import xstartup.data.XFileResult;
import xstartup.data.XFileType;
import xstartup.feature.api.annotation.XApiGet;
import java.io.File;
import java.util.ArrayList;
/**
* excel导入导出
......@@ -19,12 +29,25 @@ import xstartup.feature.api.annotation.XApiPost;
@XService
public class ExcelService {
/**
* 光伏电站模板导出
*
* @param context 上下文
* @return {@link XFileResult}
*/
@XText("光伏电站模板导出")
@XApiPost(anonymous = true)
public XServiceResult templatePhotovoltaicPlant(XContext context) {
@XApiGet(anonymous = true)
public XFileResult templatePhotovoltaicPlant(XContext context) {
String fileSavePath = XStorageTool.getAbsolutePath("/temp/excel/光伏电站模板.xlsx");
File file = FileUtil.touch(fileSavePath);
ExcelWriter excelWriter = EasyExcelFactory.write(file)
.registerWriteHandler(ExcelStyleTool.getStyleStrategy())
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
.autoCloseStream(Boolean.TRUE)
.build();
WriteSheet writeSheet = EasyExcelUtil.writeSelectedSheet(ExcelPhotovoltaicPlantTemplate.class, 0, "光伏电站");
return XServiceResult.OK;
excelWriter.write(new ArrayList<String>(), writeSheet);
excelWriter.finish();
return XFileResult.success(XFileType.APPLICATION_XLSX, fileSavePath);
}
}
package pps.core.base.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.text.CharSequenceUtil;
import pps.cloud.system.service.SysOrganizationCloudService;
import pps.cloud.system.service.data.GetAllOuListByOuIdInput;
import pps.cloud.system.service.data.GetSysOrganizationViewOutput;
import pps.core.base.config.excel.ExcelDynamicSelect;
import xstartup.base.XSelfServiceContext;
import xstartup.data.XListResult;
import java.util.List;
import java.util.stream.Collectors;
/**
* 采油厂下拉选
*
......@@ -19,9 +23,14 @@ public class OilExtractionPlantImpl implements ExcelDynamicSelect {
public String[] getSource() {
XSelfServiceContext build = XSelfServiceContext.build(SysOrganizationCloudService.class);
SysOrganizationCloudService bean = build.getBean(SysOrganizationCloudService.class);
GetAllOuListByOuIdInput input = new GetAllOuListByOuIdInput();
input.setOuId("446285aa-ac58-435e-84af-19fc62a8267f");
XListResult<GetSysOrganizationViewOutput> allListByOuId = bean.getAllListByOuId(build, input);
XListResult<GetSysOrganizationViewOutput> result = bean.getPlantList(build);
result.throwIfFail();
List<GetSysOrganizationViewOutput> list = result.getResult();
if (CollUtil.isNotEmpty(list)) {
return CharSequenceUtil.splitToArray(list.stream()
.map(GetSysOrganizationViewOutput::getOuName)
.collect(Collectors.joining(",")), ",");
}
return new String[0];
}
}
\ 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