caozixuan %!s(int64=4) %!d(string=hai) anos
pai
achega
6bcfde8e56

+ 0 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/CommonService.java

@@ -165,8 +165,6 @@ public interface CommonService {
      */
     public void checkData(Long schoolId, String courseCode, String paperNumber,SysUser user) throws IOException;
 
-//    public void checkDataForExamination()
-
     /**
      * 根据orgId查询所有子机构ID集合
      * @return

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailService.java

@@ -131,7 +131,7 @@ public interface ExamDetailService extends IService<ExamDetail> {
      * @param userId 当前用户id
      * @param serialNumberParams 序列号生成参数
      */
-    void disposeExamDetailByExaminationExcel(List<Map<String, Object>> dataList, Long userId, SerialNumberParams serialNumberParams);
+    List<Long> disposeExamDetailByExaminationExcel(List<Map<String, Object>> dataList, Long userId, SerialNumberParams serialNumberParams);
 
     /**
      * 根据考务数据Excel数据处理考务-科目表

+ 8 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskService.java

@@ -8,6 +8,7 @@ import com.qmth.distributed.print.business.bean.result.WorkResult;
 import com.qmth.distributed.print.business.entity.ExamTask;
 import com.qmth.distributed.print.business.entity.ExamTaskDetail;
 import com.qmth.distributed.print.business.entity.ExamTaskReviewLog;
+import com.qmth.distributed.print.business.entity.SysUser;
 import com.qmth.distributed.print.business.enums.ExamStatusEnum;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -101,4 +102,11 @@ public interface ExamTaskService extends IService<ExamTask> {
      * @param courseCode 考务数据导入的课程代码
      */
     void verifyCourseCodeByPaperNumber(Long schoolId,String paperNumber,String courseCode);
+
+    /**
+     * 根据考务-考场检验该考场下的所有命题任务是否已经完成,全部完成则生成pdf
+     * @param examDetailId 考务考场id
+     * @param user 用户id
+     */
+    void checkDataByExamination(Long examDetailId, SysUser user) throws IOException;
 }

+ 3 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.distributed.print.business.base.BaseEntity;
 import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.bean.params.SerialNumberParams;
 import com.qmth.distributed.print.business.bean.result.ExaminationDetailResult;
@@ -344,7 +345,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void disposeExamDetailByExaminationExcel(List<Map<String, Object>> dataList, Long userId, SerialNumberParams serialNumberParams) {
+    public List<Long> disposeExamDetailByExaminationExcel(List<Map<String, Object>> dataList, Long userId, SerialNumberParams serialNumberParams) {
         List<Map<String, Object>> examDetailKeyList = dataList.stream().flatMap(e -> {
             Map<String, Object> map = new HashMap<>();
             map.put("schoolId", e.get("schoolId"));
@@ -391,6 +392,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             examDetailList.add(examDetail);
         }
         this.saveBatch(examDetailList);
+        return examDetailList.stream().map(ExamDetail::getId).distinct().collect(Collectors.toList());
     }
 
     @Transactional(rollbackFor = Exception.class)

+ 49 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -12,12 +12,10 @@ import com.google.gson.Gson;
 import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.bean.result.WorkResult;
 import com.qmth.distributed.print.business.entity.*;
-import com.qmth.distributed.print.business.enums.DrawRuleEnum;
-import com.qmth.distributed.print.business.enums.ExamCardStatusEnum;
-import com.qmth.distributed.print.business.enums.ExamStatusEnum;
-import com.qmth.distributed.print.business.enums.ReviewStatusEnum;
+import com.qmth.distributed.print.business.enums.*;
 import com.qmth.distributed.print.business.mapper.ExamTaskMapper;
 import com.qmth.distributed.print.business.service.*;
+import com.qmth.distributed.print.business.templete.execute.AsyncCreatePdfTempleteService;
 import com.qmth.distributed.print.business.util.ConvertUtil;
 import com.qmth.distributed.print.business.util.ExcelUtil;
 import com.qmth.distributed.print.business.util.ServletUtil;
@@ -25,6 +23,7 @@ import com.qmth.distributed.print.business.util.excel.ExcelError;
 import com.qmth.distributed.print.common.contant.SystemConstant;
 import com.qmth.distributed.print.common.enums.ExceptionResultEnum;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.velocity.runtime.directive.contrib.For;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -88,6 +87,15 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     @Autowired
     private ConvertUtil convertUtil;
 
+    @Resource
+    private ExamDetailService examDetailService;
+
+    @Resource
+    TBTaskService tbTaskService;
+
+    @Resource
+    AsyncCreatePdfTempleteService asyncCreatePdfTempleteService;
+
     @Override
     public List<ExamTask> listByCourseCode(Long schoolId, String code) {
         QueryWrapper<ExamTask> queryWrapper = new QueryWrapper<>();
@@ -754,4 +762,41 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             }
         }
     }
