Browse Source

Merge branch 'feature_HW_20230331' of http://git.dayaedu.com/yonge/mec into master_saas

 Conflicts:
	mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
	mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
zouxuan 2 years ago
parent
commit
58021d8988
60 changed files with 2413 additions and 51 deletions
  1. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  2. 31 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/LessonExaminationDao.java
  3. 25 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentLessonExaminationDao.java
  4. 23 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentLessonExaminationDetailDao.java
  5. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentLessonTrainingDetailMapper.java
  6. 104 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseHomeworkWrapper.java
  7. 30 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationDetailDto.java
  8. 38 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationResultDto.java
  9. 44 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationResultDto1.java
  10. 53 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationResultDto2.java
  11. 36 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationSaveDto.java
  12. 23 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationSubmitDto.java
  13. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicScoreSubjectDto.java
  14. 48 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonExaminationDetailDto.java
  15. 24 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonExaminationDetailDto1.java
  16. 41 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonExaminationDto.java
  17. 34 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonExaminationDto1.java
  18. 46 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonTrainingDetailWrapper.java
  19. 13 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseHomework.java
  20. 36 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ExtracurricularExercises.java
  21. 63 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/LessonExamination.java
  22. 13 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentCourseHomework.java
  23. 59 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentLessonExamination.java
  24. 80 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentLessonExaminationDetail.java
  25. 70 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentLessonTrainingDetail.java
  26. 13 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TeacherAttendance.java
  27. 43 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EHomeWorkStatus.java
  28. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/StandardEnum.java
  29. 24 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/LessonExaminationQueryInfo.java
  30. 24 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/LessonExaminationQueryInfo1.java
  31. 27 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/LessonExaminationQueryInfo2.java
  32. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentLessonExaminationQueryDto.java
  33. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentLessonExaminationQueryInfo.java
  34. 35 0
      mec-biz/src/main/java/com/ym/mec/biz/service/LessonExaminationService.java
  35. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentExtracurricularExercisesSituationService.java
  36. 26 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentLessonExaminationDetailService.java
  37. 40 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentLessonExaminationService.java
  38. 44 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentLessonTrainingDetailService.java
  39. 68 31
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesServiceImpl.java
  40. 13 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java
  41. 128 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/LessonExaminationServiceImpl.java
  42. 33 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentExtracurricularExercisesSituationServiceImpl.java
  43. 69 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonExaminationDetailServiceImpl.java
  44. 90 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonExaminationServiceImpl.java
  45. 99 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonTrainingDetailServiceImpl.java
  46. 32 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  47. 42 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  48. 87 0
      mec-biz/src/main/resources/config/mybatis/LessonExaminationMapper.xml
  49. 3 2
      mec-biz/src/main/resources/config/mybatis/StudentCourseHomeworkMapper.xml
  50. 53 0
      mec-biz/src/main/resources/config/mybatis/StudentLessonExaminationDetailMapper.xml
  51. 62 0
      mec-biz/src/main/resources/config/mybatis/StudentLessonExaminationMapper.xml
  52. 5 0
      mec-biz/src/main/resources/config/mybatis/StudentLessonTrainingDetailMapper.xml
  53. 44 0
      mec-student/src/main/java/com/ym/mec/student/controller/LessonExaminationController.java
  54. 51 0
      mec-student/src/main/java/com/ym/mec/student/controller/StudentLessonExaminationController.java
  55. 15 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/ExtracurricularExercisesController.java
  56. 53 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/LessonExaminationController.java
  57. 48 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/StudentLessonExaminationController.java
  58. 43 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/StudentLessonExaminationDetailController.java
  59. 45 0
      mec-web/src/main/java/com/ym/mec/web/controller/LessonExaminationController.java
  60. 40 0
      mec-web/src/main/java/com/ym/mec/web/controller/StudentLessonExaminationController.java

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -1981,4 +1981,14 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return boolean
      */
     int checkCourseIsSettlementReport(@Param("courseScheduleId") Long courseScheduleId);
+
+    /**
+     * 老师端练习列表
+     *
+     * @param queryInfo
+     * @param courseIds
+     * @return
+     */
+    List<CourseHomeworkWrapper.CourseHomeworkList> queryTeacherServeHomeworkDetailV2(@Param(
+        "param") CourseHomeworkWrapper.CourseHomeworkQuery queryInfo, @Param("courseIds") List<Long> courseIds);
 }

+ 31 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/LessonExaminationDao.java

@@ -0,0 +1,31 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ym.mec.biz.dal.dto.LessonExaminationResultDto;
+import com.ym.mec.biz.dal.dto.LessonExaminationResultDto1;
+import com.ym.mec.biz.dal.dto.LessonExaminationSaveDto;
+import com.ym.mec.biz.dal.entity.LessonExamination;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 进度评测表(LessonExamination)表数据库访问层
+ *
+ * @author zx
+ * @since 2023-04-03 18:20:27
+ */
+public interface LessonExaminationDao extends BaseMapper<LessonExamination> {
+
+    int insertBatch(@Param("entities") List<LessonExaminationSaveDto> entities);
+
+    List<LessonExaminationResultDto> queryPage(Map<String, Object> params);
+
+    int findCount(Map<String, Object> params);
+
+    List<LessonExaminationResultDto1> queryPageByStudent(Map<String, Object> params);
+
+    int findCountByStudent(Map<String, Object> params);
+}
+

+ 25 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentLessonExaminationDao.java

@@ -0,0 +1,25 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ym.mec.biz.dal.dto.StudentLessonExaminationDto;
+import com.ym.mec.biz.dal.entity.StudentLessonExamination;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 学生进度评测表(StudentLessonExamination)表数据库访问层
+ *
+ * @author zx
+ * @since 2023-04-03 18:21:30
+ */
+public interface StudentLessonExaminationDao extends BaseMapper<StudentLessonExamination> {
+
+    int insertBatch(@Param("entities") List<StudentLessonExamination> entities);
+
+    List<StudentLessonExaminationDto> queryPage(Map<String, Object> params);
+
+    int findCount(Map<String, Object> params);
+}
+

+ 23 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentLessonExaminationDetailDao.java

@@ -0,0 +1,23 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ym.mec.biz.dal.dto.StudentLessonExaminationDetailDto;
+import com.ym.mec.biz.dal.entity.StudentLessonExaminationDetail;
+import com.ym.mec.biz.dal.page.StudentLessonExaminationQueryDto;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 进度评测详情表(StudentLessonExaminationDetail)表数据库访问层
+ *
+ * @author zx
+ * @since 2023-04-03 18:22:00
+ */
+public interface StudentLessonExaminationDetailDao extends BaseMapper<StudentLessonExaminationDetail> {
+
+    int insertBatch(@Param("entities") List<StudentLessonExaminationDetail> entities);
+
+    List<StudentLessonExaminationDetailDto> queryAll(@Param("query") StudentLessonExaminationQueryDto query);
+}
+

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentLessonTrainingDetailMapper.java

@@ -0,0 +1,14 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ym.mec.biz.dal.entity.StudentLessonTrainingDetail;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 练习内容
+ * 2023-03-31 14:18:47
+ */
+@Repository
+public interface StudentLessonTrainingDetailMapper extends BaseMapper<StudentLessonTrainingDetail> {
+	
+}

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

@@ -0,0 +1,104 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.enums.EHomeWorkStatus;
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2023-04-03
+ */
+@Data
+@ApiModel(value = "课程作业包装类")
+public class CourseHomeworkWrapper {
+
+    @Data
+    @ApiModel(value = "课程作业查询条件")
+    public static class CourseHomeworkQuery extends QueryInfo {
+
+
+
+        @ApiModelProperty("当月")
+        private Date month;
+
+        @ApiModelProperty(value = "开始时间")
+        private Date startTime;
+
+        @ApiModelProperty(value = "结束时间")
+        private Date endTime;
+
+        @ApiModelProperty(value = "老师id")
+        private Integer teacherId;
+
+        @ApiModelProperty(value = "课程类型 课后练习 :MUSIC  小课练习: 包含VIP,PRACTICE")
+        private String courseType;
+
+        @ApiModelProperty(value = "乐团id")
+        private Integer musicGroupId;
+
+        @ApiModelProperty(value = "班级类型  NORMAL:声部班,MIX:合奏班")
+        private String classType;
+
+        @ApiModelProperty(value = "作业练习状态 UNASSIGNED:未布置,ASSIGNED:已布置,DEADLINE:已截止")
+        private EHomeWorkStatus homeWorkStatus;
+    }
+
+
+
+    @Data
+    @ApiModel(value = "课程作业列表")
+    public static class CourseHomeworkList {
+
+        @ApiModelProperty(value = "课程id")
+        private Integer courseScheduleId;
+
+        @ApiModelProperty(value = "课程日期")
+        private Date classDate;
+
+        @ApiModelProperty(value = "开始时间")
+        private Date startTime;
+
+        @ApiModelProperty(value = "结束时间")
+        private Date endTime;
+
+        @ApiModelProperty(value = "作业练习状态 UNASSIGNED:未布置,ASSIGNED:已布置,DEADLINE:已截止")
+        private EHomeWorkStatus homeWorkStatus;
+
+        @ApiModelProperty(value = "老师id")
+        private Integer teacherId;
+
+        @ApiModelProperty(value = "乐团id")
+        private Integer musicGroupId;
+
+        @ApiModelProperty(value = "乐团名称")
+        private String musicGroupName;
+
+        @ApiModelProperty(value = "乐团图片")
+        private String musicGroupImg;
+
+        @ApiModelProperty(value = "班级类型  NORMAL:声部班,MIX:合奏班")
+        private String classType;
+
+        @ApiModelProperty(value = "声部名称")
+        private String subjectName;
+
+        @ApiModelProperty("班级名称")
+        private String classGroupName;
+
+        @ApiModelProperty("教学形式(线上、线下)")
+        private String teachMode;
+
+        @ApiModelProperty("学生人数")
+        private Integer studentNum;
+
+        @ApiModelProperty("已完成人数")
+        private Integer finishNum;
+    }
+}

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

@@ -0,0 +1,30 @@
+package com.ym.mec.biz.dal.dto;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * @author zx
+ * @since 2023-04-03 18:20:36
+ */
+@Data
+public class LessonExaminationDetailDto{
+
+    @ApiModelProperty(value = "曲目id")
+    private Long musicScoreId;
+
+    @ApiModelProperty(value = "评测难度")
+    private String heardLevel;
+
+    @ApiModelProperty(value = "分谱")
+    private Integer partIndex;
+
+    @ApiModelProperty(value = "合格分数")
+    private Integer score;
+
+    @ApiModelProperty(value = "声部")
+    private Integer subjectId;
+}
+

+ 38 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationResultDto.java

@@ -0,0 +1,38 @@
+package com.ym.mec.biz.dal.dto;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * @author zx
+ * @since 2023-04-03 18:20:36
+ */
+@Data
+public class LessonExaminationResultDto{
+    @ApiModelProperty(value = "测验编号")
+    private Long id;
+
+    @ApiModelProperty(value = "班级名称")
+    private String classGroupName;
+
+    @ApiModelProperty(value = "乐团名称")
+    private String musicGroupName;
+
+    @ApiModelProperty(value = "班级编号")
+    private Long classGroupId;
+
+    @ApiModelProperty(value = "截止日期")
+    private String expireDate;
+
+    @ApiModelProperty(value = "达标人数")
+    private Integer standardNum;
+
+    @ApiModelProperty(value = "训练人数")
+    private Integer trainingNum;
+
+    @ApiModelProperty(value = "预计人数")
+    private Integer expectNum;
+}
+

+ 44 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationResultDto1.java

@@ -0,0 +1,44 @@
+package com.ym.mec.biz.dal.dto;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * @author zx
+ * @since 2023-04-03 18:20:36
+ */
+@Data
+public class LessonExaminationResultDto1 {
+    @ApiModelProperty(value = "测验编号")
+    private Long LessonExaminationId;
+
+    @ApiModelProperty(value = "学员编号")
+    private Integer userId;
+
+    @ApiModelProperty(value = "班级名称")
+    private String classGroupName;
+
+    @ApiModelProperty(value = "乐团名称")
+    private String musicGroupName;
+
+    @ApiModelProperty(value = "班级编号")
+    private Long classGroupId;
+
+    @ApiModelProperty(value = "截止日期")
+    private String expireDate;
+
+    @ApiModelProperty(value = "是否截止")
+    private Boolean expireFlag;
+
+    @ApiModelProperty(value = "是否达标")
+    private Boolean standardFlag;
+
+    @ApiModelProperty(value = "是否训练")
+    private Boolean trainingFlag;
+
+    @ApiModelProperty(value = "测评分数")
+    private Integer score;
+}
+

