题目日志汇总导出

beetlsql3-dev
Mlxa0324 2 years ago
parent c745b7d9ba
commit f9c79c9c23

@ -1,11 +1,14 @@
package com.ibeetl.jlw.entity; package com.ibeetl.jlw.entity;
import cn.hutool.core.util.NumberUtil;
import com.ibeetl.admin.core.annotation.Dict; import com.ibeetl.admin.core.annotation.Dict;
import com.ibeetl.admin.core.annotation.DictDeep; import com.ibeetl.admin.core.annotation.DictDeep;
import com.ibeetl.admin.core.entity.BaseEntity; import com.ibeetl.admin.core.entity.BaseEntity;
import com.ibeetl.admin.core.util.ValidateConfig; import com.ibeetl.admin.core.util.ValidateConfig;
import com.ibeetl.jlw.enums.QuestionBusinessTypeEnum; import com.ibeetl.jlw.enums.QuestionBusinessTypeEnum;
import com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum; import com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.beetl.sql.annotation.entity.AssignID; import org.beetl.sql.annotation.entity.AssignID;
import org.beetl.sql.annotation.entity.InsertIgnore; import org.beetl.sql.annotation.entity.InsertIgnore;
import org.beetl.sql.annotation.entity.UpdateIgnore; import org.beetl.sql.annotation.entity.UpdateIgnore;
@ -19,6 +22,8 @@ import java.util.Date;
* -- * --
* gen by Spring Boot2 Admin 2022-12-04 * gen by Spring Boot2 Admin 2022-12-04
*/ */
@Data
@EqualsAndHashCode(callSuper=false)
public class QuestionLogSummary extends BaseEntity{ public class QuestionLogSummary extends BaseEntity{
//学生做题日志汇总ID //学生做题日志汇总ID
@ -113,6 +118,12 @@ public class QuestionLogSummary extends BaseEntity{
private String finishTime ; private String finishTime ;
// 完成进度
@InsertIgnore
@UpdateIgnore
private float finishProgress;
//组织ID //组织ID
private Long orgId ; private Long orgId ;
@ -120,287 +131,22 @@ public class QuestionLogSummary extends BaseEntity{
//用户ID //用户ID
private Long userId ; private Long userId ;
public QuestionLogSummary(){
}
/**ID
*@return
*/
public Long getQuestionLogSummaryId(){
return questionLogSummaryId;
}
/**ID
*@param questionLogSummaryId
*/
public void setQuestionLogSummaryId(Long questionLogSummaryId){
this.questionLogSummaryId = questionLogSummaryId;
}
/**ID
*@return
*/
public Long getQuestionSettingId(){
return questionSettingId;
}
/**ID
*@param questionSettingId
*/
public void setQuestionSettingId(Long questionSettingId){
this.questionSettingId = questionSettingId;
}
/**
*@return
*/
public String getQuestionSettingName(){
return questionSettingName;
}
/**
*@param questionSettingName
*/
public void setQuestionSettingName(String questionSettingName){
this.questionSettingName = questionSettingName;
}
/** ResourcesQuestionSnapshotFromTypeEnum
*@return
*/
public ResourcesQuestionSnapshotFromTypeEnum getQuestionSettingType(){
return questionSettingType;
}
/** ResourcesQuestionSnapshotFromTypeEnum
*@param questionSettingType
*/
public void setQuestionSettingType(ResourcesQuestionSnapshotFromTypeEnum questionSettingType){
this.questionSettingType = questionSettingType;
}
/**
*@return
*/
public QuestionBusinessTypeEnum getQuestionLogSummaryFromType(){
return questionLogSummaryFromType;
}
/**
*@param questionLogSummaryFromType
*/
public void setQuestionLogSummaryFromType(QuestionBusinessTypeEnum questionLogSummaryFromType){
this.questionLogSummaryFromType = questionLogSummaryFromType;
}
/**
*@return
*/
public BigDecimal getQuestionSettingTotalScore(){
return questionSettingTotalScore;
}
/**
*@param questionSettingTotalScore
*/
public void setQuestionSettingTotalScore(BigDecimal questionSettingTotalScore){
this.questionSettingTotalScore = questionSettingTotalScore;
}
/**IDID public void setQuestionLogSummaryQuestionTotalCount(Integer questionLogSummaryQuestionTotalCount) {
*@return
*/
public Long getPersonId(){
return personId;
}
/**IDID
*@param personId
*/
public void setPersonId(Long personId){
this.personId = personId;
}
/**IDs
*@return
*/
public String getQuestionLogIds(){
return questionLogIds;
}
/**IDs
*@param questionLogIds
*/
public void setQuestionLogIds(String questionLogIds){
this.questionLogIds = questionLogIds;
}
/**
*@return
*/
public Integer getQuestionLogSummaryQuestionTotalCount(){
return questionLogSummaryQuestionTotalCount;
}
/**
*@param questionLogSummaryQuestionTotalCount
*/
public void setQuestionLogSummaryQuestionTotalCount(Integer questionLogSummaryQuestionTotalCount){
this.questionLogSummaryQuestionTotalCount = questionLogSummaryQuestionTotalCount; this.questionLogSummaryQuestionTotalCount = questionLogSummaryQuestionTotalCount;
tryCalcFinishProgress();
} }
/** public void setQuestionLogSummaryStudentDoCount(Integer questionLogSummaryStudentDoCount) {
*@return
*/
public Integer getQuestionLogSummaryStudentDoCount(){
return questionLogSummaryStudentDoCount;
}
/**
*@param questionLogSummaryStudentDoCount
*/
public void setQuestionLogSummaryStudentDoCount(Integer questionLogSummaryStudentDoCount){
this.questionLogSummaryStudentDoCount = questionLogSummaryStudentDoCount; this.questionLogSummaryStudentDoCount = questionLogSummaryStudentDoCount;
tryCalcFinishProgress();
} }
/** private void tryCalcFinishProgress() {
*@return Integer totalCount = this.questionLogSummaryQuestionTotalCount;
*/ Integer doCount = this.questionLogSummaryStudentDoCount;
public Integer getQuestionLogSummarySuccessCount(){ if (null != doCount && null != totalCount && totalCount > 0) {
return questionLogSummarySuccessCount; this.finishProgress = NumberUtil.round(NumberUtil.mul(NumberUtil.div(doCount , totalCount), 100), 2).floatValue();
} }
/** }
*@param questionLogSummarySuccessCount
*/
public void setQuestionLogSummarySuccessCount(Integer questionLogSummarySuccessCount){
this.questionLogSummarySuccessCount = questionLogSummarySuccessCount;
}
/**
*@return
*/
public Integer getQuestionLogSummaryErrorCount(){
return questionLogSummaryErrorCount;
}
/**
*@param questionLogSummaryErrorCount
*/
public void setQuestionLogSummaryErrorCount(Integer questionLogSummaryErrorCount){
this.questionLogSummaryErrorCount = questionLogSummaryErrorCount;
}
/**,100
*@return
*/
public BigDecimal getQuestionLogSummarySuccessRate(){
return questionLogSummarySuccessRate;
}
/**,100
*@param questionLogSummarySuccessRate
*/
public void setQuestionLogSummarySuccessRate(BigDecimal questionLogSummarySuccessRate){
this.questionLogSummarySuccessRate = questionLogSummarySuccessRate;
}
/**
*@return
*/
public BigDecimal getQuestionLogSummaryCurrentPassRate(){
return questionLogSummaryCurrentPassRate;
}
/**
*@param questionLogSummaryCurrentPassRate
*/
public void setQuestionLogSummaryCurrentPassRate(BigDecimal questionLogSummaryCurrentPassRate){
this.questionLogSummaryCurrentPassRate = questionLogSummaryCurrentPassRate;
}
/**
*@return
*/
public Integer getQuestionLogSummaryIsPass(){
return questionLogSummaryIsPass;
}
/**
*@param questionLogSummaryIsPass
*/
public void setQuestionLogSummaryIsPass(Integer questionLogSummaryIsPass){
this.questionLogSummaryIsPass = questionLogSummaryIsPass;
}
/**1 2
*@return
*/
public Integer getQuestionLogSummaryStatus(){
return questionLogSummaryStatus;
}
/**1 2
*@param questionLogSummaryStatus
*/
public void setQuestionLogSummaryStatus(Integer questionLogSummaryStatus){
this.questionLogSummaryStatus = questionLogSummaryStatus;
}
/**
*@return
*/
public Date getQuestionLogSummaryAddTime(){
return questionLogSummaryAddTime;
}
/**
*@param questionLogSummaryAddTime
*/
public void setQuestionLogSummaryAddTime(Date questionLogSummaryAddTime){
this.questionLogSummaryAddTime = questionLogSummaryAddTime;
}
/**ID
*@return
*/
public Long getOrgId(){
return orgId;
}
/**ID
*@param orgId
*/
public void setOrgId(Long orgId){
this.orgId = orgId;
}
/**ID
*@return
*/
public Long getUserId(){
return userId;
}
/**ID
*@param userId
*/
public void setUserId(Long userId){
this.userId = userId;
}
public Long getFinishSecondTime() {
return finishSecondTime;
}
public void setFinishSecondTime(Long finishSecondTime) {
this.finishSecondTime = finishSecondTime;
}
public String getFinishTime() {
return finishTime;
}
public void setFinishTime(String finishTime) {
this.finishTime = finishTime;
}
public BigDecimal getQuestionLogSummaryStudentTotalScore() {
return questionLogSummaryStudentTotalScore;
}
public void setQuestionLogSummaryStudentTotalScore(BigDecimal questionLogSummaryStudentTotalScore) {
this.questionLogSummaryStudentTotalScore = questionLogSummaryStudentTotalScore;
}
public Student getStudentInfo() {
return studentInfo;
}
public void setStudentInfo(Student studentInfo) {
this.studentInfo = studentInfo;
}
} }

