From c97ae0369607c7091041273012b291d3b6e6bdc1 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期一, 25 八月 2025 10:10:01 +0800
Subject: [PATCH] 迭代代码

---
 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java |  110 ++++++++++++++----------------------------------------
 1 files changed, 29 insertions(+), 81 deletions(-)

diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java
index 2f5da68..ac2f104 100644
--- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java
+++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java
@@ -446,7 +446,7 @@
 
         StudyListenResultVO studyListenResultVO = new StudyListenResultVO(learnStudy, subjectList);
         List<TSubjectRecordDetail> subjectRecordDetails = subjectRecordDetailService.lambdaQuery().eq(TSubjectRecordDetail::getUserId, userid)
-                .eq(TSubjectRecordDetail::getWeek, week).ne(BaseModel::getDisabled, 0).list();
+                .eq(TSubjectRecordDetail::getWeek, week).eq(BaseModel::getDisabled, 0).list();
         List<TSubjectRecordDetail> listenList = subjectRecordDetails.stream().filter(e -> e.getType() == 1).collect(Collectors.toList());
         int listenPass = (int) listenList.stream().filter(e -> e.getStatus() == 2).count();
         int listenSize = listenList.size();
@@ -509,7 +509,8 @@
                     subs.add(data);
                 }
                 subjectList.add(subs);
-                List<TSubjectRecordDetail> tSubjectRecordDetail1 = list.stream().filter(e -> e.getObjectId().equals(studyListen.getId())).collect(Collectors.toList());
+                List<TSubjectRecordDetail> tSubjectRecordDetail1 = list.stream()
+                        .filter(e -> e.getObjectId().equals(studyListen.getId())).collect(Collectors.toList());
 
                 if (tSubjectRecordDetail1.isEmpty()){
                     for (int i = 0; i < 4; i++) {
@@ -520,9 +521,9 @@
                         tSubjectRecordDetail.setType(1);
                         tSubjectRecordDetail.setStatus(1);
                         tSubjectRecordDetail.setObjectId(studyListen.getId());
+                        subjectRecordDetailService.save(tSubjectRecordDetail);
                         tSubjectRecordDetails.add(tSubjectRecordDetail);
                     }
-                    subjectRecordDetailService.saveBatch(tSubjectRecordDetails);
                 }else{
                     tSubjectRecordDetails.addAll(tSubjectRecordDetail1);
                 }
@@ -560,7 +561,7 @@
 
         StudyLookResultVO studyListenResultVO = new StudyLookResultVO(learnStudy, subjectList);
         List<TSubjectRecordDetail> subjectRecordDetails = subjectRecordDetailService.lambdaQuery().eq(TSubjectRecordDetail::getUserId, userid)
-                .eq(TSubjectRecordDetail::getWeek, week).ne(BaseModel::getDisabled, 0).list();
+                .eq(TSubjectRecordDetail::getWeek, week).eq(BaseModel::getDisabled, 0).list();
         List<TSubjectRecordDetail> listenList = subjectRecordDetails.stream().filter(e -> e.getType() == 1).collect(Collectors.toList());
         int listenPass = (int) listenList.stream().filter(e -> e.getStatus() == 2).count();
         int listenSize = listenList.size();
@@ -572,7 +573,7 @@
                     .eq(TStudyListen::getDay, 1).last("limit 1").one();
             if (one!=null){
                 if (listenRate<(Double.parseDouble(one.getRate())/100)){
-                    return R.fail("听音选图未达到通关率"+one.getRate()+"%,"+"当前通关率:"+divide+"%");
+                    return R.fail("听音选图未达到通关率"+one.getRate()+"%,"+"当前通关率:"+divide.multiply(new BigDecimal(100))+"%");
                 }
             }
         }
@@ -704,7 +705,7 @@
                 .eq(TSubjectRecordDetail::getDay, day)
                 .eq(TSubjectRecordDetail::getType, 3).list();
         List<TSubjectRecordDetail> subjectRecordDetails = subjectRecordDetailService.lambdaQuery().eq(TSubjectRecordDetail::getUserId, userid)
