package com.ruoyi.requier.handler;
|
|
import com.deepoove.poi.data.*;
|
import com.deepoove.poi.data.style.*;
|
import com.ruoyi.framework.exception.ErrorException;
|
import com.ruoyi.framework.util.MyUtil;
|
import com.ruoyi.inspect.dto.SampleProductDto;
|
import com.ruoyi.inspect.mapper.InsProductMapper;
|
import com.ruoyi.inspect.mapper.InsSampleMapper;
|
import com.ruoyi.inspect.pojo.InsProduct;
|
import com.ruoyi.inspect.pojo.InsReport;
|
import com.ruoyi.inspect.pojo.InsSample;
|
import com.ruoyi.inspect.vo.InsProductFiberVO;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
|
import org.apache.poi.xwpf.usermodel.TableRowAlign;
|
import org.apache.poi.xwpf.usermodel.XWPFTable;
|
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
|
|
import java.text.Collator;
|
import java.util.*;
|
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.stream.Collectors;
|
|
/**
|
* 光纤配置报告处理类
|
*/
|
public class FiberConfigReportHandler {
|
|
/**
|
* 默认表格宽度
|
*/
|
private final static int[] DEFAULT_COL_WIDTHS = {1600,0, 1200, 1200, 1200, 1200, 1200, 1200,1200};
|
|
private final InsProductMapper insProductMapper;
|
private final InsSampleMapper insSampleMapper;
|
|
public FiberConfigReportHandler(InsProductMapper insProductMapper, InsSampleMapper insSampleMapper){
|
this.insProductMapper = insProductMapper;
|
this.insSampleMapper = insSampleMapper;
|
}
|
|
private final static String ITEM_SPLIT_CHAR = "&";//检验项分隔符
|
|
private final static String COLOR_SPLIT_CHAR = "-";//色标分隔符
|
|
/**
|
*
|
* @param samples 所有样品
|
* @param insReport report对象
|
* @param tables2 光纤配置附件表格行列表
|
* @param colorDict 色标字典
|
*/
|
public void doWrite(List<SampleProductDto> samples, InsReport insReport, List<Map<String,Object>> tables2,
|
List<String> colorDict){
|
AtomicInteger index2 = new AtomicInteger(1);//页码
|
samples.forEach(sample -> {
|
//查询样品下的检验项和色标
|
List<InsProductFiberVO> insProducts1 = insProductMapper.selectInsProductInsFiberList(sample.getId());
|
//根据色标分组
|
Map<String,List<InsProductFiberVO>> groupProducts = insProducts1.stream()
|
.filter(p->!p.getInspectionItem().equals("光纤接头损耗"))
|
.collect(Collectors.groupingBy(product -> product.getBushColor()+"-"+product.getColor()));
|
if(groupProducts.isEmpty()){
|
return;
|
}
|
List<String[]> collect = groupProducts.keySet().stream().map(k -> k.split(COLOR_SPLIT_CHAR)).sorted((o1, o2) -> {
|
if (o1.length > 1 && o2.length > 1) {
|
if (!Objects.equals(o1[0], o2[0])) {
|
Integer o1Index = colorDict.indexOf(o1[0]);
|
Integer o2Index = colorDict.indexOf(o2[0]);
|
return o1Index.compareTo(o2Index);
|
}
|
if (!Objects.equals(o1[1], o2[1])) {
|
Integer o1Index = colorDict.indexOf(o1[1]);
|
Integer o2Index = colorDict.indexOf(o2[1]);
|
return o1Index.compareTo(o2Index);
|
}
|
}
|
return 0;
|
}).collect(Collectors.toList());
|
List<String> sortKeys = collect.stream().map(c->String.join(COLOR_SPLIT_CHAR,c)).collect(Collectors.toList());
|
//检验项列表(表头)
|
List<String> itemMap = insProducts1.stream().sorted((o1,o2)->{
|
//根据检验项排序
|
if(!Objects.equals(o1.getInspectionItem(),o2.getInspectionItem())){
|
List<String> specialItems = Arrays.asList("耐环境应力开裂","热收缩率");
|
if(specialItems.contains(o1.getInspectionItem()) && specialItems.contains(o2.getInspectionItem())){
|
return Integer.MAX_VALUE;
|
}
|
Collator instance = Collator.getInstance(Locale.CHINA);
|
return instance.compare(o1.getInspectionItem(),o2.getInspectionItem());
|
}
|
//检验子项排序
|
if(StringUtils.isNotBlank(o1.getInspectionItemSubclass())&& StringUtils.isNotBlank(o2.getInspectionItemSubclass())){
|
if(!Objects.equals(o1.getInspectionItemSubclass(),o2.getInspectionItemSubclass())){
|
Collator instance = Collator.getInstance(Locale.CHINA);
|
return instance.compare(o1.getInspectionItemSubclass(),o2.getInspectionItemSubclass());
|
}
|
}
|
return 0;
|
}).map(insProduct -> {
|
String item = MyUtil.joinChars("@",insProduct.getInspectionItem(),insProduct.getInspectionItemEn());
|
String itemSubClass = MyUtil.joinChars("@",insProduct.getInspectionItemSubclass(),insProduct.getInspectionItemSubclassEn());
|
return MyUtil.joinChars(ITEM_SPLIT_CHAR,item,itemSubClass);
|
}).distinct().collect(Collectors.toList());
|
long size = itemMap.size();
|
long size2 = insProducts1.stream().map(InsProduct::getInsFiberId).distinct().count();
|
long number = 7;
|
long k = 0;
|
//判断检验项目是否有父子关系
|
int a = itemMap.stream().anyMatch(p -> p.split(ITEM_SPLIT_CHAR).length>0) ? 2 : 1;
|
for (long c = 0; c < size; c++) {
|
if (c % number == 0) {
|
List<RowRenderData> rows = new ArrayList<>();
|
//表格的行数
|
for (long i = 0; i < size2 + a + 1; i++) {
|
RowRenderData rowRenderData = new RowRenderData();
|
RowStyle rowStyle = new RowStyle();
|
rowStyle.setHeight(40);
|
rowRenderData.setRowStyle(rowStyle);
|
List<CellRenderData> cells = new ArrayList<>();
|
//表格的列数
|
for (long j = 0; j < 9; j++) {
|
CellRenderData cellRenderData = new CellRenderData();
|
CellStyle cellStyle = new CellStyle();
|
cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER);
|
cellRenderData.setCellStyle(cellStyle);
|
List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>();
|
ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
|
ParagraphStyle paragraphStyle = new ParagraphStyle();
|
paragraphStyle.setAlign(ParagraphAlignment.CENTER);
|
paragraphRenderData.setParagraphStyle(paragraphStyle);
|
List<RenderData> renderData = new ArrayList<>();
|
TextRenderData textRenderData = new TextRenderData();
|
Style style = new Style();
|
style.setFontFamily("宋体");
|
style.setColor("000000");
|
style.setFontSize(10);
|
textRenderData.setStyle(style);
|
if(i==0){
|
//第一行
|
if (j == 0) {
|
//第一列
|
textRenderData.setText("样品编号@Sample number∑456");
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
} else if (j == 1) {
|
//第二列
|
textRenderData.setText("样品编号@Sample number∑456");
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
} else if (j == 2) {
|
//第二列
|
textRenderData.setText(sample.getSampleCode()+"∑4566");
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
}else if (j == 3) {
|
//第二列
|
textRenderData.setText(sample.getSampleCode()+"∑4566");
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
}else if (j == 4) {
|
//第二列
|
textRenderData.setText("规格型号@Type∑457");
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
}else if (j == 5) {
|
//第二列
|
textRenderData.setText("规格型号@Type∑457");
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
}else if (j == 6) {
|
//第二列
|
textRenderData.setText(sample.getModel()+"∑4577");
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
}else if (j == 7) {
|
//第二列
|
textRenderData.setText(sample.getModel()+"∑4577");
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
}else{
|
//第二列
|
textRenderData.setText(sample.getModel()+"∑4577");
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
}
|
}
|
else if (i == 1) {
|
//第二行
|
if (j == 0) {
|
//第一列
|
textRenderData.setText("管色标@Pipe∑100");
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
} else if (j == 1) {
|
//第二列
|
textRenderData.setText("光纤色标@Scanning Number∑101");
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
} else {
|
if(itemMap.size()>(int) (j - 2 + k)){
|
String inspectionItem = itemMap.get((int) (j - 2 + k)).split(ITEM_SPLIT_CHAR)[0];
|
textRenderData.setText( inspectionItem + "∑" + inspectionItem);
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
}else{
|
String inspectionItem = itemMap.get(itemMap.size()-1).split(ITEM_SPLIT_CHAR)[0];
|
textRenderData.setText("∑" + inspectionItem);
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
}
|
}
|
}
|
else if (a == 2 && i == 2) {
|
//有父子项目关系的第三行
|
if (j == 0) {
|
//第一列
|
textRenderData.setText("管色标@Pipe∑100");
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
} else if (j == 1) {
|
//第二列
|
textRenderData.setText("光纤色标@Scanning Number∑101");
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
} else {
|
//项目信息
|
if(itemMap.size()>(int)(j - 2 + k)){
|
//判断是否有项目子类
|
String[] splits = itemMap.get((int) (j - 2 + k)).split(ITEM_SPLIT_CHAR);
|
if (splits.length<2 || "@".equals(splits[1])) {
|
textRenderData.setText(splits[0] + "∑" + splits[0]);
|
} else {
|
textRenderData.setText(splits[1]+"∑"+splits[0]+splits[1]);
|
}
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
}else{
|
//判断是否有项目子类
|
String[] splits = itemMap.get(itemMap.size()-1).split(ITEM_SPLIT_CHAR);
|
if (splits.length<2 || "@".equals(splits[1])) {
|
textRenderData.setText("∑" + splits[0]);
|
} else {
|
textRenderData.setText("∑"+splits[0]+splits[1]);
|
}
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
}
|
}
|
}
|
else{
|
//循环色标
|
String key = sortKeys.get((int)i-3);
|
if(itemMap.size()>(int) (j - 2 + k)) {
|
int index = Math.max((int) (j - 2 + k), 0);
|
String item = itemMap.get(index);
|
InsProductFiberVO insProduct = groupProducts.get(key).stream()
|
.filter(p->{
|
String insItem = MyUtil.joinChars("@",p.getInspectionItem(),p.getInspectionItemEn());
|
String insSubItem = MyUtil.joinChars("@",p.getInspectionItemSubclass(),p.getInspectionItemSubclassEn());
|
return item.equals(MyUtil.joinChars(ITEM_SPLIT_CHAR,insItem,insSubItem));
|
}).findFirst().orElse(new InsProductFiberVO());
|
//填值
|
if (j == 0) {
|
//第一列
|
textRenderData.setText(insProduct.getBushColor());
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
} else if (j == 1) {
|
//第二列
|
textRenderData.setText(insProduct.getColor());
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
} else {
|
//项目信息
|
if((index+1)==groupProducts.get(key).size()){
|
textRenderData.setText(insProduct.getLastValue()+"∑last"+key);
|
}else{
|
textRenderData.setText(insProduct.getLastValue());
|
}
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
}
|
} else {
|
|
textRenderData.setText("∑last"+key);
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
}
|
}
|
}
|
rowRenderData.setCells(cells);
|
if (!rowRenderData.getCells().isEmpty()) {
|
rows.add(rowRenderData);
|
}
|
}
|
TableRenderData tableRenderData = new TableRenderData();
|
tableRenderData.setRows(rows);
|
int countSize = tableRenderData.getRows().get(0).getCells().size();
|
for (RowRenderData row : tableRenderData.getRows()) {
|
if (row.getCells().size() != countSize) {
|
throw new ErrorException("每行单元格不相等4");
|
}
|
}
|
TableStyle tableStyle = new TableStyle();
|
tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH);
|
tableStyle.setAlign(TableRowAlign.CENTER);
|
BorderStyle borderStyle = new BorderStyle();
|
borderStyle.setColor("000000");
|
borderStyle.setType(XWPFTable.XWPFBorderType.THICK);
|
borderStyle.setSize(14);
|
tableStyle.setLeftBorder(borderStyle);
|
tableStyle.setTopBorder(borderStyle);
|
tableStyle.setRightBorder(borderStyle);
|
tableStyle.setBottomBorder(borderStyle);
|
tableRenderData.setTableStyle(tableStyle);
|
Map<String, Object> table = new HashMap<>();
|
table.put("table2", tableRenderData);
|
table.put("report", insReport);
|
table.put("sample_number", sample.getSampleCode());
|
table.put("type", sample.getModel());
|
table.put("index2", index2.get());
|
tables2.add(table);
|
k += 7;
|
index2.getAndIncrement();
|
}
|
}
|
});
|
}
|
|
|
/**
|
* 光纤附件表格:写入行数据
|
* @param fiberList 光纤项目信息
|
* @param tables2 光纤附件表格
|
*/
|
public void writeFiberEnclosureTableRow(List<InsProduct> fiberList, List<Map<String, Object>> tables2,InsReport insReport) {
|
AtomicInteger index2 = new AtomicInteger(1);//页码
|
int colCount = 9;//表格总列数
|
int itemCount = 7;//表格项目列数
|
int k = 0;//已遍历检验项数量
|
//检验项列表(表头)
|
List<String> itemMap = fiberList.stream().map(insProduct -> {
|
String item = MyUtil.joinChars("@",insProduct.getInspectionItem(),insProduct.getInspectionItemEn());
|
String itemSubClass = MyUtil.joinChars("@",insProduct.getInspectionItemSubclass(),insProduct.getInspectionItemSubclassEn());
|
return MyUtil.joinChars(ITEM_SPLIT_CHAR,item,itemSubClass);
|
}).sorted(Comparator.naturalOrder()).distinct().collect(Collectors.toList());
|
//根据样品id分组
|
Map<Integer,List<InsProduct>> groupProducts = fiberList.stream()
|
.collect(Collectors.groupingBy(InsProduct::getInsSampleId));
|
//sampleId顺序排序
|
List<Integer> sortKeys = groupProducts.keySet().stream().sorted(Comparator.naturalOrder()).collect(Collectors.toList());
|
//判断检验项目是否有父子关系
|
int a = itemMap.stream().anyMatch(p -> p.split(ITEM_SPLIT_CHAR).length>0) ? 2 : 1;
|
for (int c = 0; c < itemMap.size(); c++) {
|
if (c % itemCount == 0) {
|
List<RowRenderData> rows = new ArrayList<>();
|
//表格的行数(样品数量+表头)
|
int tableRow = sortKeys.size() + a;
|
for (int i = 0; i < tableRow; i++) {
|
RowRenderData rowRenderData = new RowRenderData();
|
RowStyle rowStyle = new RowStyle();
|
rowStyle.setHeight(40);
|
rowRenderData.setRowStyle(rowStyle);
|
List<CellRenderData> cells = new ArrayList<>();
|
//表格的列数
|
for (int j = 0; j < colCount; j++) {
|
CellRenderData cellRenderData = new CellRenderData();
|
CellStyle cellStyle = new CellStyle();
|
cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER);
|
cellRenderData.setCellStyle(cellStyle);
|
List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>();
|
ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
|
ParagraphStyle paragraphStyle = new ParagraphStyle();
|
paragraphStyle.setAlign(ParagraphAlignment.CENTER);
|
paragraphRenderData.setParagraphStyle(paragraphStyle);
|
List<RenderData> renderData = new ArrayList<>();
|
TextRenderData textRenderData = new TextRenderData();
|
Style style = new Style();
|
style.setFontFamily("宋体");
|
style.setColor("000000");
|
style.setFontSize(10);
|
textRenderData.setStyle(style);
|
//第一行
|
if(i==0){
|
if (j < 2) {
|
//第一列
|
textRenderData.setText("样品编号@Sample number∑45678");
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
} else{
|
//生成表头
|
if(itemMap.size()> (j - 2 + k)){
|
String inspectionItem = itemMap.get(j - 2 + k).split(ITEM_SPLIT_CHAR)[0];
|
textRenderData.setText( inspectionItem + "∑" + inspectionItem);
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
}else{
|
String inspectionItem = itemMap.get(itemMap.size()-1).split(ITEM_SPLIT_CHAR)[0];
|
textRenderData.setText("∑" + inspectionItem);
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
}
|
}
|
}
|
else if (a == 2 && i == 1) {
|
//有父子项目关系的第二行
|
if (j < 2) {
|
//第一列
|
textRenderData.setText("样品编号@Sample number∑45678");
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
} else {
|
//项目信息
|
if(itemMap.size()> (j - 2 + k)){
|
//判断是否有项目子类
|
String[] splits = itemMap.get(j - 2 + k).split(ITEM_SPLIT_CHAR);
|
if (splits.length<2 || "@".equals(splits[1])) {
|
textRenderData.setText(splits[0] + "∑" + splits[0]);
|
} else {
|
textRenderData.setText(splits[1]+"∑"+splits[0]+splits[1]);
|
}
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
}else{
|
//判断是否有项目子类
|
String[] splits = itemMap.get(itemMap.size()-1).split(ITEM_SPLIT_CHAR);
|
if (splits.length<2 || "@".equals(splits[1])) {
|
textRenderData.setText("∑" + splits[0]);
|
} else {
|
textRenderData.setText("∑"+splits[0]+splits[1]);
|
}
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
}
|
}
|
}
|
else{
|
//循环样品
|
Integer key = sortKeys.get(i-2);
|
if(itemMap.size()>j - 2 + k) {
|
//查询当前样品信息
|
InsSample insSample = insSampleMapper.selectById(key);
|
int index = Math.max(j - 2 + k, 0);
|
String item = itemMap.get(index);
|
InsProduct insProduct = groupProducts.get(key).stream()
|
.filter(p->{
|
String insItem = MyUtil.joinChars("@",p.getInspectionItem(),p.getInspectionItemEn());
|
String insItemSubClass = MyUtil.joinChars("@",p.getInspectionItemSubclass(),p.getInspectionItemSubclassEn());
|
return item.equals(MyUtil.joinChars(ITEM_SPLIT_CHAR,insItem,insItemSubClass));
|
})
|
.findFirst().orElse(new InsProduct());
|
//填值
|
if (j < 2) {
|
//第一列
|
textRenderData.setText(insSample.getSampleCode()+"∑"+key);
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
} else {
|
//项目信息
|
if((index+1)==groupProducts.get(key).size()){
|
textRenderData.setText(insProduct.getLastValue()+"∑last"+key);
|
}else{
|
textRenderData.setText(insProduct.getLastValue());
|
}
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
}
|
} else {
|
textRenderData.setText("∑last"+key);
|
renderData.add(textRenderData);
|
paragraphRenderData.setContents(renderData);
|
paragraphRenderDataList.add(paragraphRenderData);
|
cellRenderData.setParagraphs(paragraphRenderDataList);
|
cells.add(cellRenderData);
|
}
|
}
|
}
|
rowRenderData.setCells(cells);
|
if (!rowRenderData.getCells().isEmpty()) {
|
rows.add(rowRenderData);
|
}
|
}
|
TableRenderData tableRenderData = new TableRenderData();
|
tableRenderData.setRows(rows);
|
int countSize = tableRenderData.getRows().get(0).getCells().size();
|
for (RowRenderData row : tableRenderData.getRows()) {
|
if (row.getCells().size() != countSize) {
|
throw new ErrorException("光纤报告附件表格列数不匹配");
|
}
|
}
|
TableStyle tableStyle = new TableStyle();
|
tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH);
|
// tableStyle.setColWidths(DEFAULT_COL_WIDTHS);
|
// tableStyle.setWidth("10000");
|
tableStyle.setAlign(TableRowAlign.CENTER);
|
BorderStyle borderStyle = new BorderStyle();
|
borderStyle.setColor("000000");
|
borderStyle.setType(XWPFTable.XWPFBorderType.THICK);
|
borderStyle.setSize(14);
|
tableStyle.setLeftBorder(borderStyle);
|
tableStyle.setTopBorder(borderStyle);
|
tableStyle.setRightBorder(borderStyle);
|
tableStyle.setBottomBorder(borderStyle);
|
tableRenderData.setTableStyle(tableStyle);
|
Map<String, Object> table = new HashMap<>();
|
table.put("table2", tableRenderData);
|
table.put("report", insReport);
|
table.put("index2", index2.get());
|
tables2.add(table);
|
k += 7;
|
index2.getAndIncrement();
|
}
|
}
|
|
|
}
|
|
/**
|
* 光纤附件表格:写入行数据
|
* @param ribbonList 光纤项目信息
|
* @param tables6 光纤带尺寸参数附件表格
|
*/
|
public void writeFiberOpticRibbonEnclosureTableRow(List<InsProduct> ribbonList, List<Map<String, Object>> tables6,InsReport insReport){
|
|
}
|
|
}
|