New file |
| | |
| | | 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; |
| | | } |
| | | } |