Pārlūkot izejas kodu

Merge branch 'master' of http://124.70.43.205:3000/GYEE_R.D/exam

moccus 2 gadi atpakaļ
vecāks
revīzija
3e1dce8139

+ 31 - 42
exam-06173-api/src/main/java/com/gyee/exam/modules/ectotal/service/ExamAndCourseTotalService.java

@@ -32,53 +32,42 @@ public class ExamAndCourseTotalService {
 
     public List<ExamAndCourseDepartTotalDTO> examAndCourseTotal(BaseQueryReqDTO reqDTO) {
 
-        List<ExamAndCourseDepartTotalDTO> totalDTOS = new ArrayList<>();
-        List<CourseDepartTotalDTO> coursedtos = courseService.courseDepartTotal(reqDTO);
-        List<ExamDepartTotalDTO> examdtos = examService.examDepartTotal(reqDTO);
-
+        List<ExamAndCourseDepartTotalDTO> totalList = new ArrayList<>();
+        List<CourseDepartTotalDTO> courseList = courseService.courseDepartTotal(reqDTO);
+        List<ExamDepartTotalDTO> examdList = examService.examDepartTotal(reqDTO);
+
+        List<String> cours = courseList.stream().map(CourseDepartTotalDTO::getDeptCode).collect(Collectors.toList());
+        List<String> exams = examdList.stream().map(ExamDepartTotalDTO::getDeptCode).collect(Collectors.toList());
+        cours.addAll(exams);
+        List<String> intersection = cours.stream().distinct().collect(Collectors.toList());
         ExamAndCourseDepartTotalDTO totalDTO = null;
-        if (coursedtos.size() >= examdtos.size()) {
-            Map<String, List<ExamDepartTotalDTO>> groupexamdtos = examdtos.stream().collect(Collectors.groupingBy(ExamDepartTotalDTO::getDeptCode));
-            for (int i = 0; i < coursedtos.size(); i++) {
-                totalDTO = new ExamAndCourseDepartTotalDTO();
-                totalDTO.setDeptCode(coursedtos.get(i).getDeptCode());
-                totalDTO.setDeptName(coursedtos.get(i).getDeptName());
-                totalDTO.setEcTotalUser(coursedtos.get(i).getEcTotalUser());
-                totalDTO.setEcActualUser(coursedtos.get(i).getEcActualUser());
-                totalDTO.setEcPassUser(coursedtos.get(i).getEcPassUser());
-                totalDTO.setEcTotalMin(coursedtos.get(i).getEcTotalMin());
-                List<ExamDepartTotalDTO> groupexams = groupexamdtos.get(coursedtos.get(i).getDeptCode()) == null ? null : groupexamdtos.get(coursedtos.get(i).getDeptCode());
-                if (null != groupexams && groupexams.size() == 1) {
-                    totalDTO.setEeTotalUser(groupexams.get(0).getEeTotalUser());
-                    totalDTO.setEeActualUser(groupexams.get(0).getEeActualUser());
-                    totalDTO.setEePassUser(groupexams.get(0).getEePassUser());
-
-                }
-                totalDTOS.add(totalDTO);
+        Map<String, List<CourseDepartTotalDTO>> groupcourse = courseList.stream().collect(Collectors.groupingBy(CourseDepartTotalDTO::getDeptCode));
+        Map<String, List<ExamDepartTotalDTO>> groupexam = examdList.stream().collect(Collectors.groupingBy(ExamDepartTotalDTO::getDeptCode));
+
+        for (String key : intersection) {
+
+            List<CourseDepartTotalDTO> groupcourses = groupcourse.get(key)== null ? null : groupcourse.get(key);
+            List<ExamDepartTotalDTO> groupexams = groupexam.get(key) == null ? null : groupexam.get(key);
+
+            totalDTO = new ExamAndCourseDepartTotalDTO();
+            totalDTO.setDeptCode(null != groupexams ? groupexams.get(0).getDeptCode() : groupcourses.get(0).getDeptCode());
+            totalDTO.setDeptName(null != groupexams ? groupexams.get(0).getDeptName() : groupcourses.get(0).getDeptName());
+            if (null != groupcourses && groupcourses.size() == 1) {
+                totalDTO.setEcTotalUser(groupcourses.get(0).getEcTotalUser());
+                totalDTO.setEcActualUser(groupcourses.get(0).getEcActualUser());
+                totalDTO.setEcPassUser(groupcourses.get(0).getEcPassUser());
+                totalDTO.setEcTotalMin(groupcourses.get(0).getEcTotalMin());
             }
 
-        } else {
-            Map<String, List<CourseDepartTotalDTO>> groupcoursedtos = coursedtos.stream().collect(Collectors.groupingBy(CourseDepartTotalDTO::getDeptCode));
-            for (int i = 0; i < examdtos.size(); i++) {
-                totalDTO = new ExamAndCourseDepartTotalDTO();
-                totalDTO.setDeptCode(examdtos.get(i).getDeptCode());
-                totalDTO.setDeptName(examdtos.get(i).getDeptName());
-                totalDTO.setEeTotalUser(examdtos.get(i).getEeTotalUser());
-                totalDTO.setEeActualUser(examdtos.get(i).getEePassUser());
-                totalDTO.setEePassUser(examdtos.get(i).getEePassUser());
-                List<CourseDepartTotalDTO> groupcourses = groupcoursedtos.get(examdtos.get(i).getDeptCode()) == null ? null : groupcoursedtos.get(examdtos.get(i).getDeptCode());
-
-                if (null != groupcourses && groupcourses.size() == 1) {
-                    totalDTO.setEcTotalUser(groupcourses.get(0).getEcTotalUser());
-                    totalDTO.setEcActualUser(groupcourses.get(0).getEcActualUser());
-                    totalDTO.setEcPassUser(groupcourses.get(0).getEcPassUser());
-                    totalDTO.setEcTotalMin(groupcourses.get(0).getEcTotalMin());
-                }
-                totalDTOS.add(totalDTO);
+            if (null != groupexams && groupexams.size() == 1) {
+                totalDTO.setEeTotalUser(groupexams.get(0).getEeTotalUser());
+                totalDTO.setEeActualUser(groupexams.get(0).getEeActualUser());
+                totalDTO.setEePassUser(groupexams.get(0).getEePassUser());
             }
-
+            totalList.add(totalDTO);
         }
-        return totalDTOS;
+
+        return totalList;
     }
 
 

+ 62 - 26
exam-06173-api/src/main/java/com/gyee/exam/modules/exam/service/impl/ExamServiceImpl.java

@@ -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

+ 6 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/paper/service/PaperService.java

@@ -127,4 +127,10 @@ public interface PaperService extends IService<Paper> {
      */
     int countByTmpl(String tmplId);
 
+    /**
+     * 是否有参加考试
+     * @return
+     */
+   int allProcess(String examId);
+
 }

+ 10 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/paper/service/impl/PaperServiceImpl.java

@@ -917,4 +917,14 @@ public class PaperServiceImpl extends ServiceImpl<PaperMapper, Paper> implements
     public int countByTmpl(String tmplId) {
         return baseMapper.countByTmpl(tmplId);
     }
+
+    @Override
+    public int allProcess(String examId) {
+        QueryWrapper<Paper> wrapper = new QueryWrapper<>();
+        wrapper.lambda()
+                .eq(Paper::getExamId, examId);
+
+        return this.count(wrapper);
+    }
+
 }

+ 1 - 1
exam-06173-api/src/main/java/com/gyee/exam/modules/qu/controller/QuController.java

@@ -67,7 +67,7 @@ public class QuController extends BaseController {
     @ApiOperation(value = "添加或修改")
     @PostMapping("/save")
     public ApiRest<BaseIdRespDTO> save(@RequestBody QuDetailDTO reqDTO) {
-        baseService.save(reqDTO);
+        baseService.save(reqDTO,false);
         return super.success();
     }
 

+ 1 - 1
exam-06173-api/src/main/java/com/gyee/exam/modules/qu/service/QuService.java

@@ -74,7 +74,7 @@ public interface QuService extends IService<Qu> {
      *
      * @param reqDTO
      */
-    void save(QuDetailDTO reqDTO);
+    void save(QuDetailDTO reqDTO,boolean isList);
 
     /**
      * 查找导出列表

+ 8 - 3
exam-06173-api/src/main/java/com/gyee/exam/modules/qu/service/impl/QuServiceImpl.java

@@ -135,7 +135,7 @@ public class QuServiceImpl extends ServiceImpl<QuMapper, Qu> implements QuServic
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void save(QuDetailDTO reqDTO) {
+    public void save(QuDetailDTO reqDTO,boolean islist) {
 
 
         // 校验数据
@@ -155,7 +155,12 @@ public class QuServiceImpl extends ServiceImpl<QuMapper, Qu> implements QuServic
             }
         }
         if(null !=qu && null == qu.getId() && null!=quList && quList.size()>0){
-            throw new ServiceException("此题目题库中已存在!");
+            if(!islist){
+                throw new ServiceException("此题目题库中已存在!");
+            }else {
+                return;
+            }
+
         }
 
 
@@ -216,7 +221,7 @@ public class QuServiceImpl extends ServiceImpl<QuMapper, Qu> implements QuServic
         //循环题目插入
         for (QuDetailDTO dto : dtoList) {
             // 保存答案
-            this.save(dto);
+            this.save(dto,true);
         }
     }
 

+ 4 - 6
exam-06173-api/src/main/resources/mapper/course/CourseFileLearnMapper.xml

@@ -70,12 +70,10 @@
 
                 <if test="query!=null">
 
-                    <if test="query.statDateL!=null ">
-                        AND ec.create_time >= #{query.statDateL}
-                    </if>
-
-                    <if test="query.statDateR!=null ">
-                        AND ec.create_time &lt; #{query.statDateR}
+                    <if test="query.statDateL!=null  and query.statDateR!=null">
+                        and (( ec.START_TIME >= #{query.statDateL}  AND ec.START_TIME &lt;=  #{query.statDateR})
+                        or ( ec.START_TIME &lt;= #{query.statDateL}  AND ec.end_time >=  #{query.statDateR})
+                        OR ( ec.end_time >= #{query.statDateL}   AND ec.end_time &lt;=  #{query.statDateR}))
                     </if>
 
                     <if test="query.q!=null and query.q!=''">

+ 4 - 6
exam-06173-api/src/main/resources/mapper/course/CourseMapper.xml

@@ -225,12 +225,10 @@
             AND uc.id IS NOT NULL AND sd.data_flag != '1'
             <if test="query!=null">
 
-                <if test="query.statDateL!=null ">
-                    AND ec.create_time >= #{query.statDateL}
-                </if>
-
-                <if test="query.statDateR!=null ">
-                    AND ec.create_time &lt; #{query.statDateR}
+                <if test="query.statDateL!=null  and query.statDateR!=null ">
+                    and (( ec.START_TIME >= #{query.statDateL}  AND ec.START_TIME &lt;= #{query.statDateR})
+                    or ( ec.START_TIME &lt;= #{query.statDateL}  AND ec.end_time >= #{query.statDateR})
+                    OR ( ec.end_time >= #{query.statDateL}   AND ec.end_time &lt;= #{query.statDateR}))
                 </if>
 
                 <if test="query.q!=null and query.q!=''">

+ 15 - 8
exam-06173-api/src/main/resources/mapper/exam/ExamMapper.xml

@@ -205,7 +205,7 @@
         COUNT(DISTINCT ue.user_id) AS eeActualUser,
         COUNT(IF( ue.passed = 1 ,1, NULL)) AS eePassUser
         FROM el_exam ee
-        LEFT JOIN el_exam_depart dept on ee.id = dept.exam_id
+        INNER JOIN el_exam_depart dept on ee.id = dept.exam_id
         LEFT JOIN sys_depart sd on sd.dept_code = dept.dept_code
         LEFT JOIN sys_user uc ON dept.dept_code=uc.dept_code
         LEFT JOIN el_user_exam ue ON ue.user_id=uc.id AND ue.exam_id=dept.exam_id
@@ -214,12 +214,10 @@
             and uc.id IS NOT NULL AND sd.data_flag != '1'
             <if test="query!=null">
 
-                <if test="query.statDateL!=null ">
-                    AND ee.start_time >=  #{query.statDateL}
-                </if>
-
-                <if test="query.statDateR!=null ">
-                    AND ee.end_time &lt; #{query.statDateR}
+                <if test="query.statDateL!=null and query.statDateR!=null">
+                    and ( ee.START_TIME >= #{query.statDateL} and  ee.START_TIME &lt;= #{query.statDateR})
+                    or  ( ee.START_TIME &lt;= #{query.statDateL} and  ee.end_time >= #{query.statDateR})
+                    or  ( ee.end_time >= #{query.statDateL} and  ee.end_time &lt;= #{query.statDateR})
                 </if>
 
                 <if test="query.q!=null and query.q!=''">
@@ -255,9 +253,18 @@
         </if>
 
         <if test="query.statDateR!=null ">
-            AND ep.limit_time &lt; #{query.statDateR}
+            AND ep.limit_time &lt;= #{query.statDateR}
         </if>
 
+        <where>
+            and uc.id IS NOT NULL AND sd.data_flag != '1'
+            <if test="query.statDateL!=null and query.statDateR!=null">
+                and ( ee.START_TIME >= #{query.statDateL} and  ee.START_TIME &lt;= #{query.statDateR})
+                or  ( ee.START_TIME &lt;= #{query.statDateL} and  ee.end_time >= #{query.statDateR})
+                or  ( ee.end_time >= #{query.statDateL} and  ee.end_time &lt;= #{query.statDateR})
+            </if>
+        </where>
+
         GROUP BY uc.dept_code
 
     </select>