package com.ots.project.tool.report.JAQ; import com.alibaba.fastjson.JSONObject; import com.ots.common.enums.LangTypeEnum; import com.ots.common.utils.StringUtils; import com.ots.project.exam.domain.TLibraryCode; import com.ots.project.exam.domain.TQuestion; import com.ots.project.exam.dto.QuestionObject; import com.ots.project.exam.service.impl.TQuestionServiceImpl; import com.ots.project.tool.AppUtil; import com.ots.project.tool.CacheServiceFactory; import com.ots.project.tool.exam.JsonUtil; import com.ots.project.tool.report.JAQ.condition.Table1; import com.ots.project.tool.report.JAQ.condition.Table2; import com.ots.project.tool.report.JAQ.condition.Table3; import com.ots.project.tool.report.JAQ.condition.Table4; import com.ots.project.tool.report.reportCalculation.response.ReportAPIResult; import lombok.Getter; import lombok.Setter; import java.util.*; @Getter @Setter public class JAQReport { TQuestionServiceImpl tQuestionService = AppUtil.getObject("examQuestion", TQuestionServiceImpl.class); /** * 岗位名称 */ private String postName; /** * 报告生成日期 */ private String reportGenerationDate; /** * 报告序号 */ private String reportNumber; /** * @return */ public List> getTemplateParameters(ReportAPIResult result, LangTypeEnum langType) { Map infoMap = new HashMap(); infoMap.put("postName", postName); infoMap.put("reportNumber", reportNumber); infoMap.put("reportGenerationDate", reportGenerationDate); Map tableList = new HashMap(); tableList.put("table1", getTable1(result, langType)); tableList.put("table2", getTable2(result, langType)); tableList.put("table3", getTable3(result, langType)); tableList.put("table4", getTable4(result, langType)); return Arrays.asList(infoMap, tableList); } List getTable4(ReportAPIResult result, LangTypeEnum langType) { List table4 = result.getTable4(); table4.stream().forEach(item -> { TLibraryCode maqReportLibrary = CacheServiceFactory.getInstance().getMAQReportLibrary(item.getCompetency()); if (Objects.nonNull(maqReportLibrary)) { item.setCompetency(maqReportLibrary.getLangTypeContext(langType)); } StringBuilder stringBuilder = new StringBuilder(); List listOfTopicNumbers = item.getListOfTopicNumbers(); //查找对于的主题目(根据JAQ题目编码,和语言类型找题目) listOfTopicNumbers.stream().forEach(p -> { String topic = queryTopic(langType, p); if (StringUtils.isBlank(topic)) { topic = "NONE N/A"; } stringBuilder.append(topic + "\n"); }); item.setExamplesOfHighPerformancePerformers(stringBuilder.toString()); }); return table4; } List getTable3(ReportAPIResult result, LangTypeEnum langType) { List table3 = result.getTable3(); table3.stream().forEach(item -> { TLibraryCode maqReportLibrary = CacheServiceFactory.getInstance().getMAQReportLibrary(item.getCompetency()); if (Objects.nonNull(maqReportLibrary)) { item.setCompetency(maqReportLibrary.getLangTypeContext(langType)); } }); return table3; } List getTable2(ReportAPIResult result, LangTypeEnum langType) { List table2 = result.getTable2(); table2.stream().forEach(item -> { TLibraryCode maqReportLibrary = CacheServiceFactory.getInstance().getMAQReportLibrary(item.getCompetency()); if (Objects.nonNull(maqReportLibrary)) { item.setCompetency(maqReportLibrary.getLangTypeContext(langType)); } }); return table2; } List getTable1(ReportAPIResult result, LangTypeEnum langType) { List table1 = result.getTable1(); table1.stream().forEach(item -> { TLibraryCode maqReportLibrary = CacheServiceFactory.getInstance().getMAQReportLibrary(item.getCompetency()); if (Objects.nonNull(maqReportLibrary)) { item.setCompetency(maqReportLibrary.getLangTypeContext(langType)); } }); return table1; } /** * 根据永久编号查语言题目 * * @param langType * @param permanentId * @return */ private String queryTopic(LangTypeEnum langType, String permanentId) { List tQuestionList = tQuestionService.selectTQuestionByPermanentId(permanentId); if (Objects.isNull(tQuestionList) || tQuestionList.size() == 0) { return null; } String content = tQuestionList.get(0).getContent(); QuestionObject questionObject = JSONObject.parseObject(content, QuestionObject.class); Map titleMap = JsonUtil.toJsonObject(questionObject.getTitleContent(), HashMap.class); return titleMap.get(langType.getMessage()); } }