[测评系统]--测评系统核心代码库
linzhijie
2023-04-15 0183c9be7ee7c2125bdd0491a9ba406de6abc621
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
package com.ots.project.tool.report.MAQNEW;
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.base.MAQConditionVO_V2;
import com.ots.project.tool.report.MAQNEW.base.MAQSummaryCondition_V2;
import com.ots.project.tool.report.MAQNEW.condition.*;
import com.ots.project.tool.report.ReportResultData;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import java.util.*;
import java.util.stream.Collectors;
@Setter
@Getter
@Slf4j
public class MAQReport_V2 {
    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 String questionnaireEmail;
    private String questionnaireStartTime;
    private String questionnaireEndTime;
    private ReportTypeEnum reportTypeEnum;
    
    private Map otherParams;
    
    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.add(new ResponseFidelityDiagnosisTitle_V2());
        paramList.add(new ResponseFidelityDiagnosis_V2());
 
        paramList.addAll(getScoreCharacteristicsList().stream().map(p -> {
            ScoreCharacteristics_V2 scoreCharacteristics = new ScoreCharacteristics_V2(p);
            return scoreCharacteristics;
        }).collect(Collectors.toList()));
        
        paramList.addAll(getDataInit().stream().map(item -> {
            MAQCondition_V2 maqCondition = new MAQCondition_V2(item);
            return maqCondition;
        }).collect(Collectors.toList()));
        paramList.add(new PrimaryLeadershipStyle_V2());
        paramList.add(new PrimaryLeadershipStyleContext_V2());
        
        
        paramList.add(new KeyPointsStrengths_V2());
        paramList.add(new KeyPointsCautions_V2());
        
        paramList.add(new MAQSummary_V2(OPENNESSTOEXPERIENCE_1, getMAQSummaryParamList(OPENNESSTOEXPERIENCE_1)));
        paramList.add(new MAQSummary_V2(CONSCIENTIOUS_2, getMAQSummaryParamList(CONSCIENTIOUS_2)));
        paramList.add(new MAQSummary_V2(SOCIALLYOPEN_3, getMAQSummaryParamList(SOCIALLYOPEN_3)));
        paramList.add(new MAQSummary_V2(AGREEABLENESS_4, getMAQSummaryParamList(AGREEABLENESS_4)));
        paramList.add(new MAQSummary_V2(EMOTIONALBALANCE_5, getMAQSummaryParamList(EMOTIONALBALANCE_5)));
        
