fix(lesson-plans): 修正补差词汇汇总及周末计划分割逻辑

- 新增totalWords列表汇总同步词汇和补差词汇
- 修改周末计划分割逻辑,使用totalWords列表长度均分两部分
- 纠正checkList子列表截取范围,避免越界错误
- 优化学习计划数据构建过程,保证数据完整性
This commit is contained in:
lbw
2025-12-31 16:53:28 +08:00
parent b86f37443c
commit 9cd43c0e74

View File

@@ -63,6 +63,8 @@ public class LessonPlansServiceImpl implements LessonPlansService {
GradeUnitDO gradeUnitDO = gradeUnitDOMapper.selectByUnitId(unitId); GradeUnitDO gradeUnitDO = gradeUnitDOMapper.selectByUnitId(unitId);
GradeDO gradeDO = gradeDOMapper.selectById(gradeUnitDO.getGradeId()); GradeDO gradeDO = gradeDOMapper.selectById(gradeUnitDO.getGradeId());
List<VocabularyBankDO> totalWords = new ArrayList<>();
// 补差词汇所用词汇的 // 补差词汇所用词汇的
List<VocabularyBankDO> vocabularyBankListStudentNotMaster = getVocabListRandom(vocabularyBankDOMapper List<VocabularyBankDO> vocabularyBankListStudentNotMaster = getVocabListRandom(vocabularyBankDOMapper
.selectVocabularyBankListStudentNotMaster(gradeUnitDO.getGradeId(), studentId), 50); .selectVocabularyBankListStudentNotMaster(gradeUnitDO.getGradeId(), studentId), 50);
@@ -85,6 +87,10 @@ public class LessonPlansServiceImpl implements LessonPlansService {
List<VocabularyBankDO> gapVocabList = vocabularyBankListStudentNotMaster.subList(i * countGap, Math.min(i * countGap + countGap, gapSize)); List<VocabularyBankDO> gapVocabList = vocabularyBankListStudentNotMaster.subList(i * countGap, Math.min(i * countGap + countGap, gapSize));
weeksSync.add(syncVocabList); weeksSync.add(syncVocabList);
weeksGap.add(gapVocabList); weeksGap.add(gapVocabList);
totalWords.addAll(syncVocabList);
totalWords.addAll(gapVocabList);
List<VocabularyBankDO> reviewVocabList = new ArrayList<>(); List<VocabularyBankDO> reviewVocabList = new ArrayList<>();
List<VocabularyBankDO> checkList = new ArrayList<>(); List<VocabularyBankDO> checkList = new ArrayList<>();
// 艾宾浩斯遗忘曲线 // 艾宾浩斯遗忘曲线
@@ -149,9 +155,9 @@ public class LessonPlansServiceImpl implements LessonPlansService {
try { try {
int syncWeekender = syncSize / 2; int syncWeekendSize = totalWords.size() / 2;
for (int i = 0; i < 2; i++) { for (int i = 0; i < 2; i++) {
List<VocabularyBankDO> checkList = vocabularyBankDOS.subList(i * syncWeekender, Math.min((i + 1) * syncWeekender, syncSize)); List<VocabularyBankDO> checkList = totalWords.subList(i * syncWeekendSize, Math.min((i + 1) * syncWeekendSize, syncWeekendSize));
Map<String, Object> map = generateWeekendPlans(checkList, i + 6, gradeDO, unitDO, studentId); Map<String, Object> map = generateWeekendPlans(checkList, i + 6, gradeDO, unitDO, studentId);
LessonPlansDO lessonPlansDO = LessonPlansDO.builder() LessonPlansDO lessonPlansDO = LessonPlansDO.builder()