linzhijie
2021-03-11 93af1c6ffb9ae0e894689ad3a37b548e57d54cff
src/main/java/com/ots/project/exam/service/impl/ExamPaperServiceImpl.java
@@ -1,4 +1,6 @@
package com.ots.project.exam.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSON;
import com.github.pagehelper.PageInfo;
@@ -36,6 +38,7 @@
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;
@@ -44,68 +47,93 @@
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());
@@ -118,13 +146,15 @@
            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;
@@ -135,35 +165,41 @@
            }
        }
    }
    // 解析得到题目
    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());
@@ -180,7 +216,8 @@
            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()));
@@ -195,37 +232,42 @@
                }
            }
        }
        // 翻译分段
        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);
@@ -235,35 +277,41 @@
        }
        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);
@@ -272,51 +320,57 @@
        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())) {
@@ -329,47 +383,56 @@
                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());
@@ -381,16 +444,18 @@
            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);
@@ -398,22 +463,25 @@
        }
        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++) {
@@ -422,15 +490,16 @@
        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<>();
@@ -439,26 +508,33 @@
            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<>();
@@ -475,21 +551,25 @@
                    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);
@@ -497,19 +577,25 @@
            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;
@@ -517,12 +603,13 @@
                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);
@@ -536,7 +623,8 @@
            }
        }
    }
    // 设置questionReport给前端,job, 人格都可以用
    private void setQuestionReportForVM(List<TExamReport> tExamReportList, QuestionEditRequestVM editRequestVM) {
        for (TExamReport tExamReport : tExamReportList) {
            List<QuestionReport> questionReportList = JsonUtil.toJsonListObject(tExamReport.getQuestionReport(), QuestionReport.class);
@@ -550,34 +638,43 @@
            }
        }
    }
    @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;