package com.ruoyi.inspect.handler; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.deepoove.poi.data.*; import com.deepoove.poi.data.style.*; import com.ruoyi.framework.exception.ErrorException; import com.ruoyi.inspect.dto.SampleProductDto; import com.ruoyi.inspect.mapper.InsFiberMapper; import com.ruoyi.inspect.mapper.InsProductMapper; import com.ruoyi.inspect.mapper.InsProductResultMapper; import com.ruoyi.inspect.pojo.InsFiber; import com.ruoyi.inspect.pojo.InsProduct; import com.ruoyi.inspect.pojo.InsProductResult; import com.ruoyi.inspect.pojo.InsReport; 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.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; import java.util.stream.Stream; /** * 温度循环报告生成处理方法 */ public class TemperatureCyclingReportHandler1 { private final InsProductMapper insProductMapper; private final InsFiberMapper insFiberMapper; private final InsProductResultMapper insProductResultMapper; public TemperatureCyclingReportHandler1(InsProductMapper insProductMapper, InsFiberMapper insFiberMapper, InsProductResultMapper insProductResultMapper) { this.insProductMapper = insProductMapper; this.insFiberMapper = insFiberMapper; this.insProductResultMapper = insProductResultMapper; } public void doWrite(List samples, InsReport insReport, List> tables3) { AtomicInteger index3 = new AtomicInteger(1); // 自定义比较器 Comparator customComparator = Comparator.comparing( InsProduct::getInspectionItemSubclass, Comparator.naturalOrder() ); samples.forEach(sample -> { // 查询温度循环下的检验项目 List insPros = insProductMapper.selectList(Wrappers.lambdaQuery() .eq(InsProduct::getState, 1) .eq(InsProduct::getInsSampleId, sample.getId()) .isNotNull(InsProduct::getSpecialItemParentId) .isNotNull(InsProduct::getInsFiberId) .isNotNull(InsProduct::getInspectionItemClass)); //获取所有光纤色标 List insFibers = insFiberMapper.selectBatchIds(insPros.stream().map(InsProduct::getInsFiberId).collect(Collectors.toList())); //获取光纤色标的数量(行数) long size2 = insPros.stream().map(InsProduct::getInsFiberId).distinct().count(); //获取所有的光纤项目(1310nm) List nm = insPros.stream().map(InsProduct::getInspectionItemClass).distinct().collect(Collectors.toList()); /*先根据循环次数进行遍历*/ Map> xunhuans = insPros.stream().collect(Collectors.groupingBy(InsProduct::getInspectionItem)); for (int i = 0; i < xunhuans.entrySet().size(); i++) { //获取该循环的所有温度 String s1 = String.valueOf((i + 1)); //过滤出20℃(常温)和20℃ List filterList = xunhuans.get(s1).stream().filter(f->f.getInspectionItemSubclass().equals("20℃(常温)")).collect(Collectors.toList()); List filterList2 = xunhuans.get(s1).stream().filter(f->f.getInspectionItemSubclass().equals("20℃")).collect(Collectors.toList()); //排序其他温度 List sortList = xunhuans.get(s1).stream() .filter(f->!Arrays.asList("20℃(常温)","20℃").contains(f.getInspectionItemSubclass())) .sorted(customComparator).collect(Collectors.toList()); //合并 Map> wendus = Stream.of(filterList,sortList,filterList2).flatMap(List::stream).collect(Collectors.groupingBy( InsProduct::getInspectionItemSubclass, LinkedHashMap::new, // 保证 Map 中键的顺序是插入顺序 Collectors.toCollection(ArrayList::new) // 保证每个组内元素顺序 )); List wendu = new ArrayList<>(wendus.keySet()); for (int m = 0; m < wendu.size(); m += 3) { int wenduSize = (wendu.size()-m)/3>0?3:(wendu.size()-m); //三个温度一张表,当遍历到第四个温度的时候需要重新建表 List rows = new ArrayList<>(); //表格的行数(光纤色标的数量+8) for (int j = 0; j < size2 + 8; j++) { RowRenderData rowRenderData = new RowRenderData(); RowStyle rowStyle = new RowStyle(); rowStyle.setHeight(40); rowRenderData.setRowStyle(rowStyle); List cells = new ArrayList<>(); //表格的列数(2*光纤项目*3+1) for (int k = 0; k < 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) + 1; k++) { CellRenderData cellRenderData = new CellRenderData(); CellStyle cellStyle = new CellStyle(); cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER); cellRenderData.setCellStyle(cellStyle); List paragraphRenderDataList = new ArrayList<>(); ParagraphRenderData paragraphRenderData = new ParagraphRenderData(); ParagraphStyle paragraphStyle = new ParagraphStyle(); paragraphStyle.setAlign(ParagraphAlignment.CENTER); paragraphRenderData.setParagraphStyle(paragraphStyle); List renderData = new ArrayList<>(); TextRenderData textRenderData = new TextRenderData(); Style style = new Style(); style.setFontFamily("宋体"); style.setColor("000000"); style.setFontSize(10); textRenderData.setStyle(style); if (j == 0) { //第一行 int size = (2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m))); switch (size){ case 12: if (k <= 2) { //第一列 textRenderData.setText("样品编号@Sample number∑1000"); } else if (k > 2 && k <= 5) { //第二列 textRenderData.setText(sample.getSampleCode() + "∑998"); } else if (k > 5 && k < 9) { //第三列 textRenderData.setText("规格型号@Type ∑999"); } else { //第四列 textRenderData.setText(sample.getModel()+"∑999888"); } break; case 8: if (k <= 1) { //第一列 textRenderData.setText("样品编号@Sample number∑1000"); } else if (k > 1 && k <= 3) { //第二列 textRenderData.setText(sample.getSampleCode() + "∑998"); } else if (k > 3 && k < 6) { //第三列 textRenderData.setText("规格型号@Type ∑999"); } else { //第四列 textRenderData.setText(sample.getModel()+"∑999888"); } break; case 4: if (k <= 0) { //第一列 textRenderData.setText("样品编号@Sample number∑1000"); } else if (k == 1) { //第二列 textRenderData.setText(sample.getSampleCode() + "∑998"); } else if (k == 2) { //第三列 textRenderData.setText("规格型号@Type ∑999"); } else { //第四列 textRenderData.setText(sample.getModel()+"∑999888"); } break; } // if (k <= (2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) + 1) / 4) { // //第一列 // textRenderData.setText("样品编号@Sample number∑1000"); // } else if (k > (2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) + 1) / 4 && k <= (2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) + 1) / 2) { // //第二列 // textRenderData.setText(sample.getSampleCode() + "∑998"); // } else if (k > (2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) + 1) / 2 && k < 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m))) { // //第三列 // textRenderData.setText("规格型号@Type ∑999"); // } else { // //第四列 // textRenderData.setText(sample.getModel()); // } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else if (j == 1) { //第二行 if (k == 0) { //第一列 textRenderData.setText("光纤色标@ScanningNumber∑1004"); } else { textRenderData.setText("检测结果(dB/km)(循环" + (i + 1) + ")∑1005"); } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else if (j == 2) { //第三行 if (k == 0) { //第一列 textRenderData.setText("光纤色标@ScanningNumber∑1004"); renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else if (k <= 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / wenduSize) { textRenderData.setText(wendu.get(m) + "∑52"+j + m); renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else if (k > 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / wenduSize && k <= 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / wenduSize * 2) { int i1 = m + 1; String s = ""; try { s = wendu.get(m + 1); } catch (Exception e) { } textRenderData.setText(s + "∑52"+j + i1); renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else { int i1 = m + 2; String s = ""; try { s = wendu.get(m + 2); } catch (Exception e) { } textRenderData.setText(s + "∑52" +j+ i1); renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } } else if (j == 3) { //第四行 if (k == 0) { //第一列 textRenderData.setText("光纤色标@ScanningNumber∑1004"); renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else { for (int j1 = 0; j1 < 3; j1++) {//一张表3个温度 for (int i1 = 0; i1 < nm.size(); i1++) {//循环光纤项目:1310nm if (k > 2 * j1 * nm.size() + 2 * i1 && k <= 2 * j1 * nm.size() + 2 * (i1 + 1)) { textRenderData.setText(nm.get(i1) + "∑88888" + ((k + 1) / nm.size()) + i1); renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } } } } } else if (j == 4) { //第五行 if (k == 0) { //第一列 textRenderData.setText("光纤色标@ScanningNumber∑1004"); renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else if (k % 2 == 1) { if (k <= 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / 3 && wendu.get(m).equals("20℃(常温)")) { textRenderData.setText("衰减" + "∑42" +j+ k); } else { textRenderData.setText("衰减"); } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else { if (k <= 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / 3 && wendu.get(m).equals("20℃(常温)")) { textRenderData.setText("衰减" + "∑42"+j + (k - 1)); } else { textRenderData.setText("|∆α|"); } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } } else if (j == size2 + 5) { //倒数第三行 if (k == 0) { //第一列 textRenderData.setText("|max|"); renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else if (k % 2 == 0) { String s = ""; if (k <= 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / wenduSize) { s = wendu.get(m); } else if (k > 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / wenduSize && k <= 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / wenduSize * 2) { try { s = wendu.get(m + 1); } catch (Exception e) { } } else { try { s = wendu.get(m + 2); } catch (Exception e) { } } //计算第()温度的第()个项目的所有色标的最终值的最大值 if (s.equals("")) { textRenderData.setText(""); } else { try { if (k <= 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / wenduSize && wendu.get(m).equals("20℃(常温)")){ List ips = insProductMapper.selectList(Wrappers.lambdaQuery() .eq(InsProduct::getState,1) .eq(InsProduct::getInsSampleId, sample.getId()) .isNotNull(InsProduct::getInsFiberId) .eq(InsProduct::getInspectionItem, i + 1) .eq(InsProduct::getInspectionItemSubclass, s) .eq(InsProduct::getInspectionItemClass, nm.get((k - 2) / 2 % nm.size()))) .stream().map(InsProduct::getId).collect(Collectors.toList()); List insProductResults = insProductResultMapper.selDetail(ips); Optional max = insProductResults.stream().map(insProductResult -> { { String[] splitStr = insProductResult.getComValue().split(":"); return splitStr[splitStr.length - 1].split("\"")[1]; } }).filter(value -> !value.isEmpty()).max(String::compareTo); textRenderData.setText(max.get() + "∑"+j+ (k-1)); }else { Optional max = insProductMapper.selectList(Wrappers.lambdaQuery() .eq(InsProduct::getState,1) .eq(InsProduct::getInsSampleId, sample.getId()) .isNotNull(InsProduct::getInsFiberId) .eq(InsProduct::getInspectionItem, i + 1) .eq(InsProduct::getInspectionItemSubclass, s) .eq(InsProduct::getInspectionItemClass, nm.get((k - 2) / 2 % nm.size()))) .stream().map(InsProduct::getLastValue) .filter(value -> !value.isEmpty()) .max(String::compareTo); if (max.isPresent()) { textRenderData.setText(max.get()); } else { textRenderData.setText(""); } } } catch (Exception e) { textRenderData.setText(""); } } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else { String s = ""; if (k <= 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / wenduSize) { s = wendu.get(m); } else if (k > 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / wenduSize && k <= 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / wenduSize * 2) { try { s = wendu.get(m + 1); } catch (Exception e) { } } else { try { s = wendu.get(m + 2); } catch (Exception e) { } } //计算第()温度的第()个项目的所有色标的平均值的最大值 if (s.equals("")) { textRenderData.setText(""); } else { List ips = insProductMapper.selectList(Wrappers.lambdaQuery() .eq(InsProduct::getState,1) .eq(InsProduct::getInsSampleId, sample.getId()) .isNotNull(InsProduct::getInsFiberId) .eq(InsProduct::getInspectionItem, i + 1) .eq(InsProduct::getInspectionItemSubclass, s) .eq(InsProduct::getInspectionItemClass, nm.get((k - 1) / 2 % nm.size()))).stream().map(InsProduct::getId).collect(Collectors.toList()); List insProductResults = insProductResultMapper.selDetail(ips); Optional max = insProductResults.stream().map(insProductResult -> { { String[] splitStr = insProductResult.getComValue().split(":"); return splitStr[splitStr.length - 1].split("\"")[1]; } }).filter(value -> !value.isEmpty()).max(String::compareTo); if (k <= 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / wenduSize&& wendu.get(m).equals("20℃(常温)")){ textRenderData.setText(max.get() + "∑"+j+ k); }else { if (max.isPresent()) { textRenderData.setText(max.get()); } else { textRenderData.setText(""); } } } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } } else if (j == size2 + 6) { //倒数第二行 if (k == 0) { //第一列 textRenderData.setText("|∆α max|"); renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else if (k % 2 == 0) { String s = ""; if (k <= 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / wenduSize) { s = wendu.get(m); } else if (k > 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / wenduSize && k <= 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / wenduSize * 2) { try { s = wendu.get(m + 1); } catch (Exception e) { } } else { try { s = wendu.get(m + 2); } catch (Exception e) { } } //计算第()温度的第()个项目的所有色标的最终值的最大值 if (s.equals("")) { textRenderData.setText(""); } else { if (k <= 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / wenduSize && wendu.get(m).equals("20℃(常温)")) { textRenderData.setText("-" + "∑" + j + (k-1)); } else { List insProducts = insProductMapper.selectList(Wrappers.lambdaQuery() .eq(InsProduct::getState,1) .eq(InsProduct::getInsSampleId, sample.getId()) .isNotNull(InsProduct::getInsFiberId) .eq(InsProduct::getInspectionItem, i + 1) .eq(InsProduct::getInspectionItemSubclass, s) .eq(InsProduct::getInspectionItemClass, nm.get((k - 2) / 2 % nm.size()))); try { Optional max = insProducts.stream().map(InsProduct::getLastValue) .filter(value -> !value.isEmpty()) .max(String::compareTo); if (max.isPresent()) { textRenderData.setText(max.get()); } else { textRenderData.setText(""); } } catch (Exception e) { textRenderData.setText(""); } } } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else { if (k <= 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / wenduSize && wendu.get(m).equals("20℃(常温)")) { textRenderData.setText("-" + "∑" + j + k); } else { textRenderData.setText("-"); } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } } else if (j == size2 + 7) { //倒数第一行 textRenderData.setText("“|∆ α|”表示附加衰减绝对值∑111111"); renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else { //其余填写检验值的内容 if (k == 0) { //第一列填写色标 InsFiber insFiber = insFibers.get((j - 5)); textRenderData.setText(insFiber.getBushColor() + "-" + insFiber.getColor()); renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else if (k % 2 == 0) { //填写衰减差就是last_value String s = ""; if (k <= 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / wenduSize) { s = wendu.get(m); } else if (k > 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / wenduSize && k <= 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / wenduSize * 2) { try { s = wendu.get(m + 1); } catch (Exception e) { } } else { try { s = wendu.get(m + 2); } catch (Exception e) { } } if (s.isEmpty()) { textRenderData.setText(""); } else { List insProducts = insProductMapper.selectList(Wrappers.lambdaQuery() .eq(InsProduct::getState,1) .eq(InsProduct::getInsSampleId, sample.getId()) .isNotNull(InsProduct::getInsFiberId) .eq(InsProduct::getInsFiberId, insFibers.get(j - 5).getId()) .eq(InsProduct::getInspectionItem, i + 1) .eq(InsProduct::getInspectionItemSubclass, s) .eq(InsProduct::getInspectionItemClass, nm.get((k - 2) / 2 % nm.size()))); if (k <= 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / 3 && s.equals("20℃(常温)")) { String comValue = insProductResultMapper.selectOne(Wrappers.lambdaQuery() .eq(InsProductResult::getInsProductId, insProducts.get(0).getId())) .getComValue(); String[] splitStr = comValue.split(":"); textRenderData.setText(splitStr[splitStr.length - 1].split("\"")[1] + "∑" + j + (k - 1)); } else { textRenderData.setText(insProducts.get(0).getLastValue()); } } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else { //填写其余正常温度的衰减(result表里面的com_value) String s = ""; if (k <= 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / wenduSize) { s = wendu.get(m); } else if (k > 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / wenduSize&& k <= 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / wenduSize * 2) { try { s = wendu.get(m + 1); } catch (Exception e) { } } else { try { s = wendu.get(m + 2); } catch (Exception e) { } } if (s.equals("")) { textRenderData.setText(""); } else { List insProducts = insProductMapper.selectList(Wrappers.lambdaQuery() .eq(InsProduct::getState,1) .eq(InsProduct::getInsSampleId, sample.getId()) .isNotNull(InsProduct::getInsFiberId) .eq(InsProduct::getInsFiberId, insFibers.get(j - 5).getId()) .eq(InsProduct::getInspectionItem, i + 1) .eq(InsProduct::getInspectionItemSubclass, s) .eq(InsProduct::getInspectionItemClass, nm.get((k - 1) / 2 % nm.size()))); String comValue = insProductResultMapper.selectOne(Wrappers.lambdaQuery() .eq(InsProductResult::getInsProductId, insProducts.get(0).getId())) .getComValue(); String[] splitStr = comValue.split(":"); if (k <= 2 * nm.size()*((wendu.size()-m)/3>0?3:(wendu.size()-m)) / 3 && s.equals("20℃(常温)")) { textRenderData.setText(splitStr[splitStr.length - 1].split("\"")[1] + "∑" + j + k); } else { textRenderData.setText(splitStr[splitStr.length - 1].split("\"")[1]); } } 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("每行单元格不相等5"); } } TableStyle tableStyle = new TableStyle(); tableStyle.setAlign(TableRowAlign.CENTER); if(m==0 && countSize==13){ tableStyle.setWidth("10000"); tableStyle.setColWidths(new int[]{1580,850,0,850,0,840,840,840,840,840,840,840,840}); }else if(countSize==13){ tableStyle.setWidth("10000"); tableStyle.setColWidths(new int[]{1220,735,745,735,745,735,745,735,745,735,745,735,745}); }else{ tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH); } 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 table = new HashMap<>(); table.put("table3", tableRenderData); table.put("report", insReport); table.put("index3", index3.get()); tables3.add(table); index3.getAndIncrement(); } } }); } }