[测评系统]--测评系统核心代码库
linzhijie
2023-04-13 84d2cebc581878fb336e8c70861d680147ec2e89
新增CIAQ模板
2个文件已添加
2个文件已修改
168 ■■■■■ 已修改文件
src/main/java/com/ots/common/enums/ReportTypeEnum.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ots/project/tool/report/CIAQ/CIAQReport.java 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ots/project/tool/report/reportCalculation/request/CIAQRequest.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ots/project/tool/report/reportCalculation/request/CalculationTypeEnum.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ots/common/enums/ReportTypeEnum.java
@@ -4,7 +4,8 @@
@Getter
public enum ReportTypeEnum {
    Brief("Brief", "简易版"), Complete("Complete", "完整版"), SAQ("SAQ", "SAQ报告"), RuiLin("RuiLin", "睿邻报告"), CAQ("CAQ", "CAQ报告"),
    JAQ("JAQ","JAQ报告"),MAQ("MAQ", "MAQ报告"),MAQV2("MAQV2", "MAQV2报告"),PAQ("PAQ", "PAQ报告"),MAQIAR("MAQIAR", "MAQIAR报告"),MAQTR("MAQTR", "MAQTR报告");
    JAQ("JAQ","JAQ报告"),MAQ("MAQ", "MAQ报告"),MAQV2("MAQV2", "MAQV2报告"),PAQ("PAQ", "PAQ报告"),MAQIAR("MAQIAR", "MAQIAR报告"),
    MAQTR("MAQTR", "MAQTR报告"),CIAQ("CIAQ", "CIAQ报告");
    private final String code;
    private final String message;
    ReportTypeEnum(String code, String message) {
src/main/java/com/ots/project/tool/report/CIAQ/CIAQReport.java
New file
@@ -0,0 +1,132 @@
package com.ots.project.tool.report.CIAQ;
import com.ots.common.enums.LangTypeEnum;
import com.ots.common.enums.ReportTypeEnum;
import com.ots.common.utils.StringUtils;
import com.ots.project.exam.domain.TLibraryCode;
import com.ots.project.tool.report.MAQNEW.base.BaseCondition_V2;
import com.ots.project.tool.report.MAQNEW.condition.ResponseFidelityDiagnosisTitle_V2;
import com.ots.project.tool.report.MAQNEW.condition.ResponseFidelityDiagnosis_V2;
import com.ots.project.tool.report.MAQNEW.condition.ScoreCharacteristics_V2;
import com.ots.project.tool.report.MAQNEW.condition.SimpleMessage_V2;
import com.ots.project.tool.report.PAQ.condition.Diagnosis;
import com.ots.project.tool.report.PAQ.condition.DiagnosisTitle;
import com.ots.project.tool.report.ReportResultData;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.text.DecimalFormat;
import java.util.*;
import java.util.stream.Collectors;
@Data
@Slf4j
public class CIAQReport {
    private String questionnaireTaker;
    private String questionnaireID;
    private String reportGenerationDate;
    private String userName;
    private String questionnaireEmail;
    private String questionnaireStartTime;
    private String questionnaireEndTime;
    private ReportTypeEnum reportTypeEnum;
    private LangTypeEnum langType;
    /**
     * 根据报告类型初始化数据
     * @param reportTypeEnum
     * @return
     */
    public List<BaseCondition_V2> getParamList(ReportTypeEnum reportTypeEnum) {
        return init(reportTypeEnum);
    }
    /**
     * 根据报告类型初始化所有
     * @param reportTypeEnum
     * @return
     */
    private List<BaseCondition_V2> init(ReportTypeEnum reportTypeEnum) {
        List<BaseCondition_V2> paramList = new ArrayList<>();
        //普通信息
        paramList.addAll(getSimpleMessageCoreIds().stream().map(p -> {
            SimpleMessage_V2 simpleMessage = new SimpleMessage_V2(p);
            return simpleMessage;
        }).collect(Collectors.toList()));
        //表格计算数值
        paramList.addAll(getScoreCharacteristicsList().stream().map(p -> {
            ScoreCharacteristics_V2 scoreCharacteristics = new ScoreCharacteristics_V2(p);
            return scoreCharacteristics;
        }).collect(Collectors.toList()));
        return paramList;
    }
    /**
     * 表格计算数值
     * @return
     */
    private List<String> getScoreCharacteristicsList() {
        return Arrays.asList("PR_Dim01", "PR_Dim02", "PR_Dim03", "PR_Dim04", "PR_Dim05", "PR_Dim06", "PR_Dim07", "PR_Dim08");
    }
    /**
     * 普通文本替换library
     * @return
     */
    private List<String> getSimpleMessageCoreIds() {
        return Arrays.asList(
                "occ1H", "occ2H", "occ3H", "occ4H", "occ5H", "occ6H", "occ7H", "occ8H", "occ9H", "occ10H",
                "occ1L", "occ2L", "occ3L", "occ4L", "occ5L", "occ6L", "occ7L", "occ8L", "occ9L", "occ10L",
                "Condition");
    }
    /**
     * 获取报告字典替换值
     * @param thaiCalculationMap
     * @param type
     * @param langType
     * @return
     */
    public ReportResultData getTemplateParameters(Map<String, String> thaiCalculationMap, ReportTypeEnum type, LangTypeEnum langType) {
        this.reportTypeEnum = type;
        this.langType = langType;
        Map textMap = new HashMap();
        //Map waterDropsMap = new HashMap();
        //基本信息字段
        textMap.put("questionnaireTaker", getQuestionnaireTaker());
        textMap.put("questionnaireID", getQuestionnaireID());
        textMap.put("reportGenerationDate", getReportGenerationDate());
        textMap.put("userName", getUserName());
        textMap.put("questionnaireEmail", getQuestionnaireEmail());
        textMap.put("questionnaireStartTime", getQuestionnaireStartTime());
        textMap.put("questionnaireEndTime", getQuestionnaireEndTime());
        //根据报告类型获取报告字典
        getParamList(type).stream().forEach(p -> {
            //获取对应语言报告字典
            TLibraryCode calculate = p.calculate(thaiCalculationMap, langType);
            List<TLibraryCode> tLibraryCodes = p.calculateList(thaiCalculationMap, langType);
            if(tLibraryCodes != null && tLibraryCodes.size() > 0){
                //表格多位 计算分数值赋值 例如
                // 表格的:%ResponseFidelityDiagnosis_V2_0%
                // 表格的:%ResponseFidelityDiagnosis_V2_1%
                // 表格的:%ResponseFidelityDiagnosis_V2_2%
                for (int i = 0; i < tLibraryCodes.size(); i++) {
                    TLibraryCode tLibraryCode = tLibraryCodes.get(i);
                    textMap.put(p.getName() + "_" + i, Objects.isNull(tLibraryCode) || StringUtils.isBlank(tLibraryCode.getLangTypeContext(langType)) ? "N/A NONE" : tLibraryCode.getLangTypeContext(langType));
                }
            }else{
                //普通报告字典赋值
                textMap.put(p.getName(), Objects.isNull(calculate) || StringUtils.isBlank(calculate.getLangTypeContext(langType)) ? "N/A NONE" : calculate.getLangTypeContext(langType));
            }
        });
        textMap.putAll(thaiCalculationMap);
        ReportResultData reportResultData = new ReportResultData();
        reportResultData.setTextMap(textMap);
        return reportResultData;
    }
}
src/main/java/com/ots/project/tool/report/reportCalculation/request/CIAQRequest.java
New file
@@ -0,0 +1,31 @@
package com.ots.project.tool.report.reportCalculation.request;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import java.util.Map;
/*
 * @Author linzhijie
 * @Description CIAQ职业兴趣算法接口请求
 * @Date 2023/4/13  17:34
 * @Param
 * @return
 */
@Data
public class CIAQRequest {
    // 用户名
    private String username;
    // 测试密码
    private String accesscode;
    // CIAQ题目永久ID号
    private String cid;
    // 答题信息
    private String answer;
}
src/main/java/com/ots/project/tool/report/reportCalculation/request/CalculationTypeEnum.java
@@ -1,5 +1,5 @@
package com.ots.project.tool.report.reportCalculation.request;
public enum CalculationTypeEnum {
    MAQ, SAQ, RUILIN, CAQ, JAQ,PAQ
    MAQ, SAQ, RUILIN, CAQ, JAQ,PAQ,CIAQ
}