diff --git a/src/main/java/com/sztzjy/trade/controller/stu/StuAcademicRecordController.java b/src/main/java/com/sztzjy/trade/controller/stu/StuAcademicRecordController.java index f7c30fc..0ae3242 100644 --- a/src/main/java/com/sztzjy/trade/controller/stu/StuAcademicRecordController.java +++ b/src/main/java/com/sztzjy/trade/controller/stu/StuAcademicRecordController.java @@ -56,7 +56,7 @@ public class StuAcademicRecordController { //导出的表名 - String title = IdUtil.simpleUUID(); + String title = userId+"项目成绩"; String[] headers = {"序号", "理实项目名称", "得分", "权重", "加权后得分"}; diff --git a/src/main/java/com/sztzjy/trade/controller/stu/StuHomeworkExamController.java b/src/main/java/com/sztzjy/trade/controller/stu/StuHomeworkExamController.java index 1146cfd..32c4b63 100644 --- a/src/main/java/com/sztzjy/trade/controller/stu/StuHomeworkExamController.java +++ b/src/main/java/com/sztzjy/trade/controller/stu/StuHomeworkExamController.java @@ -7,6 +7,8 @@ import com.sztzjy.trade.entity.TchHomeworkManage; import com.sztzjy.trade.entity.dto.StuAchievementInfoDTO; import com.sztzjy.trade.entity.dto.SubmitExamPapersDTO; import com.sztzjy.trade.mapper.StuAchievementInfoMapper; +import com.sztzjy.trade.mapper.TchHomeworkManageMapper; +import com.sztzjy.trade.mapper.TchHomeworkSetMapper; import com.sztzjy.trade.service.StuHomeworkExamService; import com.sztzjy.trade.util.ResultEntity; import com.sztzjy.trade.util.file.IFileUtil; @@ -36,6 +38,8 @@ public class StuHomeworkExamController { @Resource StuAchievementInfoMapper achievementInfoMapper; @Resource + TchHomeworkManageMapper homeworkManageMapper; + @Resource IFileUtil iFileUtil; @ApiOperation("查询作业列表") @@ -51,9 +55,10 @@ public class StuHomeworkExamController { @ApiOperation("开始作业/展示题目") @PostMapping("/getTopics") @AnonymousAccess - public ResultEntity getTopics(String id) { + public ResultEntity getTopics(@ApiParam("作业/考试ID") String id, + @ApiParam("作业/考试") String type) { - return new ResultEntity<>(HttpStatus.OK,"成功",homeworkExamService.getTopics(id)); + return new ResultEntity<>(HttpStatus.OK,"成功",homeworkExamService.getTopics(id,type)); } @@ -99,25 +104,28 @@ public class StuHomeworkExamController { } - @ApiOperation("附件作业提交回显") - @PostMapping("/getEcho") - @AnonymousAccess - public ResultEntity getEcho(String id) { - - return new ResultEntity<>(HttpStatus.OK,"成功",homeworkExamService.getEcho(id)); - - } +// @ApiOperation("附件作业提交回显") +// @PostMapping("/getEcho") +// @AnonymousAccess +// public ResultEntity getEcho(String id) { +// +// return new ResultEntity<>(HttpStatus.OK,"成功",homeworkExamService.getEcho(id)); +// +// } - @ApiOperation("附件作业提交上传") + @ApiOperation("附件作业提交") @PostMapping("/upload") @AnonymousAccess - public ResultEntity upload(String id, MultipartFile file) { - String upload = iFileUtil.upload(file); + public ResultEntity upload(@RequestBody StuAchievementInfo stuAchievementInfo) { - StuAchievementInfo achievementInfo = achievementInfoMapper.selectByPrimaryKey(id); - achievementInfo.setStuHomeworkAnnex(upload); - achievementInfoMapper.updateByPrimaryKey(achievementInfo); + achievementInfoMapper.updateByPrimaryKey(stuAchievementInfo); + + //修改本次附件作业的已提交人数 + TchHomeworkManage tchHomeworkManage = homeworkManageMapper.selectByPrimaryKey(stuAchievementInfo.getTaskId()); + tchHomeworkManage.setTotalPeople(tchHomeworkManage.getTotalPeople()+1); + + homeworkManageMapper.updateByPrimaryKey(tchHomeworkManage); return new ResultEntity<>(HttpStatus.OK,"提交成功"); diff --git a/src/main/java/com/sztzjy/trade/controller/stu/StuInteractionController.java b/src/main/java/com/sztzjy/trade/controller/stu/StuInteractionController.java index 8b45192..1830132 100644 --- a/src/main/java/com/sztzjy/trade/controller/stu/StuInteractionController.java +++ b/src/main/java/com/sztzjy/trade/controller/stu/StuInteractionController.java @@ -1,6 +1,7 @@ package com.sztzjy.trade.controller.stu; import com.sztzjy.trade.annotation.AnonymousAccess; +import com.sztzjy.trade.entity.dto.StuInitiateQuestionDTO; import com.sztzjy.trade.entity.dto.StuReleaseDTO; import com.sztzjy.trade.entity.dto.tch.TchReleaseDTO; import com.sztzjy.trade.service.StuInteractionService; @@ -54,16 +55,16 @@ public class StuInteractionController { @ApiOperation("查看历史讨论") @PostMapping("/getAllDiscussions") @AnonymousAccess - public ResultEntity getAllDiscussions(String userId,Integer index,Integer size) { + public ResultEntity getAllDiscussions(String userId,Integer roleId,Integer index,Integer size) { - return new ResultEntity<>(HttpStatus.OK,"成功",tchInteractionService.getAllDiscussions(userId,index,size)); + return new ResultEntity<>(HttpStatus.OK,"成功",tchInteractionService.getAllDiscussions(userId,roleId,index,size)); } @ApiOperation("我要提问列表展示") @PostMapping("/getStuQuestioning") @AnonymousAccess - public ResultEntity getStuQuestioning(@ApiParam("问题")@RequestParam(required = false) String problem, + public ResultEntity getStuQuestioning(@ApiParam("学生问题")@RequestParam(required = false) String problem, @ApiParam("状态")@RequestParam(required = false) String status, @ApiParam("关键字")@RequestParam(required = false) String keywords, @ApiParam("userId") String userId, @@ -109,4 +110,31 @@ public class StuInteractionController { return new ResultEntity<>(HttpStatus.ACCEPTED,"回答失败,请联系管理员"); } } + + + @ApiOperation("发起提问") + @PostMapping("/initiateQuestion") + @AnonymousAccess + public ResultEntity initiateQuestion(@RequestBody StuInitiateQuestionDTO questionDTO) { + + Integer publish = stuInteractionService.initiateQuestion(questionDTO); + + if(publish>0){ + return new ResultEntity<>(HttpStatus.OK,"提问成功"); + }else { + return new ResultEntity<>(HttpStatus.ACCEPTED,"提问失败,请联系管理员"); + } + } + + @ApiOperation("关键词搜索") + @PostMapping("/keywordSearch") + @AnonymousAccess + public ResultEntity keywordSearch(@ApiParam("userId") String userId, + @ApiParam("关键字")@RequestParam(required = false) String keywords, + @ApiParam("当前页") Integer index, + @ApiParam("每页条数") Integer size) { + + return new ResultEntity<>(HttpStatus.OK,"成功",stuInteractionService.keywordSearch(userId,keywords,index,size)); + + } } diff --git a/src/main/java/com/sztzjy/trade/controller/tch/TchHomeworkExamController.java b/src/main/java/com/sztzjy/trade/controller/tch/TchHomeworkExamController.java index 503d2bc..26d5f7d 100644 --- a/src/main/java/com/sztzjy/trade/controller/tch/TchHomeworkExamController.java +++ b/src/main/java/com/sztzjy/trade/controller/tch/TchHomeworkExamController.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.IdUtil; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; +import com.github.pagehelper.PageInfo; import com.google.gson.Gson; import com.sztzjy.trade.annotation.AnonymousAccess; import com.sztzjy.trade.config.Constant; @@ -16,6 +17,7 @@ import com.sztzjy.trade.entity.dto.StuScoreDetailsInfoDTO; import com.sztzjy.trade.entity.dto.tch.*; import com.sztzjy.trade.mapper.*; import com.sztzjy.trade.service.TchHomeworkExamService; +import com.sztzjy.trade.util.BigDecimalUtils; import com.sztzjy.trade.util.ConvertUtil; import com.sztzjy.trade.util.ResultEntity; import com.sztzjy.trade.util.excel.FilePortUtil; @@ -31,6 +33,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; @@ -63,6 +66,8 @@ public class TchHomeworkExamController { StuScoreDetailsInfoMapper scoreDetailsInfoMapper; @Resource StuUploadExpermentMapper uploadExpermentMapper; + @Resource + BigDecimalUtils bigDecimalUtils; @ApiOperation("题库作业/附件作业/考试展示") @@ -78,6 +83,18 @@ public class TchHomeworkExamController { } + +// @ApiOperation("题库作业/附件作业/考试展示") +// @GetMapping("/getInformations") +// @AnonymousAccess +// public ResultEntity getInformations(@ApiParam("用户ID") String userId, +// @ApiParam("作业类型(作业/考试)") String type) { +// +// return new ResultEntity<>(HttpStatus.OK,"成功",tchHomeworkExamService.getInformations(userId,type)); +// +// } + + @ApiOperation("新增(作业/考试)") @PostMapping("/add") @AnonymousAccess @@ -227,7 +244,7 @@ public class TchHomeworkExamController { String title = IdUtil.simpleUUID(); if(type.equals("题库作业") || type.equals("附件作业")){ - String[] headers={"题库作业名称", "作业班级", "平均得分", "及格率", "作业时间","状态"}; + String[] headers={"作业名称", "作业班级", "平均得分", "及格率", "作业时间","状态"}; title=type+title; @@ -307,6 +324,8 @@ public class TchHomeworkExamController { + + /* * @Date 2023/10/11 * *教师端评阅,下载报告 @@ -319,6 +338,77 @@ public class TchHomeworkExamController { } + @GetMapping("/getCurrencyScoreHomework") + @ApiOperation("评阅界面") + @AnonymousAccess + public ResultEntity> getCurrencyScoreHomework(@RequestParam String schoolId, + @RequestParam Integer page, + @RequestParam Integer size, + @RequestParam String id, + @ApiParam("姓名或者学号") @RequestParam(required = false) String name, + @RequestParam(required = false) String className) { + return new ResultEntity<>(tchHomeworkExamService.getCurrencyScoreHomework(schoolId, page, size, id, name, className)); + } + + + @PostMapping("/ratingAndComment") + @ApiOperation("老师输入评语和打分") + @AnonymousAccess + public void ratingAndComment(@RequestBody StuAchievementInfo stuAchievementInfo) { + achievementInfoMapper.updateByPrimaryKeySelective(stuAchievementInfo); + + //修改本次附件作业的平均得分和及格率 + TchHomeworkManage tchHomeworkManage = homeworkManageMapper.selectByPrimaryKey(stuAchievementInfo.getTaskId()); + + //取出总得分/提交人数=平均得分 + BigDecimal tatalScore = tchHomeworkManage.getTatalScore(); + + //平均得分 + Double div = bigDecimalUtils.div(Double.parseDouble(tatalScore.toString()), tchHomeworkManage.getTotalPeople(),2); + + //判断此次分数是否及格,及格则及格人数+1,再用及格人数/提交人数=及格率 + if(stuAchievementInfo.getScore().compareTo(BigDecimal.valueOf(60)) >= 0){ + tchHomeworkManage.setNumberPassers(tchHomeworkManage.getNumberPassers()+1); + } + + //及格率 + Double mul = bigDecimalUtils.mul(tchHomeworkManage.getNumberPassers(), tchHomeworkManage.getTotalPeople()); + + tchHomeworkManage.setAverageScore(new BigDecimal(div)); + tchHomeworkManage.setPassRate(new BigDecimal(mul)); + + homeworkManageMapper.updateByPrimaryKey(tchHomeworkManage); + } + + + @GetMapping("/getReportFileURLByUserIdAndModule") + @ApiOperation("获取获取单个学生的附件作业") + @AnonymousAccess + public ResultEntity getReportFileURLByUserIdAndModule(String id){ + + StuAchievementInfo achievementInfo = achievementInfoMapper.selectByPrimaryKey(id); + + + + return new ResultEntity<>(HttpStatus.OK,"获取成功",achievementInfo.getHomeworkAnnex()); + + } + + +// @GetMapping("/getAttachmentHomeworkDetails") +// @ApiOperation("附件作业详情") +// @AnonymousAccess +// public ResultEntity> getAttachmentHomeworkDetails(@RequestParam String schoolId, +// @RequestParam Integer page, +// @RequestParam Integer size, +// @RequestParam String id, +// @ApiParam("姓名或者学号") @RequestParam(required = false) String name, +// @RequestParam(required = false) String className) { +// return new ResultEntity<>(tchHomeworkExamService.getAttachmentHomeworkDetails(schoolId, page, size, id, name, className)); +// } + + + @ApiOperation("作业/考试成绩-侧边展示") @PostMapping("/getBroHomeworkGrades") @AnonymousAccess diff --git a/src/main/java/com/sztzjy/trade/controller/tch/TchInteractionController.java b/src/main/java/com/sztzjy/trade/controller/tch/TchInteractionController.java index 495d16f..95fc695 100644 --- a/src/main/java/com/sztzjy/trade/controller/tch/TchInteractionController.java +++ b/src/main/java/com/sztzjy/trade/controller/tch/TchInteractionController.java @@ -67,9 +67,9 @@ public class TchInteractionController { @ApiOperation("查看历史讨论") @PostMapping("/getAllDiscussions") @AnonymousAccess - public ResultEntity getAllDiscussions(String userId,Integer index,Integer size) { + public ResultEntity getAllDiscussions(String userId,Integer roleId,Integer index,Integer size) { - return new ResultEntity<>(HttpStatus.OK,"成功",interactionService.getAllDiscussions(userId,index,size)); + return new ResultEntity<>(HttpStatus.OK,"成功",interactionService.getAllDiscussions(userId,roleId,index,size)); } @@ -124,9 +124,10 @@ public class TchInteractionController { @ApiParam("状态")@RequestParam(required = false) String status, @ApiParam("关键字")@RequestParam(required = false) String keywords, @ApiParam("当前页") Integer index, - @ApiParam("每页条数") Integer size) { + @ApiParam("每页条数") Integer size, + String schoolId) { - return new ResultEntity<>(HttpStatus.OK,"成功",interactionService.getStuQuestioning(problem,status,keywords,index,size)); + return new ResultEntity<>(HttpStatus.OK,"成功",interactionService.getStuQuestioning(problem,status,keywords,index,size,schoolId)); } diff --git a/src/main/java/com/sztzjy/trade/entity/StuAchievementInfo.java b/src/main/java/com/sztzjy/trade/entity/StuAchievementInfo.java index 417419d..b2bd076 100644 --- a/src/main/java/com/sztzjy/trade/entity/StuAchievementInfo.java +++ b/src/main/java/com/sztzjy/trade/entity/StuAchievementInfo.java @@ -3,10 +3,7 @@ package com.sztzjy.trade.entity; import java.math.BigDecimal; import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; -import org.springframework.format.annotation.DateTimeFormat; - /** * 成绩表 * @@ -63,13 +60,9 @@ public class StuAchievementInfo { private String homeworkAnnex; @ApiModelProperty(notes = "作业起始时间") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") private Date startingTime; @ApiModelProperty(notes = "作业终止时间") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") private Date endTime; @ApiModelProperty(notes = "教师评语") @@ -84,6 +77,12 @@ public class StuAchievementInfo { @ApiModelProperty(notes = "学生提交作业附件URL") private String stuHomeworkAnnex; + @ApiModelProperty(notes = "学校ID") + private String schoolId; + + @ApiModelProperty(notes = "作业类型(考试为空)") + private String homeworkType; + public String getId() { return id; } @@ -259,4 +258,20 @@ public class StuAchievementInfo { public void setStuHomeworkAnnex(String stuHomeworkAnnex) { this.stuHomeworkAnnex = stuHomeworkAnnex == null ? null : stuHomeworkAnnex.trim(); } + + public String getSchoolId() { + return schoolId; + } + + public void setSchoolId(String schoolId) { + this.schoolId = schoolId == null ? null : schoolId.trim(); + } + + public String getHomeworkType() { + return homeworkType; + } + + public void setHomeworkType(String homeworkType) { + this.homeworkType = homeworkType == null ? null : homeworkType.trim(); + } } \ No newline at end of file diff --git a/src/main/java/com/sztzjy/trade/entity/StuAchievementInfoExample.java b/src/main/java/com/sztzjy/trade/entity/StuAchievementInfoExample.java index 6b6d3dc..19c06d4 100644 --- a/src/main/java/com/sztzjy/trade/entity/StuAchievementInfoExample.java +++ b/src/main/java/com/sztzjy/trade/entity/StuAchievementInfoExample.java @@ -1555,6 +1555,146 @@ public class StuAchievementInfoExample { addCriterion("stu_homework_annex not between", value1, value2, "stuHomeworkAnnex"); return (Criteria) this; } + + public Criteria andSchoolIdIsNull() { + addCriterion("school_id is null"); + return (Criteria) this; + } + + public Criteria andSchoolIdIsNotNull() { + addCriterion("school_id is not null"); + return (Criteria) this; + } + + public Criteria andSchoolIdEqualTo(String value) { + addCriterion("school_id =", value, "schoolId"); + return (Criteria) this; + } + + public Criteria andSchoolIdNotEqualTo(String value) { + addCriterion("school_id <>", value, "schoolId"); + return (Criteria) this; + } + + public Criteria andSchoolIdGreaterThan(String value) { + addCriterion("school_id >", value, "schoolId"); + return (Criteria) this; + } + + public Criteria andSchoolIdGreaterThanOrEqualTo(String value) { + addCriterion("school_id >=", value, "schoolId"); + return (Criteria) this; + } + + public Criteria andSchoolIdLessThan(String value) { + addCriterion("school_id <", value, "schoolId"); + return (Criteria) this; + } + + public Criteria andSchoolIdLessThanOrEqualTo(String value) { + addCriterion("school_id <=", value, "schoolId"); + return (Criteria) this; + } + + public Criteria andSchoolIdLike(String value) { + addCriterion("school_id like", value, "schoolId"); + return (Criteria) this; + } + + public Criteria andSchoolIdNotLike(String value) { + addCriterion("school_id not like", value, "schoolId"); + return (Criteria) this; + } + + public Criteria andSchoolIdIn(List values) { + addCriterion("school_id in", values, "schoolId"); + return (Criteria) this; + } + + public Criteria andSchoolIdNotIn(List values) { + addCriterion("school_id not in", values, "schoolId"); + return (Criteria) this; + } + + public Criteria andSchoolIdBetween(String value1, String value2) { + addCriterion("school_id between", value1, value2, "schoolId"); + return (Criteria) this; + } + + public Criteria andSchoolIdNotBetween(String value1, String value2) { + addCriterion("school_id not between", value1, value2, "schoolId"); + return (Criteria) this; + } + + public Criteria andHomeworkTypeIsNull() { + addCriterion("homework_type is null"); + return (Criteria) this; + } + + public Criteria andHomeworkTypeIsNotNull() { + addCriterion("homework_type is not null"); + return (Criteria) this; + } + + public Criteria andHomeworkTypeEqualTo(String value) { + addCriterion("homework_type =", value, "homeworkType"); + return (Criteria) this; + } + + public Criteria andHomeworkTypeNotEqualTo(String value) { + addCriterion("homework_type <>", value, "homeworkType"); + return (Criteria) this; + } + + public Criteria andHomeworkTypeGreaterThan(String value) { + addCriterion("homework_type >", value, "homeworkType"); + return (Criteria) this; + } + + public Criteria andHomeworkTypeGreaterThanOrEqualTo(String value) { + addCriterion("homework_type >=", value, "homeworkType"); + return (Criteria) this; + } + + public Criteria andHomeworkTypeLessThan(String value) { + addCriterion("homework_type <", value, "homeworkType"); + return (Criteria) this; + } + + public Criteria andHomeworkTypeLessThanOrEqualTo(String value) { + addCriterion("homework_type <=", value, "homeworkType"); + return (Criteria) this; + } + + public Criteria andHomeworkTypeLike(String value) { + addCriterion("homework_type like", value, "homeworkType"); + return (Criteria) this; + } + + public Criteria andHomeworkTypeNotLike(String value) { + addCriterion("homework_type not like", value, "homeworkType"); + return (Criteria) this; + } + + public Criteria andHomeworkTypeIn(List values) { + addCriterion("homework_type in", values, "homeworkType"); + return (Criteria) this; + } + + public Criteria andHomeworkTypeNotIn(List values) { + addCriterion("homework_type not in", values, "homeworkType"); + return (Criteria) this; + } + + public Criteria andHomeworkTypeBetween(String value1, String value2) { + addCriterion("homework_type between", value1, value2, "homeworkType"); + return (Criteria) this; + } + + public Criteria andHomeworkTypeNotBetween(String value1, String value2) { + addCriterion("homework_type not between", value1, value2, "homeworkType"); + return (Criteria) this; + } } public static class Criteria extends GeneratedCriteria { diff --git a/src/main/java/com/sztzjy/trade/entity/StuLearningAssessment.java b/src/main/java/com/sztzjy/trade/entity/StuLearningAssessment.java index f1074fa..cdf05ca 100644 --- a/src/main/java/com/sztzjy/trade/entity/StuLearningAssessment.java +++ b/src/main/java/com/sztzjy/trade/entity/StuLearningAssessment.java @@ -1,7 +1,10 @@ package com.sztzjy.trade.entity; import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Collections; import java.util.Date; +import java.util.List; import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; @@ -110,6 +113,54 @@ public class StuLearningAssessment { @ApiModelProperty(notes = "上架状态(1上架,0下架)默认为上架") private Integer listingStatus; + + public void shuffleOptions() { + List options = new ArrayList<>(); + + // 只添加非空的选项 + if (optionA != null && !optionA.isEmpty()) options.add(optionA); + if (optionB != null && !optionB.isEmpty()) options.add(optionB); + if (optionC != null && !optionC.isEmpty()) options.add(optionC); + if (optionD != null && !optionD.isEmpty()) options.add(optionD); + if (optionE != null && !optionE.isEmpty()) options.add(optionE); + if (optionF != null && !optionF.isEmpty()) options.add(optionF); + if (optionG != null && !optionG.isEmpty()) options.add(optionG); + + // 打乱非空选项 + Collections.shuffle(options); + + // 将打乱后的选项重新赋值 + // 清空原有选项 + optionA = optionB = optionC = optionD = optionE =optionF=optionG= ""; + + for (int i = 0; i < options.size(); i++) { + switch (i) { + case 0: + optionA = options.get(i); + break; + case 1: + optionB = options.get(i); + break; + case 2: + optionC = options.get(i); + break; + case 3: + optionD = options.get(i); + break; + case 4: + optionE = options.get(i); + break; + case 5: + optionF = options.get(i); + break; + case 6: + optionG = options.get(i); + break; + } + } + } + + public String getTopicId() { return topicId; } diff --git a/src/main/java/com/sztzjy/trade/entity/StuProblemInfo.java b/src/main/java/com/sztzjy/trade/entity/StuProblemInfo.java index 5982b66..08d0774 100644 --- a/src/main/java/com/sztzjy/trade/entity/StuProblemInfo.java +++ b/src/main/java/com/sztzjy/trade/entity/StuProblemInfo.java @@ -14,30 +14,34 @@ import lombok.Data; */ @Data public class StuProblemInfo { - @ApiModelProperty("学生提问ID") + @ApiModelProperty(notes = "学生提问ID") private String id; - @ApiModelProperty("学生姓名") + @ApiModelProperty(notes = "学生姓名") private String name; - @ApiModelProperty("关键字(多个关键字逗号隔开)") + @ApiModelProperty(notes = "关键字(多个关键字逗号隔开)") private String keywords; - @ApiModelProperty("提问时间") + @ApiModelProperty(notes = "提问时间") private Date questionTime; - @ApiModelProperty("用户ID") + @ApiModelProperty(notes = "用户ID") private String userId; - @ApiModelProperty("回答状态(0、待回答 1、已回答)") + @ApiModelProperty(notes = "回答状态(0、待回答 1、已回答)") private Integer answerStatus; - @ApiModelProperty("问题") + @ApiModelProperty(notes = "学校ID") + private String shcoolId; + + @ApiModelProperty(notes = "问题") private String content; @ApiModelProperty("回复内容") private List replyList; + public String getId() { return id; } @@ -86,6 +90,14 @@ public class StuProblemInfo { this.answerStatus = answerStatus; } + public String getShcoolId() { + return shcoolId; + } + + public void setShcoolId(String shcoolId) { + this.shcoolId = shcoolId == null ? null : shcoolId.trim(); + } + public String getContent() { return content; } diff --git a/src/main/java/com/sztzjy/trade/entity/StuProblemInfoExample.java b/src/main/java/com/sztzjy/trade/entity/StuProblemInfoExample.java index a6b092d..4de3693 100644 --- a/src/main/java/com/sztzjy/trade/entity/StuProblemInfoExample.java +++ b/src/main/java/com/sztzjy/trade/entity/StuProblemInfoExample.java @@ -91,7 +91,6 @@ public class StuProblemInfoExample { criteria.add(new Criterion(condition)); } - protected void addCriterion(String condition, Object value, String property) { if (value == null) { throw new RuntimeException("Value for " + property + " cannot be null"); @@ -510,6 +509,76 @@ public class StuProblemInfoExample { addCriterion("answer_status not between", value1, value2, "answerStatus"); return (Criteria) this; } + + public Criteria andShcoolIdIsNull() { + addCriterion("shcool_id is null"); + return (Criteria) this; + } + + public Criteria andShcoolIdIsNotNull() { + addCriterion("shcool_id is not null"); + return (Criteria) this; + } + + public Criteria andShcoolIdEqualTo(String value) { + addCriterion("shcool_id =", value, "shcoolId"); + return (Criteria) this; + } + + public Criteria andShcoolIdNotEqualTo(String value) { + addCriterion("shcool_id <>", value, "shcoolId"); + return (Criteria) this; + } + + public Criteria andShcoolIdGreaterThan(String value) { + addCriterion("shcool_id >", value, "shcoolId"); + return (Criteria) this; + } + + public Criteria andShcoolIdGreaterThanOrEqualTo(String value) { + addCriterion("shcool_id >=", value, "shcoolId"); + return (Criteria) this; + } + + public Criteria andShcoolIdLessThan(String value) { + addCriterion("shcool_id <", value, "shcoolId"); + return (Criteria) this; + } + + public Criteria andShcoolIdLessThanOrEqualTo(String value) { + addCriterion("shcool_id <=", value, "shcoolId"); + return (Criteria) this; + } + + public Criteria andShcoolIdLike(String value) { + addCriterion("shcool_id like", value, "shcoolId"); + return (Criteria) this; + } + + public Criteria andShcoolIdNotLike(String value) { + addCriterion("shcool_id not like", value, "shcoolId"); + return (Criteria) this; + } + + public Criteria andShcoolIdIn(List values) { + addCriterion("shcool_id in", values, "shcoolId"); + return (Criteria) this; + } + + public Criteria andShcoolIdNotIn(List values) { + addCriterion("shcool_id not in", values, "shcoolId"); + return (Criteria) this; + } + + public Criteria andShcoolIdBetween(String value1, String value2) { + addCriterion("shcool_id between", value1, value2, "shcoolId"); + return (Criteria) this; + } + + public Criteria andShcoolIdNotBetween(String value1, String value2) { + addCriterion("shcool_id not between", value1, value2, "shcoolId"); + return (Criteria) this; + } } public static class Criteria extends GeneratedCriteria { diff --git a/src/main/java/com/sztzjy/trade/entity/dto/StuInitiateQuestionDTO.java b/src/main/java/com/sztzjy/trade/entity/dto/StuInitiateQuestionDTO.java new file mode 100644 index 0000000..9b3bb9d --- /dev/null +++ b/src/main/java/com/sztzjy/trade/entity/dto/StuInitiateQuestionDTO.java @@ -0,0 +1,20 @@ +package com.sztzjy.trade.entity.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author tz + * @date 2025/1/4 16:05 + */ +@Data +public class StuInitiateQuestionDTO { + @ApiModelProperty("用户ID") + private String userId; + @ApiModelProperty("问题") + private String content; + @ApiModelProperty("关键字") + private List keywords; +} diff --git a/src/main/java/com/sztzjy/trade/entity/dto/StuProblemInfoDTO.java b/src/main/java/com/sztzjy/trade/entity/dto/StuProblemInfoDTO.java new file mode 100644 index 0000000..ec719e2 --- /dev/null +++ b/src/main/java/com/sztzjy/trade/entity/dto/StuProblemInfoDTO.java @@ -0,0 +1,18 @@ +package com.sztzjy.trade.entity.dto; + +import com.sztzjy.trade.entity.StuProblemInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author tz + * @date 2025/1/4 16:32 + */ +@Data +public class StuProblemInfoDTO { + private List stuProblemInfos; + @ApiModelProperty("关键词集合") + private List keywordList; +} diff --git a/src/main/java/com/sztzjy/trade/entity/dto/StuTopicDTO.java b/src/main/java/com/sztzjy/trade/entity/dto/StuTopicDTO.java index 6d52695..0d5a727 100644 --- a/src/main/java/com/sztzjy/trade/entity/dto/StuTopicDTO.java +++ b/src/main/java/com/sztzjy/trade/entity/dto/StuTopicDTO.java @@ -1,5 +1,6 @@ package com.sztzjy.trade.entity.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -17,7 +18,6 @@ public class StuTopicDTO { private String topicName; - private Integer optionsOrder; private String optionA; @@ -27,6 +27,16 @@ public class StuTopicDTO { private String optionD; + @ApiModelProperty(notes = "备用选项E") + @ExcelProperty("选项E") + private String optionE; + + @ApiModelProperty(notes = "备用选项F") + private String optionF; + + @ApiModelProperty(notes = "备用选项G") + private String optionG; + @ApiModelProperty("选择的答案") private String studentAnswer; } diff --git a/src/main/java/com/sztzjy/trade/entity/dto/StuTopicDetailsDTO.java b/src/main/java/com/sztzjy/trade/entity/dto/StuTopicDetailsDTO.java new file mode 100644 index 0000000..51d20e0 --- /dev/null +++ b/src/main/java/com/sztzjy/trade/entity/dto/StuTopicDetailsDTO.java @@ -0,0 +1,16 @@ +package com.sztzjy.trade.entity.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @author tz + * @date 2025/1/6 15:16 + */ +@Data +public class StuTopicDetailsDTO { + private String type; + private Integer number; + private List stuTopicDTOS; +} diff --git a/src/main/java/com/sztzjy/trade/mapper/StuProblemInfoMapper.java b/src/main/java/com/sztzjy/trade/mapper/StuProblemInfoMapper.java index a0f67e0..3386474 100644 --- a/src/main/java/com/sztzjy/trade/mapper/StuProblemInfoMapper.java +++ b/src/main/java/com/sztzjy/trade/mapper/StuProblemInfoMapper.java @@ -3,10 +3,8 @@ package com.sztzjy.trade.mapper; import com.sztzjy.trade.entity.StuProblemInfo; import com.sztzjy.trade.entity.StuProblemInfoExample; import java.util.List; - -import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; -@Mapper + public interface StuProblemInfoMapper { long countByExample(StuProblemInfoExample example); @@ -35,7 +33,4 @@ public interface StuProblemInfoMapper { int updateByPrimaryKeyWithBLOBs(StuProblemInfo record); int updateByPrimaryKey(StuProblemInfo record); - - List fuzzyQuery(String keywords, Integer answerStatus, String content); - } \ No newline at end of file diff --git a/src/main/java/com/sztzjy/trade/service/StuHomeworkExamService.java b/src/main/java/com/sztzjy/trade/service/StuHomeworkExamService.java index 71593f1..037a3b8 100644 --- a/src/main/java/com/sztzjy/trade/service/StuHomeworkExamService.java +++ b/src/main/java/com/sztzjy/trade/service/StuHomeworkExamService.java @@ -6,6 +6,7 @@ import com.sztzjy.trade.entity.StuScoreDetailsInfo; import com.sztzjy.trade.entity.dto.*; import java.util.List; +import java.util.Map; /** * @author tz @@ -14,7 +15,7 @@ import java.util.List; public interface StuHomeworkExamService { PageInfo getHomeworks(String userId, String homeworkType, Integer index, Integer size); - List getTopics(String id); + List getTopics(String id, String type); StuScoreDetailsInfoDTO getHomeworkScoreDetails(String id); @@ -23,4 +24,6 @@ public interface StuHomeworkExamService { void submitExamPapers(SubmitExamPapersDTO dto); AttachmentHomeworkDTO getEcho(String id); + + } diff --git a/src/main/java/com/sztzjy/trade/service/StuInteractionService.java b/src/main/java/com/sztzjy/trade/service/StuInteractionService.java index 8614bb3..aa36a7e 100644 --- a/src/main/java/com/sztzjy/trade/service/StuInteractionService.java +++ b/src/main/java/com/sztzjy/trade/service/StuInteractionService.java @@ -1,6 +1,7 @@ package com.sztzjy.trade.service; import com.github.pagehelper.PageInfo; +import com.sztzjy.trade.entity.dto.StuInitiateQuestionDTO; import com.sztzjy.trade.entity.dto.StuReleaseDTO; /** @@ -16,4 +17,7 @@ public interface StuInteractionService { Integer getAnswer(StuReleaseDTO releaseDTO); + Integer initiateQuestion(StuInitiateQuestionDTO questionDTO); + + PageInfo keywordSearch(String userId, String keywords, Integer index, Integer size); } diff --git a/src/main/java/com/sztzjy/trade/service/TchHomeworkExamService.java b/src/main/java/com/sztzjy/trade/service/TchHomeworkExamService.java index 41ead44..c1b2a76 100644 --- a/src/main/java/com/sztzjy/trade/service/TchHomeworkExamService.java +++ b/src/main/java/com/sztzjy/trade/service/TchHomeworkExamService.java @@ -1,7 +1,10 @@ package com.sztzjy.trade.service; import com.github.pagehelper.PageInfo; +import com.sztzjy.trade.entity.StuAchievementInfo; +import com.sztzjy.trade.entity.StuAchievementInfoExample; import com.sztzjy.trade.entity.StuLearningAssessment; +import com.sztzjy.trade.entity.StuPracticalTrainingReport; import com.sztzjy.trade.entity.dto.tch.TchHomeworkExamDTO; import com.sztzjy.trade.entity.dto.tch.TchTopicDetailsDTO; import com.sztzjy.trade.entity.dto.tch.TchTopicTypeDTO; @@ -51,4 +54,7 @@ public interface TchHomeworkExamService { Integer release(String id, String type,Integer state); String upload(MultipartFile file, String userId,String jsonString); + + PageInfo getCurrencyScoreHomework(String schoolId, Integer page, Integer size, String id, String name, String className); + } diff --git a/src/main/java/com/sztzjy/trade/service/TchInteractionService.java b/src/main/java/com/sztzjy/trade/service/TchInteractionService.java index ad65e4a..42a3b1b 100644 --- a/src/main/java/com/sztzjy/trade/service/TchInteractionService.java +++ b/src/main/java/com/sztzjy/trade/service/TchInteractionService.java @@ -22,7 +22,7 @@ public interface TchInteractionService { List getSelect(String schoolId); - PageInfo getAllDiscussions(String userId,Integer index,Integer size); + PageInfo getAllDiscussions(String userId,Integer roleId,Integer index,Integer size); Integer deleteDiscussions(String id); @@ -30,7 +30,7 @@ public interface TchInteractionService { Integer disTchReply(TchReplyDTO tchReplyDTO); - PageInfo getStuQuestioning(String problem, String status, String keywords,Integer index,Integer size); + PageInfo getStuQuestioning(String problem, String status, String keywords,Integer index,Integer size,String schoolId); // List getReply(String id); @@ -40,4 +40,6 @@ public interface TchInteractionService { Integer initiatePut(TchProblemInfo tchProblemInfo); + List getReply(String id); + } diff --git a/src/main/java/com/sztzjy/trade/service/impl/StuDTFServiceImpl.java b/src/main/java/com/sztzjy/trade/service/impl/StuDTFServiceImpl.java index 0da8f61..c0fa36c 100644 --- a/src/main/java/com/sztzjy/trade/service/impl/StuDTFServiceImpl.java +++ b/src/main/java/com/sztzjy/trade/service/impl/StuDTFServiceImpl.java @@ -317,7 +317,12 @@ public class StuDTFServiceImpl implements StuDTFService { if(type.equals("注销数字泰铢")){ stuMultilateralBridge.setCancellationState(1); - //注销时将信息添加到发行业务(上桥) + + } + if(type.equals("反馈信息")){ + stuMultilateralBridge.setFeedbackState(1); + + //反馈时将信息添加到发行业务(上桥) StuIssuanceBusinessUpperBridge upperBridge=new StuIssuanceBusinessUpperBridge(); upperBridge.setId(UUID.randomUUID().toString()); upperBridge.setApplyCentralBank("泰国央行(BOT)"); @@ -326,6 +331,7 @@ public class StuDTFServiceImpl implements StuDTFService { upperBridge.setReceivingBank(stuMultilateralBridge.getReceivingBank()); upperBridge.setExchangeAmount(stuMultilateralBridge.getTransferAmount()); upperBridge.setCurrencyConversion(stuMultilateralBridge.getCurrencyConversion()); + upperBridge.setIssueState(2); upperBridge.setReceiveState(2); upperBridge.setFeedbackState(2); upperBridge.setApplyState(2); @@ -333,9 +339,6 @@ public class StuDTFServiceImpl implements StuDTFService { upperBridgeMapper.insert(upperBridge); } - if(type.equals("反馈信息")){ - stuMultilateralBridge.setFeedbackState(1); - } multilateralBridgeMapper.updateByPrimaryKey(stuMultilateralBridge); } diff --git a/src/main/java/com/sztzjy/trade/service/impl/StuGoodsTradingOrderServiceImpl.java b/src/main/java/com/sztzjy/trade/service/impl/StuGoodsTradingOrderServiceImpl.java index 1cc0a9b..28ba17c 100644 --- a/src/main/java/com/sztzjy/trade/service/impl/StuGoodsTradingOrderServiceImpl.java +++ b/src/main/java/com/sztzjy/trade/service/impl/StuGoodsTradingOrderServiceImpl.java @@ -27,6 +27,7 @@ import org.springframework.web.multipart.MultipartFile; import ws.schild.jave.MultimediaInfo; import ws.schild.jave.MultimediaObject; + import javax.annotation.Resource; import java.io.File; import java.util.*; diff --git a/src/main/java/com/sztzjy/trade/service/impl/StuHomeworkExamServiceImpl.java b/src/main/java/com/sztzjy/trade/service/impl/StuHomeworkExamServiceImpl.java index 44b888d..81fc753 100644 --- a/src/main/java/com/sztzjy/trade/service/impl/StuHomeworkExamServiceImpl.java +++ b/src/main/java/com/sztzjy/trade/service/impl/StuHomeworkExamServiceImpl.java @@ -9,6 +9,7 @@ import com.sztzjy.trade.service.StuHomeworkExamService; import com.sztzjy.trade.util.BigDecimalUtils; import com.sztzjy.trade.util.ConvertUtil; import com.sztzjy.trade.util.PageUtil; +import com.sztzjy.trade.util.compute.ScoringUtil; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; @@ -43,6 +44,8 @@ public class StuHomeworkExamServiceImpl implements StuHomeworkExamService { TchTopicDetailsMapper topicDetailsMapper; @Resource BigDecimalUtils bigDecimalUtils; + @Resource + ScoringUtil scoringUtil; @Override public PageInfo getHomeworks(String userId, String homeworkType, Integer index, Integer size) { @@ -50,9 +53,9 @@ public class StuHomeworkExamServiceImpl implements StuHomeworkExamService { StuUser stuUser = stuUserMapper.selectByPrimaryKey(userId); String className = stuUser.getClassName(); - //根据班级查询该班级作业 + //根据班级查询该班级已发布的作业 TchHomeworkManageExample homeworkManageExample=new TchHomeworkManageExample(); - homeworkManageExample.createCriteria().andHomeworkClassLike("%"+className+"%"); + homeworkManageExample.createCriteria().andHomeworkClassLike("%"+className+"%").andStateEqualTo(1).andHomeworkTypeEqualTo(homeworkType); List tchHomeworkManages = homeworkManageMapper.selectByExample(homeworkManageExample); @@ -82,6 +85,7 @@ public class StuHomeworkExamServiceImpl implements StuHomeworkExamService { achievementInfo.setStartingTime(tchHomeworkManage.getStartingTime()); achievementInfo.setEndTime(tchHomeworkManage.getEndTime()); achievementInfo.setNumberOfAnswer(0); + achievementInfo.setHomeworkType(homeworkType); //取到本次作业的题目总量 if (!tchHomeworkManage.getHomeworkType().equals("附件作业")){ @@ -103,11 +107,9 @@ public class StuHomeworkExamServiceImpl implements StuHomeworkExamService { } @Override - public List getTopics(String id) { + public List getTopics(String id,String type) { StuAchievementInfo achievementInfo = achievementInfoMapper.selectByPrimaryKey(id); - //根据作业ID查询作业详情 - TchHomeworkManage tchHomeworkManage = homeworkManageMapper.selectByPrimaryKey(achievementInfo.getTaskId()); //取到作业开始时间和结束时间 Date startingTime = achievementInfo.getStartingTime(); Date endTime = achievementInfo.getEndTime(); @@ -116,35 +118,114 @@ public class StuHomeworkExamServiceImpl implements StuHomeworkExamService { LocalDateTime startLocalDateTime = LocalDateTime.ofInstant(startingTime.toInstant(), ZoneId.systemDefault()); LocalDateTime endLocalDateTime = LocalDateTime.ofInstant(endTime.toInstant(), ZoneId.systemDefault()); - // 判断本次作业是否已过期 // 获取当前时间 LocalDateTime now = LocalDateTime.now(); + // 判断本次作业是否已过期 + // 检查当前时间是否在作业时间段内 if (now.isBefore(startLocalDateTime) || now.isAfter(endLocalDateTime)) { throw new ServiceException(HttpStatus.ACCEPTED, "当前时间不在题目操作的时间段!"); } - //判断是否已达到最大做题次数 - if(achievementInfo.getNumberOfAnswer()>=tchHomeworkManage.getAnswersFrequency()){ - throw new ServiceException(HttpStatus.ACCEPTED,"已超过最大作答次数"); - } - //取到本次作业的题目id转为集合,查询出题目信息 - String[] split = tchHomeworkManage.getTopicId().split(","); - // 转换数组为List - List list = Arrays.asList(split); - List learningAssessments= learningAssessmentMapper.selectTopicsById(list); - List stuTopicDTOS = convertUtil.entityToDTOList(learningAssessments, StuTopicDTO.class); + //设置题目归类返回map + Map> map=new HashMap<>(); - if(tchHomeworkManage.getTopicNumberState()==1){ //题目乱序 - Collections.shuffle(stuTopicDTOS); - } - for (int i = 0; i < stuTopicDTOS.size(); i++) { - stuTopicDTOS.get(i).setNumber(i); - stuTopicDTOS.get(i).setOptionsOrder(tchHomeworkManage.getOptionNumberState()); + + if(type.equals("作业")){ + //根据作业ID查询作业详情 + TchHomeworkManage tchHomeworkManage = homeworkManageMapper.selectByPrimaryKey(achievementInfo.getTaskId()); + + //判断是否已达到最大做题次数 + if(achievementInfo.getNumberOfAnswer()>=tchHomeworkManage.getAnswersFrequency()){ + throw new ServiceException(HttpStatus.ACCEPTED,"已超过最大作答次数"); + } + + //取到本次作业的题目id转为集合,查询出题目信息 + String[] split = tchHomeworkManage.getTopicId().split(","); + // 转换数组为List + List list = Arrays.asList(split); + List learningAssessments= learningAssessmentMapper.selectTopicsById(list); + + + if(tchHomeworkManage.getTopicNumberState()==1){ //题目乱序 + Collections.shuffle(learningAssessments); + } + + + if(tchHomeworkManage.getOptionNumberState()==1){ //选项乱序 + for (StuLearningAssessment learningAssessment:learningAssessments) { + + //只有单选或者多选乱序 + if(learningAssessment.getTopicType().equals("单选题") || learningAssessment.getTopicType().equals("多选题")){ + + //打乱顺序 + learningAssessment.shuffleOptions(); + } + } + } + List stuTopicDTOS = convertUtil.entityToDTOList(learningAssessments, StuTopicDTO.class); + +// +// for (StuTopicDTO assessment : stuTopicDTOS) { +// String topicType = assessment.getTopicType(); +// // 检查Map中是否已经存在该题型的列表 +// map.putIfAbsent(topicType, new ArrayList<>()); +// // 将当前的StuLearningAssessment添加到对应题型的列表中 +// map.get(topicType).add(assessment); +// } + + + return stuTopicDTOS; + }else { + //根据考试ID查询考试详情 + TchExamManage examManage = examManageMapper.selectByPrimaryKey(achievementInfo.getTaskId()); + + + //判断是否已达到最大做题次数 + if(achievementInfo.getNumberOfAnswer()>=examManage.getAnswersFrequency()){ + throw new ServiceException(HttpStatus.ACCEPTED,"已超过最大作答次数"); + } + + //取到本次作业的题目id转为集合,查询出题目信息 + String[] split = examManage.getTopicId().split(","); + // 转换数组为List + List list = Arrays.asList(split); + List learningAssessments= learningAssessmentMapper.selectTopicsById(list); + + if(examManage.getTopicNumberState()==1){ //题目乱序 + Collections.shuffle(learningAssessments); + } + + if(examManage.getOptionNumberState()==1){ //选项乱序 + for (StuLearningAssessment learningAssessment:learningAssessments) { + + //只有单选或者多选乱序 + if(learningAssessment.getTopicType().equals("单选题") || learningAssessment.getTopicType().equals("多选题")){ + + //打乱顺序 + learningAssessment.shuffleOptions(); + } + } + } + + List stuTopicDTOS = convertUtil.entityToDTOList(learningAssessments, StuTopicDTO.class); + +// for (StuTopicDTO assessment : stuTopicDTOS) { +// String topicType = assessment.getTopicType(); +// // 检查Map中是否已经存在该题型的列表 +// map.putIfAbsent(topicType, new ArrayList<>()); +// // 将当前的StuLearningAssessment添加到对应题型的列表中 +// map.get(type).add(assessment); +// } + + + return stuTopicDTOS; } - return stuTopicDTOS; + + + } @Override @@ -224,7 +305,7 @@ public class StuHomeworkExamServiceImpl implements StuHomeworkExamService { TchExamManage tchExamManage=new TchExamManage(); List learningAssessments=new ArrayList<>(); //判断本次交卷为题库作业还是考试 - if(dto.getType().equals("题库作业")){ + if(dto.getType().equals("作业")){ tchHomeworkManage = homeworkManageMapper.selectByPrimaryKey(achievementInfo.getTaskId()); //作业信息管理 //取到本次作业的题目id转为集合,查询出题目信息 String[] split = tchHomeworkManage.getTopicId().split(","); @@ -282,7 +363,7 @@ public class StuHomeworkExamServiceImpl implements StuHomeworkExamService { if (stuLearningAssessment.getTopicId().equals(stuTopicDTO.getTopicId())) { //取出该题目对应的题型的分值和答案进行比较 - if (stuLearningAssessment.getAnswer().equals(stuTopicDTO.getStudentAnswer())) { + if (scoringUtil.handInAPaper(stuLearningAssessment,stuTopicDTO)) { detailsInfo.setState("正确"); for (int k = 0; k < tchTopicDetails.size(); k++) { @@ -310,7 +391,7 @@ public class StuHomeworkExamServiceImpl implements StuHomeworkExamService { double average=0; double passRate=0; - if(dto.getType().equals("题库作业")){ + if(dto.getType().equals("作业")){ //更新作业管理信息表 Integer totalPeople = tchHomeworkManage.getTotalPeople(); totalPeople++; //已提交人数+1 @@ -397,7 +478,7 @@ public class StuHomeworkExamServiceImpl implements StuHomeworkExamService { StuScoreDetailsInfo detailsInfo = stuScoreDetailsInfos.get(l); detailsInfo.setMySelect(stuTopicDTO.getStudentAnswer()); - if (stuLearningAssessment.getAnswer().equals(stuTopicDTO.getStudentAnswer())) { //比较答案 + if (scoringUtil.handInAPaper(stuLearningAssessment,stuTopicDTO)) { //比较答案 if (detailsInfo.getTopicId().equals(stuTopicDTO.getTopicId())) { //表示为同一题再进行更新信息 for (int k = 0; k < tchTopicDetails.size(); k++) { @@ -427,7 +508,7 @@ public class StuHomeworkExamServiceImpl implements StuHomeworkExamService { double average=0; double passRate=0; - if(dto.getType().equals("题库作业")){ + if(dto.getType().equals("作业")){ //更新作业管理信息表 Integer totalPeople = tchHomeworkManage.getTotalPeople(); BigDecimal tatalScore = tchHomeworkManage.getTatalScore(); @@ -521,4 +602,6 @@ public class StuHomeworkExamServiceImpl implements StuHomeworkExamService { dto.setHomeworkAsk(tchHomeworkManage.getHomeworkAsk()); return dto; } + + } diff --git a/src/main/java/com/sztzjy/trade/service/impl/StuInteractionServiceImpl.java b/src/main/java/com/sztzjy/trade/service/impl/StuInteractionServiceImpl.java index b6936bb..6a6b3ec 100644 --- a/src/main/java/com/sztzjy/trade/service/impl/StuInteractionServiceImpl.java +++ b/src/main/java/com/sztzjy/trade/service/impl/StuInteractionServiceImpl.java @@ -2,17 +2,21 @@ package com.sztzjy.trade.service.impl; import com.github.pagehelper.PageInfo; import com.sztzjy.trade.entity.*; +import com.sztzjy.trade.entity.dto.StuInitiateQuestionDTO; +import com.sztzjy.trade.entity.dto.StuProblemInfoDTO; import com.sztzjy.trade.entity.dto.StuReleaseDTO; import com.sztzjy.trade.mapper.StuProblemInfoMapper; import com.sztzjy.trade.mapper.StuUserMapper; import com.sztzjy.trade.mapper.TchDiscussManageMapper; import com.sztzjy.trade.mapper.TchProblemInfoMapper; import com.sztzjy.trade.service.StuInteractionService; +import com.sztzjy.trade.service.TchInteractionService; import com.sztzjy.trade.util.PageUtil; import org.apache.poi.ss.formula.functions.T; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.UUID; @@ -31,6 +35,9 @@ public class StuInteractionServiceImpl implements StuInteractionService { StuProblemInfoMapper stuProblemInfoMapper; @Resource TchProblemInfoMapper tchProblemInfoMapper; + + @Resource + TchInteractionService tchInteractionService; @Override public Integer publish(StuReleaseDTO releaseDTO) { //根据userId查询发布者姓名 @@ -44,7 +51,7 @@ public class StuInteractionServiceImpl implements StuInteractionService { tchDiscussManage.setChatContent(releaseDTO.getChatContent()); tchDiscussManage.setUserId(releaseDTO.getUserId()); tchDiscussManage.setName(name); - tchDiscussManage.setSchoolId(stuUser.getSchoolId()); + @@ -64,7 +71,9 @@ public class StuInteractionServiceImpl implements StuInteractionService { @Override public PageInfo getStuQuestioning(String problem, String status, String keywords, String userId, Integer index, Integer size) { Integer answerStatus=null; - if(!status.isEmpty()){ + + + if(status!=null){ if(status.equals("待回答")){ answerStatus=0; } @@ -77,17 +86,23 @@ public class StuInteractionServiceImpl implements StuInteractionService { StuProblemInfoExample.Criteria criteria = problemInfoExample.createCriteria(); criteria.andUserIdEqualTo(userId); - if (!problem.isEmpty()) { + if (problem!=null) { criteria.andContentLike("%" + problem + "%"); } if (answerStatus!=null) { criteria.andAnswerStatusEqualTo(answerStatus); } - if (!keywords.isEmpty()) { + if (keywords!=null) { criteria.andKeywordsEqualTo(keywords); } List stuProblemInfos = stuProblemInfoMapper.selectByExampleWithBLOBs(problemInfoExample); + for (StuProblemInfo stuProblemInfo:stuProblemInfos) { + //查询老师回复 + List reply = tchInteractionService.getReply(stuProblemInfo.getId()); + stuProblemInfo.setReplyList(reply); + } + return PageUtil.pageHelper(stuProblemInfos,index,size); } @@ -106,4 +121,37 @@ public class StuInteractionServiceImpl implements StuInteractionService { return tchProblemInfoMapper.updateByPrimaryKeyWithBLOBs(tchProblemInfo); } + + @Override + public Integer initiateQuestion(StuInitiateQuestionDTO questionDTO) { + StuUser stuUser = stuUserMapper.selectByPrimaryKey(questionDTO.getUserId()); + + StuProblemInfo stuProblemInfo=new StuProblemInfo(); + stuProblemInfo.setId(UUID.randomUUID().toString()); + stuProblemInfo.setName(stuUser.getName()); + stuProblemInfo.setContent(questionDTO.getContent()); + stuProblemInfo.setKeywords(String.join(",",questionDTO.getKeywords())); + stuProblemInfo.setQuestionTime(new Date()); + stuProblemInfo.setAnswerStatus(0); + stuProblemInfo.setUserId(questionDTO.getUserId()); + stuProblemInfo.setShcoolId(stuUser.getSchoolId()); + + return stuProblemInfoMapper.insert(stuProblemInfo); + } + + @Override + public PageInfo keywordSearch(String userId, String keywords, Integer index, Integer size) { + StuProblemInfoExample problemInfoExample = new StuProblemInfoExample(); + StuProblemInfoExample.Criteria criteria = problemInfoExample.createCriteria(); + + criteria.andUserIdEqualTo(userId); + + if (!keywords.isEmpty()) { + criteria.andKeywordsEqualTo(keywords); + } + List stuProblemInfos = stuProblemInfoMapper.selectByExampleWithBLOBs(problemInfoExample); + + + return PageUtil.pageHelper(stuProblemInfos,index,size); + } } diff --git a/src/main/java/com/sztzjy/trade/service/impl/TchHomeworkExamServiceImpl.java b/src/main/java/com/sztzjy/trade/service/impl/TchHomeworkExamServiceImpl.java index 7017180..bb116ff 100644 --- a/src/main/java/com/sztzjy/trade/service/impl/TchHomeworkExamServiceImpl.java +++ b/src/main/java/com/sztzjy/trade/service/impl/TchHomeworkExamServiceImpl.java @@ -27,6 +27,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.util.Assert; +import org.springframework.util.StringUtils; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; @@ -157,6 +158,9 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService { homeworkManage.setUserId(homeworkExamDTO.getUserId()); homeworkManage.setHomeworkAnnex(homeworkExamDTO.getUrl()); homeworkManage.setCreateTime(new Date()); + homeworkManage.setTotalPeople(0); + homeworkManage.setTatalScore(new BigDecimal(0)); + homeworkManage.setNumberPassers(0); return homeworkManageMapper.insert(homeworkManage); @@ -620,10 +624,10 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService { StuAchievementInfoExample achievementInfoExample=new StuAchievementInfoExample(); StuAchievementInfoExample.Criteria criteria = achievementInfoExample.createCriteria(); - if(!className.isEmpty()){ + if(className!=null && !className.isEmpty()){ criteria.andClassNameEqualTo(className); } - if(!stuIdOrName.isEmpty()){ + if(stuIdOrName!=null && !stuIdOrName.isEmpty()){ criteria.andStudentIdEqualTo(stuIdOrName); criteria.andNameEqualTo(stuIdOrName); } @@ -672,7 +676,7 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService { StuScoreDetailsInfoExample stuScoreDetailsInfoExample=new StuScoreDetailsInfoExample(); StuScoreDetailsInfoExample.Criteria criteria = stuScoreDetailsInfoExample.createCriteria(); criteria.andTaskIdEqualTo(id); - if(!studentId.isEmpty()){ + if(studentId!=null){ criteria.andStudentIdEqualTo(studentId); } @@ -819,6 +823,36 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService { } } + @Override + public PageInfo getCurrencyScoreHomework(String schoolId, Integer page, Integer size, String id, String name, String className) { + StuAchievementInfoExample example = new StuAchievementInfoExample(); + example.setOrderByClause("score desc"); + + StuAchievementInfoExample.Criteria criteria = example.createCriteria(); + criteria.andSchoolIdEqualTo(schoolId); + criteria.andTaskIdEqualTo(id); + if (StringUtils.hasText(className)){ + criteria.andClassNameEqualTo(className); + } + if (StringUtils.hasText(name)){ + criteria.andNameLike("%"+name+"%"); + } + if (StringUtils.hasText(name)){ + criteria.andStudentIdLike("%"+name+"%"); + } + + List achievementInfos = achievementInfoMapper.selectByExample(example); + if (achievementInfos.isEmpty()) + { + return new PageInfo<>(Collections.EMPTY_LIST); + } + + + return PageUtil.pageHelper(achievementInfos,page,size); + } + + + /** * 获取文件后缀 diff --git a/src/main/java/com/sztzjy/trade/service/impl/TchInteractionImpl.java b/src/main/java/com/sztzjy/trade/service/impl/TchInteractionImpl.java index a2fc8fe..f3add62 100644 --- a/src/main/java/com/sztzjy/trade/service/impl/TchInteractionImpl.java +++ b/src/main/java/com/sztzjy/trade/service/impl/TchInteractionImpl.java @@ -76,6 +76,8 @@ public class TchInteractionImpl implements TchInteractionService { String discussId = tchDiscussManage.getId(); TchDiscussManageExample tchDiscussManageExample=new TchDiscussManageExample(); tchDiscussManageExample.createCriteria().andDiscussIdEqualTo(discussId); + + tchDiscussManageExample.setOrderByClause("create_time asc"); List tchDiscussManageList = discussManageMapper.selectByExampleWithBLOBs(tchDiscussManageExample); if(!tchDiscussManageList.isEmpty()){ @@ -88,6 +90,8 @@ public class TchInteractionImpl implements TchInteractionService { TchReplyManageExample replyManageExample=new TchReplyManageExample(); replyManageExample.createCriteria().andReplyIdEqualTo(id); + + replyManageExample.setOrderByClause("tch_reply_time asc"); List tchReplyManages = replyManageMapper.selectByExampleWithBLOBs(replyManageExample); List tchReplyInfoDTOS = convertUtil.entityToDTOList(tchReplyManages, TchReplyInfoDTO.class); @@ -132,12 +136,21 @@ public class TchInteractionImpl implements TchInteractionService { } @Override - public PageInfo getAllDiscussions(String userId,Integer index,Integer size) { + public PageInfo getAllDiscussions(String userId,Integer roleId,Integer index,Integer size) { // TODO: 2024/8/15 1、查询已发布的讨论信息,2、获取讨论ID,查询所有学生回复的讨论信息,3、根据学生回复的讨论ID查询老师的回复 + StuUser stuUser = stuUserMapper.selectByPrimaryKey(userId); + - //1、查询已发布的讨论信息 TchDiscussManageExample discussManageExample = new TchDiscussManageExample(); - discussManageExample.createCriteria().andUserIdEqualTo(userId); + + //1、查询已发布的讨论信息,判断用户为学生还是老师,学生:查询该学校所有老师发布的讨论。老师:查询该老师发布的讨论 + + if(roleId==3){ //老师 + discussManageExample.createCriteria().andUserIdEqualTo(userId); + }else { //学生 + discussManageExample.createCriteria().andSchoolIdEqualTo(stuUser.getSchoolId()); + } + discussManageExample.setOrderByClause("create_time DESC"); List tchDiscussManages = discussManageMapper.selectByExampleWithBLOBs(discussManageExample); @@ -249,7 +262,7 @@ public class TchInteractionImpl implements TchInteractionService { } @Override - public PageInfo getStuQuestioning(String problem, String status, String keywords,Integer index,Integer size) { + public PageInfo getStuQuestioning(String problem, String status, String keywords,Integer index,Integer size,String schoolId) { // problem="%"+problem+"%"; @@ -275,8 +288,10 @@ public class TchInteractionImpl implements TchInteractionService { if (keywords!=null) { criteria.andKeywordsEqualTo(keywords); } + criteria.andShcoolIdEqualTo(schoolId); List stuProblemInfos = stuProblemInfoMapper.selectByExampleWithBLOBs(problemInfoExample); + //查询老师回复 for (StuProblemInfo stuProblemInfo:stuProblemInfos) { List reply = this.getReply(stuProblemInfo.getId()); stuProblemInfo.setReplyList(reply); diff --git a/src/main/java/com/sztzjy/trade/util/compute/ScoringUtil.java b/src/main/java/com/sztzjy/trade/util/compute/ScoringUtil.java index 2ace6bf..11c86fb 100644 --- a/src/main/java/com/sztzjy/trade/util/compute/ScoringUtil.java +++ b/src/main/java/com/sztzjy/trade/util/compute/ScoringUtil.java @@ -1,9 +1,14 @@ package com.sztzjy.trade.util.compute; +import com.sztzjy.trade.entity.StuLearningAssessment; +import com.sztzjy.trade.entity.dto.StuTopicDTO; import com.sztzjy.trade.util.BigDecimalUtils; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.lang.reflect.Array; +import java.util.*; +import java.util.stream.Collectors; /** * @author tz @@ -84,5 +89,92 @@ public class ScoringUtil { } return fraction; } + + + /** + * 交卷判断正误 + * @param stuLearningAssessment + * @param stuTopicDTO + * @return + */ + public boolean handInAPaper(StuLearningAssessment stuLearningAssessment, StuTopicDTO stuTopicDTO){ + //由于学生做题的选项被打乱,必须根据选项取到答案来判断学生的选择是否正确 + + + //取出正确答案和学生选择的答案 + String answer = stuLearningAssessment.getAnswer(); + String studentAnswer = stuTopicDTO.getStudentAnswer(); + + //如果是判断题则直接比较答案即可 + if(stuTopicDTO.getTopicType().equals("判断题")){ + return answer.equals(studentAnswer); + }else { + //根据学生选择的选项取出答案和正确答案的选项取出的答案对比 + + //正确答案 + List answerList = Arrays.stream(answer.split(",")) + .map(String::trim) // 去除可能的空格 + .collect(Collectors.toList()); + + List answers=new ArrayList<>(); + for (String s : answerList) { + if(s.equals("A")){ + answers.add(stuLearningAssessment.getOptionA()); + } + if(s.equals("B")){ + answers.add(stuLearningAssessment.getOptionB()); + } + if(s.equals("C")){ + answers.add(stuLearningAssessment.getOptionC()); + } + if(s.equals("D")){ + answers.add(stuLearningAssessment.getOptionD()); + } + if(s.equals("E")){ + answers.add(stuLearningAssessment.getOptionE()); + } + if(s.equals("F")){ + answers.add(stuLearningAssessment.getOptionF()); + } + } + + + //正确答案 + List studentAnswerList = Arrays.stream(studentAnswer.split(",")) + .map(String::trim) // 去除可能的空格 + .collect(Collectors.toList()); + + List studentAnswers=new ArrayList<>(); + for (String s : studentAnswerList) { + if(s.equals("A")){ + studentAnswers.add(stuTopicDTO.getOptionA()); + } + if(s.equals("B")){ + studentAnswers.add(stuTopicDTO.getOptionB()); + } + if(s.equals("C")){ + studentAnswers.add(stuTopicDTO.getOptionC()); + } + if(s.equals("D")){ + studentAnswers.add(stuTopicDTO.getOptionD()); + } + if(s.equals("E")){ + studentAnswers.add(stuTopicDTO.getOptionE()); + } + if(s.equals("F")){ + studentAnswers.add(stuTopicDTO.getOptionF()); + } + } + + //再比较答案 + //比较两个列表的内容是否相同(不关心顺序) + Set set1 = new HashSet<>(answers); + Set set2 = new HashSet<>(studentAnswers); + + return set1.equals(set2); + + } + + } } diff --git a/src/main/resources/mappers/StuAchievementInfoMapper.xml b/src/main/resources/mappers/StuAchievementInfoMapper.xml index 61be32b..070a367 100644 --- a/src/main/resources/mappers/StuAchievementInfoMapper.xml +++ b/src/main/resources/mappers/StuAchievementInfoMapper.xml @@ -24,6 +24,8 @@ + + @@ -86,7 +88,8 @@ id, name, student_id, class_name, score, completion_time, answer_number, answer_incorrectly_number, accuracy, score_grades, user_id, task_id, average_score, state, pass_rate, homework_annex, - starting_time, end_time, teacher_comments, number_of_answer, total_questions, stu_homework_annex + starting_time, end_time, teacher_comments, number_of_answer, total_questions, stu_homework_annex, + school_id, homework_type @@ -350,6 +367,12 @@ stu_homework_annex = #{record.stuHomeworkAnnex,jdbcType=VARCHAR}, + + school_id = #{record.schoolId,jdbcType=VARCHAR}, + + + homework_type = #{record.homeworkType,jdbcType=VARCHAR}, + @@ -378,7 +401,9 @@ teacher_comments = #{record.teacherComments,jdbcType=VARCHAR}, number_of_answer = #{record.numberOfAnswer,jdbcType=INTEGER}, total_questions = #{record.totalQuestions,jdbcType=INTEGER}, - stu_homework_annex = #{record.stuHomeworkAnnex,jdbcType=VARCHAR} + stu_homework_annex = #{record.stuHomeworkAnnex,jdbcType=VARCHAR}, + school_id = #{record.schoolId,jdbcType=VARCHAR}, + homework_type = #{record.homeworkType,jdbcType=VARCHAR} @@ -449,6 +474,12 @@ stu_homework_annex = #{stuHomeworkAnnex,jdbcType=VARCHAR}, + + school_id = #{schoolId,jdbcType=VARCHAR}, + + + homework_type = #{homeworkType,jdbcType=VARCHAR}, + where id = #{id,jdbcType=VARCHAR} @@ -474,7 +505,9 @@ teacher_comments = #{teacherComments,jdbcType=VARCHAR}, number_of_answer = #{numberOfAnswer,jdbcType=INTEGER}, total_questions = #{totalQuestions,jdbcType=INTEGER}, - stu_homework_annex = #{stuHomeworkAnnex,jdbcType=VARCHAR} + stu_homework_annex = #{stuHomeworkAnnex,jdbcType=VARCHAR}, + school_id = #{schoolId,jdbcType=VARCHAR}, + homework_type = #{homeworkType,jdbcType=VARCHAR} where id = #{id,jdbcType=VARCHAR} \ No newline at end of file diff --git a/src/main/resources/mappers/StuProblemInfoMapper.xml b/src/main/resources/mappers/StuProblemInfoMapper.xml index b936583..36150b2 100644 --- a/src/main/resources/mappers/StuProblemInfoMapper.xml +++ b/src/main/resources/mappers/StuProblemInfoMapper.xml @@ -8,6 +8,7 @@ + @@ -71,7 +72,7 @@ - id, name, keywords, question_time, user_id, answer_status + id, name, keywords, question_time, user_id, answer_status, shcool_id content @@ -127,10 +128,10 @@ insert into stu_problem_info (id, name, keywords, question_time, user_id, answer_status, - content) + shcool_id, content) values (#{id,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{keywords,jdbcType=VARCHAR}, #{questionTime,jdbcType=TIMESTAMP}, #{userId,jdbcType=VARCHAR}, #{answerStatus,jdbcType=INTEGER}, - #{content,jdbcType=LONGVARCHAR}) + #{shcoolId,jdbcType=VARCHAR}, #{content,jdbcType=LONGVARCHAR}) insert into stu_problem_info @@ -153,6 +154,9 @@ answer_status, + + shcool_id, + content, @@ -176,6 +180,9 @@ #{answerStatus,jdbcType=INTEGER}, + + #{shcoolId,jdbcType=VARCHAR}, + #{content,jdbcType=LONGVARCHAR}, @@ -208,6 +215,9 @@ answer_status = #{record.answerStatus,jdbcType=INTEGER}, + + shcool_id = #{record.shcoolId,jdbcType=VARCHAR}, + content = #{record.content,jdbcType=LONGVARCHAR}, @@ -224,6 +234,7 @@ question_time = #{record.questionTime,jdbcType=TIMESTAMP}, user_id = #{record.userId,jdbcType=VARCHAR}, answer_status = #{record.answerStatus,jdbcType=INTEGER}, + shcool_id = #{record.shcoolId,jdbcType=VARCHAR}, content = #{record.content,jdbcType=LONGVARCHAR} @@ -236,7 +247,8 @@ keywords = #{record.keywords,jdbcType=VARCHAR}, question_time = #{record.questionTime,jdbcType=TIMESTAMP}, user_id = #{record.userId,jdbcType=VARCHAR}, - answer_status = #{record.answerStatus,jdbcType=INTEGER} + answer_status = #{record.answerStatus,jdbcType=INTEGER}, + shcool_id = #{record.shcoolId,jdbcType=VARCHAR} @@ -259,6 +271,9 @@ answer_status = #{answerStatus,jdbcType=INTEGER}, + + shcool_id = #{shcoolId,jdbcType=VARCHAR}, + content = #{content,jdbcType=LONGVARCHAR}, @@ -272,6 +287,7 @@ question_time = #{questionTime,jdbcType=TIMESTAMP}, user_id = #{userId,jdbcType=VARCHAR}, answer_status = #{answerStatus,jdbcType=INTEGER}, + shcool_id = #{shcoolId,jdbcType=VARCHAR}, content = #{content,jdbcType=LONGVARCHAR} where id = #{id,jdbcType=VARCHAR} @@ -281,20 +297,8 @@ keywords = #{keywords,jdbcType=VARCHAR}, question_time = #{questionTime,jdbcType=TIMESTAMP}, user_id = #{userId,jdbcType=VARCHAR}, - answer_status = #{answerStatus,jdbcType=INTEGER} + answer_status = #{answerStatus,jdbcType=INTEGER}, + shcool_id = #{shcoolId,jdbcType=VARCHAR} where id = #{id,jdbcType=VARCHAR} - \ No newline at end of file diff --git a/src/main/resources/mappers/StuScoreDetailsInfoMapper.xml b/src/main/resources/mappers/StuScoreDetailsInfoMapper.xml index 59f749c..0ff8026 100644 --- a/src/main/resources/mappers/StuScoreDetailsInfoMapper.xml +++ b/src/main/resources/mappers/StuScoreDetailsInfoMapper.xml @@ -369,12 +369,12 @@ END - INSERT INTO stu_score_details_info (id, name, student_id, class_name, stem, question_type, my_select,answer,state,,score,user_id,score_grades,task_id,topic_score,topic_id) + INSERT INTO stu_score_details_info (id, name, student_id, class_name, stem, question_type, my_select,answer,state,user_id,score_grades,task_id,topic_score,topic_id) VALUES (#{scoreDetailsInfo.id}, #{scoreDetailsInfo.name}, #{scoreDetailsInfo.studentId}, #{scoreDetailsInfo.className}, #{scoreDetailsInfo.stem}, #{scoreDetailsInfo.questionType}, #{scoreDetailsInfo.mySelect}, #{scoreDetailsInfo.answer},#{scoreDetailsInfo.state}, - #{scoreDetailsInfo.score}, #{scoreDetailsInfo.userId}, #{scoreDetailsInfo.scoreGrades},#{scoreDetailsInfo.taskId}, + #{scoreDetailsInfo.userId}, #{scoreDetailsInfo.scoreGrades},#{scoreDetailsInfo.taskId}, #{scoreDetailsInfo.topicScore}, #{scoreDetailsInfo.topicId})