Browse Source

bug修复

master
luogw 2 weeks ago
parent
commit
a252c5ebf1
  1. 25
      src/main/java/com/project/exam/domain/service/impl/AssemblePaperDomainServiceImpl.java

25
src/main/java/com/project/exam/domain/service/impl/AssemblePaperDomainServiceImpl.java

@ -119,12 +119,24 @@ public class AssemblePaperDomainServiceImpl implements AssemblePaperDomainServic
Set<Long> coveredKpPool = new HashSet<>();
// 最终选定题目
List<QuestionDTO> selectedQuestionList = new ArrayList<>();
// 分配种子:前N3个多选
List<TaskKnowledgePointDTO> mcSeeds = seedKpList.subList(0, taskDTO.getMultipleChoiceNum());
// 分配种子:前N3个多选(过滤单知识点簇)
List<TaskKnowledgePointDTO> mcSeeds = seedKpList.stream()
.filter(kp -> Objects.nonNull(kp.getClusterSize()) && kp.getClusterSize() > 1)
.limit(taskDTO.getMultipleChoiceNum())
.toList();
//重新根据库存选取单选、判断
List<TaskKnowledgePointDTO> seedKpListBySupply = selectBySupply(taskDTO);
List<TaskKnowledgePointDTO> scSeeds = seedKpListBySupply.subList(0,taskDTO.getSingleChoiceNum());
List<TaskKnowledgePointDTO> tfSeeds = seedKpListBySupply.subList(taskDTO.getSingleChoiceNum() , taskDTO.getSingleChoiceNum() + taskDTO.getTrueFalseNum());
Set<Long> mcSeedIdSet = mcSeeds.stream().map(TaskKnowledgePointDTO::getId).collect(Collectors.toSet());
Set<Long> remainSeedIdSet = seedKpList.stream()
.map(TaskKnowledgePointDTO::getId)
.filter(id -> !mcSeedIdSet.contains(id))
.collect(Collectors.toSet());
List<TaskKnowledgePointDTO> remainSeedsBySupply = selectBySupply(taskDTO).stream()
.filter(kp -> remainSeedIdSet.contains(kp.getId()))
.toList();
List<TaskKnowledgePointDTO> scSeeds = remainSeedsBySupply.subList(0, Math.min(taskDTO.getSingleChoiceNum(), remainSeedsBySupply.size()));
List<TaskKnowledgePointDTO> tfCandidateSeeds = remainSeedsBySupply.subList(scSeeds.size(), remainSeedsBySupply.size());
List<TaskKnowledgePointDTO> tfSeeds = remainSeedsBySupply.subList(0 , Math.min(taskDTO.getTrueFalseNum(), tfCandidateSeeds.size()));
// 选择单选题
pickWithLock(scSeeds, QuestionTypeEnum.SINGLE_CHOICE , selectedQuestionList, coveredKpPool);
// 选择判断题
@ -185,8 +197,7 @@ public class AssemblePaperDomainServiceImpl implements AssemblePaperDomainServic
*/
private List<TaskKnowledgePointDTO> selectWeightedSeedKpList(TaskDTO dto , int totalNum) {
List<TaskKnowledgePointDTO> kpList = taskKnowledgePointBaseService.lambdaQuery()
.eq(TaskKnowledgePointEntity::getTaskId, dto.getId())
.gt(TaskKnowledgePointEntity::getClusterSize,1).list().stream()
.eq(TaskKnowledgePointEntity::getTaskId, dto.getId()).list().stream()
.map(entity -> entity.toDTO(TaskKnowledgePointDTO::new)).toList();
// 按簇分组
Map<Long, List<TaskKnowledgePointDTO>> clusterGroup = kpList.stream()

Loading…
Cancel
Save