wangliang 4 سال پیش
والد
کامیت
adf941806f

+ 4 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/ExamCardParams.java

@@ -1,5 +1,6 @@
 package com.qmth.distributed.print.business.bean.params;
 
+import com.qmth.distributed.print.business.enums.ExamCardStatusEnum;
 import com.qmth.distributed.print.business.enums.MakeMethodEnum;
 
 /**
@@ -8,7 +9,7 @@ import com.qmth.distributed.print.business.enums.MakeMethodEnum;
 public class ExamCardParams {
 
     private Long id;
-    private String status;
+    private ExamCardStatusEnum status;
     private String examTaskId;
     private String courseCode;
     private String courseName;
@@ -26,11 +27,11 @@ public class ExamCardParams {
         this.id = id;
     }
 
-    public String getStatus() {
+    public ExamCardStatusEnum getStatus() {
         return status;
     }
 
-    public void setStatus(String status) {
+    public void setStatus(ExamCardStatusEnum status) {
         this.status = status;
     }
 

+ 8 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamCard.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.distributed.print.business.base.BaseEntity;
+import com.qmth.distributed.print.business.enums.ExamCardStatusEnum;
 import com.qmth.distributed.print.business.enums.MakeMethodEnum;
 
 import java.io.Serializable;
@@ -48,7 +49,7 @@ public class ExamCard extends BaseEntity implements Serializable {
     /**
      * STAGE-暂存,SUBMIT-提交
      */
