|
@@ -5,16 +5,10 @@ import com.keao.edu.common.exception.BizException;
|
|
|
import com.keao.edu.common.page.PageInfo;
|
|
|
import com.keao.edu.common.service.impl.BaseServiceImpl;
|
|
|
import com.keao.edu.common.tenant.TenantContextHolder;
|
|
|
-import com.keao.edu.user.dao.ExamMusicTheoryDao;
|
|
|
-import com.keao.edu.user.dao.ExamOrganizationRelationDao;
|
|
|
-import com.keao.edu.user.dao.ExaminationBasicDao;
|
|
|
-import com.keao.edu.user.dao.MusicTheoryDao;
|
|
|
+import com.keao.edu.user.dao.*;
|
|
|
import com.keao.edu.user.dto.ExaminationBasicDto;
|
|
|
-import com.keao.edu.user.entity.ExamMusicTheory;
|
|
|
-import com.keao.edu.user.entity.ExamOrganizationRelation;
|
|
|
-import com.keao.edu.user.entity.ExaminationBasic;
|
|
|
+import com.keao.edu.user.entity.*;
|
|
|
import com.keao.edu.user.api.enums.ExamModeEnum;
|
|
|
-import com.keao.edu.user.entity.MusicTheory;
|
|
|
import com.keao.edu.user.enums.ExamStatusEnum;
|
|
|
import com.keao.edu.user.page.ExaminationQueryInfo;
|
|
|
import com.keao.edu.user.service.ExaminationBasicService;
|
|
@@ -30,157 +24,167 @@ import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
-public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, ExaminationBasic> implements ExaminationBasicService{
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private ExaminationBasicDao examinationBasicDao;
|
|
|
- @Autowired
|
|
|
- private ExamOrganizationRelationDao examOrganizationRelationDao;
|
|
|
- @Autowired
|
|
|
- private MusicTheoryDao musicTheoryDao;
|
|
|
- @Autowired
|
|
|
- private ExamMusicTheoryDao examMusicTheoryDao;
|
|
|
-
|
|
|
- @Override
|
|
|
- public BaseDAO<Long, ExaminationBasic> getDAO() {
|
|
|
- return examinationBasicDao;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public ExaminationBasic addExaminationBasic(ExaminationBasic examinationBasic) {
|
|
|
- if(StringUtils.isBlank(examinationBasic.getName())){
|
|
|
- throw new BizException("请填写项目名称");
|
|
|
- }
|
|
|
- if(Objects.isNull(examinationBasic.getExamMode())){
|
|
|
- throw new BizException("请选择考试类型");
|
|
|
- }
|
|
|
- if(ExamModeEnum.OFFLINE.equals(examinationBasic.getExamMode())&&StringUtils.isBlank(examinationBasic.getExamLocationIdList())){
|
|
|
- throw new BizException("请指定考试地点");
|
|
|
- }
|
|
|
- if(Objects.isNull(examinationBasic.getEnrollStartTime())||Objects.isNull(examinationBasic.getEnrollEndTime())){
|
|
|
- throw new BizException("请指定考试开始与结束时间");
|
|
|
- }
|
|
|
-
|
|
|
- examinationBasic.setTenantId(TenantContextHolder.getTenantId().toString());
|
|
|
-
|
|
|
- List<MusicTheory> musicTheories = musicTheoryDao.getWithTenant(Integer.valueOf(examinationBasic.getTenantId()));
|
|
|
- if(CollectionUtils.isEmpty(musicTheories)){
|
|
|
- throw new BizException("请设置乐理");
|
|
|
- }
|
|
|
-
|
|
|
- examinationBasic.setStatus(ExamStatusEnum.SETTING);
|
|
|
- examinationBasicDao.insert(examinationBasic);
|
|
|
-
|
|
|
- List<ExamMusicTheory> examMusicTheories=new ArrayList<>();
|
|
|
- for (MusicTheory musicTheory : musicTheories) {
|
|
|
- ExamMusicTheory emt=new ExamMusicTheory();
|
|
|
- emt.setExaminationBasicId(examinationBasic.getId());
|
|
|
- emt.setTenantId(examinationBasic.getTenantId());
|
|
|
- emt.setLevel(musicTheory.getLevel());
|
|
|
- emt.setFee(musicTheory.getFee());
|
|
|
- examMusicTheories.add(emt);
|
|
|
- }
|
|
|
-
|
|
|
- examMusicTheoryDao.batchInsert(examMusicTheories);
|
|
|
-
|
|
|
- return examinationBasic;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void updateExamStatus() {
|
|
|
- List<ExaminationBasic> needUpdateStatusExams = examinationBasicDao.getNeedUpdateStatusExams();
|
|
|
- if(CollectionUtils.isEmpty(needUpdateStatusExams)){
|
|
|
- return;
|
|
|
- }
|
|
|
- Date now=new Date();
|
|
|
- for (ExaminationBasic needUpdateStatusExam : needUpdateStatusExams) {
|
|
|
- if(now.compareTo(needUpdateStatusExam.getEnrollStartTime())>=0){
|
|
|
- needUpdateStatusExam.setStatus(ExamStatusEnum.APPLYING);
|
|
|
- }
|
|
|
- if(now.compareTo(needUpdateStatusExam.getEnrollEndTime())>=0){
|
|
|
- needUpdateStatusExam.setStatus(ExamStatusEnum.APPLIED);
|
|
|
- }
|
|
|
- if(now.compareTo(needUpdateStatusExam.getExpectExamStartTime())>=0){
|
|
|
- needUpdateStatusExam.setStatus(ExamStatusEnum.EXAM_ING);
|
|
|
- }
|
|
|
- }
|
|
|
- examinationBasicDao.batchUpdate(needUpdateStatusExams);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public PageInfo<ExaminationBasicDto> findExaminationBasics(ExaminationQueryInfo queryInfo) {
|
|
|
- PageInfo<ExaminationBasicDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
|
|
|
- Map<String, Object> params = new HashMap<String, Object>();
|
|
|
- MapUtil.populateMap(params, queryInfo);
|
|
|
-
|
|
|
- List<ExaminationBasicDto> dataList = new ArrayList<>();
|
|
|
- int count = examinationBasicDao.countExaminationBasics(params);
|
|
|
- if (count > 0) {
|
|
|
- pageInfo.setTotal(count);
|
|
|
- params.put("offset", pageInfo.getOffset());
|
|
|
- dataList = examinationBasicDao.findExaminationBasics(params);
|
|
|
- List<Integer> examIds = dataList.stream().map(ExaminationBasicDto::getId).collect(Collectors.toList());
|
|
|
- List<ExamOrganizationRelation> examOrgans = new ArrayList<>();
|
|
|
- if(!CollectionUtils.isEmpty(examIds)){
|
|
|
- examOrganizationRelationDao.getWithExams(examIds);
|
|
|
- }
|
|
|
- Map<Integer, List<ExamOrganizationRelation>> examOrgansMap = new HashMap<>();
|
|
|
- if(!CollectionUtils.isEmpty(examOrgans)){
|
|
|
- examOrgansMap = examOrgans.stream().collect(Collectors.groupingBy(ExamOrganizationRelation::getExaminationBasicId));
|
|
|
- }
|
|
|
- for (ExaminationBasicDto examinationBasicDto : dataList) {
|
|
|
- List<ExamOrganizationRelation> examOrganizationRelations = examOrgansMap.get(examinationBasicDto.getId());
|
|
|
- if(CollectionUtils.isEmpty(examOrganizationRelations)){
|
|
|
- continue;
|
|
|
- }
|
|
|
- long totalRegistrationStudentNum = examOrganizationRelations.stream().map(ExamOrganizationRelation::getTotalRegistrationStudentNum).count();
|
|
|
- long totalPaymentAmount = examOrganizationRelations.stream().map(ExamOrganizationRelation::getTotalPaymentAmount).count();
|
|
|
- examinationBasicDto.setTotalRegistrationStudentNum((int) totalRegistrationStudentNum);
|
|
|
- examinationBasicDto.setTotalPaymentAmount(new BigDecimal(totalPaymentAmount));
|
|
|
- }
|
|
|
- }
|
|
|
- pageInfo.setRows(dataList);
|
|
|
- return pageInfo;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public ExaminationBasicDto getExaminationBasic(Integer examId) {
|
|
|
- if(Objects.isNull(examId)){
|
|
|
- throw new BizException("请指定考级项目");
|
|
|
- }
|
|
|
- ExaminationBasicDto examinationBasic = examinationBasicDao.getExaminationBasic(examId);
|
|
|
- if(Objects.isNull(examinationBasic)){
|
|
|
- throw new BizException("指定的考级项目不存在");
|
|
|
- }
|
|
|
- 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));
|
|
|
- }
|
|
|
- return examinationBasic;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void closeExam(Integer examId, String reason) {
|
|
|
- if(Objects.isNull(examId)){
|
|
|
- throw new BizException("请指定考级项目");
|
|
|
- }
|
|
|
- ExaminationBasic examinationBasic = examinationBasicDao.get(examId.longValue());
|
|
|
- if(Objects.isNull(examinationBasic)){
|
|
|
- throw new BizException("考级项目不存在");
|
|
|
- }
|
|
|
- if(StringUtils.isBlank(reason)){
|
|
|
- reason="后台手动关闭";
|
|
|
- }
|
|
|
- examinationBasic.setMemo(reason);
|
|
|
- examinationBasic.setStatus(ExamStatusEnum.CLOSE);
|
|
|
- examinationBasicDao.update(examinationBasic);
|
|
|
- }
|
|
|
+public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, ExaminationBasic> implements ExaminationBasicService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ExaminationBasicDao examinationBasicDao;
|
|
|
+ @Autowired
|
|
|
+ private ExamOrganizationRelationDao examOrganizationRelationDao;
|
|
|
+ @Autowired
|
|
|
+ private MusicTheoryDao musicTheoryDao;
|
|
|
+ @Autowired
|
|
|
+ private ExamMusicTheoryDao examMusicTheoryDao;
|
|
|
+ @Autowired
|
|
|
+ private ExamLocationDao examLocationDao;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public BaseDAO<Long, ExaminationBasic> getDAO() {
|
|
|
+ return examinationBasicDao;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ExaminationBasic addExaminationBasic(ExaminationBasic examinationBasic) {
|
|
|
+ if (StringUtils.isBlank(examinationBasic.getName())) {
|
|
|
+ throw new BizException("请填写项目名称");
|
|
|
+ }
|
|
|
+ if (Objects.isNull(examinationBasic.getExamMode())) {
|
|
|
+ throw new BizException("请选择考试类型");
|
|
|
+ }
|
|
|
+ if (ExamModeEnum.OFFLINE.equals(examinationBasic.getExamMode()) && StringUtils.isBlank(examinationBasic.getExamLocationIdList())) {
|
|
|
+ throw new BizException("请指定考试地点");
|
|
|
+ }
|
|
|
+ if (Objects.isNull(examinationBasic.getEnrollStartTime()) || Objects.isNull(examinationBasic.getEnrollEndTime())) {
|
|
|
+ throw new BizException("请指定考试开始与结束时间");
|
|
|
+ }
|
|
|
+
|
|
|
+ examinationBasic.setTenantId(TenantContextHolder.getTenantId().toString());
|
|
|
+
|
|
|
+ List<MusicTheory> musicTheories = musicTheoryDao.getWithTenant(Integer.valueOf(examinationBasic.getTenantId()));
|
|
|
+ if (CollectionUtils.isEmpty(musicTheories)) {
|
|
|
+ throw new BizException("请设置乐理");
|
|
|
+ }
|
|
|
+
|
|
|
+ examinationBasic.setStatus(ExamStatusEnum.SETTING);
|
|
|
+ examinationBasicDao.insert(examinationBasic);
|
|
|
+
|
|
|
+ List<ExamMusicTheory> examMusicTheories = new ArrayList<>();
|
|
|
+ for (MusicTheory musicTheory : musicTheories) {
|
|
|
+ ExamMusicTheory emt = new ExamMusicTheory();
|
|
|
+ emt.setExaminationBasicId(examinationBasic.getId());
|
|
|
+ emt.setTenantId(examinationBasic.getTenantId());
|
|
|
+ emt.setLevel(musicTheory.getLevel());
|
|
|
+ emt.setFee(musicTheory.getFee());
|
|
|
+ examMusicTheories.add(emt);
|
|
|
+ }
|
|
|
+
|
|
|
+ examMusicTheoryDao.batchInsert(examMusicTheories);
|
|
|
+
|
|
|
+ return examinationBasic;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void updateExamStatus() {
|
|
|
+ List<ExaminationBasic> needUpdateStatusExams = examinationBasicDao.getNeedUpdateStatusExams();
|
|
|
+ if (CollectionUtils.isEmpty(needUpdateStatusExams)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Date now = new Date();
|
|
|
+ for (ExaminationBasic needUpdateStatusExam : needUpdateStatusExams) {
|
|
|
+ if (now.compareTo(needUpdateStatusExam.getEnrollStartTime()) >= 0) {
|
|
|
+ needUpdateStatusExam.setStatus(ExamStatusEnum.APPLYING);
|
|
|
+ }
|
|
|
+ if (now.compareTo(needUpdateStatusExam.getEnrollEndTime()) >= 0) {
|
|
|
+ needUpdateStatusExam.setStatus(ExamStatusEnum.APPLIED);
|
|
|
+ }
|
|
|
+ if (now.compareTo(needUpdateStatusExam.getExpectExamStartTime()) >= 0) {
|
|
|
+ needUpdateStatusExam.setStatus(ExamStatusEnum.EXAM_ING);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ examinationBasicDao.batchUpdate(needUpdateStatusExams);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PageInfo<ExaminationBasicDto> findExaminationBasics(ExaminationQueryInfo queryInfo) {
|
|
|
+ PageInfo<ExaminationBasicDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
|
|
|
+ Map<String, Object> params = new HashMap<String, Object>();
|
|
|
+ MapUtil.populateMap(params, queryInfo);
|
|
|
+
|
|
|
+ List<ExaminationBasicDto> dataList = new ArrayList<>();
|
|
|
+ int count = examinationBasicDao.countExaminationBasics(params);
|
|
|
+ if (count > 0) {
|
|
|
+ pageInfo.setTotal(count);
|
|
|
+ params.put("offset", pageInfo.getOffset());
|
|
|
+ dataList = examinationBasicDao.findExaminationBasics(params);
|
|
|
+ List<Integer> examIds = dataList.stream().map(ExaminationBasicDto::getId).collect(Collectors.toList());
|
|
|
+ List<ExamOrganizationRelation> examOrgans = new ArrayList<>();
|
|
|
+ if (!CollectionUtils.isEmpty(examIds)) {
|
|
|
+ examOrganizationRelationDao.getWithExams(examIds);
|
|
|
+ }
|
|
|
+ Map<Integer, List<ExamOrganizationRelation>> examOrgansMap = new HashMap<>();
|
|
|
+ if (!CollectionUtils.isEmpty(examOrgans)) {
|
|
|
+ examOrgansMap = examOrgans.stream().collect(Collectors.groupingBy(ExamOrganizationRelation::getExaminationBasicId));
|
|
|
+ }
|
|
|
+ for (ExaminationBasicDto examinationBasicDto : dataList) {
|
|
|
+ List<ExamOrganizationRelation> examOrganizationRelations = examOrgansMap.get(examinationBasicDto.getId());
|
|
|
+ if (CollectionUtils.isEmpty(examOrganizationRelations)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ long totalRegistrationStudentNum = examOrganizationRelations.stream().map(ExamOrganizationRelation::getTotalRegistrationStudentNum).count();
|
|
|
+ long totalPaymentAmount = examOrganizationRelations.stream().map(ExamOrganizationRelation::getTotalPaymentAmount).count();
|
|
|
+ examinationBasicDto.setTotalRegistrationStudentNum((int) totalRegistrationStudentNum);
|
|
|
+ examinationBasicDto.setTotalPaymentAmount(new BigDecimal(totalPaymentAmount));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ pageInfo.setRows(dataList);
|
|
|
+ return pageInfo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ExaminationBasicDto getExaminationBasic(Integer examId) {
|
|
|
+ if (Objects.isNull(examId)) {
|
|
|
+ throw new BizException("请指定考级项目");
|
|
|
+ }
|
|
|
+ ExaminationBasicDto examinationBasic = examinationBasicDao.getExaminationBasic(examId);
|
|
|
+ if (Objects.isNull(examinationBasic)) {
|
|
|
+ throw new BizException("指定的考级项目不存在");
|
|
|
+ }
|
|
|
+ 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));
|
|
|
+ }
|
|
|
+ return examinationBasic;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void closeExam(Integer examId, String reason) {
|
|
|
+ if (Objects.isNull(examId)) {
|
|
|
+ throw new BizException("请指定考级项目");
|
|
|
+ }
|
|
|
+ ExaminationBasic examinationBasic = examinationBasicDao.get(examId.longValue());
|
|
|
+ if (Objects.isNull(examinationBasic)) {
|
|
|
+ throw new BizException("考级项目不存在");
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(reason)) {
|
|
|
+ reason = "后台手动关闭";
|
|
|
+ }
|
|
|
+ examinationBasic.setMemo(reason);
|
|
|
+ examinationBasic.setStatus(ExamStatusEnum.CLOSE);
|
|
|
+ examinationBasicDao.update(examinationBasic);
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
public ExaminationBasic getInfo(Integer examId) {
|
|
|
- return examinationBasicDao.get(examId.longValue());
|
|
|
- }
|
|
|
+ ExaminationBasic examinationBasic = examinationBasicDao.get(examId.longValue());
|
|
|
+ if (examinationBasic == null) {
|
|
|
+ throw new BizException("考试项目不存在,请核对");
|
|
|
+ }
|
|
|
+ if (!StringUtils.isBlank(examinationBasic.getExamLocationIdList())) {
|
|
|
+ List<ExamLocation> examLocations = examLocationDao.getExamLocationByIds(examinationBasic.getExamLocationIdList());
|
|
|
+ examinationBasic.setExamLocations(examLocations);
|
|
|
+ }
|
|
|
+ return examinationBasic;
|
|
|
+ }
|
|
|
}
|