附件作业统计+导出

beetlsql3-dev
Mlxa0324 2 years ago
parent aad8c853ce
commit 2cb83822ab

@ -2,6 +2,7 @@ package com.ibeetl.jlw.dao;
import com.ibeetl.jlw.entity.QuestionLogSummary;
import com.ibeetl.jlw.entity.vo.QuestionLogSummaryAnalysisVO;
import com.ibeetl.jlw.entity.vo.QuestionLogSummaryHomeworkFileAnalysisVO;
import com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum;
import com.ibeetl.jlw.web.query.QuestionLogSummaryQuery;
import org.beetl.sql.core.engine.PageQuery;
@ -56,4 +57,15 @@ public interface QuestionLogSummaryDao extends BaseMapper<QuestionLogSummary>{
* @return
*/
Map<String, Object> analysisAvg(String questionSettingIds, ResourcesQuestionSnapshotFromTypeEnum questionSettingType);
/**
* : <br>
*
*
* @param query
* @return {@link PageQuery< QuestionLogSummaryHomeworkFileAnalysisVO>}
* @Author: lx
* @Date: 2023/1/13 19:10
*/
PageQuery<QuestionLogSummaryHomeworkFileAnalysisVO> homeworkFileAnalysisPageQuery(PageQuery query);
}

@ -0,0 +1,62 @@
package com.ibeetl.jlw.entity.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ibeetl.admin.core.annotation.DictEnum;
import com.ibeetl.admin.core.entity.BaseEntity;
import com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.FieldNameConstants;
/**
* : <br>
*
* @author: mlx
* @description:
* @date: 2022/12/12 15:56
* @version: 1.0
*/
@Data
@FieldNameConstants
@EqualsAndHashCode(callSuper=false)
@ExcelIgnoreUnannotated
public class QuestionLogSummaryHomeworkFileAnalysisVO extends BaseEntity {
/**
* ID
*/
private String questionSettingId;
/**
*
*/
@ExcelProperty(value = "名称")
private String questionSettingName;
@ExcelProperty(value = "开始时间")
private String startTime;
@ExcelProperty(value = "结束时间")
private String endTime;
@DictEnum
private ResourcesQuestionSnapshotFromTypeEnum questionSettingType;
@ExcelProperty(value = "题目类型")
private String questionSettingTypeText;
/**
*
*/
@ExcelProperty(value = "学生平均分数")
private String avgStudentScore;
/**
*
*/
@ExcelProperty(value = "平均正确率")
private String avgQuestionLogSummarySuccessRate;
/**
*
*/
@ExcelProperty(value = "平均通过率")
private String avgQuestionLogSummaryIsPass;
}

