From 362b6e28c5e412bf0b0a3cd8988c3afd788b77c6 Mon Sep 17 00:00:00 2001 From: Mlxa0324 <mlx950324@163.com> Date: Mon, 27 Feb 2023 10:14:33 +0800 Subject: [PATCH] =?UTF-8?q?=E9=94=99=E9=A2=98=E5=BA=93=E6=94=B6=E8=97=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ibeetl/jlw/entity/GeneralQuestionLog.java | 4 ++ .../entity/TeacherOpenCourseQuestionLog.java | 4 ++ .../TeacherOpenCourseQuestionLogWrong.java | 4 +- .../GeneralQuestionSettingService.java | 2 + .../TeacherOpenCourseQuestionLogService.java | 56 +++++++++++++++++++ ...cherOpenCourseQuestionLogWrongService.java | 33 +++++++++++ ...acherOpenCourseQuestionSettingService.java | 33 ++++++++--- ...eacherOpenCourseQuestionLogController.java | 13 ++++- ...rOpenCourseQuestionLogWrongController.java | 1 + 9 files changed, 139 insertions(+), 11 deletions(-) diff --git a/web/src/main/java/com/ibeetl/jlw/entity/GeneralQuestionLog.java b/web/src/main/java/com/ibeetl/jlw/entity/GeneralQuestionLog.java index bd36232c..ff76c0f1 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/GeneralQuestionLog.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/GeneralQuestionLog.java @@ -195,4 +195,8 @@ public class GeneralQuestionLog extends BaseEntity{ public Integer getErrorCount() { return Integer.valueOf(defaultIfNull(this.get("errorCount"), "0").toString()); } + + public void clearAnswer() { + this.setQuestionAnswer(null); + } } diff --git a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionLog.java b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionLog.java index 73b5a02e..8dbbbd09 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionLog.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionLog.java @@ -180,6 +180,10 @@ public class TeacherOpenCourseQuestionLog extends BaseEntity { this.setTeacherOpenCourseQuestionLogFinishTime(null); } + public void clearAnswer() { + this.setQuestionAnswer(null); + } + /** * 功能描述: <br> * 设置做对的正确数量 diff --git a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionLogWrong.java b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionLogWrong.java index 9756dcd2..eb664203 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionLogWrong.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionLogWrong.java @@ -344,6 +344,8 @@ public class TeacherOpenCourseQuestionLogWrong extends BaseEntity{ public void setUserId(Long userId){ this.userId = userId; } - + public void clearAnswer() { + this.setQuestionAnswer(null); + } } diff --git a/web/src/main/java/com/ibeetl/jlw/service/GeneralQuestionSettingService.java b/web/src/main/java/com/ibeetl/jlw/service/GeneralQuestionSettingService.java index 7029e5f9..a38920c3 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/GeneralQuestionSettingService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/GeneralQuestionSettingService.java @@ -714,6 +714,8 @@ public class GeneralQuestionSettingService extends CoreBaseService<GeneralQuesti logQuery.setGeneralQuestionSettingId(questionSettingId); List<GeneralQuestionLog> list = generalQuestionLogService.getValuesByQueryNotWithPermission(logQuery); + list.forEach(GeneralQuestionLog::clearAnswer); + if (ObjectUtil.isNotEmpty(list)) { return BeanUtil.copyToList(list, GeneralResourcesQuestionSnapshot.class); } diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionLogService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionLogService.java index 9c92d976..9170917a 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionLogService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionLogService.java @@ -31,6 +31,8 @@ import com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum; import com.ibeetl.jlw.web.query.QuestionLogSummaryQuery; import com.ibeetl.jlw.web.query.TeacherOpenCourseQuestionLogQuery; import com.ibeetl.jlw.web.query.TeacherOpenCourseQuestionSettingQuery; +import lombok.AllArgsConstructor; +import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.beetl.sql.core.SqlId; @@ -1168,4 +1170,58 @@ public class TeacherOpenCourseQuestionLogService extends CoreBaseService<Teacher return BeanUtil.copyProperties(log, FileQuestionLogListVO.class); } + + /** + * 获取收藏夹和错题库的答案 + * + * @param questionLogId + * @return + */ + public TuckOrErrorListQuestionAnswer getTuckOrErrorListQuestionAnswer(Long questionLogId) { + TeacherOpenCourseQuestionLogQuery logQuery = new TeacherOpenCourseQuestionLogQuery(); + logQuery.setTeacherOpenCourseQuestionLogId(questionLogId); + logQuery.setQuestionLogAddType(FINALLY_SUBMIT); + List<TeacherOpenCourseQuestionLog> logList = getValuesByQueryNotWithPermission(logQuery); + + Optional<TeacherOpenCourseQuestionLog> optional = logList.stream().filter(item -> item.getIsTuck() || item.getIsErrorFavorite()).findFirst(); + TeacherOpenCourseQuestionLog questionLog = optional.get(); + + if (questionLog != null) { + return new TuckOrErrorListQuestionAnswer(questionLog.getQuestionAnswer(), questionLog.getQuestionAnalysis()); + } + + return null; + } + + /** + * 题目日志的答案和题目解析 + */ + @Data + @AllArgsConstructor + protected class TuckOrErrorListQuestionAnswer { + private String questionAnswer; + private String questionAnalysis; + } + + /** + * 通过学生ID和错题库列表,查询做题日志的列表 + * + * @param logWrongList 错题列表 + * @param studentId 学生ID + * @return + */ + public List<TeacherOpenCourseQuestionLog> getQuestionLogByLogWrongList(List<TeacherOpenCourseQuestionLogWrong> logWrongList, Long studentId) { + if (CollectionUtil.isEmpty(logWrongList)) { + return Collections.emptyList(); + } + + final String questionSnapshotIds = listJoin(logWrongList, TeacherOpenCourseQuestionLogWrong::getResourcesQuestionSnapshotId); + final String questionSettingIds = listJoin(logWrongList, TeacherOpenCourseQuestionLogWrong::getTeacherOpenCourseQuestionSettingId); + + TeacherOpenCourseQuestionLogQuery logQuery = new TeacherOpenCourseQuestionLogQuery(); + logQuery.setResourcesQuestionSnapshotIdPlural(questionSnapshotIds); + logQuery.setTeacherOpenCourseQuestionSettingIdPlural(questionSettingIds); + logQuery.setStudentId(studentId); + return getValuesByQueryNotWithPermission(logQuery); + } } diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionLogWrongService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionLogWrongService.java index 03eae7ad..157a918d 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionLogWrongService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionLogWrongService.java @@ -13,6 +13,7 @@ import com.ibeetl.admin.core.web.JsonResult; import com.ibeetl.admin.core.web.JsonReturnCode; import com.ibeetl.jlw.dao.TeacherOpenCourseQuestionLogWrongDao; import com.ibeetl.jlw.entity.FileEntity; +import com.ibeetl.jlw.entity.Student; import com.ibeetl.jlw.entity.TeacherOpenCourseQuestionLog; import com.ibeetl.jlw.entity.TeacherOpenCourseQuestionLogWrong; import com.ibeetl.jlw.web.query.TeacherOpenCourseQuestionLogWrongQuery; @@ -26,6 +27,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.beetl.sql.core.SqlId; import org.beetl.sql.core.engine.PageQuery; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -36,6 +38,7 @@ import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; +import static cn.jlw.util.CacheUserUtil.getStudent; import static com.ibeetl.admin.core.util.ExcelUtil.getCellFormatValue; import static java.util.stream.Collectors.joining; @@ -48,9 +51,12 @@ import static java.util.stream.Collectors.joining; @Transactional @Validated @Slf4j +@Deprecated public class TeacherOpenCourseQuestionLogWrongService extends CoreBaseService<TeacherOpenCourseQuestionLogWrong> implements DeleteResourcesBy{ @Autowired private TeacherOpenCourseQuestionLogWrongDao teacherOpenCourseQuestionLogWrongDao; + @Autowired @Lazy + private TeacherOpenCourseQuestionLogService teacherOpenCourseQuestionLogService; public PageQuery<TeacherOpenCourseQuestionLogWrong>queryByCondition(PageQuery query){ PageQuery ret = teacherOpenCourseQuestionLogWrongDao.queryByCondition(query); @@ -83,6 +89,33 @@ public class TeacherOpenCourseQuestionLogWrongService extends CoreBaseService<Te } } + /** + * 根据当前登录的学生身份,修改日志中的错题标记 + * @param ids + */ + public void deleteTeacherOpenCourseQuestionLogWrongWithStudent(String ids) { + + deleteTeacherOpenCourseQuestionLogWrong(ids); + Student student = getStudent(); + + // 不是学生身份,不操作做题日志数据 + if (student != null) { + List<TeacherOpenCourseQuestionLogWrong> logWrongList = teacherOpenCourseQuestionLogWrongDao.selectByIds(Arrays.asList(ids.split(","))); + List<TeacherOpenCourseQuestionLog> questionLogList = teacherOpenCourseQuestionLogService.getQuestionLogByLogWrongList(logWrongList, student.getStudentId()); + + if (CollectionUtil.isNotEmpty(questionLogList)) { + // 修改做题日志的错题状态 + List<TeacherOpenCourseQuestionLog> updateLogPOList = questionLogList.stream().map(item -> { + TeacherOpenCourseQuestionLog questionLog = new TeacherOpenCourseQuestionLog(); + questionLog.setTeacherOpenCourseQuestionLogId(item.getTeacherOpenCourseQuestionLogId()); + questionLog.setIsErrorFavorite(false); + return questionLog; + }).collect(Collectors.toList()); + teacherOpenCourseQuestionLogService.upsertBatchByTemplate(updateLogPOList); + } + } + } + /** * 根据题目配置ID 批量真删除 * @param settingIds diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionSettingService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionSettingService.java index 36e5764e..1cc6042b 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionSettingService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionSettingService.java @@ -900,7 +900,7 @@ public class TeacherOpenCourseQuestionSettingService extends CoreBaseService<Tea * @Author: 87966 * @Date: 2022/12/1 9:27 */ - public List<ResourcesQuestionSnapshot> questionDetailTest(@NotNull(message = "题目配置ID不能为空!") Long questionSettingId, + public List<TeacherOpenCourseQuestionLog> questionDetailTest(@NotNull(message = "题目配置ID不能为空!") Long questionSettingId, @NotNull(message = "练习类型不能为空!") TuckOrErrorEnum tuckOrError, @NotNull(message = "改接口只能学生访问") Student student) { final Long studentId = student.getStudentId(); @@ -915,28 +915,45 @@ public class TeacherOpenCourseQuestionSettingService extends CoreBaseService<Tea logQuery.setQuestionLogAddType(FINALLY_SUBMIT); List<TeacherOpenCourseQuestionLog> list = teacherOpenCourseQuestionLogService.getValuesByQueryNotWithPermission(logQuery); + list.forEach(TeacherOpenCourseQuestionLog::clearAnswer); + if (ObjectUtil.isNotEmpty(list)) { - return BeanUtil.copyToList(list, ResourcesQuestionSnapshot.class); + return list; } } // 错题库,本来是一张表管理的。 else if(ERROR_TEST.equals(tuckOrError)) { // logQuery.setIsErrorFavorite(true); - TeacherOpenCourseQuestionLogWrongQuery wrongQuery = new TeacherOpenCourseQuestionLogWrongQuery(); - wrongQuery.setStudentId(studentId); - wrongQuery.setTeacherOpenCourseQuestionLogStatus(1); - wrongQuery.setTeacherOpenCourseQuestionSettingId(questionSettingId); - List<TeacherOpenCourseQuestionLogWrong> list = teacherOpenCourseQuestionLogWrongService.getValuesByQuery(wrongQuery); +// TeacherOpenCourseQuestionLogWrongQuery wrongQuery = new TeacherOpenCourseQuestionLogWrongQuery(); +// wrongQuery.setStudentId(studentId); +// wrongQuery.setTeacherOpenCourseQuestionLogStatus(1); +// wrongQuery.setTeacherOpenCourseQuestionSettingId(questionSettingId); +// List<TeacherOpenCourseQuestionLogWrong> list = teacherOpenCourseQuestionLogWrongService.getValuesByQuery(wrongQuery); +// +// list.forEach(TeacherOpenCourseQuestionLogWrong::clearAnswer); +// if (ObjectUtil.isNotEmpty(list)) { +// return BeanUtil.copyToList(list, ResourcesQuestionSnapshot.class); +// } + + logQuery.setIsErrorFavorite(true); + logQuery.setStudentId(studentId); + logQuery.setTeacherOpenCourseQuestionLogStatusPlural("1,2"); + logQuery.setTeacherOpenCourseQuestionSettingId(questionSettingId); + logQuery.setQuestionLogAddType(FINALLY_SUBMIT); + List<TeacherOpenCourseQuestionLog> list = teacherOpenCourseQuestionLogService.getValuesByQueryNotWithPermission(logQuery); + + list.forEach(TeacherOpenCourseQuestionLog::clearAnswer); if (ObjectUtil.isNotEmpty(list)) { - return BeanUtil.copyToList(list, ResourcesQuestionSnapshot.class); + return list; } } return Collections.emptyList(); } + /** * 功能描述: <br> * 分析汇总 diff --git a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionLogController.java b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionLogController.java index 67977a0b..f64acafb 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionLogController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionLogController.java @@ -1,7 +1,6 @@ package com.ibeetl.jlw.web; import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -329,6 +328,17 @@ public class TeacherOpenCourseQuestionLogController extends BaseController { return JsonResult.success(); } + /** + * 通过日志ID获取答案(仅限于错误或收藏夹) + * @param questionLogId 题目日志ID + * @return + */ + @PostMapping(API + "/getTuckOrErrorListQuestionAnswer.do") + @ResponseBody + public JsonResult getTuckOrErrorListQuestionAnswer(Long questionLogId, @SCoreUser CoreUser coreUser) { + return JsonResult.success(teacherOpenCourseQuestionLogService.getTuckOrErrorListQuestionAnswer(questionLogId)); + } + /** * 教师端-做题日志导出 * @param condition 日志记录查询条件 @@ -569,5 +579,4 @@ public class TeacherOpenCourseQuestionLogController extends BaseController { return JsonResult.success(teacherOpenCourseQuestionLogService.getHomeWorkLogExportPageList(teacherOpenCourseQuestionSettingId.getPageQuery())); } - } diff --git a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionLogWrongController.java b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionLogWrongController.java index 054b4032..4af76839 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionLogWrongController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionLogWrongController.java @@ -50,6 +50,7 @@ import static cn.jlw.util.CacheUserUtil.getStudent; @RestController @Validated +@Deprecated public class TeacherOpenCourseQuestionLogWrongController{ private final Log log = LogFactory.getLog(this.getClass());