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); + } + /** * 功能描述:
* 设置做对的正确数量 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 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 logList = getValuesByQueryNotWithPermission(logQuery); + + Optional 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 getQuestionLogByLogWrongList(List 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 implements DeleteResourcesBy{ @Autowired private TeacherOpenCourseQuestionLogWrongDao teacherOpenCourseQuestionLogWrongDao; + @Autowired @Lazy + private TeacherOpenCourseQuestionLogService teacherOpenCourseQuestionLogService; public PageQueryqueryByCondition(PageQuery query){ PageQuery ret = teacherOpenCourseQuestionLogWrongDao.queryByCondition(query); @@ -83,6 +89,33 @@ public class TeacherOpenCourseQuestionLogWrongService extends CoreBaseService logWrongList = teacherOpenCourseQuestionLogWrongDao.selectByIds(Arrays.asList(ids.split(","))); + List questionLogList = teacherOpenCourseQuestionLogService.getQuestionLogByLogWrongList(logWrongList, student.getStudentId()); + + if (CollectionUtil.isNotEmpty(questionLogList)) { + // 修改做题日志的错题状态 + List 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 questionDetailTest(@NotNull(message = "题目配置ID不能为空!") Long questionSettingId, + public List 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 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 list = teacherOpenCourseQuestionLogWrongService.getValuesByQuery(wrongQuery); +// TeacherOpenCourseQuestionLogWrongQuery wrongQuery = new TeacherOpenCourseQuestionLogWrongQuery(); +// wrongQuery.setStudentId(studentId); +// wrongQuery.setTeacherOpenCourseQuestionLogStatus(1); +// wrongQuery.setTeacherOpenCourseQuestionSettingId(questionSettingId); +// List 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 list = teacherOpenCourseQuestionLogService.getValuesByQueryNotWithPermission(logQuery); + + list.forEach(TeacherOpenCourseQuestionLog::clearAnswer); if (ObjectUtil.isNotEmpty(list)) { - return BeanUtil.copyToList(list, ResourcesQuestionSnapshot.class); + return list; } } return Collections.emptyList(); } + /** * 功能描述:
* 分析汇总 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());