Browse Source

bug修复

master
luogw 1 month ago
parent
commit
dcd478c8b1
  1. 1
      src/main/java/com/project/appeal/domain/param/AppealParam.java
  2. 4
      src/main/java/com/project/appeal/domain/service/Impl/SearchAppealDomainServiceImpl.java
  3. 4
      src/main/java/com/project/question/domain/service/QuestionInventoryDomainService.java
  4. 52
      src/main/java/com/project/question/domain/service/impl/QuestionInventoryDomainServiceImpl.java
  5. 9
      src/main/java/com/project/task/controller/TaskController.java
  6. 9
      src/main/java/com/project/task/mapper/TaskMapper.java
  7. 2
      src/main/resources/application-test.yml

1
src/main/java/com/project/appeal/domain/param/AppealParam.java

@ -8,4 +8,5 @@ public class AppealParam extends BaseParam {
public Long subLineId;
public Long lineId;
public Long businessId;
public String subLineName;
}

4
src/main/java/com/project/appeal/domain/service/Impl/SearchAppealDomainServiceImpl.java

@ -52,7 +52,7 @@ public class SearchAppealDomainServiceImpl implements SearchAppealDomainService
IPage<AppealDTO> appealDTOIPage = new Page<>();
Map<Long, String> taskIdToSubLineNameMap = new HashMap<>();
appealEntityQueryWrapper.orderByDesc("create_time");
if (appealParam.getBusinessId() == null && appealParam.getLineId() == null && appealParam.getSubLineId() == null) {
if (appealParam.getBusinessId() == null && appealParam.getLineId() == null && appealParam.getSubLineId() == null && StringUtils.isBlank(appealParam.getSubLineName())) {
Page<AppealEntity> appealEntityPage = appealMapper.selectPage(PageConverter.toMpPage(appealParam), appealEntityQueryWrapper);
appealDTOIPage = appealEntityPage.convert(entity -> entity.toDTO(AppealDTO::new));
@ -64,7 +64,7 @@ public class SearchAppealDomainServiceImpl implements SearchAppealDomainService
}
}else{
//查询产品线相关的考试任务
List<TaskDTO> taskByAppealParam = taskMapper.getTaskByAppealParam(appealParam.getSubLineId(),appealParam.getLineId(),appealParam.getBusinessId());
List<TaskDTO> taskByAppealParam = taskMapper.getTaskByAppealParam(appealParam.getSubLineId(),appealParam.getLineId(),appealParam.getBusinessId(),appealParam.getSubLineName());
taskIdToSubLineNameMap = taskByAppealParam.stream().collect(Collectors.toMap(TaskDTO::getId, TaskDTO::getSubLineName));
if (!CollectionUtils.isEmpty(taskByAppealParam)){

4
src/main/java/com/project/question/domain/service/QuestionInventoryDomainService.java

@ -1,5 +1,9 @@
package com.project.question.domain.service;
import com.project.base.domain.result.Result;
public interface QuestionInventoryDomainService {
void checkAndReplenish(Long taskId) throws Exception;
Result<String> checkAndReplenishBoolean(Long taskId);
}

52
src/main/java/com/project/question/domain/service/impl/QuestionInventoryDomainServiceImpl.java

@ -1,6 +1,7 @@
package com.project.question.domain.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.project.base.domain.result.Result;
import com.project.question.domain.entity.TaskKnowledgeClusterEntity;
import com.project.question.domain.entity.TaskKnowledgePointEntity;
import com.project.question.domain.enums.QuestionSourceTypeEnum;
@ -75,6 +76,57 @@ public class QuestionInventoryDomainServiceImpl implements QuestionInventoryDoma
}
@Override
public Result<String> checkAndReplenishBoolean(Long taskId) {
//标记是否生成完成
Boolean flage = true;
TaskEntity task = taskMapper.selectById(taskId);
if (task == null || task.getEndTime().before(new Date())) {
return Result.success("题目生成完成");
}
int u = (task.getParticipantNum() == null ? 0 : task.getParticipantNum())
- (task.getPassNum() == null ? 0 : task.getPassNum());
if (u <= 0) {
return Result.success("题目生成完成");
}
int watermark = (int) Math.ceil(1.0 * u);
int targetLine = (int) Math.ceil(1.2 * u);
// 针对每个知识点遍历每种题型
List<TaskKnowledgePointEntity> kpList = taskKpMapper.selectList(
new LambdaQueryWrapper<TaskKnowledgePointEntity>().eq(TaskKnowledgePointEntity::getTaskId , taskId));
for (TaskKnowledgePointEntity kp : kpList) {
for (QuestionTypeEnum questionType : QuestionTypeEnum.values()) {
int currentStock = questionKpMapper.countAvailableByKp(kp.getId(), questionType.getValue());
if (currentStock < watermark){
flage = false;
break;
}
}
}
// 针对每一个簇
List<TaskKnowledgeClusterEntity> clusterList = clusterMapper.selectList(
new LambdaQueryWrapper<TaskKnowledgeClusterEntity>().eq(TaskKnowledgeClusterEntity::getTaskId, taskId));
for (TaskKnowledgeClusterEntity cluster : clusterList) {
int w = cluster.getClusterSize();
// 簇水位线: 1.0 * U * W
int clusterWatermark = watermark * w;
int currentStock = questionKpMapper.countAvailableByCluster(cluster.getId());
if (currentStock < clusterWatermark){
flage = false;
break;
}
}
if (flage){
return Result.success("题目生成完成");
}else{
return Result.success("题目未生成完成");
}
}
/**
* 单知识点补货判定
*/

9
src/main/java/com/project/task/controller/TaskController.java

@ -5,12 +5,14 @@ import com.project.base.domain.result.PageResult;
import com.project.base.domain.result.Result;
import com.project.operation.annotation.OperationLog;
import com.project.operation.domain.enums.ModuleEnum;
import com.project.question.domain.service.QuestionInventoryDomainService;
import com.project.task.application.TaskApplicationService;
import com.project.task.domain.dto.TaskDTO;
import com.project.task.domain.entity.TaskEntity;
import com.project.task.domain.param.TaskParam;
import com.project.task.domain.service.InitTaskDomainService;
import com.project.task.mapper.TaskMapper;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -24,6 +26,8 @@ import java.util.List;
public class TaskController {
@Autowired
private TaskApplicationService taskApplicationService;
@Resource
private QuestionInventoryDomainService questionInventoryDomainService;
@GetMapping("/search")
public Result<PageResult<TaskDTO>> search(TaskParam param) throws Exception {
@ -41,6 +45,11 @@ public class TaskController {
return taskApplicationService.saveOrUpdate(dto);
}
@GetMapping("/checkAndReplenish")
public Result<String> checkAndReplenish(Long taskId) {
return questionInventoryDomainService.checkAndReplenishBoolean(taskId);
}
@PostMapping("/batchDelete")
@OperationLog(module = "考试任务")

9
src/main/java/com/project/task/mapper/TaskMapper.java

@ -44,8 +44,15 @@ public interface TaskMapper extends BaseMapper<TaskEntity> {
"<if test='businessId != null'>",
" AND e.business_id = #{businessId} ",
"</if>",
"<if test='subLineName != null and subLineName != \"\"'>",
" AND l.name LIKE CONCAT('%', #{subLineName}, '%') ",
"</if>",
"</where>",
"</script>"
})
List<TaskDTO> getTaskByAppealParam(@Param("subLineId") Long subLineId,@Param("lineId") Long lineId,@Param("businessId") Long businessId);
List<TaskDTO> getTaskByAppealParam(
@Param("subLineId") Long subLineId,
@Param("lineId") Long lineId,
@Param("businessId") Long businessId,
@Param("subLineName") String subLineName);
}

2
src/main/resources/application-test.yml

@ -84,7 +84,7 @@ question:
generation:
# 限流速率:每秒允许的API请求数
rate-limit: 20
downgrade: true
downgrade: false
scheduled-task:
owner: test
Loading…
Cancel
Save