浏览代码

3.2.2-云阅卷考试同步、印品删除、用户删除、异步任务结果查询

xiaof 2 年之前
父节点
当前提交
060b3fd103
共有 21 个文件被更改,包括 402 次插入21 次删除
  1. 94 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TSyncStmmsExam.java
  2. 10 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TSyncStmmsExamMapper.java
  3. 3 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicPrintConfigService.java
  4. 2 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicTemplateService.java
  5. 2 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamPrintPlanService.java
  6. 16 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TSyncStmmsExamService.java
  7. 7 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicPrintConfigServiceImpl.java
  8. 47 12
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicTemplateServiceImpl.java
  9. 7 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPrintPlanServiceImpl.java
  10. 61 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TSyncStmmsExamServiceImpl.java
  11. 4 0
      distributed-print-business/src/main/resources/mapper/TSyncStmmsExamMapper.xml
  12. 12 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/BasicTemplateController.java
  13. 13 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/SysUserController.java
  14. 27 8
      distributed-print/src/main/java/com/qmth/distributed/print/api/TBTaskController.java
  15. 44 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/TSyncStmmsExamController.java
  16. 2 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java
  17. 2 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysUserService.java
  18. 3 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/TBTaskService.java
  19. 12 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java
  20. 8 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TBTaskServiceImpl.java
  21. 26 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/sync/CloudMarkingTaskUtils.java

+ 94 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TSyncStmmsExam.java

@@ -0,0 +1,94 @@
+package com.qmth.distributed.print.business.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * 云阅卷考试表
+ */
+@TableName("t_sync_stmms_exam")
+public class TSyncStmmsExam implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id")
+    private Long id;
+
+    @ApiModelProperty(value = "学校ID")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long schoolId;
+
+    @ApiModelProperty(value = "考试id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Integer examId;
+
+    @ApiModelProperty(value = "名称")
+    private String examName;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @TableField("create_id")
+    @ApiModelProperty(value = "创建人")
+    private Long createId;
+
+    @TableField(value = "create_time", fill = FieldFill.INSERT)//新增执行
+    @ApiModelProperty(value = "创建时间")
+    private Long createTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(Long schoolId) {
+        this.schoolId = schoolId;
+    }
+
+    public Integer getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Integer examId) {
+        this.examId = examId;
+    }
+
+    public String getExamName() {
+        return examName;
+    }
+
+    public void setExamName(String examName) {
+        this.examName = examName;
+    }
+
+    public Long getCreateId() {
+        return createId;
+    }
+
+    public void setCreateId(Long createId) {
+        this.createId = createId;
+    }
+
+    public Long getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Long createTime) {
+        this.createTime = createTime;
+    }
+}

+ 10 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TSyncStmmsExamMapper.java

@@ -0,0 +1,10 @@
+package com.qmth.distributed.print.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.distributed.print.business.entity.TSyncStmmsExam;
+
+/**
+ * 云阅卷考试表 Mapper 接口
+ */
+public interface TSyncStmmsExamMapper extends BaseMapper<TSyncStmmsExam> {
+}

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

@@ -48,7 +48,9 @@ public interface BasicPrintConfigService extends IService<BasicPrintConfig> {
 
 
     /**
     /**
      * 删除
      * 删除
-     * @param id 印品配置ID
+     * @param idList 印品配置ID
      */
      */
     boolean delete(List<Long> idList);
     boolean delete(List<Long> idList);
+
+    List<BasicPrintConfig> listBySchoolId(Long schoolId);
 }
 }

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

@@ -38,4 +38,6 @@ public interface BasicTemplateService extends IService<BasicTemplate> {
     List<TemplatePrintInfoResult> findTemplateInfoByOrgIds(List<Long> ids);
     List<TemplatePrintInfoResult> findTemplateInfoByOrgIds(List<Long> ids);
 
 
     String preview(Long id);
     String preview(Long id);
+
+    boolean remove(Long id);
 }
 }

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

@@ -116,4 +116,6 @@ public interface ExamPrintPlanService extends IService<ExamPrintPlan> {
      * @return 印刷计划
      * @return 印刷计划
      */
      */
     List<ExamPrintPlan> findByPaperNumber(Long schoolId,String paperNumber);
     List<ExamPrintPlan> findByPaperNumber(Long schoolId,String paperNumber);
+
+    List<ExamPrintPlan> listBySchoolId(Long schoolId);
 }
 }

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