@ -14,6 +14,7 @@ import com.ibeetl.jlw.dao.QuestionLogSummaryDao;
import com.ibeetl.jlw.entity.FileEntity;
import com.ibeetl.jlw.entity.QuestionLogSummary;
import com.ibeetl.jlw.entity.vo.QuestionLogSummaryAnalysisVO;
import com.ibeetl.jlw.entity.vo.QuestionLogSummaryHomeworkFileAnalysisVO;
import com.ibeetl.jlw.enums.QuestionBusinessTypeEnum;
import com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum;
import com.ibeetl.jlw.web.query.QuestionLogSummaryQuery;
@ -202,8 +203,8 @@ public class QuestionLogSummaryService extends CoreBaseService<QuestionLogSummar
}
try {
if(null != is){
is.close();
}
is.close();
}
}catch (Exception e){
e.printStackTrace();
}
@ -218,21 +219,21 @@ public class QuestionLogSummaryService extends CoreBaseService<QuestionLogSummar
int colNum = firstRow.getPhysicalNumberOfCells();
String columns[] = {
"题目配置",
"题目配置名称",
"类型 枚举",
"来源类型 枚举",
"配置的题目总分数",
"人员",
"关联的做题日志IDs",
"配置的题目总数",
"学生做题总数",
"正确数量",
"错误数量",
"正确率,最大100",
"当前配置的及格比率",
"是否及格",
"状态",
"题目配置",
"题目配置名称",
"类型 枚举",
"来源类型 枚举",
"配置的题目总分数",
"人员",
"关联的做题日志IDs",
"配置的题目总数",
"学生做题总数",
"正确数量",
"错误数量",
"正确率,最大100",
"当前配置的及格比率",
"是否及格",
"状态",
};
Map<String,Integer> map = new HashMap<>();//获取需要的表头的列
@ -346,28 +347,28 @@ public class QuestionLogSummaryService extends CoreBaseService<QuestionLogSummar
continue;
}else
{
//TODO 保存
QuestionLogSummary questionLogSummary = new QuestionLogSummary();
questionLogSummary.setQuestionSettingId(Long.parseLong(questionSettingId));
questionLogSummary.setQuestionSettingName(questionSettingName);
questionLogSummary.setQuestionSettingType(EnumUtil.likeValueOf(ResourcesQuestionSnapshotFromTypeEnum.class, questionSettingType));
questionLogSummary.setQuestionLogSummaryFromType(EnumUtil.likeValueOf(QuestionBusinessTypeEnum.class, questionLogSummaryFromType));
questionLogSummary.setQuestionSettingTotalScore(NumberUtil.toBigDecimal(questionSettingTotalScore));
questionLogSummary.setPersonId(Long.parseLong(personId));
questionLogSummary.setQuestionLogIds(questionLogIds);
questionLogSummary.setQuestionLogSummaryQuestionTotalCount(Integer.parseInt(questionLogSummaryQuestionTotalCount));
questionLogSummary.setQuestionLogSummaryStudentDoCount(Integer.parseInt(questionLogSummaryStudentDoCount));
questionLogSummary.setQuestionLogSummarySuccessCount(Integer.parseInt(questionLogSummarySuccessCount));
questionLogSummary.setQuestionLogSummaryErrorCount(Integer.parseInt(questionLogSummaryErrorCount));
questionLogSummary.setQuestionLogSummarySuccessRate(new BigDecimal(questionLogSummarySuccessRate));
questionLogSummary.setQuestionLogSummaryCurrentPassRate(new BigDecimal(questionLogSummaryCurrentPassRate));
questionLogSummary.setQuestionLogSummaryIsPass(Integer.parseInt(questionLogSummaryIsPass));
questionLogSummary.setQuestionLogSummaryStatus(Integer.parseInt(questionLogSummaryStatus));
questionLogSummary.setQuestionLogSummaryAddTime(new Date());
questionLogSummary.setOrgId(coreUser.getOrgId());
questionLogSummary.setUserId(coreUser.getId());
count++;
//TODO 保存
QuestionLogSummary questionLogSummary = new QuestionLogSummary();
questionLogSummary.setQuestionSettingId(Long.parseLong(questionSettingId));
questionLogSummary.setQuestionSettingName(questionSettingName);
questionLogSummary.setQuestionSettingType(EnumUtil.likeValueOf(ResourcesQuestionSnapshotFromTypeEnum.class, questionSettingType));
questionLogSummary.setQuestionLogSummaryFromType(EnumUtil.likeValueOf(QuestionBusinessTypeEnum.class, questionLogSummaryFromType));
questionLogSummary.setQuestionSettingTotalScore(NumberUtil.toBigDecimal(questionSettingTotalScore));
questionLogSummary.setPersonId(Long.parseLong(personId));
questionLogSummary.setQuestionLogIds(questionLogIds);
questionLogSummary.setQuestionLogSummaryQuestionTotalCount(Integer.parseInt(questionLogSummaryQuestionTotalCount));
questionLogSummary.setQuestionLogSummaryStudentDoCount(Integer.parseInt(questionLogSummaryStudentDoCount));
questionLogSummary.setQuestionLogSummarySuccessCount(Integer.parseInt(questionLogSummarySuccessCount));
questionLogSummary.setQuestionLogSummaryErrorCount(Integer.parseInt(questionLogSummaryErrorCount));
questionLogSummary.setQuestionLogSummarySuccessRate(new BigDecimal(questionLogSummarySuccessRate));
questionLogSummary.setQuestionLogSummaryCurrentPassRate(new BigDecimal(questionLogSummaryCurrentPassRate));
questionLogSummary.setQuestionLogSummaryIsPass(Integer.parseInt(questionLogSummaryIsPass));
questionLogSummary.setQuestionLogSummaryStatus(Integer.parseInt(questionLogSummaryStatus));
questionLogSummary.setQuestionLogSummaryAddTime(new Date());
questionLogSummary.setOrgId(coreUser.getOrgId());
questionLogSummary.setUserId(coreUser.getId());
count++;
}
}
}
@ -400,4 +401,17 @@ public class QuestionLogSummaryService extends CoreBaseService<QuestionLogSummar
public PageQuery<QuestionLogSummaryAnalysisVO> analysisPageQuery(PageQuery query) {
return questionLogSummaryDao.analysisPageQuery(query);
}
/**
* : <br>
*
*
* @param query
* @return {@link PageQuery< QuestionLogSummaryHomeworkFileAnalysisVO>}
* @Author: lx
* @Date: 2023/1/13 19:10
*/
public PageQuery<QuestionLogSummaryHomeworkFileAnalysisVO> homeworkFileAnalysisPageQuery(PageQuery query) {
return questionLogSummaryDao.homeworkFileAnalysisPageQuery(query);
}
}

