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 getParamList(ReportTypeEnum reportTypeEnum) { return init(reportTypeEnum); } /** * 根据报告类型初始化所有 * @param reportTypeEnum * @return */ private List init(ReportTypeEnum reportTypeEnum) { List 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 getScoreCharacteristicsList() { return Arrays.asList("PR_Dim01", "PR_Dim02", "PR_Dim03", "PR_Dim04", "PR_Dim05", "PR_Dim06", "PR_Dim07", "PR_Dim08"); } /** * 普通文本替换library * @return */ private List 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 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; } }