浏览代码

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

xiaof 4 年之前
父节点
当前提交
9683d08fdc

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

@@ -105,6 +105,18 @@ public class TBTask implements Serializable {
     @TableField(value = "remark")
     private String remark;
 
+    @ApiModelProperty(value = "实体名称")
+    @TableField(value = "obj_name")
+    private String objName;
+
+    public String getObjName() {
+        return objName;
+    }
+
+    public void setObjName(String objName) {
+        this.objName = objName;
+    }
+
     public String getRemark() {
         return remark;
     }

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

@@ -263,7 +263,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             } else {//修改用户
                 List<SysUserRole> sysUserRoleList = cacheService.userRolePrivilegeCache(sysUser.getId());
                 List<Long> userRolesList = Arrays.asList(userSaveParams.getRoleIds());
-                List<Long> dbUserRolesList = sysUserRoleList.stream().map(SysUserRole::getRoleId).distinct().collect(Collectors.toList());
+                Set<Long> dbUserRolesList = sysUserRoleList.stream().map(SysUserRole::getRoleId).collect(Collectors.toSet());
                 int count = (int) dbUserRolesList.stream().filter(s -> userRolesList.contains(s)).count();
                 SysUser dbUser = sysUserService.getById(sysUser.getId());
                 sysUser.setUpdateInfo(requestUser.getId());

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

@@ -24,7 +24,6 @@ import com.qmth.distributed.print.common.contant.SystemConstant;
 import com.qmth.distributed.print.common.enums.ExceptionResultEnum;
 import com.qmth.distributed.print.common.util.FileUtil;
 import com.qmth.distributed.print.common.util.HexUtils;
-import com.qmth.distributed.print.common.util.JacksonUtil;
 import com.qmth.distributed.print.common.util.ResultUtil;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
@@ -46,7 +45,6 @@ import java.io.*;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 /**
  * @Description: 任务处理逻辑impl
@@ -110,6 +108,8 @@ public class TaskLogicServiceImpl implements TaskLogicService {
     @Resource
     RedisTemplate<String, Object> redisTemplate;
 
+    @Resource
+    BasicExamRuleService basicExamRuleService;
 
     /**
      * 创建pdf逻辑
@@ -141,6 +141,10 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             }
 
             BasicSchool basicSchool = cacheService.schoolCache(examPrintPlan.getSchoolId());
+            BasicExamRule basicExamRule = basicExamRuleService.getBySchoolId(schoolId);
+            if (Objects.isNull(basicExamRule)) {
+                throw ExceptionResultEnum.ERROR.exception("考务规则为空");
+            }
 
             //查询examDetail
             QueryWrapper<ExamDetail> examDetailQueryWrapper = new QueryWrapper<>();
@@ -156,6 +160,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             attachmentIds = Objects.isNull(attachmentIds) ? attachmentIds = new HashSet<>() : attachmentIds;
             ftlList = Objects.isNull(ftlList) ? ftlList = new HashSet<>() : ftlList;
             for (ExamDetail examDetail : examDetailList) {
+                tbTask.setObjName(examDetail.getExamRoom());
                 //查询examDetailCourse
                 QueryWrapper<ExamDetailCourse> examDetailCourseQueryWrapper = new QueryWrapper<>();
                 if (Objects.nonNull(examDetailCourseIds) && examDetailCourseIds.size() > 0) {
@@ -196,7 +201,8 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                                 .eq(ExamTask::getCourseName, examDetailCourse.getCourseName())
                                 .eq(ExamTask::getPaperNumber, examDetailCourse.getPaperNumber())
                                 .eq(ExamTask::getEnable, true)
-                                .eq(ExamTask::getStatus, ExamStatusEnum.FINISH);
+                                .eq(ExamTask::getStatus, ExamStatusEnum.FINISH)
+                                .orderByAsc(ExamTask::getPaperNumber);
                         List<ExamTask> examTaskList = examTaskService.list(examTaskQueryWrapper);
                         if (Objects.isNull(examTaskList) || examTaskList.size() == 0) {
                             throw ExceptionResultEnum.ERROR.exception("命题任务为空");
@@ -237,7 +243,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                                 String studentContent = cardContent;
 
                                 for (int i = 1; i <= examPrintPlan.getBackupCount(); i++) {
-                                    basicAttachmentList.add(createPdfUtil.cardHtml(cardContent, paperType, examDetail, examDetailCourse, examCard, jsonArray, sysUser.getId(), cardPdfTempList));
+                                    basicAttachmentList.add(createPdfUtil.cardHtml(String.format("%02d", i), cardContent, paperType, examDetail, examDetailCourse, examCard, jsonArray, sysUser.getId(), cardPdfTempList));
                                 }
                                 cardPdfList.addAll(cardPdfTempList);
 
@@ -292,9 +298,13 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                     }
                     detailCourseService.saveOrUpdateBatch(examDetailCourseList);
                     //合并pdf
-                    basicAttachmentList.add(createPdfUtil.mergePdf(tbTask, examDetail, sysUser.getId(), schoolId, variablePdfList, ordinaryPdfList, paperPdfList, examStudentPdfList, backupPaperPdfList, cardPdfList));
+                    basicAttachmentList.add(createPdfUtil.mergePdf(basicExamRule, tbTask, examDetail, sysUser.getId(), schoolId, variablePdfList, ordinaryPdfList, paperPdfList, examStudentPdfList, backupPaperPdfList, cardPdfList));
                 }
             }
+            if (PrintMethodEnum.AUTO == basicExamRule.getPrintMethod()) {
+                examPrintPlan.setStatus(PrintPlanStatusEnum.PRINTING);
+                examPrintPlanService.updateById(examPrintPlan);
+            }
             map.computeIfAbsent("size", v -> examDetailList.size());
             //最后一步删除附件
             createPdfUtil.deleteAttachment(attachmentIds, ftlList);

+ 4 - 7
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/CreatePdfUtil.java

@@ -57,9 +57,6 @@ public class CreatePdfUtil {
     @Resource
     ExamDetailService detailService;
 
-    @Resource
-    BasicExamRuleService basicExamRuleService;
-
     /**
      * 创建登记表
      *
@@ -373,7 +370,7 @@ public class CreatePdfUtil {
      * @return
      * @throws IOException
      */
-    public BasicAttachment mergePdf(TBTask tbTask, ExamDetail examDetail, Long userId, Long schoolId, List<PdfDto>... list) throws IOException {
+    public BasicAttachment mergePdf(BasicExamRule basicExamRule, TBTask tbTask, ExamDetail examDetail, Long userId, Long schoolId, List<PdfDto>... list) throws IOException {
         StringJoiner stringJoiner = new StringJoiner("").add(SystemConstant.PDF_TEMP_FILES_DIR).add(File.separator);
         List<PdfDto> mergePdfList = new ArrayList<>();
         int pageA3Count = 0;
@@ -395,7 +392,6 @@ public class CreatePdfUtil {
         examDetail.setAttachmentId(basicAttachment.getId());
         examDetail.setPagesA3(pageA3Count);
         examDetail.setPagesA4(pageA4Count);
-        BasicExamRule basicExamRule = basicExamRuleService.getBySchoolId(schoolId);
         examDetail.setStatus(PrintMethodEnum.AUTO == basicExamRule.getPrintMethod() ? ExamDetailStatusEnum.WAITING : ExamDetailStatusEnum.READY);
         detailService.saveOrUpdate(examDetail);
         ossUtil.ossUpload(dirName, localPdfFile, DigestUtils.md5Hex(new FileInputStream(localPdfFile)));
@@ -483,14 +479,14 @@ public class CreatePdfUtil {
      * @return
      * @throws IOException
      */
-    public BasicAttachment cardHtml(String cardContent, String paperType, ExamDetail examDetail, ExamDetailCourse examDetailCourse, ExamCard examCard, JSONArray jsonArray, Long userId, List<PdfDto> cardPdfList) throws IOException {
+    public BasicAttachment cardHtml(String sequence, String cardContent, String paperType, ExamDetail examDetail, ExamDetailCourse examDetailCourse, ExamCard examCard, JSONArray jsonArray, Long userId, List<PdfDto> cardPdfList) throws IOException {
         //通用题卡
         String cardTemp = cardContent;
         cardTemp = cardTemp.replaceAll("\\$\\{paperTypeName\\}", paperType);
         //随机生成试卷条码并将图片转成base64
         cardTemp = cardTemp.replaceAll("\\$\\{paperType\\}", GoogleBarCodeUtil.createBarCode(SystemConstant.convertPaperType(paperType), false));
         //通用题卡生成卷袋贴条码
-        String packageCode = examDetail.getPackageCode();
+        String packageCode = examDetail.getPackageCode() + sequence;
         String packageCodeImg = GoogleBarCodeUtil.createBarCode(packageCode, false);
         String packageCodeDiv = "<div class=\"page-box page-box-0\"><div class=\"package-number\" style=\"position: absolute;width: 200px;height: 40px;top: 80px;right: 35px;transform: rotate(-90deg);transform-origin: center right;text-align: center;z-index: 99;\"><img src=\"data:image/png;base64," + packageCodeImg + "\" style=\"display: block; height: 28px; width: 100%\" /><p style=\"line-height: 1; font-size: 12px; margin: 0;\">" + packageCode + "</p></div>";
         cardTemp = cardTemp.replaceAll("<div class=\"page-box page-box-0\">", packageCodeDiv);
@@ -499,6 +495,7 @@ public class CreatePdfUtil {
         object.put("name", paperType);
         object.put("examDetailCourseId", examDetailCourse.getId());
         object.put("attachmentId", cardAttachment.getId());
+        object.put("packageCode", packageCode);
         jsonArray.add(object);
         return cardAttachment;
     }

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

@@ -6,7 +6,7 @@
         select
             tbt.id,
             tbt.print_plan_id as printPlanId,
-            epp.name as printPlanName,
+            concat_ws('-', epp.name, tbt.obj_name) as printPlanName,
             tbt.`type`,
             tbt.status,
             tbt.`result`,

+ 11 - 5
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPrintPlanController.java

@@ -14,17 +14,17 @@ import com.qmth.distributed.print.business.bean.params.DeleteParams;
 import com.qmth.distributed.print.business.bean.params.PrintPlanParams;
 import com.qmth.distributed.print.business.bean.params.RelatePaperParam;
 import com.qmth.distributed.print.business.bean.result.EditResult;
-import com.qmth.distributed.print.business.bean.result.LoginResult;
 import com.qmth.distributed.print.business.entity.ExamDetail;
-import com.qmth.distributed.print.business.entity.ExamPrintPlan;
 import com.qmth.distributed.print.business.entity.SysUser;
 import com.qmth.distributed.print.business.entity.TBTask;
+import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
 import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
 import com.qmth.distributed.print.business.enums.TaskTypeEnum;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.templete.execute.AsyncDownloadPdfTempleteService;
 import com.qmth.distributed.print.business.util.ServletUtil;
 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 io.swagger.annotations.*;
@@ -33,9 +33,9 @@ import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
 import java.io.IOException;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -279,7 +279,7 @@ public class ExamPrintPlanController {
      */
     @ApiOperation(value = "印刷任务管理-查看印品")
     @RequestMapping(value = "/template_view", method = RequestMethod.POST)
-    public Result tempalteViewPDF(@RequestBody  Map<String, Long> map) {
+    public Result tempalteViewPDF(@RequestBody Map<String, Long> map) {
         List<Map<String, String>> list = examPrintPlanService.tempalteView(map.get("printPlanId"));
         return ResultUtil.ok(list);
     }
@@ -292,7 +292,7 @@ public class ExamPrintPlanController {
      */
     @ApiOperation(value = "印刷任务管理-查看PDF")
     @RequestMapping(value = "/task_view_pdf", method = RequestMethod.POST)
-    public Result taskViewPDF(@RequestBody  Map<String, Long> map) {
+    public Result taskViewPDF(@RequestBody Map<String, Long> map) {
         String path = examDetailService.taskViewPDF(map.get("examDetailId"));
         return ResultUtil.ok(path);
     }
@@ -304,6 +304,12 @@ public class ExamPrintPlanController {
         if (bindingResult.hasErrors()) {
             return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
         }
+        List<ExamDetail> examDetailList = examDetailService.listByIds(Arrays.asList(arraysParams.getIds()));
+        for (ExamDetail ExamDetail : examDetailList) {
+            if (ExamDetail.getStatus() != ExamDetailStatusEnum.READY && ExamDetail.getStatus() != ExamDetailStatusEnum.PRINTING) {
+                throw ExceptionResultEnum.ERROR.exception("状态只能为就绪或印刷中才能下载");
+            }
+        }
         Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.PRINT_PDF_DOWNLOAD, arraysParams, (SysUser) ServletUtil.getRequestUser());
         asyncDownloadPdfTempleteService.exportTask(map);
         TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;