Ver código fonte

作业查询

刘俊驰 8 meses atrás
pai
commit
f29a7cfd9a
21 arquivos alterados com 191 adições e 75 exclusões
  1. 26 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseHomeworkWrapper.java
  2. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationDetailDto.java
  3. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonExaminationDetailDto.java
  4. 17 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonTrainingDetailWrapper.java
  5. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseHomework.java
  6. 4 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ExtracurricularExercises.java
  7. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/LessonExamination.java
  8. 18 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentLessonExaminationDetail.java
  9. 16 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentLessonTrainingDetail.java
  10. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMusicCompareRecord.java
  11. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/MusicPracticeRecordWrapper.java
  12. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java
  13. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesServiceImpl.java
  14. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/LessonExaminationServiceImpl.java
  15. 25 40
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonExaminationDetailServiceImpl.java
  16. 1 19
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonTrainingDetailServiceImpl.java
  17. 10 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  18. 5 2
      mec-biz/src/main/resources/config/mybatis/CourseHomeworkMapper.xml
  19. 4 3
      mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesMapper.xml
  20. 7 4
      mec-biz/src/main/resources/config/mybatis/StudentLessonExaminationDetailMapper.xml
  21. 2 2
      mec-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml

+ 26 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseHomeworkWrapper.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dto;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.StudentCourseHomework;
@@ -9,7 +10,10 @@ import com.ym.mec.biz.dal.enums.ImSendTypeEnum;
 import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import javax.validation.constraints.NotNull;
 import java.util.Date;
