瀏覽代碼

数据同步

xiaof 3 年之前
父節點
當前提交
b450f397da

+ 41 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/SyncDataParam.java

@@ -0,0 +1,41 @@
+package com.qmth.distributed.print.business.bean.params;
+
+import com.qmth.distributed.print.business.entity.ExamPrintPlan;
+
+import java.util.List;
+
+/**
+ * @Date: 2021/7/28.
+ */
+public class SyncDataParam {
+
+    private Long thirdRelateId;
+
+    private String thirdRelateName;
+
+    private List<ExamPrintPlan> list;
+
+    public Long getThirdRelateId() {
+        return thirdRelateId;
+    }
+
+    public void setThirdRelateId(Long thirdRelateId) {
+        this.thirdRelateId = thirdRelateId;
+    }
+
+    public String getThirdRelateName() {
+        return thirdRelateName;
+    }
+
+    public void setThirdRelateName(String thirdRelateName) {
+        this.thirdRelateName = thirdRelateName;
+    }
+
+    public List<ExamPrintPlan> getList() {
+        return list;
+    }
+
+    public void setList(List<ExamPrintPlan> list) {
+        this.list = list;
+    }
+}

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

@@ -1,5 +1,7 @@
 package com.qmth.distributed.print.business.service;
 
+import com.qmth.distributed.print.business.bean.params.SyncDataParam;
+
 /**
  * 同步数据到云阅卷 服务类
  * @Date: 2021/5/20.
@@ -7,5 +9,7 @@ package com.qmth.distributed.print.business.service;
 public interface DataSyncService {
     void syncToCloudReview();
 
-    void syncDataCloud(Long printPlanId);
+    void syncDataCloud(Long printPlanId, Long thirdRelateId);
+
+    void syncDataMerge(SyncDataParam syncDataParam);
 }

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

@@ -9,6 +9,7 @@ import com.qmth.distributed.print.business.bean.dto.ClientPrintTaskDto;
 import com.qmth.distributed.print.business.bean.dto.ClientPrintTaskTotalDto;
 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.SyncDataParam;
 import com.qmth.distributed.print.business.bean.result.PrintPlanBrief;
 import com.qmth.distributed.print.business.bean.result.PrintPlanResult;
 import com.qmth.distributed.print.business.entity.ExamPrintPlan;
@@ -88,5 +89,7 @@ public interface ExamPrintPlanService extends IService<ExamPrintPlan> {
 
     ClientPrintStatisticsTotalDto clientStatisticsTotalData(String printPlanId, String examPlace, Long examStartTime, Long examEndTime, String courseCode, String paperNumber);
 
-    void syncDataCloud(Long printPlanId);
+    void syncDataCloud(Long printPlanId, Long thirdRelateId);
+
+    void syncDataMerge(SyncDataParam syncDataParam);
 }

+ 91 - 37
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DataSyncServiceImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.qmth.boot.tools.signature.SignatureType;
 import com.qmth.distributed.print.business.bean.dto.SyncExamCardDto;
 import com.qmth.distributed.print.business.bean.dto.SyncExamStudentDto;
+import com.qmth.distributed.print.business.bean.params.SyncDataParam;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
 import com.qmth.distributed.print.business.service.*;
@@ -15,12 +16,17 @@ import com.qmth.teachcloud.common.SignatureEntityTest;
 import com.qmth.teachcloud.common.config.DictionaryConfig;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicSchool;
+import com.qmth.teachcloud.common.entity.SysConfig;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.TaskResultEnum;
 import com.qmth.teachcloud.common.enums.TaskStatusEnum;
 import com.qmth.teachcloud.common.service.CacheService;
+import com.qmth.teachcloud.common.service.SysConfigService;
+import com.qmth.teachcloud.common.util.ServletUtil;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -37,6 +43,8 @@ import java.util.concurrent.Executors;
 @Service
 public class DataSyncServiceImpl implements DataSyncService {
 
+    private final static Logger log = LoggerFactory.getLogger(DataSyncServiceImpl.class);
+
     @Autowired
     private ExamPrintPlanService examPrintPlanService;
 
@@ -58,9 +66,12 @@ public class DataSyncServiceImpl implements DataSyncService {
     @Autowired
     private ExamCardService examCardService;
 
+    @Autowired
+    private SysConfigService sysConfigService;
+
     private ExecutorService executors = Executors.newFixedThreadPool(5);
 
-    private static final String SAVE_EXAM_TYPE = "MULTI_MEDIA";
+    private static final String SAVE_EXAM_TYPE = "SCAN_IMAGE";
     private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
     private static final String POST_METHOD = "POST";
 
@@ -76,7 +87,7 @@ public class DataSyncServiceImpl implements DataSyncService {
         List<ExamPrintPlan> examPrintPlans = examPrintPlanService.list(queryWrapper);
         if (!CollectionUtils.isEmpty(examPrintPlans)) {
             for (ExamPrintPlan examPrintPlan : examPrintPlans) {
-                executors.execute(syncData(examPrintPlan));
+                executors.execute(syncData(examPrintPlan, null));
             }
         }
     }
@@ -85,28 +96,51 @@ public class DataSyncServiceImpl implements DataSyncService {
      * 单个同步
      *
      * @param printPlanId
+     * @param thirdRelateId
      */
     @Override
