| 
														
															@@ -1,26 +1,30 @@ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 package com.ym.mec.biz.service.impl; 
														 | 
														
														 | 
														
															 package com.ym.mec.biz.service.impl; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 
														 | 
														
														 | 
														
															 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.StudentLessonExaminationDao; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.ym.mec.biz.dal.dao.StudentLessonExaminationDetailDao; 
														 | 
														
														 | 
														
															 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.StudentLessonExamination; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.ym.mec.biz.dal.entity.StudentLessonExaminationDetail; 
														 | 
														
														 | 
														
															 import com.ym.mec.biz.dal.entity.StudentLessonExaminationDetail; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.ym.mec.biz.dal.page.StudentLessonExaminationQueryInfo; 
														 | 
														
														 | 
														
															 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.biz.service.StudentLessonExaminationService; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import com.ym.mec.common.exception.BizException; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.ym.mec.common.page.PageInfo; 
														 | 
														
														 | 
														
															 import com.ym.mec.common.page.PageInfo; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.ym.mec.util.collection.MapUtil; 
														 | 
														
														 | 
														
															 import com.ym.mec.util.collection.MapUtil; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.ym.mec.util.date.DateUtil; 
														 | 
														
														 | 
														
															 import com.ym.mec.util.date.DateUtil; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-import org.apache.commons.lang3.StringUtils; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import org.slf4j.Logger; 
														 | 
														
														 | 
														
															 import org.slf4j.Logger; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import org.slf4j.LoggerFactory; 
														 | 
														
														 | 
														
															 import org.slf4j.LoggerFactory; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import org.springframework.beans.factory.annotation.Autowired; 
														 | 
														
														 | 
														
															 import org.springframework.beans.factory.annotation.Autowired; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import org.springframework.stereotype.Service; 
														 | 
														
														 | 
														
															 import org.springframework.stereotype.Service; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import org.springframework.transaction.annotation.Transactional; 
														 | 
														
														 | 
														
															 import org.springframework.transaction.annotation.Transactional; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-import java.math.BigDecimal; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-import java.math.RoundingMode; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import java.util.*; 
														 | 
														
														 | 
														
															 import java.util.*; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 /** 
														 | 
														
														 | 
														
															 /** 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -34,26 +38,31 @@ public class StudentLessonExaminationServiceImpl extends ServiceImpl<StudentLess 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     private final static Logger log = LoggerFactory.getLogger(StudentLessonExaminationServiceImpl.class); 
														 | 
														
														 | 
														
															     private final static Logger log = LoggerFactory.getLogger(StudentLessonExaminationServiceImpl.class); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    @Autowired 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    private StudentLessonExaminationDetailService studentLessonExaminationDetailService; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    @Autowired 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    private LessonExaminationDao lessonExaminationDao; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     @Override 
														 | 
														
														 | 
														
															     @Override 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     public StudentLessonExaminationDao getDao() { 
														 | 
														
														 | 
														
															     public StudentLessonExaminationDao getDao() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         return this.baseMapper; 
														 | 
														
														 | 
														
															         return this.baseMapper; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    @Autowired 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    private SysConfigDao sysConfigDao; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    @Autowired 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    private StudentLessonExaminationDetailDao studentLessonExaminationDetailDao; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     @Override 
														 | 
														
														 | 
														
															     @Override 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     @Transactional(rollbackFor = Exception.class) 
														 | 
														
														 | 
														
															     @Transactional(rollbackFor = Exception.class) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    public void save(Long lessonExaminationId, String[] studentIds) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    public void save(Long lessonExaminationId, List<StudentLessonExaminationSaveDto> studentLessonExaminationSaveDtos) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         List<StudentLessonExamination> studentLessonExaminations = new ArrayList<>(); 
														 | 
														
														 | 
														
															         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); 
														 | 
														
														 | 
														
															         baseMapper.insertBatch(studentLessonExaminations); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -79,7 +88,54 @@ public class StudentLessonExaminationServiceImpl extends ServiceImpl<StudentLess 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     @Override 
														 | 
														
														 | 
														
															     @Override 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     @Transactional(rollbackFor = Exception.class) 
														 | 
														
														 | 
														
															     @Transactional(rollbackFor = Exception.class) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     public void submit(LessonExaminationSubmitDto submitDto) { 
														 | 
														
														 | 
														
															     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 
														 | 
														
														 | 
														
															     @Override 
														 |