-    private String status;
+    private ExamCardStatusEnum status;
 
     public Long getSchoolId() {
         return schoolId;
@@ -90,11 +91,15 @@ public class ExamCard extends BaseEntity implements Serializable {
         this.makeMethod = makeMethod;
     }
 
-    public String getStatus() {
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public ExamCardStatusEnum getStatus() {
         return status;
     }
 
-    public void setStatus(String status) {
+    public void setStatus(ExamCardStatusEnum status) {
         this.status = status;
     }
 }

+ 42 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/ExamCardStatusEnum.java

@@ -0,0 +1,42 @@
+package com.qmth.distributed.print.business.enums;
+
+import java.util.Objects;
+
+/**
+ * @Description: 题卡status enum
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/4/9
+ */
+public enum ExamCardStatusEnum {
+
+    STAGE("暂存"),
+
+    SUBMIT("提交");
+
+    private String title;
+
+    private ExamCardStatusEnum(String title) {
+        this.title = title;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    /**
+     * 状态转换 toName
+     *
+     * @param value
+     * @return
+     */
+    public static String convertToName(String value) {
+        for (ExamCardStatusEnum e : ExamCardStatusEnum.values()) {
+            if (Objects.equals(value.trim(), e.getTitle())) {
+                return e.name();
+            }
+        }
+        return null;
+    }
+}

+ 2 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamCardServiceImpl.java

@@ -22,6 +22,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.Objects;
 
 /**
  * <p>
@@ -178,7 +179,7 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
         if (!basicExamRule.getCustomCard() && MakeMethodEnum.CUST.name().equals(examCardParams.getMakeMethod().name())) {
             throw ExceptionResultEnum.ERROR.exception("未启用客服制卡,不能选择该方式制作题卡");
         }
-        if (StringUtils.isBlank(examCardParams.getStatus())) {
+        if (Objects.isNull(examCardParams.getStatus())) {
             throw ExceptionResultEnum.ERROR.exception("提交方式不能为空");
         }
         if (examCardParams.getExamTaskId() == null) {

+ 9 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncCreatePdfTempleteService.java

@@ -1,12 +1,17 @@
 package com.qmth.distributed.print.business.templete.execute;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qmth.boot.api.exception.ApiException;
-import com.qmth.distributed.print.business.entity.TBTask;
+import com.qmth.distributed.print.business.entity.*;
+import com.qmth.distributed.print.business.enums.ExamCardStatusEnum;
+import com.qmth.distributed.print.business.enums.ExamStatusEnum;
 import com.qmth.distributed.print.business.enums.TaskResultEnum;
 import com.qmth.distributed.print.business.enums.TaskStatusEnum;
+import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.templete.create.AsyncCreateTaskTemplete;
 import com.qmth.distributed.print.business.templete.service.TaskLogicService;
 import com.qmth.distributed.print.common.contant.SystemConstant;
+import com.qmth.distributed.print.common.enums.ExceptionResultEnum;
 import com.qmth.distributed.print.common.util.Result;
 import com.qmth.distributed.print.common.util.ResultUtil;
 import org.slf4j.Logger;
@@ -16,8 +21,8 @@ import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import java.io.IOException;
 import java.text.MessageFormat;
-import java.util.Map;
-import java.util.StringJoiner;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 创建pdf模版
@@ -48,6 +53,7 @@ public class AsyncCreatePdfTempleteService extends AsyncCreateTaskTemplete {
         StringJoiner stringJoinerSummary = new StringJoiner("\n").add(MessageFormat.format("{0}{1}{2}", FORMAT_TIME, BEGIN_TITLE, OBJ_TITLE));
         tbTask.setStatus(TaskStatusEnum.RUNNING);
         try {
+            taskLogicService.executeCreatePdfLogic(map);
             stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", FORMAT_TIME, FINISH_TITLE, 111, FINISH_SIZE));
             tbTask.setResult(TaskResultEnum.SUCCESS);
         } catch (Exception e) {

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

@@ -4,14 +4,14 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.google.gson.Gson;
 import com.qmth.distributed.print.business.bean.dto.excel.UserImportDto;
-import com.qmth.distributed.print.business.entity.BasicSchool;
-import com.qmth.distributed.print.business.entity.SysUser;
-import com.qmth.distributed.print.business.service.BasicSchoolService;
-import com.qmth.distributed.print.business.service.CommonService;
-import com.qmth.distributed.print.business.service.SysUserService;
+import com.qmth.distributed.print.business.entity.*;
+import com.qmth.distributed.print.business.enums.ExamCardStatusEnum;
+import com.qmth.distributed.print.business.enums.ExamStatusEnum;
+import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.templete.service.TaskLogicService;
 import com.qmth.distributed.print.business.util.ServletUtil;
 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 com.qmth.distributed.print.common.util.Base64Util;
 import org.springframework.stereotype.Service;
@@ -22,6 +22,8 @@ import javax.annotation.Resource;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 任务处理逻辑impl
@@ -42,6 +44,30 @@ public class TaskLogicServiceImpl implements TaskLogicService {
     @Resource
     CommonService commonService;
 
+    @Resource
+    ExamDetailService detailService;
+
+    @Resource
+    ExamDetailCourseService detailCourseService;
+
+    @Resource
+    ExamPrintPlanService examPrintPlanService;
+
+    @Resource
+    ExamTaskService examTaskService;
+
+    @Resource
+    ExamTaskDetailService examTaskDetailService;
+
+    @Resource
+    ExamCardService examCardService;
+
+    @Resource
+    ExamCardDetailService examCardDetailService;
+
+    @Resource
+    ExamStudentService examStudentService;
+
     /**
      * 执行导入用户逻辑
      *
@@ -100,7 +126,73 @@ public class TaskLogicServiceImpl implements TaskLogicService {
      * @return
      */
     @Override
+    @Transactional
     public Map<String, Object> executeCreatePdfLogic(Map<String, Object> map) {
-        return null;
+        TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
+        SysUser sysUser = (SysUser) map.get(SystemConstant.USER);
+        //查询printPlan
+        ExamPrintPlan examPrintPlan = examPrintPlanService.getById(tbTask.getPrintPlanId());
+        if (Objects.isNull(examPrintPlan)) {
+            throw ExceptionResultEnum.ERROR.exception("印刷计划为空");
+        }
+
+        //查询examDetail
+        QueryWrapper<ExamDetail> examDetailQueryWrapper = new QueryWrapper<>();
+        examDetailQueryWrapper.lambda().eq(ExamDetail::getSchoolId, sysUser.getSchoolId())
+                .eq(ExamDetail::getPrintPlanId, tbTask.getPrintPlanId());
+        ExamDetail examDetail = detailService.getOne(examDetailQueryWrapper);
+        if (Objects.isNull(examDetail)) {
+            throw ExceptionResultEnum.ERROR.exception("考务计划为空");
+        }
+
+        //查询examDetailCourse
+        QueryWrapper<ExamDetailCourse> examDetailCourseQueryWrapper = new QueryWrapper<>();
+        examDetailCourseQueryWrapper.lambda().eq(ExamDetailCourse::getExamDetailId, examDetail.getId());
+        List<ExamDetailCourse> examDetailCourseList = detailCourseService.list(examDetailCourseQueryWrapper);
+
+        for (ExamDetailCourse examDetailCourse : examDetailCourseList) {
+            //查询试卷
+            QueryWrapper<ExamTask> examTaskQueryWrapper = new QueryWrapper<>();
+            examTaskQueryWrapper.lambda().eq(ExamTask::getSchoolId, sysUser.getSchoolId())
+                    .eq(ExamTask::getCourseCode, examDetailCourse.getCourseCode())
+                    .eq(ExamTask::getCourseName, examDetailCourse.getCourseName())
+                    .eq(ExamTask::getPaperNumber, examDetailCourse.getPaperNumber())
+                    .eq(ExamTask::getEnable, true)
+                    .eq(ExamTask::getStatus, ExamStatusEnum.FINISH);
+            List<ExamTask> examTaskList = examTaskService.list(examTaskQueryWrapper);
+            if (Objects.isNull(examTaskList) || examTaskList.size() == 0) {
+                throw ExceptionResultEnum.ERROR.exception("命题任务为空");
+            }
+            Set<Long> examTaskIds = examTaskList.stream().map(s -> s.getId()).collect(Collectors.toSet());
+
+            QueryWrapper<ExamTaskDetail> examTaskDetailQueryWrapper = new QueryWrapper<>();
+            examTaskDetailQueryWrapper.lambda().in(ExamTaskDetail::getExamTaskId, examTaskIds)
+                    .eq(ExamTaskDetail::getEnable, true);
+            List<ExamTaskDetail> examTaskDetailList = examTaskDetailService.list(examTaskDetailQueryWrapper);
+            Set<Long> examTaskDetailIds = examTaskDetailList.stream().map(s -> s.getId()).collect(Collectors.toSet());
+
+            //查询题卡
+            QueryWrapper<ExamCard> examCardQueryWrapper = new QueryWrapper<>();
+            examCardQueryWrapper.lambda().eq(ExamCard::getSchoolId, sysUser.getSchoolId())
+                    .eq(ExamCard::getCourseCode, examDetailCourse.getCourseCode())
+                    .eq(ExamCard::getCourseName, examDetailCourse.getCourseName())
+                    .eq(ExamCard::getStatus, ExamCardStatusEnum.SUBMIT);
+            List<ExamCard> examCardList = examCardService.list(examCardQueryWrapper);
+            if (Objects.isNull(examCardList) || examCardList.size() == 0) {
+                throw ExceptionResultEnum.ERROR.exception("题卡为空");
+            }
+            Set<Long> examCardIds = examCardList.stream().map(s -> s.getId()).collect(Collectors.toSet());
+
+            QueryWrapper<ExamCardDetail> examCardDetailQueryWrapper = new QueryWrapper<>();
+            examCardDetailQueryWrapper.lambda().in(ExamCardDetail::getCardId, examCardIds);
+            List<ExamCardDetail> examCardDetailList = examCardDetailService.list(examCardDetailQueryWrapper);
+
+            //查询考生
+            QueryWrapper<ExamStudent> examStudentQueryWrapper = new QueryWrapper<>();
+            examStudentQueryWrapper.lambda().eq(ExamStudent::getSchoolId, sysUser.getSchoolId())
+                    .in(ExamStudent::getExamDetailCourseId, examTaskDetailIds);
+            List<ExamStudent> examStudentList = examStudentService.list(examStudentQueryWrapper);
+        }
+        return map;
     }
 }

+ 1 - 0
distributed-print-common/src/main/java/com/qmth/distributed/print/common/contant/SystemConstant.java

@@ -47,6 +47,7 @@ public class SystemConstant {
     public static final String HTTP = "http://";
     public static final String ID = "id";
     public static final String FILE = "file";
+    public static final String SIZE = "size";
     public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd HH:mm:ss";
     public static final int PAGE_NUMBER = 0;
     public static final int PAGE_SIZE = 10000000;

+ 9 - 14
distributed-print/src/main/java/com/qmth/distributed/print/api/SysUserController.java

@@ -15,7 +15,9 @@ import com.qmth.distributed.print.business.entity.SysUser;
 import com.qmth.distributed.print.business.entity.TBTask;
 import com.qmth.distributed.print.business.enums.TaskTypeEnum;
 import com.qmth.distributed.print.business.enums.UploadFileEnum;
-import com.qmth.distributed.print.business.service.*;
+import com.qmth.distributed.print.business.service.BasicAttachmentService;
+import com.qmth.distributed.print.business.service.SysUserService;
+import com.qmth.distributed.print.business.service.TBTaskService;
 import com.qmth.distributed.print.business.templete.execute.AsyncCreatePdfTempleteService;
 import com.qmth.distributed.print.business.templete.execute.AsyncUserImportTempleteService;
 import com.qmth.distributed.print.business.templete.execute.UserImportTempleteService;
@@ -221,24 +223,17 @@ public class SysUserController {
         return ResultUtil.ok();
     }
 
-    @Resource
-    ExamDetailService detailService;
-
-    @Resource
-    ExamDetailCourseService detailCourseService;
-
     @Resource
     AsyncCreatePdfTempleteService asyncCreatePdfTempleteService;
 
     @ApiOperation(value = "异步创建pdf接口")
-    @RequestMapping(value = "/async/createPdf", method = RequestMethod.POST)
+    @RequestMapping(value = "/async/create_pdf", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
-    public Result createPdfAysnc(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file) throws IOException {
-        Map<String, Object> map = tbTaskService.saveTask(file, TaskTypeEnum.USER_IMPORT);
-//        asyncUserImportTempleteService.importTask(map);
-//        TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
-//        return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
-        return ResultUtil.ok();
+    public Result createPdfAysnc(@ApiParam(value = "印刷计划id", required = true) @RequestParam String printPlanId) throws IOException {
+        Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.CREATE_PDF, SystemConstant.convertIdToLong(printPlanId));
+        asyncCreatePdfTempleteService.createPdf(map);
+        TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
+        return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
     }
 }