-                .eq(TSubjectRecordDetail::getWeek, week).ne(BaseModel::getDisabled, 0).list();
+                .eq(TSubjectRecordDetail::getWeek, week).eq(BaseModel::getDisabled, 0).list();
         List<TSubjectRecordDetail> listenList = subjectRecordDetails.stream().filter(e -> e.getType() == 2).collect(Collectors.toList());
         int listenPass = (int) listenList.stream().filter(e -> e.getStatus() == 2).count();
         int listenSize = listenList.size();
@@ -716,7 +717,7 @@
                     .eq(TStudyLook::getDay, 2).last("limit 1").one();
             if (one!=null){
                 if (listenRate<(Double.parseDouble(one.getRate())/100)){
-                    return R.fail("看图选音未达到通关率"+one.getRate()+"%,"+"当前通关率:"+divide+"%");
+                    return R.fail("看图选音未达到通关率"+one.getRate()+"%,"+"当前通关率:"+divide.multiply(new BigDecimal(100))+"%");
                 }
             }
         }
@@ -859,6 +860,12 @@
         if (answerList.isEmpty()) {
             throw new GlobalException("当前学习周目题目数量不足!");
         }
+        if (answerList.size()<4){
+            throw new GlobalException("当前学习周目题目数量不足!");
+        }
+        if (answerList.size()%4!=0){
+            throw new GlobalException("当前学习周目题目数量不足");
+        }
         // 题组信息
         LearnStudyVO learnStudy = new LearnStudyVO();
         String ids = answerList.stream().map(TStudyAnswer::getId).map(String::valueOf)
@@ -881,7 +888,7 @@
                 .eq(TSubjectRecordDetail::getDay, day)
                 .eq(TSubjectRecordDetail::getType, 4).list();
         List<TSubjectRecordDetail> subjectRecordDetails = subjectRecordDetailService.lambdaQuery().eq(TSubjectRecordDetail::getUserId, userid)
-                .eq(TSubjectRecordDetail::getWeek, week).ne(BaseModel::getDisabled, 0).list();
+                .eq(TSubjectRecordDetail::getWeek, week).eq(BaseModel::getDisabled, 0).list();
         List<TSubjectRecordDetail> listenList = subjectRecordDetails.stream().filter(e -> e.getType() == 3).collect(Collectors.toList());
         int listenPass = (int) listenList.stream().filter(e -> e.getStatus() == 2).count();
         int listenSize = listenList.size();
@@ -893,7 +900,7 @@
                     .eq(TStudyInduction::getDay, 3).last("limit 1").one();
             if (one!=null){
                 if (listenRate<(Double.parseDouble(one.getRate())/100)){
-                    return R.fail("归纳排除未达到通关率"+one.getRate()+"%,"+"当前通关率:"+divide+"%");
+                    return R.fail("归纳排除未达到通关率"+one.getRate()+"%,"+"当前通关率:"+divide.multiply(new BigDecimal(100))+"%");
                 }
             }
         }
@@ -928,13 +935,6 @@
                 voAdd(voList, one);
                 voAdd(voList, two);
                 subjectList.add(voList);
-            }
-            for (int i = 0; i < answerList.size(); i += 4) {
-                // 一组题目为四道题,
-                TStudyAnswer one = answerList.get(i);
-                TStudyAnswer two = answerList.get(i + 1);
-                TStudyAnswer three = answerList.get(i + 2);
-                TStudyAnswer four = answerList.get(i + 3);
                 TSubjectRecordDetail tSubjectRecordDetail = new TSubjectRecordDetail();
                 tSubjectRecordDetail.setUserId(userid);
                 tSubjectRecordDetail.setWeek(week);
@@ -943,15 +943,15 @@
                 tSubjectRecordDetail.setStatus(1);
                 tSubjectRecordDetail.setOne(one.getId());
                 tSubjectRecordDetail.setTwo(two.getId());
-                tSubjectRecordDetail.setThree(three.getId());
-                tSubjectRecordDetail.setFour(four.getId());
                 tSubjectRecordDetails.add(tSubjectRecordDetail);
             }