@ -1,6 +1,8 @@
package com.ibeetl.jlw.web; package com.ibeetl.jlw.web;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import cn.jlw.Interceptor.GetFile; import cn.jlw.Interceptor.GetFile;
import cn.jlw.Interceptor.RFile; import cn.jlw.Interceptor.RFile;
import cn.jlw.Interceptor.SCoreUser; import cn.jlw.Interceptor.SCoreUser;
@ -9,12 +11,14 @@ import cn.jlw.validate.ValidateConfig;
import com.ibeetl.admin.core.annotation.Function; import com.ibeetl.admin.core.annotation.Function;
import com.ibeetl.admin.core.entity.CoreUser; import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.file.FileService; import com.ibeetl.admin.core.file.FileService;
import com.ibeetl.admin.core.util.BeanCopyUtil;
import com.ibeetl.admin.core.util.TimeTool; import com.ibeetl.admin.core.util.TimeTool;
import com.ibeetl.admin.core.web.JsonResult; import com.ibeetl.admin.core.web.JsonResult;
import com.ibeetl.jlw.entity.FileEntity; import com.ibeetl.jlw.entity.FileEntity;
import com.ibeetl.jlw.entity.QuestionLogSummary; import com.ibeetl.jlw.entity.QuestionLogSummary;
import com.ibeetl.jlw.service.QuestionLogSummaryService; import com.ibeetl.jlw.service.QuestionLogSummaryService;
import com.ibeetl.jlw.web.query.QuestionLogSummaryQuery; import com.ibeetl.jlw.web.query.QuestionLogSummaryQuery;
import lombok.SneakyThrows;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
@ -37,11 +41,10 @@ import javax.servlet.http.HttpServletResponse;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.InputStream; import java.io.InputStream;
import java.util.ArrayList; import java.util.*;
import java.util.Date;
import java.util.List;
import java.util.Map;
import static com.ibeetl.admin.core.util.ExcelUtil.convertData;
import static com.ibeetl.admin.core.util.ExcelUtil.write;
import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUser; import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUser;
/** /**
@ -97,6 +100,36 @@ public class QuestionLogSummaryController{
} }
} }
/**
*
* @param condition
* @return
*/
@SneakyThrows
@GetMapping(API + "/export.do")
public void export(HttpServletResponse resp, QuestionLogSummaryQuery condition) {
/** 构建表头 */
Map<String, String> header = new LinkedHashMap<>(11);
header.put("studentName", "学生姓名");
header.put("studentSn", "学生学号");
header.put("className", "班级");
header.put("questionLogSummaryQuestionTotalCount", "题目总数量");
header.put("questionLogSummaryStudentDoCount", "已完成题目数量");
header.put("questionLogSummarySuccessCount", "答对数量");
header.put("questionLogSummaryErrorCount", "答错数量");
header.put("questionLogSummarySuccessRate", "正确率");
header.put("questionLogSummaryStudentTotalScore", "得分");
header.put("finishProgress", "进度(%");
condition.setQuestionLogSummaryStatus(1);
List<QuestionLogSummary> list = questionLogSummaryService.getValuesByQueryNotWithPermission(condition);
List<Map<String, Object>> maps = BeanCopyUtil.baseEntity2MapWithParallel(list);
String filename = StrUtil.format("题目日志汇总-导出 {}.xlsx", DateUtil.now());
write(resp, filename,"Sheet1", header.values(), convertData(header.keySet(), maps));
}
/* 后台页面 */ /* 后台页面 */

