|
@@ -10,7 +10,6 @@ import com.gyee.boot.base.api.api.dto.PagingReqDTO;
|
|
|
import com.gyee.boot.base.api.exception.ServiceException;
|
|
|
import com.gyee.boot.base.api.utils.BeanMapper;
|
|
|
import com.gyee.exam.modules.course.dto.request.CheckUserCourseStatDTO;
|
|
|
-import com.gyee.exam.modules.ectotal.dto.response.ExamAndCourseDepartTotalDTO;
|
|
|
import com.gyee.exam.modules.exam.dto.response.*;
|
|
|
import com.gyee.exam.modules.stat.course.dto.response.StatCourseLearnDTO;
|
|
|
import com.gyee.exam.modules.stat.course.service.StatCourseService;
|
|
@@ -31,7 +30,6 @@ import com.gyee.exam.modules.tmpl.entity.Tmpl;
|
|
|
import com.gyee.exam.modules.tmpl.service.TmplService;
|
|
|
import com.gyee.exam.modules.user.UserUtils;
|
|
|
import com.gyee.exam.modules.user.exam.service.UserExamService;
|
|
|
-import org.apache.poi.util.StringUtil;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -77,6 +75,15 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements Ex
|
|
|
@Override
|
|
|
public void save(ExamSaveReqDTO reqDTO) {
|
|
|
|
|
|
+ if (!reqDTO.getCreateBy().equals(reqDTO.getUpdateBy())){
|
|
|
+ throw new ServiceException("非创建人不允许修改");
|
|
|
+ }
|
|
|
+
|
|
|
+ int count = paperService.allProcess(reqDTO.getId());
|
|
|
+
|
|
|
+ if (count > 0){
|
|
|
+ throw new ServiceException("已有人员参加考试,不允许修改试卷");
|
|
|
+ }
|
|
|
// ID
|
|
|
String id = reqDTO.getId();
|
|
|
|
|
@@ -256,39 +263,68 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements Ex
|
|
|
@Override
|
|
|
public List<ExamDepartTotalDTO> examDepartTotal(BaseQueryReqDTO reqDTO) {
|
|
|
|
|
|
+ List<ExamDepartTotalDTO> allList = new ArrayList<>();
|
|
|
List<ExamDepartTotalDTO> examList = baseMapper.examDepartTotal(reqDTO);
|
|
|
List<ExamDepartTotalDTO> userList = baseMapper.selectUserTotal(reqDTO);
|
|
|
List<String> exams = examList.stream().map(ExamDepartTotalDTO::getDeptCode).collect(Collectors.toList());
|
|
|
List<String> users = userList.stream().map(ExamDepartTotalDTO::getDeptCode).collect(Collectors.toList());
|
|
|
-// exams.addAll(users);
|
|
|
-// List<String> listAll = exams.stream().distinct().collect(Collectors.toList());
|
|
|
-//
|
|
|
-// List<ExamDepartTotalDTO> allDtos = new ArrayList<>();
|
|
|
ExamDepartTotalDTO totalDTO = null;
|
|
|
Map<String, List<ExamDepartTotalDTO>> groupexam = examList.stream().collect(Collectors.groupingBy(ExamDepartTotalDTO::getDeptCode));
|
|
|
- Map<String, List<ExamDepartTotalDTO>> groupuser = examList.stream().collect(Collectors.groupingBy(ExamDepartTotalDTO::getDeptCode));
|
|
|
-// for(int i = 0; i < listAll.size(); i++){
|
|
|
-//
|
|
|
-// totalDTO = new ExamDepartTotalDTO();
|
|
|
-// List<ExamDepartTotalDTO> dept = groupexam.get(i) == null ? null :groupexam.get(i);
|
|
|
-// if (null != dept && dept.size() == 1){
|
|
|
-// totalDTO.setDeptCode(groupexam.get(i).get(0).getDeptCode());
|
|
|
-// }
|
|
|
-//
|
|
|
-//
|
|
|
-// }
|
|
|
- examList.addAll(userList);
|
|
|
+ Map<String, List<ExamDepartTotalDTO>> groupuser = userList.stream().collect(Collectors.groupingBy(ExamDepartTotalDTO::getDeptCode));
|
|
|
+
|
|
|
+ // 差集 (list1 - list2)
|
|
|
+ List<String> reduce = exams.stream().filter(item -> !users.contains(item)).collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 交集
|
|
|
List<String> intersection = exams.stream().filter(users::contains).collect(Collectors.toList());
|
|
|
- for (int i = 0; i < intersection.size(); i++){
|
|
|
+
|
|
|
+ for (String key : intersection) {
|
|
|
+ totalDTO = new ExamDepartTotalDTO();
|
|
|
+ totalDTO.setDeptCode(groupexam.get(key).get(0).getDeptCode());
|
|
|
+ totalDTO.setDeptName(groupexam.get(key).get(0).getDeptName());
|
|
|
+ totalDTO.setEeActualUser(groupexam.get(key).get(0).getEeActualUser()+groupuser.get(key).get(0).getEeActualUser());
|
|
|
+ totalDTO.setEePassUser(groupexam.get(key).get(0).getEePassUser()+groupuser.get(key).get(0).getEePassUser());
|
|
|
+ totalDTO.setEeTotalUser(groupexam.get(key).get(0).getEeTotalUser()+groupuser.get(key).get(0).getEeTotalUser());
|
|
|
+ allList.add(totalDTO);
|
|
|
+ }
|
|
|
+
|
|
|
+ for (String key : reduce){
|
|
|
+
|
|
|
+ List<ExamDepartTotalDTO> groupexams = groupexam.get(key)== null ? null : groupexam.get(key);
|
|
|
+ List<ExamDepartTotalDTO> groupusers = groupuser.get(key) == null ? null : groupuser.get(key);
|
|
|
+
|
|
|
totalDTO = new ExamDepartTotalDTO();
|
|
|
- totalDTO.setDeptCode(groupexam.get(i).get(0).getDeptCode());
|
|
|
- totalDTO.setDeptName(groupexam.get(i).get(0).getDeptName());
|
|
|
- totalDTO.setEeActualUser(groupexam.get(i).get(0).getEeActualUser()+groupuser.get(i).get(0).getEeActualUser());
|
|
|
- totalDTO.setEePassUser(groupexam.get(i).get(0).getEePassUser()+groupuser.get(i).get(0).getEePassUser());
|
|
|
- totalDTO.setEeTotalUser(groupexam.get(i).get(0).getEeTotalUser()+groupuser.get(i).get(0).getEeTotalUser());
|
|
|
- examList.add(totalDTO);
|
|
|
+ totalDTO.setDeptCode(null != groupexams ? groupexams.get(0).getDeptCode() : groupusers.get(0).getDeptCode());
|
|
|
+ totalDTO.setDeptName(null != groupexams ? groupexams.get(0).getDeptName() : groupusers.get(0).getDeptName());
|
|
|
+ if (null != groupexams && groupexams.size() == 1){
|
|
|
+ totalDTO.setEeActualUser(groupexams.get(0).getEeActualUser());
|
|
|
+ totalDTO.setEePassUser(groupexams.get(0).getEePassUser());
|
|
|
+ totalDTO.setEeTotalUser(groupexams.get(0).getEeTotalUser());
|
|
|
+ allList.add(totalDTO);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (null != groupusers && groupusers.size() == 1){
|
|
|
+ totalDTO.setEeActualUser(groupusers.get(0).getEeActualUser());
|
|
|
+ totalDTO.setEePassUser(groupusers.get(0).getEePassUser());
|
|
|
+ totalDTO.setEeTotalUser(groupusers.get(0).getEeTotalUser());
|
|
|
+ allList.add(totalDTO);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
- return examList;
|
|
|
+
|
|
|
+
|
|
|
+//
|
|
|
+//
|
|
|
+// for (String key : intersection){
|
|
|
+// totalDTO = new ExamDepartTotalDTO();
|
|
|
+// totalDTO.setDeptCode(groupexam.get(key).get(0).getDeptCode());
|
|
|
+// totalDTO.setDeptName(groupexam.get(key).get(0).getDeptName());
|
|
|
+// totalDTO.setEeActualUser(groupexam.get(key).get(0).getEeActualUser()+groupuser.get(key).get(0).getEeActualUser());
|
|
|
+// totalDTO.setEePassUser(groupexam.get(key).get(0).getEePassUser()+groupuser.get(key).get(0).getEePassUser());
|
|
|
+// totalDTO.setEeTotalUser(groupexam.get(key).get(0).getEeTotalUser()+groupuser.get(key).get(0).getEeTotalUser());
|
|
|
+// examList.add(totalDTO);
|
|
|
+// }
|
|
|
+ return allList;
|
|
|
}
|
|
|
|
|
|
@Override
|