+
             subjectRecordDetailService.saveBatch(tSubjectRecordDetails);
             studyListenResultVO.setList(tSubjectRecordDetails);
             studyListenResultVO.setAccuracy(new BigDecimal("0.00"));
 
         } else {
+            List<TSubjectRecordDetail> tSubjectRecordDetails1 = new ArrayList<TSubjectRecordDetail>();
             List<TSubjectRecordDetail> tSubjectRecordDetails = new ArrayList<>();
             for (int i = 0; i < answerList.size(); i += Constants.TWO) {
                 List<QuestionsAnswersSubjectVO> voList = new ArrayList<>();
@@ -961,31 +961,14 @@
                 voAdd(voList, one);
                 voAdd(voList, two);
                 subjectList.add(voList);
-            }
-
-
-            List<TSubjectRecordDetail> tSubjectRecordDetails1 = new ArrayList<TSubjectRecordDetail>();
-
-            for (int i = 0; i < answerList.size(); i += 4) {
-                TStudyAnswer one = answerList.get(i);
-                TStudyAnswer two = answerList.get(i + 1);
-                TStudyAnswer three = answerList.get(i + 2);
-                TStudyAnswer four = answerList.get(i + 3);
                 TSubjectRecordDetail tSubjectRecordDetail = new TSubjectRecordDetail();
                 tSubjectRecordDetail.setUserId(userid);
                 tSubjectRecordDetail.setWeek(week);
                 tSubjectRecordDetail.setDay(day);
                 tSubjectRecordDetail.setType(4);
-                int size = list.size();
-                if (size-1>=i/4){
-                    tSubjectRecordDetail.setStatus(list.get(i/4).getStatus());
-                }else{
-                    tSubjectRecordDetail.setStatus(1);
-                }
+                tSubjectRecordDetail.setStatus(1);
                 tSubjectRecordDetail.setOne(one.getId());
                 tSubjectRecordDetail.setTwo(two.getId());
-                tSubjectRecordDetail.setThree(three.getId());
-                tSubjectRecordDetail.setFour(four.getId());
                 tSubjectRecordDetails.add(tSubjectRecordDetail);
                 tSubjectRecordDetails1.add(tSubjectRecordDetail);
             }
@@ -1066,7 +1049,7 @@
                 .eq(TSubjectRecordDetail::getDay, day)
                 .eq(TSubjectRecordDetail::getType, 5).list();
         List<TSubjectRecordDetail> subjectRecordDetails = subjectRecordDetailService.lambdaQuery().eq(TSubjectRecordDetail::getUserId, userid)
-                .eq(TSubjectRecordDetail::getWeek, week).ne(BaseModel::getDisabled, 0).list();
+                .eq(TSubjectRecordDetail::getWeek, week).eq(BaseModel::getDisabled, 0).list();
         List<TSubjectRecordDetail> listenList = subjectRecordDetails.stream().filter(e -> e.getType() == 4).collect(Collectors.toList());
         int listenPass = (int) listenList.stream().filter(e -> e.getStatus() == 2).count();
         int listenSize = listenList.size();
@@ -1078,7 +1061,7 @@
                     .eq(TStudyAnswer::getDay, 4).last("limit 1").one();
             if (one!=null){
                 if (listenRate<(Double.parseDouble(one.getRate())/100)){
-                    return R.fail("归纳排除未达到通关率"+one.getRate()+"%,"+"当前通关率:"+divide+"%");
+                    return R.fail("归纳排除未达到通关率"+one.getRate()+"%,"+"当前通关率:"+divide.multiply(new BigDecimal(100))+"%");
                 }
             }
         }
@@ -1155,8 +1138,8 @@
                     tSubjectRecordDetail.setType(5);
                     tSubjectRecordDetail.setStatus(1);
                     tSubjectRecordDetail.setObjectId(data.getId());
