| | |
| | | package com.ots.project.exam.service.impl; |
| | | |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.github.pagehelper.PageInfo; |
| | |
| | | import org.modelmapper.ModelMapper; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Collections; |
| | | import java.util.HashMap; |
| | |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | import java.util.stream.Collectors; |
| | | |
| | | |
| | | @Service |
| | | public class ExamPaperServiceImpl implements IExamPaperService { |
| | | |
| | | protected final static ModelMapper modelMapper = ModelMapperSingle.Instance(); |
| | | |
| | | @Autowired |
| | | private ExamPaperMapper examPaperMapper; |
| | | |
| | | @Autowired |
| | | private ITTextContentService textContentService; |
| | | |
| | | @Autowired |
| | | private TQuestionMapper questionMapper; |
| | | |
| | | @Autowired |
| | | private ITQuestionService questionService; |
| | | |
| | | @Autowired |
| | | private ITExamReportService examReportService; |
| | | |
| | | @Autowired |
| | | private IExamUtilService examUtilService; |
| | | |
| | | @Autowired |
| | | private ITExamPaperService itExamPaperService; |
| | | |
| | | |
| | | @Override |
| | | public List<PaperInfo> indexPaper(PaperFilter paperFilter) { |
| | | return examPaperMapper.indexPaper(paperFilter); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public PageInfo<ExamPaper> page(ExamPaperPageRequestVM requestVM) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public PageInfo<ExamPaper> taskExamPage(ExamPaperPageRequestVM requestVM) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public PageInfo<ExamPaper> studentPage(ExamPaperPageVM requestVM) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public ExamPaper savePaperFromVM(ExamPaperEditRequestVM examPaperEditRequestVM, ExamUser user) { |
| | | return null; |
| | | } |
| | | |
| | | |
| | | // 分发题目到前台的方法 |
| | | @Override |
| | | public ExamPaperEditRequestVM examPaperToVM(Integer id, String tokenId, String langType) { |
| | | TExamPaper tExamPaper = itExamPaperService.selectTExamPaperById(id.longValue()); |
| | | |
| | | tExamPaper.setLangType(langType); |
| | | |
| | | ExamPaperEditRequestVM vm = modelMapper.map(tExamPaper, ExamPaperEditRequestVM.class); |
| | | |
| | | // 解析出题目 |
| | | List<ExamPaperTitleItemVM> examPaperTitleItemVMS = resolveToQuestion(tExamPaper, vm); |
| | | |
| | | // 设置大题的下标questionOrder,工作类型问卷和测试问卷都要 |
| | | setQuestionOrder(examPaperTitleItemVMS); |
| | | |
| | | // 工作问卷题目随机,设置report给前台也是在这里 |
| | | setRandomQuestionOrderAndReport(tokenId, vm, examPaperTitleItemVMS); |
| | | |
| | | |
| | | // 传分段的数据给前台 |
| | | vm.setParts(examPaperTitleItemVMS.get(0).getParts()); |
| | | |
| | | |
| | | // 多语言的翻译 |
| | | multilingualTranslation(langType, vm); |
| | | |
| | | |
| | | // 设置questionReport返回给前台 |
| | | return vm; |
| | | } |
| | | |
| | | @Override |
| | | public ExamPaperEditRequestVM examPaperToVM(RelatedParty relatedParty, String token_id, String langType) { |
| | | ExamPaperEditRequestVM vm = examPaperToVM(relatedParty.getProdId().intValue(), token_id, langType); |
| | | setExtraReturnValue(relatedParty, vm); |
| | | return vm; |
| | | } |
| | | |
| | | private void setExtraReturnValue(RelatedParty relatedParty, ExamPaperEditRequestVM vm) { |
| | | vm.setQuestionTemplateId(relatedParty.getQuestionTemplateId()); |
| | | vm.setReportTemplateId(relatedParty.getReportTemplateId()); |
| | |
| | | vm.setMemberName(relatedParty.getMemberName()); |
| | | } |
| | | } |
| | | |
| | | private void setRandomQuestionOrderAndReport(String tokenId, ExamPaperEditRequestVM vm, List<ExamPaperTitleItemVM> examPaperTitleItemVMS) { |
| | | List<Integer> intList = new ArrayList<>(); |
| | | |
| | | // examPaperTitleItemVMS 为一个大题,一个大段 |
| | | vm.setTitleItems(randomQuestion(examPaperTitleItemVMS, intList, tokenId,vm)); |
| | | |
| | | // 题目的顺序 |
| | | vm.setQuestionOrder(intList); |
| | | } |
| | | |
| | | private void setQuestionOrder(List<ExamPaperTitleItemVM> examPaperTitleItemVMS) { |
| | | int questionOrederNum = 0; |
| | | int questionItemQONum = 0; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | // 解析得到题目 |
| | | private List<ExamPaperTitleItemVM> resolveToQuestion(TExamPaper examPaper, ExamPaperEditRequestVM vm) { |
| | | vm.setLevel(examPaper.getGradeLevel().intValue()); |
| | | TTextContent frameTextContent = textContentService.selectTTextContentById(examPaper.getFrameTextContentId().longValue()); |
| | | List<ExamPaperTitleItemObject> examPaperTitleItemObjects = JsonUtil.toJsonListObject(frameTextContent.getContent(), ExamPaperTitleItemObject.class); |
| | | |
| | | |
| | | // titleQuestionIds 的大题目 |
| | | TExamPaper tExamPaper = new TExamPaper(); |
| | | BeanUtils.copyProperties(examPaper, tExamPaper); |
| | | examUtilService.setTitleName(tExamPaper, examPaperTitleItemObjects); |
| | | |
| | | List<Integer> questionIds = examPaperTitleItemObjects.stream() |
| | | .flatMap(t -> t.getQuestionItems().stream() |
| | | .map(q -> q.getId())) |
| | | .collect(Collectors.toList()); |
| | | List<TQuestion> questions = questionMapper.selectByIds(questionIds); |
| | | |
| | | // vm.setScore(ExamUtil.originalScoreToVM(examPaper.getScore())); |
| | | return examPaperTitleItemObjects.stream().map(t -> { |
| | | ExamPaperTitleItemVM tTitleVM = modelMapper.map(t, ExamPaperTitleItemVM.class); |
| | | |
| | | // 设置永久编号 |
| | | tTitleVM.setPermanentId(t.getPermanentId()); |
| | | |
| | | |
| | | // 小题 |
| | | List<QuestionEditRequestVM> questionItemsVM = t.getQuestionItems().stream().map(i -> { |
| | | try { |
| | | TQuestion question = questions.stream().filter(q -> q.getId().equals(i.getId().longValue())).findFirst().get(); |
| | | QuestionEditRequestVM questionEditRequestVM = questionService.getQuestionEditRequestVM(question); |
| | | questionEditRequestVM.setItemOrder(i.getItemOrder()); |
| | | |
| | | |
| | | // 永久编号 |
| | | if (Objects.isNull(question.getPermanentId())) { |
| | | question.setPermanentId(i.getPermanentId()); |
| | | } |
| | | |
| | | questionEditRequestVM.setPermanentId(question.getPermanentId()); |
| | | questionEditRequestVM.setPartOrder(i.getPartOrder()); |
| | | questionEditRequestVM.setParentQuestionId(i.getParentQuestionId()); |
| | |
| | | return tTitleVM; |
| | | }).collect(Collectors.toList()); |
| | | } |
| | | |
| | | |
| | | // 多语言翻译 |
| | | private void multilingualTranslation(String langType, ExamPaperEditRequestVM vm) { |
| | | vm.setName(ExamUtil.getLangString(langType, vm.getName())); |
| | | vm.setGuide(ExamUtil.getLangString(langType, vm.getGuide())); |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | // 翻译分段 |
| | | if (CollUtil.isEmpty(vm.getParts())) { |
| | | return; |
| | | } |
| | | |
| | | vm.getParts().stream().forEach(questionPart -> { |
| | | questionPart.getSignals().stream().forEach(signalObject -> { |
| | | signalObject.setSignalDescription(ExamUtil.getLangString(langType, signalObject.getSignalDescription())); |
| | | }); |
| | | }); |
| | | } |
| | | |
| | | private List<ExamPaperTitleItemVM> randomQuestion(List<ExamPaperTitleItemVM> examPaperTitleItemVMS, List<Integer> intList, String tokenId, ExamPaperEditRequestVM vm) { |
| | | |
| | | // 判断是否是空 |
| | | if (Objects.isNull(examPaperTitleItemVMS) || examPaperTitleItemVMS.isEmpty()) { |
| | | return examPaperTitleItemVMS; |
| | | } |
| | | |
| | | |
| | | // 人格类型问卷,智力 |
| | | if (Objects.equals(vm.getQuestionTemplateId(), "personality")) { |
| | | return getExamOnePaperTitleItemVMS(examPaperTitleItemVMS, intList, tokenId); |
| | | } else if (Objects.equals(vm.getQuestionTemplateId(), "intelligence")) { |
| | | return getExamPaperIntelligenceQeustionVMS(examPaperTitleItemVMS, intList, tokenId, vm); |
| | | } else { |
| | | |
| | | // 工作类型问卷 |
| | | return getExamJobPaperTitleItemVMS(examPaperTitleItemVMS, intList, tokenId); |
| | | } |
| | | } |
| | | |
| | | private List<ExamPaperTitleItemVM> getExamOnePaperTitleItemVMS(List<ExamPaperTitleItemVM> examPaperTitleItemVMS, List<Integer> intList, String tokenId) { |
| | | |
| | | // 人格问卷和智力问卷随机 |
| | | TExamReport tExamReportQuery = new TExamReport(); |
| | | tExamReportQuery.setTokenId(tokenId); |
| | | List<QuestionEditRequestVM> questionItems = examPaperTitleItemVMS.get(0).getQuestionItems(); |
| | | |
| | | // 新增随机打乱序列 |
| | | List<TExamReport> tExamReportList = examReportService.selectTExamReportList(tExamReportQuery); |
| | | if (Objects.nonNull(tExamReportList) && tExamReportList.size() > 0) { |
| | | TExamReport tExamReport = tExamReportList.get(0); |
| | |
| | | } |
| | | List<QuestionEditRequestVM> questionItemsNew = new ArrayList<>(); |
| | | for (int i = 0; i < intList.size(); i++) { |
| | | questionItemsNew.add(questionItems.get(intList.get(i))); |
| | | questionItemsNew.add(questionItems.get(intList.get(i)));// 取到底是那一题 |
| | | } |
| | | |
| | | |
| | | // 重新排序,设置questionReport给前端 |
| | | for (int i = 0; i < questionItemsNew.size(); i++) { |
| | | questionItemsNew.get(i).setItemOrder(i+1); |
| | | |
| | | questionItemsNew.get(i).setItemOrder(i+1);// itemOrder是后台给的序号 |
| | | // 设置questionReport给前端 |
| | | setQuestionReportForVM(tExamReportList, questionItemsNew.get(i)); |
| | | } |
| | | |
| | | examPaperTitleItemVMS.get(0).setQuestionItems(questionItemsNew); |
| | | return examPaperTitleItemVMS; |
| | | } |
| | | |
| | | private List<ExamPaperTitleItemVM> getExamPaperIntelligenceQeustionVMS(List<ExamPaperTitleItemVM> examPaperTitleItemVMS, List<Integer> intList, String tokenId, ExamPaperEditRequestVM vm) { |
| | | |
| | | // 获取智力题里面的题目 |
| | | TExamReport tExamReportQuery = new TExamReport(); |
| | | tExamReportQuery.setTokenId(tokenId); |
| | | List<TExamReport> tExamReportList = examReportService.selectTExamReportList(tExamReportQuery); |
| | | |
| | | |
| | | // map是每一段 |
| | | // 新的要发给前台的 |
| | | List<QuestionEditRequestVM> questionItemsResulte = new ArrayList<>(); |
| | | if (Objects.nonNull(tExamReportList) && tExamReportList.size() > 0) { |
| | | questionItemsResulte = getIntelligenceQuestionOrder(examPaperTitleItemVMS, tExamReportList, vm); |
| | | } else { |
| | | initializeIntelligenceQuestion(examPaperTitleItemVMS, intList, questionItemsResulte, vm); |
| | | } |
| | | |
| | | |
| | | // 重新排序,设置questionReport给前端 |
| | | calculationNumber(tExamReportList, questionItemsResulte); |
| | | |
| | | examPaperTitleItemVMS.get(0).setQuestionItems(questionItemsResulte); |
| | | return examPaperTitleItemVMS; |
| | | } |
| | | |
| | | private List<QuestionEditRequestVM> getIntelligenceQuestionOrder(List<ExamPaperTitleItemVM> examPaperTitleItemVMS, List<TExamReport> tExamReportList, ExamPaperEditRequestVM vm) { |
| | | TExamReport tExamReport = tExamReportList.get(0); |
| | | List<Integer> intList = JSON.parseObject(tExamReport.getQuestionOrder(), ArrayList.class); |
| | |
| | | List<QuestionEditRequestVM> questionItemsResulte = new ArrayList<>(); |
| | | for (int i = 0; i < intList.size(); i++) { |
| | | int order = intList.get(i); |
| | | |
| | | // 选项的映射 |
| | | Map<String, QuestionEditItemVM> itemsMap = new HashMap<>(); |
| | | List<QuestionEditItemVM> items = questionItems.get(order).getItems(); |
| | | items.stream().forEach(item-> itemsMap.put(item.getPrefix(), item)); |
| | | |
| | | |
| | | // 得到是那一题的选项 |
| | | List<String> itemList = optionIntList.get(i); |
| | | |
| | | |
| | | // 排好序的选项 |
| | | List<QuestionEditItemVM> itemsResult = itemList.stream().map(num -> { |
| | | return itemsMap.get(num); |
| | | }).collect(Collectors.toList()); |
| | | questionItems.get(order).setItems(itemsResult); |
| | | questionItemsResulte.add(questionItems.get(order)); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | // List<QuestionEditRequestVM> questionItemsResulte = intList.stream().map(order-> { |
| | | // |
| | | // // 选项的映射 |
| | | // Map<String, QuestionEditItemVM> itemsMap = new HashMap<>(); |
| | | // List<QuestionEditItemVM> items = questionItems.get(order).getItems(); |
| | | // items.stream().forEach(item-> itemsMap.put(item.getPrefix(), item)); |
| | | // |
| | | // // 得到是那一题的选项 |
| | | // List<String> itemList = optionIntList.get(order); |
| | | // |
| | | // // 排好序的选项 |
| | | // List<QuestionEditItemVM> itemsResult = itemList.stream().map(num -> { |
| | | // return itemsMap.get(num); |
| | | // }).collect(Collectors.toList()); |
| | | // questionItems.get(order).setItems(itemsResult); |
| | | // |
| | | // return questionItems.get(order); |
| | | // }).collect(Collectors.toList()); |
| | | |
| | | vm.setOptionOrder(optionIntList); |
| | | return questionItemsResulte; |
| | | } |
| | | |
| | | private void calculationNumber(List<TExamReport> tExamReportList, List<QuestionEditRequestVM> questionItemsResulte) { |
| | | Integer intelligenceTitleNum = 0; |
| | | Integer intelligenceNum = 0; |
| | | |
| | | |
| | | // 计算序号 |
| | | Integer itemSize = 0; |
| | | for (QuestionEditRequestVM questionEditRequestVM : questionItemsResulte) { |
| | | if (StringUtils.isEmpty(questionEditRequestVM.getParentQuestionId())) { |
| | | itemSize++; |
| | | } |
| | | } |
| | | |
| | | |
| | | // 根据每一段计算序号,组成集合partSizeMap,分开记录序号 |
| | | Map<Integer, Integer> partSizeMap = new HashMap<>(); |
| | | for (QuestionEditRequestVM questionEditRequestVM : questionItemsResulte) { |
| | | if (StringUtils.isNotEmpty(questionEditRequestVM.getParentQuestionId())) { |
| | |
| | | partSizeMap.put(partOrder, 1); |
| | | } |
| | | } |
| | | |
| | | |
| | | Integer partOrder = 0; |
| | | for (Integer i = 0; i < questionItemsResulte.size(); i++) { |
| | | QuestionEditRequestVM questionEditRequestVM = questionItemsResulte.get(i); |
| | | |
| | | |
| | | // 题目的序号要分开记,partOrder不一样就重新计算 |
| | | if (!Objects.equals(partOrder, questionEditRequestVM.getPartOrder())) { |
| | | partOrder = questionEditRequestVM.getPartOrder(); |
| | | intelligenceTitleNum = 0; |
| | | } |
| | | questionEditRequestVM.setItemOrder(i + 1); |
| | | |
| | | questionEditRequestVM.setItemOrder(i + 1);// itemOrder是后台给的序号 |
| | | // 设置questionReport给前端 |
| | | setQuestionReportForVM(tExamReportList, questionEditRequestVM); |
| | | |
| | | if (Objects.equals(questionEditRequestVM.getTemplate(), "intelligence_title")) { |
| | | // 给前端序号 |
| | | if (Objects.equals(questionEditRequestVM.getTemplate(), "intelligence_title")) { // 问答题 |
| | | questionEditRequestVM.setQuestionNumber(String.valueOf(++intelligenceTitleNum) + "/" + partSizeMap.get(questionEditRequestVM.getPartOrder()).toString()); |
| | | intelligenceNum = 0; |
| | | } else if (StringUtils.isEmpty(questionEditRequestVM.getParentQuestionId())) { |
| | | } else if (StringUtils.isEmpty(questionEditRequestVM.getParentQuestionId())) { //普通题 |
| | | questionEditRequestVM.setQuestionNumber(String.valueOf(++intelligenceTitleNum) + "/" + partSizeMap.get(questionEditRequestVM.getPartOrder()).toString()); |
| | | } else { |
| | | } else { // 问答题的小题 |
| | | questionEditRequestVM.setQuestionNumber("(" + ++intelligenceNum + ")"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | private void initializeIntelligenceQuestion(List<ExamPaperTitleItemVM> examPaperTitleItemVMS, List<Integer> intList, List<QuestionEditRequestVM> questionItemsResulte, ExamPaperEditRequestVM vm) { |
| | | |
| | | // 原来的题目 |
| | | List<QuestionEditRequestVM> questionItems = examPaperTitleItemVMS.get(0).getQuestionItems(); |
| | | |
| | | |
| | | // 遍历每一段的题目 |
| | | // 段:题目题目列表,part:题目列表 |
| | | Map<Integer, List<QuestionEditRequestVM>> questionEditRequestVMSMap = getPartOrderQuestionMap(examPaperTitleItemVMS, questionItems); |
| | | |
| | | |
| | | // parentQuestionId : 题目 |
| | | Map<String, List<QuestionEditRequestVM>> parentQuestionIdMap = getParentQuestionIdMap(questionItems); |
| | | |
| | | |
| | | // 提前打乱 |
| | | for (Map.Entry<String, List<QuestionEditRequestVM>> entry : parentQuestionIdMap.entrySet()) { |
| | | entry.setValue(getQuestionEditRequestRandVMS(entry.getValue())); |
| | | } |
| | | |
| | | for (Map.Entry<Integer, List<QuestionEditRequestVM>> entry : questionEditRequestVMSMap.entrySet()) { |
| | | |
| | | // intelligence_title |
| | | getIntelligenceTitleResult(entry.getValue(), parentQuestionIdMap, questionItemsResulte); |
| | | |
| | | |
| | | // intelligence |
| | | getintelligenceResult(entry.getValue(), questionItemsResulte); |
| | | } |
| | | |
| | | |
| | | // 设置序号 |
| | | vm.setOptionOrder(new ArrayList<>()); |
| | | for (QuestionEditRequestVM questionEditRequestVM : questionItemsResulte) { |
| | | intList.add(questionEditRequestVM.getQuestionOrder()); |
| | |
| | | vm.getOptionOrder().add(prfixList); |
| | | } |
| | | } |
| | | |
| | | private void getintelligenceResult(List<QuestionEditRequestVM> questionItems, List<QuestionEditRequestVM> questionItemsResult) { |
| | | List<QuestionEditRequestVM> intelligenceList = questionItems.stream().filter((QuestionEditRequestVM questionEditRequestVM) -> Objects.equals(questionEditRequestVM.getTemplate(), "intelligence") && StringUtils.isEmpty(questionEditRequestVM.getParentQuestionId())).collect(Collectors.toList()); |
| | | intelligenceList = getQuestionEditRequestRandVMS(intelligenceList); |
| | | questionItemsResult.addAll(intelligenceList); |
| | | } |
| | | |
| | | private void getIntelligenceTitleResult(List<QuestionEditRequestVM> questionItems, Map<String, List<QuestionEditRequestVM>> parentQuestionIdMap, List<QuestionEditRequestVM> questionItemsResult) { |
| | | |
| | | // intelligence_title |
| | | List<QuestionEditRequestVM> intelligenceTitleList = questionItems.stream().filter((QuestionEditRequestVM questionEditRequestVM) -> Objects.equals(questionEditRequestVM.getTemplate(), "intelligence_title")).collect(Collectors.toList()); |
| | | intelligenceTitleList = getQuestionEditRequestRandVMS(intelligenceTitleList); |
| | | |
| | | // 大题下面的小题目 |
| | | List<QuestionEditRequestVM> intelligenceTitleResultList = new ArrayList<>(); |
| | | for (QuestionEditRequestVM questionEditRequestVM : intelligenceTitleList) { |
| | | intelligenceTitleResultList.add(questionEditRequestVM); |
| | |
| | | } |
| | | questionItemsResult.addAll(intelligenceTitleResultList); |
| | | } |
| | | |
| | | private Map<String, List<QuestionEditRequestVM>> getParentQuestionIdMap(List<QuestionEditRequestVM> questionItems) { |
| | | Map<String, List<QuestionEditRequestVM>> parentQuestionIdMap = questionItems.stream().collect(Collectors.groupingBy(QuestionEditRequestVM::getParentQuestionId)); |
| | | parentQuestionIdMap.remove(""); |
| | | return parentQuestionIdMap; |
| | | } |
| | | |
| | | private Map<Integer, List<QuestionEditRequestVM>> getPartOrderQuestionMap(List<ExamPaperTitleItemVM> examPaperTitleItemVMS, List<QuestionEditRequestVM> questionItems) { |
| | | List<QuestionPart> parts = examPaperTitleItemVMS.get(0).getParts(); |
| | | |
| | | // Map(partOrder,QuestionEditRequestVMList) |
| | | Map<Integer, List<QuestionEditRequestVM>> questionEditRequestVMSMap = new LinkedHashMap<>(); |
| | | for (QuestionPart questionPart : parts) { |
| | | |
| | | // 填充questionEditRequestVMSMap |
| | | getPartintelligenceAndTitleMap(questionItems, questionEditRequestVMSMap, questionPart); |
| | | } |
| | | return questionEditRequestVMSMap; |
| | | } |
| | | |
| | | |
| | | // 打乱题目 |
| | | private List<QuestionEditRequestVM> getQuestionEditRequestRandVMS(List<QuestionEditRequestVM> questionEditRequestVM) { |
| | | List<Integer> randList = new ArrayList<>(); |
| | | for (int i = 0; i < questionEditRequestVM.size(); i++) { |
| | |
| | | Collections.shuffle(randList); |
| | | List<QuestionEditRequestVM> intelligenceTitleListResult = new ArrayList<>(); |
| | | for (int i : randList) { |
| | | |
| | | // 重新排序的时候打乱题目的每一个选项 |
| | | QuestionEditRequestVM questionEditRequestVMResult = questionEditRequestVM.get(i); |
| | | |
| | | // 打乱题目选项的顺序 |
| | | setRandQuestionItems( questionEditRequestVMResult); |
| | | intelligenceTitleListResult.add(questionEditRequestVMResult); |
| | | } |
| | | questionEditRequestVM = intelligenceTitleListResult; |
| | | return questionEditRequestVM; |
| | | } |
| | | |
| | | private void setRandQuestionItems( QuestionEditRequestVM questionEditRequestVMDTO) { |
| | | List<QuestionEditItemVM> items = questionEditRequestVMDTO.getItems(); |
| | | List<Integer> randItemList = new ArrayList<>(); |
| | |
| | | for (int j = 0; j < items.size(); j++) { |
| | | randItemList.add(j); |
| | | } |
| | | |
| | | Collections.shuffle(randItemList); |
| | | |
| | | for (int k : randItemList) { |
| | | itemsResult.add(items.get(k)); |
| | | } |
| | | |
| | | questionEditRequestVMDTO.setItems(itemsResult); |
| | | } |
| | | } |
| | | |
| | | private void getPartintelligenceAndTitleMap(List<QuestionEditRequestVM> intelligenceAndTitleList, Map<Integer, List<QuestionEditRequestVM>> questionEditRequestVMSMap, QuestionPart questionPart) { |
| | | Integer partOrder = questionPart.getPartOrder(); |
| | | List<QuestionEditRequestVM> questionEditRequestListVMS = new ArrayList<>(); |
| | | for (QuestionEditRequestVM questionEditRequestVM : intelligenceAndTitleList) { |
| | | if (Objects.equals(questionEditRequestVM.getPartOrder(), partOrder)) { |
| | | questionEditRequestListVMS.add(questionEditRequestVM); |
| | | |
| | | } |
| | | } |
| | | questionEditRequestVMSMap.put(partOrder, questionEditRequestListVMS); |
| | | } |
| | | |
| | | |
| | | |
| | | // 设置题目下标的随机 |
| | | private void setSubscript(List<Integer> intList, List<QuestionEditRequestVM> questionItems) { |
| | | |
| | | // 如果题目有分段 |
| | | if (Objects.nonNull(questionItems.get(0).getPartOrder()) && questionItems.get(0).getPartOrder() != 0) { |
| | | int partOrder = questionItems.get(0).getPartOrder(); |
| | | List<Integer> partOrderList = new ArrayList<>(); |
| | |
| | | partOrderList.add(i); |
| | | } |
| | | } |
| | | |
| | | |
| | | // 最后一次打乱 |
| | | Collections.shuffle(partOrderList); |
| | | for (int partOrderTemp : partOrderList) { |
| | | intList.add(partOrderTemp); |
| | | } |
| | | |
| | | } else { |
| | | for (int i = 0; i < questionItems.size(); i++) { |
| | | intList.add(i); |
| | | } |
| | | |
| | | |
| | | // 随机打乱数组的顺序 |
| | | Collections.shuffle(intList); |
| | | } |
| | | } |
| | | |
| | | private List<ExamPaperTitleItemVM> getExamJobPaperTitleItemVMS(List<ExamPaperTitleItemVM> examPaperTitleItemVMS, List<Integer> intList, String tokenId) { |
| | | |
| | | // 判断题目顺序是否已经随机过了 |
| | | TExamReport tExamReportQuery = new TExamReport(); |
| | | tExamReportQuery.setTokenId(tokenId); |
| | | List<TExamReport> tExamReportList = examReportService.selectTExamReportList(tExamReportQuery); |
| | |
| | | TExamReport tExamReport = tExamReportList.get(0); |
| | | intList = JSON.parseObject(tExamReport.getQuestionOrder(), ArrayList.class); |
| | | } else { |
| | | |
| | | // 新增随机打乱序列 |
| | | for (int i = 0; i < examPaperTitleItemVMS.size(); i++) { |
| | | intList.add(i); |
| | | } |
| | | |
| | | |
| | | // 随机打乱数组的顺序 |
| | | Collections.shuffle(intList); |
| | | } |
| | | |
| | | |
| | | List<ExamPaperTitleItemVM> examPaperTitleItemVMSRandoms = new ArrayList<ExamPaperTitleItemVM>(); |
| | | |
| | | int itemOrder = 0; |
| | | for (int i = 0; i < intList.size(); i++) { |
| | | examPaperTitleItemVMSRandoms.add(examPaperTitleItemVMS.get(intList.get(i))); |
| | | } |
| | | |
| | | |
| | | |
| | | // 重新排序选项的顺序,设置questionReport给前端 |
| | | for (ExamPaperTitleItemVM examPaperTitleItemVM : examPaperTitleItemVMSRandoms) { |
| | | List<QuestionEditRequestVM> questionItems = examPaperTitleItemVM.getQuestionItems(); |
| | | int suffixIndex = 97; |
| | |
| | | questionEditRequestVM.setItemOrder(++itemOrder); |
| | | questionEditRequestVM.setPermanentId(examPaperTitleItemVM.getPermanentId() + (char)suffixIndex++); |
| | | } |
| | | |
| | | // 设置questionReport给前端 |
| | | setQuestionReportForVM(tExamReportList, examPaperTitleItemVM); |
| | | } |
| | | return examPaperTitleItemVMSRandoms; |
| | | } |
| | | |
| | | |
| | | // 设置questionReport给前端,job, 人格都可以用 |
| | | private void setQuestionReportForVM(List<TExamReport> tExamReportList, ExamPaperTitleItemVM examPaperTitleItemVM) { |
| | | for (TExamReport tExamReport : tExamReportList) { |
| | | List<QuestionReport> questionReportList = JsonUtil.toJsonListObject(tExamReport.getQuestionReport(), QuestionReport.class); |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | // 设置questionReport给前端,job, 人格都可以用 |
| | | private void setQuestionReportForVM(List<TExamReport> tExamReportList, QuestionEditRequestVM editRequestVM) { |
| | | for (TExamReport tExamReport : tExamReportList) { |
| | | List<QuestionReport> questionReportList = JsonUtil.toJsonListObject(tExamReport.getQuestionReport(), QuestionReport.class); |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public Integer selectAllCount() { |
| | | return examPaperMapper.selectAllCount(); |
| | | } |
| | | |
| | | @Override |
| | | public List<Integer> selectMothCount() { |
| | | return null; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public int deleteById(Integer id) { |
| | | return 0; |
| | | } |
| | | |
| | | @Override |
| | | public int insert(ExamPaper record) { |
| | | return 0; |
| | | } |
| | | |
| | | @Override |
| | | public int insertByFilter(ExamPaper record) { |
| | | return 0; |
| | | } |
| | | |
| | | @Override |
| | | public ExamPaper selectById(Integer id) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public int updateByIdFilter(ExamPaper record) { |
| | | return 0; |
| | | } |
| | | |
| | | @Override |
| | | public int updateById(ExamPaper record) { |
| | | return 0; |