@@ -280,10 +284,32 @@ public class CourseHomeworkWrapper {
         @NotNull(message = "作业详情id不能为空")
         private Long id;
 
+        @ApiModelProperty("上传文件JSON")
+        private FileJson fileJson;
     }
 
 
     @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class FileJson {
+
+        @ApiModelProperty("文件路径,如果是评测则为评测记录ID")
+        private String filePath;
+
+        @ApiModelProperty("文件类型:评测:EVALUATION,IMG:图片,SOUND:音频,VIDEO:视频")
+        private String fileType;
+
+        @ApiModelProperty("文件过期标志")
+        private Boolean expireFlag;
+
+        @ApiModelProperty("文件内容")
+        private String content;
+
+    }
+
+    @Data
     @ApiModel(value = "StudentCourseHomeworkDetail-学生课程作业详情")
     public static class StudentCourseHomeworkDetail {
 

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationDetailDto.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dto;
 
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.ym.mec.biz.dal.enums.HardLevelEnum;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -30,5 +31,11 @@ public class LessonExaminationDetailDto{
 
     @ApiModelProperty("结束小节")
     private Integer end;
+
+    @ApiModelProperty("作业类型,MUSIC_SCORE:曲目评测,DESCRIPTION:描述")
+    private String type;
+
+    @ApiModelProperty("作业描述")
+    private String desc;
 }
 

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonExaminationDetailDto.java

@@ -65,5 +65,15 @@ public class StudentLessonExaminationDetailDto {
 
     @ApiModelProperty("作业类型,MUSIC_SCORE:曲目评测,DESCRIPTION:描述")
     private String type;
+
+
+    @ApiModelProperty("作业描述")
+    private String desc;
+
+    @ApiModelProperty("上传文件JSON")
+    private String fileJson;
+
+    @ApiModelProperty("上传作业文件失效删除标记")
+    private Boolean fileDelFlag;
 }
 

+ 17 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonTrainingDetailWrapper.java

@@ -52,8 +52,13 @@ public class StudentLessonTrainingDetailWrapper {
         @ApiModelProperty("结束小节")
         private Integer end;
 
-        @ApiModelProperty("作业类型,VIDEO,MUSIC_SCORE")
+        @ApiModelProperty("作业类型,VIDEO,MUSIC_SCORE,DESCRIPTION:描述")
         private String homeworkType = "MUSIC_SCORE";
+
+
+        @ApiModelProperty("作业描述")
+        private String desc;
+
     }
 
     @Data
@@ -123,6 +128,17 @@ public class StudentLessonTrainingDetailWrapper {
 
         @ApiModelProperty("使用状态 锁定: LOCK 解锁:UNLOCK")
         private String useStatus;
+
+
+
+        @ApiModelProperty("作业描述")
+        private String desc;
+
+        @ApiModelProperty("上传文件JSON")
+        private String fileJson;
+
+        @ApiModelProperty("上传作业文件失效删除标记")
+        private Boolean fileDelFlag;
         
         public String jsonString() {
             return JSON.toJSONString(this);

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseHomework.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.ym.mec.biz.dal.dto.LessonExaminationSaveDto;
 import com.ym.mec.biz.dal.dto.MusicScoreSubjectDto;
 import com.ym.mec.biz.dal.dto.StudentLessonTrainingDetailWrapper;
@@ -52,6 +53,9 @@ public class CourseHomework extends BaseEntity {
 	private String musicGroupId;
 
     private String versionTag;
+
+    @ApiModelProperty(value = "文件过期天数")
+    private Integer fileExpireDay;
 	
 	private MusicGroup musicGroup = new MusicGroup();
 	

+ 4 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ExtracurricularExercises.java

@@ -92,8 +92,11 @@ public class ExtracurricularExercises extends BaseEntity {
 	private int status;
 	
 	private String organName;
+    @ApiModelProperty(value = "文件过期天数")
+    private Integer fileExpireDay;
 
-	private ImSendTypeEnum msgType = ImSendTypeEnum.TXT;
+
+    private ImSendTypeEnum msgType = ImSendTypeEnum.TXT;
 
 	/** 伴奏列表(多个用逗号分隔) */
 	@ApiModelProperty(value="伴奏列表(多个用逗号分隔)")

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/LessonExamination.java

@@ -71,5 +71,9 @@ public class LessonExamination{
 
     @TableField("tenant_id_")
     private Integer tenantId = TenantContextHolder.getTenantId();
+
+    @TableField("file_expire_day_")
+    @ApiModelProperty(value = "文件过期天数")
+    private Integer fileExpireDay;
 }
 

+ 18 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentLessonExaminationDetail.java

@@ -97,5 +97,23 @@ public class StudentLessonExaminationDetail implements Serializable {
     @ApiModelProperty("作业类型,MUSIC_SCORE:曲目评测,DESCRIPTION:描述")
     @TableField(value = "type_")
     private String type;
+
+
+    @ApiModelProperty("评测记录ID")
+    @TableField(value = "record_id_")
+    private Long recordId;
+
+
+    @ApiModelProperty("作业描述")
+    @TableField(value = "desc_")
+    private String desc;
+
+    @ApiModelProperty("上传文件JSON")
+    @TableField(value = "file_json_")
+    private String fileJson;
+
+    @ApiModelProperty("上传作业文件失效删除标记")
+    @TableField(value = "file_del_flag_")
+    private Boolean fileDelFlag;
 }
 

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentLessonTrainingDetail.java

@@ -104,4 +104,20 @@ public class StudentLessonTrainingDetail implements Serializable {
     @ApiModelProperty("课件ID 布置课件视频作业时")
     @TableField(value = "lesson_courseware_id_")
     private String lessonCoursewareId;
+
+
+
+    @ApiModelProperty("作业描述")
+    @TableField(value = "desc_")
+    private String desc;
+
+    @ApiModelProperty("上传文件JSON")
+    @TableField(value = "file_json_")
+    private String fileJson;
+
+    @ApiModelProperty("上传作业文件失效删除标记")
+    @TableField(value = "file_del_flag_")
+    private Boolean fileDelFlag;
+
+
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMusicCompareRecord.java

@@ -105,6 +105,8 @@ public class SysMusicCompareRecord extends BaseEntity {
 
     private Float playRate;
 
+    private Long lessonDetailId;
+
 	public SysMusicCompareRecord(FeatureType feature) {
 		this.feature = feature;
 	}

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/MusicPracticeRecordWrapper.java

@@ -318,6 +318,9 @@ public class MusicPracticeRecordWrapper {
 
         @ApiModelProperty("是否隐藏评测记录 0:不隐藏 1:隐藏")
         private Boolean hiddenFlag;
+
+        @ApiModelProperty("作业详情ID")
+        private Long lessonDetailId;
         public String jsonString() {
             return JSON.toJSONString(this);
         }
@@ -481,6 +484,8 @@ public class MusicPracticeRecordWrapper {
         @ApiModelProperty("假删除标识 0:未删除 1:已删除")
         private Boolean delFlag;
 
+        @ApiModelProperty("作业详情ID")
+        private Long lessonDetailId;
 
         public static MusicPracticeRecordWrapper.Entity toEntity(SysMusicCompareRecord record) {
             if (record ==null) {
@@ -552,6 +557,7 @@ public class MusicPracticeRecordWrapper {
             sysMusicCompareRecord.setInstrumentId(this.instrumentId!=null?Long.parseLong(this.instrumentId):null);
             sysMusicCompareRecord.setDelFlag(this.delFlag);
             sysMusicCompareRecord.setPlayRate(this.playRate);
+            sysMusicCompareRecord.setLessonDetailId(this.lessonDetailId);
 
             return sysMusicCompareRecord;
 

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -456,6 +456,12 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
      */
     String USER_MUSIC_DRAFT_TIME = "user_music_draft_time";
 
+
+    /**
+     * 作业文件有效时间(天)
+     */
+    String HOMEWORK_FILE_EXPIRE_TIME = "homework_file_expire_time";
+
     static void checkActivityDate(String startTimeStr, String endTimeStr) {
         if(StringUtils.isEmpty(startTimeStr) || StringUtils.isEmpty(startTimeStr)){
             return;

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesServiceImpl.java

@@ -33,6 +33,8 @@ import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
+import static com.ym.mec.biz.service.SysConfigService.HOMEWORK_FILE_EXPIRE_TIME;
+
 @Service
 public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, ExtracurricularExercises> implements ExtracurricularExercisesService {
 
@@ -59,6 +61,9 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E
     @Autowired
     private StudentLessonTrainingDetailService studentLessonTrainingDetailService;
 
+    @Autowired
+    private SysConfigDao sysConfigDao;
+
     @Override
     public BaseDAO<Long, ExtracurricularExercises> getDAO() {
         return extracurricularExercisesDao;
@@ -98,6 +103,11 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E
                     .withHour(21).withMinute(0).withSecond(0).withNano(0);
             exercises.setExpireDate(Date.from(localDateTime.atZone(DateUtil.zoneId).toInstant()));
         }
+        String fileExpireTime = sysConfigDao.findConfigValue(HOMEWORK_FILE_EXPIRE_TIME);
+        if (StringUtils.isNotBlank(fileExpireTime)) {
+            int fileExpireTimeInt = Integer.parseInt(fileExpireTime);
+            exercises.setFileExpireDay(fileExpireTimeInt==0?null:fileExpireTimeInt);
+        }
         List<Integer> studentIds = Arrays.asList(exercises.getStudentIdList().split(",")).stream().mapToInt(Integer::valueOf).boxed().collect(Collectors.toList());
         exercises.setBatchNo(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
         exercises.setExpectNum(studentIds.size());

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/LessonExaminationServiceImpl.java

@@ -26,6 +26,8 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import static com.ym.mec.biz.service.SysConfigService.HOMEWORK_FILE_EXPIRE_TIME;
+
 /**
  * 进度评测表(LessonExamination)表服务实现类
  *
@@ -108,6 +110,11 @@ public class LessonExaminationServiceImpl extends ServiceImpl<LessonExaminationD
             }
         }
         lessonExamination.setExpireDate(expireDate);
+        String fileExpireTime = sysConfigDao.findConfigValue(HOMEWORK_FILE_EXPIRE_TIME);
+        if (StringUtils.isNotBlank(fileExpireTime)) {
+            int i = Integer.parseInt(fileExpireTime);
+            lessonExamination.setFileExpireDay(i==0?null:i);
+        }
         lessonExamination.setTeacherId(param.getTeacherId());
         baseMapper.insert(lessonExamination);
         List<Integer> studentIds = studentLessonExaminationService.save(lessonExamination.getId(), param.getStudentLessonExaminationSaveDtos());

+ 25 - 40
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonExaminationDetailServiceImpl.java

@@ -43,49 +43,34 @@ public class StudentLessonExaminationDetailServiceImpl extends ServiceImpl<Stude
         for (StudentLessonExaminationSaveDto dto : studentLessonExaminationSaveDtos) {
             String[] studentIds = dto.getStudentIds().split(",");
             List<LessonExaminationDetailDto> detailDtos = dto.getExaminationDetailDtos();
-            if (CollectionUtils.isEmpty(detailDtos) && StringUtils.isEmpty(dto.getMemo())) {
+            if (CollectionUtils.isEmpty(detailDtos)) {
                 throw new BizException("有部分声部未设置作业内容");
             }
-            if (CollectionUtils.isEmpty(detailDtos)) {
-//                throw new BizException("有部分声部未选择曲目");
-                for (String id : studentIds) {
-                    Integer studentId = Integer.parseInt(id);
-                    for (int i = 0; i < 4; i++) {
-                        StudentLessonExaminationDetail studentLessonExaminationDetail = new StudentLessonExaminationDetail();
-                        studentLessonExaminationDetail.setUserId(studentId);
-                        studentLessonExaminationDetail.setMemo(dto.getMemo());
-                        studentLessonExaminationDetail.setLessonExaminationId(lessonExaminationId);
-                        studentLessonExaminationDetail.setGroup(dto.getGroup());
-                        studentLessonExaminationDetail.setType("DESCRIPTION");
-                        detailList.add(studentLessonExaminationDetail);
-                    }
-                }
-            } else {
-                for (String id : studentIds) {
-                    Integer studentId = Integer.parseInt(id);
-                    Integer score = 100 / detailDtos.size();
-                    Integer subScore = 100 - score * detailDtos.size();
-                    for (int i = 0; i < detailDtos.size(); i++) {
-                        LessonExaminationDetailDto vo = detailDtos.get(i);
-                        StudentLessonExaminationDetail studentLessonExaminationDetail = new StudentLessonExaminationDetail();
-                        studentLessonExaminationDetail.setUserId(studentId);
-                        studentLessonExaminationDetail.setMemo(dto.getMemo());
-                        studentLessonExaminationDetail.setLessonExaminationId(lessonExaminationId);
-                        studentLessonExaminationDetail.setMusicScoreId(vo.getMusicScoreId());
-                        studentLessonExaminationDetail.setHeardLevel(vo.getHeardLevel());
-                        studentLessonExaminationDetail.setStandardScore(vo.getScore());
-                        studentLessonExaminationDetail.setStart(vo.getStart());
-                        studentLessonExaminationDetail.setType("MUSIC_SCORE");
-                        studentLessonExaminationDetail.setEnd(vo.getEnd());
-                        studentLessonExaminationDetail.setGroup(dto.getGroup());
-                        if (i == 0) {
-                            studentLessonExaminationDetail.setAvgScore(score + subScore);
-                        } else {
-                            studentLessonExaminationDetail.setAvgScore(score);
-                        }
-                        studentLessonExaminationDetail.setPartIndex(vo.getPartIndex());
-                        detailList.add(studentLessonExaminationDetail);
+            for (String id : studentIds) {
+                Integer studentId = Integer.parseInt(id);
+                Integer score = 100 / detailDtos.size();
+                Integer subScore = 100 - score * detailDtos.size();
+                for (int i = 0; i < detailDtos.size(); i++) {
+                    LessonExaminationDetailDto vo = detailDtos.get(i);
+                    StudentLessonExaminationDetail studentLessonExaminationDetail = new StudentLessonExaminationDetail();
+                    studentLessonExaminationDetail.setUserId(studentId);
+                    studentLessonExaminationDetail.setMemo(dto.getMemo());
+                    studentLessonExaminationDetail.setLessonExaminationId(lessonExaminationId);
+                    studentLessonExaminationDetail.setMusicScoreId(vo.getMusicScoreId());
+                    studentLessonExaminationDetail.setHeardLevel(vo.getHeardLevel());
+                    studentLessonExaminationDetail.setStandardScore(vo.getScore());
+                    studentLessonExaminationDetail.setStart(vo.getStart());
+                    studentLessonExaminationDetail.setType(vo.getType());
+                    studentLessonExaminationDetail.setDesc(vo.getDesc());
+                    studentLessonExaminationDetail.setEnd(vo.getEnd());
+                    studentLessonExaminationDetail.setGroup(dto.getGroup());
+                    if (i == 0) {
+                        studentLessonExaminationDetail.setAvgScore(score + subScore);
+                    } else {
+                        studentLessonExaminationDetail.setAvgScore(score);
                     }
+                    studentLessonExaminationDetail.setPartIndex(vo.getPartIndex());
+                    detailList.add(studentLessonExaminationDetail);
                 }
             }
         }

+ 1 - 19
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonTrainingDetailServiceImpl.java

@@ -113,7 +113,7 @@ public class StudentLessonTrainingDetailServiceImpl extends ServiceImpl<StudentL
                                                             String memo) {
         log.info("将作业标准 转换为 需要的作业详情 {},{}", detailList, userIdList);
         // 保存作业标准
-        if ((CollectionUtils.isEmpty(detailList) && StringUtils.isBlank(memo)) || CollectionUtils.isEmpty(userIdList)) {
+        if (CollectionUtils.isEmpty(detailList) || CollectionUtils.isEmpty(userIdList)) {
             return new ArrayList<>();
         }
         if (group == null) {
@@ -121,24 +121,6 @@ public class StudentLessonTrainingDetailServiceImpl extends ServiceImpl<StudentL
         }
         // 描述类型的作业
         Date date = new Date();
-        if (CollectionUtils.isEmpty(detailList)) {
-            List<StudentLessonTrainingDetail> result = new ArrayList<>();
-            for (Integer i : userIdList) {
-                StudentLessonTrainingDetail studentLessonTrainingDetail = new StudentLessonTrainingDetail();
-                studentLessonTrainingDetail.setUserId(i.longValue());
-                studentLessonTrainingDetail.setType(type);
-                studentLessonTrainingDetail.setGroup(group);
-                studentLessonTrainingDetail.setCourseHomeworkId(homeworkId);
-                studentLessonTrainingDetail.setTrainingTimes(0);
-                studentLessonTrainingDetail.setHomeworkType("DESCRIPTION");
-                studentLessonTrainingDetail.setTrainingStatus(StandardEnum.NOT_START);
-                studentLessonTrainingDetail.setCreateTime(date);
-                studentLessonTrainingDetail.setUpdateTime(date);
-                studentLessonTrainingDetail.setMemo(memo);
-                result.add(studentLessonTrainingDetail);
-            }
-            return result;
-        }
 
         List<StudentLessonTrainingDetail> result = JSON.parseArray(JSON.toJSONString(detailList), StudentLessonTrainingDetail.class);
         // 根据声部添加学生作业详情

+ 10 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -42,6 +42,7 @@ import java.util.function.Function;
 import java.util.stream.Collectors;
 import static com.ym.mec.biz.dal.enums.ComplaintsStatusEnum.REPEAL;
 import static com.ym.mec.biz.dal.enums.SignInStatusEnum.*;
+import static com.ym.mec.biz.service.SysConfigService.HOMEWORK_FILE_EXPIRE_TIME;
 
 @Service
 public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherAttendance>  implements TeacherAttendanceService {
@@ -99,6 +100,9 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
     @Autowired
     private SysMessageConfigDao sysMessageConfigDao;
 
+    @Autowired
+    private  SysConfigDao sysConfigDao;
+
 	@Override
 	public BaseDAO<Long, TeacherAttendance> getDAO() {
 		return teacherAttendanceDao;
@@ -316,9 +320,6 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
                             "SCHOOL",musicGroup.getName(),user.getRealName(),courseTime,courseSchedule.getName());
                 }
             }
-
-
-
 			return result;
 		}else if(teacherAttendance.getSignOutTime() == null && teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_OUT.getCode())){
 			int i = studentAttendanceDao.countByCourseSchedule(courseSchedule.getId());
@@ -397,6 +398,12 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
                             .withHour(21).withMinute(0).withSecond(0).withNano(0);
 					courseHomework.setExpiryDate(Date.from(localDateTime.atZone(DateUtil.zoneId).toInstant()));
 
+                    String fileExpireTime = sysConfigDao.findConfigValue(HOMEWORK_FILE_EXPIRE_TIME);
+                    if (StringUtils.isNotBlank(fileExpireTime)) {
+                        int fileExpireTimeInt = Integer.parseInt(fileExpireTime);
+                        courseHomework.setFileExpireDay(fileExpireTimeInt==0?null:fileExpireTimeInt);
+                    }
+
 					courseHomeworkService.insert(courseHomework);
 					List<StudentCourseHomework> studentCourseHomeworks = new ArrayList<>();
 

+ 5 - 2
mec-biz/src/main/resources/config/mybatis/CourseHomeworkMapper.xml

@@ -66,10 +66,10 @@
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.CourseHomework" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
 		INSERT INTO course_homework (group_type_,course_schedule_id_,attachments_,
 		                             title_,content_,create_time_,update_time_,music_group_id_,
-		                             class_group_id_,completed_num_,expect_num_,expiry_date_,tenant_id_)
+		                             class_group_id_,completed_num_,expect_num_,expiry_date_,tenant_id_,file_expire_day_)
 		VALUES(#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
 		       #{courseScheduleId},#{attachments},#{title},#{content},now(),now(),#{musicGroupId},
-		       #{classGroupId},#{completedNum},#{expectNum},#{expiryDate},#{tenantId})
+		       #{classGroupId},#{completedNum},#{expectNum},#{expiryDate},#{tenantId},#{fileExpireDay})
 	</insert>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -109,6 +109,9 @@
             <if test="versionTag != null">
                 version_tag_ = #{versionTag},
             </if>
+            <if test="fileExpireDay != null">
+                file_expire_day_ = #{fileExpireDay},
+            </if>
 			update_time_ = NOW()
 		</set>
 		WHERE id_ = #{id} and tenant_id_ = #{tenantId}

+ 4 - 3
mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesMapper.xml

@@ -31,6 +31,7 @@
 		<result column="type" property="type" />
 		<result column="push_flag_" property="pushFlag" />
 		<result column="group_type_" property="groupType" />
+		<result column="file_expire_day_" property="fileExpireDay" />
 	</resultMap>
 
 	<sql id="queryPageCondition">
@@ -100,9 +101,9 @@
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ExtracurricularExercises" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
 		INSERT INTO extracurricular_exercises (music_group_id_,teacher_id_,student_id_list_,batch_no_,
 		                                       title_,attachments_,content_,expire_date_,completed_num_,expect_num_,
-		                                       create_time_,update_time_,tenant_id_,group_type_)
+		                                       create_time_,update_time_,tenant_id_,group_type_,file_expire_day_)
 		VALUES(#{musicGroupId},#{teacherId},#{studentIdList},#{batchNo},#{title},#{attachments},
-		       #{content},#{expireDate},#{completedNum},#{expectNum},NOW(), NOW(),#{tenantId},#{groupType})
+		       #{content},#{expireDate},#{completedNum},#{expectNum},NOW(), NOW(),#{tenantId},#{groupType},#{fileExpireDay})
 	</insert>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -156,7 +157,7 @@
 		SELECT ee.id_,ee.teacher_id_,ee.student_id_list_,ee.group_type_ as type,ee.batch_no_,ee.title_,ee.attachments_,ee.music_group_id_,
 		       ee.content_,ee.expire_date_,ee.completed_num_,ee.expect_num_,ee.create_time_,ee.update_time_,ee.tenant_id_
 		     ,u.real_name_ username_,o.name_ organ_name_,eer.music_score_id_,ee.create_time_ as assignTime,
-		      mg.name_ as musicGroupName,ee.class_group_id_ as classGroupId,ee.version_tag_ as versionTag
+		      mg.name_ as musicGroupName,ee.class_group_id_ as classGroupId,ee.version_tag_ as versionTag,ee.file_expire_day_
 		FROM extracurricular_exercises ee LEFT JOIN sys_user u ON ee.teacher_id_ = u.id_
 		LEFT JOIN teacher t ON t.id_ = ee.teacher_id_
         left join sys_user su on t.id_ = su.id_

+ 7 - 4
mec-biz/src/main/resources/config/mybatis/StudentLessonExaminationDetailMapper.xml

@@ -17,27 +17,30 @@
         <result column="part_index_" property="partIndex"/>
         <result column="training_time_" property="trainingTime"/>
         <result column="memo_" property="memo"/>
-        <result column="type_" property="type"/>
         <result column="group_" property="group"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
+        <result column="type_" property="type"/>
+        <result column="desc_" property="desc"/>
+        <result column="file_json_" property="fileJson"/>
+        <result column="file_del_flag_" property="fileDelFlag"/>
     </resultMap>
 
     <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
             parameterType="com.ym.mec.biz.dal.entity.StudentLessonExaminationDetail">
         insert into student_lesson_examination_detail(user_id_, lesson_examination_id_, music_score_id_, heard_level_,standard_score_,
-                                                      avg_score_, part_index_,start_,end_,memo_,group_,type_)
+                                                      avg_score_, part_index_,start_,end_,memo_,group_,type_,desc_,file_json_)
         values
         <foreach collection="entities" item="entity" separator=",">
             (#{entity.userId}, #{entity.lessonExaminationId},#{entity.musicScoreId}, #{entity.heardLevel,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-             #{entity.standardScore}, #{entity.avgScore},#{entity.partIndex},#{entity.start},#{entity.end},#{entity.memo},#{entity.group},#{entity.type})
+             #{entity.standardScore}, #{entity.avgScore},#{entity.partIndex},#{entity.start},#{entity.end},#{entity.memo},#{entity.group},#{entity.type},#{entity.desc},#{entity.fileJson})
         </foreach>
     </insert>
     <select id="queryAll" resultType="com.ym.mec.biz.dal.dto.StudentLessonExaminationDetailDto">
         select sms.name_ musicScoreName,sled.id_ studentLessonExaminationDetailId, sled.user_id_ userId, sled.lesson_examination_id_ lessonExaminationId, sled.music_score_id_ musicScoreId,
                sled.heard_level_ heardLevel, sled.training_score_ trainingScore,sled.avg_score_ avgScore, sled.actual_avg_score_ actualAvgScore, sled.start_ start, sled.end_ end,
                sled.standard_score_ standardScore, sled.part_index_ partIndex,CASE WHEN sled.training_time_ IS NULL THEN 0 ELSE 1 END trainingFlag,
-               sms.del_flag_ = 0 AND sms.show_flag_ = 1 validFlag,sled.memo_ memo,sled.group_ 'group',sled.type_ type
+               sms.del_flag_ = 0 AND sms.show_flag_ = 1 validFlag,sled.memo_ memo,sled.group_ 'group',sled.type_ type,sled.desc_ 'desc',sled.file_json_ fileJson,sled.file_del_flag_ fileDelFlag
         from student_lesson_examination_detail sled
         left join sys_music_score sms ON sms.id_ = sled.music_score_id_
         <where>

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml

@@ -58,12 +58,12 @@
 		INSERT INTO sys_music_compare_record (id_,user_id_,sys_music_score_id_,heard_level_,behavior_id_,score_data_,score_,intonation_,cadence_,integrity_,
 		                                      record_file_path_,video_file_path_,device_type_,client_id_,play_time_,speed_,monday_,
 												source_time_,feature_,create_time_,create_date_,update_time_,part_index_,tenant_id_,subject_id_,
-        custom_configuration_,practice_time_,practice_source_,result_analyze_,headphone_flag_,instrument_id_,hidden_flag_,del_flag_,play_rate_)
+        custom_configuration_,practice_time_,practice_source_,result_analyze_,headphone_flag_,instrument_id_,hidden_flag_,del_flag_,play_rate_,lesson_detail_id_)
 		VALUES(#{id},#{userId},#{sysMusicScoreId},#{heardLevel,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{behaviorId},#{scoreData},
 		       #{score},#{intonation},#{cadence},#{integrity},
 		       #{recordFilePath},#{videoFilePath},#{deviceType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{clientId},#{playTime},#{speed},#{monday},
 		       #{sourceTime},#{feature,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{createTime}, #{createDate}, NOW(),#{partIndex},#{tenantId},#{subjectId}
-            ,#{customConfiguration},#{practiceTime},#{practiceSource},#{resultAnalyze},#{headphoneFlag},#{instrumentId},#{hiddenFlag},#{delFlag},#{playRate})
+            ,#{customConfiguration},#{practiceTime},#{practiceSource},#{resultAnalyze},#{headphoneFlag},#{instrumentId},#{hiddenFlag},#{delFlag},#{playRate},#{lessonDetailId})
 	</insert>
 	<insert id="init">
 		insert into sys_music_compare_day_data (user_id_, day_, train_num_, train_time_, tenant_id_)