wangliang 4 rokov pred
rodič
commit
8d0f97aa72

+ 9 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TBTaskService.java

@@ -71,6 +71,15 @@ public interface TBTaskService extends IService<TBTask> {
      */
     public Map<String, Object> saveTask(MultipartFile file, TaskTypeEnum taskTypeEnum, Object objId, Long orgId);
 
+    /**
+     * 保存任务
+     *
+     * @param taskTypeEnum
+     * @param printPlanId
+     * @return
+     */
+    public Map<String, Object> saveTask(TaskTypeEnum taskTypeEnum, Long printPlanId);
+
     /**
      * 查询任务列表
      *

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

@@ -246,8 +246,7 @@ public class BasicAttachmentServiceImpl extends ServiceImpl<BasicAttachmentMappe
             JSONObject jsonObject = new JSONObject();
             stringJoiner.add(File.separator).add(SystemConstant.getUuid()).add(format);
             if (oss) {//上传至oss\
-                String dirName = stringJoiner.toString();
-                dirName = dirName.replaceAll("\\\\", "/");
+                String dirName = stringJoiner.toString().replaceAll("\\\\", "/");
                 ossUtil.ossUpload(dirName, file.getInputStream(), BinaryUtil.toBase64String(HexUtils.decodeHex(md5)));
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
                 jsonObject.put(SystemConstant.PATH, dirName);

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

@@ -61,16 +61,8 @@ public class TBTaskServiceImpl extends ServiceImpl<TBTaskMapper, TBTask> impleme
             if (Objects.isNull(basicAttachment)) {
                 throw ExceptionResultEnum.ATTACHMENT_ERROR.exception();
             } else {
-                SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
-                TBTask tbTask = new TBTask(taskTypeEnum,
-                        TaskStatusEnum.INIT,
-                        basicAttachment.getName(),
-                        basicAttachment.getPath(),
-                        requestUser.getId(),
-                        requestUser.getSchoolId());
                 map = new HashMap<>();
-                map.computeIfAbsent(SystemConstant.TASK, v -> tbTask);
-                map.computeIfAbsent(SystemConstant.USER, v -> requestUser);
+                TBTask tbTask = saveTaskCommon(basicAttachment, taskTypeEnum, map);
                 this.save(tbTask);
             }
         } catch (Exception e) {
@@ -97,17 +89,9 @@ public class TBTaskServiceImpl extends ServiceImpl<TBTaskMapper, TBTask> impleme
             if (Objects.isNull(basicAttachment)) {
                 throw ExceptionResultEnum.ATTACHMENT_ERROR.exception();
             } else {
-                SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
-                TBTask tbTask = new TBTask(taskTypeEnum,
-                        TaskStatusEnum.INIT,
-                        basicAttachment.getName(),
-                        basicAttachment.getPath(),
-                        requestUser.getId(),
-                        requestUser.getSchoolId());
-                tbTask.setPrintPlanId(printPlanId);
                 map = new HashMap<>();
-                map.computeIfAbsent(SystemConstant.TASK, v -> tbTask);
-                map.computeIfAbsent(SystemConstant.USER, v -> requestUser);
+                TBTask tbTask = saveTaskCommon(basicAttachment, taskTypeEnum, map);
+                tbTask.setPrintPlanId(printPlanId);
                 this.save(tbTask);
             }
         } catch (Exception e) {
@@ -164,6 +148,32 @@ public class TBTaskServiceImpl extends ServiceImpl<TBTaskMapper, TBTask> impleme
         return null;
     }
 
+    /**
+     * 保存任务
+     *
+     * @param taskTypeEnum
+     * @param printPlanId
+     * @return
+     */
+    @Override
+    @Transactional
+    public Map<String, Object> saveTask(TaskTypeEnum taskTypeEnum, Long printPlanId) {
+        Map<String, Object> map = null;
+        try {
+            TBTask tbTask = saveTaskCommon(null, taskTypeEnum, map);
+            tbTask.setPrintPlanId(printPlanId);
+            this.save(tbTask);
+        } catch (Exception e) {
+            log.error("请求出错", e);
+            if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
+        }
+        return map;
+    }
+
     /**
      * 查询任务列表
      *
@@ -178,4 +188,24 @@ public class TBTaskServiceImpl extends ServiceImpl<TBTaskMapper, TBTask> impleme
     public IPage<TaskListResult> query(IPage<Map> iPage, Long printPlanId, TaskStatusEnum status, TaskTypeEnum type, TaskResultEnum result) {
         return tbTaskMapper.query(iPage, printPlanId, Objects.nonNull(status) ? status.name() : null, Objects.nonNull(type) ? type.name() : null, Objects.nonNull(result) ? result.name() : null);
     }
+
+    /**
+     * 保存task
+     *
+     * @param basicAttachment
+     * @param taskTypeEnum
+     * @return
+     */
+    public TBTask saveTaskCommon(BasicAttachment basicAttachment, TaskTypeEnum taskTypeEnum, Map map) {
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        TBTask tbTask = new TBTask(taskTypeEnum,
+                TaskStatusEnum.INIT,
+                Objects.nonNull(basicAttachment) ? basicAttachment.getName() : null,
+                Objects.nonNull(basicAttachment) ? basicAttachment.getPath() : null,
+                requestUser.getId(),
+                requestUser.getSchoolId());
+        map.computeIfAbsent(SystemConstant.TASK, v -> tbTask);
+        map.computeIfAbsent(SystemConstant.USER, v -> requestUser);
+        return tbTask;
+    }
 }

