|  | @@ -12,10 +12,12 @@ import com.keao.edu.user.dto.ExaminationBasicDto;
 | 
	
		
			
				|  |  |  import com.keao.edu.user.entity.*;
 | 
	
		
			
				|  |  |  import com.keao.edu.user.enums.ExamStatusEnum;
 | 
	
		
			
				|  |  |  import com.keao.edu.user.page.ExaminationQueryInfo;
 | 
	
		
			
				|  |  | +import com.keao.edu.user.service.ExamOrganizationRelationService;
 | 
	
		
			
				|  |  |  import com.keao.edu.user.service.ExaminationBasicService;
 | 
	
		
			
				|  |  |  import com.keao.edu.user.service.OrganizationService;
 | 
	
		
			
				|  |  |  import com.keao.edu.util.collection.MapUtil;
 | 
	
		
			
				|  |  |  import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | +import org.apache.commons.lang3.time.DateUtils;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  |  import org.springframework.transaction.annotation.Transactional;
 | 
	
	
		
			
				|  | @@ -31,6 +33,8 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private ExaminationBasicDao examinationBasicDao;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  | +    private ExamOrganizationRelationService examOrganizationRelationService;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  |      private ExamOrganizationRelationDao examOrganizationRelationDao;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private MusicTheoryDao musicTheoryDao;
 | 
	
	
		
			
				|  | @@ -49,6 +53,7 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | +    @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public ExaminationBasic addExaminationBasic(ExaminationBasic examinationBasic) {
 | 
	
		
			
				|  |  |          if (StringUtils.isBlank(examinationBasic.getName())) {
 | 
	
		
			
				|  |  |              throw new BizException("请填写项目名称");
 | 
	
	
		
			
				|  | @@ -73,6 +78,10 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          examinationBasic.setTenantId(TenantContextHolder.getTenantId());
 | 
	
		
			
				|  |  | +        examinationBasic.setEnrollStartTime(DateUtils.setSeconds(examinationBasic.getEnrollStartTime(), 0));
 | 
	
		
			
				|  |  | +        examinationBasic.setEnrollEndTime(DateUtils.setSeconds(examinationBasic.getEnrollEndTime(), 0));
 | 
	
		
			
				|  |  | +        examinationBasic.setExpectExamStartTime(DateUtils.setSeconds(examinationBasic.getExpectExamStartTime(), 0));
 | 
	
		
			
				|  |  | +        examinationBasic.setExpectExamEndTime(DateUtils.setSeconds(examinationBasic.getExpectExamEndTime(), 0));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          List<MusicTheory> musicTheories = musicTheoryDao.getWithTenant(Integer.valueOf(examinationBasic.getTenantId()));
 | 
	
		
			
				|  |  |          if (CollectionUtils.isEmpty(musicTheories)) {
 | 
	
	
		
			
				|  | @@ -93,7 +102,6 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          examMusicTheoryDao.batchInsert(examMusicTheories);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          return examinationBasic;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -120,6 +128,25 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | +    public void updateExamBasicStatus(Long examId, ExamStatusEnum statusEnum) {
 | 
	
		
			
				|  |  | +        if(Objects.isNull(examId)){
 | 
	
		
			
				|  |  | +            throw new BizException("请指定考级项目");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        ExaminationBasic existsExam = examinationBasicDao.get(examId);
 | 
	
		
			
				|  |  | +        if(Objects.isNull(existsExam)){
 | 
	
		
			
				|  |  | +            throw new BizException("考级项目不存在");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if(ExamStatusEnum.RESULT_CONFIRM.equals(existsExam.getStatus())){
 | 
	
		
			
				|  |  | +            throw new BizException("考级项目结果已确认");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if(ExamStatusEnum.SETTING.equals(existsExam.getStatus())&&ExamStatusEnum.NOT_START.equals(statusEnum)){
 | 
	
		
			
				|  |  | +            examOrganizationRelationService.addExamOrganizations(existsExam.getId(),existsExam.getOrganId().toString());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        existsExam.setStatus(statusEnum);
 | 
	
		
			
				|  |  | +        examinationBasicDao.update(existsExam);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  |      public PageInfo<ExaminationBasicDto> findExaminationBasics(ExaminationQueryInfo queryInfo) {
 | 
	
		
			
				|  |  |          PageInfo<ExaminationBasicDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
 | 
	
		
			
				|  |  |          Map<String, Object> params = new HashMap<String, Object>();
 | 
	
	
		
			
				|  | @@ -169,10 +196,10 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          List<ExamOrganizationRelation> examOrganizationRelations = examOrganizationRelationDao.getWithExam(examId);
 | 
	
		
			
				|  |  |          if (!CollectionUtils.isEmpty(examOrganizationRelations)) {
 | 
	
		
			
				|  |  | -            long totalRegistrationStudentNum = examOrganizationRelations.stream().map(ExamOrganizationRelation::getTotalRegistrationStudentNum).count();
 | 
	
		
			
				|  |  | -            long totalPaymentAmount = examOrganizationRelations.stream().map(ExamOrganizationRelation::getTotalPaymentAmount).count();
 | 
	
		
			
				|  |  | -            examinationBasic.setTotalRegistrationStudentNum((int) totalRegistrationStudentNum);
 | 
	
		
			
				|  |  | -            examinationBasic.setTotalPaymentAmount(new BigDecimal(totalPaymentAmount));
 | 
	
		
			
				|  |  | +            Integer totalRegistrationStudentNum = examOrganizationRelations.stream().mapToInt(ExamOrganizationRelation::getTotalRegistrationStudentNum).sum();
 | 
	
		
			
				|  |  | +            BigDecimal totalPaymentAmount = examOrganizationRelations.stream().map(ExamOrganizationRelation::getTotalPaymentAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 | 
	
		
			
				|  |  | +            examinationBasic.setTotalRegistrationStudentNum(totalRegistrationStudentNum);
 | 
	
		
			
				|  |  | +            examinationBasic.setTotalPaymentAmount(totalPaymentAmount);
 | 
	
		
			
				|  |  |              examinationBasic.setOrganNum(examOrganizationRelations.size());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if(Objects.nonNull(examinationBasic.getCreatorId())){
 | 
	
	
		
			
				|  | @@ -192,11 +219,17 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
 | 
	
		
			
				|  |  |          if(Objects.isNull(existsExam)){
 | 
	
		
			
				|  |  |              throw new BizException("考级项目不存在");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        if(ExamStatusEnum.RESULT_CONFIRM.equals(existsExam.getStatus())){
 | 
	
		
			
				|  |  | +            throw new BizException("考级项目结果已确认");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if(ExamStatusEnum.CLOSE.equals(existsExam.getStatus())){
 | 
	
		
			
				|  |  | +            throw new BizException("考级项目已关闭");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          return examinationBasicDao.update(examinationBasic);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public void closeExam(Integer examId, String reason) {
 | 
	
		
			
				|  |  | +    public void closeExam(Integer organId, Integer examId, String reason) {
 | 
	
		
			
				|  |  |          if (Objects.isNull(examId)) {
 | 
	
		
			
				|  |  |              throw new BizException("请指定考级项目");
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -204,6 +237,9 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
 | 
	
		
			
				|  |  |          if (Objects.isNull(examinationBasic)) {
 | 
	
		
			
				|  |  |              throw new BizException("考级项目不存在");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        List<Integer> childOrganIds = organizationService.getChildOrganIds(organId, true);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          if (StringUtils.isBlank(reason)) {
 | 
	
		
			
				|  |  |              reason = "后台手动关闭";
 | 
	
		
			
				|  |  |          }
 |