From 1012e34a52d2827e6b1dbbd98546b79165a62b2d Mon Sep 17 00:00:00 2001 From: luogw <3132758203@qq.com> Date: Mon, 30 Mar 2026 10:03:43 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E9=9C=80=E8=A6=81=E7=94=9F?= =?UTF-8?q?=E6=88=90=E9=A2=98=E7=9B=AE=E6=80=BB=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../QuestionInventoryDomainServiceImpl.java | 51 +++++++++++++------ 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/project/question/domain/service/impl/QuestionInventoryDomainServiceImpl.java b/src/main/java/com/project/question/domain/service/impl/QuestionInventoryDomainServiceImpl.java index 82d9d33..622f870 100644 --- a/src/main/java/com/project/question/domain/service/impl/QuestionInventoryDomainServiceImpl.java +++ b/src/main/java/com/project/question/domain/service/impl/QuestionInventoryDomainServiceImpl.java @@ -47,7 +47,7 @@ public class QuestionInventoryDomainServiceImpl implements QuestionInventoryDoma return; } int watermark = getWatermark(task); - int targetLine = (int) Math.ceil(1.2 * getUnpassedCount(task)); + int targetLine = getTargetLine(task); Map questionTypeMap = questionTypeProportion(task); @@ -84,13 +84,16 @@ public class QuestionInventoryDomainServiceImpl implements QuestionInventoryDoma @Override public Result checkAndReplenishBoolean(Long taskId) { + Boolean flage = false; + Integer total = 0; + TaskEntity task = taskMapper.selectById(taskId); if (task == null || task.getEndTime().before(new Date())) { - return Result.success("题目生成完成"); + return Result.success("考试任务不存在"); } int unpassed = getUnpassedCount(task); if (unpassed <= 0) { - return Result.success("题目生成完成"); + return Result.success("考试任务未发现未通过人数"); } List kpList = taskKpMapper.selectList( new LambdaQueryWrapper().eq(TaskKnowledgePointEntity::getTaskId , taskId)); @@ -99,8 +102,12 @@ public class QuestionInventoryDomainServiceImpl implements QuestionInventoryDoma if (QuestionTypeEnum.MULTIPLE_CHOICE.equals(questionType)) { continue; } - if(!checkKp(task,kp.getId(),questionType)){ - return Result.success("题目未生成完成"); + Map questionTypeMap = questionTypeProportion(task); + int targetLine = getTargetLine(task); + int targetNum = (int) Math.ceil(targetLine * questionTypeMap.get(questionType.name())); + total = total + targetNum; + if (!checkKpInventory(kp.getId(), questionType, targetNum)) { + flage = true; } } } @@ -111,11 +118,20 @@ public class QuestionInventoryDomainServiceImpl implements QuestionInventoryDoma if (cluster.getClusterSize() < 2) { continue; } - if (!checkCluster(task, cluster)) { - return Result.success("题目未生成完成"); + + Map questionTypeMap = questionTypeProportion(task); + int targetLine = getTargetLine(task); + int clusterWatermark = targetLine * cluster.getClusterSize(); + int targetNum = (int) Math.ceil(clusterWatermark * questionTypeMap.get(QuestionTypeEnum.MULTIPLE_CHOICE.name())); + total = total + targetNum; + if (!checkClusterInventory(cluster.getId(), targetNum)) { + flage = true; } } - return Result.success("题目生成完成"); + if (flage){ + return Result.success("题目未生成完成,目标题量:"+total); + } + return Result.success("题目生成完成,目标题量:"+total); } /** @@ -177,6 +193,13 @@ public class QuestionInventoryDomainServiceImpl implements QuestionInventoryDoma return (int) Math.ceil(1.0 * getUnpassedCount(task)); } + /** + * 计算目标线 (targetLine = ceil(1.2 * u)) + */ + private int getTargetLine(TaskEntity task) { + return (int) Math.ceil(1.2 * getUnpassedCount(task)); + } + /** * 获取题目题型占比系数 */ @@ -196,19 +219,17 @@ public class QuestionInventoryDomainServiceImpl implements QuestionInventoryDoma public Boolean checkKp(TaskEntity task, Long kpId, QuestionTypeEnum questionType){ Map questionTypeMap = questionTypeProportion(task); - int watermark = getWatermark(task); - if (!checkKpInventory(kpId, questionType, (int) Math.ceil(watermark * questionTypeMap.get(questionType.name())))) { - return false; - } - return true; + int targetLine = getTargetLine(task); + + return checkKpInventory(kpId, questionType, (int) Math.ceil(targetLine * questionTypeMap.get(questionType.name()))); } @Override public Boolean checkCluster(TaskEntity task, TaskKnowledgeClusterEntity cluster) { Map questionTypeMap = questionTypeProportion(task); - int watermark = getWatermark(task); - int clusterWatermark = watermark * cluster.getClusterSize(); + int targetLine = getTargetLine(task); + int clusterWatermark = targetLine * cluster.getClusterSize(); return checkClusterInventory(cluster.getId(), (int) Math.ceil(clusterWatermark * questionTypeMap.get(QuestionTypeEnum.MULTIPLE_CHOICE.name()))); }