This commit is contained in:
jing's 2023-12-04 22:53:00 +08:00
parent 430be021ab
commit 120dd9e457
3 changed files with 168 additions and 2 deletions

View File

@ -311,7 +311,7 @@ public class OptionalEbomApi extends BaseApi {
* *
* @return * @return
*/ */
@GetMapping("publish") @PostMapping("publish")
@ApiOperation("发布生成") @ApiOperation("发布生成")
public ResultVO<Boolean> publish(@RequestBody OptionalEbomPublishAddDTO dto) { public ResultVO<Boolean> publish(@RequestBody OptionalEbomPublishAddDTO dto) {

View File

@ -0,0 +1,166 @@
package com.nflg.product.bomnew.excel;
import cn.hutool.core.collection.CollectionUtil;
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.write.handler.CellWriteHandler;
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.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
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 com.alibaba.excel.write.merge.OnceAbsoluteMergeStrategy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Vector;
import java.util.concurrent.atomic.AtomicInteger;
public class ExportDeviceHelper {
public void buildHeader(int maxColumn, OptionalEbomMainVO header, WriteSheet sheet, ExcelWriter writer, AtomicInteger tableNoCounting) {
//自定义到处样式
WriteCellStyle cellStyle = new WriteCellStyle();
//水平居中
cellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
WriteFont writeFont = new WriteFont();
//加粗
writeFont.setBold(Boolean.TRUE);
//字体大小
writeFont.setFontHeightInPoints((short) 14);
cellStyle.setWriteFont(writeFont);
WriteTable table = EasyExcel
.writerTable(tableNoCounting.get())
.needHead(Boolean.FALSE)
// .registerWriteHandler(
// new OnceAbsoluteMergeStrategy(tableNoCounting.get() - 1, tableNoCounting.getAndIncrement() - 1, 0, maxColumn)
// )
.registerWriteHandler(new HorizontalCellStyleStrategy(cellStyle, cellStyle))
.build();
List<String> cellList = new ArrayList<>();
cellList.add(String.format("%s %s", header.getDeviceNo(), header.getDeviceName()));
List<List<String>> rowList = new ArrayList<>();
rowList.add(cellList);
//写入表格
writer.write(rowList, sheet, table);
}
/**
* 构建列表部分
*/
public void buildList( List<OptionalEbomImportVO > listTable, WriteSheet sheet, ExcelWriter writer, AtomicInteger tableNoCounting) {
//自定义样式
WriteCellStyle headStyle = new WriteCellStyle();
//设置header背景颜色为透明
// headStyle.setFillForegroundColor(IndexedColors.AUTOMATIC.getIndex());
//水平居中
headStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
//上下左右四个边框
headStyle.setBorderBottom(BorderStyle.THIN);
headStyle.setBorderTop(BorderStyle.THIN);
headStyle.setBorderLeft(BorderStyle.THIN);
headStyle.setBorderRight(BorderStyle.THIN);
WriteFont writeFont = new WriteFont();
//字体加粗
writeFont.setBold(Boolean.TRUE);
//字号
writeFont.setFontHeightInPoints((short) 12);
headStyle.setWriteFont(writeFont);
WriteCellStyle contentStyle = new WriteCellStyle();
//内容上下左右四个边框
contentStyle.setBorderBottom(BorderStyle.THIN);
contentStyle.setBorderTop(BorderStyle.THIN);
contentStyle.setBorderLeft(BorderStyle.THIN);
contentStyle.setBorderRight(BorderStyle.THIN);
//水平居中
contentStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
List<ImportExcelField> items=new Vector<>();
int row=0;
for(OptionalEbomImportVO item1:listTable){
String opParentName=item1.getOptionName();
String optionParentDrawingNoName=item1.getOptionDrawingNo();
List<OptionalEbomImportVO> list2=item1.getChild();
List<String> cellList = new ArrayList<>();
cellList.add( opParentName);
List<List<String>> rowList = new ArrayList<>();
rowList.add(cellList);
WriteTable table0 = EasyExcel
.writerTable(tableNoCounting.getAndIncrement())
.needHead(Boolean.FALSE)
.registerWriteHandler(new HorizontalCellStyleStrategy(headStyle, contentStyle))
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
// .head(rowList)
// .registerWriteHandler(new HorizontalCellStyleStrategy(cellStyle, cellStyle))
// .registerWriteHandler(new PreviewExcelExportHelper.CellColorSheetWriteHandler())
// .registerWriteHandler(
// new OnceAbsoluteMergeStrategy(tableNoCounting.get()-1, tableNoCounting.get(), 0, 2)
// )
.build();
writer.write(rowList, sheet, table0);
if(CollectionUtil.isNotEmpty(items)){
WriteTable table = EasyExcel.writerTable(tableNoCounting.getAndIncrement())
.needHead(Boolean.FALSE)//需要Header
// .head(rowList)
//添加自适应列宽策略
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
.registerWriteHandler(new HorizontalCellStyleStrategy(headStyle, contentStyle))//传入自定义样式
// .includeColumnFiledNames(fields)//选择需要哪些属性
.build();
writer.write(items, sheet, table);
}
items.clear();
for(OptionalEbomImportVO item2:list2){{
String opChildName=item2.getOptionName();
String optionChildDrawingNoName=item2.getOptionDrawingNo();
List<OptionalEbomImportChildVO > list3=item2.getChild();
for(OptionalEbomImportChildVO item3:list3){
ImportExcelField excelField=new ImportExcelField();
excelField.setCellFirst(optionParentDrawingNoName);
excelField.setCellSecond(String.format("%s %s",optionChildDrawingNoName,opChildName));
excelField.setCellThird(String.format("%s %s%s",item3.getDrawingNo(),item3.getMaterialName(),item3.getChooseStatus()==1?"标配":"可选"));
items.add(excelField);
row++;
}
}
}
}
}
}

View File

@ -44,7 +44,7 @@
</if> </if>
<if test="query.startTime!= null and query.endTime != null"> <if test="query.startTime!= null and query.endTime != null">
<![CDATA[and created_time >= #{query.tartTime} and created_time < #{query.endTime} ]]> <![CDATA[and created_time >= #{query.startTime} and created_time < #{query.endTime} ]]>
</if> </if>