+
+    @Override
+    public void checkDataByExamination(Long examDetailId,SysUser user) throws IOException {
+        boolean judge = true;
+        ExamDetail examDetail = examDetailService.getById(examDetailId);
+        if (Objects.isNull(examDetail)){
+            throw ExceptionResultEnum.ERROR.exception("考务-考场不存在");
+        }
+        List<ExamDetailCourse> examDetailCourseList = examDetailCourseService.list(new QueryWrapper<ExamDetailCourse>().lambda()
+                .eq(ExamDetailCourse::getExamDetailId,examDetailId)
+                .eq(ExamDetailCourse::getSchoolId,examDetail.getSchoolId()));
+        if (examDetailCourseList.size() < 1){
+            throw ExceptionResultEnum.ERROR.exception("考务-课程不存在");
+        }
+        for (ExamDetailCourse examDetailCourse : examDetailCourseList) {
+            String courseCode = examDetailCourse.getCourseCode();
+            String paperNumber = examDetailCourse.getPaperNumber();
+            Long schoolId = examDetailCourse.getSchoolId();
+            ExamTask examTask = this.getOne(new QueryWrapper<ExamTask>().lambda()
+                    .eq(ExamTask::getSchoolId,schoolId)
+                    .eq(ExamTask::getCourseCode,courseCode)
+                    .eq(ExamTask::getPaperNumber,paperNumber));
+            if (examTask == null){
+                judge = false;
+            }else if (!ExamStatusEnum.FINISH.equals(examTask.getStatus())){
+                judge = false;
+            }
+        }
+        if (judge){
+            Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.CREATE_PDF, examDetail.getPrintPlanId(), user);
+            if (Objects.nonNull(examDetail.getId())) {
+                map.computeIfAbsent("examDetailId", v -> examDetail.getId());
+            }
+            map.computeIfAbsent("schoolId", v -> examDetail.getSchoolId());
+            asyncCreatePdfTempleteService.createPdf(map, null);
+        }
+    }
 }

+ 22 - 16
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java

@@ -420,7 +420,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             String examDate = null;
             String examTime = null;
             String paperNumber = null;
-            List<FieldsDto> secondaryFieldList = new ArrayList<>();
+            List<FieldsDto> secondaryFieldList = new ArrayList<>(); // 备选字段
             for (FieldsDto fieldsDto : fieldsDtoList) {
                 String name = fieldsDto.getName();
                 String code = fieldsDto.getCode();
@@ -527,27 +527,33 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         Long value = counter.get();
         try {
             // 组装exam_detail数据
-            examDetailService.disposeExamDetailByExaminationExcel(dataList, userId, serialNumberParams);
+            List<Long> examDetailIdList = examDetailService.disposeExamDetailByExaminationExcel(dataList, userId, serialNumberParams);
             // 组装exam_detail_course数据
             examDetailService.disposeExamDetailCourseByExaminationExcel(dataList, userId);
             // 组装exam_student数据
             examDetailService.disposeExamStudentByExaminationExcel(dataList, userId);
 
-            List<Map<String, Object>> checkList = dataList.stream().flatMap(e -> {
-                Map<String, Object> tmp = new HashMap<>();
-                tmp.put("schoolId", e.get("schoolId"));
-                tmp.put("courseCode", e.get("courseCode"));
-                tmp.put("paperNumber", e.get("paperNumber"));
-                return Stream.of(tmp);
-            }).distinct().collect(Collectors.toList());
-            for (Map<String, Object> stringObjectMap : checkList) {
-                Long checkSchoolId = SystemConstant.convertIdToLong(String.valueOf(stringObjectMap.get("schoolId")));
-                String checkCourseCode = String.valueOf(stringObjectMap.get("courseCode"));
-                String checkPaperNumber = String.valueOf(stringObjectMap.get("paperNumber"));
-                SysUser user = (SysUser) map.get(SystemConstant.USER);
-                user.setSchoolId(schoolId);
-                commonService.checkData(checkSchoolId, checkCourseCode, checkPaperNumber, user);
+            // 按照考场检验命题任务是否全部完成,完成生成pdf
+            SysUser user = (SysUser) map.get(SystemConstant.USER);
+            for (Long examDetailId : examDetailIdList) {
+                examTaskService.checkDataByExamination(examDetailId,user);
             }
+
+//            List<Map<String, Object>> checkList = dataList.stream().flatMap(e -> {
+//                Map<String, Object> tmp = new HashMap<>();
+//                tmp.put("schoolId", e.get("schoolId"));
+//                tmp.put("courseCode", e.get("courseCode"));
+//                tmp.put("paperNumber", e.get("paperNumber"));
+//                return Stream.of(tmp);
+//            }).distinct().collect(Collectors.toList());
+//            for (Map<String, Object> stringObjectMap : checkList) {
+//                Long checkSchoolId = SystemConstant.convertIdToLong(String.valueOf(stringObjectMap.get("schoolId")));
+//                String checkCourseCode = String.valueOf(stringObjectMap.get("courseCode"));
+//                String checkPaperNumber = String.valueOf(stringObjectMap.get("paperNumber"));
+//                SysUser user = (SysUser) map.get(SystemConstant.USER);
+//                user.setSchoolId(schoolId);
+//                commonService.checkData(checkSchoolId, checkCourseCode, checkPaperNumber, user);
+//            }
             map.put("dataCount", dataList.size());
         } catch (Exception e) {
             redisTemplate.opsForValue().set(key, value);