合并分支 'dev_foton_CD' 到 'FOTON'

Dev foton cd

查看合并请求 laws-foton-slrs/foton-slrs-system-rest!8
This commit is contained in:
陈栋
2022-12-27 16:25:05 +08:00
3 changed files with 96 additions and 10 deletions
@@ -270,6 +270,41 @@ public class SarFileSplitItemsEOController extends BaseController<SarFileSplitIt
content = content.substring(0,content.lastIndexOf("\n"));
}
}
//处理上下角标
List<SplitFont> subList = new ArrayList<>();
List<SplitFont> supList = new ArrayList<>();
boolean handleCorner = false;
if (content.contains("<span class=sup>")) {
handleCornerMarkers(content, supList, "<span class=sup>","<span class=sub>");
}
if (content.contains("<span class=sub>")) {
handleCornerMarkers(content, subList, "<span class=sub>","<span class=sub>");
}
if (subList.size() > 0 || supList.size() > 0) {
content = content.replaceAll("<span class=sup>", "");
content = content.replaceAll("<span class=sub>", "");
content = content.replaceAll("</span>", "");
//设置角标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<SarFileSplitIt
cell2.setHyperlink(hyperlink1);// 链接
row1.getCell(2).setCellStyle(cellStyleLink);
}
cell2.setCellValue(content);
if (!handleCorner) {
cell2.setCellValue(content);
}
row1.createCell(3).setCellValue(exportDto.getResponsibleUnitShow());
@@ -414,6 +451,23 @@ public class SarFileSplitItemsEOController extends BaseController<SarFileSplitIt
}
}
private void handleCornerMarkers(String content, List<SplitFont> splitFontList, String label,String remove) {
content = content.replaceAll(remove, "");
String[] split = content.split(label);
split[0] = split[0].replaceAll("</span>", "");
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("</span>"));
splitFont.setStartIndex(index);
splitFont.setEndIndex(index + cornerLabel.length());
splitFontList.add(splitFont);
text = text.replaceAll("</span>", "");
index = index + text.length();
}
}
@ApiOperation(value = "|SarFileSplitItemsEO|导入")
@PostMapping(value = "/importSplitItemsZip")
public ResponseMessage<SarFileSplitItemsEO> importSplitItemsZip(@RequestParam(value = "file", required = false) MultipartFile file,
@@ -0,0 +1,9 @@
package com.adc.da.slrs.standardSplit.entity;
import lombok.Data;
@Data
public class SplitFont {
Integer startIndex;
Integer endIndex;
}
@@ -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<String> imageBundleList = readImageInParagraph((XWPFParagraph)p);
if(CollectionUtils.isNotEmpty(imageBundleList)) {
@@ -517,9 +518,31 @@ public class SarFileSplitInfoEOServiceImpl implements SarFileSplitInfoEOService
}
// 像每个条款中依次插入每一段的内容
private void addItermsConditionsText(SarFileSplitItemsEO message, List<SarFileSplitItemsValEO> itemsValList, String p) {
message.getItemsCondi().add(p);
message.setItermsConditions(message.getItermsConditions() + "<p>" + p + "<p>");
private void addItermsConditionsText(SarFileSplitItemsEO message, List<SarFileSplitItemsValEO> 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("<span class=sub>" + smalltext + "</span>");
break;
case SUPERSCRIPT:
buffer.append("<span class=sup>" + smalltext + "</span>");
break;
}
}
}
String text = buffer.toString();
if (length > 0) {
text = text.substring(length);
}
message.getItemsCondi().add(text);
message.setItermsConditions(message.getItermsConditions() + "<p>" + text + "<p>");
// 判断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<SarFileSplitMenuEO> treeList, String generalCatalogueId, SarFileSplitInfoEO sarFileSplitInfoEO, Long treeListDisplay, String itemName) {