diff --git a/byd-structuredplugins-serve/laws-modules/src/main/java/com/jero/modules/compare/controller/SarFileCompareInfoController.java b/byd-structuredplugins-serve/laws-modules/src/main/java/com/jero/modules/compare/controller/SarFileCompareInfoController.java index eae0101..1624fcc 100644 --- a/byd-structuredplugins-serve/laws-modules/src/main/java/com/jero/modules/compare/controller/SarFileCompareInfoController.java +++ b/byd-structuredplugins-serve/laws-modules/src/main/java/com/jero/modules/compare/controller/SarFileCompareInfoController.java @@ -328,4 +328,19 @@ public class SarFileCompareInfoController extends JeroController * @return */ String itemComparison(String leftStandard, String rightStandard, String remark) throws Exception; + + /** + * 导出全文对比 + * @param id + * @param exportName + * @param response + * @param request + */ + void exportFullTextCompareXls(String id, String exportName, HttpServletResponse response, HttpServletRequest request); } diff --git a/byd-structuredplugins-serve/laws-modules/src/main/java/com/jero/modules/compare/service/impl/SarFileCompareInfoServiceImpl.java b/byd-structuredplugins-serve/laws-modules/src/main/java/com/jero/modules/compare/service/impl/SarFileCompareInfoServiceImpl.java index 0f11704..9726db6 100644 --- a/byd-structuredplugins-serve/laws-modules/src/main/java/com/jero/modules/compare/service/impl/SarFileCompareInfoServiceImpl.java +++ b/byd-structuredplugins-serve/laws-modules/src/main/java/com/jero/modules/compare/service/impl/SarFileCompareInfoServiceImpl.java @@ -19,7 +19,9 @@ import com.jero.modules.compare.service.ISarItemsCompareHisEOService; import com.jero.modules.compare.utils.CompHanLPUtils; import com.jero.modules.compare.utils.CompareConst; import com.jero.modules.compare.utils.EventEditHistoryHighLightUtil; +import com.jero.modules.compare.utils.HtmlTextExcel; import com.jero.modules.document.service.IBussDocumentLibraryEOService; +import com.jero.modules.split.common.ReadExcel; import com.jero.modules.split.entity.SarFileSplitInfoEO; import com.jero.modules.split.entity.SarFileSplitItemsEO; import com.jero.modules.split.entity.SarFileSplitItemsValEO; @@ -29,13 +31,26 @@ import com.jero.modules.split.service.IFileSplitItemsEOService; import com.jero.modules.split.service.ISarFileSplitInfoService; import com.jero.modules.split.service.ISarFileSplitItemsValEOService; import com.jero.modules.split.service.ISarFileSplitMenuEOService; +import com.jero.modules.sys.entity.LawsEnterpriseStandardLevel; import com.jero.modules.system.util.MyStringUtils; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; +import org.apache.poi.hssf.usermodel.*; +import org.apache.poi.ss.usermodel.IndexedColors; +import org.apache.poi.ss.usermodel.VerticalAlignment; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.shiro.SecurityUtils; +import org.jeecgframework.poi.excel.ExcelExportUtil; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.enmus.ExcelType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.OutputStream; import java.text.NumberFormat; import java.util.*; import java.util.regex.Pattern; @@ -498,4 +513,147 @@ public class SarFileCompareInfoServiceImpl extends ServiceImpl itemList = sarFileCompareItemService.queryListByInfoId(id); + Map> itemMap = itemList.stream().collect(Collectors.groupingBy(SarFileCompareItem::getLeftOrRight)); + List leftData = itemMap.get(CompareConst.POS_LEFT); + + if (CollectionUtils.isNotEmpty(leftData)) { + for (int rowNum = 0; rowNum < leftData.size(); rowNum++) { + SarFileCompareItem sarFileCompareItem = leftData.get(rowNum); + + HSSFRow row1 = sheetItemsLeft.createRow(rowNum + 1); + row1.createCell(0).setCellValue(sfcInfo.getSerialNumberLeft() + " " +sfcInfo.getTitleLeft()); + row1.createCell(1).setCellValue(sarFileCompareItem.getItemsNum()); + row1.getCell(1).setCellStyle(cellStyleBase); + + String itemText = sarFileCompareItem.getItemsText(); + List addList = new ArrayList<>(); + List delList = new ArrayList<>(); + itemText = HtmlTextExcel.changeHtmlToExcel(itemText,addList,delList); + HSSFRichTextString ts= new HSSFRichTextString(itemText); + if (addList != null && !addList.isEmpty()) { + for (MarkTextVO markTextVO : addList) { + int stIndex = markTextVO.getStartIndex(); + int edIndex = markTextVO.getEndIndex(); + ts.applyFont(stIndex,edIndex,fontAdd); + } + } + if (delList != null && !delList.isEmpty()) { + for (MarkTextVO markTextVO : delList) { + int stIndex = markTextVO.getStartIndex(); + int edIndex = markTextVO.getEndIndex(); + ts.applyFont(stIndex,edIndex,fontDel); + } + } + row1.createCell(2).setCellValue(sarFileCompareItem.getItemsName()); + row1.createCell(3).setCellValue(ts); + row1.getCell(3).setCellStyle(cellStyleBase); + row1.createCell(4).setCellValue(sarFileCompareItem.getRemark()); + } + } + + List rightData = itemMap.get(CompareConst.POS_RIGHT); + if (CollectionUtils.isNotEmpty(rightData)) { + for (int rowNum = 0; rowNum < rightData.size(); rowNum++) { + SarFileCompareItem sarFileCompareItem = rightData.get(rowNum); + + HSSFRow row1 = sheetItemsRight.createRow(rowNum + 1); + row1.createCell(0).setCellValue(sfcInfo.getSerialNumberRight() + " " +sfcInfo.getTitleRight()); + row1.createCell(1).setCellValue(sarFileCompareItem.getItemsNum()); + row1.getCell(1).setCellStyle(cellStyleBase); + + String itemText = sarFileCompareItem.getItemsText(); + List addList = new ArrayList<>(); + List delList = new ArrayList<>(); + itemText = HtmlTextExcel.changeHtmlToExcel(itemText,addList,delList); + HSSFRichTextString ts= new HSSFRichTextString(itemText); + if (addList != null && !addList.isEmpty()) { + for (MarkTextVO markTextVO : addList) { + int stIndex = markTextVO.getStartIndex(); + int edIndex = markTextVO.getEndIndex(); + ts.applyFont(stIndex,edIndex,fontAdd); + } + } + if (delList != null && !delList.isEmpty()) { + for (MarkTextVO markTextVO : delList) { + int stIndex = markTextVO.getStartIndex(); + int edIndex = markTextVO.getEndIndex(); + ts.applyFont(stIndex,edIndex,fontDel); + } + } + row1.createCell(2).setCellValue(sarFileCompareItem.getItemsName()); + row1.createCell(3).setCellValue(ts); + row1.getCell(3).setCellStyle(cellStyleBase); + row1.createCell(4).setCellValue(sarFileCompareItem.getRemark()); + } + } + + try{ + response.setHeader("Content-Disposition", + "attachment; filename=\"" + ReadExcel.encodeFileName(fileOriName, request) +"\""); + response.setContentType("application/force-download"); + response.flushBuffer(); + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + os.close(); // 后开先关 + } catch (Exception e) { + throw new JeroBootException("下载文件失败,请重试"); + } finally { + org.apache.poi.util.IOUtils.closeQuietly(os); + org.apache.poi.util.IOUtils.closeQuietly(excelOS); + } + } } diff --git a/byd-structuredplugins-serve/laws-modules/src/main/java/com/jero/modules/compare/service/impl/SarItemsCompareHisEOServiceImpl.java b/byd-structuredplugins-serve/laws-modules/src/main/java/com/jero/modules/compare/service/impl/SarItemsCompareHisEOServiceImpl.java index c8f54b5..ddd05d6 100644 --- a/byd-structuredplugins-serve/laws-modules/src/main/java/com/jero/modules/compare/service/impl/SarItemsCompareHisEOServiceImpl.java +++ b/byd-structuredplugins-serve/laws-modules/src/main/java/com/jero/modules/compare/service/impl/SarItemsCompareHisEOServiceImpl.java @@ -100,7 +100,7 @@ public class SarItemsCompareHisEOServiceImpl extends ServiceImpl addList, List delList) { + if (StringUtils.isNotEmpty(itemContent)) { + itemContent = itemContent.replaceAll("
",""); + itemContent = itemContent.replaceAll("
",""); + itemContent = itemContent.replaceAll("
","\n"); + itemContent = itemContent.replaceAll("

",""); + itemContent = itemContent.replaceAll("

","\n"); + //获取所有新增内容的位置 + String splitContentAdd = itemContent; + int addSpiltIndex = 0; + int cirIndex = 0; + int stLen = "".length(); + int edLen = "".length(); + while (splitContentAdd.contains("")) { + int addStIndex = splitContentAdd.indexOf(""); + int addEdIndex = splitContentAdd.indexOf(""); + if (addStIndex > -1) { + MarkTextVO markTextVO = new MarkTextVO(); + markTextVO.setStartIndex(addSpiltIndex + addStIndex - (cirIndex*(stLen+edLen))); + markTextVO.setEndIndex(addSpiltIndex + addEdIndex - (cirIndex*(stLen+edLen)) - stLen); + addList.add(markTextVO); + addSpiltIndex = addSpiltIndex + addEdIndex + 7; +// String replaceStr = splitContentAdd.substring(0,addStIndex); + splitContentAdd = splitContentAdd.substring(addEdIndex + 7,splitContentAdd.length()); + cirIndex++; + } + } + //获取所有删除内容的位置 + String splitContentDel = itemContent; + int delSpiltIndex = 0; + int cirIndexDel = 0; + int stLenDel = "".length(); + int edLenDel = "".length(); + while (splitContentDel.contains("")) { + int delStIndex = splitContentDel.indexOf(""); + int delEdIndex = splitContentDel.indexOf(""); + if (delStIndex > -1) { + MarkTextVO markTextVO = new MarkTextVO(); + markTextVO.setStartIndex(delSpiltIndex + delStIndex - (cirIndexDel*(stLenDel+edLenDel))); + markTextVO.setEndIndex(delSpiltIndex + delEdIndex - (cirIndexDel*(stLenDel+edLenDel)) - stLenDel); + delList.add(markTextVO); + delSpiltIndex = delSpiltIndex + delEdIndex + 7; +// String replaceStr = splitContentDel.substring(0,delStIndex); + splitContentDel = splitContentDel.substring(delEdIndex + 7,splitContentDel.length()); + cirIndexDel++; + } + } + itemContent = itemContent.replaceAll("",""); + itemContent = itemContent.replaceAll("",""); + itemContent = itemContent.replaceAll("",""); + itemContent = itemContent.replaceAll("",""); + } + return itemContent; + } +}