Quellcode durchsuchen

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

liujunchi vor 2 Jahren
Ursprung
Commit
ee3980ed05
37 geänderte Dateien mit 1676 neuen und 0 gelöschten Zeilen
  1. 31 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/LessonExaminationDao.java
  2. 25 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentLessonExaminationDao.java
  3. 23 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentLessonExaminationDetailDao.java
  4. 30 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationDetailDto.java
  5. 38 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationResultDto.java
  6. 44 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationResultDto1.java
  7. 53 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationResultDto2.java
  8. 36 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationSaveDto.java
  9. 23 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationSubmitDto.java
  10. 48 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonExaminationDetailDto.java
  11. 24 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonExaminationDetailDto1.java
  12. 41 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonExaminationDto.java
  13. 34 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonExaminationDto1.java
  14. 63 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/LessonExamination.java
  15. 59 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentLessonExamination.java
  16. 80 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentLessonExaminationDetail.java
  17. 24 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/LessonExaminationQueryInfo.java
  18. 24 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/LessonExaminationQueryInfo1.java
  19. 27 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/LessonExaminationQueryInfo2.java
  20. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentLessonExaminationQueryDto.java
  21. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentLessonExaminationQueryInfo.java
  22. 35 0
      mec-biz/src/main/java/com/ym/mec/biz/service/LessonExaminationService.java
  23. 26 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentLessonExaminationDetailService.java
  24. 40 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentLessonExaminationService.java
  25. 128 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/LessonExaminationServiceImpl.java
  26. 69 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonExaminationDetailServiceImpl.java
  27. 90 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonExaminationServiceImpl.java
  28. 87 0
      mec-biz/src/main/resources/config/mybatis/LessonExaminationMapper.xml
  29. 53 0
      mec-biz/src/main/resources/config/mybatis/StudentLessonExaminationDetailMapper.xml
  30. 62 0
      mec-biz/src/main/resources/config/mybatis/StudentLessonExaminationMapper.xml
  31. 44 0
      mec-student/src/main/java/com/ym/mec/student/controller/LessonExaminationController.java
  32. 51 0
      mec-student/src/main/java/com/ym/mec/student/controller/StudentLessonExaminationController.java
  33. 53 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/LessonExaminationController.java
  34. 48 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/StudentLessonExaminationController.java
  35. 43 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/StudentLessonExaminationDetailController.java
  36. 45 0
      mec-web/src/main/java/com/ym/mec/web/controller/LessonExaminationController.java
  37. 40 0
      mec-web/src/main/java/com/ym/mec/web/controller/StudentLessonExaminationController.java

+ 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);
+}
+

+ 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;
+}
+

+ 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;
+}
+

+ 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();
+}
+

+ 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;
+
+}
+

+ 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);
+}
+

+ 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);
+}
+

+ 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;
+    }
+
+}
+

+ 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;
+    }
+}
+

+ 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>

+ 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>

+ 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();
+    }
+
+
+
+}
+

+ 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));
+    }
+
+}
+