@@ -0,0 +1,16 @@
+package com.qmth.distributed.print.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.distributed.print.business.entity.TSyncStmmsExam;
+
+import java.util.List;
+
+/**
+ * 云阅卷考试表 服务类
+ */
+public interface TSyncStmmsExamService extends IService<TSyncStmmsExam> {
+
+    List<TSyncStmmsExam> listExam();
+
+    List<TSyncStmmsExam> syncExam();
+}

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

@@ -246,4 +246,11 @@ public class BasicPrintConfigServiceImpl extends ServiceImpl<BasicPrintConfigMap
         }
         }
         return true;
         return true;
     }
     }
+
+    @Override
+    public List<BasicPrintConfig> listBySchoolId(Long schoolId) {
+        QueryWrapper<BasicPrintConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(BasicPrintConfig::getSchoolId, schoolId);
+        return this.list(queryWrapper);
+    }
 }
 }

+ 47 - 12
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicTemplateServiceImpl.java

@@ -10,14 +10,15 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.bean.dto.TemplateDto;
 import com.qmth.distributed.print.business.bean.dto.TemplateDto;
 import com.qmth.distributed.print.business.bean.result.TemplatePrintInfoResult;
 import com.qmth.distributed.print.business.bean.result.TemplatePrintInfoResult;
 import com.qmth.distributed.print.business.entity.BasicTemplate;
 import com.qmth.distributed.print.business.entity.BasicTemplate;
+import com.qmth.distributed.print.business.entity.ExamPrintPlan;
 import com.qmth.distributed.print.business.mapper.BasicTemplateMapper;
 import com.qmth.distributed.print.business.mapper.BasicTemplateMapper;
+import com.qmth.distributed.print.business.service.BasicPrintConfigService;
 import com.qmth.distributed.print.business.service.BasicTemplateService;
 import com.qmth.distributed.print.business.service.BasicTemplateService;
-import com.qmth.distributed.print.business.service.ExamCardDetailService;
-import com.qmth.distributed.print.business.service.ExamCardService;
+import com.qmth.distributed.print.business.service.ExamPrintPlanService;
 import com.qmth.distributed.print.business.util.PdfFillUtils;
 import com.qmth.distributed.print.business.util.PdfFillUtils;
-import com.qmth.teachcloud.common.config.DictionaryConfig;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicAttachment;
 import com.qmth.teachcloud.common.entity.BasicAttachment;
+import com.qmth.teachcloud.common.entity.BasicPrintConfig;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ClassifyEnum;
 import com.qmth.teachcloud.common.enums.ClassifyEnum;
 import com.qmth.teachcloud.common.enums.EnumResult;
 import com.qmth.teachcloud.common.enums.EnumResult;
@@ -25,7 +26,6 @@ import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.common.service.BasicAttachmentService;
 import com.qmth.teachcloud.common.service.BasicAttachmentService;
 import com.qmth.teachcloud.common.service.TeachcloudCommonService;
 import com.qmth.teachcloud.common.service.TeachcloudCommonService;
-import com.qmth.teachcloud.common.util.FileStoreUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -36,6 +36,7 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import java.io.File;
 import java.io.File;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 import java.util.Objects;
 import java.util.Objects;
 import java.util.StringJoiner;
 import java.util.StringJoiner;
@@ -55,12 +56,6 @@ public class BasicTemplateServiceImpl extends ServiceImpl<BasicTemplateMapper, B
     @Autowired
     @Autowired
     private BasicAttachmentService basicAttachmentService;
     private BasicAttachmentService basicAttachmentService;
 
 
-    @Autowired
-    private ExamCardService examCardService;
-
-    @Autowired
-    private ExamCardDetailService examCardDetailService;
-
     @Resource
     @Resource
     TeachcloudCommonService teachcloudCommonService;
     TeachcloudCommonService teachcloudCommonService;
 
 
@@ -68,10 +63,10 @@ public class BasicTemplateServiceImpl extends ServiceImpl<BasicTemplateMapper, B
     BasicTemplateMapper basicTemplateMapper;
     BasicTemplateMapper basicTemplateMapper;
 
 
     @Resource
     @Resource
