diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/constant/ExamWordsConstant.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/constant/ExamWordsConstant.java index 368f19c..73ce3cc 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/constant/ExamWordsConstant.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/constant/ExamWordsConstant.java @@ -3,6 +3,4 @@ package com.yinlihupo.enlish.service.constant; public interface ExamWordsConstant { int PGN_COL = 53; - // 文件暂存目录 linux - String ASSESSMENT_FELT = "enlish/exam_words/"; } diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/ExamWordsController.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/ExamWordsController.java index 505beff..7bc2bfc 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/ExamWordsController.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/ExamWordsController.java @@ -10,14 +10,13 @@ import com.yinlihupo.enlish.service.model.bo.Word; import com.yinlihupo.enlish.service.model.vo.exam.GenerateExamWordsReqVO; import com.yinlihupo.enlish.service.service.ExamWordsService; import com.yinlihupo.enlish.service.service.VocabularyService; +import com.yinlihupo.framework.common.response.Response; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.io.FileInputStream; import java.io.InputStream; @@ -40,7 +39,7 @@ public class ExamWordsController { @Value("${templates.word}") private String templateWordPath; - @PostMapping("submit") + @PostMapping("genexam") public void generateFeltExamWords(@RequestBody GenerateExamWordsReqVO generateExamWordsReqVO, HttpServletResponse response) { Integer gradeId = generateExamWordsReqVO.getGradeId(); Integer level = generateExamWordsReqVO.getLevel(); @@ -101,5 +100,16 @@ public class ExamWordsController { } } - + @PostMapping("submit") + public Response submitExamWords(@RequestParam("file") MultipartFile file) { + try { + int saveExamWordsPngToDbAndLocal = examWordsService.saveExamWordsPngToDbAndLocal(file); + if (saveExamWordsPngToDbAndLocal > 0) { + return Response.success("保存成功"); + } + return Response.fail("保存失败"); + } catch (Exception e) { + return Response.fail("保存失败: " + e.getMessage()); + } + } } diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/dataobject/ExamWordsJudgeResultDO.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/dataobject/ExamWordsJudgeResultDO.java new file mode 100644 index 0000000..33c7b16 --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/dataobject/ExamWordsJudgeResultDO.java @@ -0,0 +1,38 @@ +package com.yinlihupo.enlish.service.domain.dataobject; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; +import java.util.List; + +@AllArgsConstructor +@NoArgsConstructor +@Data +@Builder +public class ExamWordsJudgeResultDO { + private Integer id; + + private String ansSheetPath; + + private Integer studentId; + + private Integer examWordsId; + + private Integer correctWordCount; + + private Integer wrongWordCount; + + private Integer isFinished; + + private LocalDateTime startDate; + + private List correctWordIds; + + private List wrongWordIds; + + private String errorMsg; + +} \ 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 new file mode 100644 index 0000000..9682f1c --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/ExamWordsJudgeResultDOMapper.java @@ -0,0 +1,8 @@ +package com.yinlihupo.enlish.service.domain.mapper; + +import org.apache.ibatis.annotations.Param; + +public interface ExamWordsJudgeResultDOMapper { + + int insert(@Param("path") String path); +} \ No newline at end of file diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/enums/ExamWordsJudgeResultType.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/enums/ExamWordsJudgeResultType.java new file mode 100644 index 0000000..0c620e0 --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/enums/ExamWordsJudgeResultType.java @@ -0,0 +1,17 @@ +package com.yinlihupo.enlish.service.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter +public enum ExamWordsJudgeResultType { + + WAIT(0, "未开始判题"), + SUCCESS(1, "判题成功"), + FAIL(2, "判题失败"), + ; + + final int code; + final String message; +} diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/ExamWordsService.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/ExamWordsService.java index f85c174..3c4066f 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/ExamWordsService.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/ExamWordsService.java @@ -2,6 +2,7 @@ package com.yinlihupo.enlish.service.service; import com.yinlihupo.enlish.service.domain.dataobject.ExamWordsDO; +import org.springframework.web.multipart.MultipartFile; import java.util.List; @@ -9,5 +10,5 @@ public interface ExamWordsService { ExamWordsDO generateExamWords(Integer gradeId, Integer level, List studentIds); - + int saveExamWordsPngToDbAndLocal(MultipartFile file); } diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/exam/ExamWordsServiceImpl.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/exam/ExamWordsServiceImpl.java index 6e94ad7..513ec8d 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/exam/ExamWordsServiceImpl.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/exam/ExamWordsServiceImpl.java @@ -1,24 +1,23 @@ package com.yinlihupo.enlish.service.service.exam; import com.yinlihupo.enlish.service.domain.dataobject.ExamWordsDO; +import com.yinlihupo.enlish.service.domain.dataobject.ExamWordsJudgeResultDO; import com.yinlihupo.enlish.service.domain.dataobject.VocabularyBankDO; -import com.yinlihupo.enlish.service.domain.mapper.ExamWordsDOMapper; -import com.yinlihupo.enlish.service.domain.mapper.GradeUnitDOMapper; -import com.yinlihupo.enlish.service.domain.mapper.StudentExamWordsDOMapper; -import com.yinlihupo.enlish.service.domain.mapper.VocabularyBankDOMapper; +import com.yinlihupo.enlish.service.domain.mapper.*; import com.yinlihupo.enlish.service.service.ExamWordsService; 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 org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; +import java.io.File; +import java.io.IOException; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; +import java.util.UUID; @Service @Slf4j @@ -28,12 +27,16 @@ public class ExamWordsServiceImpl implements ExamWordsService { private GradeUnitDOMapper gradeUnitDOMapper; @Resource private VocabularyBankDOMapper vocabularyBankDOMapper; - @Value("${templates.count}") - private Integer wordCount; @Resource private ExamWordsDOMapper examWordsDOMapper; @Resource private StudentExamWordsDOMapper studentExamWordsDOMapper; + @Resource + private ExamWordsJudgeResultDOMapper examWordsJudgeResultDOMapper; + @Value("${templates.count}") + private Integer wordCount; + @Value("${tmp.png}") + String tmpPng; @Override @Transactional(rollbackFor = RuntimeException.class) @@ -71,8 +74,33 @@ public class ExamWordsServiceImpl implements ExamWordsService { return examWordsDO; } - @PostMapping("analyze") - public void generateAssessmentDocxAnalyze(@RequestParam("file") MultipartFile file, @RequestParam("id") Integer id) { + @Override + @Transactional(rollbackFor = RuntimeException.class) + public int saveExamWordsPngToDbAndLocal(MultipartFile file) { + + File dir = new File(tmpPng); + if (!dir.exists()) { + dir.mkdirs(); + } + + try { + String originalFilename = file.getOriginalFilename(); + String suffix = ""; + if (originalFilename != null && originalFilename.contains(".")) { + suffix = originalFilename.substring(originalFilename.lastIndexOf(".")); + } + String newFileName = UUID.randomUUID() + suffix; + String path = tmpPng + newFileName; + + File dest = new File(path); + file.transferTo(dest); + + return examWordsJudgeResultDOMapper.insert(path); + } catch (IOException e) { + throw new RuntimeException("上传失败", e); + } } + + } diff --git a/enlish-service/src/main/resources/config/application-dev.yml b/enlish-service/src/main/resources/config/application-dev.yml index a3493dd..9c83d0b 100644 --- a/enlish-service/src/main/resources/config/application-dev.yml +++ b/enlish-service/src/main/resources/config/application-dev.yml @@ -26,4 +26,4 @@ templates: count: 100 data: C:\project\tess tmp: - png: C:\project\java\enlish_edu\enlish\enlish-service\src\main\resources\tmp\png \ No newline at end of file + png: C:\project\java\enlish_edu\enlish\enlish-service\src\main\resources\tmp\png\ \ No newline at end of file diff --git a/enlish-service/src/main/resources/generatorConfig.xml b/enlish-service/src/main/resources/generatorConfig.xml index 8a856d9..0d36eb6 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"/> - + + + + + + + + + + + + + + + + + + + + + + insert into exam_words_judge_result + (ans_sheet_path, is_finished, start_date) + values (#{path}, 0, now()) + + + + \ No newline at end of file