Selaa lähdekoodia

3.1.0-归档管理原图获取方式变更,没有轨迹也可以下载原图bug

xiaof 2 vuotta sitten
vanhempi
commit
7d6d1a0aab

+ 10 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TBSyncTask.java

@@ -88,6 +88,16 @@ public class TBSyncTask extends BaseEntity implements Serializable {
         this.schoolId = schoolId;
     }
 
+    public TBSyncTask(PushTypeEnum type, TaskStatusEnum status, Long createId, Long schoolId, Long objectId) {
+        setId(SystemConstant.getDbUuid());
+        this.type = type;
+        this.status = status;
+        setCreateId(createId);
+        setCreateTime(System.currentTimeMillis());
+        this.schoolId = schoolId;
+        this.objectId = objectId;
+    }
+
     public static long getSerialVersionUID() {
         return serialVersionUID;
     }

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

@@ -210,6 +210,8 @@ public interface PrintCommonService {
      */
     Map<String, Object> savePush(PushTypeEnum pushTypeEnum);
 
+    Map<String, Object> savePush(PushTypeEnum scorePush, Long examId);
+
     /**
      * 校验课程关联考场是否提交打印
      *

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

@@ -26,6 +26,8 @@ public interface TBSyncTaskService extends IService<TBSyncTask> {
 
     TBSyncTask savePushCommon(PushTypeEnum pushTypeEnum, Map map, SysUser sysUser);
 
+    TBSyncTask savePushCommon(PushTypeEnum pushTypeEnum, Map map, SysUser sysUser, Long objectId);
+
     /**
      * 同步任务管理分页查询
      *

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

@@ -76,9 +76,10 @@ public interface TSyncExamStudentScoreService extends IService<TSyncExamStudentS
      *
      * @param tSyncExamStudentScore
      * @param imageTrajectoryEnum
+     * @param b
      * @return
      */
-    public TSyncExamStudentScore createImageTrajectory(TSyncExamStudentScore tSyncExamStudentScore, ImageTrajectoryEnum imageTrajectoryEnum);
+    public TSyncExamStudentScore createImageTrajectory(TSyncExamStudentScore tSyncExamStudentScore, ImageTrajectoryEnum imageTrajectoryEnum, boolean needSync);
 
     /**
      * 生成zip文件

+ 26 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceImpl.java

@@ -977,6 +977,32 @@ public class PrintCommonServiceImpl implements PrintCommonService {
         return map;
     }
 
+    @Transactional
+    @Override
+    public Map<String, Object> savePush(PushTypeEnum pushTypeEnum, Long objectId) {
+        Map<String, Object> map = null;
+        try {
+            // 校验任务是否进行中
+            QueryWrapper<TBSyncTask> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().eq(TBSyncTask::getType, pushTypeEnum).eq(TBSyncTask::getObjectId, objectId).ne(TBSyncTask::getStatus, TaskStatusEnum.FINISH);
+            List<TBSyncTask> list = tbSyncTaskService.list(queryWrapper);
+            if(!list.isEmpty()){
+                throw ExceptionResultEnum.ERROR.exception("当前同步条件下有任务正在进行中");
+            }
+            map = new HashMap<>();
+            TBSyncTask tbSyncTask = tbSyncTaskService.savePushCommon(pushTypeEnum, map, null, objectId);
+            tbSyncTaskService.save(tbSyncTask);
+        } catch (Exception e) {
+            log.error(SystemConstant.LOG_ERROR, e);
+            if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
+        }
+        return map;
+    }
+
     /**
      * 校验课程关联考场是否提交打印
      *

+ 16 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TBSyncTaskServiceImpl.java

@@ -122,6 +122,22 @@ public class TBSyncTaskServiceImpl extends ServiceImpl<TBSyncTaskMapper, TBSyncT
         return tbSyncTask;
     }
 
+    @Transactional
+    @Override
+    public TBSyncTask savePushCommon(PushTypeEnum pushTypeEnum, Map map, SysUser sysUser, Long objectId) {
+        SysUser requestUser = Objects.nonNull(sysUser) ? sysUser : (SysUser) ServletUtil.getRequestUser();
+        TBSyncTask tbSyncTask = new TBSyncTask(pushTypeEnum,
+                TaskStatusEnum.INIT,
+                requestUser.getId(),
+                requestUser.getSchoolId(),
+                objectId);
+
+        map.computeIfAbsent(SystemConstant.TB_SYNC_TASK, v -> tbSyncTask);
+        map.computeIfAbsent(SystemConstant.USER, v -> requestUser);
+        map.computeIfAbsent(SystemConstant.TB_SYNC_TASK_ID, v -> tbSyncTask.getId());
+        return tbSyncTask;
+    }
+
     @Override
     public IPage<SyncListResult> query(Long schoolId, TaskStatusEnum status, PushTypeEnum type, TaskResultEnum result, int pageNumber, int pageSize) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();

+ 5 - 11
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TSyncExamStudentScoreServiceImpl.java

@@ -9,7 +9,6 @@ import com.qmth.distributed.print.business.bean.result.TSyncExamStudentScoreResu
 import com.qmth.distributed.print.business.entity.TSyncExamStudentScore;
 import com.qmth.distributed.print.business.enums.ImageTrajectoryEnum;
 import com.qmth.distributed.print.business.mapper.TSyncExamStudentScoreMapper;
-import com.qmth.distributed.print.business.service.PrintCommonService;
 import com.qmth.distributed.print.business.service.TSyncExamStudentScoreService;
 import com.qmth.teachcloud.common.config.DictionaryConfig;
 import com.qmth.teachcloud.common.contant.SystemConstant;
@@ -115,10 +114,11 @@ public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStude
      *
      * @param tSyncExamStudentScore
      * @param imageTrajectoryEnum
+     * @param b
      * @return
      */
     @Override
-    public TSyncExamStudentScore createImageTrajectory(TSyncExamStudentScore tSyncExamStudentScore, ImageTrajectoryEnum imageTrajectoryEnum) {
+    public TSyncExamStudentScore createImageTrajectory(TSyncExamStudentScore tSyncExamStudentScore, ImageTrajectoryEnum imageTrajectoryEnum, boolean needSync) {
         List<File> fileSourceList = new ArrayList<>(), fileTargetList = new ArrayList<>();
         boolean oss = dictionaryConfig.sysDomain().isOss();
         try {
@@ -130,7 +130,7 @@ public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStude
 
             String hostUrl = SystemConstant.getLocalFileHost(dictionaryConfig.sysDomain().getFileHost());
 
-            if (Objects.isNull(tSyncExamStudentScore.getLocalSheetUrls()) || Objects.isNull(tSyncExamStudentScore.getTrajectoryUrls())) {
+            if (needSync || Objects.isNull(tSyncExamStudentScore.getLocalSheetUrls()) || Objects.isNull(tSyncExamStudentScore.getTrajectoryUrls())) {
                 JSONArray jsonArray = JSONArray.parseArray(tSyncExamStudentScore.getSheetUrls());
                 if (!jsonArray.isEmpty()) {
                     JSONObject syncDataJson = JSON.parseObject(tSyncExamStudentScore.getSyncData());
@@ -178,12 +178,6 @@ public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStude
                         } else {
                             if (imageTrajectoryEnum == ImageTrajectoryEnum.PREVIEW) {
                                 String filePath = fileSource.getPath();
-                                String trailUrl;
-                                if (filePath.startsWith("/")) {
-                                    trailUrl = hostUrl + filePath;
-                                } else {
-                                    trailUrl = hostUrl + File.separator + filePath;
-                                }
                             }
                             sheetObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
                             sheetObject.put(SystemConstant.PATH, (stringJoiner.toString() + dirJpgName.toString()).replaceAll("\\\\", "/"));
@@ -191,10 +185,10 @@ public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStude
                         jsonImageSourcePathArray.add(sheetObject);
 
                         // 轨迹
-                        JSONArray markTagJsonArray = (JSONArray) markTagsJson.get(i + 1);
-                        if (Objects.isNull(markTagJsonArray) || markTagJsonArray.size() == 0) {
+                        if(markTagsJson.isEmpty()){
                             continue;
                         }
+                        JSONArray markTagJsonArray = (JSONArray) markTagsJson.get(i + 1);
 
                         StringJoiner dirTargetJpgName = new StringJoiner("");
                         dirTargetJpgName.add(UploadFileEnum.FILE.getTitle()).add(File.separator)

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

@@ -165,7 +165,7 @@ public class PushLogicServiceImpl implements PushLogicService {
         if(!tSyncExamStudentScoreList.isEmpty()){
             try {
                 for (TSyncExamStudentScore tSyncExamStudentScore : tSyncExamStudentScoreList) {
-                    tSyncExamStudentScoreService.createImageTrajectory(tSyncExamStudentScore, ImageTrajectoryEnum.PREVIEW);
+                    tSyncExamStudentScoreService.createImageTrajectory(tSyncExamStudentScore, ImageTrajectoryEnum.PREVIEW, true);
                 }
             } catch (Exception e) {
 

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

@@ -1633,7 +1633,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 for (TSyncExamStudentScore t : tSyncExamStudentScoreList) {
                     try {
                         boolean update = Objects.isNull(t.getTrajectoryUrls()) ? true : false;
-                        t = tSyncExamStudentScoreService.createImageTrajectory(t, ImageTrajectoryEnum.DOWNLOAD);
+                        t = tSyncExamStudentScoreService.createImageTrajectory(t, ImageTrajectoryEnum.DOWNLOAD, false);
                         if (Objects.nonNull(t.getTrajectoryFileList())) {
                             List<File> fileList = t.getTrajectoryFileList();
 //                            fileList.removeAll(t.getTrajectoryFileList());

+ 3 - 6
distributed-print/src/main/java/com/qmth/distributed/print/api/TSyncExamStudentScoreController.java

@@ -1,7 +1,5 @@
 package com.qmth.distributed.print.api;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.boot.api.constant.ApiConstant;
@@ -29,7 +27,6 @@ import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import io.swagger.annotations.*;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.validation.annotation.Validated;
@@ -117,7 +114,7 @@ public class TSyncExamStudentScoreController {
         for (ExamPrintPlan e : examPrintPlanList) {
             semesterExamIdMap.add(Long.valueOf(semesterId), Integer.parseInt(String.valueOf(e.getThirdRelateId())));
         }
-        Map<String, Object> map = printCommonService.savePush(PushTypeEnum.SCORE_PUSH);
+        Map<String, Object> map = printCommonService.savePush(PushTypeEnum.SCORE_PUSH, Long.valueOf(examId));
         map.computeIfAbsent("semesterExamIdMap", v -> semesterExamIdMap);
         asyncScorePushService.pushTask(map);
         TBSyncTask tbSyncTask = Objects.nonNull(map.get(SystemConstant.TB_SYNC_TASK)) ? (TBSyncTask) map.get(SystemConstant.TB_SYNC_TASK) : null;
@@ -192,8 +189,8 @@ public class TSyncExamStudentScoreController {
      */
     private TSyncExamStudentScore downloadOrPreview(String id, ImageTrajectoryEnum imageTrajectoryEnum) {
         TSyncExamStudentScore tSyncExamStudentScore = tSyncExamStudentScoreService.getById(SystemConstant.convertIdToLong(id));
-        Optional.ofNullable(tSyncExamStudentScore).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到此考生信息"));
-        tSyncExamStudentScore = tSyncExamStudentScoreService.createImageTrajectory(tSyncExamStudentScore, imageTrajectoryEnum);
+        Optional.ofNullable(tSyncExamStudentScore).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到此考生信息或者考生信息已更新,请刷新数据后再试"));
+        tSyncExamStudentScore = tSyncExamStudentScoreService.createImageTrajectory(tSyncExamStudentScore, imageTrajectoryEnum, false);
         Optional.ofNullable(tSyncExamStudentScore.getTrajectoryUrls()).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("阅卷方式未使用轨迹阅卷,无轨迹图"));
         return tSyncExamStudentScore;
     }