|
@@ -10,6 +10,8 @@ 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.course.dto.response.CourseDepartTotalDTO;
|
|
|
+import com.gyee.exam.modules.course.entity.Course;
|
|
|
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;
|
|
@@ -35,12 +37,11 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Locale;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+import static java.util.stream.Collectors.groupingBy;
|
|
|
+
|
|
|
/**
|
|
|
* <p>
|
|
|
* 考试业务实现类
|
|
@@ -272,55 +273,87 @@ 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());
|
|
|
- ExamDepartTotalDTO totalDTO = null;
|
|
|
- Map<String, List<ExamDepartTotalDTO>> groupexam = examList.stream().collect(Collectors.groupingBy(ExamDepartTotalDTO::getDeptCode));
|
|
|
- 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 (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(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);
|
|
|
- }
|
|
|
+// 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());
|
|
|
+// ExamDepartTotalDTO totalDTO = null;
|
|
|
+// Map<String, List<ExamDepartTotalDTO>> groupexam = examList.stream().collect(Collectors.groupingBy(ExamDepartTotalDTO::getDeptCode));
|
|
|
+// 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 (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(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);
|
|
|
+// }
|
|
|
+//
|
|
|
+// }
|
|
|
|
|
|
- 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);
|
|
|
- }
|
|
|
+ QueryWrapper<Exam> wrapper = new QueryWrapper<>();
|
|
|
+ wrapper.ge("start_time", reqDTO.getStatDateL()).le("end_time", reqDTO.getStatDateR());
|
|
|
+ List<Exam> courses = baseMapper.selectList(wrapper);
|
|
|
+ Map<Integer, List<Exam>> collect = courses.stream().collect(Collectors.groupingBy(Exam::getOpenType));
|
|
|
+ List<String> courseId2 = collect.containsKey(2) ? collect.get(2).stream().map(m -> m.getId()).collect(Collectors.toList()) : Collections.EMPTY_LIST;
|
|
|
+ List<String> courseId3 = collect.containsKey(3) ? collect.get(3).stream().map(m -> m.getId()).collect(Collectors.toList()) : Collections.EMPTY_LIST;
|
|
|
+ List<ExamDepartTotalDTO> list = new ArrayList<>();
|
|
|
+ list.addAll(baseMapper.examCountTotal2(courseId2));
|
|
|
+ list.addAll(baseMapper.examCountTotal3(courseId3));
|
|
|
+ List<ExamDepartTotalDTO> dtos = list.stream().collect(groupingBy(ExamDepartTotalDTO::getDeptCode)).entrySet()
|
|
|
+ .stream().map(entry -> {
|
|
|
+ String key = entry.getKey();
|
|
|
+ List<ExamDepartTotalDTO> value = entry.getValue();
|
|
|
+ Integer totalUser = value.stream().mapToInt(ExamDepartTotalDTO::getEeTotalUser).sum();
|
|
|
+ Integer actualUser = value.stream().mapToInt(ExamDepartTotalDTO::getEeActualUser).sum();
|
|
|
+ Integer passUser = value.stream().mapToInt(ExamDepartTotalDTO::getEePassUser).sum();
|
|
|
+ ExamDepartTotalDTO obj = new ExamDepartTotalDTO();
|
|
|
+ obj.setDeptCode(key);
|
|
|
+ obj.setDeptName(value.get(0).getDeptName());
|
|
|
+ obj.setEeTotalUser(totalUser);
|
|
|
+ obj.setEeActualUser(actualUser);
|
|
|
+ obj.setEePassUser(passUser);
|
|
|
+ return obj;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+// List<ExamDepartTotalDTO> mindtos = examDepartService.departPassedRate(reqDTO);
|
|
|
+// Map<String,Integer> map = mindtos.stream().collect(Collectors.toMap(CourseDepartTotalDTO::getDeptCode,CourseDepartTotalDTO::getEcTotalMin));
|
|
|
+// dtos.stream().forEach(d->{
|
|
|
+// d.setEcTotalMin(map.get(d.getDeptCode()));
|
|
|
+// });
|
|
|
|
|
|
- }
|
|
|
- return allList;
|
|
|
+ return dtos;
|
|
|
}
|
|
|
|
|
|
@Override
|