+ 44 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/create/AsyncCreateTaskTemplete.java

@@ -0,0 +1,44 @@
+package com.qmth.distributed.print.business.templete.create;
+
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.qmth.boot.api.exception.ApiException;
+import com.qmth.distributed.print.business.entity.TBTask;
+import com.qmth.distributed.print.business.enums.TaskStatusEnum;
+import com.qmth.distributed.print.business.enums.UploadFileEnum;
+import com.qmth.distributed.print.business.service.TBTaskService;
+import com.qmth.distributed.print.business.templete.importData.AsyncImportTaskTemplete;
+import com.qmth.distributed.print.business.util.OssUtil;
+import com.qmth.distributed.print.common.contant.SpringContextHolder;
+import com.qmth.distributed.print.common.contant.SystemConstant;
+import com.qmth.distributed.print.common.util.Result;
+import com.qmth.distributed.print.common.util.ResultUtil;
+import org.apache.commons.io.FileUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.scheduling.annotation.Async;
+
+import java.io.*;
+import java.nio.charset.StandardCharsets;
+import java.util.Date;
+import java.util.Map;
+import java.util.Objects;
+import java.util.StringJoiner;
+
+/**
+ * @Description: 异步创建pdf模版
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/3/29
+ */
+public abstract class AsyncCreateTaskTemplete extends AsyncImportTaskTemplete {
+    private final static Logger log = LoggerFactory.getLogger(AsyncCreateTaskTemplete.class);
+
+    public static final String BEGIN_TITLE = "->开始准备创建";
+
+    @Async
+    public Result createPdf(Map<String, Object> map) throws IOException {
+        return null;
+    }
+}

+ 73 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncCreatePdfTempleteService.java

