diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitItemsEOController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitItemsEOController.java index 112b4ca0..a7ee5512 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitItemsEOController.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitItemsEOController.java @@ -270,6 +270,41 @@ public class SarFileSplitItemsEOController extends BaseController subList = new ArrayList<>(); + List supList = new ArrayList<>(); + boolean handleCorner = false; + if (content.contains("")) { + handleCornerMarkers(content, supList, "",""); + } + if (content.contains("")) { + handleCornerMarkers(content, subList, "",""); + } + if (subList.size() > 0 || supList.size() > 0) { + content = content.replaceAll("", ""); + content = content.replaceAll("", ""); + content = content.replaceAll("", ""); + //设置角标font + HSSFFont fontSub = workbook.createFont(); + fontSub.setTypeOffset(HSSFFont.SS_SUB); + HSSFFont fontSup = workbook.createFont(); + fontSup.setTypeOffset(HSSFFont.SS_SUPER); + + RichTextString richTextString = new HSSFRichTextString(content); + if (subList.size() > 0) { + for (SplitFont splitFont : subList) { + richTextString.applyFont(splitFont.getStartIndex(),splitFont.getEndIndex(),fontSub); + } + } + if (supList.size() > 0) { + for (SplitFont splitFont : supList) { + richTextString.applyFont(splitFont.getStartIndex(),splitFont.getEndIndex(),fontSup); + } + } + cell2.setCellValue(richTextString); + handleCorner = true; + } + if("TABLE".equals(valList.get(valRow).getValType())){ /* 连接跳转*/ CreationHelper createHelper = workbook.getCreationHelper(); @@ -287,7 +322,9 @@ public class SarFileSplitItemsEOController extends BaseController splitFontList, String label,String remove) { + content = content.replaceAll(remove, ""); + String[] split = content.split(label); + split[0] = split[0].replaceAll("", ""); + int index = split[0].length(); + for (int i = 1; i < split.length; i++) { + SplitFont splitFont = new SplitFont(); + String text = split[i]; + String cornerLabel = text.substring(0, text.indexOf("")); + splitFont.setStartIndex(index); + splitFont.setEndIndex(index + cornerLabel.length()); + splitFontList.add(splitFont); + text = text.replaceAll("", ""); + index = index + text.length(); + } + } + @ApiOperation(value = "|SarFileSplitItemsEO|导入") @PostMapping(value = "/importSplitItemsZip") public ResponseMessage importSplitItemsZip(@RequestParam(value = "file", required = false) MultipartFile file, diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SplitFont.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SplitFont.java new file mode 100644 index 00000000..6d032a21 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SplitFont.java @@ -0,0 +1,9 @@ +package com.adc.da.slrs.standardSplit.entity; + +import lombok.Data; + +@Data +public class SplitFont { + Integer startIndex; + Integer endIndex; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitInfoEOServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitInfoEOServiceImpl.java index 40bc2020..811b2a52 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitInfoEOServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitInfoEOServiceImpl.java @@ -20,6 +20,7 @@ import com.adc.da.utils.util.InitStandAttrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.poi.xwpf.usermodel.*; import org.apache.xmlbeans.XmlCursor; import org.apache.xmlbeans.XmlObject; @@ -240,7 +241,7 @@ public class SarFileSplitInfoEOServiceImpl implements SarFileSplitInfoEOService if(CollectionUtils.isNotEmpty(imageBundleList)) { addItermsConditionsImage(messageList.get(messageList.size()-1),itemValList, p,imageBundleList); } else { - addItermsConditionsText(messageList.get(messageList.size()-1),itemValList, p.getText()); + addItermsConditionsText(messageList.get(messageList.size()-1),itemValList, p,0); } } } @@ -265,7 +266,7 @@ public class SarFileSplitInfoEOServiceImpl implements SarFileSplitInfoEOService if(CollectionUtils.isNotEmpty(imageBundleList)) { addItermsConditionsImage(messageList.get(messageList.size()-1),itemValList, p,imageBundleList); } else { - addItermsConditionsText(messageList.get(messageList.size()-1),itemValList, p.getText()); + addItermsConditionsText(messageList.get(messageList.size()-1),itemValList, p,0); } } } else if (messageNumber >= 3) { @@ -287,7 +288,7 @@ public class SarFileSplitInfoEOServiceImpl implements SarFileSplitInfoEOService SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName); treeList.add(sarFileSplitMenuEO) ; message.setMenuId(sarFileSplitMenuEO.getId()); - addItermsConditionsText(message,itemValList,paragraphString.substring(nowStart.get(i).length())); + addItermsConditionsText(message,itemValList,p,nowStart.get(i).length()); messageList.add(message); nowStart = getNewNowStart(nowStart.get(i)); menuCanAdd = true; @@ -310,7 +311,7 @@ public class SarFileSplitInfoEOServiceImpl implements SarFileSplitInfoEOService SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),"附录",itemName,clauseContent); // 增加一条数据,需要在数结构中加一条数据 SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList("附录",treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,""); - addItermsConditionsText(message,itemValList,paragraphString); + addItermsConditionsText(message,itemValList,p,0); treeList.add(sarFileSplitMenuEO) ; message.setMenuId(sarFileSplitMenuEO.getId()); messageList.add(message); @@ -320,7 +321,7 @@ public class SarFileSplitInfoEOServiceImpl implements SarFileSplitInfoEOService } } else { if (!p.getText().equals("") ){ - addItermsConditionsText(messageList.get(messageList.size()-1),itemValList,p.getText()); + addItermsConditionsText(messageList.get(messageList.size()-1),itemValList,p,0); } List imageBundleList = readImageInParagraph((XWPFParagraph)p); if(CollectionUtils.isNotEmpty(imageBundleList)) { @@ -517,9 +518,31 @@ public class SarFileSplitInfoEOServiceImpl implements SarFileSplitInfoEOService } // 像每个条款中依次插入每一段的内容 - private void addItermsConditionsText(SarFileSplitItemsEO message, List itemsValList, String p) { - message.getItemsCondi().add(p); - message.setItermsConditions(message.getItermsConditions() + "

" + p + "

"); + private void addItermsConditionsText(SarFileSplitItemsEO message, List itemsValList, XWPFParagraph p,Integer length) { + StringBuffer buffer = new StringBuffer(); + for (XWPFRun xwrun : p.getRuns()) { + VerticalAlign subscript = xwrun.getSubscript(); + String smalltext = xwrun.getText(0); + if (ObjectUtils.isNotEmpty(smalltext)) { + switch (subscript) { + case BASELINE: + buffer.append(smalltext); + break; + case SUBSCRIPT: + buffer.append("" + smalltext + ""); + break; + case SUPERSCRIPT: + buffer.append("" + smalltext + ""); + break; + } + } + } + String text = buffer.toString(); + if (length > 0) { + text = text.substring(length); + } + message.getItemsCondi().add(text); + message.setItermsConditions(message.getItermsConditions() + "

" + text + "

"); // 判断message中是否引用到其他标准 // String testString = p; // Pattern ptest = Pattern.compile("[A-Z]{1,}/{0,1}[A-Z]{1,}\\s{0,1}[0-9]\\d*\\.?\\d*"); @@ -542,7 +565,7 @@ public class SarFileSplitInfoEOServiceImpl implements SarFileSplitInfoEOService // message.setReferenceStand(matcher.group()); // } // } - itemsValList.add(getSplitItemsValObject(message.getId(), SplitFilePragraTypeEnum.TEXT.getValue(), p, message.getItemsCondi().size(), null)); + itemsValList.add(getSplitItemsValObject(message.getId(), SplitFilePragraTypeEnum.TEXT.getValue(), text, message.getItemsCondi().size(), null)); } private SarFileSplitMenuEO getTreeList(String name, List treeList, String generalCatalogueId, SarFileSplitInfoEO sarFileSplitInfoEO, Long treeListDisplay, String itemName) {