ExamReviewServiceImpl.java 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. package com.keao.edu.user.service.impl;
  2. import com.keao.edu.auth.api.client.SysUserFeignService;
  3. import com.keao.edu.auth.api.entity.SysUser;
  4. import com.keao.edu.common.dal.BaseDAO;
  5. import com.keao.edu.common.exception.BizException;
  6. import com.keao.edu.common.page.PageInfo;
  7. import com.keao.edu.common.service.impl.BaseServiceImpl;
  8. import com.keao.edu.user.api.entity.ExamRoomStudentRelation;
  9. import com.keao.edu.user.dao.ExamReviewDao;
  10. import com.keao.edu.user.dto.ExamReviewDto;
  11. import com.keao.edu.user.dto.ExamReviewRecordDto;
  12. import com.keao.edu.user.entity.ExamReview;
  13. import com.keao.edu.user.entity.ExaminationBasic;
  14. import com.keao.edu.user.entity.Subject;
  15. import com.keao.edu.user.enums.YesOrNoEnum;
  16. import com.keao.edu.user.page.ExamReviewQueryInfo;
  17. import com.keao.edu.user.page.ExamReviewRecordQueryInfo;
  18. import com.keao.edu.user.service.ExamReviewService;
  19. import com.keao.edu.user.service.ExamRoomStudentRelationService;
  20. import com.keao.edu.util.collection.MapUtil;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.stereotype.Service;
  23. import org.springframework.transaction.annotation.Transactional;
  24. import java.util.HashMap;
  25. import java.util.List;
  26. import java.util.Map;
  27. import java.util.Objects;
  28. import java.util.stream.Collectors;
  29. @Service
  30. public class ExamReviewServiceImpl extends BaseServiceImpl<Long, ExamReview> implements ExamReviewService {
  31. @Autowired
  32. private ExamReviewDao examReviewDao;
  33. @Autowired
  34. private SysUserFeignService sysUserFeignService;
  35. @Autowired
  36. private ExamRoomStudentRelationService examRoomStudentRelationService;
  37. @Override
  38. public BaseDAO<Long, ExamReview> getDAO() {
  39. return examReviewDao;
  40. }
  41. @Override
  42. public PageInfo<ExamReviewDto> findExamResult(ExamReviewQueryInfo queryInfo) {
  43. PageInfo<ExamReviewDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
  44. Map<String, Object> params = new HashMap<String, Object>();
  45. MapUtil.populateMap(params, queryInfo);
  46. // List<Integer> nextLevelOrganIds = organizationService.getChildOrganIds(queryInfo.getOrganId(), true);
  47. // params.put("organIds", nextLevelOrganIds);
  48. List<ExamReviewDto> dataList = null;
  49. int count = examReviewDao.countExamResult(params);
  50. if (count > 0) {
  51. pageInfo.setTotal(count);
  52. params.put("offset", pageInfo.getOffset());
  53. dataList = examReviewDao.findExamResult(params);
  54. List<Integer> teacherIds = dataList.stream().map(ExamReviewDto::getTeacherId).collect(Collectors.toList());
  55. List<Integer> studentIds = dataList.stream().map(ExamReviewDto::getStudentId).collect(Collectors.toList());
  56. List<Long> examIds = dataList.stream().map(ExamReviewDto::getExaminationBasicId).collect(Collectors.toList());
  57. List<Integer> subjectIds = dataList.stream().map(e->e.getExamRegistration().getSubjectId()).collect(Collectors.toList());
  58. Map<Integer, String> teacherIdNameMap = this.getMap("sys_user", "id_", "real_name_", teacherIds, Integer.class, String.class);
  59. Map<Integer, String> studentIdNameMap = this.getMap("sys_user", "id_", "real_name_", studentIds, Integer.class, String.class);
  60. Map<Integer, String> subjectIdNameMap = this.getMap("subject", "id_", "name_", subjectIds, Integer.class, String.class);
  61. Map<Long, String> examIdNameMap = this.getMap("examination_basic", "id_", "name_", examIds, Long.class, String.class);
  62. for (ExamReviewDto e : dataList) {
  63. e.setTeacher(new SysUser(e.getTeacherId(),teacherIdNameMap.get(e.getTeacherId())));
  64. e.getExamRegistration().setSubject(new Subject(e.getExamRegistration().getSubjectId(), subjectIdNameMap.get(e.getExamRegistration().getSubjectId())));
  65. e.setStudentInfo(new SysUser(e.getStudentId(), studentIdNameMap.get(e.getStudentId())));
  66. e.setExaminationBasic(new ExaminationBasic(e.getExaminationBasicId(), examIdNameMap.get(e.getExaminationBasicId())));
  67. }
  68. }
  69. pageInfo.setRows(dataList);
  70. return pageInfo;
  71. }
  72. @Override
  73. public PageInfo<ExamReviewRecordDto> queryExamReviewRecordList(ExamReviewRecordQueryInfo queryInfo) {
  74. PageInfo<ExamReviewRecordDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
  75. Map<String, Object> params = new HashMap<String, Object>();
  76. MapUtil.populateMap(params, queryInfo);
  77. List<ExamReviewRecordDto> dataList = null;
  78. int count = examReviewDao.countExamReviewRecordList(params);
  79. if (count > 0) {
  80. pageInfo.setTotal(count);
  81. params.put("offset", pageInfo.getOffset());
  82. dataList = examReviewDao.queryExamReviewRecordList(params);
  83. List<Integer> collect = dataList.stream().map(e -> e.getStudentId()).collect(Collectors.toList());
  84. Map<Integer, String> realNames = getMap("sys_user", "id_", "real_name_", collect,Integer.class,String.class);
  85. dataList.forEach(e->{
  86. e.setRealName(realNames.get(e.getStudentId()));
  87. });
  88. pageInfo.setRows(dataList);
  89. }
  90. return pageInfo;
  91. }
  92. @Override
  93. @Transactional(rollbackFor = Exception.class)
  94. public void add(ExamReview examReview) {
  95. SysUser sysUser = sysUserFeignService.queryUserInfo();
  96. Long examRegistrationId = examReview.getExamRegistrationId();
  97. ExamReview byRegistrationId = examReviewDao.findByRegistrationId(examRegistrationId,sysUser.getId());
  98. if(byRegistrationId != null){
  99. throw new BizException("评审失败:请勿重复操作");
  100. }
  101. ExamRoomStudentRelation examRoomStudentRelation = examRoomStudentRelationService.getExamRoomStudentRelation(examRegistrationId);
  102. if(examRoomStudentRelation.getSignInTime() == null){
  103. throw new BizException("评审失败:学员未考试");
  104. }
  105. examReview.setExaminationBasicId(examRoomStudentRelation.getExaminationBasicId());
  106. examReview.setTeacherId(sysUser.getId());
  107. examReview.setStudentId(examRoomStudentRelation.getStudentId());
  108. examReview.setExamRoomId(examRoomStudentRelation.getExamRoomId());
  109. examReview.setTenantId(examRoomStudentRelation.getTenantId());
  110. examReviewDao.insert(examReview);
  111. }
  112. @Override
  113. @Transactional(rollbackFor = Exception.class)
  114. public int update(ExamReview examReview) {
  115. if(Objects.isNull(examReview.getId())){
  116. throw new BizException("考试结果不存在");
  117. }
  118. ExamReview existExamReview = examReviewDao.get(examReview.getId());
  119. if(Objects.isNull(existExamReview)){
  120. throw new BizException("考试结果不存在");
  121. }
  122. if(YesOrNoEnum.YES.equals(existExamReview.getEnableEdit())){
  123. throw new BizException("编辑已锁定");
  124. }
  125. return super.update(examReview);
  126. }
  127. }