自定义导出模板-1.0
This commit is contained in:
parent
e2e2359a6b
commit
0013a80047
|
@ -0,0 +1,91 @@
|
|||
package shkd.repc.repmd.template;
|
||||
|
||||
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.utils.StringUtils;
|
||||
import kd.bos.form.CloseCallBack;
|
||||
import kd.bos.form.FormShowParameter;
|
||||
import kd.bos.form.ShowType;
|
||||
import kd.bos.form.StyleCss;
|
||||
import kd.bos.form.control.Control;
|
||||
import kd.bos.form.control.events.ItemClickEvent;
|
||||
import kd.bos.form.events.ClosedCallBackEvent;
|
||||
import kd.bos.form.plugin.AbstractFormPlugin;
|
||||
import kd.bos.list.ListShowParameter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.sdk.plugin.Plugin;
|
||||
import shkd.repc.repmd.template.util.ExportTemplateUtil;
|
||||
|
||||
import java.util.EventObject;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class AreaDataImportPlugin extends AbstractFormPlugin implements Plugin {
|
||||
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
super.registerListener(e);
|
||||
this.addItemClickListeners("qeug_advcontoolbarap");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void itemClick(ItemClickEvent evt) {
|
||||
super.itemClick(evt);
|
||||
if (StringUtils.equals("qeug_templatedownload", evt.getItemKey())) {
|
||||
FormShowParameter showParameter = createFormParameter();
|
||||
this.getView().showForm(showParameter);
|
||||
}
|
||||
}
|
||||
|
||||
private FormShowParameter createFormParameter() {
|
||||
HashMap<String, Object> map = new HashMap<>(2);
|
||||
map.put("logotype", "areaTemplate");
|
||||
FormShowParameter showParameter = new FormShowParameter();
|
||||
showParameter.setFormId("qeug_dynamicbill");
|
||||
showParameter.setCaption("面积数据模板列表");
|
||||
StyleCss inlineStyleCss = new StyleCss();
|
||||
inlineStyleCss.setHeight("580");
|
||||
inlineStyleCss.setWidth("960");
|
||||
showParameter.getOpenStyle().setInlineStyleCss(inlineStyleCss);
|
||||
showParameter.getOpenStyle().setShowType(ShowType.Modal);
|
||||
showParameter.setCustomParams(map);
|
||||
showParameter.setCloseCallBack(new CloseCallBack(this, "template"));
|
||||
return showParameter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closedCallBack(ClosedCallBackEvent e) {
|
||||
super.closedCallBack(e);
|
||||
String callBackId = e.getActionId();
|
||||
if ("template".equals(callBackId)) {
|
||||
DynamicObjectCollection returnData = (DynamicObjectCollection) e.getReturnData();
|
||||
if (null != returnData && returnData.size() != 0) {
|
||||
for (int i = 0; i < returnData.size(); i++) {
|
||||
Long id = Long.parseLong(returnData.get(i).getString("qeug_id"));
|
||||
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(id, "qeug_areatemplate");
|
||||
if (null!=dynamicObject){
|
||||
DynamicObjectCollection areaEntry = dynamicObject.getDynamicObjectCollection("qeug_entryentity");
|
||||
Control productView= this.getView().getControl("productentry");
|
||||
Control areaView= this.getView().getControl("qeug_subentryentity");
|
||||
StringBuilder message =new StringBuilder();
|
||||
String url;
|
||||
if (areaEntry.size()!=0){
|
||||
//导出自定义模板
|
||||
url = ExportTemplateUtil.exportTemplate(areaEntry, message, productView, areaView);
|
||||
}else {
|
||||
//导出默认模板
|
||||
url = ExportTemplateUtil.exportTemplate(message, productView, areaView);
|
||||
}
|
||||
if (null!=url){
|
||||
this.getView().openUrl(url);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,77 @@
|
|||
package shkd.repc.repmd.template;
|
||||
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.utils.StringUtils;
|
||||
import kd.bos.form.control.Button;
|
||||
import kd.bos.form.control.Control;
|
||||
import kd.bos.form.control.EntryGrid;
|
||||
import kd.bos.form.events.BeforeClosedEvent;
|
||||
import kd.bos.form.plugin.AbstractFormPlugin;
|
||||
import kd.bos.servicehelper.QueryServiceHelper;
|
||||
import kd.sdk.plugin.Plugin;
|
||||
import shkd.repc.repmd.template.util.Template;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.EventObject;
|
||||
import java.util.List;
|
||||
|
||||
public class AreaTemplateFromPlugin extends AbstractFormPlugin implements Plugin {
|
||||
|
||||
private static final List<Template> ENTRY_LIST = new ArrayList<>();
|
||||
private static final DynamicObjectCollection ENTRY_COLLECTION = new DynamicObjectCollection();
|
||||
|
||||
@Override
|
||||
public void afterBindData(EventObject e) {
|
||||
super.afterBindData(e);
|
||||
DynamicObjectCollection entry = this.getModel().getEntryEntity("qeug_entryentity");
|
||||
if (entry == null || entry.size() == 0) {
|
||||
DynamicObjectCollection query = QueryServiceHelper.query("qeug_areatemplate", "id,qeug_number,qeug_remark", null);
|
||||
if (null!=query&& query.size()!=0){
|
||||
for (int i = 0; i < query.size(); i++) {
|
||||
DynamicObject dynamicObject = entry.addNew();
|
||||
dynamicObject.set("qeug_id",query.get(i).getString("id"));
|
||||
dynamicObject.set("qeug_number",query.get(i).getString("qeug_number"));
|
||||
dynamicObject.set("qeug_remark",query.get(i).getString("qeug_remark"));
|
||||
}
|
||||
this.getView().updateView("qeug_entryentity");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
super.registerListener(e);
|
||||
Button button = this.getView().getControl("btnok");
|
||||
button.addClickListener(this);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void click(EventObject evt) {
|
||||
Control source = (Control) evt.getSource();
|
||||
String key = source.getKey();
|
||||
// 点击确定按钮
|
||||
if (StringUtils.equals("btnok", key)) {
|
||||
ENTRY_COLLECTION.clear();
|
||||
EntryGrid entryGrid = this.getControl("qeug_entryentity");
|
||||
int[] selectRows = entryGrid.getSelectRows();
|
||||
DynamicObjectCollection entity = this.getModel().getEntryEntity("qeug_entryentity");
|
||||
if (selectRows != null && selectRows.length > 0) {
|
||||
for (int selectRow : selectRows) {
|
||||
DynamicObject dynamicObject = entity.get(selectRow);
|
||||
ENTRY_COLLECTION.add(dynamicObject);
|
||||
}
|
||||
this.getView().close();
|
||||
} else {
|
||||
this.getView().showMessage("请选中一条数据!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeClosed(BeforeClosedEvent e) {
|
||||
super.beforeClosed(e);
|
||||
this.getView().returnDataToParent(ENTRY_COLLECTION);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,380 @@
|
|||
package shkd.repc.repmd.template.util;
|
||||
|
||||
import kd.bos.context.RequestContext;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.entity.LocaleString;
|
||||
import kd.bos.fileservice.FileItem;
|
||||
import kd.bos.fileservice.FileService;
|
||||
import kd.bos.fileservice.FileServiceFactory;
|
||||
import kd.bos.form.control.Control;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import org.apache.poi.ss.usermodel.FillPatternType;
|
||||
import org.apache.poi.ss.usermodel.HorizontalAlignment;
|
||||
import org.apache.poi.ss.usermodel.IndexedColors;
|
||||
import org.apache.poi.ss.usermodel.VerticalAlignment;
|
||||
import org.apache.poi.xssf.usermodel.*;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
public class ExportTemplateUtil {
|
||||
|
||||
/**
|
||||
* 导出默认模板
|
||||
*
|
||||
* @param message 消息收集
|
||||
*/
|
||||
public static String exportTemplate(StringBuilder message, Control productView, Control areaView){
|
||||
QFilter number = new QFilter("number", QCP.equals, "repmd_projectbill_IMPT_ENTRY");
|
||||
DynamicObject templateObj = BusinessDataServiceHelper.loadSingle("bos_importentry_template", number.toArray());
|
||||
if (null==templateObj){
|
||||
message.append("请先维护引入模板");
|
||||
return null;
|
||||
}
|
||||
//读取系统模板参数
|
||||
List<Template> templateList = readSysTemplate(templateObj, productView, areaView);
|
||||
if (templateList.size()==0) return null;
|
||||
//构建导出前四行数据
|
||||
// 创建Excel工作簿
|
||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||
XSSFSheet sheet = workbook.createSheet("产品构成 # productentry");
|
||||
// 第一行:明细标题
|
||||
XSSFRow row1 = sheet.createRow(0);
|
||||
XSSFCell cell1 = row1.createCell(0);
|
||||
cell1.setCellValue("产品构成 # productentry");
|
||||
XSSFCell cell2 = row1.createCell(1);
|
||||
cell2.setCellValue("子单据体 # qeug_subentryentity");
|
||||
XSSFCellStyle style1 = workbook.createCellStyle();
|
||||
XSSFFont font1 = workbook.createFont();
|
||||
font1.setFontName("宋体");
|
||||
font1.setFontHeightInPoints((short) 11);
|
||||
style1.setFont(font1);
|
||||
style1.setAlignment(HorizontalAlignment.CENTER);
|
||||
style1.setVerticalAlignment(VerticalAlignment.CENTER);
|
||||
sheet.setColumnWidth(0, 31 * 256);
|
||||
row1.setHeightInPoints(14.4f);
|
||||
cell1.setCellStyle(style1);
|
||||
cell2.setCellStyle(style1);
|
||||
|
||||
// 第二行:说明文本
|
||||
XSSFRow row2 = sheet.createRow(1);
|
||||
XSSFCell cell3 = row2.createCell(0);
|
||||
cell3.setCellValue("1、请将鼠标移到灰色标题行查看字段录入要求。2、红色带星号(*)的字段为必录字段。");
|
||||
XSSFCellStyle style2 = workbook.createCellStyle();
|
||||
XSSFFont font2 = workbook.createFont();
|
||||
font2.setFontName("Calibri");
|
||||
font2.setFontHeightInPoints((short) 11);
|
||||
font2.setColor(IndexedColors.RED.getIndex());
|
||||
style2.setFont(font2);
|
||||
style2.setAlignment(HorizontalAlignment.LEFT);
|
||||
style2.setVerticalAlignment(VerticalAlignment.CENTER);
|
||||
style2.setWrapText(true); // 自动换行
|
||||
row2.setHeightInPoints(60);
|
||||
sheet.setColumnWidth(0, 31 * 256); // 设置列宽
|
||||
cell3.setCellStyle(style2);
|
||||
|
||||
// 第三行:templateList中的number
|
||||
XSSFRow row3 = sheet.createRow(2);
|
||||
for (int i = 0; i < templateList.size(); i++) {
|
||||
Template template = templateList.get(i);
|
||||
String entityNumber=null;
|
||||
String importProp = template.getImportProp();
|
||||
if (!("").equals(importProp)&&null!=importProp){
|
||||
entityNumber = template.getNumber()+"."+template.getImportProp();
|
||||
}else {
|
||||
entityNumber = template.getNumber();
|
||||
}
|
||||
|
||||
XSSFCell cell = row3.createCell(i);
|
||||
cell.setCellValue(entityNumber);
|
||||
XSSFCellStyle style3 = workbook.createCellStyle();
|
||||
XSSFFont font3 = workbook.createFont();
|
||||
font3.setFontName("宋体");
|
||||
font3.setFontHeightInPoints((short) 11);
|
||||
style3.setFont(font3);
|
||||
style3.setAlignment(HorizontalAlignment.CENTER);
|
||||
style3.setVerticalAlignment(VerticalAlignment.CENTER);
|
||||
sheet.setColumnWidth(i, 31 * 256); // 设置列宽
|
||||
row3.setHeightInPoints(14.4f);
|
||||
cell.setCellStyle(style3);
|
||||
}
|
||||
|
||||
// 第四行:templateList中的name
|
||||
XSSFRow row4 = sheet.createRow(3);
|
||||
for (int i = 0; i < templateList.size(); i++) {
|
||||
Template template = templateList.get(i);
|
||||
XSSFCell cell = row4.createCell(i);
|
||||
String name=template.getName();
|
||||
XSSFCellStyle style4 = workbook.createCellStyle();
|
||||
XSSFFont font4 = workbook.createFont();
|
||||
font4.setFontName("Calibri");
|
||||
font4.setFontHeightInPoints((short) 11);
|
||||
//必录
|
||||
if (template.isMustInput()){
|
||||
name="*"+template.getName();
|
||||
font4.setColor(IndexedColors.RED.getIndex());
|
||||
if ("number".equals(template.getImportProp())){
|
||||
name=name+".编码";
|
||||
}else if ("name".equals(template.getImportProp())){
|
||||
name=name+".名称";
|
||||
}
|
||||
}
|
||||
style4.setFont(font4);
|
||||
style4.setAlignment(HorizontalAlignment.CENTER);
|
||||
style4.setVerticalAlignment(VerticalAlignment.CENTER);
|
||||
style4.setFillForegroundColor(new XSSFColor(new Color(192, 192, 192), new DefaultIndexedColorMap())); // 灰色背景
|
||||
style4.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
||||
sheet.setColumnWidth(i, 31 * 256); // 设置列宽
|
||||
row4.setHeightInPoints(14.4f);
|
||||
cell.setCellValue(name);
|
||||
cell.setCellStyle(style4);
|
||||
}
|
||||
// 上传Excel文件并获取下载路径
|
||||
String uploadedFilePath = uploadExcel(workbook);
|
||||
return RequestContext.get().getClientFullContextPath() + "/attachment/download.do?path=" + uploadedFilePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出自定义模板
|
||||
* @param collections 配置的参数分录
|
||||
* @param message 消息收集
|
||||
*/
|
||||
public static String exportTemplate(DynamicObjectCollection collections,StringBuilder message,Control productView, Control areaView){
|
||||
QFilter number = new QFilter("number", QCP.equals, "repmd_projectbill_IMPT_ENTRY");
|
||||
DynamicObject templateObj = BusinessDataServiceHelper.loadSingle("bos_importentry_template", number.toArray());
|
||||
if (null==templateObj){
|
||||
message.append("请先维护引入模板");
|
||||
return null;
|
||||
}
|
||||
//读取系统模板参数
|
||||
List<Template> templateList = readSysTemplate(templateObj, productView, areaView);
|
||||
if (templateList.size()==0) return null;
|
||||
//构建导出前四行数据
|
||||
// 创建Excel工作簿
|
||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||
XSSFSheet sheet = workbook.createSheet("产品构成 # productentry");
|
||||
// 第一行:明细标题
|
||||
XSSFRow row1 = sheet.createRow(0);
|
||||
XSSFCell cell1 = row1.createCell(0);
|
||||
cell1.setCellValue("产品构成 # productentry");
|
||||
XSSFCell cell2 = row1.createCell(1);
|
||||
cell2.setCellValue("子单据体 # qeug_subentryentity");
|
||||
XSSFCellStyle style1 = workbook.createCellStyle();
|
||||
XSSFFont font1 = workbook.createFont();
|
||||
font1.setFontName("宋体");
|
||||
font1.setFontHeightInPoints((short) 11);
|
||||
style1.setFont(font1);
|
||||
style1.setAlignment(HorizontalAlignment.CENTER);
|
||||
style1.setVerticalAlignment(VerticalAlignment.CENTER);
|
||||
sheet.setColumnWidth(0, 31 * 256);
|
||||
row1.setHeightInPoints(14.4f);
|
||||
cell1.setCellStyle(style1);
|
||||
cell2.setCellStyle(style1);
|
||||
|
||||
// 第二行:说明文本
|
||||
XSSFRow row2 = sheet.createRow(1);
|
||||
XSSFCell cell3 = row2.createCell(0);
|
||||
cell3.setCellValue("1、请将鼠标移到灰色标题行查看字段录入要求。2、红色带星号(*)的字段为必录字段。");
|
||||
XSSFCellStyle style2 = workbook.createCellStyle();
|
||||
XSSFFont font2 = workbook.createFont();
|
||||
font2.setFontName("Calibri");
|
||||
font2.setFontHeightInPoints((short) 11);
|
||||
font2.setColor(IndexedColors.RED.getIndex());
|
||||
style2.setFont(font2);
|
||||
style2.setAlignment(HorizontalAlignment.LEFT);
|
||||
style2.setVerticalAlignment(VerticalAlignment.CENTER);
|
||||
style2.setWrapText(true); // 自动换行
|
||||
row2.setHeightInPoints(60);
|
||||
sheet.setColumnWidth(0, 31 * 256); // 设置列宽
|
||||
cell3.setCellStyle(style2);
|
||||
|
||||
// 第三行:templateList中的number
|
||||
XSSFRow row3 = sheet.createRow(2);
|
||||
for (int i = 0; i < templateList.size(); i++) {
|
||||
Template template = templateList.get(i);
|
||||
String entityNumber=null;
|
||||
String importProp = template.getImportProp();
|
||||
if (!("").equals(importProp)&&null!=importProp){
|
||||
entityNumber = template.getNumber()+"."+template.getImportProp();
|
||||
}else {
|
||||
entityNumber = template.getNumber();
|
||||
}
|
||||
|
||||
XSSFCell cell = row3.createCell(i);
|
||||
cell.setCellValue(entityNumber);
|
||||
XSSFCellStyle style3 = workbook.createCellStyle();
|
||||
XSSFFont font3 = workbook.createFont();
|
||||
font3.setFontName("宋体");
|
||||
font3.setFontHeightInPoints((short) 11);
|
||||
style3.setFont(font3);
|
||||
style3.setAlignment(HorizontalAlignment.CENTER);
|
||||
style3.setVerticalAlignment(VerticalAlignment.CENTER);
|
||||
sheet.setColumnWidth(i, 31 * 256); // 设置列宽
|
||||
row3.setHeightInPoints(14.4f);
|
||||
cell.setCellStyle(style3);
|
||||
}
|
||||
|
||||
// 第四行:templateList中的name
|
||||
XSSFRow row4 = sheet.createRow(3);
|
||||
for (int i = 0; i < templateList.size(); i++) {
|
||||
Template template = templateList.get(i);
|
||||
XSSFCell cell = row4.createCell(i);
|
||||
String name=template.getName();
|
||||
XSSFCellStyle style4 = workbook.createCellStyle();
|
||||
XSSFFont font4 = workbook.createFont();
|
||||
font4.setFontName("Calibri");
|
||||
font4.setFontHeightInPoints((short) 11);
|
||||
//必录
|
||||
if (template.isMustInput()){
|
||||
name="*"+template.getName();
|
||||
font4.setColor(IndexedColors.RED.getIndex());
|
||||
if ("number".equals(template.getImportProp())){
|
||||
name=name+".编码";
|
||||
}else if ("name".equals(template.getImportProp())){
|
||||
name=name+".名称";
|
||||
}
|
||||
}
|
||||
style4.setFont(font4);
|
||||
style4.setAlignment(HorizontalAlignment.CENTER);
|
||||
style4.setVerticalAlignment(VerticalAlignment.CENTER);
|
||||
style4.setFillForegroundColor(new XSSFColor(new Color(192, 192, 192), new DefaultIndexedColorMap())); // 灰色背景
|
||||
style4.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
||||
sheet.setColumnWidth(i, 31 * 256); // 设置列宽
|
||||
row4.setHeightInPoints(14.4f);
|
||||
cell.setCellValue(name);
|
||||
cell.setCellStyle(style4);
|
||||
}
|
||||
|
||||
//填充自定义模板数据
|
||||
for (int i = 0; i < collections.size(); i++) {
|
||||
DynamicObject dynamicObject = collections.get(i);
|
||||
String productNumber = dynamicObject.getString("qeug_productentry.number");
|
||||
String name = dynamicObject.getString("qeug_kmname");
|
||||
String type = dynamicObject.getString("qeug_fl");
|
||||
|
||||
// 从第5行开始填充数据
|
||||
XSSFRow dataRow = sheet.createRow(i + 4);
|
||||
|
||||
// 获取列索引
|
||||
int productNumberColumnIndex = findColumnIndex(sheet, "productentry_producttype.number");
|
||||
int nameColumnIndex = findColumnIndex(sheet, "qeug_kmname");
|
||||
int typeColumnIndex = findColumnIndex(sheet, "qeug_fl");
|
||||
|
||||
// 填充数据
|
||||
XSSFCell productNumberCell = dataRow.createCell(productNumberColumnIndex);
|
||||
productNumberCell.setCellValue(productNumber);
|
||||
XSSFCellStyle productNumberStyle = createCellStyle(workbook);
|
||||
productNumberCell.setCellStyle(productNumberStyle);
|
||||
|
||||
XSSFCell nameCell = dataRow.createCell(nameColumnIndex);
|
||||
nameCell.setCellValue(name);
|
||||
XSSFCellStyle nameStyle = createCellStyle(workbook);
|
||||
nameCell.setCellStyle(nameStyle);
|
||||
|
||||
XSSFCell typeCell = dataRow.createCell(typeColumnIndex);
|
||||
typeCell.setCellValue(type);
|
||||
XSSFCellStyle typeStyle = createCellStyle(workbook);
|
||||
typeCell.setCellStyle(typeStyle);
|
||||
}
|
||||
|
||||
// 上传Excel文件并获取下载路径
|
||||
String uploadedFilePath = uploadExcel(workbook);
|
||||
return RequestContext.get().getClientFullContextPath() + "/attachment/download.do?path=" + uploadedFilePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传Excel文件并返回路径
|
||||
*/
|
||||
private static String uploadExcel(XSSFWorkbook workbook) {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
|
||||
String fileName = "下载模板_" + sdf.format(new Date()) + ".xlsx";
|
||||
String pathName = "/offices/" + fileName;
|
||||
try {
|
||||
OutputStream outputStream = new ByteArrayOutputStream();
|
||||
workbook.write(outputStream);
|
||||
InputStream inputStream = parse(outputStream);
|
||||
|
||||
FileService fs = FileServiceFactory.getAttachmentFileService();
|
||||
return fs.upload(new FileItem(fileName, pathName, inputStream));
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("上传Excel失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析输出流为输入流
|
||||
*/
|
||||
public static ByteArrayInputStream parse(final OutputStream out) throws Exception {
|
||||
ByteArrayOutputStream outputStream = (ByteArrayOutputStream) out;
|
||||
return new ByteArrayInputStream(outputStream.toByteArray());
|
||||
}
|
||||
|
||||
/**
|
||||
* 读取系统模板参数
|
||||
* @param templateObj 系统模板分录
|
||||
* @param productView 产品构成视图模型
|
||||
* @param areaView 面积数据分录视图模型
|
||||
* @return templateList
|
||||
*/
|
||||
public static List<Template> readSysTemplate(DynamicObject templateObj,Control productView, Control areaView){
|
||||
List<Template> templateList =new ArrayList<>();
|
||||
DynamicObjectCollection entry = templateObj.getDynamicObjectCollection("treeentryentity");
|
||||
if (null!=entry&&entry.size()!=0){
|
||||
for (int i = 0; i < entry.size(); i++) {
|
||||
DynamicObject dynamicObject = entry.get(i);
|
||||
if (dynamicObject.getBoolean("isimport")){
|
||||
Template template = new Template();
|
||||
String entityNumber = dynamicObject.getString("entitynumber");
|
||||
if (entityNumber!=null){
|
||||
LocaleString name = productView.getModel().getProperty(entityNumber).getDisplayName();
|
||||
if (name==null){
|
||||
name = areaView.getModel().getProperty(entityNumber).getDisplayName();
|
||||
}
|
||||
String localeValue_zh_cn = name.getLocaleValue_zh_CN();
|
||||
template.setName(localeValue_zh_cn);
|
||||
template.setNumber(entityNumber);
|
||||
template.setMustInput(dynamicObject.getBoolean("ismustinput"));
|
||||
template.setImport(dynamicObject.getBoolean("isimport"));
|
||||
template.setImportProp(dynamicObject.getString("importprop"));
|
||||
templateList.add(template);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return templateList;
|
||||
}
|
||||
|
||||
// 辅助方法:根据列名查找列索引
|
||||
private static int findColumnIndex(XSSFSheet sheet, String columnName) {
|
||||
XSSFRow headerRow = sheet.getRow(2);
|
||||
for (int colIndex = 0; colIndex < headerRow.getPhysicalNumberOfCells(); colIndex++) {
|
||||
XSSFCell cell = headerRow.getCell(colIndex);
|
||||
if (cell != null && columnName.equals(cell.getStringCellValue())) {
|
||||
return colIndex;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
// 辅助方法:创建统一的单元格样式
|
||||
private static XSSFCellStyle createCellStyle(XSSFWorkbook workbook) {
|
||||
XSSFCellStyle style = workbook.createCellStyle();
|
||||
XSSFFont font = workbook.createFont();
|
||||
font.setFontName("宋体");
|
||||
font.setFontHeightInPoints((short) 11);
|
||||
style.setFont(font);
|
||||
style.setAlignment(HorizontalAlignment.CENTER);
|
||||
style.setVerticalAlignment(VerticalAlignment.CENTER);
|
||||
return style;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,70 @@
|
|||
package shkd.repc.repmd.template.util;
|
||||
|
||||
public class Template {
|
||||
|
||||
//名称
|
||||
public String name;
|
||||
|
||||
//编码
|
||||
public String number;
|
||||
|
||||
//是否必录
|
||||
public boolean isMustInput;
|
||||
|
||||
//是否引入
|
||||
public boolean isImport;
|
||||
|
||||
//引入属性
|
||||
public String importProp;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getNumber() {
|
||||
return number;
|
||||
}
|
||||
|
||||
public void setNumber(String number) {
|
||||
this.number = number;
|
||||
}
|
||||
|
||||
public boolean isMustInput() {
|
||||
return isMustInput;
|
||||
}
|
||||
|
||||
public void setMustInput(boolean mustInput) {
|
||||
isMustInput = mustInput;
|
||||
}
|
||||
|
||||
public boolean isImport() {
|
||||
return isImport;
|
||||
}
|
||||
|
||||
public void setImport(boolean anImport) {
|
||||
isImport = anImport;
|
||||
}
|
||||
|
||||
public String getImportProp() {
|
||||
return importProp;
|
||||
}
|
||||
|
||||
public void setImportProp(String importProp) {
|
||||
this.importProp = importProp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Template{" +
|
||||
"name='" + name + '\'' +
|
||||
", number='" + number + '\'' +
|
||||
", isMustInput=" + isMustInput +
|
||||
", isImport=" + isImport +
|
||||
", importProp='" + importProp + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue