附件作业列表

beetlsql3-dev
Mlxa0324 2 years ago
parent 26142ae614
commit 4d39b51529

@ -12,8 +12,12 @@ import org.beetl.sql.mapper.annotation.SqlResource;
import org.beetl.sql.mapper.annotation.Update;
import org.springframework.stereotype.Repository;
import javax.validation.constraints.NotNull;
import java.util.List;
import static com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum.HOMEWORK_FILE;
import static java.lang.Math.toIntExact;
/**
* Dao
*/
@ -61,4 +65,19 @@ public interface TeacherOpenCourseQuestionSettingDao extends BaseMapper<TeacherO
* @Date: 2022/11/30 14:33
*/
// QuestionSettingScoreInfoVO getQuestionSettingScoreInfo(@NotNull Long questionSettingId, @NotNull Long studentId);
/**
* : <br>
* ID
*
* @Author: 87966
* @Date: 2022/12/5 13:47
*/
default int getHomeWorkFileTotalCountBySettingId(@NotNull Long questionSettingId) {
long count = createLambdaQuery().andEq(TeacherOpenCourseQuestionSetting::getTeacherOpenCourseQuestionSettingId, questionSettingId)
.andEq(TeacherOpenCourseQuestionSetting::getTeacherOpenCourseQuestionSettingStatus, 1)
.andEq(TeacherOpenCourseQuestionSetting::getTeacherOpenCourseQuestionSettingType, HOMEWORK_FILE)
.count();
return toIntExact(count);
}
}

@ -171,7 +171,7 @@ public class GeneralQuestionLog extends BaseEntity{
* @Date: 2022/12/4 20:39
*/
public Integer getSuccessCount() {
return Integer.valueOf(defaultIfNull(this.get("successCount"), "-1").toString());
return Integer.valueOf(defaultIfNull(this.get("successCount"), "0").toString());
}
/**
* : <br>
@ -193,6 +193,6 @@ public class GeneralQuestionLog extends BaseEntity{
* @Date: 2022/12/4 20:39
*/
public Integer getErrorCount() {
return Integer.valueOf(defaultIfNull(this.get("errorCount"), "-1").toString());
return Integer.valueOf(defaultIfNull(this.get("errorCount"), "0").toString());
}
}

@ -186,7 +186,7 @@ public class TeacherOpenCourseQuestionLog extends BaseEntity {
* @Date: 2022/12/4 20:39
*/
public Integer getSuccessCount() {
return Integer.valueOf(defaultIfNull(this.get("successCount"), "-1").toString());
return Integer.valueOf(defaultIfNull(this.get("successCount"), "0").toString());
}
/**
* : <br>
@ -208,6 +208,6 @@ public class TeacherOpenCourseQuestionLog extends BaseEntity {
* @Date: 2022/12/4 20:39
*/
public Integer getErrorCount() {
return Integer.valueOf(defaultIfNull(this.get("errorCount"), "-1").toString());
return Integer.valueOf(defaultIfNull(this.get("errorCount"), "0").toString());
}
}

@ -62,6 +62,7 @@ import static com.ibeetl.jlw.enums.QuestionLogAddTypeEnum.*;
import static com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum.CHAPTER_EXERCISE;
import static com.ibeetl.jlw.enums.ResourcesQuestionTypeEnum.isOneQuestion;
import static java.lang.Math.abs;
import static java.lang.Math.toIntExact;
import static java.math.BigDecimal.ZERO;
import static java.util.stream.Collectors.groupingBy;
import static java.util.stream.Collectors.joining;
@ -464,12 +465,14 @@ public class GeneralQuestionLogService extends CoreBaseService<GeneralQuestionLo
/**
* -
* -
*
* @param generalQuestionLogIds IDs
* @param score
* @param reply
*/
public void manualModifyQuestionScores(@NotNull(message = "题目做题日志ID不能为空") final String generalQuestionLogIds, @NotEmpty final BigDecimal score, @Nullable final String reply) {
public void manualModifyQuestionScores(@NotNull(message = "题目做题日志ID不能为空") final String generalQuestionLogIds,
@NotNull(message = "设置的分数不能为空!") final BigDecimal score, @Nullable final String reply) {
GeneralQuestionLogQuery generalQuestionLogQuery = new GeneralQuestionLogQuery();
generalQuestionLogQuery.setGeneralQuestionLogIdPlural(generalQuestionLogIds);
generalQuestionLogQuery.setGeneralQuestionLogStatus(1);
@ -564,10 +567,12 @@ public class GeneralQuestionLogService extends CoreBaseService<GeneralQuestionLo
* @param student
*/
private void addFileRelatedLog(@NotBlank(message = "上传的附件不能为空!") String absFilePath, Long questionSettingId, Student student) {
Date now = new Date();
GeneralQuestionLogQuery query = new GeneralQuestionLogQuery();
query.setGeneralQuestionLogUploadFile(absFilePath);
query.setGeneralQuestionSettingId(questionSettingId);
query.setGeneralQuestionLogUpdateTime(new Date());
query.setGeneralQuestionLogAddTime(now);
query.setGeneralQuestionLogFinishTime(RandomUtil.randomLong(100, 3600));
query.setGeneralQuestionLogStatus(1);
// 附件作业,只有一题,所有默认是全部提交的方式
query.setQuestionLogAddType(FINALLY_SUBMIT);
@ -696,8 +701,7 @@ public class GeneralQuestionLogService extends CoreBaseService<GeneralQuestionLo
// 学生做的题目的答案与日志关联
updateBatchTemplate(updateList);
// 添加到题目日志汇总中
addQuestionLogSummary(logsIds, updateList, student,
questionSetting.getGeneralQuestionSettingName(), questionSetting.getBusinessType(), questionSetting.getGeneralQuestionSettingType());
addQuestionLogSummary(student, questionSetting.getGeneralQuestionSettingId());
}
}
@ -777,6 +781,33 @@ public class GeneralQuestionLogService extends CoreBaseService<GeneralQuestionLo
});
}
/**
*
* @param student
* @param questionSettingId
*/
private void addQuestionLogSummary(Student student, Long questionSettingId) {
if (student == null || questionSettingId == null) {
return;
}
List<GeneralQuestionLog> logList = getValuesBySettingIds(questionSettingId.toString());
GeneralQuestionSetting questionSetting = generalQuestionSettingService.getInfo(questionSettingId);
if (CollectionUtil.isNotEmpty(logList) && questionSetting != null) {
String logIds = logList.stream().map(GeneralQuestionLog::getGeneralQuestionLogId).map(Objects::toString).collect(joining(","));
addQuestionLogSummary(logIds, logList, student, questionSetting.getGeneralQuestionSettingName(), questionSetting.getBusinessType(), questionSetting.getGeneralQuestionSettingType());
}
}
private List<GeneralQuestionLog> getValuesBySettingIds(String settingIds) {
GeneralQuestionLogQuery logQuery = new GeneralQuestionLogQuery();
logQuery.setGeneralQuestionSettingIdPlural(settingIds);
logQuery.setGeneralQuestionLogStatus(1);
return generalQuestionLogDao.getValuesByQueryNotWithPermission(logQuery);
}
/**
* : <br>
*
@ -803,7 +834,9 @@ public class GeneralQuestionLogService extends CoreBaseService<GeneralQuestionLo
// 试卷总分数, 我的分数, 题目日志ID集
BigDecimal questionTotalScore = ZERO, myTotalScore = ZERO; final Set<String> idsSet = new HashSet<>();
// 获取最大的完成时间
GeneralQuestionLog maxFinish = logList.stream().max((o1, o2) -> Math.toIntExact(o1.getGeneralQuestionLogFinishTime() - o2.getGeneralQuestionLogFinishTime()))
GeneralQuestionLog maxFinish = logList.stream()
.max((o1, o2) -> toIntExact(defaultIfNull(o1.getGeneralQuestionLogFinishTime(), 0L) - defaultIfNull(o2.getGeneralQuestionLogFinishTime(), 0L)))
.get();
for (GeneralQuestionLog questionLog : logList) {

@ -404,7 +404,7 @@ public class QuestionLogSummaryService extends CoreBaseService<QuestionLogSummar
/**
* : <br>
*
*
*
* @param query
* @return {@link PageQuery< QuestionLogSummaryHomeworkFileAnalysisVO>}
@ -412,6 +412,8 @@ public class QuestionLogSummaryService extends CoreBaseService<QuestionLogSummar
* @Date: 2023/1/13 19:10
*/
public PageQuery<QuestionLogSummaryHomeworkFileAnalysisVO> homeworkFileAnalysisPageQuery(PageQuery query) {
return questionLogSummaryDao.homeworkFileAnalysisPageQuery(query);
PageQuery<QuestionLogSummaryHomeworkFileAnalysisVO> pageQuery = questionLogSummaryDao.homeworkFileAnalysisPageQuery(query);
dictParser(pageQuery.getList());
return pageQuery;
}
}

@ -18,6 +18,7 @@ import com.ibeetl.admin.core.web.JsonReturnCode;
import com.ibeetl.jlw.dao.ResourcesQuestionSnapshotDao;
import com.ibeetl.jlw.dao.StudentDao;
import com.ibeetl.jlw.dao.TeacherOpenCourseQuestionLogDao;
import com.ibeetl.jlw.dao.TeacherOpenCourseQuestionSettingDao;
import com.ibeetl.jlw.entity.*;
import com.ibeetl.jlw.entity.dto.QuestionLogAddDTO;
import com.ibeetl.jlw.entity.vo.TeacherOpenCourseQuestionLogAnswerLockVO;
@ -54,6 +55,7 @@ import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUserId;
import static com.ibeetl.jlw.enums.QuestionBusinessTypeEnum.FROM_OPEN_COURSE;
import static com.ibeetl.jlw.enums.QuestionLogAddTypeEnum.*;
import static com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum.CHAPTER_EXERCISE;
import static com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum.HOMEWORK_FILE;
import static com.ibeetl.jlw.enums.ResourcesQuestionTypeEnum.isOneQuestion;
import static java.lang.Math.abs;
import static java.lang.Math.toIntExact;
@ -77,6 +79,8 @@ public class TeacherOpenCourseQuestionLogService extends CoreBaseService<Teacher
@Autowired private ResourcesQuestionSnapshotDao resourcesQuestionSnapshotDao;
@Autowired @Lazy
private TeacherOpenCourseQuestionSettingService teacherOpenCourseQuestionSettingService;
@Autowired
private TeacherOpenCourseQuestionSettingDao teacherOpenCourseQuestionSettingDao;
@Autowired private TeacherOpenCourseQuestionLogWrongService teacherOpenCourseQuestionLogWrongService;
@Autowired private QuestionLogSummaryService questionLogSummaryService;
@Autowired private CoreDictService coreDictService;
@ -300,12 +304,14 @@ public class TeacherOpenCourseQuestionLogService extends CoreBaseService<Teacher
/**
* -
* -
*
* @param teacherOpenCourseQuestionLogIds IDs
* @param score
* @param reply
*/
public void manualModifyQuestionScores(@NotNull(message = "题目做题日志ID不能为空") final String teacherOpenCourseQuestionLogIds, @NotEmpty final BigDecimal score, @Nullable String reply) {
public void manualModifyQuestionScores(@NotNull(message = "题目做题日志ID不能为空") final String teacherOpenCourseQuestionLogIds,
@NotNull(message = "设置的分数不能为空!") final BigDecimal score, @Nullable String reply) {
TeacherOpenCourseQuestionLogQuery teacherOpenCourseQuestionLogQuery = new TeacherOpenCourseQuestionLogQuery();
teacherOpenCourseQuestionLogQuery.setTeacherOpenCourseQuestionLogIdPlural(teacherOpenCourseQuestionLogIds);
teacherOpenCourseQuestionLogQuery.setTeacherOpenCourseQuestionLogStatus(1);
@ -412,10 +418,12 @@ public class TeacherOpenCourseQuestionLogService extends CoreBaseService<Teacher
* @param student
*/
private void addFileRelatedLog(@NotBlank(message = "上传的附件不能为空!") String absFilePath, Long questionSettingId, Student student) {
Date now = new Date();
TeacherOpenCourseQuestionLogQuery query = new TeacherOpenCourseQuestionLogQuery();
query.setTeacherOpenCourseQuestionLogUploadFile(absFilePath);
query.setTeacherOpenCourseQuestionSettingId(questionSettingId);
query.setTeacherOpenCourseQuestionLogUpdateTime(new Date());
query.setTeacherOpenCourseQuestionLogAddTime(now);
query.setTeacherOpenCourseQuestionLogFinishTime(RandomUtil.randomLong(100, 3600));
query.setTeacherOpenCourseQuestionLogStatus(1);
// 附件作业,只有一题,所有默认是全部提交的方式
query.setQuestionLogAddType(FINALLY_SUBMIT);
@ -640,6 +648,9 @@ public class TeacherOpenCourseQuestionLogService extends CoreBaseService<Teacher
*/
private void addQuestionLogSummary(Student student, Long questionSettingId) {
if (student == null || questionSettingId == null) {
return;
}
List<TeacherOpenCourseQuestionLog> logList = getValuesBySettingIds(questionSettingId.toString());
TeacherOpenCourseQuestionSetting questionSetting = teacherOpenCourseQuestionSettingService.getInfo(questionSettingId);
@ -649,8 +660,6 @@ public class TeacherOpenCourseQuestionLogService extends CoreBaseService<Teacher
}
}
}
/**
* : <br>
*
@ -669,7 +678,12 @@ public class TeacherOpenCourseQuestionLogService extends CoreBaseService<Teacher
// 构建实体
final QuestionLogSummary questionLogSummary = new QuestionLogSummary();
final Long questionSettingId = logList.get(0).getTeacherOpenCourseQuestionSettingId();
final Integer questionTotalCount = resourcesQuestionSnapshotDao.getQuestionTotalCountBySettingId(questionSettingId);
// 这里附件作业的数量,需要单独查询
final Integer questionTotalCount = snapshotFromTypeEnum.equals(HOMEWORK_FILE)
? teacherOpenCourseQuestionSettingDao.getHomeWorkFileTotalCountBySettingId(questionSettingId)
: resourcesQuestionSnapshotDao.getQuestionTotalCountBySettingId(questionSettingId);
// 做对数,做错数,总题数
Integer sumSuccessCount = 0, sumErrorCount = 0, sumDoCount = 0;
// 试卷总分数, 我的分数, 题目日志ID集
@ -677,7 +691,7 @@ public class TeacherOpenCourseQuestionLogService extends CoreBaseService<Teacher
// 获取最大的完成时间
TeacherOpenCourseQuestionLog maxFinish = logList.stream()
.max((o1, o2) -> toIntExact(o1.getTeacherOpenCourseQuestionLogFinishTime() - o2.getTeacherOpenCourseQuestionLogFinishTime()))
.max((o1, o2) -> toIntExact(defaultIfNull(o1.getTeacherOpenCourseQuestionLogFinishTime(), 0L) - defaultIfNull(o2.getTeacherOpenCourseQuestionLogFinishTime(), 0L)))
.get();
for (TeacherOpenCourseQuestionLog questionLog : logList) {
@ -688,8 +702,8 @@ public class TeacherOpenCourseQuestionLogService extends CoreBaseService<Teacher
sumSuccessCount += successCount;
sumErrorCount += errorCount;
sumDoCount += ObjectUtil.isNotEmpty(questionLog.getTeacherOpenCourseQuestionLogAnswer()) ? 1 : 0;
questionTotalScore = questionTotalScore.add(questionLog.getQuestionScore());
myTotalScore = myTotalScore.add(questionLog.getStudentScore());
questionTotalScore = questionTotalScore.add(defaultIfNull(questionLog.getQuestionScore(), questionLog.getStudentScore()));
myTotalScore = myTotalScore.add(defaultIfNull(questionLog.getStudentScore(), questionLog.getQuestionScore()));
idsSet.add(questionLog.getTeacherOpenCourseQuestionLogId().toString());
}
// 及格分值比率

@ -580,7 +580,8 @@ public class QuestionLogSummaryController extends BaseController {
}
/**
*
*
*
* @param teacherOpenCourseId ID
* @param questionSettingType
* @return
@ -595,7 +596,7 @@ public class QuestionLogSummaryController extends BaseController {
}
/**
*
*
* @param teacherOpenCourseId ID
* @param questionSettingType
* @return

@ -157,6 +157,7 @@ public class TeacherOpenCourseQuestionLogController {
String teacherOpenCourseQuestionLogIds, BigDecimal score, @RequestParam(required = false) String reply,
@SCoreUser
CoreUser coreUser) {
Assert.isFalse(coreUser.isStudent(), "学生身份无法访问改接口!");
teacherOpenCourseQuestionLogService.manualModifyQuestionScores(teacherOpenCourseQuestionLogIds, score, reply);
return JsonResult.success();

@ -108,7 +108,7 @@
height: Lib.getTableHeight(1),
cellMinWidth: 100,
method: 'post',
url: Common.ctxPath + '/jlw/questionLogSummary/analysisPageList.json' // 数据接口
url: Common.ctxPath + '/jlw/questionLogSummary/homeworkFileAnalysis.json' // 数据接口
, where: {'teacherOpenCourseId': teacherOpenCourseId, 'questionSettingType': questionSettingType}
, page: Lib.tablePage // 开启分页
, limit: 10,
@ -133,9 +133,11 @@
hideField: false
},
{
field: 'avgFinishTime',
title: '作业时间',
align: "center"
align: "center",
templet: function (d) {
return d.startTime + '~' + d.endTime
}
},
{
field: 'operation_', title: '操作', align: "center", templet: function (d) {

Loading…
Cancel
Save