-    public void syncDataCloud(Long printPlanId) {
+    public void syncDataCloud(Long printPlanId, Long thirdRelateId) {
         ExamPrintPlan examPrintPlan = examPrintPlanService.getById(printPlanId);
         if (examPrintPlan == null) {
             throw ExceptionResultEnum.ERROR.exception("印刷计划数据异常");
         }
-        if (!PrintPlanStatusEnum.PRINT_FINISH.equals(examPrintPlan.getStatus())) {
+        if (!PrintPlanStatusEnum.END.equals(examPrintPlan.getStatus())) {
             throw ExceptionResultEnum.ERROR.exception("印刷计划未结束,不能同步数据");
         }
-        if (Objects.nonNull(examPrintPlan.getSyncStatus()) && examPrintPlan.getSyncStatus()) {
-            throw ExceptionResultEnum.ERROR.exception("印刷计划数据同步成功");
+        executors.execute(syncData(examPrintPlan, thirdRelateId));
+
+    }
+
+    @Override
+    public void syncDataMerge(SyncDataParam syncDataParam) {
+        List<ExamPrintPlan> printPlans = syncDataParam.getList();
+        if(CollectionUtils.isEmpty(printPlans)){
+            return;
+        }
+
+        // todo 校验印刷计划是否完成
+        if(syncDataParam.getThirdRelateId() == null){
+            Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+            String time = String.valueOf(System.currentTimeMillis());
+            ExamPrintPlan examPrintPlan = printPlans.stream().max(Comparator.comparingLong(ExamPrintPlan::getExamEndTime)).get();
+            String examTime = DateUtil.format(new Date(examPrintPlan.getExamEndTime()), DATE_FORMAT);
+            syncDataParam.setThirdRelateId(getExamId(schoolId, time, syncDataParam.getThirdRelateName(), examTime));
+        }
+
+        for (ExamPrintPlan printPlan : printPlans) {
+            executors.execute(syncData(printPlan, syncDataParam.getThirdRelateId()));
         }
-        executors.execute(syncData(examPrintPlan));
     }
 
-    private TimerTask syncData(ExamPrintPlan examPrintPlan) {
+    private TimerTask syncData(ExamPrintPlan examPrintPlan, Long thirdRelateId) {
         return new TimerTask() {
             @Override
             public void run() {
-                TBSyncTask syncTask = tbSyncTaskService.saveTask(examPrintPlan);
-                doSyncCore(examPrintPlan, syncTask);
+                SysConfig sysConfig = sysConfigService.getByKey("sys.sync.enable");
+                if (sysConfig != null && "true".equals(sysConfig.getConfigValue())) {
+                    TBSyncTask syncTask = tbSyncTaskService.saveTask(examPrintPlan);
+                    doSyncCore(examPrintPlan, thirdRelateId, syncTask);
+                }
             }
         };
     }
@@ -117,9 +151,10 @@ public class DataSyncServiceImpl implements DataSyncService {
      * @param syncTask
      */
     @Transactional
-    public void doSyncCore(ExamPrintPlan examPrintPlan, TBSyncTask syncTask) {
+    public void doSyncCore(ExamPrintPlan examPrintPlan, Long thirdRelateId, TBSyncTask syncTask) {
+        UpdateWrapper<ExamPrintPlan> updateWrapper = new UpdateWrapper<>();
         try {
-            if (!PrintPlanStatusEnum.PRINT_FINISH.equals(examPrintPlan.getStatus())) {
+            if (!PrintPlanStatusEnum.END.equals(examPrintPlan.getStatus())) {
                 throw ExceptionResultEnum.ERROR.exception("印刷计划未结束,不能同步数据");
             }
             // 校验同步url
@@ -129,26 +164,29 @@ public class DataSyncServiceImpl implements DataSyncService {
             tbSyncTaskService.update(tbSyncTaskUpdateWrapper);
 
             // 同步计划 -> 对应云阅卷考试
-            ExamPrintPlan printPlan = examSave(examPrintPlan);
+            ExamPrintPlan printPlan = examSave(examPrintPlan, thirdRelateId);
             // 考试同步成功,才能同步考生和题卡
             if (Objects.nonNull(printPlan.getThirdRelateId())) {
                 studentSave(printPlan);
                 cardUpload(printPlan);
+            } else {
+                throw ExceptionResultEnum.ERROR.exception("无法获取云阅卷考试,同步数据失败");
             }
 
             // 更新计划状态
-            UpdateWrapper<ExamPrintPlan> updateWrapper = new UpdateWrapper<>();
             updateWrapper.lambda().set(ExamPrintPlan::getSyncStatus, true).eq(ExamPrintPlan::getId, examPrintPlan.getId());
-            examPrintPlanService.update(updateWrapper);
 
             // 更新日志表
             syncTask.setResult(TaskResultEnum.SUCCESS);
+            syncTask.setErrorMessage(null);
         } catch (Exception e) {
             syncTask.setResult(TaskResultEnum.ERROR);
             syncTask.setErrorMessage(e.getMessage());
+            updateWrapper.lambda().set(ExamPrintPlan::getSyncStatus, false).eq(ExamPrintPlan::getId, examPrintPlan.getId());
         } finally {
             syncTask.setStatus(TaskStatusEnum.FINISH);
             tbSyncTaskService.saveOrUpdate(syncTask);
+            examPrintPlanService.update(updateWrapper);
         }
 
     }
@@ -173,32 +211,42 @@ public class DataSyncServiceImpl implements DataSyncService {
      * @param examPrintPlan
      * @return
      */
-    public ExamPrintPlan examSave(ExamPrintPlan examPrintPlan) {
-        String hostUrl = dictionaryConfig.syncDataDomain().getHostUrl();
-        String examSaveUrl = dictionaryConfig.syncDataDomain().getExamSaveUrl();
-        String postUrl = hostUrl.concat(examSaveUrl);
+    public ExamPrintPlan examSave(ExamPrintPlan examPrintPlan, Long thirdRelateId) {
         try {
-            //参数
-            Map<String, String> map = new HashMap<>();
-            map.put("code", String.valueOf(examPrintPlan.getId()));
-            map.put("name", examPrintPlan.getName());
-            map.put("examTime", DateUtil.format(new Date(examPrintPlan.getExamEndTime()), DATE_FORMAT));
-            map.put("type", SAVE_EXAM_TYPE);
-
-            String result = HttpKit.sendPost(postUrl, getHeaders(examPrintPlan.getSchoolId(), examSaveUrl), map, null, null, null);
-            JSONObject jsonObject = JSONObject.parseObject(result);
-            if (jsonObject.containsKey("id")) {
-                Long id = Long.valueOf(jsonObject.get("id").toString());
-                UpdateWrapper<ExamPrintPlan> updateWrapper = new UpdateWrapper<>();
-                updateWrapper.lambda().set(ExamPrintPlan::getThirdRelateId, id).eq(ExamPrintPlan::getId, examPrintPlan.getId());
-                examPrintPlanService.update(updateWrapper);
-                return examPrintPlanService.getById(examPrintPlan.getId());
+            if (Objects.isNull(thirdRelateId)) {
+
+                String code = String.valueOf(examPrintPlan.getId());
+                String name = examPrintPlan.getName();
+                String examTime = DateUtil.format(new Date(examPrintPlan.getExamEndTime()), DATE_FORMAT);
+                thirdRelateId = getExamId(examPrintPlan.getSchoolId(), code, name, examTime);
             }
+            UpdateWrapper<ExamPrintPlan> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.lambda().set(ExamPrintPlan::getThirdRelateId, thirdRelateId).set(ExamPrintPlan::getSyncStatus, null).eq(ExamPrintPlan::getId, examPrintPlan.getId());
+            examPrintPlanService.update(updateWrapper);
+            return examPrintPlanService.getById(examPrintPlan.getId());
         } catch (Exception e) {
             throw ExceptionResultEnum.ERROR.exception(e.getMessage());
         }
+    }
 
-        return null;
+    public Long getExamId(Long schoolId, String code, String name, String examTime) {
+        String hostUrl = dictionaryConfig.syncDataDomain().getHostUrl();
+        String examSaveUrl = dictionaryConfig.syncDataDomain().getExamSaveUrl();
+        String postUrl = hostUrl.concat(examSaveUrl);
+        //参数
+        Map<String, String> map = new HashMap<>();
+        map.put("code", code);
+        map.put("name", name);
+        map.put("examTime", examTime);
+        map.put("type", SAVE_EXAM_TYPE);
+
+        String result = HttpKit.sendPost(postUrl, getHeaders(schoolId, examSaveUrl), map, null, null, null);
+        JSONObject jsonObject = JSONObject.parseObject(result);
+        if (jsonObject.containsKey("id")) {
+            return Long.valueOf(jsonObject.get("id").toString());
+        } else {
+            throw ExceptionResultEnum.ERROR.exception("考试同步失败");
+        }
     }
 
     /**
@@ -254,8 +302,14 @@ public class DataSyncServiceImpl implements DataSyncService {
         }
         for (ExamDetailCourse examDetailCours : examDetailCourses) {
             List<SyncExamCardDto> syncExamCardDtos = examCardService.listSyncCardByCourseCodeAndPaperNumber(examDetailCours.getSchoolId(), examDetailCours.getCourseCode(), examDetailCours.getPaperNumber());
-            if (CollectionUtils.isEmpty(syncExamCardDtos) || syncExamCardDtos.size() != 1) {
-                throw ExceptionResultEnum.ERROR.exception(String.format("数据异常,通过学校:%s,课程代码:%s,试卷编号:%s查出多个题卡数据", examDetailCours.getSchoolId(), examDetailCours.getCourseCode(), examDetailCours.getPaperNumber()));
+            if (CollectionUtils.isEmpty(syncExamCardDtos)) {
+                return;
+            }
+
+            if (syncExamCardDtos.size() > 1) {
+//                throw ExceptionResultEnum.ERROR.exception(String.format("数据异常,通过学校:%s,课程代码:%s,试卷编号:%s查出多个题卡数据", examDetailCours.getSchoolId(), examDetailCours.getCourseCode(), examDetailCours.getPaperNumber()));
+                log.info("数据异常,通过学校:{},课程代码:{},试卷编号:{}查出{}个题卡数据", examDetailCours.getSchoolId(), examDetailCours.getCourseCode(), examDetailCours.getPaperNumber(), syncExamCardDtos.size());
+                return;
             }
 
             SyncExamCardDto syncExamCardDto = syncExamCardDtos.get(0);

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

@@ -11,6 +11,7 @@ import com.qmth.distributed.print.business.bean.dto.ClientPrintTaskDto;
 import com.qmth.distributed.print.business.bean.dto.ClientPrintTaskTotalDto;
 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.SyncDataParam;
 import com.qmth.distributed.print.business.bean.result.PrintPlanBrief;
 import com.qmth.distributed.print.business.bean.result.PrintPlanResult;
 import com.qmth.distributed.print.business.bean.result.TemplatePrintInfoResult;
@@ -398,8 +399,13 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
     }
 
     @Override
-    public void syncDataCloud(Long printPlanId) {
-        dataSyncService.syncDataCloud(printPlanId);
+    public void syncDataCloud(Long printPlanId, Long thirdRelateId) {
+        dataSyncService.syncDataCloud(printPlanId, thirdRelateId);
+    }
+
+    @Override
+    public void syncDataMerge(SyncDataParam syncDataParam) {
+        dataSyncService.syncDataMerge(syncDataParam);
     }
 
 

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

@@ -1,6 +1,8 @@
 package com.qmth.distributed.print.api;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.qmth.boot.api.annotation.Aac;
+import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.bean.dto.ExamTaskDetailDto;
 import com.qmth.distributed.print.business.bean.dto.PrintTaskDto;
@@ -9,6 +11,7 @@ import com.qmth.distributed.print.business.bean.dto.RelatePaperDto;
 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.params.SyncDataParam;
 import com.qmth.distributed.print.business.bean.result.EditResult;
 import com.qmth.distributed.print.business.entity.ExamDetail;
 import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
@@ -321,11 +324,34 @@ public class ExamPrintPlanController {
         return Objects.nonNull(tbTask) ? ResultUtil.ok(new EditResult(tbTask.getId())) : ResultUtil.error("创建任务失败");
     }
 
+    /**
+     * 多计划合并同步
+     * @param syncDataParam
+     * @return
+     * @throws Exception
+     */
+    @ApiOperation(value = "多计划合并同步")
+    @RequestMapping(value = "/sync_data_merge", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
+    public Result syncDataCloud(@RequestBody SyncDataParam syncDataParam) {
+        examPrintPlanService.syncDataMerge(syncDataParam);
+        return ResultUtil.ok(true);
+    }
+
+    /**
+     * 手动同步
+     * @param printPlanId
+     * @param thirdRelateId
+     * @return
+     * @throws Exception
+     */
     @ApiOperation(value = "同步失败-手动同步")
     @RequestMapping(value = "/sync_data_cloud", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
-    public Result syncDataCloud(@RequestParam(value = "printPlanId") Long printPlanId) throws Exception {
-        examPrintPlanService.syncDataCloud(printPlanId);
+    @Aac(auth = BOOL.FALSE)
+    public Result syncDataCloud(@RequestParam(value = "printPlanId") Long printPlanId,
+                                @RequestParam(value = "thirdRelateId", required = false) Long thirdRelateId) {
+        examPrintPlanService.syncDataCloud(printPlanId, thirdRelateId);
         return ResultUtil.ok(true);
     }
 }

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

@@ -310,4 +310,11 @@ public class SysController {
         List<MenuDto> list = sysUserRoleService.listByUserId();
         return ResultUtil.ok(list);
     }
+
+    @ApiOperation(value = "获取服务器时间")
+    @RequestMapping(value = "/get_system_time", method = RequestMethod.POST)
+    @Aac(auth = BOOL.FALSE)
+    public Result getSystemTime() {
+        return ResultUtil.ok(System.currentTimeMillis());
+    }
 }

+ 4 - 4
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/SysPrivilege.java

@@ -35,9 +35,9 @@ public class SysPrivilege extends BaseEntity implements Serializable {
     @TableField("org_id")
     private Long orgId;
 
-    @ApiModelProperty(value = "是否公用,0:否,1:是")
+    /*@ApiModelProperty(value = "是否公用,0:否,1:是")
     @TableField("common")
-    private Boolean common;
+    private Boolean common;*/
 
     @ApiModelProperty(value = "名称")
     @TableField(value = "name")
@@ -88,13 +88,13 @@ public class SysPrivilege extends BaseEntity implements Serializable {
         this.orgId = orgId;
     }
 
-    public Boolean getCommon() {
+    /*public Boolean getCommon() {
         return common;
     }
 
     public void setCommon(Boolean common) {
         this.common = common;
-    }
+    }*/
 
     public static long getSerialVersionUID() {
         return serialVersionUID;

+ 15 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/SysUser.java

@@ -67,6 +67,13 @@ public class SysUser extends BaseEntity implements Serializable {
 
     @ApiModelProperty(value = "是否启用,0:停用,1:启用")
     private Boolean enable = true;
+
+    /**
+     * 密码修改次数
+     */
+    @TableField("pwd_count")
+    private Integer pwdCount;
+
     /**
      * 密码修改时间
      */
@@ -161,6 +168,14 @@ public class SysUser extends BaseEntity implements Serializable {
         this.enable = enable;
     }
 
+    public Integer getPwdCount() {
+        return pwdCount;
+    }
+
+    public void setPwdCount(Integer pwdCount) {
+        this.pwdCount = pwdCount;
+    }
+
     public Long getPwdUpdateTime() {
         return pwdUpdateTime;
     }

+ 13 - 10
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

@@ -135,6 +135,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         if (!StringUtils.equals(sysUser.getPassword(), user.getOldPassword())) {
             throw ExceptionResultEnum.ERROR.exception("原密码不正确");
         }
+        sysUser.setPwdCount(sysUser.getPwdCount() + 1);
+        sysUser.setPwdUpdateTime(System.currentTimeMillis());
         sysUser.setPassword(user.getPassword());
         boolean success = this.updateById(sysUser);
         //如果原密码和旧密码不一致,需要重新登录
@@ -244,11 +246,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Override
     public SysUser findByForeignKey(Long schoolId, String teacherName) {
         List<SysUser> tbSchoolTeacherList = this.list(new QueryWrapper<SysUser>().lambda()
-                .eq(SysUser::getSchoolId,schoolId)
-                .eq(SysUser::getRealName,teacherName));
-        SysRole sysRole = sysRoleService.getOne(new QueryWrapper<SysRole>().lambda().eq(SysRole::getType,RoleTypeEnum.TEACHER));
+                .eq(SysUser::getSchoolId, schoolId)
+                .eq(SysUser::getRealName, teacherName));
+        SysRole sysRole = sysRoleService.getOne(new QueryWrapper<SysRole>().lambda().eq(SysRole::getType, RoleTypeEnum.TEACHER));
 //        tbSchoolTeacherList = tbSchoolTeacherList.stream().filter(e -> Arrays.asList(e.getRoleIds()).contains(sysRole.getId())).collect(Collectors.toList());
-        if (tbSchoolTeacherList.size() != 1){
+        if (tbSchoolTeacherList.size() != 1) {
             throw ExceptionResultEnum.ERROR.exception("教师基础数据信息异常");
         }
         return tbSchoolTeacherList.get(0);
@@ -264,7 +266,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         boolean isSuccess = true;
         try {
             Long schoolId = Objects.nonNull(ServletUtil.getRequestHeaderSchoolIdByNotVaild()) ? Long.valueOf(ServletUtil.getRequestHeaderSchoolIdByNotVaild().toString()) : null;
-            if (schoolId == null){
+            if (schoolId == null) {
                 schoolId = userSaveParams.getSchoolId();
             }
             SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
@@ -315,7 +317,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                     commonService.removeUserInfo(sysUser.getId());
                 }
                 //如果修改了机构或手机号,需更新用户缓存
-                if (Objects.nonNull(dbUser.getOrgId())){
+                if (Objects.nonNull(dbUser.getOrgId())) {
                     if (containsQuestionTeacher || dbUser.getOrgId().longValue() != sysUser.getOrgId().longValue()
                             || !Objects.equals(dbUser.getMobileNumber(), sysUser.getMobileNumber())) {
                         cacheService.updateUserCache(sysUser.getId());
@@ -355,6 +357,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
     /**
      * 临时保存用户不鉴权
+     *
      * @param userSaveParams 用户参数
      * @return 结果
      */
@@ -362,11 +365,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         boolean isSuccess = true;
         try {
             Long schoolId = Objects.nonNull(ServletUtil.getRequestHeaderSchoolIdByNotVaild()) ? Long.valueOf(ServletUtil.getRequestHeaderSchoolIdByNotVaild().toString()) : null;
-            if (schoolId == null){
+            if (schoolId == null) {
                 schoolId = userSaveParams.getSchoolId();
             }
-            List<SysUser> requestUserList = this.list(new QueryWrapper<SysUser>().lambda().eq(SysUser::getSchoolId,schoolId).like(SysUser::getLoginName,"admin"));
-            if (requestUserList.size() == 0){
+            List<SysUser> requestUserList = this.list(new QueryWrapper<SysUser>().lambda().eq(SysUser::getSchoolId, schoolId).like(SysUser::getLoginName, "admin"));
+            if (requestUserList.size() == 0) {
                 throw ExceptionResultEnum.ERROR.exception("该学校没有内置的学校管理员");
             }
             SysUser requestUser = requestUserList.get(0);
@@ -417,7 +420,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                     commonService.removeUserInfo(sysUser.getId());
                 }
                 //如果修改了机构或手机号,需更新用户缓存
-                if (Objects.nonNull(dbUser.getOrgId())){
+                if (Objects.nonNull(dbUser.getOrgId())) {
                     if (containsQuestionTeacher || dbUser.getOrgId().longValue() != sysUser.getOrgId().longValue()
                             || !Objects.equals(dbUser.getMobileNumber(), sysUser.getMobileNumber())) {
                         cacheService.updateUserCache(sysUser.getId());

+ 1 - 5
teachcloud-task/src/main/java/com/qmth/teachcloud/task/job/TimedSyncSchoolJob.java

@@ -23,13 +23,9 @@ public class TimedSyncSchoolJob extends QuartzJobBean {
         try {
             jobService.updateSchoolInfo();
             jobService.updatePrintPlan();
+            jobService.syncData();
         } catch (IOException e) {
             e.printStackTrace();
         }
-        try {
-            jobService.updatePrintPlan();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
     }
 }

+ 5 - 0
teachcloud-task/src/main/java/com/qmth/teachcloud/task/job/service/JobService.java

@@ -53,4 +53,9 @@ public interface JobService {
      * @param redisKey
      */
     public void assembleJob(String redisKey);
+
+    /**
+     * 同步数据到云阅卷
+     */
+    void syncData();
 }

+ 6 - 0
teachcloud-task/src/main/java/com/qmth/teachcloud/task/job/service/impl/JobServiceImpl.java

@@ -122,6 +122,12 @@ public class JobServiceImpl implements JobService {
         basicMessageService.resendSmsTask();
     }
 
+    @Override
+    public void syncData() {
+        // 2021-05-20 同步数据到云阅卷
+        dataSyncService.syncToCloudReview();
+    }
+
     /**
      * 组装job
      *