|
|
@@ -49,7 +49,7 @@ public class TElQuController extends BaseController {
|
|
|
/**
|
|
|
* 查询试题列表
|
|
|
*/
|
|
|
- @PostMapping ("/list")
|
|
|
+ @PostMapping("/list")
|
|
|
public TableDataInfo list(@RequestBody TElQu tElQu) {
|
|
|
startPage();
|
|
|
List<TElQu> list = tElQuService.selectTElQuList(tElQu);
|
|
|
@@ -80,17 +80,15 @@ public class TElQuController extends BaseController {
|
|
|
*/
|
|
|
@Log(title = "试题图片上传", businessType = BusinessType.UPDATE)
|
|
|
@PostMapping("/uploadFile")
|
|
|
- public AjaxResult uploadFile(@RequestParam("file") MultipartFile file) throws IOException
|
|
|
- {
|
|
|
- if (!file.isEmpty())
|
|
|
- {
|
|
|
+ public AjaxResult uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
|
|
|
+ if (!file.isEmpty()) {
|
|
|
// 获取当前日期
|
|
|
LocalDate currentDate = LocalDate.now();
|
|
|
// 获取年份
|
|
|
int year = currentDate.getYear();
|
|
|
// 获取月份
|
|
|
int month = currentDate.getMonthValue();
|
|
|
- String dir = "/elearn/" + year ;
|
|
|
+ String dir = "/elearn/" + year;
|
|
|
String avatar = FileUploadUtils.upload(RuoYiConfig.getFilePath(dir), file);
|
|
|
return AjaxResult.success(avatar);
|
|
|
}
|
|
|
@@ -129,12 +127,12 @@ public class TElQuController extends BaseController {
|
|
|
*
|
|
|
* @param file 用户上传的文件
|
|
|
* @param updateSupport 是否更新支持,如果已存在,则进行更新数据
|
|
|
- * @param repoIds 题库id
|
|
|
+ * @param repoIds 题库id
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
- @PostMapping("/importData")
|
|
|
- public AjaxResult importData(MultipartFile file, boolean updateSupport, String repoIds) throws Exception {
|
|
|
+ @PostMapping("/importData2")
|
|
|
+ public AjaxResult importData2(MultipartFile file, boolean updateSupport, String repoIds) throws Exception {
|
|
|
logger.info("xzst-------------------");
|
|
|
if (StringUtils.isEmpty(repoIds)) {
|
|
|
return AjaxResult.error("未选择题库");
|
|
|
@@ -377,14 +375,184 @@ public class TElQuController extends BaseController {
|
|
|
quStr = "";
|
|
|
}
|
|
|
|
|
|
- }else if (text.startsWith("正确答案")) {
|
|
|
+ } else if (text.startsWith("正确答案")) {
|
|
|
if (qu.getQuType() != -1) {
|
|
|
qu.setAnalysis(text);
|
|
|
tElQuService.updateTElQu(qu);
|
|
|
}
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
+ quStr = quStr + text;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return AjaxResult.success();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导入题目
|
|
|
+ *
|
|
|
+ * @param file 用户上传的文件
|
|
|
+ * @param updateSupport 是否更新支持,如果已存在,则进行更新数据
|
|
|
+ * @param repoIds 题库id
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @PostMapping("/importData")
|
|
|
+ public AjaxResult importData(MultipartFile file, boolean updateSupport, String repoIds) throws Exception {
|
|
|
+ logger.info("xzst-------------------");
|
|
|
+ if (StringUtils.isEmpty(repoIds)) {
|
|
|
+ return AjaxResult.error("未选择题库");
|
|
|
+ }
|
|
|
+ List<String> repos = Arrays.asList(repoIds.split(",").clone());
|
|
|
+
|
|
|
+
|
|
|
+ FileInputStream fis = (FileInputStream) file.getInputStream();
|
|
|
+ XWPFDocument document = new XWPFDocument(fis);
|
|
|
+
|
|
|
+ List<XWPFParagraph> paragraphs = document.getParagraphs();
|
|
|
+ // 正则表达式匹配选项
|
|
|
+ Pattern pattern = Pattern.compile("\\[T\\](.*?)A、");
|
|
|
+ TElQu qu = new TElQu();
|
|
|
+ String quStr = "";
|
|
|
+ String anStr = "";
|
|
|
+ for (XWPFParagraph para : paragraphs) {
|
|
|
+ logger.info(para.getParagraphText());
|
|
|
+ String text = para.getParagraphText().trim();
|
|
|
+ if (text.startsWith("[多选]")) {
|
|
|
+ qu.setQuType(2l);
|
|
|
+ quStr = text.replaceAll("\\[多选\\]", "");
|
|
|
+ } else if (text.startsWith("[单选]")) {
|
|
|
+ qu.setQuType(1l);
|
|
|
+ quStr = text.replaceAll("\\[单选\\]", "");
|
|
|
+ } else if (text.startsWith("[判断]")) {
|
|
|
+ qu.setQuType(3l);
|
|
|
+ quStr = text.replaceAll("\\[判断\\]", "");
|
|
|
+ } else if (text.startsWith("[判断]")) {
|
|
|
+ qu.setQuType(3l);
|
|
|
+ quStr = text.replaceAll("\\[判断\\]", "");
|
|
|
+ } else if (text.startsWith("A.")) {
|
|
|
+ qu.setContent(quStr);
|
|
|
+ quStr = text;
|
|
|
+
|
|
|
+ } else if (text.startsWith("[D]")) {
|
|
|
+ if (qu.getQuType() == 3) { //判断题题目
|
|
|
+ qu.setContent(quStr);
|
|
|
+
|
|
|
+ TElQuAnswer answerA = new TElQuAnswer();
|
|
|
+ answerA.setIsRight(0l);
|
|
|
+ answerA.setContent("正确");
|
|
|
+ TElQuAnswer answerB = new TElQuAnswer();
|
|
|
+ answerB.setIsRight(0l);
|
|
|
+ answerB.setContent("错误");
|
|
|
+ if (text.contains("对")) {
|
|
|
+ answerA.setIsRight(1l);
|
|
|
+ } else {
|
|
|
+ answerB.setIsRight(1l);
|
|
|
+ }
|
|
|
+ // 插入判断题
|
|
|
+ List<TElQuAnswer> answerList = new ArrayList<>();
|
|
|
+ answerList.add(answerA);
|
|
|
+ answerList.add(answerB);
|
|
|
+ qu.setAnswerList(answerList);
|
|
|
+ qu.setRepoIds(repos);
|
|
|
+ logger.info(JSON.toJSONString(qu));
|
|
|
+ tElQuService.insertTElQu(qu);
|
|
|
+ quStr = "";
|
|
|
+ } else { // 单选多选
|
|
|
+ //答案
|
|
|
+ quStr = quStr + text;
|
|
|
+
|
|
|
+ TElQuAnswer answerA = new TElQuAnswer();
|
|
|
+ answerA.setIsRight(0l);
|
|
|
+ TElQuAnswer answerB = new TElQuAnswer();
|
|
|
+ answerB.setIsRight(0l);
|
|
|
+ TElQuAnswer answerC = new TElQuAnswer();
|
|
|
+ answerC.setIsRight(0l);
|
|
|
+ TElQuAnswer answerD = new TElQuAnswer();
|
|
|
+ answerD.setIsRight(0l);
|
|
|
+
|
|
|
+ Pattern patternA = Pattern.compile("A\\.(.*?)B\\.");
|
|
|
+ Matcher matcherA = patternA.matcher(quStr);
|
|
|
+ if (matcherA.find()) {
|
|
|
+ String content = matcherA.group(1);
|
|
|
+ System.out.println("从A、到B、之间的内容是: " + content);
|
|
|
+ answerA.setContent(content);
|
|
|
+ } else {
|
|
|
+ System.out.println("未找到匹配的内容");
|
|
|
+ }
|
|
|
+
|
|
|
+ Pattern patternB = Pattern.compile("B\\.(.*?)C\\.");
|
|
|
+ Matcher matcherB = patternB.matcher(quStr);
|
|
|
+ if (matcherB.find()) {
|
|
|
+ String content = matcherB.group(1);
|
|
|
+ System.out.println("从B、到C、之间的内容是: " + content);
|
|
|
+ answerB.setContent(content);
|
|
|
+ } else {
|
|
|
+ System.out.println("未找到匹配的内容");
|
|
|
+ }
|
|
|
+ if (quStr.contains("D.")) { //有D选项
|
|
|
+ Pattern patternC = Pattern.compile("C\\.(.*?)D\\.");
|
|
|
+ Matcher matcherC = patternC.matcher(quStr);
|
|
|
+ if (matcherC.find()) {
|
|
|
+ String content = matcherC.group(1);
|
|
|
+ System.out.println("从C、到D、之间的内容是: " + content);
|
|
|
+ answerC.setContent(content);
|
|
|
+ } else {
|
|
|
+ System.out.println("未找到匹配的内容");
|
|
|
+ }
|
|
|
+
|
|
|
+ Pattern patternD = Pattern.compile("D\\.(.*?)(?=\\[D])");
|
|
|
+ Matcher matcherD = patternD.matcher(quStr);
|
|
|
+ if (matcherD.find()) {
|
|
|
+ String content = matcherD.group(1);
|
|
|
+ System.out.println("从D、到[D]、之间的内容是: " + content);
|
|
|
+ answerD.setContent(content);
|
|
|
+ } else {
|
|
|
+ System.out.println("未找到匹配的内容");
|
|
|
+ }
|
|
|
+ } else {//无D选项
|
|
|
+ Pattern patternC = Pattern.compile("C\\.(.*?)(?=\\[D])");
|
|
|
+ Matcher matcherC = patternC.matcher(quStr);
|
|
|
+ if (matcherC.find()) {
|
|
|
+ String content = matcherC.group(1);
|
|
|
+ System.out.println("从C、到D、之间的内容是: " + content);
|
|
|
+ answerC.setContent(content);
|
|
|
+ } else {
|
|
|
+ System.out.println("未找到匹配的内容");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ anStr = text.replaceAll("\\[D\\]", "").replaceAll("\\[/D\\]", "");
|
|
|
+ System.out.println("匹配答案:" + anStr);
|
|
|
+ if (anStr.contains("A")) {
|
|
|
+ answerA.setIsRight(1l);
|
|
|
+ }
|
|
|
+ if (anStr.contains("B")) {
|
|
|
+ answerB.setIsRight(1l);
|
|
|
+ }
|
|
|
+ if (anStr.contains("C")) {
|
|
|
+ answerC.setIsRight(1l);
|
|
|
+ }
|
|
|
+ if (anStr.contains("D")) {
|
|
|
+ answerD.setIsRight(1l);
|
|
|
+ }
|
|
|
+ List<TElQuAnswer> answerList = new ArrayList<>();
|
|
|
+ answerList.add(answerA);
|
|
|
+ answerList.add(answerB);
|
|
|
+ answerList.add(answerC);
|
|
|
+ if (quStr.contains("D.")) { //有D选项
|
|
|
+ answerList.add(answerD);
|
|
|
+ }
|
|
|
+ qu.setAnswerList(answerList);
|
|
|
+ qu.setRepoIds(repos);
|
|
|
+ logger.info(JSON.toJSONString(qu));
|
|
|
+ tElQuService.insertTElQu(qu);
|
|
|
+ quStr = "";
|
|
|
+
|
|
|
+ }
|
|
|
+ } else {
|
|
|
quStr = quStr + text;
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
return AjaxResult.success();
|