diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/EnlishServiceApplication.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/EnlishServiceApplication.java index f535b3a..bfad8a0 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/EnlishServiceApplication.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/EnlishServiceApplication.java @@ -3,9 +3,11 @@ package com.yinlihupo.enlish.service; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @MapperScan("com.yinlihupo.enlish.service.domain.mapper") +@EnableScheduling public class EnlishServiceApplication { public static void main(String[] args) { diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/dataobject/WordMasteryLogDO.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/dataobject/WordMasteryLogDO.java index 48ff77a..1ef6045 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/dataobject/WordMasteryLogDO.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/dataobject/WordMasteryLogDO.java @@ -5,13 +5,14 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import java.math.BigDecimal; +import java.time.LocalDateTime; @AllArgsConstructor @NoArgsConstructor @Data @Builder public class WordMasteryLogDO { + private Integer id; private Integer studentId; @@ -20,6 +21,8 @@ public class WordMasteryLogDO { private Integer reviewCount; - private BigDecimal memoryStrength; + private Double memoryStrength; + + private LocalDateTime update_time; } \ No newline at end of file diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/ExamWordsDOMapper.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/ExamWordsDOMapper.java index 2250ab3..f154c56 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/ExamWordsDOMapper.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/ExamWordsDOMapper.java @@ -5,4 +5,6 @@ import com.yinlihupo.enlish.service.domain.dataobject.ExamWordsDO; public interface ExamWordsDOMapper { int insert(ExamWordsDO record); + + ExamWordsDO selectById(Integer id); } \ No newline at end of file diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/ExamWordsJudgeResultDOMapper.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/ExamWordsJudgeResultDOMapper.java index 9682f1c..986673e 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/ExamWordsJudgeResultDOMapper.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/ExamWordsJudgeResultDOMapper.java @@ -1,8 +1,17 @@ package com.yinlihupo.enlish.service.domain.mapper; +import com.yinlihupo.enlish.service.domain.dataobject.ExamWordsJudgeResultDO; import org.apache.ibatis.annotations.Param; +import java.util.List; + public interface ExamWordsJudgeResultDOMapper { int insert(@Param("path") String path); + + List selectUnfinishedExamWordsJudgeResultDOList(int count); + + int updateErrorMsg(@Param("id") Integer id, @Param("errorMsg") String errorMsg); + + int updateExamWordsJudgeResultDO(@Param("examWordsJudgeResultDO") ExamWordsJudgeResultDO examWordsJudgeResultDO); } \ No newline at end of file diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/StudentExamWordsDOMapper.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/StudentExamWordsDOMapper.java index ab6f816..142b49b 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/StudentExamWordsDOMapper.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/StudentExamWordsDOMapper.java @@ -1,6 +1,7 @@ package com.yinlihupo.enlish.service.domain.mapper; +import com.yinlihupo.enlish.service.domain.dataobject.StudentExamWordsDO; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -8,4 +9,8 @@ import java.util.List; public interface StudentExamWordsDOMapper { int insertStudentsExam(@Param("studentIds") List studentIds, @Param("examWordsId") Integer examWordsId); + + StudentExamWordsDO selectByStudentIdAndExamWordsId(@Param("studentId") Integer studentId, @Param("examWordsId") Integer examWordsId); + + int updateStudentExamWordsFinished(@Param("studentId") Integer studentId, @Param("examWordsId") Integer examWordsId); } \ No newline at end of file diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/VocabularyBankDOMapper.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/VocabularyBankDOMapper.java index 896783c..13b5e3c 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/VocabularyBankDOMapper.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/VocabularyBankDOMapper.java @@ -12,4 +12,6 @@ public interface VocabularyBankDOMapper { List selectVocabularyBankDOListByUnitId(@Param("unitId") Integer unitId, @Param("wordCount") Integer wordCount); List selectVocabularyBankDOListByIds(@Param("ids") List ids); + + List selectAllIds(); } \ No newline at end of file diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/WordMasteryLogDOMapper.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/WordMasteryLogDOMapper.java index b06d58a..3d1a85d 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/WordMasteryLogDOMapper.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/WordMasteryLogDOMapper.java @@ -9,4 +9,9 @@ public interface WordMasteryLogDOMapper { // 查询指定学生指定单元的词,根据记忆强度排序 List selectByStudentIdAndUnitIdOrderByMemoryStrength(@Param("studentId") Integer studentId, @Param("unitId") Integer unitId, @Param("limit") Integer limit); + + // 初始化、批量学生单词记忆 + int batchInsertInitialization(@Param("wordIds") List wordIds, @Param("studentId") Integer studentId); + + int batchUpdateStudentMastery(@Param("wordMasteryLogDOs") List wordMasteryLogDOs); } \ No newline at end of file diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/job/AutoJudgeExamWordsTask.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/job/AutoJudgeExamWordsTask.java new file mode 100644 index 0000000..2a866b8 --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/job/AutoJudgeExamWordsTask.java @@ -0,0 +1,15 @@ +package com.yinlihupo.enlish.service.job; + +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; + +@Component +public class AutoJudgeExamWordsTask { + + @Scheduled(fixedRate = 5000) + public void autoJudgeExamWords() { + System.out.println("【固定频率】开始自动判卷,时间:" + LocalDateTime.now()); + } +} diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/ExamWordsJudge.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/ExamWordsJudge.java new file mode 100644 index 0000000..42e33f4 --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/ExamWordsJudge.java @@ -0,0 +1,6 @@ +package com.yinlihupo.enlish.service.service; + +public interface ExamWordsJudge { + + void judgeExamWords(int count); +} diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/judge/ExamWordsJudgeImpl.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/judge/ExamWordsJudgeImpl.java new file mode 100644 index 0000000..48b1bae --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/judge/ExamWordsJudgeImpl.java @@ -0,0 +1,132 @@ +package com.yinlihupo.enlish.service.service.judge; + +import com.yinlihupo.enlish.service.domain.dataobject.ExamWordsDO; +import com.yinlihupo.enlish.service.domain.dataobject.ExamWordsJudgeResultDO; +import com.yinlihupo.enlish.service.domain.dataobject.StudentExamWordsDO; +import com.yinlihupo.enlish.service.domain.dataobject.WordMasteryLogDO; +import com.yinlihupo.enlish.service.domain.mapper.ExamWordsDOMapper; +import com.yinlihupo.enlish.service.domain.mapper.ExamWordsJudgeResultDOMapper; +import com.yinlihupo.enlish.service.domain.mapper.StudentExamWordsDOMapper; +import com.yinlihupo.enlish.service.domain.mapper.WordMasteryLogDOMapper; +import com.yinlihupo.enlish.service.model.bo.CoordinatesXY; +import com.yinlihupo.enlish.service.model.bo.StudentExamId; +import com.yinlihupo.enlish.service.service.ExamWordsJudge; +import com.yinlihupo.enlish.service.utils.PngUtil; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.File; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +@Service +@Slf4j +public class ExamWordsJudgeImpl implements ExamWordsJudge { + + + @Resource + private ExamWordsJudgeResultDOMapper examWordsJudgeResultDOMapper; + @Resource + private StudentExamWordsDOMapper studentExamWordsDOMapper; + @Resource + private ExamWordsDOMapper examWordsDOMapper; + @Resource + private WordMasteryLogDOMapper wordMasteryLogDOMapper; + + @Value("${templates.data}") + private String tessdataPath; + + @Override + @Transactional(rollbackFor = Exception.class) + public void judgeExamWords(int count) { + List examWordsJudgeResultDOS = examWordsJudgeResultDOMapper.selectUnfinishedExamWordsJudgeResultDOList(count); + for (ExamWordsJudgeResultDO examWordsJudgeResultDO : examWordsJudgeResultDOS) { + String ansSheetPath = examWordsJudgeResultDO.getAnsSheetPath(); + List coordinatesXIES = PngUtil.analysisXY(ansSheetPath); + // 从图片中获取学生 id 和考试 id + StudentExamId studentExamId = PngUtil.analyzeExamWordsIdAndStudentId(ansSheetPath, tessdataPath, coordinatesXIES); + Integer examWordsJudgeResultDOId = examWordsJudgeResultDO.getId(); + if (studentExamId == null) { + examWordsJudgeResultDOMapper.updateErrorMsg(examWordsJudgeResultDOId, "未识别学生 id 和考试 id"); + continue; + } + + Integer studentId = studentExamId.getStudentId(); + Integer examWordsId = studentExamId.getExamId(); + StudentExamWordsDO studentExamWordsDO = studentExamWordsDOMapper.selectByStudentIdAndExamWordsId(studentId, examWordsId); + if (studentExamWordsDO == null) { + examWordsJudgeResultDOMapper.updateErrorMsg(examWordsJudgeResultDOId, "未找到学生 id 和考试 id 对应的考试记录"); + continue; + } + log.info("studentId:{},examWordsId:{}", studentId, examWordsId); + if (studentExamWordsDO.getIsCompleted() == 1) { + examWordsJudgeResultDOMapper.updateErrorMsg(examWordsJudgeResultDOId, "考试记录此前已识别"); + continue; + } + + ExamWordsDO examWordsDO = examWordsDOMapper.selectById(examWordsId); + if(examWordsDO == null) { + examWordsJudgeResultDOMapper.updateErrorMsg(examWordsJudgeResultDOId, "未找到考试"); + continue; + } + + List wordIds = examWordsDO.getWordIds(); + List unmemorizedWordIds = PngUtil.analyzePngForUnmemorizedWordIds(ansSheetPath, wordIds, coordinatesXIES); + List memorizedWordIds = wordIds.stream().filter(wordId -> !unmemorizedWordIds.contains(wordId)).toList(); + + ExamWordsJudgeResultDO wordsJudgeResultDO = ExamWordsJudgeResultDO.builder() + .id(examWordsJudgeResultDOId) + .studentId(studentId) + .examWordsId(examWordsId) + .correctWordIds(memorizedWordIds) + .wrongWordIds(unmemorizedWordIds) + .correctWordCount(memorizedWordIds.size()) + .wrongWordCount(unmemorizedWordIds.size()) + .isFinished(1) + .build(); + int updated = examWordsJudgeResultDOMapper.updateExamWordsJudgeResultDO(wordsJudgeResultDO); + if (updated != 1) { + examWordsJudgeResultDOMapper.updateErrorMsg(examWordsJudgeResultDOId, "更新考试记录失败"); + continue; + } + log.info("更新考试记录成功"); + + List wordMasteryLogDOS = new ArrayList<>(unmemorizedWordIds.stream().map(wordId -> WordMasteryLogDO.builder() + .wordId(wordId) + .studentId(studentId) + .reviewCount(1) + .memoryStrength(-0.5) + .update_time(LocalDateTime.now()) + .build() + ).toList()); + + wordMasteryLogDOS.addAll(memorizedWordIds.stream().map(wordId -> WordMasteryLogDO.builder() + .wordId(wordId) + .studentId(studentId) + .reviewCount(1) + .memoryStrength(0.5) + .update_time(LocalDateTime.now()) + .build() + ).toList()); + int batched = wordMasteryLogDOMapper.batchUpdateStudentMastery(wordMasteryLogDOS); + if (batched == 0) { + examWordsJudgeResultDOMapper.updateErrorMsg(examWordsJudgeResultDOId, "更新学生记忆力记录失败"); + continue; + } + + int updateStudentExamWordsFinished = studentExamWordsDOMapper.updateStudentExamWordsFinished(studentId, examWordsId); + if (updateStudentExamWordsFinished != 1) { + examWordsJudgeResultDOMapper.updateErrorMsg(examWordsJudgeResultDOId, "更新学生考试为结束时失败"); + } + + boolean delete = new File(ansSheetPath).delete(); + if (delete) { + log.info("删除文件成功:{}", ansSheetPath); + } + } + } +} diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/utils/PngUtil.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/utils/PngUtil.java index af43695..8bed422 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/utils/PngUtil.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/utils/PngUtil.java @@ -120,7 +120,7 @@ public class PngUtil { } // 获取(未背熟)单词的 id - public static List analyzePngForUnmemorizedWordIds(String filePath, List words, List coordinatesXYList) { + public static List analyzePngForUnmemorizedWordIds(String filePath, List wordIds, List coordinatesXYList) { Mat src = Imgcodecs.imread(filePath); if (src.empty()) { @@ -153,7 +153,7 @@ public class PngUtil { // 内层循环:遍历这一列的每一行 for (int j = 0; j < count; j++) { // 安全检查:防止单词列表比格子少导致越界 - if (words_index >= words.size()) { + if (words_index >= wordIds.size()) { log.warn("单词列表耗尽,停止检测。格子数多于单词数。"); break; } @@ -172,9 +172,9 @@ public class PngUtil { int countNonZero = Core.countNonZero(region); if (countNonZero > 800) { - Word currentWord = words.get(words_index); - answer.add(currentWord.getId()); - log.info("检测到标记(未背熟):ID={}, 词={}", currentWord.getId(), currentWord.getTitle()); + Integer id = wordIds.get(words_index); + answer.add(id); + log.info("检测到标记(未背熟):ID={}", id); } region.release(); @@ -193,7 +193,7 @@ public class PngUtil { } } - public static StudentExamId analyzeExamWordsId(String imagePath, String tessdataPath, List coordinatesXIES) { + public static StudentExamId analyzeExamWordsIdAndStudentId(String imagePath, String tessdataPath, List coordinatesXIES) { // 1. 读取图片 Mat src = Imgcodecs.imread(imagePath); if (src.empty()) { diff --git a/enlish-service/src/main/resources/config/application-dev.yml b/enlish-service/src/main/resources/config/application-dev.yml index 9c83d0b..644948d 100644 --- a/enlish-service/src/main/resources/config/application-dev.yml +++ b/enlish-service/src/main/resources/config/application-dev.yml @@ -2,7 +2,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver # 指定数据库驱动类 # 数据库连接信息 - url: jdbc:mysql://124.220.58.5:3306/enlish + url: jdbc:mysql://124.220.58.5:3306/enlish?allowMultiQueries=true username: root # 数据库用户名 password: YLHP@admin123 # 数据库密码 data: diff --git a/enlish-service/src/main/resources/generatorConfig.xml b/enlish-service/src/main/resources/generatorConfig.xml index 0d36eb6..ea6a92a 100644 --- a/enlish-service/src/main/resources/generatorConfig.xml +++ b/enlish-service/src/main/resources/generatorConfig.xml @@ -45,7 +45,7 @@ targetProject="src/main/java"/> - + + \ No newline at end of file diff --git a/enlish-service/src/main/resources/mapper/ExamWordsJudgeResultDOMapper.xml b/enlish-service/src/main/resources/mapper/ExamWordsJudgeResultDOMapper.xml index 2b87ae8..b84d185 100644 --- a/enlish-service/src/main/resources/mapper/ExamWordsJudgeResultDOMapper.xml +++ b/enlish-service/src/main/resources/mapper/ExamWordsJudgeResultDOMapper.xml @@ -19,11 +19,36 @@ - + insert into exam_words_judge_result (ans_sheet_path, is_finished, start_date) values (#{path}, 0, now()) + + + + update exam_words_judge_result + set error_msg = #{errorMsg} + and is_finished = 2 + where id = #{id} + + + + update exam_words_judge_result + set student_id = #{examWordsJudgeResultDO.studentId}, + exam_words_id = #{examWordsJudgeResultDO.examWordsId}, + correct_word_ids = #{examWordsJudgeResultDO.correctWordIds, typeHandler=com.yinlihupo.enlish.service.config.ListWordIdTypeHandler}, + wrong_word_ids = #{examWordsJudgeResultDO.wrongWordIds, typeHandler=com.yinlihupo.enlish.service.config.ListWordIdTypeHandler}, + correct_word_count = #{examWordsJudgeResultDO.correctWordCount}, + wrong_word_count = #{examWordsJudgeResultDO.wrongWordCount}, + is_finished = 1 + where id = #{examWordsJudgeResultDO.id} + + \ No newline at end of file diff --git a/enlish-service/src/main/resources/mapper/StudentExamWordsDOMapper.xml b/enlish-service/src/main/resources/mapper/StudentExamWordsDOMapper.xml index c4e802a..4af9a98 100644 --- a/enlish-service/src/main/resources/mapper/StudentExamWordsDOMapper.xml +++ b/enlish-service/src/main/resources/mapper/StudentExamWordsDOMapper.xml @@ -8,6 +8,7 @@ + insert into student_exam_words (student_id, exam_words_id, is_completed, start_data) @@ -17,5 +18,20 @@ + + + + update student_exam_words + set is_completed = 1 + where student_id = #{studentId} + and exam_words_id = #{examWordsId} + and is_completed = 0 + \ No newline at end of file diff --git a/enlish-service/src/main/resources/mapper/VocabularyBankDOMapper.xml b/enlish-service/src/main/resources/mapper/VocabularyBankDOMapper.xml index 0588f87..13d1285 100644 --- a/enlish-service/src/main/resources/mapper/VocabularyBankDOMapper.xml +++ b/enlish-service/src/main/resources/mapper/VocabularyBankDOMapper.xml @@ -54,6 +54,7 @@ where unit_id = #{unitId} limit #{wordCount} + + + \ No newline at end of file diff --git a/enlish-service/src/main/resources/mapper/WordMasteryLogDOMapper.xml b/enlish-service/src/main/resources/mapper/WordMasteryLogDOMapper.xml index 98fcbff..32d32ee 100644 --- a/enlish-service/src/main/resources/mapper/WordMasteryLogDOMapper.xml +++ b/enlish-service/src/main/resources/mapper/WordMasteryLogDOMapper.xml @@ -7,17 +7,14 @@ + - - id, student_id, word_id, review_count, memory_strength - - + + insert into word_mastery_log (student_id, word_id, update_time) + VALUES + + + + (#{studentId}, #{id}, now()) + + + + + + + update word_mastery_log + set + memory_strength = memory_strength + #{wordMasteryLog.memoryStrength}, + review_count = review_count + #{wordMasteryLog.reviewCount}, + update_time = now() + where student_id = #{wordMasteryLog.studentId} + and word_id = #{wordMasteryLog.wordId} + + + \ No newline at end of file diff --git a/enlish-service/src/test/java/com/yinlihupo/enlish/service/mapper/TestInsert.java b/enlish-service/src/test/java/com/yinlihupo/enlish/service/mapper/TestVocabularyBankInsert.java similarity index 94% rename from enlish-service/src/test/java/com/yinlihupo/enlish/service/mapper/TestInsert.java rename to enlish-service/src/test/java/com/yinlihupo/enlish/service/mapper/TestVocabularyBankInsert.java index 5554d31..c3beb1d 100644 --- a/enlish-service/src/test/java/com/yinlihupo/enlish/service/mapper/TestInsert.java +++ b/enlish-service/src/test/java/com/yinlihupo/enlish/service/mapper/TestVocabularyBankInsert.java @@ -4,6 +4,7 @@ import com.yinlihupo.enlish.service.domain.dataobject.UnitDO; import com.yinlihupo.enlish.service.domain.dataobject.VocabularyBankDO; import com.yinlihupo.enlish.service.domain.mapper.UnitDOMapper; import com.yinlihupo.enlish.service.domain.mapper.VocabularyBankDOMapper; +import com.yinlihupo.enlish.service.domain.mapper.WordMasteryLogDOMapper; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.Row; @@ -20,12 +21,14 @@ import java.util.HashMap; @SpringBootTest @Slf4j -public class TestInsert { +public class TestVocabularyBankInsert { @Resource private VocabularyBankDOMapper vocabularyBankMapper; @Resource private UnitDOMapper unitDOMapper; + @Resource + private WordMasteryLogDOMapper wordMasteryLogDOMapper; @Test void test() { diff --git a/enlish-service/src/test/java/com/yinlihupo/enlish/service/mapper/WordMasteryLogInsertTest.java b/enlish-service/src/test/java/com/yinlihupo/enlish/service/mapper/WordMasteryLogInsertTest.java new file mode 100644 index 0000000..d785d1d --- /dev/null +++ b/enlish-service/src/test/java/com/yinlihupo/enlish/service/mapper/WordMasteryLogInsertTest.java @@ -0,0 +1,28 @@ +package com.yinlihupo.enlish.service.mapper; + +import com.yinlihupo.enlish.service.domain.mapper.UnitDOMapper; +import com.yinlihupo.enlish.service.domain.mapper.VocabularyBankDOMapper; +import com.yinlihupo.enlish.service.domain.mapper.WordMasteryLogDOMapper; +import jakarta.annotation.Resource; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +import java.util.List; + +@SpringBootTest +public class WordMasteryLogInsertTest { + + + @Resource + private VocabularyBankDOMapper vocabularyBankMapper; + @Resource + private UnitDOMapper unitDOMapper; + @Resource + private WordMasteryLogDOMapper wordMasteryLogDOMapper; + + @Test + void test() { + List integers = vocabularyBankMapper.selectAllIds(); + wordMasteryLogDOMapper.batchInsertInitialization(integers, 1); + } +} diff --git a/enlish-service/src/test/java/com/yinlihupo/enlish/service/omr/TestOmr.java b/enlish-service/src/test/java/com/yinlihupo/enlish/service/omr/TestOmr.java index ddef360..b666dbf 100644 --- a/enlish-service/src/test/java/com/yinlihupo/enlish/service/omr/TestOmr.java +++ b/enlish-service/src/test/java/com/yinlihupo/enlish/service/omr/TestOmr.java @@ -42,7 +42,7 @@ public class TestOmr { public void testInteger(){ String filePath = "C:\\project\\java\\enlish_edu\\enlish\\enlish-service\\src\\main\\resources\\templates\\p3.png"; List coordinatesXIES = PngUtil.analysisXY(filePath); - StudentExamId studentExamId = PngUtil.analyzeExamWordsId(filePath, tessdataPath, coordinatesXIES); + StudentExamId studentExamId = PngUtil.analyzeExamWordsIdAndStudentId(filePath, tessdataPath, coordinatesXIES); log.info("studentExamId:{}",studentExamId); } } diff --git a/enlish-service/src/test/java/com/yinlihupo/enlish/service/service/exam/ExamWordsJudgeTest.java b/enlish-service/src/test/java/com/yinlihupo/enlish/service/service/exam/ExamWordsJudgeTest.java new file mode 100644 index 0000000..35c5985 --- /dev/null +++ b/enlish-service/src/test/java/com/yinlihupo/enlish/service/service/exam/ExamWordsJudgeTest.java @@ -0,0 +1,19 @@ +package com.yinlihupo.enlish.service.service.exam; + +import com.yinlihupo.enlish.service.service.ExamWordsJudge; +import jakarta.annotation.Resource; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +public class ExamWordsJudgeTest { + + + @Resource + private ExamWordsJudge examWordsJudge; + + @Test + public void judgeExamWords() { + examWordsJudge.judgeExamWords(1); + } +}