+ 53 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationResultDto2.java

@@ -0,0 +1,53 @@
+package com.ym.mec.biz.dal.dto;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ * @author zx
+ * @since 2023-04-03 18:20:36
+ */
+@Data
+public class LessonExaminationResultDto2 {
+
+    @ApiModelProperty(value = "测验编号")
+    private Long id;
+
+    @ApiModelProperty(value = "分部")
+    private String organName;
+
+    @ApiModelProperty(value = "班级名称")
+    private String classGroupName;
+
+    @ApiModelProperty(value = "班级编号")
+    private Long classGroupId;
+
+    @ApiModelProperty(value = "乐团名称")
+    private String musicGroupName;
+
+    @ApiModelProperty(value = "老师姓名")
+    private String teacherName;
+
+    @ApiModelProperty(value = "老师编号")
+    private Integer teacherId;
+
+    @ApiModelProperty(value = "布置时间")
+    private Date createTime;
+
+    @ApiModelProperty(value = "截止日期")
+    private String expireDate;
+
+    @ApiModelProperty(value = "达标人数")
+    private Integer standardNum;
+
+    @ApiModelProperty(value = "训练人数")
+    private Integer trainingNum;
+
+    @ApiModelProperty(value = "预计人数")
+    private Integer expectNum;
+}
+

+ 36 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationSaveDto.java

@@ -0,0 +1,36 @@
+package com.ym.mec.biz.dal.dto;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 进度评测表(LessonExamination)表实体类
+ *
+ * @author zx
+ * @since 2023-04-03 18:20:36
+ */
+@Data
+public class LessonExaminationSaveDto {
+
+    private Integer teacherId;
+
+    @ApiModelProperty(value = "班级编号")
+    private Long classGroupId;
+
+    @ApiModelProperty(value = "课程编号")
+    private Long courseScheduleId;
+
+    @ApiModelProperty(value = "截止日期")
+    private Date expireDate;
+
+    @ApiModelProperty(value = "学员编号,逗号分割")
+    private String studentIds;
+
+    @ApiModelProperty(value = "作业内容")
+    private List<LessonExaminationDetailDto> examinationDetailDtos;
+}
+

+ 23 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationSubmitDto.java

@@ -0,0 +1,23 @@
+package com.ym.mec.biz.dal.dto;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * @author zx
+ * @since 2023-04-03 18:20:36
+ */
+@Data
+public class LessonExaminationSubmitDto {
+    @ApiModelProperty(value = "测验编号")
+    private Long LessonExaminationId;
+
+    @ApiModelProperty(value = "学员编号")
+    private Integer userId;
+
+    @ApiModelProperty(value = "测评分数")
+    private Integer score;
+}
+

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicScoreSubjectDto.java