-    DictionaryConfig dictionaryConfig;
+    BasicPrintConfigService basicPrintConfigService;
 
 
     @Resource
     @Resource
-    FileStoreUtil fileStoreUtil;
+    ExamPrintPlanService examPrintPlanService;
 
 
     @Override
     @Override
     public IPage<TemplateDto> list(Boolean enable, String type, String name, Long startTime, Long endTime, Integer pageNumber, Integer pageSize) {
     public IPage<TemplateDto> list(Boolean enable, String type, String name, Long startTime, Long endTime, Integer pageNumber, Integer pageSize) {
@@ -242,4 +237,44 @@ public class BasicTemplateServiceImpl extends ServiceImpl<BasicTemplateMapper, B
             throw ExceptionResultEnum.ERROR.exception("不支持当前模板预览");
             throw ExceptionResultEnum.ERROR.exception("不支持当前模板预览");
         }
         }
     }
     }
+
+    @Override
+    public boolean remove(Long id) {
+        BasicTemplate basicTemplate = this.getById(id);
+        // 考试关联印品
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        List<BasicPrintConfig> basicPrintConfigList = basicPrintConfigService.listBySchoolId(schoolId);
+        if (!basicPrintConfigList.isEmpty()) {
+            List<JSONObject> objects = new ArrayList<>();
+            for (BasicPrintConfig basicPrintConfig : basicPrintConfigList) {
+                if (ClassifyEnum.SIGN.equals(basicTemplate.getClassify()) || ClassifyEnum.PACKAGE.equals(basicTemplate.getClassify())) {
+                    objects = JSON.parseArray(basicPrintConfig.getVariableContent(), JSONObject.class);
+                } else if (ClassifyEnum.CHECK_IN.equals(basicTemplate.getClassify())) {
+                    objects = JSON.parseArray(basicPrintConfig.getOrdinaryContent(), JSONObject.class);
+                }
+                List<JSONObject> jsonObjects = objects.stream().filter(m -> m.getString("type").equals(basicTemplate.getClassify().name()) && m.getLong("templateId").equals(id)).collect(Collectors.toList());
+                if (!jsonObjects.isEmpty()) {
+                    throw ExceptionResultEnum.ERROR.exception("该印品已在考试中设置,不能删除");
+                }
+            }
+        }
+        // 计划关联印品
+        List<ExamPrintPlan> examPrintPlans = examPrintPlanService.listBySchoolId(schoolId);
+        if (!examPrintPlans.isEmpty()) {
+            List<JSONObject> objects = new ArrayList<>();
+            for (ExamPrintPlan examPrintPlan : examPrintPlans) {
+                if (ClassifyEnum.SIGN.equals(basicTemplate.getClassify()) || ClassifyEnum.PACKAGE.equals(basicTemplate.getClassify())) {
+                    objects = JSON.parseArray(examPrintPlan.getVariableContent(), JSONObject.class);
+                } else if (ClassifyEnum.CHECK_IN.equals(basicTemplate.getClassify())) {
+                    objects = JSON.parseArray(examPrintPlan.getOrdinaryContent(), JSONObject.class);
+                }
+                List<JSONObject> jsonObjects = objects.stream().filter(m -> m.getString("type").equals(basicTemplate.getClassify().name()) && m.getLong("templateId").equals(id)).collect(Collectors.toList());
+                if (!jsonObjects.isEmpty()) {
+                    throw ExceptionResultEnum.ERROR.exception("该印品已在印刷计划中设置,不能删除");
+                }
+            }
+        }
+
+        return this.removeById(id);
+    }
 }
 }

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

@@ -562,6 +562,13 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
         return examPrintPlanList;
         return examPrintPlanList;
     }
     }
 
 
