Pārlūkot izejas kodu

[bug]命题任务批量保存

caozixuan 4 gadi atpakaļ
vecāks
revīzija
090dfd43cb

+ 108 - 35
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -419,9 +419,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         if (StringUtils.isBlank(task.getBatchNo())) {
             throw ExceptionResultEnum.ERROR.exception("batchNo不能为空");
         }
-        QueryWrapper<ExamTaskTemp> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(ExamTaskTemp::getBatchNo, task.getBatchNo());
-        List<ExamTaskTemp> examTaskTemps = examTaskTempService.list(queryWrapper);
 
         QueryWrapper<BasicExamRule> examQueryWrapper = new QueryWrapper<>();
         examQueryWrapper.lambda().eq(BasicExamRule::getSchoolId, schoolId);
@@ -430,38 +427,37 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             throw ExceptionResultEnum.ERROR.exception("通用规则未设置");
         }
 
-        if (examTaskTemps.isEmpty()) {
-            throw ExceptionResultEnum.ERROR.exception("没有可保存数据");
-        }
         List<ExamTask> list = new ArrayList<>();
         Set<String> paperNumbers = new HashSet<>();
-        for (ExamTaskTemp examTaskTemp : examTaskTemps) {
+        List<Map<String,String>> userList = task.getUsers();
+
+        for (Map<String, String> userMap : userList) {
             ExamTask examTask = new ExamTask();
             examTask.setSchoolId(task.getSchoolId());
-            examTask.setCourseCode(examTaskTemp.getCourseCode());
-            examTask.setCourseName(examTaskTemp.getCourseName());
-            examTask.setSpecialty(examTaskTemp.getSpecialty());
+            examTask.setCourseCode(userMap.get("courseCode"));
+            examTask.setCourseName(userMap.get("courseName"));
+            examTask.setSpecialty(userMap.get("specialty"));
 
-            if (StringUtils.isNotBlank(examTaskTemp.getPaperNumber())) {
-                if (paperNumbers.contains(examTaskTemp.getPaperNumber())) {
+            if (StringUtils.isNotBlank(userMap.get("paperNumber"))) {
+                if (paperNumbers.contains(userMap.get("paperNumber"))) {
                     // 试卷编号在文件内重复,跳过
                     continue;
                 }
                 QueryWrapper<ExamTask> taskQueryWrapper = new QueryWrapper<>();
-                taskQueryWrapper.lambda().eq(ExamTask::getSchoolId, schoolId).eq(ExamTask::getPaperNumber, examTaskTemp.getPaperNumber());
+                taskQueryWrapper.lambda().eq(ExamTask::getSchoolId, schoolId).eq(ExamTask::getPaperNumber, userMap.get("paperNumber"));
                 ExamTask task1 = this.getOne(taskQueryWrapper);
                 if (task1 != null) {
 //                    throw ExceptionResultEnum.ERROR.exception("试卷编号已存在");
                     // 试卷编号已存在,直接跳过
                     continue;
                 }
-                paperNumbers.add(examTaskTemp.getPaperNumber());
+                paperNumbers.add(userMap.get("paperNumber"));
             } else {
                 // 试卷编号生成规则:年月日(例如:20100419)+0000(例如:0001)顺序编号
                 String paperNumber = commonService.createPaperNumber(schoolId);
-                examTaskTemp.setPaperNumber(paperNumber);
+                userMap.put("paperNumber",paperNumber);
             }
-            examTask.setPaperNumber(examTaskTemp.getPaperNumber());
+            examTask.setPaperNumber(userMap.get("paperNumber"));
             examTask.setStartTime(task.getStartTime());
             examTask.setEndTime(task.getEndTime());
             examTask.setEnable(true);
@@ -469,27 +465,16 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             examTask.setBatchNo(task.getBatchNo());
             examTask.setCreateId(sysUser.getId());
             examTask.setCreateTime(System.currentTimeMillis());
-            /*String userId = task.getUsers().stream().map(m -> {
-                if (examTaskTemp.getCourseCode().equals(m.get("courseCode")) && examTaskTemp.getPaperNumber().equals(m.get("paperNumber"))) {
-                    return m.get("userId");
-                }
-                return "";
-            }).findFirst().get();*/
-            String userId = null;
-            String specialty = null;
-            for (Map<String, String> user : task.getUsers()) {
-                String ucourseCode = user.get("courseCode");
-                String upaperNumber = user.get("paperNumber");
-                if (examTaskTemp.getCourseCode().equals(ucourseCode)) {
-                    userId = user.get("userId");
-                    specialty = user.get("specialty");
-                }
+
+            String userId = userMap.get("userId");
+            String specialty = userMap.get("specialty");
+            if (specialty != null && specialty.length() > 0 && !specialty.equals("null")){
+                examTask.setSpecialty(specialty);
             }
-            examTask.setSpecialty(specialty);
-            if (StringUtils.isNotBlank(userId)) {
-                examTask.setUserId(Long.valueOf(userId));
+            if (userId != null && userId.length() > 0 && !userId.equals("null")){
+                examTask.setUserId(SystemConstant.convertIdToLong(userId));
                 examTask.setStatus(ExamStatusEnum.READY);
-            } else {
+            }else {
                 examTask.setStatus(ExamStatusEnum.NEW);
             }
             examTask.setReview(basicExamRule.getReview());
@@ -498,6 +483,94 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         return this.saveBatch(list);
     }
 
+//    @Override
+//    public boolean saveBatch(ExamTask task) {
+//        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+//        task.setSchoolId(schoolId);
+//        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+//
+//        if (StringUtils.isBlank(task.getBatchNo())) {
+//            throw ExceptionResultEnum.ERROR.exception("batchNo不能为空");
+//        }
+//        QueryWrapper<ExamTaskTemp> queryWrapper = new QueryWrapper<>();
+//        queryWrapper.lambda().eq(ExamTaskTemp::getBatchNo, task.getBatchNo());
+//        List<ExamTaskTemp> examTaskTemps = examTaskTempService.list(queryWrapper);
+//
+//        QueryWrapper<BasicExamRule> examQueryWrapper = new QueryWrapper<>();
+//        examQueryWrapper.lambda().eq(BasicExamRule::getSchoolId, schoolId);
+//        BasicExamRule basicExamRule = basicExamRuleService.getOne(examQueryWrapper);
+//        if (basicExamRule == null) {
+//            throw ExceptionResultEnum.ERROR.exception("通用规则未设置");
+//        }
+//
+//        if (examTaskTemps.isEmpty()) {
+//            throw ExceptionResultEnum.ERROR.exception("没有可保存数据");
+//        }
+//        List<ExamTask> list = new ArrayList<>();
+//        Set<String> paperNumbers = new HashSet<>();
+//        for (ExamTaskTemp examTaskTemp : examTaskTemps) {
+//            ExamTask examTask = new ExamTask();
+//            examTask.setSchoolId(task.getSchoolId());
+//            examTask.setCourseCode(examTaskTemp.getCourseCode());
+//            examTask.setCourseName(examTaskTemp.getCourseName());
+//            examTask.setSpecialty(examTaskTemp.getSpecialty());
+//
+//            if (StringUtils.isNotBlank(examTaskTemp.getPaperNumber())) {
+//                if (paperNumbers.contains(examTaskTemp.getPaperNumber())) {
+//                    // 试卷编号在文件内重复,跳过
+//                    continue;
+//                }
+//                QueryWrapper<ExamTask> taskQueryWrapper = new QueryWrapper<>();
+//                taskQueryWrapper.lambda().eq(ExamTask::getSchoolId, schoolId).eq(ExamTask::getPaperNumber, examTaskTemp.getPaperNumber());
+//                ExamTask task1 = this.getOne(taskQueryWrapper);
+//                if (task1 != null) {
+////                    throw ExceptionResultEnum.ERROR.exception("试卷编号已存在");
+//                    // 试卷编号已存在,直接跳过
+//                    continue;
+//                }
+//                paperNumbers.add(examTaskTemp.getPaperNumber());
+//            } else {
+//                // 试卷编号生成规则:年月日(例如:20100419)+0000(例如:0001)顺序编号
+//                String paperNumber = commonService.createPaperNumber(schoolId);
+//                examTaskTemp.setPaperNumber(paperNumber);
+//            }
+//            examTask.setPaperNumber(examTaskTemp.getPaperNumber());
+//            examTask.setStartTime(task.getStartTime());
+//            examTask.setEndTime(task.getEndTime());
+//            examTask.setEnable(true);
+//            examTask.setCardRuleId(task.getCardRuleId());
+//            examTask.setBatchNo(task.getBatchNo());
+//            examTask.setCreateId(sysUser.getId());
+//            examTask.setCreateTime(System.currentTimeMillis());
+//            /*String userId = task.getUsers().stream().map(m -> {
+//                if (examTaskTemp.getCourseCode().equals(m.get("courseCode")) && examTaskTemp.getPaperNumber().equals(m.get("paperNumber"))) {
+//                    return m.get("userId");
+//                }
+//                return "";
+//            }).findFirst().get();*/
+//            String userId = null;
+//            String specialty = null;
+//            for (Map<String, String> user : task.getUsers()) {
+//                String ucourseCode = user.get("courseCode");
+//                String upaperNumber = user.get("paperNumber");
+//                if (examTaskTemp.getCourseCode().equals(ucourseCode)) {
+//                    userId = user.get("userId");
+//                    specialty = user.get("specialty");
+//                }
+//            }
+//            examTask.setSpecialty(specialty);
+//            if (StringUtils.isNotBlank(userId)) {
+//                examTask.setUserId(Long.valueOf(userId));
+//                examTask.setStatus(ExamStatusEnum.READY);
+//            } else {
+//                examTask.setStatus(ExamStatusEnum.NEW);
+//            }
+//            examTask.setReview(basicExamRule.getReview());
+//            list.add(examTask);
+//        }
+//        return this.saveBatch(list);
+//    }
+
     @Override
     public IPage<ExamTaskDto> listTaskApply(String auditStatus, String reviewStatus, Long cardRuleId, String courseCode, String paperNumber, Long startTime, Long endTime, Integer pageNumber, Integer pageSize) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());