@ -18,6 +18,7 @@ import com.ibeetl.admin.core.web.query.PageParam;
import com.ibeetl.jlw.entity.FileEntity;
import com.ibeetl.jlw.entity.QuestionLogSummary;
import com.ibeetl.jlw.entity.vo.QuestionLogSummaryAnalysisVO;
import com.ibeetl.jlw.entity.vo.QuestionLogSummaryHomeworkFileAnalysisVO;
import com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum;
import com.ibeetl.jlw.service.QuestionLogSummaryService;
import com.ibeetl.jlw.web.query.QuestionLogSummaryQuery;
@ -578,4 +579,42 @@ public class QuestionLogSummaryController extends BaseController {
write(response, filename,"Sheet1", QuestionLogSummaryAnalysisVO.class, page.getList());
}
/**
*
* @param teacherOpenCourseId ID
* @param questionSettingType
* @return
*/
@PostMapping(MODEL + "/homeworkFileAnalysis.json")
public JsonResult homeworkFileAnalysis(PageParam param, Long teacherOpenCourseId, @RequestParam(required = false) ResourcesQuestionSnapshotFromTypeEnum questionSettingType, @SCoreUser CoreUser coreUser) {
PageQuery<Object> objectPageQuery = ofDefault(new PageQuery<>(), param);
objectPageQuery.setPara("questionSettingType", questionSettingType);
objectPageQuery.setPara("teacherOpenCourseId", teacherOpenCourseId);
return JsonResult.success(questionLogSummaryService.homeworkFileAnalysisPageQuery(objectPageQuery));
}
/**
*
* @param teacherOpenCourseId ID
* @param questionSettingType
* @return
*/
@SneakyThrows
@PostMapping(MODEL + "/homeworkFileAnalysisExport.json")
@ResponseBody
public String homeworkFileAnalysisExport(Long teacherOpenCourseId, @RequestParam(required = false) ResourcesQuestionSnapshotFromTypeEnum questionSettingType, @SCoreUser CoreUser coreUser) {
PageQuery<Object> pageQuery = new PageQuery<>();
pageQuery.setPageSize(Integer.MAX_VALUE);
pageQuery.setPageNumber(1);
pageQuery.setPara("questionSettingType", questionSettingType);
pageQuery.setPara("teacherOpenCourseId", teacherOpenCourseId);
PageQuery<QuestionLogSummaryHomeworkFileAnalysisVO> page = questionLogSummaryService.homeworkFileAnalysisPageQuery(pageQuery);
String filename = StrUtil.format("附件作业日志导出{}.xlsx", DateUtil.now());
write(response, filename, "Sheet1", QuestionLogSummaryHomeworkFileAnalysisVO.class, page.getList());
return null;
}
}

@ -934,4 +934,42 @@ analysisAvg
and find_in_set(t.question_setting_id, #questionSettingIds#)
@}
and t.question_log_summary_status = 1
homeworkFileAnalysisPageQuery
===
* 附件作业的统计分析接口
select
@pageTag(){
z.*
@}
from (
SELECT
ta.teacher_open_course_question_setting_name AS question_setting_name,
ta.teacher_open_course_question_setting_id AS question_setting_id,
ta.teacher_open_course_question_start_time AS start_time,
ta.teacher_open_course_question_end_time AS end_time,
ta.teacher_open_course_question_setting_type AS question_setting_type,
round( avg( question_log_summary_student_total_score ), 1 ) AS avg_student_score,
round( avg( question_log_summary_success_rate ), 1 ) AS avg_question_log_summary_success_rate,
round( avg( question_log_summary_is_pass ), 1 ) AS avg_question_log_summary_is_pass
FROM
teacher_open_course_question_setting ta
LEFT JOIN question_log_summary t ON t.question_setting_id = ta.teacher_open_course_question_setting_id
where 1
@if(!isEmpty(questionSettingType)) {
and t.question_setting_type = #questionSettingType#
and ta.teacher_open_course_question_setting_type = #questionSettingType#
@}
and t.question_log_summary_status = 1
and ta.teacher_open_course_id = #teacherOpenCourseId#
and ta.teacher_open_course_question_setting_status = 1
AND ta.teacher_open_course_question_setting_push_status = 1
AND ta.teacher_open_course_question_setting_name is not null
GROUP BY
ta.teacher_open_course_question_setting_name,
ta.teacher_open_course_question_setting_id,
ta.teacher_open_course_question_start_time,
ta.teacher_open_course_question_end_time,
ta.teacher_open_course_question_setting_type
) z

Loading…
Cancel
Save