Browse Source

Merge branch 'dev' of http://git.qmth.com.cn/wangliang/distributed-print-service into dev

xiaof 4 years ago
parent
commit
6cc59aba80
19 changed files with 162 additions and 123 deletions
  1. 12 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamDetailCourse.java
  2. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamPrintPlanMapper.java
  3. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ClientService.java
  4. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailService.java
  5. 2 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamPrintPlanService.java
  6. 82 76
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ClientServiceImpl.java
  7. 5 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ClientStatusServiceImpl.java
  8. 25 17
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java
  9. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPrintPlanServiceImpl.java
  10. 7 7
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TBTaskServiceImpl.java
  11. 5 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncCreatePdfTempleteService.java
  12. 2 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java
  13. 1 0
      distributed-print-business/src/main/resources/db/init-table.sql
  14. 1 3
      distributed-print-business/src/main/resources/mapper/ExamDetailCourseMapper.xml
  15. 5 3
      distributed-print-business/src/main/resources/mapper/ExamPrintPlanMapper.xml
  16. 5 2
      distributed-print/src/main/java/com/qmth/distributed/print/api/ClientController.java
  17. 3 2
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPrintPlanController.java
  18. 1 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java
  19. 1 1
      distributed-print/src/main/java/com/qmth/distributed/print/start/StartRunning.java

+ 12 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamDetailCourse.java

@@ -49,6 +49,18 @@ public class ExamDetailCourse extends BaseEntity implements Serializable {
     @TableField("paper_type")
     @TableField("paper_type")
     private String paperType;
     private String paperType;
 
 
+    @ApiModelProperty(value = "备用题卡json")
+    @TableField("attachment_id")
+    private String attachmentId;
+
+    public String getAttachmentId() {
+        return attachmentId;
+    }
+
+    public void setAttachmentId(String attachmentId) {
+        this.attachmentId = attachmentId;
+    }
+
     public String getPaperType() {
     public String getPaperType() {
         return paperType;
         return paperType;
     }
     }

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamPrintPlanMapper.java

@@ -33,7 +33,7 @@ public interface ExamPrintPlanMapper extends BaseMapper<ExamPrintPlan> {
                                              @Param("endTime") Long endTime,
                                              @Param("endTime") Long endTime,
                                              @Param("orgIds") Set<Long> orgIds);
                                              @Param("orgIds") Set<Long> orgIds);
 
 
-    List<PrintPlanBrief> list(@Param("schoolId") Long schoolId, @Param("source") String source, @Param("status") String[] status, @Param("orgIds") Set<Long> orgIds);
+    List<PrintPlanBrief> list(@Param("schoolId") Long schoolId, @Param("source") String source, @Param("module") String module, @Param("status") String[] status, @Param("orgIds") Set<Long> orgIds);
 
 
     IPage<ClientPrintTaskDto> listClientPrintTask(Page<ClientPrintTaskDto> page, @Param("schoolId") Long schoolId, @Param("machineCode") String machineCode, @Param("printPlanId") String printPlanId, @Param("status") String status, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("examPlace") String examPlace, @Param("examRoom") String examRoom, @Param("examStartTime") Long examStartTime, @Param("examEndTime") Long examEndTime, @Param("isDownload") Boolean isDownload, @Param("validate") Boolean validate, @Param("orgIds") Set<Long> orgIds, @Param("examDetailStatus") String[] examDetailStatus);
     IPage<ClientPrintTaskDto> listClientPrintTask(Page<ClientPrintTaskDto> page, @Param("schoolId") Long schoolId, @Param("machineCode") String machineCode, @Param("printPlanId") String printPlanId, @Param("status") String status, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("examPlace") String examPlace, @Param("examRoom") String examRoom, @Param("examStartTime") Long examStartTime, @Param("examEndTime") Long examEndTime, @Param("isDownload") Boolean isDownload, @Param("validate") Boolean validate, @Param("orgIds") Set<Long> orgIds, @Param("examDetailStatus") String[] examDetailStatus);
 
 

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

