Browse Source

Merge branch 'feature/1031_homework' into feature/1106_homework

刘俊驰 8 tháng trước cách đây
mục cha
commit
fd13365357
16 tập tin đã thay đổi với 119 bổ sung37 xóa
  1. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseHomeworkWrapper.java
  2. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationResultDto1.java
  3. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonExaminationDetailDto.java
  4. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonExaminationDetailDto1.java
  5. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonExaminationDto.java
  6. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentLessonExaminationDetail.java
  7. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentLessonTrainingDetail.java
  8. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentLessonExaminationDetailService.java
  9. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesServiceImpl.java
  10. 8 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/LessonExaminationServiceImpl.java
  11. 7 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java
  12. 50 24
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonExaminationDetailServiceImpl.java
  13. 4 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonExaminationServiceImpl.java
  14. 21 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonTrainingDetailServiceImpl.java
  15. 4 3
      mec-biz/src/main/resources/config/mybatis/StudentLessonExaminationDetailMapper.xml
  16. 2 1
      mec-biz/src/main/resources/config/mybatis/StudentLessonExaminationMapper.xml

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

@@ -211,6 +211,8 @@ public class CourseHomeworkWrapper {
 
         private String studentIdList;
 
+        @ApiModelProperty("训练说明")
+        private String memo;
 
         @ApiModelProperty("练习内容")
         private List<StudentLessonTrainingDetailWrapper.StudentLessonTrainingDetail> trainingDetailList;

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

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dto;
 
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -54,5 +55,8 @@ public class LessonExaminationResultDto1 {
 
     @ApiModelProperty(value = "是否测评")
     private Boolean trainingFlag;
+
+    @TableField("memo_")
+    private String memo;
 }
 

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

@@ -63,5 +63,7 @@ public class StudentLessonExaminationDetailDto {
     @ApiModelProperty("作业分组")
     private Integer group;
 
+    @ApiModelProperty("作业类型,MUSIC_SCORE:曲目评测,DESCRIPTION:描述")
+    private String type;
 }
 

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

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dto;
 
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.ym.mec.biz.dal.enums.HardLevelEnum;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -33,5 +34,8 @@ public class StudentLessonExaminationDetailDto1 {
 
     @ApiModelProperty(value = "训练说明")
     private String memo;
+
+    @ApiModelProperty("作业类型,MUSIC_SCORE:曲目评测,DESCRIPTION:描述")
+    private String type;
 }
 

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

@@ -45,6 +45,10 @@ public class StudentLessonExaminationDto {
     @ApiModelProperty("作业分组")
     private Integer group;
 
+
+    @ApiModelProperty(value = "描述")
+    private String memo;
+
     @ApiModelProperty("作业详情")
     private StudentLessonExaminationDetailDto studentLessonExaminationDetail;
 }

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

@@ -94,5 +94,8 @@ public class StudentLessonExaminationDetail implements Serializable {
     @ApiModelProperty(value = "更新时间")
     private Date updateTime;
 
+    @ApiModelProperty("作业类型,MUSIC_SCORE:曲目评测,DESCRIPTION:描述")
+    @TableField(value = "type_")
+    private String type;
 }
 

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

@@ -80,7 +80,7 @@ public class StudentLessonTrainingDetail implements Serializable {
 	@TableField(value = "times_")
     private Integer times;
 
-    @ApiModelProperty("作业类型,VIDEO,MUSIC_SCORE")
+    @ApiModelProperty("作业类型,VIDEO,MUSIC_SCORE,DESCRIPTION:描述")
     @TableField(value = "homework_type_")
     private String homeworkType = "MUSIC_SCORE";
 

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

@@ -23,5 +23,7 @@ public interface StudentLessonExaminationDetailService extends IService<StudentL
     void save(Long lessonExaminationId,List<StudentLessonExaminationSaveDto> studentLessonExaminationSaveDtos);
 
     List<StudentLessonExaminationDetailDto> queryAll(StudentLessonExaminationQueryDto query);
+
+    List<StudentLessonExaminationDetail> queryByStudent(Integer userId, Long lessonExaminationId);
 }
 

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

@@ -125,7 +125,7 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E
                     extracurricularExercisesReplies.add(JSON.parseObject(JSON.toJSONString(studentExtraExercise),ExtracurricularExercisesReply.class));
                 }
                 if (CollectionUtils.isEmpty(musicScoreSubjectDto.getStudentLessonTrainingDetails())) {
-                    throw new BizException("有部分声部未选择曲目");
+                    musicScoreSubjectDto.setStudentLessonTrainingDetails(new ArrayList<>());
                 }
                 for (StudentLessonTrainingDetailWrapper.AddStudentLessonTrainingDetail studentLessonTrainingDetail : musicScoreSubjectDto.getStudentLessonTrainingDetails()) {
                     studentLessonTrainingDetail.setSubjectId(0);

+ 8 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/LessonExaminationServiceImpl.java

@@ -205,7 +205,14 @@ public class LessonExaminationServiceImpl extends ServiceImpl<LessonExaminationD
 
     @Override
     public LessonExaminationResultDto1 getOne(Integer userId, Long lessonExaminationId) {
-        return baseMapper.getOneByStudent(userId,lessonExaminationId);
+        LessonExaminationResultDto1 oneByStudent = baseMapper.getOneByStudent(userId, lessonExaminationId);
+        if(Objects.nonNull(oneByStudent)){
+            List<StudentLessonExaminationDetail> details = studentLessonExaminationDetailService.queryByStudent(userId, lessonExaminationId);
+            if(CollectionUtils.isNotEmpty(details)){
+                oneByStudent.setMemo(details.get(0).getMemo());
+            }
+        }
+        return oneByStudent;
     }
 
     @Override

+ 7 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java

@@ -901,7 +901,13 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
         } else {
             courseHomeworkDetail.setFinishStatus(true);
         }
