package com.ots.project.tool.report.SAQ; 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.MAQ.base.BaseCondition; import com.ots.project.tool.report.MAQ.base.MAQConditionVO; import com.ots.project.tool.report.MAQ.condition.KeyPointsCautions; import com.ots.project.tool.report.MAQ.condition.KeyPointsStrengths; import com.ots.project.tool.report.MAQ.condition.MAQCondition; import com.ots.project.tool.report.MAQ.condition.ScoreCharacteristics; import com.ots.project.tool.report.MAQ.condition.SimpleMessage; import com.ots.project.tool.report.ReportResultData; import com.ots.project.tool.report.SAQ.condition.ResponseFidelityDiagnosisSAQ; import com.ots.project.tool.report.SAQ.condition.ResponseFidelityDiagnosisSAQTitle; import com.ots.project.tool.report.SAQ.condition.SAQConditionVO; import com.ots.project.tool.report.SAQ.condition.SAQSummary; import com.ots.project.tool.report.SAQ.condition.SAQSummaryCondition; import com.ots.project.tool.report.SAQ.gs.condition.ResponseFidelityDiagnosisSAQGs; import com.ots.project.tool.report.SAQ.gs.condition.ResponseFidelityDiagnosisSAQGsTitle; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; import static com.ots.common.enums.ReportTypeEnum.Complete; @Setter @Getter @Slf4j public class SAQReport { private static final String OPENNESSTOEXPERIENCE_1 = "OpennessToExperience_1"; private static final String CONSCIENTIOUS_2 = "Conscientious_2"; private static final String SOCIALLYOPEN_3 = "SociallyOpen_3"; private static final String AGREEABLENESS_4 = "Agreeableness_4"; private static final String EMOTIONALBALANCE_5 = "EmotionalBalance_5"; private String questionnaireTaker; private String questionnaireID; private String reportGenerationDate; private String userName; private ReportTypeEnum reportTypeEnum; //邮箱 private String questionnaireEmail; private Map otherParams; 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 simpleMessage = new SimpleMessage(p); return simpleMessage; }).collect(Collectors.toList())); //指标命中对应字典 完整版 paramList.add(new ResponseFidelityDiagnosisSAQTitle()); paramList.add(new ResponseFidelityDiagnosisSAQ()); //支持GS简易版 paramList.add(new ResponseFidelityDiagnosisSAQGs()); paramList.add(new ResponseFidelityDiagnosisSAQGsTitle()); paramList.addAll(getScoreCharacteristicsList().stream().map(p -> { ScoreCharacteristics scoreCharacteristics = new ScoreCharacteristics(p); return scoreCharacteristics; }).collect(Collectors.toList())); paramList.addAll(getDataInit().stream().map(item -> { MAQCondition maqCondition = new MAQCondition(item); return maqCondition; }).collect(Collectors.toList())); paramList.add(new KeyPointsStrengths()); paramList.add(new KeyPointsCautions()); paramList.add(new SAQSummary(OPENNESSTOEXPERIENCE_1, getSAQSummaryParamList(OPENNESSTOEXPERIENCE_1))); paramList.add(new SAQSummary(CONSCIENTIOUS_2, getSAQSummaryParamList(CONSCIENTIOUS_2))); paramList.add(new SAQSummary(SOCIALLYOPEN_3, getSAQSummaryParamList(SOCIALLYOPEN_3))); paramList.add(new SAQSummary(AGREEABLENESS_4, getSAQSummaryParamList(AGREEABLENESS_4))); paramList.add(new SAQSummary(EMOTIONALBALANCE_5, getSAQSummaryParamList(EMOTIONALBALANCE_5))); return paramList; } private List getSAQSummaryParamList(String summaryType) { List paramList = new ArrayList<>(); if (Objects.equals(OPENNESSTOEXPERIENCE_1, summaryType)) { paramList.add(new SAQSummaryCondition(new SAQConditionVO(OPENNESSTOEXPERIENCE_1, "Flexibility,灵活性", "P_Flex01", "LIBSAQ10"))); paramList.add(new SAQSummaryCondition(new SAQConditionVO(OPENNESSTOEXPERIENCE_1, "Creativity,创造性", "P_Creat02", "LIBSAQ20"))); paramList.add(new SAQSummaryCondition(new SAQConditionVO(OPENNESSTOEXPERIENCE_1, "Analytical Approach,分析导向", "P_Analyt03", "LIBSAQ30"))); paramList.add(new SAQSummaryCondition(new SAQConditionVO(OPENNESSTOEXPERIENCE_1, "Independence,自主独立", "P_Indep04", "LIBSAQ40"))); } else if (Objects.equals(CONSCIENTIOUS_2, summaryType)) { paramList.add(new SAQSummaryCondition(new SAQConditionVO(CONSCIENTIOUS_2, "Achievement Orientation,成就导向", "P_Achiev05", "LIBSAQ50"))); paramList.add(new SAQSummaryCondition(new SAQConditionVO(CONSCIENTIOUS_2, "Initiative,能动性", "P_Initi06", "LIBSAQ60"))); paramList.add(new SAQSummaryCondition(new SAQConditionVO(CONSCIENTIOUS_2, "Persistence,坚持性", "P_Persis07", "LIBSAQ70"))); paramList.add(new SAQSummaryCondition(new SAQConditionVO(CONSCIENTIOUS_2, "Thoroughness,细致性", "P_Thorou08", "LIBSAQ80"))); paramList.add(new SAQSummaryCondition(new SAQConditionVO(CONSCIENTIOUS_2, "Dependability,可靠性", "P_Depend09", "LIBSAQ90"))); paramList.add(new SAQSummaryCondition(new SAQConditionVO(CONSCIENTIOUS_2, "Planning and Organizing,计划/组织性", "P_Plan10", "LIBSAQ100"))); paramList.add(new SAQSummaryCondition(new SAQConditionVO(CONSCIENTIOUS_2, "Trust and Integrity,坦诚守规", "P_Integr11", "LIBSAQ110"))); } else if (Objects.equals(SOCIALLYOPEN_3, summaryType)) { paramList.add(new SAQSummaryCondition(new SAQConditionVO(SOCIALLYOPEN_3, "Personal Energy,个人精力", "P_Energy12", "LIBSAQ120"))); paramList.add(new SAQSummaryCondition(new SAQConditionVO(SOCIALLYOPEN_3, "Socially Open,社交主动性", "P_Social13", "LIBSAQ130"))); paramList.add(new SAQSummaryCondition(new SAQConditionVO(SOCIALLYOPEN_3, "Leading Others,支配性", "P_Lead14", "LIBSAQ140"))); paramList.add(new SAQSummaryCondition(new SAQConditionVO(SOCIALLYOPEN_3, "Influence ,影响力", "Influencing_15", "LIBSAQ150"))); } else if (Objects.equals(AGREEABLENESS_4, summaryType)) { paramList.add(new SAQSummaryCondition(new SAQConditionVO(AGREEABLENESS_4, "Cooperation & Teamwork,团队合作", "P_Team16", "LIBSAQ160"))); paramList.add(new SAQSummaryCondition(new SAQConditionVO(AGREEABLENESS_4, "Empathetic,同理心", "P_Empath17", "LIBSAQ170"))); paramList.add(new SAQSummaryCondition(new SAQConditionVO(AGREEABLENESS_4, "Polite & Tactful,社交敏感性", "P_Polite18", "LIBSAQ180"))); } else if (Objects.equals(EMOTIONALBALANCE_5, summaryType)) { paramList.add(new SAQSummaryCondition(new SAQConditionVO(EMOTIONALBALANCE_5, "Self-Regulation,自控力", "P_Regula19", "LIBSAQ190"))); paramList.add(new SAQSummaryCondition(new SAQConditionVO(EMOTIONALBALANCE_5, "Managing Stress,压力管理", "P_ManStr20", "LIBSAQ200"))); paramList.add(new SAQSummaryCondition(new SAQConditionVO(EMOTIONALBALANCE_5, "Self-Confidence,自信/弹性", "P_Confid21", "LIBSAQ210"))); paramList.add(new SAQSummaryCondition(new SAQConditionVO(EMOTIONALBALANCE_5, "Mindfulness,专注/觉察", "P_Mind22", "LIBSAQ220"))); } return paramList; } private List getSimpleMessageCoreIds() { //支持SAQ GS简易版 return Arrays.asList("LIBSAQGS0001","LIBSAQGS0002","LIBSAQGS0005","LIBSAQGS0008","LIBSAQGS0009", "LIBSAQGS0011","LIBSAQGS0017","LIBSAQGS0015","LIBSAQGS8800","LIBSAQGS0018", "LIBSAQ0001", "LIBSAQ0003", "LIBSAQ0005", "LIBSAQ0007", "LIBSAQ0009", "LIBSAQ00011", "LIBSAQ0015", "LIBSAQ0017", "LIBSAQ0162", "LIBSAQ0164", "LIBSAQ0020", "LIBSAQ0022", "LIBSAQ0024", "LIBSAQ0026", "LIBSAQ0030", "LIBSAQ0035", "LIBSAQ0040", "LIBSAQ0041", "LIBSAQ0042", "LIBSAQ0043", "LIBSAQ0050", "LIBSAQ0051", "LIBSAQ0052", "LIBSAQ0053", "LIBSAQ0054", "LIBSAQ0060", "LIBSAQ0061", "LIBSAQ0062", "LIBSAQ0063", "LIBSAQ0064", "LIBSAQ0070", "LIBSAQ0080", "LIBSAQ0081", "LIBSAQ0110", "LIBSAQ0111", "LIBSAQ0105", "LIBSAQ0120", "LIBSAQ0121", "LIBSAQ0110", "LIBSAQ0131", "LIBSAQ0135", "LIBSAQ0120", "LIBSAQ0141", "LIBSAQ0150", "LIBSAQ0155", "LIBSAQ0160", "LIBSAQ0180", "LIBSAQ0190", "LIBSAQ0191", "LIBSAQ0192", "LIBSAQ0193", "LIBSAQ0194", "LIBSAQ0195", "LIBSAQ0090", "LIBSAQ0095", "LIBSAQ0096", "LIBSAQ0097", "LIBSAQ0098", "LIBSAQ0099", "LIBSAQ0200", "LIBSAQ0205", "LIBSAQ0206", "LIBSAQ0207", "LIBSAQ26005", "LIBSAQ1002", "LIBSAQ27005", "LIBSAQ28005", "LIBSAQ29005", "LIBSAQ30005", "LIBSAQ0210", "LIBSAQ26000", "LIBSAQ1000", "LIBSAQ10001", "LIBSAQ3000", "LIBSAQ3001", "LIBSAQ4000", "LIBSAQ4001", "LIBSAQ27000", "LIBSAQ5000", "LIBSAQ5001", "LIBSAQ6000", "LIBSAQ6001", "LIBSAQ7000", "LIBSAQ7001", "LIBSAQ8000", "LIBSAQ8001", "LIBSAQ9000", "LIBSAQ9001", "LIBSAQ10000", "LIBSAQ10001", "LIBSAQ28000", "LIBSAQ13000", "LIBSAQ13001", "LIBSAQ15000", "LIBSAQ15001", "LIBSAQ29000", "LIBSAQ16000", "LIBSAQ16001", "LIBSAQ17000", "LIBSAQ17001", "LIBSAQ30000", "LIBSAQ19000", "LIBSAQ19001", "LIBSAQ21000", "LIBSAQ21001", "LIBMAQ33060", "LIBSAQ26007", "LIBSAQ33061", "LIBSAQ27007", "LIBSAQ33062", "LIBSAQ28007", "LIBSAQ33063", "LIBSAQ29007", "LIBSAQ33064", "LIBSAQ33067", "LIBSAQ33069", "LIBSAQ30007", "LIBSAQ33070", "LIBSAQ33065", "LIBSAQ33067", "LIBSAQ33069","LIBSAQ33070" ); } private List getDataInit() { List conditionVOList = new ArrayList<>(); conditionVOList.add(new MAQConditionVO("Flexibility_1", "P_Flex01", "LIBSAQ10")); conditionVOList.add(new MAQConditionVO("Creativity_2", "P_Creat02", "LIBSAQ20")); conditionVOList.add(new MAQConditionVO("AnalyticalApproach_3", "P_Analyt03", "LIBSAQ30")); conditionVOList.add(new MAQConditionVO("Independence_4", "P_Indep04", "LIBSAQ40")); conditionVOList.add(new MAQConditionVO("AchievementOrientation_5", "P_Achiev05", "LIBSAQ50")); conditionVOList.add(new MAQConditionVO("Initiative_6", "P_Initi06", "LIBSAQ60")); conditionVOList.add(new MAQConditionVO("Persistence_7", "P_Persis07", "LIBSAQ70")); conditionVOList.add(new MAQConditionVO("Thoroughness_8", "P_Thorou08", "LIBSAQ80")); conditionVOList.add(new MAQConditionVO("Dependability_9", "P_Depend09", "LIBSAQ90")); conditionVOList.add(new MAQConditionVO("PlanningandOrganizing_10", "P_Plan10", "LIBSAQ100")); conditionVOList.add(new MAQConditionVO("TrustandIntegrity_11", "P_Integr11", "LIBSAQ110")); conditionVOList.add(new MAQConditionVO("PersonalEnergy_12", "P_Energy12", "LIBSAQ120")); conditionVOList.add(new MAQConditionVO("SociallyOpen_13", "P_Social13", "LIBSAQ130")); conditionVOList.add(new MAQConditionVO("LeadingOthers_14", "P_Lead14", "LIBSAQ140")); conditionVOList.add(new MAQConditionVO("Influencing_15", "P_Influ15", "LIBSAQ150")); conditionVOList.add(new MAQConditionVO("CooperationTeamwork_16", "P_Team16", "LIBSAQ160")); conditionVOList.add(new MAQConditionVO("Empathetic_17", "P_Empath17", "LIBSAQ170")); conditionVOList.add(new MAQConditionVO("PoliteTactful_18", "P_Polite18", "LIBSAQ180")); conditionVOList.add(new MAQConditionVO("Self_Regulation_19", "P_Regula19", "LIBSAQ190")); conditionVOList.add(new MAQConditionVO("ManagingStress_20", "P_ManStr20", "LIBSAQ200")); conditionVOList.add(new MAQConditionVO("Self_Confidence_21", "P_Confid21", "LIBSAQ210")); conditionVOList.add(new MAQConditionVO("Mindfulness_22", "P_Mind22", "LIBSAQ220")); conditionVOList.add(new MAQConditionVO("Task_Result_Orientation_31", "P_Task31", "LIBSAQ310")); conditionVOList.add(new MAQConditionVO("People_Orientation_32", "P_People32", "LIBSAQ320")); return conditionVOList; } private List getScoreCharacteristicsList() { return Arrays.asList("P_Flex01", "P_Creat02", "P_Analyt03", "P_Indep04", "P_Achiev05", "P_Initi06", "P_Persis07", "P_Thorou08", "P_Depend09", "P_Plan10", "P_Integr11", "P_Energy12", "P_Social13", "P_Lead14", "P_Influ15", "P_Team16", "P_Empath17", "P_Polite18", "P_Regula19", "P_ManStr20", "P_Confid21", "P_Mind22", "P_SDE23", "P_IM24", "P_INCON25", "P_Open26", "P_Consci27", "P_Extrov28", "P_Agree29", "P_EmSt30", "P_Task31", "P_People32", "P_Judge33"); } 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()); //根据报告类型获取报告字典 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)); } //水滴集合 if (Objects.nonNull(p.getMAQwaterDropsImages())) { waterDropsMap.putAll(p.getMAQwaterDropsImages()); } }); textMap.putAll(thaiCalculationMap); ReportResultData reportResultData = new ReportResultData(); reportResultData.setTextMap(textMap); reportResultData.setImageMap(waterDropsMap); return reportResultData; } }