@@ -18,6 +18,18 @@ public class MusicScoreSubjectDto {
     @ApiModelProperty(value = "曲目编号、分谱(新版布置作业需要)",required = false)
     private List<MusicScoreHomeworkDto> musicScoreHomeworkDtoList;
 
+
+    @ApiModelProperty("新版作业 time:2023-03-31")
+    private List<StudentLessonTrainingDetailWrapper.AddStudentLessonTrainingDetail> studentLessonTrainingDetails;
+
+    public List<StudentLessonTrainingDetailWrapper.AddStudentLessonTrainingDetail> getStudentLessonTrainingDetails() {
+        return studentLessonTrainingDetails;
+    }
+
+    public void setStudentLessonTrainingDetails(List<StudentLessonTrainingDetailWrapper.AddStudentLessonTrainingDetail> studentLessonTrainingDetails) {
+        this.studentLessonTrainingDetails = studentLessonTrainingDetails;
+    }
+
     public List<MusicScoreHomeworkDto> getMusicScoreHomeworkDtoList() {
         return musicScoreHomeworkDtoList;
     }

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

@@ -0,0 +1,48 @@
+package com.ym.mec.biz.dal.dto;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * @author zx
+ * @since 2023-04-03 18:20:36
+ */
+@Data
+public class StudentLessonExaminationDetailDto {
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @ApiModelProperty(value = "学员编号")
+    private Integer userId;
+
+    @ApiModelProperty(value = "评测编号")
+    private Long lessonExaminationId;
+
+    @ApiModelProperty(value = "曲谱名称")
+    private String musicScoreName;
+
+    @ApiModelProperty(value = "曲谱")
+    private Integer musicScoreId;
+
+    @ApiModelProperty(value = "评测难度")
+    private String heardLevel;
+
+    @ApiModelProperty(value = "练习最高分数")
+    private Integer trainingScore;
+
+    @ApiModelProperty(value = "是否练习")
+    private Boolean trainingFlag;
+
+    @ApiModelProperty(value = "合格分数")
+    private Integer score;
+
+    @ApiModelProperty(value = "达标总分")
+    private Integer standardScore;
+
+    @ApiModelProperty(value = "分谱")
+    private Integer partIndex;
+
+}
+

+ 24 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonExaminationDetailDto1.java

@@ -0,0 +1,24 @@
+package com.ym.mec.biz.dal.dto;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * @author zx
+ * @since 2023-04-03 18:20:36
+ */
+@Data
+public class StudentLessonExaminationDetailDto1 {
+
+    @ApiModelProperty(value = "曲谱名称")
+    private String musicScoreName;
+
+    @ApiModelProperty(value = "练习最高分数")
+    private Integer trainingScore;
+
+    @ApiModelProperty(value = "合格分数")
+    private Integer score;
+}
+

+ 41 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonExaminationDto.java

@@ -0,0 +1,41 @@
+package com.ym.mec.biz.dal.dto;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ * @author zx
+ * @since 2023-04-03 18:20:36
+ */
+@Data
+public class StudentLessonExaminationDto {
+
+    @ApiModelProperty(value = "学员头像")
+    private String avatar;
+
+    @ApiModelProperty(value = "学员姓名")
+    private String username;
+
+    @ApiModelProperty(value = "最大分数训练评测时间")
+    private Date trainingTime;
+
+    @ApiModelProperty(value = "测评分数")
+    private Integer score;
+
+    @ApiModelProperty(value = "是否会员")
+    private Boolean memberFlag;
+
+    @ApiModelProperty(value = "学员编号")
+    private Integer userId;
+
+    @ApiModelProperty(value = "评测编号")
+    private Long lessonExaminationId;
+
+    @ApiModelProperty(value = "声部")
+    private String subjectName;
+}
+

+ 34 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonExaminationDto1.java

@@ -0,0 +1,34 @@
+package com.ym.mec.biz.dal.dto;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ *
+ * @author zx
+ * @since 2023-04-03 18:20:36
+ */
+@Data
+public class StudentLessonExaminationDto1 {
+
+    @ApiModelProperty(value = "学员姓名")
+    private String username;
+
+    @ApiModelProperty(value = "学员手机号")
+    private String phone;
+
+    @ApiModelProperty(value = "测评分数")
+    private Integer score;
+
+    @ApiModelProperty(value = "学员编号")
+    private Integer userId;
+
+    @ApiModelProperty(value = "声部")
+    private String subjectName;
+
+    private List<StudentLessonExaminationDetailDto1> detailDtos;
+}
+

+ 46 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonTrainingDetailWrapper.java

@@ -0,0 +1,46 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 练习内容
+ * 2023-03-31 14:18:47
+ */
+@ApiModel(value = "StudentLessonTrainingDetailWrapper对象", description = "练习内容查询对象")
+public class StudentLessonTrainingDetailWrapper {
+
+
+    @Data
+    @ApiModel(" AddStudentLessonTrainingDetail-练习内容")
+    public static class AddStudentLessonTrainingDetail {
+
+        @ApiModelProperty("曲目id")
+        private Long musicScoreId;
+
+        @ApiModelProperty("练习速度")
+        private Integer trainingSpeed;
+
+        @ApiModelProperty("标准练习次数")
+        private Integer times;
+
+        @ApiModelProperty("分谱")
+        private Integer partIndex;
+    }
+
+	@ApiModel(" StudentLessonTrainingDetail-练习内容")
+    public static class StudentLessonTrainingDetail {
+        
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static StudentLessonTrainingDetail from(String json) {
+            return JSON.parseObject(json, StudentLessonTrainingDetail.class);
+        }
+	}
+
+}

+ 13 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseHomework.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.dal.entity;
 
 import com.ym.mec.biz.dal.dto.MusicScoreSubjectDto;
 
+import com.ym.mec.biz.dal.dto.StudentLessonTrainingDetailWrapper;
 import io.swagger.annotations.ApiModelProperty;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
@@ -64,7 +65,18 @@ public class CourseHomework extends BaseEntity {
 
 	private List<MusicScoreSubjectDto> musicScoreSubjectDto;
 
-	public String getTitle() {
+    @ApiModelProperty("新版作业 time:2023-03-31")
+    private List<StudentLessonTrainingDetailWrapper.AddStudentLessonTrainingDetail> studentLessonTrainingDetails;
+
+    public List<StudentLessonTrainingDetailWrapper.AddStudentLessonTrainingDetail> getStudentLessonTrainingDetails() {
+        return studentLessonTrainingDetails;
+    }
+
+    public void setStudentLessonTrainingDetails(List<StudentLessonTrainingDetailWrapper.AddStudentLessonTrainingDetail> studentLessonTrainingDetails) {
+        this.studentLessonTrainingDetails = studentLessonTrainingDetails;
+    }
+
+    public String getTitle() {
 		return title;
 	}
 

+ 36 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ExtracurricularExercises.java

@@ -2,6 +2,8 @@ package com.ym.mec.biz.dal.entity;
 
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.MusicScoreSubjectDto;
+import com.ym.mec.biz.dal.dto.StudentLessonTrainingDetailWrapper;
+import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.ImSendTypeEnum;
 import com.ym.mec.common.entity.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;
@@ -28,6 +30,12 @@ public class ExtracurricularExercises extends BaseEntity {
 	/** 学生列表 */
 	@ApiModelProperty(value="学生列表")
 	private String studentIdList;
+
+    @ApiModelProperty("班级id")
+    private Integer classGroupId;
+
+    @ApiModelProperty("作业来源分类")
+    private GroupType groupType;
 	
 	/** 批次号 */
 	@ApiModelProperty(value="批次号")
@@ -83,6 +91,34 @@ public class ExtracurricularExercises extends BaseEntity {
 
 	private List<MusicScoreSubjectDto> musicScoreSubjectDtos;
 
+
+    @ApiModelProperty("新版作业 time:2023-03-31")
+    private List<StudentLessonTrainingDetailWrapper.AddStudentLessonTrainingDetail> studentLessonTrainingDetails;
+
+    public Integer getClassGroupId() {
+        return classGroupId;
+    }
+
+    public void setClassGroupId(Integer classGroupId) {
+        this.classGroupId = classGroupId;
+    }
+
+    public GroupType getGroupType() {
+        return groupType;
+    }
+
+    public void setGroupType(GroupType groupType) {
+        this.groupType = groupType;
+    }
+
+    public List<StudentLessonTrainingDetailWrapper.AddStudentLessonTrainingDetail> getStudentLessonTrainingDetails() {
+        return studentLessonTrainingDetails;
+    }
+
+    public void setStudentLessonTrainingDetails(List<StudentLessonTrainingDetailWrapper.AddStudentLessonTrainingDetail> studentLessonTrainingDetails) {
+        this.studentLessonTrainingDetails = studentLessonTrainingDetails;
+    }
+
 	public List<MusicScoreSubjectDto> getMusicScoreSubjectDtos() {
 		return musicScoreSubjectDtos;
 	}

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

@@ -0,0 +1,63 @@
+package com.ym.mec.biz.dal.entity;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.ym.mec.common.tenant.TenantContextHolder;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 进度评测表(LessonExamination)表实体类
+ *
+ * @author zx
+ * @since 2023-04-03 18:20:36
+ */
+@ApiModel(value = "lesson_examination-进度评测表")
+@Data
+public class LessonExamination{
+    @TableId(value = "id_", type = IdType.AUTO)
+    private Long id;
+
+    @TableField("class_group_id_")
+    @ApiModelProperty(value = "班级编号")
+    private Long classGroupId;
+
+    @TableField("course_schedule_id_")
+    @ApiModelProperty(value = "课程编号")
+    private Long courseScheduleId;
+
+    @TableField("teacher_id_")
+    @ApiModelProperty(value = "老师编号")
+    private Integer teacherId;
+
+    @TableField("expire_date_")
+    @ApiModelProperty(value = "截止日期(年月日)")
+    private String expireDate;
+
+    @TableField("training_num_")
+    @ApiModelProperty(value = "提交人数")
+    private Integer trainingNum;
+
+    @TableField("standard_num_")
+    @ApiModelProperty(value = "达标人数")
+    private Integer standardNum;
+
+    @TableField("expect_num_")
+    @ApiModelProperty(value = "预计人数")
+    private Integer expectNum;
+
+    @TableField("create_time_")
+    private Date createTime;
+
+    @TableField("update_time_")
+    private Date updateTime;
+
+    @TableField("tenant_id_")
+    private Integer tenantId = TenantContextHolder.getTenantId();
+}
+

+ 13 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentCourseHomework.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.entity;
 
+import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.ImSendTypeEnum;
 import com.ym.mec.biz.dal.enums.StandardEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
@@ -59,6 +60,9 @@ public class StudentCourseHomework extends BaseEntity {
 	@ApiModelProperty(value="提交时间")
 	private Date submitTime;
 
+    @ApiModelProperty(value="类型")
+    private GroupType groupType;
+
 	private ImSendTypeEnum msgType = ImSendTypeEnum.TXT;
 
 	//伴奏编号
@@ -76,7 +80,15 @@ public class StudentCourseHomework extends BaseEntity {
 	@ApiModelProperty(value = "0未达标、1达标、2优秀",required = true)
 	private StandardEnum standardFlag;
 
-	public StandardEnum getStandardFlag() {
+    public GroupType getGroupType() {
+        return groupType;
+    }
+
+    public void setGroupType(GroupType groupType) {
+        this.groupType = groupType;
+    }
+
+    public StandardEnum getStandardFlag() {
 		return standardFlag;
 	}
 

+ 59 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentLessonExamination.java

@@ -0,0 +1,59 @@
+package com.ym.mec.biz.dal.entity;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.ym.mec.common.entity.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 学生进度评测表(StudentLessonExamination)表实体类
+ *
+ * @author zx
+ * @since 2023-04-03 18:21:30
+ */
+@ApiModel(value = "student_lesson_examination-学生进度评测表")
+@Data
+public class StudentLessonExamination extends BaseEntity {
+    @TableId(value = "id_", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键ID")
+    private Long id;
+
+    @TableField("user_id_")
+    @ApiModelProperty(value = "用户ID")
+    private Integer userId;
+
+    @TableField("lesson_examination_id_")
+    @ApiModelProperty(value = "测验编号")
+    private Long lessonExaminationId;
+
+    @TableField("score_")
+    @ApiModelProperty(value = "最高练习分数")
+    private Integer score;
+
+    @TableField("standard_flag_")
+    @ApiModelProperty(value = "是否达标")
+    private Integer standardFlag;
+
+    @TableField("training_flag_")
+    @ApiModelProperty(value = "练习状态(是否测验)")
+    private Boolean trainingFlag;
+
+    @TableField("training_score_")
+    @ApiModelProperty(value = "测评总分")
+    private Boolean trainingScore;
+
+    @TableField("create_time_")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @TableField("update_time_")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+}
+

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

@@ -0,0 +1,80 @@
+package com.ym.mec.biz.dal.entity;
+
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 进度评测详情表(StudentLessonExaminationDetail)表实体类
+ *
+ * @author zx
+ * @since 2023-04-03 18:22:01
+ */
+@ApiModel(value = "student_lesson_examination_detail-进度评测详情表")
+@Data
+public class StudentLessonExaminationDetail implements Serializable {
+    @TableId(value = "id_", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键ID")
+    private Long id;
+
+    @TableField("user_id_")
+    @ApiModelProperty(value = "用户ID")
+    private Integer userId;
+
+    @TableField("lesson_examination_id_")
+    @ApiModelProperty(value = "测验编号")
+    private Long lessonExaminationId;
+
+    @TableField("student_lesson_examination_id_")
+    private Long studentLessonExaminationId;
+
+    @TableField("music_score_id_")
+    @ApiModelProperty(value = "曲目id")
+    private Long musicScoreId;
+
+    @TableField("heard_level_")
+    @ApiModelProperty(value = "评测难度")
+    private String heardLevel;
+
+    @TableField("training_score_")
+    @ApiModelProperty(value = "练习最高分数")
+    private Integer trainingScore;
+
+    @TableField("training_flag_")
+    @ApiModelProperty(value = "是否练习")
+    private Boolean trainingFlag;
+
+    @TableField("score_")
+    @ApiModelProperty(value = "合格分数")
+    private Integer score;
+
+    @TableField("standard_score_")
+    @ApiModelProperty(value = "达标总分")
+    private Integer standardScore;
+
+    @TableField("part_index_")
+    @ApiModelProperty(value = "分谱")
+    private Integer partIndex;
+
+    @TableField("training_time_")
+    @ApiModelProperty(value = "最高分提交时间")
+    private Date trainingTime;
+
+    @TableField("create_time_")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @TableField("update_time_")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+
+}
+

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

@@ -0,0 +1,70 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.ym.mec.biz.dal.enums.StandardEnum;
+import lombok.Data;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * 练习内容
+ * 2023-03-31 14:18:47
+ */
+@Data
+@ApiModel(" StudentLessonTrainingDetail-练习内容")
+@TableName("student_lesson_training_detail")
+public class StudentLessonTrainingDetail implements Serializable {
+
+    @ApiModelProperty("主键ID") 
+	    @TableId(value = "id_")
+	    private Long id;
+
+    @ApiModelProperty("用户ID") 
+	@TableField(value = "user_id_")
+    private Long userId;
+
+    @ApiModelProperty("练习编号") 
+	@TableField(value = "course_homework_id_")
+    private Long courseHomeworkId;
+
+    @ApiModelProperty("曲目id") 
+	@TableField(value = "music_score_id_")
+    private Long musicScoreId;
+
+    @ApiModelProperty("分谱")
+    @TableField(value = "part_index_")
+    private Integer partIndex;
+
+    @ApiModelProperty("练习速度") 
+	@TableField(value = "training_speed_")
+    private Integer trainingSpeed;
+
+    @ApiModelProperty("已练习次数") 
+	@TableField(value = "training_times_")
+    private Integer trainingTimes;
+
+    @ApiModelProperty("练习状态") 
+	@TableField(value = "training_status_")
+    private StandardEnum trainingStatus;
+
+    @ApiModelProperty("标准练习次数") 
+	@TableField(value = "times_")
+    private Integer times;
+
+    @ApiModelProperty("创建时间") 
+	@TableField(value = "create_time_")
+    private Date createTime;
+
+    @ApiModelProperty("更新时间") 
+	@TableField(value = "update_time_")
+    private Date updateTime;
+
+}

+ 13 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TeacherAttendance.java

@@ -96,6 +96,10 @@ public class TeacherAttendance extends BaseEntity {
 	//处理结果
 	private Integer operator;
 
+
+    @ApiModelProperty(value = "签到附件")
+    private String signInAttachments;
+
 	@ApiModelProperty(value = "签退附件")
 	private String signOutAttachments;
 
@@ -115,7 +119,15 @@ public class TeacherAttendance extends BaseEntity {
 
 	private TeachModeEnum teachModeEnum;
 
-	public TeachModeEnum getTeachModeEnum() {
+    public String getSignInAttachments() {
+        return signInAttachments;
+    }
+
+    public void setSignInAttachments(String signInAttachments) {
+        this.signInAttachments = signInAttachments;
+    }
+
+    public TeachModeEnum getTeachModeEnum() {
 		return teachModeEnum;
 	}
 

+ 43 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EHomeWorkStatus.java

@@ -0,0 +1,43 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import lombok.Getter;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2023-04-03
+ */
+@Getter
+public enum EHomeWorkStatus {
+
+    /**
+     * 未布置
+     */
+    UNASSIGNED("未布置"),
+
+    /**
+     * 已布置
+     */
+    ASSIGNED("已布置"),
+
+    /**
+     * 已截止
+     */
+    DEADLINE("已截止"),
+
+    ;
+
+
+    private String msg;
+
+    @EnumValue
+    private String code;
+
+    EHomeWorkStatus(String msg) {
+        this.msg = msg;
+        this.code = this.name();
+    }
+
+}

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/StandardEnum.java

@@ -1,10 +1,12 @@
 package com.ym.mec.biz.dal.enums;
 
+import com.baomidou.mybatisplus.annotation.EnumValue;
 import com.ym.mec.common.enums.BaseEnum;
 
 public enum StandardEnum implements BaseEnum<String, StandardEnum> {
-	NOT_STANDARD("NOT_STANDARD", "未达标"), STANDARD("STANDARD", "已达标"), EXCELLENT("EXCELLENT", "优秀");
+    NOT_START("NOT_START", "未提交"), NOT_STANDARD("NOT_STANDARD", "未达标"), STANDARD("STANDARD", "已达标"), EXCELLENT("EXCELLENT", "优秀");
 
+    @EnumValue
 	private String code;
 
 	private String msg;

+ 24 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/LessonExaminationQueryInfo.java

@@ -0,0 +1,24 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class LessonExaminationQueryInfo extends QueryInfo {
+
+    @ApiModelProperty(value = "老师编号")
+    private Integer teacherId;
+
+    @ApiModelProperty(value = "布置时间(年月日)")
+    private String startTime;
+
+    @ApiModelProperty(value = "布置时间(年月日)")
+    private String endTime;
+
+    @ApiModelProperty(value = "班级类型")
+    private String classGroupType;
+
+    @ApiModelProperty(value = "测验是否截止")
+    private Boolean expireFlag;
+}

+ 24 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/LessonExaminationQueryInfo1.java

@@ -0,0 +1,24 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class LessonExaminationQueryInfo1 extends QueryInfo {
+
+    @ApiModelProperty(value = "学员编号")
+    private Integer studentId;
+
+    @ApiModelProperty(value = "布置时间(年月日)")
+    private String startTime;
+
+    @ApiModelProperty(value = "布置时间(年月日)")
+    private String endTime;
+
+    @ApiModelProperty(value = "测验是否截止")
+    private Boolean expireFlag;
+
+    @ApiModelProperty(value = "是否达标")
+    private Boolean standardFlag;
+}

+ 27 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/LessonExaminationQueryInfo2.java

@@ -0,0 +1,27 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class LessonExaminationQueryInfo2 extends QueryInfo {
+
+    @ApiModelProperty(value = "分部")
+    private String organId;
+
+    @ApiModelProperty(value = "布置时间(年月日)")
+    private String startTime;
+
+    @ApiModelProperty(value = "布置时间(年月日)")
+    private String endTime;
+
+    @ApiModelProperty(value = "测验是否截止")
+    private Boolean expireFlag;
+
+    @ApiModelProperty(value = "是否达标")
+    private Boolean standardFlag;
+
+    @ApiModelProperty(value = "乐团编号")
+    private String musicGroupId;
+}

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentLessonExaminationQueryDto.java

@@ -0,0 +1,14 @@
+package com.ym.mec.biz.dal.page;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class StudentLessonExaminationQueryDto{
+
+    @ApiModelProperty(value = "测验编号")
+    private Long lessonExaminationId;
+
+    @ApiModelProperty(value = "学员编号")
+    private Integer userId;
+}

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentLessonExaminationQueryInfo.java

@@ -0,0 +1,21 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class StudentLessonExaminationQueryInfo extends QueryInfo {
+
+    @ApiModelProperty(value = "测验编号")
+    private Long lessonExaminationId;
+
+    @ApiModelProperty(value = "是否测验")
+    private Boolean trainingFlag;
+
+    @ApiModelProperty(value = "是否达标")
+    private Boolean standardFlag;
+
+    @ApiModelProperty(value = "学员编号")
+    private Integer userId;
+}

+ 35 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/LessonExaminationService.java

@@ -0,0 +1,35 @@
+package com.ym.mec.biz.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.biz.dal.dao.LessonExaminationDao;
+import com.ym.mec.biz.dal.dto.LessonExaminationResultDto;
+import com.ym.mec.biz.dal.dto.LessonExaminationResultDto1;
+import com.ym.mec.biz.dal.dto.LessonExaminationResultDto2;
+import com.ym.mec.biz.dal.dto.LessonExaminationSaveDto;
+import com.ym.mec.biz.dal.entity.LessonExamination;
+import com.ym.mec.biz.dal.page.LessonExaminationQueryInfo;
+import com.ym.mec.biz.dal.page.LessonExaminationQueryInfo1;
+import com.ym.mec.biz.dal.page.LessonExaminationQueryInfo2;
+import com.ym.mec.common.page.PageInfo;
+
+import java.util.List;
+
+/**
+ * 进度评测表(LessonExamination)表服务接口
+ *
+ * @author zx
+ * @since 2023-04-03 18:20:40
+ */
+public interface LessonExaminationService extends IService<LessonExamination> {
+
+    LessonExaminationDao getDao();
+
+    void publish(LessonExaminationSaveDto lessonExaminationSaveDto);
+
+    PageInfo<LessonExaminationResultDto> queryPage(LessonExaminationQueryInfo queryInfo);
+
+    PageInfo<LessonExaminationResultDto1> queryPageByStudent(LessonExaminationQueryInfo1 queryInfo);
+
+    PageInfo<LessonExaminationResultDto2> queryPageByWeb(LessonExaminationQueryInfo2 queryInfo);
+}
+

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

@@ -71,4 +71,10 @@ public interface StudentExtracurricularExercisesSituationService extends BaseSer
     void deleteByStudent(Integer studentId,String monday);
 
     TeacherExercisesServiceDto getStatistics(ExtraExercilseQueryInfo queryInfo);
+
+    /**
+     * 老师端课后作业列表
+     *
+     */
+    PageInfo<CourseHomeworkWrapper.CourseHomeworkList> queryTeacherServeHomeworkDetailV2(CourseHomeworkWrapper.CourseHomeworkQuery queryInfo);
 }

+ 26 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentLessonExaminationDetailService.java

@@ -0,0 +1,26 @@
+package com.ym.mec.biz.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.biz.dal.dao.StudentLessonExaminationDetailDao;
+import com.ym.mec.biz.dal.dto.LessonExaminationDetailDto;
+import com.ym.mec.biz.dal.dto.StudentLessonExaminationDetailDto;
+import com.ym.mec.biz.dal.entity.StudentLessonExaminationDetail;
+import com.ym.mec.biz.dal.page.StudentLessonExaminationQueryDto;
+
+import java.util.List;
+
+/**
+ * 进度评测详情表(StudentLessonExaminationDetail)表服务接口
+ *
+ * @author zx
+ * @since 2023-04-03 18:22:01
+ */
+public interface StudentLessonExaminationDetailService extends IService<StudentLessonExaminationDetail> {
+
+    StudentLessonExaminationDetailDao getDao();
+
+    void save(Long lessonExaminationId, String[] studentIds, List<LessonExaminationDetailDto> detailDtos);
+
+    List<StudentLessonExaminationDetailDto> queryAll(StudentLessonExaminationQueryDto query);
+}
+

+ 40 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentLessonExaminationService.java

@@ -0,0 +1,40 @@
+package com.ym.mec.biz.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.biz.dal.dao.StudentLessonExaminationDao;
+import com.ym.mec.biz.dal.dto.LessonExaminationSaveDto;
+import com.ym.mec.biz.dal.dto.LessonExaminationSubmitDto;
+import com.ym.mec.biz.dal.dto.StudentLessonExaminationDto;
+import com.ym.mec.biz.dal.dto.StudentLessonExaminationDto1;
+import com.ym.mec.biz.dal.entity.StudentLessonExamination;
+import com.ym.mec.biz.dal.page.StudentLessonExaminationQueryInfo;
+import com.ym.mec.common.page.PageInfo;
+
+import java.util.List;
+
+/**
+ * 学生进度评测表(StudentLessonExamination)表服务接口
+ *
+ * @author zx
+ * @since 2023-04-03 18:21:30
+ */
+public interface StudentLessonExaminationService extends IService<StudentLessonExamination> {
+
+    StudentLessonExaminationDao getDao();
+
+    void save(Long lessonExaminationId, String[] studentIds);
+
+    PageInfo<StudentLessonExaminationDto> queryPage(StudentLessonExaminationQueryInfo queryInfo);
+
+    /**
+    * @description: 提交作业
+     * @param submitDto
+    * @return void
+    * @author zx
+    * @date 2023/4/4 19:25
+    */
+    void submit(LessonExaminationSubmitDto submitDto);
+
+    PageInfo<StudentLessonExaminationDto1> queryPageByWeb(Integer studentLessonExaminationId);
+}
+

+ 44 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentLessonTrainingDetailService.java

@@ -0,0 +1,44 @@
+package com.ym.mec.biz.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.biz.dal.dto.StudentLessonTrainingDetailWrapper;
+import com.ym.mec.biz.dal.entity.StudentLessonTrainingDetail;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 练习内容
+ * 2023-03-31 14:18:47
+ */
+public interface StudentLessonTrainingDetailService extends IService<StudentLessonTrainingDetail>  {
+
+	/**
+     * 查询详情
+     * @param id 详情ID
+     * @return StudentLessonTrainingDetail
+     */
+	StudentLessonTrainingDetail detail(Long id);
+	
+    /**
+     * 添加
+     * @param studentLessonTrainingDetail StudentLessonTrainingDetailWrapper.StudentLessonTrainingDetail
+     * @return Boolean
+     */
+     Boolean add(StudentLessonTrainingDetailWrapper.StudentLessonTrainingDetail studentLessonTrainingDetail);   
+
+    /**
+     * 更新
+     * @param studentLessonTrainingDetail StudentLessonTrainingDetailWrapper.StudentLessonTrainingDetail
+     * @return Boolean
+     */
+     Boolean update(StudentLessonTrainingDetailWrapper.StudentLessonTrainingDetail studentLessonTrainingDetail);
+
+    /**
+     * 将作业标准 转换为 需要的作业详情
+     *
+     * @param studentLessonTrainingDetails 作业标准
+     * @param userIdList 学生ID
+     */
+    List<StudentLessonTrainingDetail> homeWorkDetail(List<StudentLessonTrainingDetailWrapper.AddStudentLessonTrainingDetail> studentLessonTrainingDetails, List<Integer> userIdList,Long homeworkId);
+}

+ 68 - 31
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesServiceImpl.java

@@ -1,17 +1,22 @@
 package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.google.common.collect.Lists;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
+import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
 import com.ym.mec.biz.dal.entity.ExtracurricularExercises;
 import com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply;
 import com.ym.mec.biz.dal.entity.StudentCourseHomework;
+import com.ym.mec.biz.dal.entity.StudentLessonTrainingDetail;
 import com.ym.mec.biz.dal.entity.Teacher;
+import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
 import com.ym.mec.biz.dal.enums.ImSendTypeEnum;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.ExtraExercilseQueryInfo;
 import com.ym.mec.biz.service.ExtracurricularExercisesService;
+import com.ym.mec.biz.service.StudentLessonTrainingDetailService;
 import com.ym.mec.biz.service.StudentServeService;
 import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.dal.BaseDAO;
@@ -21,6 +26,7 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -55,6 +61,12 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E
 	@Autowired
 	private StudentCourseHomeworkDao studentCourseHomeworkDao;
 
+    @Autowired
+    private ClassGroupStudentMapperDao classGroupStudentMapperDao;
+
+    @Autowired
+    private StudentLessonTrainingDetailService studentLessonTrainingDetailService;
+
 	@Override
 	public BaseDAO<Long, ExtracurricularExercises> getDAO() {
 		return extracurricularExercisesDao;
@@ -70,16 +82,28 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E
 			throw new BizException("请填写内容");
 		}
 		List<MusicScoreSubjectDto> scoreSubjectDtoList = exercises.getMusicScoreSubjectDtos();
-		if(StringUtils.isBlank(exercises.getStudentIdList())){
-			if(scoreSubjectDtoList == null || scoreSubjectDtoList.size() == 0){
-				throw new BizException("请指定学生");
-			}
+
+        if (exercises.getClassGroupId() != null) {
+            List<ClassGroupStudentMapper> studentMapperList = classGroupStudentMapperDao.findByClassGroup(
+                exercises.getClassGroupId());
+            if (CollectionUtils.isEmpty(studentMapperList)) {
+                throw new BizException("班级学生为空");
+            }
+            List<Integer> studentIdList = studentMapperList.stream()
+                .filter(o -> !o.getStatus().equals(ClassGroupStudentStatusEnum.QUIT))
+               .map(ClassGroupStudentMapper::getUserId)
+                .collect(Collectors.toList());
+            exercises.setStudentIdList(StringUtils.join(studentIdList,","));
+
+        } else if(StringUtils.isNotBlank(exercises.getStudentIdList()) || CollectionUtils.isEmpty(scoreSubjectDtoList)) {
 			List<Integer> studentIdList = new ArrayList<>();
 			for (MusicScoreSubjectDto musicScoreSubjectDto : scoreSubjectDtoList) {
 				studentIdList.addAll(musicScoreSubjectDto.getUserIdList());
 			}
 			exercises.setStudentIdList(StringUtils.join(studentIdList,","));
-		}
+		} else {
+            throw new BizException("请指定学生");
+        }
 
 		teacherDao.getLocked(exercises.getTeacherId());
 		Teacher teacher = teacherDao.get(exercises.getTeacherId());
@@ -100,32 +124,45 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E
 		extracurricularExercisesDao.insert(exercises);
 		String dateStr = DateUtil.dateToString(exercises.getExpireDate(), "MM月dd日HH点");
 
-		Map<List<Integer>, List<MusicScoreSubjectDto>> collect = null;
-		Set<List<Integer>> lists = null;
-		if(!CollectionUtils.isEmpty(scoreSubjectDtoList)){
-			collect = scoreSubjectDtoList.stream().collect(Collectors.groupingBy(e -> e.getUserIdList()));
-			lists = collect.keySet();
-		}
-		for (Integer studentId : studentIds) {
-			ExtracurricularExercisesReply studentExtraExercise=new ExtracurricularExercisesReply();
-			studentExtraExercise.setExtracurricularExercisesId(exercises.getId());
-			studentExtraExercise.setUserId(studentId);
-			studentExtraExercise.setStatus(0);
-			studentExtraExercise.setIsReplied(0);
-			studentExtraExercise.setIsView(0);
-			studentExtraExercise.setIsRepliedTimely(0);
-			studentExtraExercise.setMusicScoreId(exercises.getMusicScoreId());
-			if(!CollectionUtils.isEmpty(scoreSubjectDtoList)){
-				for (List<Integer> list : lists) {
-					if(list.contains(studentId)){
-						MusicScoreSubjectDto musicScoreSubjectDto = collect.get(list).get(0);
-						studentExtraExercise.setMusicScoreId(StringUtils.join(musicScoreSubjectDto.getMusicScoreIdList(),","));
-						studentExtraExercise.setMusicScoreContent(JSONObject.toJSONString(musicScoreSubjectDto.getMusicScoreHomeworkDtoList()));
-						break;
-					}
-				}
-			}
-			extracurricularExercisesReplyDao.insert(studentExtraExercise);
+        ExtracurricularExercisesReply studentExtraExercise=new ExtracurricularExercisesReply();
+        studentExtraExercise.setExtracurricularExercisesId(exercises.getId());
+        studentExtraExercise.setStatus(0);
+        studentExtraExercise.setIsReplied(0);
+        studentExtraExercise.setIsView(0);
+        studentExtraExercise.setIsRepliedTimely(0);
+        studentExtraExercise.setMusicScoreId(exercises.getMusicScoreId());
+
+        List<ExtracurricularExercisesReply> extracurricularExercisesReplies = new ArrayList<>();
+
+        List<StudentLessonTrainingDetail> studentLessonTrainingDetailList = new ArrayList<>();
+        if(!CollectionUtils.isEmpty(scoreSubjectDtoList)){
+            for (MusicScoreSubjectDto musicScoreSubjectDto : scoreSubjectDtoList) {
+                // 原本作业逻辑
+                for (Integer userId : musicScoreSubjectDto.getUserIdList()) {
+                    studentExtraExercise.setUserId(userId);
+                    studentExtraExercise.setMusicScoreId(StringUtils.join(musicScoreSubjectDto.getMusicScoreIdList(),","));
+                    studentExtraExercise.setMusicScoreContent(JSONObject.toJSONString(musicScoreSubjectDto.getMusicScoreHomeworkDtoList()));
+                    extracurricularExercisesReplies.add(ObjectUtils.clone(studentExtraExercise));
+                }
+                // 作业详情
+                studentLessonTrainingDetailList.addAll(studentLessonTrainingDetailService
+                                   .homeWorkDetail(musicScoreSubjectDto.getStudentLessonTrainingDetails(), musicScoreSubjectDto.getUserIdList(),exercises.getId()));
+
+            }
+        } else {
+            for (Integer studentId : studentIds) {
+                studentExtraExercise.setUserId(studentId);
+                extracurricularExercisesReplies.add(ObjectUtils.clone(studentExtraExercise));
+            }
+            // 作业详情
+            studentLessonTrainingDetailList.addAll(studentLessonTrainingDetailService
+                                                       .homeWorkDetail(exercises.getStudentLessonTrainingDetails(), studentIds,exercises.getId()));
+        }
+        extracurricularExercisesReplyDao.batchInsert(extracurricularExercisesReplies);
+        studentLessonTrainingDetailService.saveBatch(studentLessonTrainingDetailList);
+
+        for (ExtracurricularExercisesReply extracurricularExercisesReply : extracurricularExercisesReplies) {
+            Integer studentId = extracurricularExercisesReply.getUserId();
 
 			String notifyUrl = "?courseScheduleID=" + studentExtraExercise.getId() + "&studentCourseHomeworkId=" + studentExtraExercise.getId() + "&extra=1";
 			String extra = "dayaedu" + notifyUrl + "&userId=" + studentId;

+ 13 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -827,13 +827,20 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
      */
     @Override
     public void syncLike(String roomUid, Integer likeNum) {
-        redissonClient.getBucket(LIVE_ROOM_LIKE.replace(ROOM_UID, roomUid)).set(likeNum);
 
-        // 同步点赞数到直播间数据表
-        ImLiveBroadcastRoomVo roomVo = getImLiveBroadcastRoomVo(roomUid);
-        setGroupDefinedData(roomVo,EGroupDefinedDataType.LIKES,likeNum.toString());
-        //增加房间心跳
-        redissonClient.getBucket(LIVE_ROOM_SPEAKER_HEART_BEAT.replace(ROOM_UID, roomUid)).set(new Date());
+        // 同步直播间点赞数
+        if (Optional.ofNullable(likeNum).orElse(0) > 0) {
+
+            redissonClient.getBucket(LIVE_ROOM_LIKE.replace(ROOM_UID, roomUid)).set(likeNum);
+
+            // 同步点赞数到直播间数据表
+            ImLiveBroadcastRoomVo roomVo = getImLiveBroadcastRoomVo(roomUid);
+            setGroupDefinedData(roomVo,EGroupDefinedDataType.LIKES,likeNum.toString());
+            //增加房间心跳
+            redissonClient.getBucket(LIVE_ROOM_SPEAKER_HEART_BEAT.replace(ROOM_UID, roomUid)).set(new Date());
+        }
+
+        // TODO: 后续同步直播间数据(在线用户等),暂时不做
     }
 
     /**

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

@@ -0,0 +1,128 @@
+package com.ym.mec.biz.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ym.mec.biz.dal.dao.LessonExaminationDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.dto.*;
+import com.ym.mec.biz.dal.entity.LessonExamination;
+import com.ym.mec.biz.dal.entity.StudentLessonExamination;
+import com.ym.mec.biz.dal.page.LessonExaminationQueryInfo;
+import com.ym.mec.biz.dal.page.LessonExaminationQueryInfo1;
+import com.ym.mec.biz.dal.page.LessonExaminationQueryInfo2;
+import com.ym.mec.biz.service.LessonExaminationService;
+import com.ym.mec.biz.service.StudentLessonExaminationDetailService;
+import com.ym.mec.biz.service.StudentLessonExaminationService;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
+import com.ym.mec.common.service.IdGeneratorService;
+import com.ym.mec.util.collection.MapUtil;
+import com.ym.mec.util.date.DateUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+import org.springframework.validation.BindException;
+
+import java.util.*;
+
+/**
+ * 进度评测表(LessonExamination)表服务实现类
+ *
+ * @author zx
+ * @since 2023-04-03 18:20:44
+ */
+@Service("lessonExaminationService")
+public class LessonExaminationServiceImpl extends ServiceImpl<LessonExaminationDao, LessonExamination> implements LessonExaminationService {
+
+    private final static Logger log = LoggerFactory.getLogger(LessonExaminationServiceImpl.class);
+
+    @Autowired
+    private SysConfigDao sysConfigDao;
+    @Autowired
+    private StudentLessonExaminationService studentLessonExaminationService;
+    @Autowired
+    private StudentLessonExaminationDetailService studentLessonExaminationDetailService;
+
+    @Override
+    public LessonExaminationDao getDao() {
+        return this.baseMapper;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void publish(LessonExaminationSaveDto param) {
+        String studentIds = param.getStudentIds();
+        if(StringUtils.isEmpty(studentIds)){
+            throw new BizException("请选择学员");
+        }
+        List<LessonExaminationDetailDto> examinationDetailDtos = param.getExaminationDetailDtos();
+        if(CollectionUtils.isEmpty(examinationDetailDtos)){
+            throw new BizException("请选择练习内容");
+        }
+        String expireTime = sysConfigDao.findConfigValue("homework_expire_time");
+        if(org.apache.commons.lang3.StringUtils.isEmpty(expireTime)){
+            expireTime = "7";
+        }
+        String expireDate = DateUtil.dateToString(DateUtil.addDays(new Date(), Integer.parseInt(expireTime)),DateUtil.ISO_EXPANDED_DATE_FORMAT);
+        String[] split = studentIds.split(",");
+        LessonExamination lessonExamination = new LessonExamination();
+        lessonExamination.setExpectNum(split.length);
+        lessonExamination.setClassGroupId(param.getClassGroupId());
+        lessonExamination.setCourseScheduleId(param.getCourseScheduleId());
+        lessonExamination.setExpireDate(expireDate);
+        lessonExamination.setTeacherId(param.getTeacherId());
+        baseMapper.insert(lessonExamination);
+        studentLessonExaminationService.save(lessonExamination.getId(),split);
+        studentLessonExaminationDetailService.save(lessonExamination.getId(),split,examinationDetailDtos);
+    }
+
+    @Override
+    public PageInfo<LessonExaminationResultDto> queryPage(LessonExaminationQueryInfo queryInfo) {
+        PageInfo<LessonExaminationResultDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<String, Object>();
+        MapUtil.populateMap(params, queryInfo);
+        List<LessonExaminationResultDto> dataList = null;
+        int count = baseMapper.findCount(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = baseMapper.queryPage(params);
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    public PageInfo<LessonExaminationResultDto1> queryPageByStudent(LessonExaminationQueryInfo1 queryInfo) {
+        PageInfo<LessonExaminationResultDto1> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+        List<LessonExaminationResultDto1> dataList = null;
+        int count = baseMapper.findCountByStudent(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = baseMapper.queryPageByStudent(params);
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    public PageInfo<LessonExaminationResultDto2> queryPageByWeb(LessonExaminationQueryInfo2 queryInfo) {
+        return null;
+    }
+
+}
+

+ 33 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentExtracurricularExercisesSituationServiceImpl.java

@@ -9,12 +9,14 @@ import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.TeacherRemindTypeEnum;
 import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.biz.service.StudentExtracurricularExercisesSituationService;
 import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.constant.CommonConstants;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.PageUtil;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
@@ -636,7 +638,36 @@ public class StudentExtracurricularExercisesSituationServiceImpl extends BaseSer
 		return serviceDto;
 	}
 
-	@Transactional(rollbackFor = Exception.class)
+    /**
+     * 老师端课后作业列表
+     *
+     * @param queryInfo
+     */
+    @Override
+    public PageInfo<CourseHomeworkWrapper.CourseHomeworkList> queryTeacherServeHomeworkDetailV2(CourseHomeworkWrapper.CourseHomeworkQuery queryInfo) {
+        PageInfo<CourseHomeworkWrapper.CourseHomeworkList> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        //获取时间段内有服务指标的课程(课后作业)
+        Date firstDayOfMonth;
+        Date lastDayOfMonth;
+        if(Objects.isNull(queryInfo.getStartTime())){
+            firstDayOfMonth = DateUtil.getFirstDayOfMonth(queryInfo.getMonth());
+            lastDayOfMonth = DateUtil.getLastDayOfMonth(queryInfo.getMonth());
+        }else {
+            firstDayOfMonth = queryInfo.getStartTime();
+            lastDayOfMonth = queryInfo.getEndTime();
+        }
+        List<Long> courseIds = studentExtracurricularExercisesSituationDao.queryCourseIdByClassDate(firstDayOfMonth,lastDayOfMonth,queryInfo.getTeacherId());
+        if(courseIds == null || courseIds.size() == 0){
+            return pageInfo;
+        }
+
+        // 查出课程列表
+        courseScheduleDao.queryTeacherServeHomeworkDetailV2(queryInfo, courseIds);
+
+        return pageInfo;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
 	public void delSituations(List<StudentExtracurricularExercisesSituation> situations){
 		if (CollectionUtils.isEmpty(situations)){
 			return;
@@ -649,4 +680,4 @@ public class StudentExtracurricularExercisesSituationServiceImpl extends BaseSer
 			courseScheduleStatisticsDao.updateCourseService(collect,0);
 		}
 	}
-}
+}

+ 69 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonExaminationDetailServiceImpl.java

@@ -0,0 +1,69 @@
+package com.ym.mec.biz.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ym.mec.biz.dal.dao.StudentLessonExaminationDetailDao;
+import com.ym.mec.biz.dal.dto.LessonExaminationDetailDto;
+import com.ym.mec.biz.dal.dto.StudentLessonExaminationDetailDto;
+import com.ym.mec.biz.dal.entity.StudentLessonExaminationDetail;
+import com.ym.mec.biz.dal.page.StudentLessonExaminationQueryDto;
+import com.ym.mec.biz.service.StudentLessonExaminationDetailService;
+import org.springframework.stereotype.Service;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 进度评测详情表(StudentLessonExaminationDetail)表服务实现类
+ *
+ * @author zx
+ * @since 2023-04-03 18:22:01
+ */
+@Service("studentLessonExaminationDetailService")
+public class StudentLessonExaminationDetailServiceImpl extends ServiceImpl<StudentLessonExaminationDetailDao, StudentLessonExaminationDetail> implements StudentLessonExaminationDetailService {
+
+    private final static Logger log = LoggerFactory.getLogger(StudentLessonExaminationDetailServiceImpl.class);
+
+    @Override
+    public StudentLessonExaminationDetailDao getDao() {
+        return this.baseMapper;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void save(Long lessonExaminationId, String[] studentIds, List<LessonExaminationDetailDto> detailDtos) {
+        List<StudentLessonExaminationDetail> detailList = new ArrayList<>();
+        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.setLessonExaminationId(lessonExaminationId);
+                studentLessonExaminationDetail.setScore(vo.getScore());
+                if(i == 0){
+                    studentLessonExaminationDetail.setStandardScore(score + subScore);
+                }else {
+                    studentLessonExaminationDetail.setStandardScore(score);
+                }
+                studentLessonExaminationDetail.setPartIndex(vo.getPartIndex());
+                studentLessonExaminationDetail.setHeardLevel(vo.getHeardLevel());
+                studentLessonExaminationDetail.setUserId(studentId);
+                studentLessonExaminationDetail.setMusicScoreId(vo.getMusicScoreId());
+                detailList.add(studentLessonExaminationDetail);
+            }
+        }
+        baseMapper.insertBatch(detailList);
+    }
+
+    @Override
+    public List<StudentLessonExaminationDetailDto> queryAll(StudentLessonExaminationQueryDto query) {
+        return baseMapper.queryAll(query);
+    }
+
+}
+

+ 90 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonExaminationServiceImpl.java

@@ -0,0 +1,90 @@
+package com.ym.mec.biz.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ym.mec.biz.dal.dao.StudentLessonExaminationDao;
+import com.ym.mec.biz.dal.dao.StudentLessonExaminationDetailDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.dto.*;
+import com.ym.mec.biz.dal.entity.StudentLessonExamination;
+import com.ym.mec.biz.dal.entity.StudentLessonExaminationDetail;
+import com.ym.mec.biz.dal.page.StudentLessonExaminationQueryInfo;
+import com.ym.mec.biz.service.StudentLessonExaminationService;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.util.collection.MapUtil;
+import com.ym.mec.util.date.DateUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.*;
+
+/**
+ * 学生进度评测表(StudentLessonExamination)表服务实现类
+ *
+ * @author zx
+ * @since 2023-04-03 18:21:30
+ */
+@Service("studentLessonExaminationService")
+public class StudentLessonExaminationServiceImpl extends ServiceImpl<StudentLessonExaminationDao, StudentLessonExamination> implements StudentLessonExaminationService {
+
+    private final static Logger log = LoggerFactory.getLogger(StudentLessonExaminationServiceImpl.class);
+
+    @Override
+    public StudentLessonExaminationDao getDao() {
+        return this.baseMapper;
+    }
+
+    @Autowired
+    private SysConfigDao sysConfigDao;
+    @Autowired
+    private StudentLessonExaminationDetailDao studentLessonExaminationDetailDao;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void save(Long lessonExaminationId, String[] studentIds) {
+        List<StudentLessonExamination> studentLessonExaminations = new ArrayList<>();
+        for (String studentId : studentIds) {
+            StudentLessonExamination studentLessonExamination = new StudentLessonExamination();
+            studentLessonExamination.setLessonExaminationId(lessonExaminationId);
+            studentLessonExamination.setUserId(Integer.parseInt(studentId));
+            studentLessonExaminations.add(studentLessonExamination);
+        }
+        baseMapper.insertBatch(studentLessonExaminations);
+    }
+
+    @Override
+    public PageInfo<StudentLessonExaminationDto> queryPage(StudentLessonExaminationQueryInfo queryInfo) {
+        PageInfo<StudentLessonExaminationDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<String, Object>();
+        MapUtil.populateMap(params, queryInfo);
+        List<StudentLessonExaminationDto> dataList = null;
+        int count = baseMapper.findCount(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = baseMapper.queryPage(params);
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void submit(LessonExaminationSubmitDto submitDto) {
+
+    }
+
+    @Override
+    public PageInfo<StudentLessonExaminationDto1> queryPageByWeb(Integer studentLessonExaminationId) {
+        return null;
+    }
+}
+

+ 99 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonTrainingDetailServiceImpl.java

@@ -0,0 +1,99 @@
+package com.ym.mec.biz.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ym.mec.biz.dal.dao.StudentLessonTrainingDetailMapper;
+import com.ym.mec.biz.dal.dto.StudentLessonTrainingDetailWrapper;
+import com.ym.mec.biz.dal.entity.StudentLessonTrainingDetail;
+import com.ym.mec.biz.dal.enums.StandardEnum;
+import com.ym.mec.biz.service.StudentLessonTrainingDetailService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 练习内容
+ * 2023-03-31 14:18:47
+ */
+@Slf4j
+@Service
+public class StudentLessonTrainingDetailServiceImpl extends ServiceImpl<StudentLessonTrainingDetailMapper, StudentLessonTrainingDetail> implements StudentLessonTrainingDetailService {
+
+	/**
+     * 查询详情
+     * @param id 详情ID
+     * @return StudentLessonTrainingDetail
+     */
+	@Override
+    public StudentLessonTrainingDetail detail(Long id) {
+        
+        return baseMapper.selectById(id);
+    }
+	
+    /**
+     * 添加
+     * @param studentLessonTrainingDetail StudentLessonTrainingDetailWrapper.StudentLessonTrainingDetail
+     * @return Boolean
+     */
+    @Override
+    public Boolean add(StudentLessonTrainingDetailWrapper.StudentLessonTrainingDetail studentLessonTrainingDetail) {    	
+        
+        return this.save(JSON.parseObject(studentLessonTrainingDetail.jsonString(), StudentLessonTrainingDetail.class));
+    }
+
+    /**
+     * 更新
+     * @param studentLessonTrainingDetail StudentLessonTrainingDetailWrapper.StudentLessonTrainingDetail
+     * @return Boolean
+     */
+    @Override
+    public Boolean update(StudentLessonTrainingDetailWrapper.StudentLessonTrainingDetail studentLessonTrainingDetail){
+
+        return this.updateById(JSON.parseObject(studentLessonTrainingDetail.jsonString(), StudentLessonTrainingDetail.class));       
+    }
+
+    /**
+     * 将作业标准 转换为 需要的作业详情
+     *
+     * @param detailList 作业标准
+     * @param userIdList                   学生ID
+     */
+    @Override
+    public List<StudentLessonTrainingDetail> homeWorkDetail(List<StudentLessonTrainingDetailWrapper.AddStudentLessonTrainingDetail> detailList, List<Integer> userIdList,Long homeworkId) {
+        // 保存作业标准
+        if (CollectionUtils.isEmpty(detailList) || CollectionUtils.isEmpty(userIdList)) {
+            return new ArrayList<>();
+        }
+
+        List<StudentLessonTrainingDetail> result = new ArrayList<>();
+
+        if (!CollectionUtils.isEmpty(detailList)) {
+            List<StudentLessonTrainingDetail> details = JSON.parseArray(
+                JSON.toJSONString(detailList), StudentLessonTrainingDetail.class);
+            result.addAll(details);
+            // 根据声部添加学生作业详情
+            userIdList.forEach(userId -> {
+                List<StudentLessonTrainingDetail> detailsUser = JSON.parseArray(
+                    JSON.toJSONString(detailList), StudentLessonTrainingDetail.class);
+                for (StudentLessonTrainingDetail studentLessonTrainingDetail : detailsUser) {
+                    studentLessonTrainingDetail.setUserId(userId.longValue());
+                }
+                result.addAll(detailsUser);
+            });
+        }
+        for (StudentLessonTrainingDetail studentLessonTrainingDetail : result) {
+
+            studentLessonTrainingDetail.setCourseHomeworkId(homeworkId);
+            studentLessonTrainingDetail.setTrainingTimes(0);
+            studentLessonTrainingDetail.setTrainingStatus(StandardEnum.NOT_START);
+            studentLessonTrainingDetail.setCreateTime(new Date());
+            studentLessonTrainingDetail.setUpdateTime(new Date());
+
+        }
+        return result;
+    }
+}

+ 32 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
@@ -77,6 +78,9 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 	@Autowired
 	private StudentService studentService;
 
+    @Autowired
+    private StudentLessonTrainingDetailService studentLessonTrainingDetailService;
+
 	@Override
 	public BaseDAO<Long, TeacherAttendance> getDAO() {
 		return teacherAttendanceDao;
@@ -335,7 +339,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 				teacherAttendanceDao.insert(teacherAttendance);
 			}
 
-			if(StringUtils.isNotBlank(courseHomeworkInfo.getContent())){
+			if(StringUtils.isNotBlank(courseHomeworkInfo.getContent()) || !CollectionUtils.isEmpty(courseHomeworkInfo.getStudentLessonTrainingDetails())){
 				CourseHomework courseHomework = courseHomeworkDao.findByCourseSchedule(teacherAttendance.getCourseScheduleId());
 				if(Objects.isNull(courseHomework)){
 					//新增课堂作业
@@ -349,15 +353,24 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 					courseHomeworkService.insert(courseHomework);
 					List<StudentCourseHomework> studentCourseHomeworks = new ArrayList<>();
 
+                    // 作业详情
+                    List<StudentLessonTrainingDetail> studentLessonTrainingDetails = new ArrayList<>();
+
 					//获取按学员声部发放的作业
 					List<MusicScoreSubjectDto> musicScoreSubjectDto = courseHomework.getMusicScoreSubjectDto();
 					if(musicScoreSubjectDto != null && musicScoreSubjectDto.size() > 0){
 						for (MusicScoreSubjectDto scoreSubjectDto : musicScoreSubjectDto) {
-							studentCourseHomeworks.addAll(studentCourseHomeworkDao.constructInitialStudentHomeworkRecordsWithPayment(teacherAttendance.getCourseScheduleId(),
-									courseHomework.getId(),
-									StringUtils.join(scoreSubjectDto.getMusicScoreIdList(),","),
-									JSONObject.toJSONString(scoreSubjectDto.getMusicScoreHomeworkDtoList()),
-									scoreSubjectDto.getUserIdList()));
+                            List<Integer> userIdList = scoreSubjectDto.getUserIdList();
+                            studentCourseHomeworks.addAll(studentCourseHomeworkDao.constructInitialStudentHomeworkRecordsWithPayment(teacherAttendance.getCourseScheduleId(),
+                                             courseHomework.getId(),
+                                             StringUtils.join(scoreSubjectDto.getMusicScoreIdList(),","),
+                                             JSONObject.toJSONString(scoreSubjectDto.getMusicScoreHomeworkDtoList()),
+                                             userIdList));
+
+
+                            studentLessonTrainingDetails.addAll(studentLessonTrainingDetailService
+                                                                    .homeWorkDetail(scoreSubjectDto.getStudentLessonTrainingDetails(), userIdList,courseHomework.getId()));
+
 						}
 					}else {
 						studentCourseHomeworks.addAll(studentCourseHomeworkDao.constructInitialStudentHomeworkRecordsWithPayment(teacherAttendance.getCourseScheduleId(),
@@ -365,10 +378,20 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 								courseHomework.getMusicScoreId(),
 								"",
 								null));
+
+                        List<Integer> userIdList = studentCourseHomeworks.stream()
+                                                                      .map(StudentCourseHomework::getUserId)
+                                                                      .collect(Collectors.toList());
+                        studentLessonTrainingDetails.addAll(studentLessonTrainingDetailService
+                                                                .homeWorkDetail(courseHomeworkInfo.getStudentLessonTrainingDetails(), userIdList,courseHomework.getId()));
+
 					}
 					if(CollectionUtils.isEmpty(studentCourseHomeworks)){
 						throw new BizException("此课程没有学生");
 					}
+                    for (StudentCourseHomework studentCourseHomework : studentCourseHomeworks) {
+                        studentCourseHomework.setGroupType(teacherAttendance.getGroupType());
+                    }
 
 					//排除不被服务学员
 //					Set<Integer> serveStudentIds = studentServeService.getStudentWithCourse(teacherAttendance.getCourseScheduleId());
@@ -405,6 +428,9 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 									userMap, null, 0, 3 + notifyUrl, "STUDENT", teacher.getRealName(), courseSchedule.getName(), dateStr);
 						}
 					}
+                    if (!CollectionUtils.isEmpty(studentLessonTrainingDetails)) {
+                        studentLessonTrainingDetailService.saveBatch(studentLessonTrainingDetails);
+                    }
 				}else{
 					courseHomework.setContent(teacherSignOutDto.getCourseHomeworkInfo().getContent());
 					courseHomework.setAttachments(teacherSignOutDto.getCourseHomeworkInfo().getAttachments());

+ 42 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -4129,4 +4129,46 @@
     <select id="checkCourseIsSettlementReport" resultType="int">
         SELECT COUNT(*) course_schedule where settlement_report_flag_ = 1 and id_ = #{courseScheduleId}
     </select>
+
+    <select id="queryTeacherServeHomeworkDetailV2"
+            resultType="com.ym.mec.biz.dal.dto.CourseHomeworkWrapper$CourseHomeworkList">
+        SELECT
+        cs.id_ as courseScheduleId,
+        cs.class_date_ as classDate,
+        cs.start_class_time_ as startTime,
+        cs.end_class_time_ as endTime,
+        if(ch.id_ is null,'UNASSIGNED',if(ch.expiry_date_ &lt; now(),'ASSIGNED','DEADLINE')) as homeWorkStatus,
+        cs.teacher_id_ as teacherId,
+        cs.music_group_id_ as musicGroupId,
+        cs.type_ as classType,
+        cs.teach_mode_ as teachMode
+        from course_schedule cs
+        left join course_homework ch on cs.id_ = ch.course_schedule_id_
+
+        <where>
+            <if test="param.musicGroupId != null">
+                and #{param.musicGroupId} = cs.music_group_id_
+            </if>
+            <if test="param.classType != null">
+                and cs.type_ = #{param.classType}
+            </if>
+            <if test="param.homeWorkStatus != null">
+                <if test="param.homeWorkStatus.code == 'UNASSIGNED'">
+                    and ch.id_ is null
+                </if>
+                <if test="param.homeWorkStatus.code == 'ASSIGNED'">
+                    and ch.id_ is not null
+                </if>
+                <if test="param.homeWorkStatus.code == 'DEADLINE'">
+                    and ch.id_ is not null and ch.expiry_date_ &lt; now()
+                </if>
+            </if>
+            <if test="courseIds != null and courseIds.size() != 0">
+                and cs.id_ in
+                <foreach collection="courseIds" item="courseId" open="(" separator="," close=")">
+                    #{courseId}
+                </foreach>
+            </if>
+        </where>
+    </select>
 </mapper>

+ 87 - 0
mec-biz/src/main/resources/config/mybatis/LessonExaminationMapper.xml

@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ym.mec.biz.dal.dao.LessonExaminationDao">
+    <resultMap id="BaseResultMap" type="com.ym.mec.biz.dal.entity.LessonExamination">
+        <id column="id_" property="id"/>
+        <result column="teacher_id_" property="teacherId"/>
+        <result column="class_group_id_" property="classGroupId"/>
+        <result column="course_schedule_id_" property="courseScheduleId"/>
+        <result column="heard_level_" property="heardLevel"/>
+        <result column="batch_no_" property="batchNo"/>
+        <result column="title_" property="title"/>
+        <result column="attachments_" property="attachments"/>
+        <result column="content_" property="content"/>
+        <result column="expire_date_" jdbcType="TIMESTAMP" property="expireDate"/>
+        <result column="completed_num_" property="completedNum"/>
+        <result column="expect_num_" property="expectNum"/>
+        <result column="music_score_id_" property="musicScoreId"/>
+        <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>
+        <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime"/>
+        <result column="tenant_id_" property="tenantId"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id_
+        , teacher_id_, batch_no_, title_, attachments_, content_, expire_date_, completed_num_, expect_num_, music_score_id_, create_time_, update_time_, tenant_id_
+    </sql>
+
+    <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
+            parameterType="com.ym.mec.biz.dal.dto.LessonExaminationSaveDto">
+        insert into lesson_examination(teacher_id_, batch_no_, title_, attachments_, content_, expire_date_,
+        completed_num_, expect_num_, music_score_id_,tenant_id_)
+        values
+        <foreach collection="entities" item="entity" separator=",">
+            (#{entity.teacherId}, #{entity.batchNo}, #{entity.title}, #{entity.attachments}, #{entity.content},
+            #{entity.expireDate}, #{entity.completedNum}, #{entity.expectNum}, #{entity.musicScoreId},#{entity.tenantId})
+        </foreach>
+    </insert>
+    <select id="queryPage" resultType="com.ym.mec.biz.dal.dto.LessonExaminationResultDto">
+        select le.expire_date_ expireDate,cg.name_ classGroupName,mg.name_ musicGroupName,le.expect_num_ expectNum,
+               le.training_num_ trainingNum,le.standard_num_ standardNum
+        from lesson_examination le
+        left join class_group cg ON cg.id_ = le.class_group_id_
+        left join music_group mg ON mg.id_ = cg.music_group_id_
+        <include refid="queryPageSql"/>
+        GROUP BY le.id_ ORDER BY le.id_ DESC
+        <include refid="global.limit"/>
+    </select>
+    <select id="findCount" resultType="java.lang.Integer">
+        select COUNT(DISTINCT le.id_)
+        from lesson_examination le
+        left join class_group cg ON cg.id_ = le.class_group_id_
+        <include refid="queryPageSql"/>
+    </select>
+    <sql id="queryPageSql">
+        <where>
+            <if test="teacherId != null">
+                AND le.teacher_id_ = #{teacherId}
+            </if>
+            <if test="startTime != null and startTime != ''">
+                AND DATE_FORMAT( le.create_time_, '%Y-%m-%d' ) BETWEEN #{startTime} AND #{endTime}
+            </if>
+            <if test="classGroupType != null and classGroupType != ''">
+                AND cg.type_ = #{classGroupType}
+            </if>
+            <if test="expireFlag != null and expireFlag == true">
+                AND le.expire_date_ &lt; DATE_FORMAT( NOW(), '%Y-%m-%d' )
+            </if>
+            <if test="expireFlag != null and expireFlag == false">
+                AND le.expire_date_ >= DATE_FORMAT( NOW(), '%Y-%m-%d' )
+            </if>
+        </where>
+    </sql>
+
+    <select id="queryPageByStudent" resultType="com.ym.mec.biz.dal.dto.LessonExaminationResultDto1">
+        select le.expire_date_ expireDate,cg.name_ classGroupName,mg.name_ musicGroupName,le.expect_num_ expectNum,
+               le.training_num_ trainingNum,le.standard_num_ standardNum,sle.score_
+        from student_lesson_examination sle
+        left join lesson_examination le ON sle.lesson_examination_id_ = le.id_
+        left join class_group cg ON cg.id_ = le.class_group_id_
+        left join music_group mg ON mg.id_ = cg.music_group_id_
+        GROUP BY le.id_ ORDER BY le.id_ DESC
+    </select>
+    <select id="findCountByStudent" resultType="java.lang.Integer">
+
+    </select>
+
+</mapper>

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

@@ -88,7 +88,7 @@
             keyColumn="id" keyProperty="id">
         INSERT INTO student_course_homework
         (user_id_,course_schedule_id_,course_homework_id_,attachments_,score_,create_time_,
-         update_time_,remark_,status_,is_replied_,is_view_,is_replied_timely_,music_score_id_,music_score_content_,tenant_id_,standard_flag_)
+         update_time_,remark_,status_,is_replied_,is_view_,is_replied_timely_,music_score_id_,music_score_content_,tenant_id_,standard_flag_,group_type_)
         VALUE
         <foreach collection="list" item="homework" separator=",">
             (#{homework.userId},#{homework.courseScheduleId},#{homework.courseHomeworkId},#{homework.attachments},
@@ -96,7 +96,8 @@
             #{homework.isReplied,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             #{homework.isView,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{homework.isRepliedTimely},
             #{homework.musicScoreId},#{homework.musicScoreContent},#{homework.tenantId},
-            #{homework.standardFlag,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
+            #{homework.standardFlag,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            #{homework.groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
         </foreach>
     </insert>
 

+ 53 - 0
mec-biz/src/main/resources/config/mybatis/StudentLessonExaminationDetailMapper.xml

@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ym.mec.biz.dal.dao.StudentLessonExaminationDetailDao">
+    <resultMap id="BaseResultMap" type="com.ym.mec.biz.dal.entity.StudentLessonExaminationDetail">
+        <id column="id_" jdbcType="INTEGER" property="id"/>
+        <result column="user_id_" jdbcType="INTEGER" property="userId"/>
+        <result column="lesson_examination_id_" jdbcType="INTEGER" property="lessonExaminationId"/>
+        <result column="student_lesson_examination_id_" jdbcType="INTEGER" property="studentLessonExaminationId"/>
+        <result column="music_score_id_" jdbcType="INTEGER" property="musicScoreId"/>
+        <result column="heard_level_" jdbcType="VARCHAR" property="heardLevel"/>
+        <result column="training_score_" jdbcType="INTEGER" property="trainingScore"/>
+        <result column="training_status_" jdbcType="VARCHAR" property="trainingStatus"/>
+        <result column="score_" jdbcType="INTEGER" property="score"/>
+        <result column="standard_score_" jdbcType="INTEGER" property="standardScore"/>
+        <result column="part_index_" jdbcType="INTEGER" property="partIndex"/>
+        <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>
+        <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id_
+        , user_id_, lesson_examination_id_, student_lesson_examination_id_, music_score_id_, heard_level_, training_score_, training_status_, score_, standard_score_, part_index_, create_time_, update_time_
+    </sql>
+
+    <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_, student_lesson_examination_id_,
+        music_score_id_, heard_level_, training_score_, training_status_, score_, standard_score_, part_index_,
+        create_time_, update_time_)
+        values
+        <foreach collection="entities" item="entity" separator=",">
+            (#{entity.userId}, #{entity.lessonExaminationId}, #{entity.studentLessonExaminationId},
+            #{entity.musicScoreId}, #{entity.heardLevel}, #{entity.trainingScore}, #{entity.trainingStatus},
+            #{entity.score}, #{entity.standardScore}, #{entity.partIndex}, #{entity.createTime}, #{entity.updateTime})
+        </foreach>
+    </insert>
+    <select id="queryAll" resultType="com.ym.mec.biz.dal.dto.StudentLessonExaminationDetailDto">
+        select sms.name_ musicScoreName,sled.id_ id, sled.user_id_ userId, sled.lesson_examination_id_ lessonExaminationId, sled.music_score_id_ musicScoreId,
+               sled.heard_level_ heardLevel, sled.training_score_ trainingScore,sled.training_flag_ trainingFlag, sled.score_ score,
+               sled.standard_score_ standardScore, sled.part_index_ partIndex
+        from student_lesson_examination_detail sled
+        left join sys_music_score sms ON sms.id_ = sled.music_score_id_
+        <where>
+            <if test="query.userId != null">
+                AND sled.user_id_ = #{query.userId}
+            </if>
+            <if test="query.lessonExaminationId != null">
+                AND sled.lesson_examination_id_ = #{query.lessonExaminationId}
+            </if>
+        </where>
+    </select>
+
+</mapper>

+ 62 - 0
mec-biz/src/main/resources/config/mybatis/StudentLessonExaminationMapper.xml

@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ym.mec.biz.dal.dao.StudentLessonExaminationDao">
+    <resultMap id="BaseResultMap" type="com.ym.mec.biz.dal.entity.StudentLessonExamination">
+        <id column="id_" jdbcType="INTEGER" property="id"/>
+        <result column="user_id_" jdbcType="INTEGER" property="userId"/>
+        <result column="lesson_examination_id_" jdbcType="INTEGER" property="lessonExaminationId"/>
+        <result column="score_" jdbcType="INTEGER" property="score"/>
+        <result column="training_status_" jdbcType="VARCHAR" property="trainingStatus"/>
+        <result column="expire_date_" jdbcType="TIMESTAMP" property="expireDate"/>
+        <result column="training_time_" jdbcType="TIMESTAMP" property="trainingTime"/>
+        <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>
+        <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id_
+        , user_id_, lesson_examination_id_, score_, training_status_, expire_date_, training_time_, create_time_, update_time_
+    </sql>
+
+    <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
+            parameterType="com.ym.mec.biz.dal.entity.StudentLessonExamination">
+        insert into student_lesson_examination(user_id_, lesson_examination_id_, score_, training_status_, expire_date_,training_time_)
+        values
+        <foreach collection="entities" item="entity" separator=",">
+            (#{entity.userId}, #{entity.lessonExaminationId}, #{entity.score}, #{entity.trainingStatus},
+            #{entity.expireDate}, #{entity.trainingTime})
+        </foreach>
+    </insert>
+    <sql id="queryPageSql">
+        <where>
+            <if test="lessonExaminationId != null">
+                AND sle.lesson_examination_id_ = #{lessonExaminationId}
+            </if>
+            <if test="trainingFlag != null">
+                AND sle.training_flag_ = #{trainingFlag}
+            </if>
+            <if test="standardFlag != null">
+                AND sle.standard_flag_ = #{standardFlag}
+            </if>
+            <if test="userId != null">
+                AND sle.user_id_ = #{userId}
+            </if>
+        </where>
+    </sql>
+    <select id="queryPage" resultType="com.ym.mec.biz.dal.dto.StudentLessonExaminationDto">
+        select su.avatar_ avatar,su.username_ username,sle.training_time_ trainingTime,sle.score_ score,
+               CASE WHEN s.membership_end_time_ > NOW() THEN 1 ELSE 0 END memberFlag,
+               sle.user_id_ userId,sle.lesson_examination_id_ lessonExaminationId,sb.name_ subjectName
+        from student_lesson_examination sle
+        left join student s ON s.user_id_ = sle.user_id_
+        left join subject sb ON s.subject_id_list_ = sb.id_
+        left join sys_user su on s.user_id_ = su.id_
+        ORDER BY sle.score_ DESC,sle.id_
+        <include refid="global.limit"/>
+    </select>
+    <select id="findCount" resultType="java.lang.Integer">
+        select COUNT(sle.id_) from student_lesson_examination sle
+        <include refid="global.limit"/>
+    </select>
+
+</mapper>

+ 5 - 0
mec-biz/src/main/resources/config/mybatis/StudentLessonTrainingDetailMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE  mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.ym.mec.biz.dal.dao.StudentLessonTrainingDetailMapper">
+
+</mapper>

+ 44 - 0
mec-student/src/main/java/com/ym/mec/student/controller/LessonExaminationController.java

@@ -0,0 +1,44 @@
+package com.ym.mec.student.controller;
+
+
+import com.ym.mec.biz.dal.dto.LessonExaminationResultDto1;
+import com.ym.mec.biz.dal.page.LessonExaminationQueryInfo1;
+import com.ym.mec.biz.service.LessonExaminationService;
+import com.ym.mec.biz.service.SysUserService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * 进度评测表(LessonExamination)表控制层
+ *
+ * @author zx
+ * @since 2023-04-03 18:20:19
+ */
+@Api(tags = "进度评测表")
+@RestController
+@RequestMapping("/lessonExamination")
+public class LessonExaminationController extends BaseController {
+
+    @Resource
+    private LessonExaminationService lessonExaminationService;
+    @Resource
+    private SysUserService sysUserService;
+
+    @ApiOperation(value = "获取作业列表")
+    @PostMapping("queryPage")
+    public HttpResponseResult<PageInfo<LessonExaminationResultDto1>> queryPage(@RequestBody LessonExaminationQueryInfo1 queryInfo) {
+        queryInfo.setStudentId(sysUserService.getUserId());
+        return succeed(lessonExaminationService.queryPageByStudent(queryInfo));
+    }
+
+}
+

+ 51 - 0
mec-student/src/main/java/com/ym/mec/student/controller/StudentLessonExaminationController.java

@@ -0,0 +1,51 @@
+package com.ym.mec.student.controller;
+
+
+import com.ym.mec.biz.dal.dto.LessonExaminationSubmitDto;
+import com.ym.mec.biz.dal.dto.StudentLessonExaminationDto;
+import com.ym.mec.biz.dal.page.StudentLessonExaminationQueryInfo;
+import com.ym.mec.biz.service.StudentLessonExaminationService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * 学生进度评测表(StudentLessonExamination)表控制层
+ *
+ * @author zx
+ * @since 2023-04-03 18:21:30
+ */
+@Api(tags = "学生进度评测表")
+@RestController
+@RequestMapping("/studentLessonExamination")
+public class StudentLessonExaminationController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private StudentLessonExaminationService studentLessonExaminationService;
+
+    @ApiOperation(value = "获取单个学员评测")
+    @PostMapping("getOne")
+    public HttpResponseResult<StudentLessonExaminationDto> getOne(@RequestBody StudentLessonExaminationQueryInfo queryInfo) {
+        return succeed(studentLessonExaminationService.queryPage(queryInfo).getRows().get(0));
+    }
+
+    @ApiOperation(value = "提交作业")
+    @PostMapping("submit")
+    public HttpResponseResult submit(@RequestBody LessonExaminationSubmitDto submitDto) {
+        studentLessonExaminationService.submit(submitDto);
+        return succeed();
+    }
+
+
+
+}
+

+ 15 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/ExtracurricularExercisesController.java

@@ -6,6 +6,8 @@ import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
 import com.ym.mec.biz.dal.dao.StudentDao;
 import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
+import com.ym.mec.biz.dal.dto.CourseHomeworkWrapper;
+import com.ym.mec.biz.dal.dto.StudentExercisesSituationDto;
 import com.ym.mec.biz.dal.entity.ClassGroup;
 import com.ym.mec.biz.dal.entity.ExtracurricularExercises;
 import com.ym.mec.biz.dal.entity.MusicGroup;
@@ -18,6 +20,7 @@ import com.ym.mec.biz.service.ExtracurricularExercisesService;
 import com.ym.mec.biz.service.StudentExtracurricularExercisesSituationService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
 import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -65,6 +68,18 @@ public class ExtracurricularExercisesController extends BaseController {
     }
 
 
+    @ApiOperation(value = "获取教师有服务指标的课程列表")
+    @GetMapping("/queryTeacherServeHomeworkDetail/v2")
+    public HttpResponseResult<PageInfo<CourseHomeworkWrapper.CourseHomeworkList>> queryTeacherServeHomeworkDetailV2(CourseHomeworkWrapper.CourseHomeworkQuery queryInfo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        queryInfo.setTeacherId(sysUser.getId());
+        return succeed(studentExtracurricularExercisesSituationService.queryTeacherServeHomeworkDetailV2(queryInfo));
+    }
+
+
     @ApiOperation(value = "获取老师训练统计")
     @GetMapping("/getStatistics")
     public HttpResponseResult getStatistics(ExtraExercilseQueryInfo queryInfo) {

+ 53 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/LessonExaminationController.java

@@ -0,0 +1,53 @@
+package com.ym.mec.teacher.controller;
+
+
+import com.ym.mec.biz.dal.dto.LessonExaminationResultDto;
+import com.ym.mec.biz.dal.dto.LessonExaminationSaveDto;
+import com.ym.mec.biz.dal.page.LessonExaminationQueryInfo;
+import com.ym.mec.biz.service.LessonExaminationService;
+import com.ym.mec.biz.service.SysUserService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 进度评测表(LessonExamination)表控制层
+ *
+ * @author zx
+ * @since 2023-04-03 18:20:19
+ */
+@Api(tags = "进度评测表")
+@RestController
+@RequestMapping("/lessonExamination")
+public class LessonExaminationController extends BaseController {
+
+    @Resource
+    private LessonExaminationService lessonExaminationService;
+    @Resource
+    private SysUserService sysUserService;
+
+    @ApiOperation(value = "布置作业")
+    @PostMapping("publish")
+    public HttpResponseResult publish(@RequestBody LessonExaminationSaveDto lessonExaminationSaveDto) {
+        lessonExaminationSaveDto.setTeacherId(sysUserService.getUserId());
+        lessonExaminationService.publish(lessonExaminationSaveDto);
+        return succeed();
+    }
+
+    @ApiOperation(value = "获取作业列表")
+    @PostMapping("queryPage")
+    public HttpResponseResult<PageInfo<LessonExaminationResultDto>> queryPage(@RequestBody LessonExaminationQueryInfo queryInfo) {
+        return succeed(lessonExaminationService.queryPage(queryInfo));
+    }
+
+}
+

+ 48 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/StudentLessonExaminationController.java

@@ -0,0 +1,48 @@
+package com.ym.mec.teacher.controller;
+
+
+import com.ym.mec.biz.dal.dto.StudentLessonExaminationDto;
+import com.ym.mec.biz.dal.page.StudentLessonExaminationQueryInfo;
+import com.ym.mec.biz.service.StudentLessonExaminationService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * 学生进度评测表(StudentLessonExamination)表控制层
+ *
+ * @author zx
+ * @since 2023-04-03 18:21:30
+ */
+@Api(tags = "学生进度评测表")
+@RestController
+@RequestMapping("/studentLessonExamination")
+public class StudentLessonExaminationController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private StudentLessonExaminationService studentLessonExaminationService;
+
+    @ApiOperation(value = "获取学员列表")
+    @PostMapping("queryPage")
+    public HttpResponseResult<PageInfo<StudentLessonExaminationDto>> queryPage(@RequestBody StudentLessonExaminationQueryInfo queryInfo) {
+        return succeed(studentLessonExaminationService.queryPage(queryInfo));
+    }
+
+    @ApiOperation(value = "获取单个学员")
+    @PostMapping("getOne")
+    public HttpResponseResult<StudentLessonExaminationDto> getOne(@RequestBody StudentLessonExaminationQueryInfo queryInfo) {
+        return succeed(studentLessonExaminationService.queryPage(queryInfo).getRows().get(0));
+    }
+
+}
+

+ 43 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/StudentLessonExaminationDetailController.java

@@ -0,0 +1,43 @@
+package com.ym.mec.teacher.controller;
+
+
+import com.ym.mec.biz.dal.dto.StudentLessonExaminationDetailDto;
+import com.ym.mec.biz.dal.dto.StudentLessonExaminationDto;
+import com.ym.mec.biz.dal.entity.StudentLessonExaminationDetail;
+import com.ym.mec.biz.dal.page.StudentLessonExaminationQueryDto;
+import com.ym.mec.biz.dal.page.StudentLessonExaminationQueryInfo;
+import com.ym.mec.biz.service.StudentLessonExaminationDetailService;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+import com.ym.mec.common.controller.BaseController;
+import io.swagger.annotations.Api;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 进度评测详情表(StudentLessonExaminationDetail)表控制层
+ *
+ * @author zx
+ * @since 2023-04-03 18:22:00
+ */
+@Api(tags = "进度评测详情表")
+@RestController
+@RequestMapping("/studentLessonExaminationDetail")
+public class StudentLessonExaminationDetailController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private StudentLessonExaminationDetailService studentLessonExaminationDetailService;
+
+
+    @ApiOperation(value = "获取学员列表")
+    @PostMapping("queryAll")
+    public HttpResponseResult<List<StudentLessonExaminationDetailDto>> queryAll(@RequestBody StudentLessonExaminationQueryDto query) {
+        return succeed(studentLessonExaminationDetailService.queryAll(query));
+    }
+}
+

+ 45 - 0
mec-web/src/main/java/com/ym/mec/web/controller/LessonExaminationController.java

@@ -0,0 +1,45 @@
+package com.ym.mec.web.controller;
+
+
+import com.ym.mec.biz.dal.dto.LessonExaminationResultDto1;
+import com.ym.mec.biz.dal.dto.LessonExaminationResultDto2;
+import com.ym.mec.biz.dal.page.LessonExaminationQueryInfo1;
+import com.ym.mec.biz.dal.page.LessonExaminationQueryInfo2;
+import com.ym.mec.biz.service.LessonExaminationService;
+import com.ym.mec.biz.service.SysUserService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * 进度评测表(LessonExamination)表控制层
+ *
+ * @author zx
+ * @since 2023-04-03 18:20:19
+ */
+@Api(tags = "进度评测表")
+@RestController
+@RequestMapping("/lessonExamination")
+public class LessonExaminationController extends BaseController {
+
+    @Resource
+    private LessonExaminationService lessonExaminationService;
+    @Resource
+    private SysUserService sysUserService;
+
+    @ApiOperation(value = "获取作业列表")
+    @PostMapping("queryPage")
+    public HttpResponseResult<PageInfo<LessonExaminationResultDto2>> queryPage(@RequestBody LessonExaminationQueryInfo2 queryInfo) {
+        return succeed(lessonExaminationService.queryPageByWeb(queryInfo));
+    }
+
+}
+

+ 40 - 0
mec-web/src/main/java/com/ym/mec/web/controller/StudentLessonExaminationController.java

@@ -0,0 +1,40 @@
+package com.ym.mec.web.controller;
+
+
+import com.ym.mec.biz.dal.dto.StudentLessonExaminationDto1;
+import com.ym.mec.biz.service.StudentLessonExaminationService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * 学生进度评测表(StudentLessonExamination)表控制层
+ *
+ * @author zx
+ * @since 2023-04-03 18:21:30
+ */
+@Api(tags = "学生进度评测表")
+@RestController
+@RequestMapping("/studentLessonExamination")
+public class StudentLessonExaminationController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private StudentLessonExaminationService studentLessonExaminationService;
+
+    @ApiOperation(value = "获取评测学员列表")
+    @PostMapping("queryPage")
+    public HttpResponseResult<PageInfo<StudentLessonExaminationDto1>> queryPage(Integer studentLessonExaminationId) {
+        return succeed(studentLessonExaminationService.queryPageByWeb(studentLessonExaminationId));
+    }
+
+}
+