package com.ots.project.tool.report.LAQ; 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.LAQ.condition.*; import com.ots.project.tool.report.MAQNEW.base.BaseCondition_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.util.*; import java.util.stream.Collectors; @Data @Slf4j public class LAQReport { 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 getParamList(ReportTypeEnum reportTypeEnum) { return init(reportTypeEnum); } /** * 根据报告类型初始化所有 * @param reportTypeEnum * @return */ private List init(ReportTypeEnum reportTypeEnum) { List paramList = new ArrayList<>(); // 领导一致性指标 paramList.add(new AlignmentIndications()); paramList.add(new NumericalReasoningHigh()); paramList.add(new NumericalReasoningLikely()); paramList.add(new AbstractReasoningHigh()); paramList.add(new AbstractReasoningLikely()); paramList.add(new ScoreInterpretationHigh()); paramList.add(new ScoreInterpretationBLA()); paramList.add(new OpennessExperience()); paramList.add(new Conscientiousness()); paramList.add(new Extraversion()); paramList.add(new Agreeableness()); paramList.add(new EmotionalStability()); paramList.add(new SummaryScoreHigh()); paramList.add(new SummaryScoreStrong()); return paramList; } /** * 普通文本替换library * @return */ private List getSimpleMessageCoreIds() { return new ArrayList<>(); } /** * 获取报告字典替换值 * @param thaiCalculationMap * @param type * @param langType * @return */ public ReportResultData getTemplateParameters(Map 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 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; } }