-        courseHomeworkDetail.setTrainingDetailList(detailList);
+        if (CollectionUtils.isNotEmpty(detailList)) {
+            //设置训练说明
+            courseHomeworkDetail.setMemo(detailList.get(0).getMemo());
+            // 过滤 描述 类的作业
+
+            courseHomeworkDetail.setTrainingDetailList(detailList);
+        }
 
         return BaseController.succeed(courseHomeworkDetail);
     }

+ 50 - 24
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonExaminationDetailServiceImpl.java

@@ -15,6 +15,7 @@ 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 java.util.ArrayList;
 import java.util.List;
@@ -42,32 +43,49 @@ public class StudentLessonExaminationDetailServiceImpl extends ServiceImpl<Stude
         for (StudentLessonExaminationSaveDto dto : studentLessonExaminationSaveDtos) {
             String[] studentIds = dto.getStudentIds().split(",");
             List<LessonExaminationDetailDto> detailDtos = dto.getExaminationDetailDtos();
-            if (CollectionUtils.isEmpty(detailDtos)) {
-                throw new BizException("有部分声部未选择曲目");
+            if (CollectionUtils.isEmpty(detailDtos) && StringUtils.isEmpty(dto.getMemo())) {
+                throw new BizException("有部分声部未设置作业内容");
             }
-            for (String id : studentIds) {
-                Integer studentId = Integer.parseInt(id);
-                Integer score = 100/detailDtos.size();
-                Integer subScore = 100 - score * detailDtos.size();
-                for (int i = 0; i < detailDtos.size(); i++) {
-                    LessonExaminationDetailDto vo = detailDtos.get(i);
-                    StudentLessonExaminationDetail studentLessonExaminationDetail = new StudentLessonExaminationDetail();
-                    studentLessonExaminationDetail.setUserId(studentId);
-                    studentLessonExaminationDetail.setMemo(dto.getMemo());
-                    studentLessonExaminationDetail.setLessonExaminationId(lessonExaminationId);
-                    studentLessonExaminationDetail.setMusicScoreId(vo.getMusicScoreId());
-                    studentLessonExaminationDetail.setHeardLevel(vo.getHeardLevel());
-                    studentLessonExaminationDetail.setStandardScore(vo.getScore());
-                    studentLessonExaminationDetail.setStart(vo.getStart());
-                    studentLessonExaminationDetail.setEnd(vo.getEnd());
-                    studentLessonExaminationDetail.setGroup(dto.getGroup());
-                    if(i == 0){
-                        studentLessonExaminationDetail.setAvgScore(score + subScore);
-                    }else {
-                        studentLessonExaminationDetail.setAvgScore(score);
+            if (CollectionUtils.isEmpty(detailDtos)) {
+//                throw new BizException("有部分声部未选择曲目");
+                for (String id : studentIds) {
+                    Integer studentId = Integer.parseInt(id);
+                    for (int i = 0; i < 4; i++) {
+                        StudentLessonExaminationDetail studentLessonExaminationDetail = new StudentLessonExaminationDetail();
+                        studentLessonExaminationDetail.setUserId(studentId);
+                        studentLessonExaminationDetail.setMemo(dto.getMemo());
+                        studentLessonExaminationDetail.setLessonExaminationId(lessonExaminationId);
+                        studentLessonExaminationDetail.setGroup(dto.getGroup());
+                        studentLessonExaminationDetail.setType("DESCRIPTION");
+                        detailList.add(studentLessonExaminationDetail);
+                    }
+                }
+            } else {
+                for (String id : studentIds) {
+                    Integer studentId = Integer.parseInt(id);
+                    Integer score = 100 / detailDtos.size();
+                    Integer subScore = 100 - score * detailDtos.size();
+                    for (int i = 0; i < detailDtos.size(); i++) {
+                        LessonExaminationDetailDto vo = detailDtos.get(i);
+                        StudentLessonExaminationDetail studentLessonExaminationDetail = new StudentLessonExaminationDetail();
+                        studentLessonExaminationDetail.setUserId(studentId);
+                        studentLessonExaminationDetail.setMemo(dto.getMemo());
+                        studentLessonExaminationDetail.setLessonExaminationId(lessonExaminationId);
+                        studentLessonExaminationDetail.setMusicScoreId(vo.getMusicScoreId());
+                        studentLessonExaminationDetail.setHeardLevel(vo.getHeardLevel());
+                        studentLessonExaminationDetail.setStandardScore(vo.getScore());
+                        studentLessonExaminationDetail.setStart(vo.getStart());
+                        studentLessonExaminationDetail.setType("MUSIC_SCORE");
+                        studentLessonExaminationDetail.setEnd(vo.getEnd());
+                        studentLessonExaminationDetail.setGroup(dto.getGroup());
+                        if (i == 0) {
+                            studentLessonExaminationDetail.setAvgScore(score + subScore);
+                        } else {
+                            studentLessonExaminationDetail.setAvgScore(score);
+                        }
+                        studentLessonExaminationDetail.setPartIndex(vo.getPartIndex());
+                        detailList.add(studentLessonExaminationDetail);
                     }
-                    studentLessonExaminationDetail.setPartIndex(vo.getPartIndex());
-                    detailList.add(studentLessonExaminationDetail);
                 }
             }
         }
@@ -79,5 +97,13 @@ public class StudentLessonExaminationDetailServiceImpl extends ServiceImpl<Stude
         return baseMapper.queryAll(query);
     }
 
+    @Override
+    public List<StudentLessonExaminationDetail> queryByStudent(Integer userId, Long lessonExaminationId) {
+        return this.lambdaQuery()
+            .eq(StudentLessonExaminationDetail::getUserId, userId)
+            .eq(StudentLessonExaminationDetail::getLessonExaminationId, lessonExaminationId)
+            .list();
+    }
+
 }
 

+ 4 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonExaminationServiceImpl.java

@@ -110,7 +110,7 @@ public class StudentLessonExaminationServiceImpl extends ServiceImpl<StudentLess
                 if(queryInfo.getLessonExaminationId() != null){
                     List<StudentLessonExaminationDetail> list = studentLessonExaminationDetailService.lambdaQuery().
                             eq(StudentLessonExaminationDetail::getLessonExaminationId, queryInfo.getLessonExaminationId()).list();
-                    String musicScoreIds = list.stream().map(e->e.getMusicScoreId().toString()).collect(Collectors.joining(","));
+                    String musicScoreIds = list.stream().filter(o-> "MUSIC_SCORE".equals(o.getType())).map(e->e.getMusicScoreId().toString()).collect(Collectors.joining(","));
                     Map<Integer, SysMusicScore> musicScoreMap = new HashMap<>();
                     if (StringUtils.isNotEmpty(musicScoreIds)) {
                         List<SysMusicScore> musicScores = sysMusicScoreDao.findByIds(musicScoreIds);
@@ -122,15 +122,16 @@ public class StudentLessonExaminationServiceImpl extends ServiceImpl<StudentLess
                             Collectors.collectingAndThen(Collectors.toList(), e -> e.get(0))));
                     for (StudentLessonExaminationDto dto : dataList) {
                         StudentLessonExaminationDetail detail = examinationIdMap.get(dto.getUserId());
-                        if (detail != null) {
+                        if (detail != null ) {
                             StudentLessonExaminationDetailDto detailDto = JSON.parseObject(JSON.toJSONString(detail), StudentLessonExaminationDetailDto.class);
-                            if(detail.getMusicScoreId() != null){
+                            if(detail.getMusicScoreId() != null && "MUSIC_SCORE".equals(detail.getType())){
                                 SysMusicScore musicScore = musicScoreMap.get(detail.getMusicScoreId().intValue());
                                 if (musicScore != null){
                                     detailDto.setMusicScoreName(musicScore.getName());
                                 }
                             }
                             dto.setStudentLessonExaminationDetail(detailDto);
+                            dto.setMemo(detailDto.getMemo());
                         }
                     }
                 }

+ 21 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonTrainingDetailServiceImpl.java

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

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

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

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

@@ -83,13 +83,14 @@
             <result property="avgScore" column="avg_score_"/>
             <result property="musicScoreName" column="musicScoreName"/>
             <result property="memo" column="memo_"/>
+            <result property="type" column="type"/>
             <result property="heardLevel" column="heard_level_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         </collection>
     </resultMap>
     <select id="queryStudentPage" resultMap="StudentLessonExaminationDtoMap">
         select sle.user_id_,su.username_,su.phone_,sb.name_ subjectName,sle.training_score_ trainingScore,
                sms.name_ musicScoreName,sled.actual_avg_score_,sled.standard_score_,sled.training_score_,
-               sled.avg_score_,sled.heard_level_,sle.training_time_,sle.group_,sled.memo_
+               sled.avg_score_,sled.heard_level_,sle.training_time_,sle.group_,sled.memo_,sled.type_ as type
         from student_lesson_examination sle
         left join student_lesson_examination_detail sled ON sled.lesson_examination_id_ = sle.lesson_examination_id_ AND sled.user_id_ = sle.user_id_
         left join sys_music_score sms ON sms.id_ = sled.music_score_id_