xiaofei 2 жил өмнө
parent
commit
d62ea8bd5a
18 өөрчлөгдсөн 145 нэмэгдсэн , 101 устгасан
  1. 1 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/CardRequiredFieldsEnum.java
  2. 35 21
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/RequiredFieldsEnum.java
  3. 2 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailService.java
  4. 3 10
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/PrintCommonService.java
  5. 4 17
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicExamRuleServiceImpl.java
  6. 5 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DataSyncServiceImpl.java
  7. 13 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java
  8. 2 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPrintPlanServiceImpl.java
  9. 20 19
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceImpl.java
  10. 7 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TBSyncTaskServiceImpl.java
  11. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TSyncStmmsExamServiceImpl.java
  12. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncCloudMarkingTaskService.java
  13. 7 0
      distributed-print-business/src/main/resources/db/log/脚本-xiaof.sql
  14. 15 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPrintPlanController.java
  15. 26 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/EnumResult.java
  16. 1 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysOrgService.java
  17. 1 2
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysOrgServiceImpl.java
  18. 0 10
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/ConvertUtil.java

+ 1 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/CardRequiredFieldsEnum.java

@@ -48,10 +48,9 @@ public enum CardRequiredFieldsEnum {
 //            }
 
             EnumResult result = new EnumResult();
-            result.setName(value.name());
+            result.setName(value.getDesc());
             result.setOrdinal(value.ordinal());
             result.setCode(value.getCode());
-            result.setDesc(value.getDesc());
             list.add(result);
         }
         return list;

+ 35 - 21
distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/RequiredFieldsEnum.java