+    @Override
+    public List<ExamPrintPlan> listBySchoolId(Long schoolId) {
+        QueryWrapper<ExamPrintPlan> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(ExamPrintPlan::getSchoolId, schoolId);
+        return this.list(queryWrapper);
+    }
+
 
 
     /**
     /**
      * 查找子机构
      * 查找子机构

+ 61 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TSyncStmmsExamServiceImpl.java

@@ -0,0 +1,61 @@
+package com.qmth.distributed.print.business.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.distributed.print.business.entity.TSyncStmmsExam;
+import com.qmth.distributed.print.business.mapper.TSyncStmmsExamMapper;
+import com.qmth.distributed.print.business.service.TSyncStmmsExamService;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.sync.CloudMarkingTaskUtils;
+import com.qmth.teachcloud.common.util.ServletUtil;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+public class TSyncStmmsExamServiceImpl extends ServiceImpl<TSyncStmmsExamMapper, TSyncStmmsExam> implements TSyncStmmsExamService {
+
+    @Resource
+    CloudMarkingTaskUtils cloudMarkingTaskUtils;
+
+    @Override
+    public List<TSyncStmmsExam> listExam() {
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        QueryWrapper<TSyncStmmsExam> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(TSyncStmmsExam::getSchoolId, schoolId)
+                .orderByDesc(TSyncStmmsExam::getExamId);
+        return this.list(queryWrapper);
+    }
+
+    @Transactional
+    @Override
+    public List<TSyncStmmsExam> syncExam() {
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        UpdateWrapper<TSyncStmmsExam> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().eq(TSyncStmmsExam::getSchoolId, schoolId);
+        this.remove(updateWrapper);
+
+        List<JSONObject> objectList = cloudMarkingTaskUtils.getExam(schoolId, SystemConstant.PAGE_NUMBER_MIN, SystemConstant.PAGE_SIZE);
+        if (objectList.isEmpty()) {
+            throw ExceptionResultEnum.ERROR.exception("未查询到考试");
+        }
+        List<TSyncStmmsExam> markingExams = objectList.stream().map(m -> {
+            TSyncStmmsExam cloudMarkingExam = new TSyncStmmsExam();
+            cloudMarkingExam.setId(SystemConstant.getDbUuid());
+            cloudMarkingExam.setSchoolId(schoolId);
+            cloudMarkingExam.setExamId(m.getInteger("id"));
+            cloudMarkingExam.setExamName(m.getString("name"));
+            return cloudMarkingExam;
+        }).collect(Collectors.toList());
+        if (!markingExams.isEmpty()) {
+            this.saveBatch(markingExams);
+        }
+        return markingExams;
+    }
+}

+ 4 - 0
distributed-print-business/src/main/resources/mapper/TSyncStmmsExamMapper.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.qmth.distributed.print.business.mapper.TSyncStmmsExamMapper">
+</mapper>

+ 12 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/BasicTemplateController.java

@@ -102,6 +102,18 @@ public class BasicTemplateController {
         return ResultUtil.ok(isSuccess);
         return ResultUtil.ok(isSuccess);
     }
     }
 
 
+    /**
+     * 删除
+     *
+     * @param id 印品ID
+     * @return
+     */
+    @ApiOperation(value = "删除")
+    @RequestMapping(value = "/remove", method = RequestMethod.POST)
+    public Result enable(@RequestParam(value = "id", required = true) Long id) {
+        return ResultUtil.ok(basicTemplateService.remove(id));
+    }
+
     /**
     /**
      * 读取模板内容
      * 读取模板内容
      *
      *

+ 13 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/SysUserController.java

@@ -10,6 +10,7 @@ import com.qmth.distributed.print.business.service.PrintCommonService;
 import com.qmth.distributed.print.business.templete.execute.AsyncSysUserDataImportService;
 import com.qmth.distributed.print.business.templete.execute.AsyncSysUserDataImportService;
 import com.qmth.teachcloud.common.bean.params.UserSaveParams;
 import com.qmth.teachcloud.common.bean.params.UserSaveParams;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.TBTask;
 import com.qmth.teachcloud.common.entity.TBTask;
 import com.qmth.teachcloud.common.enums.TaskTypeEnum;
 import com.qmth.teachcloud.common.enums.TaskTypeEnum;
@@ -172,6 +173,18 @@ public class SysUserController {
         return ResultUtil.ok(sysUserService.removeBasicCourseBatch(idList));
         return ResultUtil.ok(sysUserService.removeBasicCourseBatch(idList));
     }
     }
 
 
+    /**
+     * 删除
+     *
+     * @param id 用户ID
+     * @return
+     */
+    @ApiOperation(value = "删除")
+    @RequestMapping(value = "/remove", method = RequestMethod.POST)
+    public Result remove(@RequestParam(value = "id", required = true) Long id) throws NoSuchAlgorithmException {
+        return ResultUtil.ok(sysUserService.remove(id));
+    }
+
     /**
     /**
      * 重置密码
      * 重置密码
      *
      *

+ 27 - 8
distributed-print/src/main/java/com/qmth/distributed/print/api/TBTaskController.java

@@ -24,10 +24,7 @@ import io.swagger.annotations.*;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import javax.validation.constraints.Max;
 import javax.validation.constraints.Max;
@@ -45,7 +42,7 @@ import java.util.*;
  */
  */
 @Api(tags = "数据管理-任务管理Controller")
 @Api(tags = "数据管理-任务管理Controller")
 @RestController
 @RestController
