Jelajahi Sumber

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

liujunchi 2 tahun lalu
induk
melakukan
0ce3ea2579
17 mengubah file dengan 222 tambahan dan 120 penghapusan
  1. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/LessonExaminationDao.java
  2. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentLessonExaminationDao.java
  3. 0 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationDetailDto.java
  4. 5 5
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationSaveDto.java
  5. 1 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationSubmitDto.java
  6. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonExaminationDetailDto.java
  7. 26 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonExaminationSaveDto.java
  8. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/LessonExamination.java
  9. 3 6
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentLessonExaminationDetail.java
  10. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentLessonExaminationDetailService.java
  11. 2 5
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentLessonExaminationService.java
  12. 33 13
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/LessonExaminationServiceImpl.java
  13. 24 19
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonExaminationDetailServiceImpl.java
  14. 73 17
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonExaminationServiceImpl.java
  15. 18 20
      mec-biz/src/main/resources/config/mybatis/LessonExaminationMapper.xml
  16. 20 25
      mec-biz/src/main/resources/config/mybatis/StudentLessonExaminationDetailMapper.xml
  17. 7 0
      mec-biz/src/main/resources/config/mybatis/StudentLessonExaminationMapper.xml

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

@@ -30,5 +30,9 @@ public interface LessonExaminationDao extends BaseMapper<LessonExamination> {
     int findCountByStudent(Map<String, Object> params);
 
     LessonExaminationResultDto1 getOneByStudent(@Param("userId") Integer userId, @Param("lessonExaminationId") Long lessonExaminationId);
+
+    void updateTrainingNum(@Param("lessonExaminationId") Long lessonExaminationId);
+
+    void updateStandardNum(@Param("lessonExaminationId") Long lessonExaminationId);
 }
 

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

@@ -31,5 +31,7 @@ public interface StudentLessonExaminationDao extends BaseMapper<StudentLessonExa
      * @param userId 用户id
      */
     int queryNotSuccessExaminationList(Integer userId);
+
+    void updateTrainingScore(@Param("lessonExaminationId") Long lessonExaminationId, @Param("userId") Integer userId);
 }
 

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

@@ -23,8 +23,5 @@ public class LessonExaminationDetailDto{
 
     @ApiModelProperty(value = "合格分数")
     private Integer score;
-
-    @ApiModelProperty(value = "声部")
-    private Integer subjectId;
 }
 

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