@@ -17,7 +17,7 @@ public interface ClientService {
 
 
     Boolean tagPass(Long printPlanId, String courseCode, String courseName, String paperNumber, String machineCode, Boolean isPass, Long userId);
     Boolean tagPass(Long printPlanId, String courseCode, String courseName, String paperNumber, String machineCode, Boolean isPass, Long userId);
 
 
-    Boolean updatePrintProgress(Long examDetailId, String machineCode, Integer printProgress);
+    Boolean updatePrintProgress(Long examDetailId, String machineCode, Integer printProgress, Boolean isPrint);
 
 
     IPage<ClientExamStudentDto> listStudent(Long examDetailId, String ticketNumber, String studentName, String courseCode, Integer pageNumber, Integer pageSize);
     IPage<ClientExamStudentDto> listStudent(Long examDetailId, String ticketNumber, String studentName, String courseCode, Integer pageNumber, Integer pageSize);
 
 

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

@@ -173,7 +173,7 @@ public interface ExamDetailService extends IService<ExamDetail> {
      */
      */
     List<ExaminationExportDto> findExaminationExportDtoDatasource(Map<String, Object> map);
     List<ExaminationExportDto> findExaminationExportDtoDatasource(Map<String, Object> map);
 
 
-    Boolean updatePrintProgress(Long schoolId, Long examDetailId, String machineCode, Integer printProgress);
+    Boolean updatePrintProgress(Long schoolId, Long examDetailId, String machineCode, Integer printProgress, Boolean isPrint);
 
 
     IPage<ClientExamStudentDto> listStudent(Long schoolId, Long examDetailId, String ticketNumber, String studentName, String courseCode, Integer pageNumber, Integer pageSize);
     IPage<ClientExamStudentDto> listStudent(Long schoolId, Long examDetailId, String ticketNumber, String studentName, String courseCode, Integer pageNumber, Integer pageSize);
 
 

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

@@ -46,8 +46,9 @@ public interface ExamPrintPlanService extends IService<ExamPrintPlan> {
      *
      *
      * @return 印刷计划id和名称
      * @return 印刷计划id和名称
      * @param source
      * @param source
+     * @param module
      */
      */
-    List<PrintPlanBrief> printPlanBriefQuery(String source);
+    List<PrintPlanBrief> printPlanBriefQuery(String source, String module);
 
 
 
 
     /**
     /**

+ 82 - 76
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ClientServiceImpl.java

@@ -78,9 +78,9 @@ public class ClientServiceImpl implements ClientService {
     }
     }
 
 
     @Override
     @Override
-    public Boolean updatePrintProgress(Long examDetailId, String machineCode, Integer printProgress) {
+    public Boolean updatePrintProgress(Long examDetailId, String machineCode, Integer printProgress, Boolean isPrint) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        return examDetailService.updatePrintProgress(schoolId, examDetailId, machineCode, printProgress);
+        return examDetailService.updatePrintProgress(schoolId, examDetailId, machineCode, printProgress, isPrint);
     }
     }
 
 
     @Override
     @Override
@@ -157,94 +157,100 @@ public class ClientServiceImpl implements ClientService {
             throw ExceptionResultEnum.ERROR.exception("打印员不能为空");
             throw ExceptionResultEnum.ERROR.exception("打印员不能为空");
         }
         }
         if (isPrint && StringUtils.isNotBlank(examDetail.getPrintUser()) && !examDetail.getPrintUser().equals(printUser)) {
         if (isPrint && StringUtils.isNotBlank(examDetail.getPrintUser()) && !examDetail.getPrintUser().equals(printUser)) {
-            throw ExceptionResultEnum.ERROR.exception("该任务已被[" + printUser + "]占用");
+            throw ExceptionResultEnum.ERROR.exception("该任务已被[" + examDetail.getPrintUser() + "]占用");
         }
         }
 
 
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         List<Map<String, Object>> examDetailCourses = examDetailCourseService.listByExamDetailId(examDetailId);
         List<Map<String, Object>> examDetailCourses = examDetailCourseService.listByExamDetailId(examDetailId);
         Map<String, Object> finalMap = new HashMap<>();
         Map<String, Object> finalMap = new HashMap<>();
+        ExamPrintPlan examPrintPlan = examPrintPlanService.getById(examDetail.getPrintPlanId());
         // 2.取生成的完整的pdf
         // 2.取生成的完整的pdf
-        if (examDetail.getAttachmentId() == null) {
-            throw ExceptionResultEnum.ERROR.exception("考场pdf未生成");
-        }
-
-        BasicAttachment attachment = basicAttachmentService.getById(examDetail.getAttachmentId());
-        if (attachment == null) {
-            throw ExceptionResultEnum.ERROR.exception("考场pdf文件记录异常");
-        }
-
-        Map<String, String> totalPathUrl = commonService.filePreviewByAttachmentId(examDetail.getAttachmentId(), false);
-        if (StringUtils.isBlank(totalPathUrl.get("url"))) {
-            throw ExceptionResultEnum.ERROR.exception("考场pdf文件丢失");
-        }
-
-        finalMap.put("total", totalPathUrl);
+        String printContent = examPrintPlan.getPrintContent();
+        // 是否包含试卷、题卡
+        if(StringUtils.isNotBlank(printContent)) {
+            // 试卷、题卡map
+            Map<String, Object> detailMap = new HashMap<>();
+            // 备用试卷、备用题卡map
+            Map<String, Object> backupMap = new HashMap<>();
+            // 备份数量
+            int backupCount = examPrintPlan.getBackupCount().intValue();
+            // 取考生列表
+            List<Map> studentList = examDetailService.listStudentByExamDetailId(schoolId, examDetailId, "1", "1");
+            if(printContent.contains("PAPER")){
+                if (examDetail.getAttachmentId() == null) {
+                    throw ExceptionResultEnum.ERROR.exception("考场pdf未生成");
+                }
 
 
-        // 3.取学生试卷、题卡、备用试卷、题卡,印品
-        Map<String, Object> detailMap = new HashMap<>();
-        // 3.1取试卷
-        Map<String, Map<String, String>> map = mapCourseUrl(examDetailCourses);
-        // 3.2取考生
-        List<Map> studentList = examDetailService.listStudentByExamDetailId(schoolId, examDetailId, "1", "1");
-        // 3.3生成试卷List
+                BasicAttachment attachment = basicAttachmentService.getById(examDetail.getAttachmentId());
+                if (attachment == null) {
+                    throw ExceptionResultEnum.ERROR.exception("考场pdf文件记录异常");
+                }
 
 
-        detailMap.put("paper", splicePaperContent(studentList, map));
-        // 3.4生成题卡List
+                Map<String, String> totalPathUrl = commonService.filePreviewByAttachmentId(examDetail.getAttachmentId(), false);
+                if (StringUtils.isBlank(totalPathUrl.get("url"))) {
+                    throw ExceptionResultEnum.ERROR.exception("考场pdf文件丢失");
+                }
 
 
-        detailMap.put("card", spliceCardContent(studentList));
+                finalMap.put("total", totalPathUrl);
+                // 取试卷
+                Map<String, Map<String, String>> map = mapCourseUrl(examDetailCourses);
+                // 生成试卷List
+                detailMap.put("paper", splicePaperContent(studentList, map));
+                //试卷
+                List<Map<String, String>> keyMaps = studentList.stream().map(m -> {
+                    Map<String, String> stringMap = new HashMap<>();
+                    stringMap.put("courseCode", m.get("courseCode").toString());
+                    stringMap.put("courseName", m.get("courseName").toString());
+                    stringMap.put("paperNumber", m.get("paperNumber").toString());
+                    stringMap.put("paperType", m.get("paperType").toString());
+                    return stringMap;
+                }).distinct().collect(Collectors.toList());
+                List<ClientPrintBackupDataDto> paperBackupList = new ArrayList<>();
+                for (Map<String, String> keyMap : keyMaps) {
+                    for (int i = 0; i < backupCount; i++) {
+                        ClientPrintBackupDataDto clientPrintBackupDataDto = new ClientPrintBackupDataDto();
+                        clientPrintBackupDataDto.setCourseCode(keyMap.get("courseCode"));
+                        clientPrintBackupDataDto.setCourseName(keyMap.get("courseName"));
+                        clientPrintBackupDataDto.setPaperNumber(keyMap.get("paperNumber"));
+                        clientPrintBackupDataDto.setPaperType(keyMap.get("paperType"));
+                        StringJoiner sj = new StringJoiner(SystemConstant.DELIMITER);
+                        String key = sj.add(keyMap.get("courseCode")).add(keyMap.get("paperNumber")).add(keyMap.get("paperType")).toString();
+                        clientPrintBackupDataDto.setMd5(map.get(key).get("md5"));
+                        clientPrintBackupDataDto.setUrl(map.get(key).get("url"));
+                        paperBackupList.add(clientPrintBackupDataDto);
+                    }
+                }
+                backupMap.put("paper", paperBackupList);
 
 
-        //3.4备用试卷、题卡
-        ExamPrintPlan examPrintPlan = examPrintPlanService.getById(examDetail.getPrintPlanId());
-        Map<String, Object> backupMap = new HashMap<>();
-        int backupCount = examPrintPlan.getBackupCount().intValue();
-        //试卷
-        List<Map<String, String>> keyMaps = studentList.stream().map(m -> {
-            Map<String, String> stringMap = new HashMap<>();
-            stringMap.put("courseCode", m.get("courseCode").toString());
-            stringMap.put("courseName", m.get("courseName").toString());
-            stringMap.put("paperNumber", m.get("paperNumber").toString());
-            stringMap.put("paperType", m.get("paperType").toString());
-            return stringMap;
-        }).distinct().collect(Collectors.toList());
-        List<ClientPrintBackupDataDto> paperBackupList = new ArrayList<>();
-        for (Map<String, String> keyMap : keyMaps) {
-            for (int i = 0; i < backupCount; i++) {
-                ClientPrintBackupDataDto clientPrintBackupDataDto = new ClientPrintBackupDataDto();
-                clientPrintBackupDataDto.setCourseCode(keyMap.get("courseCode"));
-                clientPrintBackupDataDto.setCourseName(keyMap.get("courseName"));
-                clientPrintBackupDataDto.setPaperNumber(keyMap.get("paperNumber"));
-                clientPrintBackupDataDto.setPaperType(keyMap.get("paperType"));
-                StringJoiner sj = new StringJoiner(SystemConstant.DELIMITER);
-                String key = sj.add(keyMap.get("courseCode")).add(keyMap.get("paperNumber")).add(keyMap.get("paperType")).toString();
-                clientPrintBackupDataDto.setMd5(map.get(key).get("md5"));
-                clientPrintBackupDataDto.setUrl(map.get(key).get("url"));
-                paperBackupList.add(clientPrintBackupDataDto);
             }
             }
-        }
 
 
-        backupMap.put("paper", paperBackupList);
-
-        // 备用题卡
-        List<ClientPrintBackupDataDto> cardBackupList = new ArrayList<>();
-        for (Map<String, Object> examDetailCours : examDetailCourses) {
-            String attachmentIds = examDetailCours.get("attachmentIds").toString();
-            JSONObject jsonObject = JSONObject.parseObject(attachmentIds);
-            List<Map> backupCards = JSONObject.parseArray(JSONObject.toJSONString(jsonObject.get("card")), Map.class);
-            for (Map backupCard : backupCards) {
-                ClientPrintBackupDataDto clientPrintBackupDataDto = new ClientPrintBackupDataDto();
-                clientPrintBackupDataDto.setCourseCode(examDetailCours.get("courseCode").toString());
-                clientPrintBackupDataDto.setCourseName(examDetailCours.get("courseName").toString());
-                clientPrintBackupDataDto.setPaperNumber(examDetailCours.get("paperNumber").toString());
-                clientPrintBackupDataDto.setPaperType(backupCard.get("name").toString());
-                Map<String, String> urlMap = commonService.filePreviewByAttachmentId(Long.valueOf(backupCard.get("attachmentId").toString()), false);
-                clientPrintBackupDataDto.setMd5(urlMap.get("md5"));
-                clientPrintBackupDataDto.setUrl(urlMap.get("url"));
-                cardBackupList.add(clientPrintBackupDataDto);
+            if(printContent.contains("CARD")){
+                // 生成题卡List
+                detailMap.put("card", spliceCardContent(studentList));
+
+                // 备用题卡
+                List<ClientPrintBackupDataDto> cardBackupList = new ArrayList<>();
+                for (Map<String, Object> examDetailCours : examDetailCourses) {
+                    String attachmentIds = examDetailCours.get("cardAttachmentIds").toString();
+                    JSONObject jsonObject = JSONObject.parseObject(attachmentIds);
+                    List<Map> backupCards = JSONObject.parseArray(JSONObject.toJSONString(jsonObject.get("card")), Map.class);
+                    for (Map backupCard : backupCards) {
+                        ClientPrintBackupDataDto clientPrintBackupDataDto = new ClientPrintBackupDataDto();
+                        clientPrintBackupDataDto.setCourseCode(examDetailCours.get("courseCode").toString());
+                        clientPrintBackupDataDto.setCourseName(examDetailCours.get("courseName").toString());
+                        clientPrintBackupDataDto.setPaperNumber(examDetailCours.get("paperNumber").toString());
+                        clientPrintBackupDataDto.setPaperType(backupCard.get("name").toString());
+                        Map<String, String> urlMap = commonService.filePreviewByAttachmentId(Long.valueOf(backupCard.get("attachmentId").toString()), false);
+                        clientPrintBackupDataDto.setMd5(urlMap.get("md5"));
+                        clientPrintBackupDataDto.setUrl(urlMap.get("url"));
+                        cardBackupList.add(clientPrintBackupDataDto);
+                    }
+                }
+                backupMap.put("card", cardBackupList);
             }
             }
+            detailMap.put("backup", backupMap);
+            finalMap.put("detail", detailMap);
         }
         }
-        backupMap.put("card", cardBackupList);
-        detailMap.put("backup", backupMap);
-        finalMap.put("detail", detailMap);
 
 
         //3.5
         //3.5
         String variableContent = examPrintPlan.getVariableContent();
         String variableContent = examPrintPlan.getVariableContent();

+ 5 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ClientStatusServiceImpl.java

@@ -26,6 +26,7 @@ public class ClientStatusServiceImpl extends ServiceImpl<ClientStatusMapper, Cli
     @Override
     @Override
     public Boolean tagPass(Long schoolId, Long printPlanId, String courseCode, String courseName, String paperNumber, String machineCode, Boolean isPass, Long userId) {
     public Boolean tagPass(Long schoolId, Long printPlanId, String courseCode, String courseName, String paperNumber, String machineCode, Boolean isPass, Long userId) {
         List<ExamDetailCourse> examDetailCourses = examDetailCourseService.listByPrintPlanIdAndCourseCodeAndPaperNumber(schoolId, printPlanId, courseCode, paperNumber);
         List<ExamDetailCourse> examDetailCourses = examDetailCourseService.listByPrintPlanIdAndCourseCodeAndPaperNumber(schoolId, printPlanId, courseCode, paperNumber);
+        long currentTime = System.currentTimeMillis();
         for (ExamDetailCourse examDetailCours : examDetailCourses) {
         for (ExamDetailCourse examDetailCours : examDetailCourses) {
             QueryWrapper<ClientStatus> queryWrapper = new QueryWrapper<>();
             QueryWrapper<ClientStatus> queryWrapper = new QueryWrapper<>();
             queryWrapper.lambda().eq(ClientStatus::getSchoolId, schoolId).eq(ClientStatus::getExamDetailId, examDetailCours.getExamDetailId()).eq(ClientStatus::getPrintPlanId, printPlanId).eq(ClientStatus::getCourseCode, courseCode).eq(ClientStatus::getPaperNumber, paperNumber).eq(ClientStatus::getMachineCode, machineCode);
             queryWrapper.lambda().eq(ClientStatus::getSchoolId, schoolId).eq(ClientStatus::getExamDetailId, examDetailCours.getExamDetailId()).eq(ClientStatus::getPrintPlanId, printPlanId).eq(ClientStatus::getCourseCode, courseCode).eq(ClientStatus::getPaperNumber, paperNumber).eq(ClientStatus::getMachineCode, machineCode);
@@ -33,10 +34,10 @@ public class ClientStatusServiceImpl extends ServiceImpl<ClientStatusMapper, Cli
             if(clientStatus != null){
             if(clientStatus != null){
                 clientStatus.setPass(isPass);
                 clientStatus.setPass(isPass);
                 clientStatus.setUpdateId(userId);
                 clientStatus.setUpdateId(userId);
-                clientStatus.setUpdateTime(System.currentTimeMillis());
+                clientStatus.setUpdateTime(currentTime);
                 // 合格,更新打印时间
                 // 合格,更新打印时间
                 if(isPass){
                 if(isPass){
-                    clientStatus.setTryTime(System.currentTimeMillis());
+                    clientStatus.setTryTime(currentTime);
                 }
                 }
                 this.updateById(clientStatus);
                 this.updateById(clientStatus);
             } else {
             } else {
@@ -50,11 +51,11 @@ public class ClientStatusServiceImpl extends ServiceImpl<ClientStatusMapper, Cli
                 clientStatus.setCourseName(courseName);
                 clientStatus.setCourseName(courseName);
                 clientStatus.setPaperNumber(paperNumber);
                 clientStatus.setPaperNumber(paperNumber);
                 clientStatus.setTry(true);
                 clientStatus.setTry(true);
-                clientStatus.setTryTime(System.currentTimeMillis());
+                clientStatus.setTryTime(currentTime);
                 clientStatus.setPass(isPass);
                 clientStatus.setPass(isPass);
                 clientStatus.setDownload(false);
                 clientStatus.setDownload(false);
                 clientStatus.setCreateId(userId);
                 clientStatus.setCreateId(userId);
-                clientStatus.setCreateTime(System.currentTimeMillis());
+                clientStatus.setCreateTime(currentTime);
                 this.save(clientStatus);
                 this.save(clientStatus);
             }
             }
         }
         }

+ 25 - 17
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -661,7 +661,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
 
 
     @Transactional
     @Transactional
     @Override
     @Override
-    public Boolean updatePrintProgress(Long schoolId, Long examDetailId, String machineCode, Integer printProgress) {
+    public Boolean updatePrintProgress(Long schoolId, Long examDetailId, String machineCode, Integer printProgress, Boolean isPrint) {
 
 
         ExamDetail examDetail = this.getById(examDetailId);
         ExamDetail examDetail = this.getById(examDetailId);
         // 撤回提示
         // 撤回提示
@@ -669,23 +669,31 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
                 || ExamDetailStatusEnum.READY.name().equals(examDetail.getStatus())){
                 || ExamDetailStatusEnum.READY.name().equals(examDetail.getStatus())){
             throw ExceptionResultEnum.ERROR.exception("该任务已被撤回");
             throw ExceptionResultEnum.ERROR.exception("该任务已被撤回");
         }
         }
-        // 更新考场进度、状态、打印结束时间
-        UpdateWrapper<ExamDetail> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.lambda().set(ExamDetail::getPrintProgress, printProgress).set(ExamDetail::getPrintEndTime, System.currentTimeMillis()).set(ExamDetail::getStatus, ExamDetailStatusEnum.FINISH).eq(ExamDetail::getId, examDetailId);
-        this.update(updateWrapper);
 
 
-        // 记录机器打印数量
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        ClientPrintData clientPrintData = new ClientPrintData();
-        clientPrintData.setId(SystemConstant.getDbUuid());
-        clientPrintData.setSchoolId(schoolId);
-        clientPrintData.setExamDetailId(examDetailId);
-        clientPrintData.setMachineCode(machineCode);
-        clientPrintData.setPagesA3(examDetail.getPagesA3());
-        clientPrintData.setPagesA4(examDetail.getPagesA4());
-        clientPrintData.setCreateId(sysUser.getId());
-        clientPrintData.setCreateTime(System.currentTimeMillis());
-        clientPrintDataService.save(clientPrintData);
+        if (isPrint) {
+            // 更新考场进度、状态、打印结束时间
+            UpdateWrapper<ExamDetail> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.lambda().set(ExamDetail::getPrintProgress, printProgress).set(ExamDetail::getPrintEndTime, System.currentTimeMillis()).set(ExamDetail::getStatus, ExamDetailStatusEnum.FINISH).eq(ExamDetail::getId, examDetailId);
+            this.update(updateWrapper);
+
+            // 记录机器打印数量
+            SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+            ClientPrintData clientPrintData = new ClientPrintData();
+            clientPrintData.setId(SystemConstant.getDbUuid());
+            clientPrintData.setSchoolId(schoolId);
+            clientPrintData.setExamDetailId(examDetailId);
+            clientPrintData.setMachineCode(machineCode);
+            clientPrintData.setPagesA3(examDetail.getPagesA3());
+            clientPrintData.setPagesA4(examDetail.getPagesA4());
+            clientPrintData.setCreateId(sysUser.getId());
+            clientPrintData.setCreateTime(System.currentTimeMillis());
+            clientPrintDataService.save(clientPrintData);
+        } else {
+            // 更新打印结束时间
+            UpdateWrapper<ExamDetail> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.lambda().set(ExamDetail::getPrintEndTime, System.currentTimeMillis()).eq(ExamDetail::getId, examDetailId);
+            this.update(updateWrapper);
+        }
         return true;
         return true;
     }
     }
 
 

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

@@ -94,7 +94,7 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
 
 
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     @Override
     @Override
-    public List<PrintPlanBrief> printPlanBriefQuery(String source) {
+    public List<PrintPlanBrief> printPlanBriefQuery(String source, String module) {
         /*List<PrintPlanBrief> printPlanBriefList = new ArrayList<>();
         /*List<PrintPlanBrief> printPlanBriefList = new ArrayList<>();
         List<ExamPrintPlan> examPrintPlanList = this.list();
         List<ExamPrintPlan> examPrintPlanList = this.list();
         for (ExamPrintPlan examPrintPlan : examPrintPlanList) {
         for (ExamPrintPlan examPrintPlan : examPrintPlanList) {
@@ -106,7 +106,7 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Set<Long> orgIds = commonService.listSubOrgIds(null);
         Set<Long> orgIds = commonService.listSubOrgIds(null);
         String[] status = {PrintPlanStatusEnum.READY.name(), PrintPlanStatusEnum.PRINTING.name(),PrintPlanStatusEnum.PRINT_FINISH.name()};
         String[] status = {PrintPlanStatusEnum.READY.name(), PrintPlanStatusEnum.PRINTING.name(),PrintPlanStatusEnum.PRINT_FINISH.name()};
-        List<PrintPlanBrief> list = this.baseMapper.list(schoolId, source, status, orgIds);
+        List<PrintPlanBrief> list = this.baseMapper.list(schoolId, source, module, status, orgIds);
         return list;
         return list;
     }
     }
 
 

+ 7 - 7
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TBTaskServiceImpl.java

@@ -317,13 +317,13 @@ public class TBTaskServiceImpl extends ServiceImpl<TBTaskMapper, TBTask> impleme
     @Transactional
     @Transactional
     public void updateStatus() throws IOException {
     public void updateStatus() throws IOException {
         //不是自动生成pdf的全部改为失败
         //不是自动生成pdf的全部改为失败
-        UpdateWrapper<TBTask> tbTaskUpdateWrapper = new UpdateWrapper<>();
-        tbTaskUpdateWrapper.lambda().set(TBTask::getStatus, TaskStatusEnum.FINISH)
-                .set(TBTask::getSummary, "系统提交:网络异常或程序异常中断!")
-                .set(TBTask::getResult, TaskResultEnum.ERROR)
-                .isNotNull(TBTask::getStatus).ne(TBTask::getStatus, TaskStatusEnum.FINISH)
-                .ne(TBTask::getType, TaskTypeEnum.CREATE_PDF);
-        this.update(tbTaskUpdateWrapper);
+//        UpdateWrapper<TBTask> tbTaskUpdateWrapper = new UpdateWrapper<>();
+//        tbTaskUpdateWrapper.lambda().set(TBTask::getStatus, TaskStatusEnum.FINISH)
+//                .set(TBTask::getSummary, "系统提交:网络异常或程序异常中断!")
+//                .set(TBTask::getResult, TaskResultEnum.ERROR)
+//                .isNotNull(TBTask::getStatus).ne(TBTask::getStatus, TaskStatusEnum.FINISH)
+//                .ne(TBTask::getType, TaskTypeEnum.CREATE_PDF);
+//        this.update(tbTaskUpdateWrapper);
 
 
         QueryWrapper<TBTask> tbTaskQueryWrapper = new QueryWrapper<>();
         QueryWrapper<TBTask> tbTaskQueryWrapper = new QueryWrapper<>();
         tbTaskQueryWrapper.lambda().eq(TBTask::getType, TaskTypeEnum.CREATE_PDF)
         tbTaskQueryWrapper.lambda().eq(TBTask::getType, TaskTypeEnum.CREATE_PDF)

+ 5 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncCreatePdfTempleteService.java

@@ -50,8 +50,12 @@ public class AsyncCreatePdfTempleteService extends AsyncCreateTaskTemplete {
     public Result createPdf(Map<String, Object> map, CallbackCreatePdf callbackCreatePdf) throws IOException {
     public Result createPdf(Map<String, Object> map, CallbackCreatePdf callbackCreatePdf) throws IOException {
         TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
         TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
         StringJoiner stringJoinerSummary = new StringJoiner("\n").add(MessageFormat.format("{0}{1}{2}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), BEGIN_TITLE, OBJ_TITLE));
         StringJoiner stringJoinerSummary = new StringJoiner("\n").add(MessageFormat.format("{0}{1}{2}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), BEGIN_TITLE, OBJ_TITLE));
-        tbTask.setStatus(TaskStatusEnum.RUNNING);
         TBTaskService tbTaskService = SpringContextHolder.getBean(TBTaskService.class);
         TBTaskService tbTaskService = SpringContextHolder.getBean(TBTaskService.class);
+        TBTask dbTask = tbTaskService.getById(tbTask.getId());
+        if (dbTask.getStatus() == TaskStatusEnum.FINISH && Objects.nonNull(dbTask.getResult())) {//无需重新生成pdf
+            return ResultUtil.ok();
+        }
+        tbTask.setStatus(TaskStatusEnum.RUNNING);
         tbTaskService.updateById(tbTask);
         tbTaskService.updateById(tbTask);
         try {
         try {
             TaskLogicService taskLogicService = SpringContextHolder.getBean(TaskLogicService.class);
             TaskLogicService taskLogicService = SpringContextHolder.getBean(TaskLogicService.class);

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

@@ -298,10 +298,11 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                         list[3].addAll(examStudentTempPdfList);
                         list[3].addAll(examStudentTempPdfList);
                         examStudentService.saveOrUpdateBatch(examStudentList);
                         examStudentService.saveOrUpdateBatch(examStudentList);
                         jsonObject.put("card", jsonArray);
                         jsonObject.put("card", jsonArray);
-                        examCardDetail.setAttachmentId(jsonObject.toJSONString());
+                        examDetailCourse.setAttachmentId(jsonObject.toJSONString());
                     }
                     }
                     examCardDetailService.saveOrUpdateBatch(examCardDetailList);
                     examCardDetailService.saveOrUpdateBatch(examCardDetailList);
                 }
                 }
+                examDetailCourse.setAttachmentId(jsonObject.toJSONString());
                 examTaskDetailService.saveOrUpdateBatch(examTaskDetailList);
                 examTaskDetailService.saveOrUpdateBatch(examTaskDetailList);
             }
             }
             detailCourseService.saveOrUpdateBatch(examDetailCourseList);
             detailCourseService.saveOrUpdateBatch(examDetailCourseList);

+ 1 - 0
distributed-print-business/src/main/resources/db/init-table.sql

@@ -346,6 +346,7 @@ CREATE TABLE `exam_detail_course`  (
   `update_id` bigint(20) NULL DEFAULT NULL,
   `update_id` bigint(20) NULL DEFAULT NULL,
   `update_time` bigint(20) NULL DEFAULT NULL,
   `update_time` bigint(20) NULL DEFAULT NULL,
   `paper_type` varchar(30) DEFAULT NULL COMMENT '当前试卷类型',
   `paper_type` varchar(30) DEFAULT NULL COMMENT '当前试卷类型',
+  `attachment_id` mediumtext CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT '备用题卡json',
   PRIMARY KEY (`id`) USING BTREE
   PRIMARY KEY (`id`) USING BTREE
 ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '考务数据(考场关联科目)' ROW_FORMAT = Dynamic;
 ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '考务数据(考场关联科目)' ROW_FORMAT = Dynamic;
 
 

+ 1 - 3
distributed-print-business/src/main/resources/mapper/ExamDetailCourseMapper.xml

@@ -24,7 +24,7 @@
             a.course_name courseName,
             a.course_name courseName,
             a.paper_number paperNumber,
             a.paper_number paperNumber,
             c.paper_attachment_ids paperAttachmentIds,
             c.paper_attachment_ids paperAttachmentIds,
-            d.attachment_id attachmentIds,
+            a.attachment_id cardAttachmentIds,
             b.id examTaskId,
             b.id examTaskId,
             c.exposed_paper_type exposedPaperType,
             c.exposed_paper_type exposedPaperType,
             c.unexposed_paper_type unexposedPaperType
             c.unexposed_paper_type unexposedPaperType
@@ -36,8 +36,6 @@
                 AND a.paper_number = b.paper_number
                 AND a.paper_number = b.paper_number
                 LEFT JOIN
                 LEFT JOIN
             exam_task_detail c ON b.id = c.exam_task_id
             exam_task_detail c ON b.id = c.exam_task_id
-                LEFT JOIN
-            exam_card_detail d ON c.card_id = d.card_id
         WHERE
         WHERE
             a.exam_detail_id = #{examDetailId} AND b.status = #{status}
             a.exam_detail_id = #{examDetailId} AND b.status = #{status}
     </select>
     </select>

+ 5 - 3
distributed-print-business/src/main/resources/mapper/ExamPrintPlanMapper.xml

@@ -89,7 +89,9 @@
                 and a.school_id = #{schoolId}
                 and a.school_id = #{schoolId}
             </if>
             </if>
             <if test="source == 'client'">
             <if test="source == 'client'">
-                AND LOCATE('PAPER', print_content) > 0
+                <if test="module == 'try'">
+                    AND LOCATE('PAPER', print_content) > 0
+                </if>
                 AND a.status IN
                 AND a.status IN
                 <foreach collection="status" item="item" index="index" open="(" separator="," close=")">
                 <foreach collection="status" item="item" index="index" open="(" separator="," close=")">
                     #{item}
                     #{item}
@@ -166,7 +168,7 @@
                 AND b.machine_code = #{machineCode}
                 AND b.machine_code = #{machineCode}
             GROUP BY a.exam_detail_id , c.print_plan_id) c ON a.id = c.print_plan_id and b.id = c.exam_detail_id
             GROUP BY a.exam_detail_id , c.print_plan_id) c ON a.id = c.print_plan_id and b.id = c.exam_detail_id
                 LEFT JOIN
                 LEFT JOIN
-            sys_user e ON b.print_user = e.login_name
+            sys_user e ON a.school_id = e.school_id and b.print_user = e.login_name
                 LEFT JOIN
                 LEFT JOIN
             sys_user d ON a.create_id = d.id
             sys_user d ON a.create_id = d.id
         <where>
         <where>
@@ -259,7 +261,7 @@
                 AND b.machine_code = #{machineCode}
                 AND b.machine_code = #{machineCode}
         GROUP BY a.exam_detail_id , c.print_plan_id) c ON a.id = c.print_plan_id and b.id = c.exam_detail_id
         GROUP BY a.exam_detail_id , c.print_plan_id) c ON a.id = c.print_plan_id and b.id = c.exam_detail_id
             LEFT JOIN
             LEFT JOIN
-        sys_user e ON b.print_user = e.login_name
+        sys_user e ON a.school_id = e.school_id and b.print_user = e.login_name
             LEFT JOIN
             LEFT JOIN
         sys_user d ON a.create_id = d.id
         sys_user d ON a.create_id = d.id
         <where>
         <where>

+ 5 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/ClientController.java

@@ -1,5 +1,6 @@
 package com.qmth.distributed.print.api;
 package com.qmth.distributed.print.api;
 
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.annotation.Aac;
@@ -320,6 +321,7 @@ public class ClientController {
                                     @RequestParam("isPrint") Boolean isPrint,
                                     @RequestParam("isPrint") Boolean isPrint,
                                     @RequestParam(value = "printUser", required = false) String printUser) {
                                     @RequestParam(value = "printUser", required = false) String printUser) {
         Map<String, Object> map = clientService.getPrintData(examDetailId, machineCode, isPrint, printUser);
         Map<String, Object> map = clientService.getPrintData(examDetailId, machineCode, isPrint, printUser);
+        System.out.println("result:"+ JSONObject.toJSONString(map));
         return ResultUtil.ok(map);
         return ResultUtil.ok(map);
     }
     }
 
 
@@ -392,8 +394,9 @@ public class ClientController {
     @RequestMapping(value = "/print/update_progress", method = RequestMethod.POST)
     @RequestMapping(value = "/print/update_progress", method = RequestMethod.POST)
     public Result updateProgress(@RequestParam("examDetailId") Long examDetailId,
     public Result updateProgress(@RequestParam("examDetailId") Long examDetailId,
                                  @RequestParam("machineCode") String machineCode,
                                  @RequestParam("machineCode") String machineCode,
-                                 @RequestParam("printProgress") Integer printProgress) {
-        Boolean isSuccess = clientService.updatePrintProgress(examDetailId, machineCode, printProgress);
+                                 @RequestParam("printProgress") Integer printProgress,
+                                 @RequestParam("isPrint") Boolean isPrint) {
+        Boolean isSuccess = clientService.updatePrintProgress(examDetailId, machineCode, printProgress, isPrint);
         return ResultUtil.ok(isSuccess);
         return ResultUtil.ok(isSuccess);
     }
     }
 
 

+ 3 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPrintPlanController.java

@@ -86,8 +86,9 @@ public class ExamPrintPlanController {
     @ApiOperation(value = "印刷计划模糊查询")
     @ApiOperation(value = "印刷计划模糊查询")
     @RequestMapping(value = "/query", method = RequestMethod.POST)
     @RequestMapping(value = "/query", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
     @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
-    public Result findPrintPlanQuery(@RequestParam(value = "source", required = false) String source) {
-        return ResultUtil.ok(examPrintPlanService.printPlanBriefQuery(source));
+    public Result findPrintPlanQuery(@RequestParam(value = "source", required = false) String source,
+                                     @RequestParam(value = "module", required = false) String module) {
+        return ResultUtil.ok(examPrintPlanService.printPlanBriefQuery(source, module));
     }
     }
 
 
     @ApiOperation(value = "按类型查询模板")
     @ApiOperation(value = "按类型查询模板")

+ 1 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java

@@ -186,6 +186,7 @@ public class SysController {
      */
      */
     @ApiOperation(value = "发送验证码")
     @ApiOperation(value = "发送验证码")
     @RequestMapping(value = "/get_verify_code", method = RequestMethod.POST)
     @RequestMapping(value = "/get_verify_code", method = RequestMethod.POST)
+    @Aac(auth = BOOL.FALSE)
     public Object getverifyCode(@RequestBody LoginParam loginParam) {
     public Object getverifyCode(@RequestBody LoginParam loginParam) {
         String loginName = loginParam.getLoginName();
         String loginName = loginParam.getLoginName();
         String password = loginParam.getPassword();
         String password = loginParam.getPassword();

+ 1 - 1
distributed-print/src/main/java/com/qmth/distributed/print/start/StartRunning.java

@@ -43,7 +43,7 @@ public class StartRunning implements CommandLineRunner {
         SystemConstant.initTempFiles();
         SystemConstant.initTempFiles();
         orgCenterDataDisposeService.updateSchoolInfo();
         orgCenterDataDisposeService.updateSchoolInfo();
 
 
-//        taskService.updateStatus();
+        taskService.updateStatus();
 
 
         log.info("增加学校信息同步定时任务 start");
         log.info("增加学校信息同步定时任务 start");
         Map schoolJobMap = new HashMap();
         Map schoolJobMap = new HashMap();