-@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX  + SystemConstant.PREFIX_URL_DATA)
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX  + SystemConstant.PREFIX_URL_DATA +"/task")
 @Validated
 @Validated
 public class TBTaskController {
 public class TBTaskController {
     private final static Logger log = LoggerFactory.getLogger(TBTaskController.class);
     private final static Logger log = LoggerFactory.getLogger(TBTaskController.class);
@@ -57,7 +54,7 @@ public class TBTaskController {
     RedisUtil redisUtil;
     RedisUtil redisUtil;
 
 
     @ApiOperation(value = "任务管理查询接口")
     @ApiOperation(value = "任务管理查询接口")
-    @RequestMapping(value = "/task/query", method = RequestMethod.POST)
+    @RequestMapping(value = "/query", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "任务管理列表信息", response = TaskListResult.class)})
     @ApiResponses({@ApiResponse(code = 200, message = "任务管理列表信息", response = TaskListResult.class)})
     public Result taskQuery(@ApiParam(value = "印刷计划id", required = false) @RequestParam(required = false) String printPlanId,
     public Result taskQuery(@ApiParam(value = "印刷计划id", required = false) @RequestParam(required = false) String printPlanId,
                             @ApiParam(value = "任务状态", required = false) @RequestParam(required = false) TaskStatusEnum status,
                             @ApiParam(value = "任务状态", required = false) @RequestParam(required = false) TaskStatusEnum status,
@@ -81,7 +78,7 @@ public class TBTaskController {
     }
     }
 
 
     @ApiOperation(value = "重新生成pdf")
     @ApiOperation(value = "重新生成pdf")
-    @RequestMapping(value = "/task/reset_create_pdf", method = RequestMethod.POST)
+    @RequestMapping(value = "/reset_create_pdf", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "重新生成pdf", response = EditResult.class)})
     @ApiResponses({@ApiResponse(code = 200, message = "重新生成pdf", response = EditResult.class)})
     public Result resetCreatePdf(@ApiParam(value = "任务id", required = true) @RequestParam String id) throws IOException {
     public Result resetCreatePdf(@ApiParam(value = "任务id", required = true) @RequestParam String id) throws IOException {
         Long taskId = Long.parseLong(id);
         Long taskId = Long.parseLong(id);
@@ -103,8 +100,30 @@ public class TBTaskController {
         return ResultUtil.ok(new EditResult());
         return ResultUtil.ok(new EditResult());
     }
     }
 
 
+    @ApiOperation(value = "任务管理查询接口")
+    @PostMapping("/query_result")
+    @ApiResponses({@ApiResponse(code = 200, message = "任务管理列表信息", response = TaskListResult.class)})
+    public Result taskQuery(@ApiParam(value = "任务状态", required = false) @RequestParam(required = false) TaskStatusEnum status,
+                            @ApiParam(value = "任务类型", required = false) @RequestParam(required = false) TaskTypeEnum type,
+                            @ApiParam(value = "任务数据结果", required = false) @RequestParam(required = false) TaskResultEnum result,
+                            @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
+                            @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
+        IPage<TaskListResult> taskListResultIPage = tbTaskService.queryResult(new Page<>(pageNumber, pageSize), status, type, result);
+        if (Objects.nonNull(taskListResultIPage) && Objects.nonNull(taskListResultIPage.getRecords()) && taskListResultIPage.getRecords().size() > 0) {
+            List<TaskListResult> taskListResultList = taskListResultIPage.getRecords();
+            for (TaskListResult taskListResult : taskListResultList) {
+                if (Objects.equals(taskListResult.getStatus(), TaskStatusEnum.FINISH.getTitle()) && Objects.equals(taskListResult.getResult(), TaskResultEnum.ERROR.getTitle())
+                        && Objects.equals(taskListResult.getType(), TaskTypeEnum.CREATE_PDF.getTitle())
+                        && Objects.isNull(taskListResult.getErrorMessage())) {
+                    taskListResult.setResetCreatePdf(true);
+                }
+            }
+        }
+        return ResultUtil.ok(taskListResultIPage);
+    }
+
 //    @ApiOperation(value = "任务管理_批量删除&清空接口")
 //    @ApiOperation(value = "任务管理_批量删除&清空接口")
-//    @RequestMapping(value = "/task/delete", method = RequestMethod.POST)
+//    @RequestMapping(value = "/delete", method = RequestMethod.POST)
 //    @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
 //    @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
 //    @Transactional
 //    @Transactional
 //    public Result taskDelete(@ApiParam(value = "数组id和选择类型", required = true) @RequestBody ChooseParams chooseParams) {
 //    public Result taskDelete(@ApiParam(value = "数组id和选择类型", required = true) @RequestBody ChooseParams chooseParams) {

+ 44 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/TSyncStmmsExamController.java

@@ -0,0 +1,44 @@
+package com.qmth.distributed.print.api;
+
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.distributed.print.business.service.TSyncStmmsExamService;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.util.Result;
+import com.qmth.teachcloud.common.util.ResultUtil;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * <p>
+ * 云阅卷考试表 前端控制器
+ * </p>
+ */
+@RestController
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_BASIC + "/stmms_exam")
+public class TSyncStmmsExamController {
+
+    @Resource
+    private TSyncStmmsExamService tSyncStmmsExamService;
+
+    /**
+     * 查询云阅卷考试
+     */
+    @ApiOperation(value = "查询云阅卷考试")
+    @PostMapping("/list")
+    public Result listExam() {
+        return ResultUtil.ok(tSyncStmmsExamService.listExam());
+    }
+
+    /**
+     * 同步云阅卷考试
+     */
+    @ApiOperation(value = "同步云阅卷考试")
+    @PostMapping("/sync")
+    public Result syncExam() {
+        return ResultUtil.ok(tSyncStmmsExamService.syncExam());
+    }
+}

