[测评系统]--测评系统核心代码库
wzp
2021-06-28 09ee32471c0b3adef524e386d5a464633a6a9437
src/main/java/com/ots/common/utils/poi/WordUtil.java
@@ -17,6 +17,7 @@
import com.ots.project.tool.report.JAQ.condition.Table2;
import com.ots.project.tool.report.JAQ.condition.Table3;
import com.ots.project.tool.report.JAQ.condition.Table4;
import com.ots.project.tool.report.SAQ.chart.SAQChart;
import org.apache.commons.collections.map.HashedMap;
import org.apache.poi.ooxml.POIXMLDocument;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
@@ -177,6 +178,9 @@
                if (run.toString().indexOf("%TTime%") != -1) {
                    run.setText(textMap.get("reportGenerationDate").toString(), 0);
                }
                if (run.toString().indexOf("%LIBSAQGS0018%") != -1) {
                    run.setText(textMap.get("LIBSAQGS0018").toString(), 0);
                }
            }
        }
    }
@@ -254,7 +258,7 @@
    public static CTAnchor getAnchorWithGraphic(CTGraphicalObject ctGraphicalObject,
                                                String deskFileName, int width, int height,
                                                int leftOffset, int topOffset, boolean behind, int topPosition) {
        long relativeHeight = 251649024l + topPosition;
        long relativeHeight = 251649024L + topPosition;
        String anchorXML =
                "<wp:anchor xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\" "
                        + "simplePos=\"0\" relativeHeight=\"" + relativeHeight + "\" behindDoc=\"" + ((behind) ? 1 : 0) + "\" locked=\"0\" layoutInCell=\"1\" allowOverlap=\"1\">"
@@ -369,17 +373,19 @@
            List<XWPFTableCell> cells = row.getTableCells();
            for (XWPFTableCell cell : cells) {
                
                //如果当前表格包含%就代表需要替换
                if (checkText(cell.getText())) {
                    List<XWPFParagraph> paragraphs = cell.getParagraphs();
                    for (XWPFParagraph paragraph : paragraphs) {
                        //获取所有行
                        List<IRunElement> iRunElements = paragraph.getIRuns();
                        List<XWPFRun> runs = new ArrayList<>();
                        //遍历所有行
                        for (IRunElement iRunElement : iRunElements) {
                            runs.add((XWPFRun) iRunElement);
                        }
                        int runPosition = 0;
                        //替换所有表格的文字
                        for (XWPFRun run : runs) {
                            setTextValue(textMap, document, paragraph, runPosition, run);
                        }
@@ -428,7 +434,7 @@
    }
    
    public static String changeValue(String runValue, Map<String, Object> textMap, XWPFRun run, XWPFParagraph paragraph, XWPFDocument document, int runPosition) throws IOException, org.apache.poi.openxml4j.exceptions.InvalidFormatException {
        log.debug("changeText:{}",runValue);
        Set<Map.Entry<String, Object>> textSets = textMap.entrySet();
        for (Map.Entry<String, Object> textSet : textSets) {
            
@@ -835,15 +841,25 @@
        String filePath = getTemplateDownLoadPathByUpLoad(fileName);
        
        XWPFDocument document = new XWPFDocument(POIXMLDocument.openPackage(getTemplateDownLoadPathByUpLoad(fileName)));
        //设置文本
        changeText(document, textMap);
        //设置文本框
        changeTextBox(document, textMap);
        //设置图表
        if (Objects.equals(reportType, ReportTypeEnum.SAQ.getCode())) {
            SAQChart.changeChart(document, textMap);
        }
        //插入表格
        addTableValue(document, autoTableMap);
        //更改表格的值
        changeTable(document, textMap);
        //设置图表控件
        changChar(textMap, document, reportType, templateType);
        document.write(out);
    }
@@ -872,6 +888,7 @@
        }
    }
    private static String getValByKey(String text, Map<String, Object> textMap) {
        log.debug("changeTextBox:{}",text);
        if (!checkText(text)) {
            return text;
        }
@@ -927,6 +944,14 @@
        document.write(out);
        out.flush();
    }
    /**
     * 设置图标控件
     * @param textMap
     * @param document
     * @param reportType
     * @param templateType
     */
    private static void changChar(Map<String, Object> textMap, XWPFDocument document, String reportType, String templateType) {
        if (StringUtils.isEmpty(reportType) || StringUtils.isEmpty(templateType)) {
            return;
@@ -935,20 +960,19 @@
        if (ExamUtil.isListEmpty(charts)) {
            return;
        }
        if (StringUtils.equals(reportType, "MAQ")) {
        if (StringUtils.equals(reportType, ReportTypeEnum.MAQ.getCode())) {
            setMAQCompleteChars(textMap, charts);
        } else if (StringUtils.equals(reportType, ReportTypeEnum.MAQV2.getCode())) {
            setMAQ_V2CompleteChars(textMap, charts);
        } else if (StringUtils.equals(reportType, "RuiLin")) {
        } else if (StringUtils.equals(reportType, ReportTypeEnum.RuiLin.getCode())) {
            setRuiLinChar(textMap, charts);
        } else {
            return;
        }
    }
    private static void setMAQ_V2CompleteChars(Map<String, Object> textMap, List<XWPFChart> charts) {
        String p_People32 = textMap.get("P_Task31").toString();
        String p_Task31 = textMap.get("P_People32").toString();
        String p_Task31 = textMap.get("P_Task31").toString();
        String p_People32 = textMap.get("P_People32").toString();
        String P_INCON25 = textMap.get("P_INCON25").toString();
        String P_IM24 = textMap.get("P_IM24").toString();
        String P_SDE23 = textMap.get("P_SDE23").toString();
@@ -979,8 +1003,8 @@
                    List<CTBarSer> serList = ctBarChart.getSerList();
                    CTBarSer ctBarSer = serList.get(0);
                    CTNumDataSource val = ctBarSer.getVal();
                    val.getNumRef().getNumCache().getPtList().get(0).setV(p_Task31);
                    val.getNumRef().getNumCache().getPtList().get(1).setV(p_People32);
                    val.getNumRef().getNumCache().getPtList().get(0).setV(p_People32);
                    val.getNumRef().getNumCache().getPtList().get(1).setV(p_Task31);
                }
            } catch (Exception e) {
                e.printStackTrace();