Procházet zdrojové kódy

添加试卷修改校验(只允许创建人修改,且有人员参加考试不允许修改试卷)

wangchangsheng před 2 roky
rodič
revize
b6d59c29cc

+ 55 - 6
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,6 +263,7 @@ 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());
@@ -264,18 +272,59 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements Ex
         Map<String, List<ExamDepartTotalDTO>> groupexam = examList.stream().collect(Collectors.groupingBy(ExamDepartTotalDTO::getDeptCode));
         Map<String, List<ExamDepartTotalDTO>> groupuser = userList.stream().collect(Collectors.groupingBy(ExamDepartTotalDTO::getDeptCode));
 
-        examList.addAll(userList);
+        // 差集 (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){
+
+        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);
+            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);
+            }
+
         }
-        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);
+    }
+
 }