+ 2 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -70,6 +70,8 @@ public class SystemConstant {
      * 云阅卷api
      * 云阅卷api
      */
      */
     public static final String CLOUD_MARK_EXAM_SAVE_API = "/api/exam/save";
     public static final String CLOUD_MARK_EXAM_SAVE_API = "/api/exam/save";
+
+    public static final String CLOUD_MARK_EXAM_LIST_API = "/api/exams";
     public static final String CLOUD_MARK_EXAM_STUDENT_SAVE_API = "/api/exam/student/save";
     public static final String CLOUD_MARK_EXAM_STUDENT_SAVE_API = "/api/exam/student/save";
     public static final String CLOUD_MARK_FILE_UPLOAD_API = "/api/file/{type}/upload";
     public static final String CLOUD_MARK_FILE_UPLOAD_API = "/api/file/{type}/upload";
     public static final String CLOUD_MARK_EXAM_PAPER_QUERY_API = "/api/exam/paper/query";
     public static final String CLOUD_MARK_EXAM_PAPER_QUERY_API = "/api/exam/paper/query";

+ 2 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysUserService.java

@@ -259,4 +259,6 @@ public interface SysUserService extends IService<SysUser> {
     void buildAdministratorForSchool(Long schoolId);
     void buildAdministratorForSchool(Long schoolId);
 
 
      boolean removeBasicCourseBatch(List<Long> idList);
      boolean removeBasicCourseBatch(List<Long> idList);
+
+    boolean remove(Long id) throws NoSuchAlgorithmException;
 }
 }

+ 3 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/TBTaskService.java

@@ -1,6 +1,7 @@
 package com.qmth.teachcloud.common.service;
 package com.qmth.teachcloud.common.service;
 
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.teachcloud.common.bean.params.ArraysParams;
 import com.qmth.teachcloud.common.bean.params.ArraysParams;
 import com.qmth.teachcloud.common.bean.result.TaskListResult;
 import com.qmth.teachcloud.common.bean.result.TaskListResult;