@@ -0,0 +1,73 @@
+package com.qmth.distributed.print.business.templete.execute;
+
+import com.qmth.boot.api.exception.ApiException;
+import com.qmth.distributed.print.business.entity.TBTask;
+import com.qmth.distributed.print.business.enums.TaskResultEnum;
+import com.qmth.distributed.print.business.enums.TaskStatusEnum;
+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.util.Result;
+import com.qmth.distributed.print.common.util.ResultUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+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;
+
+/**
+ * @Description: 创建pdf模版
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/4/9
+ */
+@Service
+public class AsyncCreatePdfTempleteService extends AsyncCreateTaskTemplete {
+    private final static Logger log = LoggerFactory.getLogger(AsyncCreatePdfTempleteService.class);
+
+    static final String OBJ_TITLE = "pdf数据";
+
+    @Resource
+    TaskLogicService taskLogicService;
+
+    /**
+     * 创建pdf
+     *
+     * @param map
+     * @return
+     * @throws IOException
+     */
+    @Override
+    public Result createPdf(Map<String, Object> map) throws IOException {
+        TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
+        StringJoiner stringJoinerSummary = new StringJoiner("\n").add(MessageFormat.format("{0}{1}{2}", FORMAT_TIME, BEGIN_TITLE, OBJ_TITLE));
+        tbTask.setStatus(TaskStatusEnum.RUNNING);
+        try {
+            stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", FORMAT_TIME, FINISH_TITLE, 111, FINISH_SIZE));
+            tbTask.setResult(TaskResultEnum.SUCCESS);
+        } catch (Exception e) {
+            log.error("请求出错", e);
+            stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", FORMAT_TIME, EXCEPTION_TITLE, EXCEPTION_DATA, e.getMessage()));
+            tbTask.setResult(TaskResultEnum.ERROR);
+            if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
+        } finally {//生成txt文件
+            tbTask.setSummary(stringJoinerSummary.toString());
+            super.createTxt(tbTask);
+        }
+        return ResultUtil.ok(map);
+    }
+
+    @Override
+    public Result importTask(Map<String, Object> map) throws IOException {
+        return null;
+    }
+}

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

@@ -41,7 +41,7 @@ import java.util.*;
 public class AsyncUserImportTempleteService extends AsyncImportTaskTemplete {
     private final static Logger log = LoggerFactory.getLogger(AsyncUserImportTempleteService.class);
 
-    public static final String OBJ_TITLE = "用户数据";
+    static final String OBJ_TITLE = "用户数据";
 
     @Resource
     TaskLogicService taskLogicService;

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

@@ -22,4 +22,12 @@ public interface TaskLogicService {
      * @return
      */
     public Map<String, Object> executeUserImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map);
+
+    /**
+     * 创建pdf逻辑
+     *
+     * @param map
+     * @return
+     */
+    public Map<String, Object> executeCreatePdfLogic(Map<String, Object> map);
 }

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

@@ -92,4 +92,15 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         });
         return map;
     }
+
+    /**
+     * 创建pdf逻辑
+     *
+     * @param map
+     * @return
+     */
+    @Override
+    public Map<String, Object> executeCreatePdfLogic(Map<String, Object> map) {
+        return null;
+    }
 }

+ 1 - 1
distributed-print-common/src/main/java/com/qmth/distributed/print/common/util/ResultUtil.java

@@ -41,7 +41,7 @@ public class ResultUtil {
     }
 
     public static Result error(String message) {
-        throw ExceptionResultEnum.EXCEPTION_ERROR.exception(message);
+        return new Result(ExceptionResultEnum.EXCEPTION_ERROR.getStatus().value(), message);
     }
 
     public static Result ok(String message) {

+ 22 - 3
distributed-print/src/main/java/com/qmth/distributed/print/api/SysUserController.java

@@ -15,9 +15,8 @@ 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.BasicAttachmentService;
-import com.qmth.distributed.print.business.service.SysUserService;
-import com.qmth.distributed.print.business.service.TBTaskService;
+import com.qmth.distributed.print.business.service.*;
+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;
 import com.qmth.distributed.print.business.util.ExcelUtil;
@@ -221,5 +220,25 @@ public class SysUserController {
         ExcelUtil.excelExport("用户列表", UserExportDto.class, userExportDtoList, ServletUtil.getResponse());
         return ResultUtil.ok();
     }
+
+    @Resource
+    ExamDetailService detailService;
+
+    @Resource
+    ExamDetailCourseService detailCourseService;
+
+    @Resource
+    AsyncCreatePdfTempleteService asyncCreatePdfTempleteService;
+
+    @ApiOperation(value = "异步创建pdf接口")
+    @RequestMapping(value = "/async/createPdf", 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();
+    }
 }