[测评系统]--测评系统核心代码库
linzhijie
2021-08-04 03f3d70b6770a889c3918d41951c27dfa08a21bf
src/main/java/com/ots/common/utils/poi/WordUtil.java
@@ -41,6 +41,8 @@
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class WordUtil {
    private static final Logger log = LoggerFactory.getLogger(WordUtil.class);
@@ -395,7 +397,7 @@
        }
    }
    private static void setTextValue(Map<String, Object> textMap, XWPFDocument document, XWPFParagraph paragraph, int runPosition, XWPFRun run) {
        System.out.println("表格的:" + run.toString());
        log.info("表格的:{}", run.toString());
        try {
            run.setText(changeValue(run.toString(), textMap, run, paragraph, document, runPosition), 0);
        } catch (Exception e) {
@@ -425,8 +427,10 @@
            }
        }
    }
    //校验文本是否需要替换
    public static boolean checkText(String text) {
        //替换文本包含%
        if (text.indexOf("%") != -1 || StringUtils.equals(text, "N/A NONE")) {
            return true;
        }
@@ -452,7 +456,11 @@
                if (runValue.indexOf("<BoldText>") != -1) {
                    return setOtherStyle(runValue, paragraph, runPosition, run);
                }
                break;
                //有些表格可能存在多个字典 需替换多次不能轻易break
                //没有可替换内容直接break
                if(getTextSize(runValue) == 0){
                    break;
                }
            }
        }
        
@@ -759,7 +767,12 @@
            setChageWord(fileName, out, textMap, tReportTemplate.getReportType(), templateType, autoTableMap);
            out.flush();
            changColorIfJAQ(textMap, out, reportName, tReportTemplate.getReportType());
            ShellTool.execLibreofficeCommand("pdf", EssConfig.getProfile() + "/" + reportName, EssConfig.getProfile() + "/");
            //PAQ采用新的doc转pdf
            if(!ReportTypeEnum.PAQ.getCode().equals(reportType)){
                ShellTool.execLibreofficeCommand("pdf", EssConfig.getProfile() + "/" + reportName, EssConfig.getProfile() + "/");
            }else{
                ShellTool.execPythonCommand(1,EssConfig.getProfile() + "/" + reportName);
            }
            zipFilePath = getPdfPath(reportName);
            
            deleteFileStrList.add(EssConfig.getProfile() + "/" + reportName);
@@ -849,7 +862,7 @@
        changeTextBox(document, textMap);
        //设置图表
        if (Objects.equals(reportType, ReportTypeEnum.SAQ.getCode())) {
        if (Objects.equals(reportType, ReportTypeEnum.SAQ.getCode()) || Objects.equals(reportType, ReportTypeEnum.PAQ.getCode())) {
            SAQChart.changeChart(document, textMap);
        }
@@ -860,7 +873,7 @@
        changeTable(document, textMap);
        //设置图表控件
        changChar(textMap, document, reportType, templateType);
        //changChar(textMap, document, reportType, templateType);
        document.write(out);
    }
    private static void changeTextBox(XWPFDocument document, Map<String, Object> textMap) throws DocumentException {
@@ -1281,4 +1294,21 @@
            textMap.put("JAQTableStyle", jaqTableStyleList);
        }
    }
    public static int getTextSize(String runValue){
        Pattern pattern = Pattern.compile("%\\w+%");
        Matcher matcher = pattern.matcher(runValue);
        List<String> result = new ArrayList<>();
        while(matcher.find()){
            result.add(matcher.group());
        }
        return result.size();
    }
    public static void main(String[] args) {
        if (!checkText("人才选拔的目的就是找到能够胜任工作、愿意承担工作,且与组织的需求、文化、价值观相匹配的人。PAQ报告是根据候选人对PAQ问卷中题目的作答信息而生成的,测量的是候选人在工作中偏好的行为风格。PAQ也包括了对作答真实性的测量,同时也装入了TAI专有的作假防范程序,可以有效降低候选人的伪装好倾向(全球30%的自评问卷中都出现了伪装好现象)。")) {
            System.out.println("11");
        }
    }
}