@@ -11,36 +11,49 @@ import java.util.List;
  */
 public enum RequiredFieldsEnum {
 
-    STUDENT_CODE("studentCode", "学号"),
-//    TICKET_NUMBER("ticketNumber", "考号"),
-    SITE_NUMBER("siteNumber", "座位号"),
-    STUDENT_NAME("studentName","姓名"),
-    COURSE_CODE("courseCode","课程代码"),
-    COURSE_NAME("courseName","课程名称"),
-    PAPER_NUMBER("paperNumber","试卷编号"),
-    EXAM_PLACE("examPlace","考点"),
-    EXAM_ROOM("examRoom","考场"),
-    EXAM_DATE("examDate","考试日期"),
-    EXAM_TIME("examTime","考试时间"),
-    COLLEGE_NAME("collegeName","学院"),
-    MAJOR_NAME("majorName","专业"),
-    CLAZZ_NAME("clazzName","班级"),;
+    STUDENT_CODE("studentCode", "学号", true, true),
+    TICKET_NUMBER("ticketNumber", "考号", false, false),
+    SITE_NUMBER("siteNumber", "座位号", false, false),
+    STUDENT_NAME("studentName","姓名", true, true),
+    COURSE_CODE("courseCode","课程代码", true, true),
+    COURSE_NAME("courseName","课程名称", true, true),
+    PAPER_NUMBER("paperNumber","试卷编号", true, true),
+    EXAM_PLACE("examPlace","考点", true, true),
+    EXAM_ROOM("examRoom","考场", true, true),
+    EXAM_DATE("examDate","考试日期", true, true),
+    EXAM_TIME("examTime","考试时间", true, true),
+    COLLEGE_NAME("collegeName","学院", false, false),
+    MAJOR_NAME("majorName","专业", false, false),
+    CLAZZ_NAME("clazzName","班级", false, false),;
 
 
     private final String code;
-    private final String desc;
+    private final String name;
+
+    private final Boolean enable;
+    private final Boolean disabled;
 
     public String getCode() {
         return code;
     }
 
-    public String getDesc() {
-        return desc;
+    public String getName() {
+        return name;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public Boolean getDisabled() {
+        return disabled;
     }
 
-    RequiredFieldsEnum(String code, String desc) {
+    RequiredFieldsEnum(String code, String name, Boolean enable, Boolean disabled) {
         this.code = code;
-        this.desc = desc;
+        this.name = name;
+        this.enable = enable;
+        this.disabled = disabled;
     }
 
 
@@ -51,10 +64,11 @@ public enum RequiredFieldsEnum {
         List<EnumResult> list = new ArrayList<>();
         for (RequiredFieldsEnum value : RequiredFieldsEnum.values()) {
             EnumResult result = new EnumResult();
-            result.setName(value.name());
+            result.setName(value.getName());
             result.setOrdinal(value.ordinal());
             result.setCode(value.getCode());
-            result.setDesc(value.getDesc());
+            result.setEnable(value.getEnable());
+            result.setDisabled(value.getDisabled());
             list.add(result);
         }
         return list;

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

@@ -155,7 +155,8 @@ public interface ExamDetailService extends IService<ExamDetail> {
 
     boolean submitTask(ExamDetail examDetail) throws IOException;
 
-    boolean taskCancel(ExamDetail examDetail);
+    boolean taskCancel(Long id);
+    boolean taskBatchCancel(List<Long> ids);
 
     boolean resubmitTask(ExamDetail examDetail) throws IOException;
 

+ 3 - 10
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/PrintCommonService.java

@@ -230,14 +230,6 @@ public interface PrintCommonService {
      */
     public String createPaperNumber(Long schoolId, Long examId);
 
-    /**
-     * 生成唯一的准考证号
-     *
-     * @param schoolId
-     * @return
-     */
-    public String createTicketNumber(Long schoolId);
-
     /**
      * 校验是否可以提交
      *
@@ -286,10 +278,11 @@ public interface PrintCommonService {
     /**
      * 生成准考证号
      *
-     * @param serialNumberParams
+     * @param schoolId   学校ID
+     * @param totalDigit 考号位数
      * @return
      */
-    public String createTicketNumber(SerialNumberParams serialNumberParams);
+    public String createTicketNumber(Long schoolId, Integer totalDigit);
 
     /**
      * 保存任务附件(导出)

+ 4 - 17
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicExamRuleServiceImpl.java

@@ -12,20 +12,15 @@ import com.qmth.distributed.print.business.enums.RequiredFieldsEnum;
 import com.qmth.distributed.print.business.mapper.BasicExamRuleMapper;
 import com.qmth.distributed.print.business.service.BasicExamRuleService;
 import com.qmth.distributed.print.business.service.ExamPrintPlanService;
-import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
-import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.EnumResult;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
-import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
 import com.qmth.teachcloud.common.util.ServletUtil;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.DigestUtils;
 
 import javax.annotation.Resource;
-import java.io.File;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
@@ -45,8 +40,6 @@ public class BasicExamRuleServiceImpl extends ServiceImpl<BasicExamRuleMapper, B
 
     @Resource
     private ExamPrintPlanService examPrintPlanService;
-    @Resource
-    private BasicRoleDataPermissionService basicRoleDataPermissionService;
 
     @Override
     public BasicExamRule getBySchoolId() {
@@ -56,25 +49,19 @@ public class BasicExamRuleServiceImpl extends ServiceImpl<BasicExamRuleMapper, B
         QueryWrapper<BasicExamRule> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(BasicExamRule::getSchoolId, schoolId);
 
+        List<EnumResult> enumResultList = RequiredFieldsEnum.listTypes();
         BasicExamRule basicExamRule = this.getOne(queryWrapper);
         if (basicExamRule == null) {
-            List<EnumResult> enumResultList = RequiredFieldsEnum.listTypes();
-            List<JSONObject> requiredObjects = enumResultList.stream().map(m -> {
-                JSONObject jsonObject = new JSONObject();
-                jsonObject.put("code", m.getCode());
-                jsonObject.put("name", m.getDesc());
-                jsonObject.put("enable", true);
-                return jsonObject;
-            }).collect(Collectors.toList());
-
             basicExamRule = new BasicExamRule();
             basicExamRule.setSchoolId(schoolId);
             basicExamRule.setOrgId(sysUser.getOrgId());
-            basicExamRule.setRequiredFields(JSON.toJSONString(requiredObjects));
+            basicExamRule.setRequiredFields(JSON.toJSONString(enumResultList));
             String emptyObject = JSON.toJSONString(new ArrayList<>());
             basicExamRule.setExtendFields(emptyObject);
             basicExamRule.setSignScope(emptyObject);
             basicExamRule.setPackageScope(emptyObject);
+        } else {
+
         }
         return basicExamRule;
     }

+ 5 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DataSyncServiceImpl.java

@@ -10,6 +10,7 @@ import com.qmth.distributed.print.business.bean.dto.SyncExamStudentDto;
 import com.qmth.distributed.print.business.bean.dto.SyncExamTaskDto;
 import com.qmth.distributed.print.business.bean.marking.GroupInfo;
 import com.qmth.distributed.print.business.bean.marking.Marker;
+import com.qmth.distributed.print.business.bean.params.SyncDataParam;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.enums.ExamPaperStructureStatusEnum;
 import com.qmth.distributed.print.business.enums.ExamTaskSyncStatusEnum;
@@ -113,7 +114,7 @@ public class DataSyncServiceImpl implements DataSyncService {
         String errorMessage = null;
         Long schoolId = tbSyncTask.getSchoolId();
         Long objectId = tbSyncTask.getObjectId();
-        List<SyncExamTaskDto> params = JSONObject.parseArray(tbSyncTask.getRemark(), SyncExamTaskDto.class);
+        SyncDataParam syncDataParam = JSON.parseObject(tbSyncTask.getRemark(), SyncDataParam.class);
         Integer thirdRelateOrgId = null;
 
         // 各步骤状态
@@ -123,13 +124,13 @@ public class DataSyncServiceImpl implements DataSyncService {
             tbSyncTaskService.updateStatusAndResultById(tbSyncTask.getId(), null, status, null, null);
 
             // 按学院code进行分组,并按学院进行循环同步
-            Map<String, List<SyncExamTaskDto>> byCollegeCodeMap = params.stream().collect(Collectors.groupingBy(SyncExamTaskDto::getCollegeCode));
+            Map<String, List<SyncExamTaskDto>> byCollegeCodeMap = syncDataParam.getList().stream().collect(Collectors.groupingBy(SyncExamTaskDto::getCollegeCode));
             for (Map.Entry<String, List<SyncExamTaskDto>> entry : byCollegeCodeMap.entrySet()) {
                 // 本行为,若为按学校同步,则后续方法都传null,方便校验
                 String orgCode = cloudMarkingTaskUtils.isCollegeMode(schoolId) ? entry.getKey() : null;
 
                 if (StringUtils.isNotBlank(orgCode)) {
-                    SysOrg byCode = sysOrgService.findByCode(orgCode);
+                    SysOrg byCode = sysOrgService.findByCode(schoolId, orgCode);
                     // 同步机构
                     thirdRelateOrgId = saveSchool(schoolId, thirdRelateOrgId, orgCode, byCode.getName());
                 }
@@ -140,7 +141,7 @@ public class DataSyncServiceImpl implements DataSyncService {
                 }
 
                 //按课程做同步
-                for (SyncExamTaskDto param : params) {
+                for (SyncExamTaskDto param : syncDataParam.getList()) {
                     // 前置方法已经校验过各课程下是否有学院代码
                     // 同步考试
                     thirdRelateId = saveExam(schoolId, objectId, orgCode, thirdRelateId, thirdRelateName, examTime);

+ 13 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -455,13 +455,13 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
 
     @Transactional
     @Override
-    public boolean taskCancel(ExamDetail examDetail) {
-        ExamDetail detail = this.getById(examDetail.getId());
+    public boolean taskCancel(Long id) {
+        ExamDetail detail = this.getById(id);
         if (!detail.getStatus().name().equals(ExamDetailStatusEnum.WAITING.name())) {
             throw ExceptionResultEnum.ERROR.exception("印刷状态为“待印刷”的任务可撤回提交");
         }
         UpdateWrapper<ExamDetail> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.lambda().set(ExamDetail::getStatus, ExamDetailStatusEnum.READY).eq(ExamDetail::getId, examDetail.getId());
+        updateWrapper.lambda().set(ExamDetail::getStatus, ExamDetailStatusEnum.READY).eq(ExamDetail::getId, id);
         this.update(updateWrapper);
 
         //所有考场都撤回,印刷任务状态改为就绪
@@ -501,6 +501,15 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
         return true;
     }
 
+    @Transactional
+    @Override
+    public boolean taskBatchCancel(List<Long> ids) {
+        for (Long id : ids) {
+            taskCancel(id);
+        }
+        return true;
+    }
+
     @Override
     public boolean resubmitTask(ExamDetail examDetail) throws IOException {
         ExamDetail detail = this.getById(examDetail.getId());
@@ -679,7 +688,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             String studentCode = examinationImportDto.getStudentCode();
             String ticketNumber = null;
             if (Objects.isNull(examinationImportDto.getTicketNumber()) || Objects.equals(examinationImportDto.getTicketNumber().trim(), "")) {//如果为空
-                ticketNumber = printCommonService.createTicketNumber(schoolId);
+                ticketNumber = printCommonService.createTicketNumber(schoolId, 10);
             } else {
                 ticketNumber = examinationImportDto.getTicketNumber();
             }

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

@@ -1,6 +1,7 @@
 package com.qmth.distributed.print.business.service.impl;
 
 import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -451,7 +452,7 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
 
         Long objectId = SystemConstant.getDbUuid();
         String examTime = Objects.isNull(syncDataParam.getExamTime()) ? null : DateUtil.format(new Date(syncDataParam.getExamTime()), CloudMarkingTaskUtils.DATE_FORMAT);
-        asyncCloudMarkingTaskService.syncExamAndStudentAndCard(schoolId, objectId, syncDataParam.getThirdRelateId(), syncDataParam.getThirdRelateName(), examTime, params);
+        asyncCloudMarkingTaskService.syncExamAndStudentAndCard(schoolId, objectId, syncDataParam.getThirdRelateId(), syncDataParam.getThirdRelateName(), examTime, JSON.toJSONString(syncDataParam));
     }
 
     @Override

+ 20 - 19
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceImpl.java

@@ -1012,18 +1012,6 @@ public class PrintCommonServiceImpl implements PrintCommonService {
         }
     }
 
-    /**
-     * 生成唯一的准考证号
-     *
-     * @param schoolId
-     * @return
-     */
-    @Override
-    public String createTicketNumber(Long schoolId) {
-        String date = DateUtil.today().replace(SystemConstant.HYPHEN, "");
-        return convertUtil.getIncre(date.substring(2, date.length()), "ticketNumber" + schoolId, 4);
-    }
-
     /**
      * 校验是否可以提交
      *
@@ -1169,11 +1157,7 @@ public class PrintCommonServiceImpl implements PrintCommonService {
             examStudent.setPaperNumber(paperNumber);
             examStudent.setCollegeName(basicStudentResult.getCollegeName());
             examStudent.setMajorName(basicStudentResult.getMajorName());
-            String prefix = convertUtil.randomNumberPrefix(examShortCode, courseShortCode, map.get(String.valueOf(basicClazzId)), basicCardRule == null ? null : basicCardRule.getExamNumberDigit());
-            StringJoiner stringJoiner = new StringJoiner("-");
-            stringJoiner.add("ticketNumber").add(schoolId.toString()).add(semesterId);
-            SerialNumberParams ticketNumberParams = new SerialNumberParams(SystemConstant.NUMBER_CACHE + stringJoiner, prefix, StringUtils.isBlank(prefix) ? 8 : basicCardRule.getExamNumberDigit() - prefix.length());
-            examStudent.setTicketNumber(createTicketNumber(ticketNumberParams));
+            examStudent.setTicketNumber(createTicketNumber(schoolId, basicCardRule.getExamNumberDigit()));
             examStudent.setSiteNumber(String.valueOf(atomicInteger.getAndIncrement()));
             examStudent.setExtendFields(extendFields);
             examStudent.setCreateId(sysUser.getId());
@@ -1198,15 +1182,32 @@ public class PrintCommonServiceImpl implements PrintCommonService {
         return convertUtil.getIncre(serialNumberParams.getPrefix(), serialNumberParams.getModel(), serialNumberParams.getDigit());
     }
 
+
+    /**
+     * 生成唯一的准考证号
+     *
+     * @param schoolId   学校ID
+     * @param totalDigit 考号位数
+     * @return
+     */
     @Override
-    public String createTicketNumber(SerialNumberParams serialNumberParams) {
+    public String createTicketNumber(Long schoolId, Integer totalDigit) {
+        if (totalDigit == null) {
+            totalDigit = 10;
+        }
         try {
             try {
                 lock.tryLock(30, TimeUnit.SECONDS);
             } catch (InterruptedException e) {
                 log.error("生成准考证号失败");
             }
-            return convertUtil.getIncre(serialNumberParams.getPrefix(), serialNumberParams.getModel(), serialNumberParams.getDigit());
+            if (totalDigit <= 8) {
+                return convertUtil.getIncre("", SystemConstant.NUMBER_CACHE + "ticketNumber" + schoolId, totalDigit);
+            } else {
+                String date = DateUtil.today().replace(SystemConstant.HYPHEN, "");
+                String prefix = date.substring(2, date.length());
+                return convertUtil.getIncre(date.substring(2, date.length()), SystemConstant.NUMBER_CACHE + "ticketNumber" + schoolId, totalDigit - prefix.length());
+            }
         } finally {
             lock.unlock();
         }

+ 7 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TBSyncTaskServiceImpl.java

@@ -1,5 +1,6 @@
 package com.qmth.distributed.print.business.service.impl;
 
+import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -9,6 +10,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.bean.dto.SyncExamTaskDto;
 import com.qmth.distributed.print.business.bean.marking.GroupInfo;
+import com.qmth.distributed.print.business.bean.params.SyncDataParam;
 import com.qmth.distributed.print.business.entity.TBSyncTask;
 import com.qmth.distributed.print.business.mapper.TBSyncTaskMapper;
 import com.qmth.distributed.print.business.service.*;
@@ -26,15 +28,13 @@ import com.qmth.teachcloud.common.enums.TaskStatusEnum;
 import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
 import com.qmth.teachcloud.common.service.SysUserService;
 import com.qmth.teachcloud.common.service.TeachcloudCommonService;
+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.Map;
-import java.util.Objects;
-import java.util.Set;
+import java.util.*;
 
 /**
  * @Date: 2021/5/20.
@@ -241,7 +241,9 @@ public class TBSyncTaskServiceImpl extends ServiceImpl<TBSyncTaskMapper, TBSyncT
         }
         switch (tbSyncTask.getType()) {
             case EXAM_PUSH:
-                asyncCloudMarkingTaskService.syncExamAndStudentAndCard(tbSyncTask.getSchoolId(), tbSyncTask.getObjectId(), tbSyncTask.getThirdRelateId(), null, null, JSON.parseArray(tbSyncTask.getRemark(), SyncExamTaskDto.class));
+                SyncDataParam syncDataParam = JSON.parseObject(tbSyncTask.getRemark(), SyncDataParam.class);
+                String examTime = Objects.isNull(syncDataParam.getExamTime()) ? null : DateUtil.format(new Date(syncDataParam.getExamTime()), CloudMarkingTaskUtils.DATE_FORMAT);
+                asyncCloudMarkingTaskService.syncExamAndStudentAndCard(tbSyncTask.getSchoolId(), tbSyncTask.getObjectId(), syncDataParam.getThirdRelateId(), syncDataParam.getThirdRelateName(), examTime, tbSyncTask.getRemark());
                 break;
             case STRUCTURE_GROUP_PUSH:
                 asyncCloudMarkingTaskService.syncPaperStructureAndGroup(examPaperStructureService.getById(tbSyncTask.getObjectId()));

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

@@ -54,7 +54,7 @@ public class TSyncStmmsExamServiceImpl extends ServiceImpl<TSyncStmmsExamMapper,
             if (StringUtils.isBlank(orgCode)) {
                 throw ExceptionResultEnum.ERROR.exception("当前学校配置为按学院推送,请传入学院代码。若无法解决,请联系管理员。");
             } else {
-                SysOrg sysOrg = sysOrgService.findByCode(orgCode);
+                SysOrg sysOrg = sysOrgService.findByCode(schoolId, orgCode);
                 cloudMarkingTaskUtils.syncSchool(schoolId, orgCode, sysOrg.getName());
             }
         }

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncCloudMarkingTaskService.java

@@ -48,8 +48,8 @@ public class AsyncCloudMarkingTaskService {
      * @param objectId      同步对象ID(命题任务Id)
      * @param thirdRelateId 云阅卷考试ID
      */
-    public void syncExamAndStudentAndCard(Long schoolId, Long objectId, Long thirdRelateId, String thirdRelateName, String examTime, List<SyncExamTaskDto> params) {
-        TBSyncTask tbSyncTask = tbSyncTaskService.saveTask(schoolId, objectId, PushTypeEnum.EXAM_PUSH, JSONObject.toJSONString(params));
+    public void syncExamAndStudentAndCard(Long schoolId, Long objectId, Long thirdRelateId, String thirdRelateName, String examTime, String remark) {
+        TBSyncTask tbSyncTask = tbSyncTaskService.saveTask(schoolId, objectId, PushTypeEnum.EXAM_PUSH, remark);
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         dataSyncService.syncExamAndStudentAndCard(thirdRelateId, thirdRelateName, examTime, tbSyncTask, sysUser);
     }

+ 7 - 0
distributed-print-business/src/main/resources/db/log/脚本-xiaof.sql

@@ -22,4 +22,11 @@ ALTER TABLE `basic_card_rule`
     CHANGE COLUMN `objective_attention` `objective_attention` TEXT NULL COMMENT '客观题注意事项' ,
     CHANGE COLUMN `subjective_attention` `subjective_attention` TEXT NULL COMMENT '主观题注意事项' ;
 
+UPDATE `sys_privilege` SET `name` = '撤回提交' WHERE (`id` = '335');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('872', '批量撤回', 'BatchEnd', 'BUTTON', '47', '3', 'AUTH', '873', '1', '0', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('873', '批量撤回', '/api/admin/exam/print/task_batch_cancel', 'URL', '47', '4', 'AUTH', '1', '1', '1');
+
+UPDATE `sys_privilege` SET `related` = '395,435,557,665,792,793' WHERE (`id` = '394');
+UPDATE `sys_privilege` SET `related` = '395,435,557,665,792,793' WHERE (`id` = '397');
+
 -----------------------3.2.5 end----------------------

+ 15 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPrintPlanController.java

@@ -375,7 +375,21 @@ public class ExamPrintPlanController {
     @RequestMapping(value = "/task_cancel", method = RequestMethod.POST)
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
     public Result taskCancel(@RequestBody ExamDetail examDetail) {
-        boolean isSuccess = examDetailService.taskCancel(examDetail);
+        boolean isSuccess = examDetailService.taskCancel(examDetail.getId());
+        return ResultUtil.ok(isSuccess);
+    }
+
+    /**
+     * 批量撤回
+     *
+     * @param ids id集合
+     * @return
+     */
+    @ApiOperation(value = "印刷任务管理-撤回提交")
+    @RequestMapping(value = "/task_batch_cancel", method = RequestMethod.POST)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
+    public Result taskCancel(@RequestParam List<Long> ids) {
+        boolean isSuccess = examDetailService.taskBatchCancel(ids);
         return ResultUtil.ok(isSuccess);
     }
 

+ 26 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/EnumResult.java

@@ -25,6 +25,16 @@ public class EnumResult {
      */
     private String desc;
 
+    /**
+     * enum 是否选中
+     */
+    private Boolean enable;
+
+    /**
+     * enum 是否可选择
+     */
+    private Boolean disabled;
+
     public String getName() {
         return name;
     }
@@ -56,4 +66,20 @@ public class EnumResult {
     public void setDesc(String desc) {
         this.desc = desc;
     }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public Boolean getDisabled() {
+        return disabled;
+    }
+
+    public void setDisabled(Boolean disabled) {
+        this.disabled = disabled;
+    }
 }

+ 1 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysOrgService.java

@@ -200,5 +200,5 @@ public interface SysOrgService extends IService<SysOrg> {
      * @param orgCode
      * @return
      */
-    SysOrg findByCode(String orgCode);
+    SysOrg findByCode(Long schoolId, String orgCode);
 }

+ 1 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysOrgServiceImpl.java

@@ -609,8 +609,7 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
     }
 
     @Override
-    public SysOrg findByCode(String orgCode) {
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+    public SysOrg findByCode(Long schoolId, String orgCode) {
         QueryWrapper<SysOrg> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(SysOrg::getSchoolId, schoolId)
                 .eq(SysOrg::getCode, orgCode);

+ 0 - 10
teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/ConvertUtil.java

@@ -391,14 +391,4 @@ public class ConvertUtil {
         return fileList;
     }
 
-    public String randomNumberPrefix(String examShortCode, String courseShortCode, String clazzShortCode, Integer examNumberDigit) {
-        if (examNumberDigit == null || examNumberDigit < 7) {
-            return "";
-        } else if (examNumberDigit < 11) {
-            return examShortCode;
-        } else if (examNumberDigit < 13) {
-            return examShortCode + courseShortCode;
-        }
-        return examShortCode + courseShortCode + clazzShortCode;
-    }
 }