        return paramList;
    }
    private List<String> 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_Judg33");
    }
    private List<String> getSimpleMessageCoreIds() {
        return Arrays.asList(
                "LIBMAQV20001", "LIBMAQV20002", "LIBMAQV20003", "LIBMAQV20004", "LIBMAQV20005",
                "LIBMAQV200101","LIBMAQV200201","LIBMAQV200301","LIBMAQV20041","LIBMAQV20042",//MAQV2简易版报告需要用到
                "LIBMAQV200071", "LIBMAQV20006", "LIBMAQV20009", "LIBMAQV20210", "LIBMAQV200077",
                "LIBMAQV20008", "LIBMAQV20009", "LIBMAQV20010", "LIBMAQV20011", "LIBMAQV20030",
                "LIBMAQV20040", "LIBMAQV20060", "LIBMAQV233000", "LIBMAQV20008", "LIBMAQV20065",
                "LIBMAQV20070", "LIBMAQV20080", "LIBMAQV20085", "LIBMAQV20090", "LIBMAQV2000794",
                "LIBMAQV2000795", "LIBMAQV20095", "LIBMAQV28800", "LIBMAQV20110",
                "LIBMAQV201052", "LIBMAQV20120", "LIBMAQV201102", "LIBMAQV201202", "LIBMAQV20111",
                "LIBMAQV20121", "LIBMAQV20105", "LIBMAQV20131", "LIBMAQV20141", "LIBMAQV20135",
                "LIBMAQV20150", "LIBMAQV20155", "LIBMAQV20160", "LIBMAQV20170", "LIBMAQV20190",
                "LIBMAQV20191", "LIBMAQV20192", "LIBMAQV20193", "LIBMAQV20194", "LIBMAQV20195",
                "LIBMAQV20162", "LIBMAQV20164", "LIBMAQV20200", "LIBMAQV20205", "LIBMAQV20221",
                "LIBMAQV20222", "LIBMAQV20223", "LIBMAQV20224", "LIBMAQV20225", "LIBMAQV20226",
                "LIBMAQV20227", "LIBMAQV20228", "LIBMAQV20229", "LIBMAQV20230", "LIBMAQV20231",
                "LIBMAQV20232", "LIBMAQV20233", "LIBMAQV20234", "LIBMAQV226006", "LIBMAQV20210",
                "LIBMAQV20220", "LIBMAQV231000", "LIBMAQV231010", "LIBMAQV231013", "LIBMAQV232010",
                "LIBMAQV232013", "LIBMAQV225000", "LIBMAQV225042", "LIBMAQV225043", "LIBMAQV225012",
                "LIBMAQV225013", "LIBMAQV225032", "LIBMAQV225033", "LIBMAQV225022", "LIBMAQV225023",
                "LIBMAQV225002", "LIBMAQV233010", "LIBMAQV233020", "LIBMAQV233021", "LIBMAQV233030",
                "LIBMAQV233040", "LIBMAQV233045", "LIBMAQV233050", "LIBMAQV233060", "LIBMAQV226003",
                "LIBMAQV226004", "LIBMAQV227003", "LIBMAQV227004", "LIBMAQV228003", "LIBMAQV228004",
                "LIBMAQV229003", "LIBMAQV229004", "LIBMAQV230003", "LIBMAQV230004", "LIBMAQV21001",
                "LIBMAQV21002", "LIBMAQV21007", "LIBMAQV22002", "LIBMAQV22007", "LIBMAQV23002", "LIBMAQV23007",
                "LIBMAQV24002", "LIBMAQV24007", "LIBMAQV25002", "LIBMAQV25007", "LIBMAQV26002", "LIBMAQV26007",
                "LIBMAQV27002", "LIBMAQV27007", "LIBMAQV28802", "LIBMAQV28007", "LIBMAQV29002", "LIBMAQV29007",
                "LIBMAQV210002", "LIBMAQV210007", "LIBMAQV211002", "LIBMAQV211007", "LIBMAQV212002", "LIBMAQV212007",
                "LIBMAQV213002", "LIBMAQV213007", "LIBMAQV214002", "LIBMAQV214007", "LIBMAQV215002", "LIBMAQV215007",
                "LIBMAQV216002", "LIBMAQV216007", "LIBMAQV217002", "LIBMAQV217007", "LIBMAQV218002", "LIBMAQV218007",
                "LIBMAQV219002", "LIBMAQV219007", "LIBMAQV220002", "LIBMAQV220007", "LIBMAQV221002", "LIBMAQV221007",
                "LIBMAQV222002", "LIBMAQV222007", "LIBMAQV226001", "LIBMAQV226002", "LIBMAQV21000", "LIBMAQV21001", "LIBMAQV22000",
                "LIBMAQV22001", "LIBMAQV23000", "LIBMAQV23001", "LIBMAQV24000", "LIBMAQV24001", "LIBMAQV227001", "LIBMAQV2270015", "LIBMAQV228002",
                "LIBMAQV25000", "LIBMAQV25001", "LIBMAQV26000", "LIBMAQV26001", "LIBMAQV27000", "LIBMAQV27001", "LIBMAQV229002",
                "LIBMAQV28000", "LIBMAQV28001", "LIBMAQV227002", "LIBMAQV29000", "LIBMAQV29001", "LIBMAQV210000", "LIBMAQV230002",
                "LIBMAQV210001", "LIBMAQV211000", "LIBMAQV211001", "LIBMAQV228001", "LIBMAQV212000", "LIBMAQV212001",
                "LIBMAQV213000", "LIBMAQV213001", "LIBMAQV214000", "LIBMAQV214001", "LIBMAQV215000", "LIBMAQV215001",
                "LIBMAQV229001", "LIBMAQV216000", "LIBMAQV216001", "LIBMAQV217000", "LIBMAQV217001", "LIBMAQV218000",
                "LIBMAQV218001", "LIBMAQV230001", "LIBMAQV219000", "LIBMAQV219001", "LIBMAQV220000", "LIBMAQV220001",
                "LIBMAQV221000", "LIBMAQV221001", "LIBMAQV222000", "LIBMAQV222001", "LIBMAQV231003", "LIBMAQV231005",
                "LIBMAQV232005", "LIBMAQV231010", "LIBMAQV231013", "LIBMAQV20020", "LIBMAQV233061", "LIBMAQV20007", "LIBMAQV200081", "LIBMAQV28002",
                "LIBMAQV227006", "LIBMAQV228006", "LIBMAQV229006", "LIBMAQV230006", "LIBMAQV233061", "LIBMAQV233062", "LIBMAQV233063", "LIBMAQV233064", "LIBMAQV233065"
        );
    }
    
    private List<MAQSummaryCondition_V2> getMAQSummaryParamList(String summaryType) {
        List<MAQSummaryCondition_V2> paramList = new ArrayList<>();
        if (Objects.equals(OPENNESSTOEXPERIENCE_1, summaryType)) {
            paramList.add(new MAQSummaryCondition_V2(new MAQConditionVO_V2(OPENNESSTOEXPERIENCE_1, "Flexibility,灵活性,ความยืดหยุ่น", "P_Flex01", "LIBMAQV210")));
            paramList.add(new MAQSummaryCondition_V2(new MAQConditionVO_V2(OPENNESSTOEXPERIENCE_1, "Creativity,创造性,ความคิดสร้างสรรค์", "P_Creat02", "LIBMAQV220")));
            paramList.add(new MAQSummaryCondition_V2(new MAQConditionVO_V2(OPENNESSTOEXPERIENCE_1, "Analytical Approach,分析导向,วิธีการวิเคราะห์", "P_Analyt03", "LIBMAQV230")));
            paramList.add(new MAQSummaryCondition_V2(new MAQConditionVO_V2(OPENNESSTOEXPERIENCE_1, "Independence,自主独立,ความเป็นอิสระ", "P_Indep04", "LIBMAQV240")));
        } else if (Objects.equals(CONSCIENTIOUS_2, summaryType)) {
            paramList.add(new MAQSummaryCondition_V2(new MAQConditionVO_V2(CONSCIENTIOUS_2, "Achievement Orientation,成就导向,กำหนดเป้าหมายให้ผลสัมฤทธิ์", "P_Achiev05", "LIBMAQV250")));
            paramList.add(new MAQSummaryCondition_V2(new MAQConditionVO_V2(CONSCIENTIOUS_2, "Initiative,能动性,ความคิดริเริ่ม", "P_Initi06", "LIBMAQV260")));
            paramList.add(new MAQSummaryCondition_V2(new MAQConditionVO_V2(CONSCIENTIOUS_2, "Persistence,坚持性,วิริยะ", "P_Persis07", "LIBMAQV270")));
            paramList.add(new MAQSummaryCondition_V2(new MAQConditionVO_V2(CONSCIENTIOUS_2, "Thoroughness,细致性,ความละเอียดรอบคอบ", "P_Thorou08", "LIBMAQV280")));
            paramList.add(new MAQSummaryCondition_V2(new MAQConditionVO_V2(CONSCIENTIOUS_2, "Dependability,可靠性,ความน่าเชื่อถือ", "P_Depend09", "LIBMAQV290")));
            paramList.add(new MAQSummaryCondition_V2(new MAQConditionVO_V2(CONSCIENTIOUS_2, "Planning and Organizing,计划/组织性,การวางแผนและการจัดระเบียบ", "P_Plan10", "LIBMAQV2100")));
            paramList.add(new MAQSummaryCondition_V2(new MAQConditionVO_V2(CONSCIENTIOUS_2, "Trust and Integrity,坦诚守规,ความน่าเชื่อถือและความซื่อสัตย์", "P_Integr11", "LIBMAQV2110")));
        } else if (Objects.equals(SOCIALLYOPEN_3, summaryType)) {
            paramList.add(new MAQSummaryCondition_V2(new MAQConditionVO_V2(SOCIALLYOPEN_3, "Personal Energy,个人精力,พลังงานส่วนตัว", "P_Energy12", "LIBMAQV2120")));
            paramList.add(new MAQSummaryCondition_V2(new MAQConditionVO_V2(SOCIALLYOPEN_3, "Socially Open,社交主动性,ความเป็นผู้เปิดกว้าง", "P_Social13", "LIBMAQV2130")));
            paramList.add(new MAQSummaryCondition_V2(new MAQConditionVO_V2(SOCIALLYOPEN_3, "Leading Others,支配性,การนำผู้อื่น", "P_Lead14", "LIBMAQV2140")));
            paramList.add(new MAQSummaryCondition_V2(new MAQConditionVO_V2(SOCIALLYOPEN_3, "Influence ,影响力,การจูงใจผู้อื่น", "P_Influ15", "LIBMAQV2150")));
        } else if (Objects.equals(AGREEABLENESS_4, summaryType)) {
            paramList.add(new MAQSummaryCondition_V2(new MAQConditionVO_V2(AGREEABLENESS_4, "Cooperation & Teamwork,团队合作,ความร่วมมือและการทำงานเป็นทีม", "P_Team16", "LIBMAQV2160")));
            paramList.add(new MAQSummaryCondition_V2(new MAQConditionVO_V2(AGREEABLENESS_4, "Empathetic,同理心,ความเห็นอกเห็นใจ", "P_Empath17", "LIBMAQV2170")));
            paramList.add(new MAQSummaryCondition_V2(new MAQConditionVO_V2(AGREEABLENESS_4, "Polite & Tactful,社交敏感性,ความสุภาพและมีไหวพริบ", "P_Polite18", "LIBMAQV2180")));
        } else if (Objects.equals(EMOTIONALBALANCE_5, summaryType)) {
            paramList.add(new MAQSummaryCondition_V2(new MAQConditionVO_V2(EMOTIONALBALANCE_5, "Self-Regulation,自控力,การควบคุมตนเอง", "P_Regula19", "LIBMAQV2190")));
            paramList.add(new MAQSummaryCondition_V2(new MAQConditionVO_V2(EMOTIONALBALANCE_5, "Managing Stress,压力管理,การจัดการกับความเครียด", "P_ManStr20", "LIBMAQV2200")));
            paramList.add(new MAQSummaryCondition_V2(new MAQConditionVO_V2(EMOTIONALBALANCE_5, "Self-Confidence,自信/弹性,ความมั่นใจในตนเอง", "P_Confid21", "LIBMAQV2210")));
            paramList.add(new MAQSummaryCondition_V2(new MAQConditionVO_V2(EMOTIONALBALANCE_5, "Mindfulness,专注/觉察,และสร้างแรงบันดาลใจให้ผู้มีส่วนได้ส่วนเสียขององค์กรเชื่อมั่นในพันธกิจ,วิสัยทัศน์ และค่านิยมขององค์กร", "P_Mind22", "LIBMAQV2220")));
        }
        return paramList;
    }
    private List<MAQConditionVO_V2> getDataInit() {
        List<MAQConditionVO_V2> conditionVOList = new ArrayList<>();
        conditionVOList.add(new MAQConditionVO_V2("Flexibility_1", "P_Flex01", "LIBMAQV210"));
        conditionVOList.add(new MAQConditionVO_V2("Creativity_2", "P_Creat02", "LIBMAQV220"));
        conditionVOList.add(new MAQConditionVO_V2("AnalyticalApproach_3", "P_Analyt03", "LIBMAQV230"));
        conditionVOList.add(new MAQConditionVO_V2("Independence_4", "P_Indep04", "LIBMAQV240"));
        conditionVOList.add(new MAQConditionVO_V2("AchievementOrientation_5", "P_Achiev05", "LIBMAQV250"));
        conditionVOList.add(new MAQConditionVO_V2("Initiative_6", "P_Initi06", "LIBMAQV260"));
        conditionVOList.add(new MAQConditionVO_V2("Persistence_7", "P_Persis07", "LIBMAQV270"));
        conditionVOList.add(new MAQConditionVO_V2("Thoroughness_8", "P_Thorou08", "LIBMAQV280"));
        conditionVOList.add(new MAQConditionVO_V2("Dependability_9", "P_Depend09", "LIBMAQV290"));
        conditionVOList.add(new MAQConditionVO_V2("PlanningandOrganizing_10", "P_Plan10", "LIBMAQV2100"));
        conditionVOList.add(new MAQConditionVO_V2("TrustandIntegrity_11", "P_Integr11", "LIBMAQV2110"));
        conditionVOList.add(new MAQConditionVO_V2("PersonalEnergy_12", "P_Energy12", "LIBMAQV2120"));
        conditionVOList.add(new MAQConditionVO_V2("SociallyOpen_13", "P_Social13", "LIBMAQV2130"));
        conditionVOList.add(new MAQConditionVO_V2("LeadingOthers_14", "P_Lead14", "LIBMAQV2140"));
        conditionVOList.add(new MAQConditionVO_V2("Influencing_15", "P_Influ15", "LIBMAQV2150"));
        conditionVOList.add(new MAQConditionVO_V2("CooperationTeamwork_16", "P_Team16", "LIBMAQV2160"));
        conditionVOList.add(new MAQConditionVO_V2("Empathetic_17", "P_Empath17", "LIBMAQV2170"));
        conditionVOList.add(new MAQConditionVO_V2("PoliteTactful_18", "P_Polite18", "LIBMAQV2180"));
        conditionVOList.add(new MAQConditionVO_V2("Self_Regulation_19", "P_Regula19", "LIBMAQV2190"));
        conditionVOList.add(new MAQConditionVO_V2("ManagingStress_20", "P_ManStr20", "LIBMAQV2200"));
        conditionVOList.add(new MAQConditionVO_V2("Self_Confidence_21", "P_Confid21", "LIBMAQV2210"));
        conditionVOList.add(new MAQConditionVO_V2("Mindfulness_22", "P_Mind22", "LIBMAQV2220"));
        conditionVOList.add(new MAQConditionVO_V2("Task_Result_Orientation_31", "P_Task31", "LIBMAQV2310"));
        conditionVOList.add(new MAQConditionVO_V2("People_Orientation_32", "P_People32", "LIBMAQV2320"));
        return conditionVOList;
    }
 
    /**
     * 获取报告字典替换值
     * @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));
            }
            //水滴集合
            if (Objects.nonNull(p.getMAQwaterDropsImages())) {
                waterDropsMap.putAll(p.getMAQwaterDropsImages());
            }
        });
        textMap.putAll(thaiCalculationMap);
        ReportResultData reportResultData = new ReportResultData();
        reportResultData.setTextMap(textMap);
        reportResultData.setImageMap(waterDropsMap);
        return reportResultData;
    }
}