-                    tSubjectRecordDetails.add(tSubjectRecordDetail);
                     subjectRecordDetailService.save(tSubjectRecordDetail);
+                    tSubjectRecordDetails.add(tSubjectRecordDetail);
                 }else{
                     tSubjectRecordDetails.addAll(tSubjectRecordDetail1);
                 }
@@ -1166,13 +1149,14 @@
             studyListenResultVO.setAccuracy(new BigDecimal(tSubjectRecordDetails.stream().filter(tSubjectRecordDetail -> tSubjectRecordDetail.getStatus().equals(2)).count())
                     .divide(new BigDecimal(tSubjectRecordDetails.size()), 2, RoundingMode.HALF_UP));
         }
+        System.err.println("音图相配返回VO"+studyListenResultVO.getList());
         return R.ok(studyListenResultVO);
     }
 
     @Override
     public int computeSchedule(TUserStudy result, Integer week) {
+        System.err.println("用户学习进度"+result);
         List<TStudy> studyList = this.lambdaQuery().eq(TStudy::getDisabled, 0)
-                .eq(TStudy::getType, 1)
                 .orderByAsc(TStudy::getWeek).list();
         // 基础学习进度
         Integer day = result.getDay();
@@ -1202,6 +1186,8 @@
                 thisQuarter = key;
             }
         }
+        System.err.println("当前进入周目所属季度"+studyQuarter);
+        System.err.println("进入周目所属季度"+thisQuarter);
         // 默认进度为 0
         int defaultSchedule;
         // 季度判断
@@ -1219,6 +1205,7 @@
             } else if (studyIndex < weekIndex) {
                 defaultSchedule = 0;
             } else {
+                System.err.println("学习到Day"+day);
                 // 根据day初始化学习进度
                 if (Constants.ONE.equals(day)) {
                     defaultSchedule = 0;
@@ -1231,7 +1218,7 @@
                 } else if (Constants.FIVE.equals(day)) {
                     defaultSchedule = 80;
                 } else {
-                    defaultSchedule = 0;
+                    defaultSchedule = 80;
                 }
                 // 根据五种学习计算进度
                 Integer listen = result.getListen();
@@ -1256,46 +1243,7 @@
                 }
             }
         }
-        // week以超过当前week,进度为 100%
-        /*if (itemBool) {
-            defaultSchedule = 100;
-        } else {
-            // 根据day初始化学习进度
-            if (Constants.ONE.equals(day)) {
-                defaultSchedule = 0;
-            } else if (Constants.TWO.equals(day)) {
-                defaultSchedule = 20;
-            } else if (Constants.THREE.equals(day)) {
-                defaultSchedule = 40;
-            } else if (Constants.FOUR.equals(day)) {
-                defaultSchedule = 60;
-            } else if (Constants.FIVE.equals(day)) {
-                defaultSchedule = 80;
-            } else {
-                defaultSchedule = 0;
-            }
-            // 根据五种学习计算进度
-            Integer listen = result.getListen();
-            if (!Constants.BURDEN_ONE.equals(listen)) {
-                defaultSchedule += (int) (((double) listen / 100) * 4);
-            }
-            Integer look = result.getLook();
-            if (!Constants.BURDEN_ONE.equals(look)) {
-                defaultSchedule += (int) (((double) look / 100) * 4);
-            }
-            Integer induction = result.getInduction();
-            if (!Constants.BURDEN_ONE.equals(induction)) {
-                defaultSchedule += (int) (((double) induction / 100) * 4);
-            }
-            Integer answer = result.getAnswer();
-            if (!Constants.BURDEN_ONE.equals(answer)) {
-                defaultSchedule += (int) (((double) answer / 100) * 4);
-            }
-            Integer pair = result.getPair();
-            if (!Constants.BURDEN_ONE.equals(pair)) {
-                defaultSchedule += (int) (((double) pair / 100) * 4);
-            }
-        }*/
+
         return defaultSchedule;
     }
 

--
Gitblit v1.7.1