@@ -132,4 +133,6 @@ public interface TBTaskService extends IService<TBTask> {
      * @return
      * @return
      */
      */
     public TBTask saveTaskCommon(BasicAttachment basicAttachment, TaskTypeEnum taskTypeEnum, Map map, SysUser sysUser);
     public TBTask saveTaskCommon(BasicAttachment basicAttachment, TaskTypeEnum taskTypeEnum, Map map, SysUser sysUser);
+
+    IPage<TaskListResult> queryResult(Page<Map> iPage, TaskStatusEnum status, TaskTypeEnum type, TaskResultEnum result);
 }
 }

+ 12 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

@@ -1053,6 +1053,18 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return true;
         return true;
     }
     }
 
 
+    @Override
+    public boolean remove(Long id) throws NoSuchAlgorithmException {
+        this.removeById(id);
+        //如果用户被删除,需要踢下线重新登录
+        commonService.removeUserInfo(id, true);
+        commonCacheService.removeUserCache(id);
+        commonCacheService.removeUserAuthCache(id);
+        commonCacheService.removeUserMenuCache(id);
+        commonCacheService.removeUserRolePrivilegeCache(id);
+        return true;
+    }
+
     /**
     /**
      * 批量处理用户信息帮助类
      * 批量处理用户信息帮助类
      *
      *

+ 8 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TBTaskServiceImpl.java

@@ -2,6 +2,7 @@ package com.qmth.teachcloud.common.service.impl;
 
 
 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.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.boot.api.exception.ApiException;
 import com.qmth.boot.api.exception.ApiException;
 import com.qmth.teachcloud.common.bean.params.ArraysParams;
 import com.qmth.teachcloud.common.bean.params.ArraysParams;
@@ -259,4 +260,11 @@ public class TBTaskServiceImpl extends ServiceImpl<TBTaskMapper, TBTask> impleme
         map.computeIfAbsent(SystemConstant.TB_TASK_ID, v -> tbTask.getId());
         map.computeIfAbsent(SystemConstant.TB_TASK_ID, v -> tbTask.getId());
         return tbTask;
         return tbTask;
     }
     }
+
+    @Override
+    public IPage<TaskListResult> queryResult(Page<Map> iPage, TaskStatusEnum status, TaskTypeEnum type, TaskResultEnum result) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        return tbTaskMapper.query(iPage, schoolId, null, Objects.nonNull(status) ? status.name() : null, Objects.nonNull(type) ? type.name() : null, Objects.nonNull(result) ? result.name() : null, sysUser.getId(), null);
+    }
 }
 }

+ 26 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/sync/CloudMarkingTaskUtils.java

@@ -91,6 +91,32 @@ public class CloudMarkingTaskUtils {
         }
         }
     }
     }
 
 
+    /**
+     * 考试成绩考生查询接口
+     *
+     * @param pageNo   分页参数
+     * @param pageSize 分页参数
+     */
+    public List<JSONObject> getExam(Long schoolId, int pageNo, int pageSize) {
+        Map<String, String> paramMap = new HashMap<>();
+        paramMap.put("pageNumber", String.valueOf(pageNo));
+        paramMap.put("pageSize", String.valueOf(pageSize));
+
+        SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.CLOUDMARK_HOST_URL);
+        Optional.ofNullable(sysConfig).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置云阅卷地址"));
+        String yyjRootUrl = sysConfig.getConfigValue();
+        String examUrl = SystemConstant.CLOUD_MARK_EXAM_LIST_API;
+
+        if (StringUtils.isAnyBlank(yyjRootUrl, examUrl)) {
+            throw ExceptionResultEnum.ERROR.exception("考试查询接口url未设置");
+        }
+
+        Map<String, String> header = getHeaders(schoolId, examUrl);
+        //请求
+        String examObject = HttpKit.sendPost(yyjRootUrl + examUrl, paramMap, header);
+        return JSONObject.parseArray(JSONObject.toJSON(examObject).toString(), JSONObject.class);
+    }
+
     public PushResult syncUser(UserPushParam userPushParam) throws IllegalAccessException {
     public PushResult syncUser(UserPushParam userPushParam) throws IllegalAccessException {
         DBVerifyResult verifyResult = SystemConstant.verifyDBFields(userPushParam, userPushParam.getClass());
         DBVerifyResult verifyResult = SystemConstant.verifyDBFields(userPushParam, userPushParam.getClass());
         if (!verifyResult.getStatus()) {
         if (!verifyResult.getStatus()) {