@ -501,6 +501,7 @@ public class TeacherOpenCourseMergeResourcesQuestionController extends BaseContr
/** /**
* : <br> * : <br>
* *
* excel
* @param file * @param file
* @return {@link JsonResult} * @return {@link JsonResult}
* @Author: 87966 * @Author: 87966

@ -72,6 +72,13 @@ public class QuestionLogSummaryQuery extends PageParam {
private String _given;//指定更新的特定字段,多个逗号隔开 private String _given;//指定更新的特定字段,多个逗号隔开
// 扩展字段
// 学生姓名或者学号
private String studentSnOrName;
// 班级IDs
private String schoolClassIdPlural;
public Long getQuestionLogSummaryId(){ public Long getQuestionLogSummaryId(){
return questionLogSummaryId; return questionLogSummaryId;
} }
@ -286,4 +293,20 @@ public class QuestionLogSummaryQuery extends PageParam {
public void setQuestionLogSummaryStudentTotalScore(BigDecimal questionLogSummaryStudentTotalScore) { public void setQuestionLogSummaryStudentTotalScore(BigDecimal questionLogSummaryStudentTotalScore) {
this.questionLogSummaryStudentTotalScore = questionLogSummaryStudentTotalScore; this.questionLogSummaryStudentTotalScore = questionLogSummaryStudentTotalScore;
} }
public String getStudentSnOrName() {
return studentSnOrName;
}
public void setStudentSnOrName(String studentSnOrName) {
this.studentSnOrName = studentSnOrName;
}
public String getSchoolClassIdPlural() {
return schoolClassIdPlural;
}
public void setSchoolClassIdPlural(String schoolClassIdPlural) {
this.schoolClassIdPlural = schoolClassIdPlural;
}
} }

@ -93,6 +93,12 @@ queryByCondition
@if(!isEmpty(userIdPlural)){ @if(!isEmpty(userIdPlural)){
and find_in_set(t.user_id,#userIdPlural#) and find_in_set(t.user_id,#userIdPlural#)
@} @}
@if(!isEmpty(studentSnOrName)){
and (ta.student_sn like #'%'+studentSnOrName+'%'# or ta.student_name like #'%'+studentSnOrName+'%'#)
@}
@if(!isEmpty(schoolClassIdPlural)){
and find_in_set(ta.class_id, #schoolClassIdPlural#)
@}
queryByConditionQuery queryByConditionQuery
@ -188,6 +194,12 @@ queryByConditionQuery
@if(!isEmpty(userIdPlural)){ @if(!isEmpty(userIdPlural)){
and find_in_set(t.user_id,#userIdPlural#) and find_in_set(t.user_id,#userIdPlural#)
@} @}
@if(!isEmpty(studentSnOrName)){
and (ta.student_sn like #'%'+studentSnOrName+'%'# or ta.student_name like #'%'+studentSnOrName+'%'#)
@}
@if(!isEmpty(schoolClassIdPlural)){
and find_in_set(ta.class_id, #schoolClassIdPlural#)
@}
@ -526,6 +538,12 @@ getValuesByQuery
@if(!isEmpty(userIdPlural)){ @if(!isEmpty(userIdPlural)){
and find_in_set(t.user_id,#userIdPlural#) and find_in_set(t.user_id,#userIdPlural#)
@} @}
@if(!isEmpty(studentSnOrName)){
and (ta.student_sn like #'%'+studentSnOrName+'%'# or ta.student_name like #'%'+studentSnOrName+'%'#)
@}
@if(!isEmpty(schoolClassIdPlural)){
and find_in_set(ta.class_id, #schoolClassIdPlural#)
@}
getValuesByQueryNotWithPermission getValuesByQueryNotWithPermission
@ -619,6 +637,12 @@ getValuesByQueryNotWithPermission
@if(!isEmpty(userIdPlural)){ @if(!isEmpty(userIdPlural)){
and find_in_set(t.user_id,#userIdPlural#) and find_in_set(t.user_id,#userIdPlural#)
@} @}
@if(!isEmpty(studentSnOrName)){
and (ta.student_sn like #'%'+studentSnOrName+'%'# or ta.student_name like #'%'+studentSnOrName+'%'#)
@}
@if(!isEmpty(schoolClassIdPlural)){
and find_in_set(ta.class_id, #schoolClassIdPlural#)
@}
@ -726,6 +750,12 @@ getExcelValues
@if(!isEmpty(userIdPlural)){ @if(!isEmpty(userIdPlural)){
and find_in_set(t.user_id,#userIdPlural#) and find_in_set(t.user_id,#userIdPlural#)
@} @}
@if(!isEmpty(studentSnOrName)){
and (ta.student_sn like #'%'+studentSnOrName+'%'# or ta.student_name like #'%'+studentSnOrName+'%'#)
@}
@if(!isEmpty(schoolClassIdPlural)){
and find_in_set(ta.class_id, #schoolClassIdPlural#)
@}
) )
UNION ALL UNION ALL
( (
@ -825,6 +855,12 @@ getExcelValues
@if(!isEmpty(userIdPlural)){ @if(!isEmpty(userIdPlural)){
and find_in_set(t.user_id,#userIdPlural#) and find_in_set(t.user_id,#userIdPlural#)
@} @}
@if(!isEmpty(studentSnOrName)){
and (ta.student_sn like #'%'+studentSnOrName+'%'# or ta.student_name like #'%'+studentSnOrName+'%'#)
@}
@if(!isEmpty(schoolClassIdPlural)){
and find_in_set(ta.class_id, #schoolClassIdPlural#)
@}
) )
)t )t

Loading…
Cancel
Save