diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/excel/ExcelExportField.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/excel/ExcelExportField.java index 1ead2ac2..41e81682 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/excel/ExcelExportField.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/excel/ExcelExportField.java @@ -9,8 +9,8 @@ public class ExcelExportField extends ImportExcelField { - @ExcelProperty(value="",index = 3) - private String cellFourth; +// @ExcelProperty(value="",index = 3) +// private String cellFourth; diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/excel/ExportDeviceHelper.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/excel/ExportDeviceHelper.java index 63aff154..2a45d27b 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/excel/ExportDeviceHelper.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/excel/ExportDeviceHelper.java @@ -46,7 +46,7 @@ public class ExportDeviceHelper { .needHead(false)//是否需要head .build(); buildHeader(2, voObj.getDeviceInfo(), sheet, writer, tableNoCounting); - buildList(voObj.getSingleList(), sheet, writer, tableNoCounting); + buildList(voObj.getSingleList(), sheet, writer, tableNoCounting); writer.finish(); @@ -170,13 +170,18 @@ public class ExportDeviceHelper { int columnWidth = cell.getStringCellValue().getBytes().length; switch (cellIndex) { case 0: - columnWidth = 30; + columnWidth = 50; break; case 1: - columnWidth = 40; + columnWidth = 70; break; case 2: - columnWidth = 80; + columnWidth = 20; + break; + case 3: + + columnWidth = 40; + break; default: break; @@ -190,57 +195,58 @@ public class ExportDeviceHelper { // 自定义表头样式处理 if (context.getHead() != null && context.getHead().booleanValue()) { - WriteSheetHolder writeSheetHolder = context.getWriteSheetHolder(); - Workbook workbook = writeSheetHolder.getSheet().getWorkbook(); - CellStyle cellStyle = initCellStyle(workbook); + if(cellIndex==0 || cellIndex ==1) { + WriteSheetHolder writeSheetHolder = context.getWriteSheetHolder(); + Workbook workbook = writeSheetHolder.getSheet().getWorkbook(); - XSSFCellStyle xssfCellStyle = (XSSFCellStyle) workbook.createCellStyle(); - xssfCellStyle.cloneStyleFrom(cellStyle); - xssfCellStyle.getFont().setBold(true); - xssfCellStyle.setAlignment(HorizontalAlignment.LEFT); - xssfCellStyle.setFillForegroundColor(new XSSFColor(new java.awt.Color(255, 255, 0))); - xssfCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); - cell.setCellStyle(xssfCellStyle); - context.getFirstCellData().setWriteCellStyle(null); //必须 + CellStyle cellStyle = initCellStyle(workbook); + XSSFCellStyle xssfCellStyle = (XSSFCellStyle) workbook.createCellStyle(); + xssfCellStyle.cloneStyleFrom(cellStyle); + xssfCellStyle.getFont().setBold(true); + + xssfCellStyle.setAlignment(HorizontalAlignment.LEFT); + xssfCellStyle.setFillForegroundColor(new XSSFColor(new java.awt.Color(255, 255, 0))); + xssfCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); + cell.setCellStyle(xssfCellStyle); + + + + // WriteCellStyle.merge( xssfCellStyle., context.getFirstCellData().getOrCreateStyle()); + context.getFirstCellData().setWriteCellStyle(null); //必须 + + + + } + if(cellIndex ==1){ + WriteSheetHolder writeSheetHolder = context.getWriteSheetHolder(); + Sheet sheet = writeSheetHolder.getSheet(); + CellRangeAddress cellRangeAddress = new CellRangeAddress(rowIndex, rowIndex, 0, 1); + sheet.addMergedRegion(cellRangeAddress); + } } - if (context.getHead() == null || !context.getHead().booleanValue()) { - - if (cellIndex == 1 || cellIndex == 2) { - WriteSheetHolder writeSheetHolder = context.getWriteSheetHolder(); - Workbook workbook = writeSheetHolder.getSheet().getWorkbook(); - -// WriteCellStyle contentWriteCellStyle = EasyExcelUtil.getBodyStyle(); -// CellStyle cellStyle = StyleUtil.buildCellStyle(workbook, null, contentWriteCellStyle); +// if (context.getHead() == null || !context.getHead().booleanValue()) { // -// XSSFCellStyle xssfCellStyle = (XSSFCellStyle) workbook.createCellStyle(); -// xssfCellStyle.cloneStyleFrom(cellStyle); -// xssfCellStyle.setAlignment(HorizontalAlignment.LEFT); -// xssfCellStyle.setFont(new XSSFFont()); -// xssfCellStyle.getFont().setBold(false); -// xssfCellStyle.getFont().setFontName("宋体"); -// xssfCellStyle.getFont().setFontHeightInPoints((short) 11); +// if (cellIndex == 1 || cellIndex == 2) { +// WriteSheetHolder writeSheetHolder = context.getWriteSheetHolder(); +// Workbook workbook = writeSheetHolder.getSheet().getWorkbook(); // -// context.getFirstCellData().setWriteCellStyle(null); //必须 -// cell.setCellStyle(xssfCellStyle); - - - WriteCellData writeCellData = context.getFirstCellData(); - WriteCellStyle customCellStyle = EasyExcelUtil.getBodyStyle(); - - WriteFont customFont = new WriteFont(); - customFont.setFontName("宋体"); - customFont.setFontHeightInPoints((short) 11); - customFont.setBold(false); - customCellStyle.setWriteFont(customFont); - customCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT); - WriteCellStyle.merge(customCellStyle, writeCellData.getOrCreateStyle()); - - } - } +// WriteCellData writeCellData = context.getFirstCellData(); +// WriteCellStyle customCellStyle = EasyExcelUtil.getBodyStyle(); +// +// WriteFont customFont = new WriteFont(); +// customFont.setFontName("宋体"); +// customFont.setFontHeightInPoints((short) 11); +// customFont.setBold(false); +// customCellStyle.setWriteFont(customFont); +// customCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT); +// WriteCellStyle.merge(customCellStyle, writeCellData.getOrCreateStyle()); +// +// } +// } } @@ -256,13 +262,14 @@ public class ExportDeviceHelper { List head1 = new ArrayList(); head1.add(customer); List head2 = new ArrayList(); - head2.add(customer); - + head2.add(""); + List head3 = new ArrayList(); + head3.add(""); list.add(head0); list.add(head1); list.add(head2); - + list.add(head3); return list; } @@ -282,7 +289,10 @@ public class ExportDeviceHelper { .writerTable(tableNoCounting.get()) .needHead(Boolean.FALSE) .registerWriteHandler( - new OnceAbsoluteMergeStrategy(tableNoCounting.get(), tableNoCounting.get(), 0, maxColumn) + new OnceAbsoluteMergeStrategy(0, 0, 0, maxColumn) + ) + .registerWriteHandler( + new OnceAbsoluteMergeStrategy(1, 1, 0, 1) ) .registerWriteHandler(new CellWriteHandler() { @Override @@ -298,10 +308,17 @@ public class ExportDeviceHelper { }) .registerWriteHandler(new HorizontalCellStyleStrategy(EasyExcelUtil.getHeadStyle(), body)) .build(); + List cellList = new ArrayList<>(); - cellList.add(String.format("%s %s", header.getDeviceNo(), header.getDeviceName())); + cellList.add(StrUtil.format("{} {}", header.getDeviceNo(), header.getDeviceName())); + List cellList2 = new ArrayList<>(); + cellList2.add("选配内容"); + cellList2.add(""); + cellList2.add("标配\\可选"); + cellList2.add("备注"); List> rowList = new ArrayList<>(); rowList.add(cellList); + rowList.add(cellList2); //写入表格 writer.write(rowList, sheet, table); } @@ -335,18 +352,21 @@ public class ExportDeviceHelper { for (OptionalEbomImportVO item2 : list2) { { String opChildName = item2.getOptionName(); - String optionChildDrawingNoName = item2.getOptionDrawingNo(); + String optionChildDrawingNo = item2.getOptionDrawingNo(); List list3 = item2.getChild(); for (OptionalEbomImportChildVO item3 : list3) { ImportExcelField excelField = new ImportExcelField(); - excelField.setCellFirst(optionParentDrawingNoName); - excelField.setCellSecond(String.format("%s %s", optionChildDrawingNoName, opChildName)); + excelField.setCellFirst(StrUtil.format("{} {}",optionChildDrawingNo,opChildName)); + if(StrUtil.isEmpty(item3.getDrawingNo())) { - excelField.setCellThird(String.format("%s:(%s)", item3.getMaterialName(), item3.getChooseStatus() == 1 ? "标配" : "可选")); + excelField.setCellSecond(StrUtil.format("{}", item3.getMaterialName())); }else { - excelField.setCellThird(String.format("%s:%s(%s)", item3.getDrawingNo(), item3.getMaterialName(), item3.getChooseStatus() == 1 ? "标配" : "可选")); + excelField.setCellSecond(StrUtil.format ("{}:{}", item3.getDrawingNo(), item3.getMaterialName())); } + + excelField.setCellThird(StrUtil.format("{}",item3.getChooseStatus() == 1 ? "标配" : "可选")) ; + excelField.setCellFourth(item3.getRemak()); ; items.add(excelField); } @@ -358,11 +378,12 @@ public class ExportDeviceHelper { if (CollectionUtil.isNotEmpty(items)) { tableNoCounting.getAndIncrement(); WriteTable table = EasyExcel.writerTable(tableNoCounting.get()) - .head(getHeader(opParentName)) + .head(getHeader(StrUtil.format("{} {}",opParentName,optionParentDrawingNoName))) .needHead(Boolean.TRUE)//需要Header + .automaticMergeHead(false) .registerWriteHandler(EasyExcelUtil.getDefaultStyle())//传入自定义样式 .registerWriteHandler(new HeaderStyleCustomCellWriteHandler()) - .registerWriteHandler(new ColumnMergeStrategy(0, new int[]{0, 1})) + .registerWriteHandler(new ColumnMergeStrategy(1, new int[]{0})) .build(); writer.write(items, sheet, table); items.clear(); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/excel/ImportExcelField.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/excel/ImportExcelField.java index 1f2d4a6a..5f015c74 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/excel/ImportExcelField.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/excel/ImportExcelField.java @@ -21,7 +21,7 @@ public class ImportExcelField{ @ExcelProperty(value="",index = 3) - private String cellRemark; + private String cellFourth; diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/excel/OldExportDeviceHelper.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/excel/OldExportDeviceHelper.java new file mode 100644 index 00000000..f6a70eae --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/excel/OldExportDeviceHelper.java @@ -0,0 +1,384 @@ +package com.nflg.product.bomnew.excel; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.metadata.Head; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.support.ExcelTypeEnum; +import com.alibaba.excel.util.StyleUtil; +import com.alibaba.excel.write.handler.AbstractCellWriteHandler; +import com.alibaba.excel.write.handler.CellWriteHandler; +import com.alibaba.excel.write.handler.context.CellWriteHandlerContext; +import com.alibaba.excel.write.merge.OnceAbsoluteMergeStrategy; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.alibaba.excel.write.metadata.WriteTable; +import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; +import com.alibaba.excel.write.metadata.holder.WriteTableHolder; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.metadata.style.WriteFont; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.nflg.product.bomnew.pojo.vo.OptionalEbomConfigAggregVO; +import com.nflg.product.bomnew.pojo.vo.OptionalEbomImportChildVO; +import com.nflg.product.bomnew.pojo.vo.OptionalEbomImportVO; +import com.nflg.product.bomnew.pojo.vo.OptionalEbomMainVO; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.xssf.usermodel.XSSFCellStyle; +import org.apache.poi.xssf.usermodel.XSSFColor; + +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; + +public class OldExportDeviceHelper { + + + public void export(OutputStream filePath, OptionalEbomConfigAggregVO voObj) { + + //使用一个计数器记录当前已经写了几个表格 + AtomicInteger tableNoCounting = new AtomicInteger(0); + ExcelWriter writer = EasyExcel.write(filePath)//指定写入的流 + .excelType(ExcelTypeEnum.XLSX)//指定Excel文件类型,如xlsx、xls + .autoCloseStream(Boolean.FALSE) + .build(); + + WriteSheet sheet = EasyExcel + .writerSheet("EBOM导出")//指定写入的sheet + .needHead(false)//是否需要head + .build(); + buildHeader(2, voObj.getDeviceInfo(), sheet, writer, tableNoCounting); + buildList(voObj.getSingleList(), sheet, writer, tableNoCounting); + writer.finish(); + + + } + + + + + + + + + + + public static class ColumnMergeStrategy implements CellWriteHandler { + + + private int[] mergeColumnIndex; + private int mergeRowIndex; + + public ColumnMergeStrategy(int mergeRowIndex, int[] mergeColumnIndex) { + this.mergeRowIndex = mergeRowIndex; + this.mergeColumnIndex = mergeColumnIndex; + } + + @Override + public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer columnIndex, Integer relativeRowIndex, Boolean isHead) { + + } + + @Override + public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { + + } + + @Override + public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { + if (!isHead) { + //当前行 + int curRowIndex = cell.getRowIndex(); + //当前列 + int curColIndex = cell.getColumnIndex(); + // System.out.println(StrUtil.format("curRowIndex {} curColIndex {}",curRowIndex,curColIndex)); + if (curRowIndex > mergeRowIndex) { + for (int i = 0; i < mergeColumnIndex.length; i++) { + if (curColIndex == mergeColumnIndex[i]) { + mergeWithPrevRow(writeSheetHolder, cell, curRowIndex, curColIndex); + break; + } + } + } + + } + } + + + /** + * 当前单元格向上合并 + * + * @param writeSheetHolder + * @param cell 当前单元格 + * @param curRowIndex 当前行 + * @param curColIndex 当前列 + */ + private void mergeWithPrevRow(WriteSheetHolder writeSheetHolder, Cell cell, int curRowIndex, int curColIndex) { + Object curData = cell.getCellTypeEnum() == CellType.STRING ? cell.getStringCellValue() : cell.getNumericCellValue(); + Cell preCell = cell.getSheet().getRow(curRowIndex - 1).getCell(curColIndex); + Object preData = preCell.getCellTypeEnum() == CellType.STRING ? preCell.getStringCellValue() : preCell.getNumericCellValue(); + // 将当前单元格数据与上一个单元格数据比较 + Boolean dataBool = preData.equals(curData); + if (dataBool) { + Sheet sheet = writeSheetHolder.getSheet(); + List mergeRegions = sheet.getMergedRegions(); + boolean isMerged = false; + for (int i = 0; i < mergeRegions.size() && !isMerged; i++) { + CellRangeAddress cellRangeAddr = mergeRegions.get(i); + // 若上一个单元格已经被合并,则先移出原有的合并单元,再重新添加合并单元 + if (cellRangeAddr.isInRange(curRowIndex - 1, curColIndex)) { + sheet.removeMergedRegion(i); + cellRangeAddr.setLastRow(curRowIndex); + sheet.addMergedRegion(cellRangeAddr); + isMerged = true; + } + } + // 若上一个单元格未被合并,则新增合并单元 + if (!isMerged) { + CellRangeAddress cellRangeAddress = new CellRangeAddress(curRowIndex - 1, curRowIndex, curColIndex, curColIndex); + sheet.addMergedRegion(cellRangeAddress); + } + } + } + } + + + public class HeaderStyleCustomCellWriteHandler extends AbstractCellWriteHandler { + @Override + public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, + Row row, Head head, Integer columnIndex, Integer relativeRowIndex, Boolean isHead) { + // 设置行高 + int rowIndex = row.getRowNum(); + short height = 400; + row.setHeight(height); + } + + private CellStyle initCellStyle(Workbook workbook) { + WriteCellStyle contentWriteCellStyle = EasyExcelUtil.getHeadStyle(); + CellStyle headWriteCellStyle = StyleUtil.buildCellStyle(workbook, null, contentWriteCellStyle); + return headWriteCellStyle; + } + + + @Override + public void afterCellDispose(CellWriteHandlerContext context) { + Cell cell = context.getCell(); + int rowIndex = cell.getRowIndex(); + + int cellIndex = cell.getColumnIndex(); + + // 自定义宽度处理 + if (!context.getHead()) { + int columnWidth = cell.getStringCellValue().getBytes().length; + switch (cellIndex) { + case 0: + columnWidth = 30; + break; + case 1: + columnWidth = 40; + break; + case 2: + columnWidth = 80; + break; + default: + break; + } + + if (columnWidth > 255) { + columnWidth = 255; + } + context.getWriteSheetHolder().getSheet().setColumnWidth(cellIndex, columnWidth * 256); + } + // 自定义表头样式处理 + + if (context.getHead() != null && context.getHead().booleanValue()) { + WriteSheetHolder writeSheetHolder = context.getWriteSheetHolder(); + Workbook workbook = writeSheetHolder.getSheet().getWorkbook(); + CellStyle cellStyle = initCellStyle(workbook); + + XSSFCellStyle xssfCellStyle = (XSSFCellStyle) workbook.createCellStyle(); + xssfCellStyle.cloneStyleFrom(cellStyle); + xssfCellStyle.getFont().setBold(true); + + xssfCellStyle.setAlignment(HorizontalAlignment.LEFT); + xssfCellStyle.setFillForegroundColor(new XSSFColor(new java.awt.Color(255, 255, 0))); + xssfCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); + cell.setCellStyle(xssfCellStyle); + context.getFirstCellData().setWriteCellStyle(null); //必须 + + + } + + if (context.getHead() == null || !context.getHead().booleanValue()) { + + if (cellIndex == 1 || cellIndex == 2) { + WriteSheetHolder writeSheetHolder = context.getWriteSheetHolder(); + Workbook workbook = writeSheetHolder.getSheet().getWorkbook(); + +// WriteCellStyle contentWriteCellStyle = EasyExcelUtil.getBodyStyle(); +// CellStyle cellStyle = StyleUtil.buildCellStyle(workbook, null, contentWriteCellStyle); +// +// XSSFCellStyle xssfCellStyle = (XSSFCellStyle) workbook.createCellStyle(); +// xssfCellStyle.cloneStyleFrom(cellStyle); +// xssfCellStyle.setAlignment(HorizontalAlignment.LEFT); +// xssfCellStyle.setFont(new XSSFFont()); +// xssfCellStyle.getFont().setBold(false); +// xssfCellStyle.getFont().setFontName("宋体"); +// xssfCellStyle.getFont().setFontHeightInPoints((short) 11); +// +// context.getFirstCellData().setWriteCellStyle(null); //必须 +// cell.setCellStyle(xssfCellStyle); + + + WriteCellData writeCellData = context.getFirstCellData(); + WriteCellStyle customCellStyle = EasyExcelUtil.getBodyStyle(); + + WriteFont customFont = new WriteFont(); + customFont.setFontName("宋体"); + customFont.setFontHeightInPoints((short) 11); + customFont.setBold(false); + customCellStyle.setWriteFont(customFont); + customCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT); + WriteCellStyle.merge(customCellStyle, writeCellData.getOrCreateStyle()); + + } + } + + + } + + } + + + public List> getHeader(String headStr) { + String customer = headStr; + List> list = new ArrayList>(); + List head0 = new ArrayList(); + head0.add(customer); + List head1 = new ArrayList(); + head1.add(customer); + List head2 = new ArrayList(); + head2.add(customer); + + + list.add(head0); + list.add(head1); + list.add(head2); + + return list; + } + + public void buildHeader(int maxColumn, OptionalEbomMainVO header, WriteSheet sheet, ExcelWriter writer, AtomicInteger tableNoCounting) { + if (header == null) { + return; + } + + + WriteCellStyle body = EasyExcelUtil.getBodyStyle(); + if (body.getWriteFont() != null) { + body.getWriteFont().setBold(true); + } + + + WriteTable table = EasyExcel + .writerTable(tableNoCounting.get()) + .needHead(Boolean.FALSE) + .registerWriteHandler( + new OnceAbsoluteMergeStrategy(tableNoCounting.get(), tableNoCounting.get(), 0, maxColumn) + ) + .registerWriteHandler(new CellWriteHandler() { + @Override + public void afterCellDispose(CellWriteHandlerContext context) { + Cell cell = context.getCell(); + int rowIndex = cell.getRowIndex(); + int cellIndex = cell.getColumnIndex(); + if (rowIndex == 0) { + short height = 500; + context.getRow().setHeight(height); + } + } + }) + .registerWriteHandler(new HorizontalCellStyleStrategy(EasyExcelUtil.getHeadStyle(), body)) + .build(); + List cellList = new ArrayList<>(); + cellList.add(String.format("%s %s", header.getDeviceNo(), header.getDeviceName())); + List> rowList = new ArrayList<>(); + rowList.add(cellList); + //写入表格 + writer.write(rowList, sheet, table); + } + + /** + * 构建列表部分 + */ + public void buildList(List listTable, WriteSheet sheet, ExcelWriter writer, AtomicInteger tableNoCounting) { + + if (CollectionUtil.isEmpty(listTable)) { + return; + } + + List items = new ArrayList<>(); + String opParentName=""; + String optionParentDrawingNoName=""; + + for ( int row =0;row< listTable.size();row++ ) { + + OptionalEbomImportVO item1=listTable.get(row); + opParentName = item1.getOptionName(); + optionParentDrawingNoName = item1.getOptionDrawingNo(); + + List list2 = item1.getChild(); +// List cellList = new ArrayList<>(); +// cellList.add(opParentName); + + + + + for (OptionalEbomImportVO item2 : list2) { + { + String opChildName = item2.getOptionName(); + String optionChildDrawingNoName = item2.getOptionDrawingNo(); + List list3 = item2.getChild(); + for (OptionalEbomImportChildVO item3 : list3) { + ImportExcelField excelField = new ImportExcelField(); + excelField.setCellFirst(optionParentDrawingNoName); + excelField.setCellSecond(String.format("%s %s", optionChildDrawingNoName, opChildName)); + if(StrUtil.isEmpty(item3.getDrawingNo())) { + excelField.setCellThird(String.format("%s:(%s)", item3.getMaterialName(), item3.getChooseStatus() == 1 ? "标配" : "可选")); + }else { + excelField.setCellThird(String.format("%s:%s(%s)", item3.getDrawingNo(), item3.getMaterialName(), item3.getChooseStatus() == 1 ? "标配" : "可选")); + + } + items.add(excelField); + + } + } + } + + + + if (CollectionUtil.isNotEmpty(items)) { + tableNoCounting.getAndIncrement(); + WriteTable table = EasyExcel.writerTable(tableNoCounting.get()) + .head(getHeader(opParentName)) + .needHead(Boolean.TRUE)//需要Header + .registerWriteHandler(EasyExcelUtil.getDefaultStyle())//传入自定义样式 + .registerWriteHandler(new HeaderStyleCustomCellWriteHandler()) + .registerWriteHandler(new ColumnMergeStrategy(0, new int[]{0, 1})) + .build(); + writer.write(items, sheet, table); + items.clear(); + } + + + + + } + + + } + + +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/aggreg/OptionalExcelService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/aggreg/OptionalExcelService.java index 7ceccd0f..1ba56dfc 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/aggreg/OptionalExcelService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/aggreg/OptionalExcelService.java @@ -128,7 +128,7 @@ public class OptionalExcelService { levelDto3.setChooseStatus(OptionalBomConstant.ChooseStatusEnum.CHOOSE_STATUS_NO.getValue()); } - levelDto3.setRemak(item.getCellRemark()); + levelDto3.setRemak(item.getCellFourth()); optionalEbomImportLevel2Dto.getChild().add(levelDto3); // levelDto3.setMaterialName(materialName.replace("(标配)", "").replace("(可选)", "")); // levelDto3.setMaterialDesc(levelDto3.getMaterialDesc()); diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/template/importDataTemplate.xlsx b/nflg_project_dev/nflg-bom-new/src/main/resources/template/importDataTemplate.xlsx index 549dbc39..d5e225e5 100644 Binary files a/nflg_project_dev/nflg-bom-new/src/main/resources/template/importDataTemplate.xlsx and b/nflg_project_dev/nflg-bom-new/src/main/resources/template/importDataTemplate.xlsx differ