@@ -19,7 +19,7 @@ public class LessonExaminationSaveDto {
     private Integer teacherId;
 
     @ApiModelProperty(value = "班级编号")
-    private Long classGroupId;
+    private Integer classGroupId;
 
     @ApiModelProperty(value = "课程编号")
     private Long courseScheduleId;
@@ -27,10 +27,10 @@ public class LessonExaminationSaveDto {
     @ApiModelProperty(value = "截止日期")
     private Date expireDate;
 
-    @ApiModelProperty(value = "学员编号,逗号分割")
-    private String studentIds;
+    @ApiModelProperty(value = "学员总数")
+    private Integer expectNum;
 
-    @ApiModelProperty(value = "作业内容")
-    private List<LessonExaminationDetailDto> examinationDetailDtos;
+    @ApiModelProperty(value = "声部学员列表")
+    private List<StudentLessonExaminationSaveDto> studentLessonExaminationSaveDtos;
 }
 

+ 1 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationSubmitDto.java

@@ -12,10 +12,7 @@ import lombok.Data;
 @Data
 public class LessonExaminationSubmitDto {
     @ApiModelProperty(value = "测验编号")
-    private Long LessonExaminationId;
-
-    @ApiModelProperty(value = "学员编号")
-    private Integer userId;
+    private Long studentLessonExaminationDetailId;
 
     @ApiModelProperty(value = "测评分数")
     private Integer score;

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

@@ -12,7 +12,7 @@ import lombok.Data;
 @Data
 public class StudentLessonExaminationDetailDto {
     @ApiModelProperty(value = "主键")
-    private Long id;
+    private Long studentLessonExaminationDetailId;
 
     @ApiModelProperty(value = "学员编号")
     private Integer userId;

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

@@ -0,0 +1,26 @@
+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 StudentLessonExaminationSaveDto {
+
+    @ApiModelProperty(value = "学员编号,逗号分割")
+    private String studentIds;
+
+    @ApiModelProperty(value = "声部")
+    private Integer subjectId;
+
+    @ApiModelProperty(value = "作业内容")
+    private List<LessonExaminationDetailDto> examinationDetailDtos;
+}
+

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

@@ -33,7 +33,7 @@ public class LessonExamination{
 
     @TableField("class_group_id_")
     @ApiModelProperty(value = "班级编号")
-    private Long classGroupId;
+    private Integer classGroupId;
 
     @TableField("course_schedule_id_")
     @ApiModelProperty(value = "课程编号")

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

@@ -33,9 +33,6 @@ public class StudentLessonExaminationDetail implements Serializable {
     @ApiModelProperty(value = "测验编号")
     private Long lessonExaminationId;
 
-    @TableField("student_lesson_examination_id_")
-    private Long studentLessonExaminationId;
-
     @TableField("music_score_id_")
     @ApiModelProperty(value = "曲目id")
     private Long musicScoreId;
@@ -44,9 +41,9 @@ public class StudentLessonExaminationDetail implements Serializable {
     @ApiModelProperty(value = "评测难度")
     private String heardLevel;
 
-    @TableField("training_flag_")
-    @ApiModelProperty(value = "是否练习")
-    private Boolean trainingFlag;
+    @TableField("standard_flag_")
+    @ApiModelProperty(value = "是否达标")
+    private Boolean standardFlag;
 
     @TableField("standard_score_")
     @ApiModelProperty(value = "达标分数")

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

@@ -4,6 +4,7 @@ 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.dto.StudentLessonExaminationSaveDto;
 import com.ym.mec.biz.dal.entity.StudentLessonExaminationDetail;
 import com.ym.mec.biz.dal.page.StudentLessonExaminationQueryDto;
 
@@ -19,7 +20,7 @@ public interface StudentLessonExaminationDetailService extends IService<StudentL
 
     StudentLessonExaminationDetailDao getDao();
 
-    void save(Long lessonExaminationId, String[] studentIds, List<LessonExaminationDetailDto> detailDtos);
+    void save(Long lessonExaminationId,List<StudentLessonExaminationSaveDto> studentLessonExaminationSaveDtos);
 
     List<StudentLessonExaminationDetailDto> queryAll(StudentLessonExaminationQueryDto query);
 }

+ 2 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/StudentLessonExaminationService.java

@@ -2,10 +2,7 @@ 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.dto.*;
 import com.ym.mec.biz.dal.entity.StudentLessonExamination;
 import com.ym.mec.biz.dal.page.StudentLessonExaminationQueryInfo;
 import com.ym.mec.common.page.PageInfo;
@@ -22,7 +19,7 @@ public interface StudentLessonExaminationService extends IService<StudentLessonE
 
     StudentLessonExaminationDao getDao();
 
-    void save(Long lessonExaminationId, String[] studentIds);
+    void save(Long lessonExaminationId,List<StudentLessonExaminationSaveDto> studentLessonExaminationSaveDtos);
 
     PageInfo<StudentLessonExaminationDto> queryPage(StudentLessonExaminationQueryInfo queryInfo);
 

+ 33 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/LessonExaminationServiceImpl.java

@@ -6,7 +6,7 @@ import com.ym.mec.biz.dal.dto.LessonExaminationDetailDto;
 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 com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.page.LessonExaminationQueryInfo;
 import com.ym.mec.biz.dal.page.LessonExaminationQueryInfo1;
 import com.ym.mec.biz.service.LessonExaminationService;
@@ -50,6 +50,10 @@ public class LessonExaminationServiceImpl extends ServiceImpl<LessonExaminationD
     private TeacherDao teacherDao;
     @Autowired
     private OrganizationDao organizationDao;
+    @Autowired
+    private CourseScheduleDao courseScheduleDao;
+    @Autowired
+    private ClassGroupDao classGroupDao;
 
     @Override
     public LessonExaminationDao getDao() {
@@ -59,29 +63,45 @@ public class LessonExaminationServiceImpl extends ServiceImpl<LessonExaminationD
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void publish(LessonExaminationSaveDto param) {
-        String studentIds = param.getStudentIds();
-        if(StringUtils.isEmpty(studentIds)){
+        if(CollectionUtils.isEmpty(param.getStudentLessonExaminationSaveDtos())){
             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.setExpectNum(param.getExpectNum());
+        if(param.getCourseScheduleId() != null){
+            CourseSchedule schedule = courseScheduleDao.get(param.getCourseScheduleId());
+            if(Objects.nonNull(schedule)){
+                lessonExamination.setOrganId(schedule.getOrganId());
+                lessonExamination.setMusicGroupId(schedule.getMusicGroupId());
+                lessonExamination.setClassGroupId(schedule.getClassGroupId());
+                lessonExamination.setCourseScheduleId(schedule.getId());
+            }
+        }else if(param.getClassGroupId() != null){
+            ClassGroup classGroup = classGroupDao.get(param.getClassGroupId());
+            if(Objects.nonNull(classGroup)){
+                lessonExamination.setClassGroupId(classGroup.getId());
+                lessonExamination.setMusicGroupId(classGroup.getMusicGroupId());
+                MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
+                if(Objects.nonNull(musicGroup)){
+                    lessonExamination.setOrganId(musicGroup.getOrganId());
+                }
+            }
+        }else {
+            Teacher teacher = teacherDao.get(param.getTeacherId());
+            if(Objects.nonNull(teacher)){
+                lessonExamination.setOrganId(teacher.getTeacherOrganId());
+            }
+        }
         lessonExamination.setExpireDate(expireDate);
         lessonExamination.setTeacherId(param.getTeacherId());
         baseMapper.insert(lessonExamination);
-        studentLessonExaminationService.save(lessonExamination.getId(),split);
-        studentLessonExaminationDetailService.save(lessonExamination.getId(),split,examinationDetailDtos);
+        studentLessonExaminationService.save(lessonExamination.getId(),param.getStudentLessonExaminationSaveDtos());
+        studentLessonExaminationDetailService.save(lessonExamination.getId(),param.getStudentLessonExaminationSaveDtos());
     }
 
     @Override

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

@@ -4,6 +4,7 @@ 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.dto.StudentLessonExaminationSaveDto;
 import com.ym.mec.biz.dal.entity.StudentLessonExaminationDetail;
 import com.ym.mec.biz.dal.page.StudentLessonExaminationQueryDto;
 import com.ym.mec.biz.service.StudentLessonExaminationDetailService;
@@ -34,27 +35,31 @@ public class StudentLessonExaminationDetailServiceImpl extends ServiceImpl<Stude
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void save(Long lessonExaminationId, String[] studentIds, List<LessonExaminationDetailDto> detailDtos) {
+    public void save(Long lessonExaminationId,List<StudentLessonExaminationSaveDto> studentLessonExaminationSaveDtos) {
         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.setStandardScore(vo.getScore());
-                if(i == 0){
-                    studentLessonExaminationDetail.setAvgScore(score + subScore);
-                }else {
-                    studentLessonExaminationDetail.setAvgScore(score);
+        for (StudentLessonExaminationSaveDto dto : studentLessonExaminationSaveDtos) {
+            String[] studentIds = dto.getStudentIds().split(",");
+            List<LessonExaminationDetailDto> detailDtos = dto.getExaminationDetailDtos();
+            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.setLessonExaminationId(lessonExaminationId);
+                    studentLessonExaminationDetail.setMusicScoreId(vo.getMusicScoreId());
+                    studentLessonExaminationDetail.setHeardLevel(vo.getHeardLevel());
+                    studentLessonExaminationDetail.setStandardScore(vo.getScore());
+                    if(i == 0){
+                        studentLessonExaminationDetail.setAvgScore(score + subScore);
+                    }else {
+                        studentLessonExaminationDetail.setAvgScore(score);
+                    }
+                    studentLessonExaminationDetail.setPartIndex(vo.getPartIndex());
+                    detailList.add(studentLessonExaminationDetail);
                 }
-                studentLessonExaminationDetail.setPartIndex(vo.getPartIndex());
-                studentLessonExaminationDetail.setHeardLevel(vo.getHeardLevel());
-                studentLessonExaminationDetail.setUserId(studentId);
-                studentLessonExaminationDetail.setMusicScoreId(vo.getMusicScoreId());
-                detailList.add(studentLessonExaminationDetail);
             }
         }
         baseMapper.insertBatch(detailList);

+ 73 - 17
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentLessonExaminationServiceImpl.java

@@ -1,26 +1,30 @@
 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.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.dto.LessonExaminationSubmitDto;
+import com.ym.mec.biz.dal.dto.StudentLessonExaminationDto;
+import com.ym.mec.biz.dal.dto.StudentLessonExaminationDto1;
+import com.ym.mec.biz.dal.dto.StudentLessonExaminationSaveDto;
+import com.ym.mec.biz.dal.entity.LessonExamination;
 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.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.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.*;
 
 /**
@@ -34,26 +38,31 @@ public class StudentLessonExaminationServiceImpl extends ServiceImpl<StudentLess
 
     private final static Logger log = LoggerFactory.getLogger(StudentLessonExaminationServiceImpl.class);
 
+    @Autowired
+    private StudentLessonExaminationDetailService studentLessonExaminationDetailService;
+    @Autowired
+    private LessonExaminationDao lessonExaminationDao;
+
     @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) {
+    public void save(Long lessonExaminationId, List<StudentLessonExaminationSaveDto> studentLessonExaminationSaveDtos) {
         List<StudentLessonExamination> studentLessonExaminations = new ArrayList<>();
-        for (String studentId : studentIds) {
-            StudentLessonExamination studentLessonExamination = new StudentLessonExamination();
-            studentLessonExamination.setLessonExaminationId(lessonExaminationId);
-            studentLessonExamination.setUserId(Integer.parseInt(studentId));
-            studentLessonExaminations.add(studentLessonExamination);
+        for (StudentLessonExaminationSaveDto dto : studentLessonExaminationSaveDtos) {
+            String[] studentIds = dto.getStudentIds().split(",");
+            for (String studentId : studentIds) {
+                StudentLessonExamination studentLessonExamination = new StudentLessonExamination();
+                studentLessonExamination.setLessonExaminationId(lessonExaminationId);
+                studentLessonExamination.setUserId(Integer.parseInt(studentId));
+                studentLessonExamination.setSubjectId(dto.getSubjectId());
+                studentLessonExaminations.add(studentLessonExamination);
+            }
         }
+
         baseMapper.insertBatch(studentLessonExaminations);
     }
 
@@ -79,7 +88,54 @@ public class StudentLessonExaminationServiceImpl extends ServiceImpl<StudentLess
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void submit(LessonExaminationSubmitDto submitDto) {
-
+        Long studentLessonExaminationDetailId = submitDto.getStudentLessonExaminationDetailId();
+        StudentLessonExaminationDetail detail = studentLessonExaminationDetailService.getById(studentLessonExaminationDetailId);
+        if(Objects.isNull(detail)){
+            throw new BizException("训练内容不存在");
+        }
+        Long lessonExaminationId = detail.getLessonExaminationId();
+        Integer userId = detail.getUserId();
+        LessonExamination lessonExamination = lessonExaminationDao.selectById(lessonExaminationId);
+        if(Objects.isNull(lessonExamination)){
+            throw new BizException("训练内容不存在");
+        }
+        Date now = new Date();
+        Date expireDate = DateUtil.stringToDate(lessonExamination.getExpireDate(), DateUtil.DEFAULT_PATTERN);
+        if(DateUtil.daysBetween(now,expireDate) < 0){
+            throw new BizException("训练已截止");
+        }
+        StudentLessonExamination studentLessonExamination = this.lambdaQuery().eq(StudentLessonExamination::getLessonExaminationId, lessonExaminationId)
+                .eq(StudentLessonExamination::getUserId, userId).one();
+        studentLessonExamination.setTrainingTime(now);
+        this.updateById(studentLessonExamination);
+        detail.setTrainingTime(now);
+        if(detail.getTrainingTime() == null){
+            //训练人数加一
+            lessonExaminationDao.updateTrainingNum(lessonExaminationId);
+        }
+        //是否达标
+        if(submitDto.getScore() >= detail.getStandardScore()){
+            if(!detail.getStandardFlag()){
+                //达标人数加一
+                lessonExaminationDao.updateStandardNum(lessonExaminationId);
+            }
+            detail.setStandardFlag(true);
+        }
+        //训练分数是否比上一次高
+        Boolean flag = submitDto.getScore() > detail.getTrainingScore();
+        if(flag){
+            detail.setTrainingScore(submitDto.getScore());
+            //计算分数
+            Double actualScore = detail.getTrainingScore() * 1D / detail.getStandardScore() * detail.getAvgScore();
+            //更新分数
+            detail.setActualAvgScore(actualScore.intValue() > detail.getAvgScore() ? detail.getAvgScore():actualScore.intValue());
+        }
+        //更新详情
+        studentLessonExaminationDetailService.updateById(detail);
+        //更新总分
+        if(flag){
+            baseMapper.updateTrainingScore(lessonExaminationId,userId);
+        }
     }
 
     @Override

+ 18 - 20
mec-biz/src/main/resources/config/mybatis/LessonExaminationMapper.xml

@@ -3,38 +3,36 @@
 <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="organ_id_" property="organId"/>
+        <result column="music_group_id_" property="musicGroupId"/>
         <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="teacher_id_" property="teacherId"/>
+        <result column="expire_date_" property="expireDate"/>
+        <result column="standard_num_" property="standardNum"/>
+        <result column="training_num_" property="trainingNum"/>
         <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_)
+        insert into lesson_examination(organ_id_, music_group_id_, class_group_id_, course_schedule_id_, teacher_id_,
+        expire_date_, standard_num_, training_num_, expect_num_,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})
+            (#{entity.organId}, #{entity.musicScoreId}, #{entity.classGroupId}, #{entity.courseScheduleId}, #{entity.teacherId},
+             #{entity.expireDate}, #{entity.standardNum},#{entity.trainingNum}, #{entity.expectNum},#{entity.tenantId})
         </foreach>
     </insert>
+    <update id="updateTrainingNum">
+        UPDATE lesson_examination SET training_num_ = training_num_ + 1 WHERE id_ = #{lessonExaminationId}
+    </update>
+    <update id="updateStandardNum">
+        UPDATE lesson_examination SET standard_num_ = standard_num_ + 1 WHERE id_ = #{lessonExaminationId}
+    </update>
     <select id="queryPage" resultType="com.ym.mec.biz.dal.dto.LessonExaminationResultDto">
         select le.*,cg.name_ classGroupName
         from lesson_examination le
@@ -104,7 +102,7 @@
         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_
+        left join music_group mg ON mg.id_ = le.music_group_id_
         <include refid="queryPageByStudentSql"/>
         ORDER BY sle.id_ DESC
     </select>
@@ -120,7 +118,7 @@
         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_
+                 left join music_group mg ON mg.id_ = le.music_group_id_
         WHERE sle.lesson_examination_id_ = #{lessonExaminationId} AND sle.user_id_ = #{userId} LIMIT 1
     </select>
 

+ 20 - 25
mec-biz/src/main/resources/config/mybatis/StudentLessonExaminationDetailMapper.xml

@@ -2,40 +2,35 @@
 <!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"/>
+        <id column="id_" property="id"/>
+        <result column="user_id_" property="userId"/>
+        <result column="lesson_examination_id_" property="lessonExaminationId"/>
+        <result column="music_score_id_" property="musicScoreId"/>
+        <result column="heard_level_" property="heardLevel"/>
+        <result column="standard_flag_" property="standardFlag"/>
+        <result column="training_score_" property="trainingScore"/>
+        <result column="standard_score_" property="standardScore"/>
+        <result column="avg_score_" property="avgScore"/>
+        <result column="actual_avg_score_" property="actualAvgScore"/>
+        <result column="part_index_" property="partIndex"/>
+        <result column="training_time_" property="trainingTime"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" 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_)
+        insert into student_lesson_examination_detail(user_id_, lesson_examination_id_, music_score_id_, heard_level_, standard_flag_,
+                                                      training_score_, standard_score_, avg_score_, actual_avg_score_, part_index_, training_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})
+            (#{entity.userId}, #{entity.lessonExaminationId},#{entity.musicScoreId}, #{entity.heardLevel},
+             #{entity.standardFlag}, #{entity.trainingScore},#{entity.standardScore}, #{entity.avgScore},
+            #{entity.actualAvgScore},#{entity.partIndex}, #{entity.trainingTime})
         </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,
+        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.training_flag_ trainingFlag, sled.score_ score,
                sled.standard_score_ standardScore, sled.part_index_ partIndex
         from student_lesson_examination_detail sled

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

@@ -29,6 +29,13 @@
             #{entity.standardFlag}, #{entity.trainingTime}, #{entity.subjectId})
         </foreach>
     </insert>
+    <update id="updateTrainingScore">
+        UPDATE student_lesson_examination
+        set training_score_ = (
+            select SUM(actual_avg_score_) from student_lesson_examination_detail
+            where lesson_examination_id_ = #{lessonExaminationId} and user_id_ = #{userId})
+        where lesson_examination_id_ = #{lessonExaminationId} and user_id_ = #{userId}
+    </update>
     <sql id="queryPageSql">
         <where>
             <if test="lessonExaminationId != null">