xiaof 3 lat temu
rodzic
commit
9f3204f383
14 zmienionych plików z 486 dodań i 36 usunięć
  1. 57 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/TaskPrintParams.java
  2. 174 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamTaskPrint.java
  3. 13 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TBSyncTask.java
  4. 15 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamTaskPrintMapper.java
  5. 2 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamPrintPlanService.java
  6. 17 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskPrintService.java
  7. 1 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DataSyncServiceImpl.java
  8. 8 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPrintPlanServiceImpl.java
  9. 19 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskPrintServiceImpl.java
  10. 4 0
      distributed-print-business/src/main/resources/mapper/ExamTaskPrintMapper.xml
  11. 0 30
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPrintPlanController.java
  12. 126 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPrintPlanSyncController.java
  13. 20 3
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java
  14. 30 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysOrgServiceImpl.java

+ 57 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/TaskPrintParams.java

@@ -0,0 +1,57 @@
+package com.qmth.distributed.print.business.bean.params;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.distributed.print.business.entity.ExamTaskPrint;
+import com.qmth.distributed.print.business.enums.ChooseTypeEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 发布印刷任务
+ */
+public class TaskPrintParams implements Serializable {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    Long printPlanId;
+
+    Long examStartTime;
+
+    Long examEndTime;
+
+    List<ExamTaskPrint> list;
+
+    public Long getPrintPlanId() {
+        return printPlanId;
+    }
+
+    public void setPrintPlanId(Long printPlanId) {
+        this.printPlanId = printPlanId;
+    }
+
+    public Long getExamStartTime() {
+        return examStartTime;
+    }
+
+    public void setExamStartTime(Long examStartTime) {
+        this.examStartTime = examStartTime;
+    }
+
+    public Long getExamEndTime() {
+        return examEndTime;
+    }
+
+    public void setExamEndTime(Long examEndTime) {
+        this.examEndTime = examEndTime;
+    }
+
+    public List<ExamTaskPrint> getList() {
+        return list;
+    }
+
+    public void setList(List<ExamTaskPrint> list) {
+        this.list = list;
+    }
+}

+ 174 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamTaskPrint.java

@@ -0,0 +1,174 @@
+package com.qmth.distributed.print.business.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.common.base.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 以试卷作为起点生成考务数据
+ * </p>
+ *
+ * @author xf
+ * @since 2021-03-23
+ */
+@TableName("exam_task_print")
+public class ExamTaskPrint extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @TableField("school_id")
+    private Long schoolId;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @TableField("org_id")
+    private Long orgId;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @TableField("print_plan_id")
+    private Long printPlanId;
+
+    @TableField("exam_start_time")
+    private Long examStartTime;
+
+    @TableField("exam_end_time")
+    private Long examEndTime;
+
+    @TableField("package_code")
+    private String packageCode;
+
+    @TableField("exam_place")
+    private String examPlace;
+
+    @TableField("exam_room")
+    private String examRoom;
+
+    @TableField("invigilatro_teacher")
+    private String invigilatroTeacher;
+
+    @TableField("class_id")
+    private String classId;
+
+    @TableField(value = "class_name")
+    private String className;
+
+    @TableField(value = "student_count")
+    private Integer studentCount;
+
+    @TableField(value = "print_house")
+    private String printHouse;
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Long getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(Long schoolId) {
+        this.schoolId = schoolId;
+    }
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    public Long getPrintPlanId() {
+        return printPlanId;
+    }
+
+    public void setPrintPlanId(Long printPlanId) {
+        this.printPlanId = printPlanId;
+    }
+
+    public Long getExamStartTime() {
+        return examStartTime;
+    }
+
+    public void setExamStartTime(Long examStartTime) {
+        this.examStartTime = examStartTime;
+    }
+
+    public Long getExamEndTime() {
+        return examEndTime;
+    }
+
+    public void setExamEndTime(Long examEndTime) {
+        this.examEndTime = examEndTime;
+    }
+
+    public String getPackageCode() {
+        return packageCode;
+    }
+
+    public void setPackageCode(String packageCode) {
+        this.packageCode = packageCode;
+    }
+
+    public String getExamPlace() {
+        return examPlace;
+    }
+
+    public void setExamPlace(String examPlace) {
+        this.examPlace = examPlace;
+    }
+
+    public String getExamRoom() {
+        return examRoom;
+    }
+
+    public void setExamRoom(String examRoom) {
+        this.examRoom = examRoom;
+    }
+
+    public String getInvigilatroTeacher() {
+        return invigilatroTeacher;
+    }
+
+    public void setInvigilatroTeacher(String invigilatroTeacher) {
+        this.invigilatroTeacher = invigilatroTeacher;
+    }
+
+    public String getClassId() {
+        return classId;
+    }
+
+    public void setClassId(String classId) {
+        this.classId = classId;
+    }
+
+    public String getClassName() {
+        return className;
+    }
+
+    public void setClassName(String className) {
+        this.className = className;
+    }
+
+    public Integer getStudentCount() {
+        return studentCount;
+    }
+
+    public void setStudentCount(Integer studentCount) {
+        this.studentCount = studentCount;
+    }
+
+    public String getPrintHouse() {
+        return printHouse;
+    }
+
+    public void setPrintHouse(String printHouse) {
+        this.printHouse = printHouse;
+    }
+}

+ 13 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TBSyncTask.java

@@ -1,9 +1,7 @@
 package com.qmth.distributed.print.business.entity;
 
-import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.teachcloud.common.base.BaseEntity;
@@ -34,6 +32,11 @@ public class TBSyncTask extends BaseEntity implements Serializable {
     @TableField("org_id")
     private Long orgId;
 
+    @ApiModelProperty(value = "第三方关联id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @TableField("third_relate_id")
+    private Long thirdRelateId;
+
     @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "印刷计划id")
     @TableField(value = "print_plan_id")
@@ -79,6 +82,14 @@ public class TBSyncTask extends BaseEntity implements Serializable {
         this.orgId = orgId;
     }
 
+    public Long getThirdRelateId() {
+        return thirdRelateId;
+    }
+
+    public void setThirdRelateId(Long thirdRelateId) {
+        this.thirdRelateId = thirdRelateId;
+    }
+
     public Long getSchoolId() {
         return schoolId;
     }

+ 15 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamTaskPrintMapper.java

@@ -0,0 +1,15 @@
+package com.qmth.distributed.print.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.distributed.print.business.entity.ExamTaskPrint;
+
+/**
+ * <p>
+ * 以试卷作为起点生成考务数据 Mapper 接口
+ * </p>
+ *
+ * @author xf
+ * @since 2021-08-02
+ */
+public interface ExamTaskPrintMapper extends BaseMapper<ExamTaskPrint> {
+}

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

@@ -92,4 +92,6 @@ public interface ExamPrintPlanService extends IService<ExamPrintPlan> {
     void syncDataCloud(Long printPlanId, Long thirdRelateId);
 
     void syncDataMerge(SyncDataParam syncDataParam);
+
+    List<ExamPrintPlan> printSyncPlan(Long schoolId);
 }

+ 17 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskPrintService.java

@@ -0,0 +1,17 @@
+package com.qmth.distributed.print.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.distributed.print.business.bean.params.TaskPrintParams;
+import com.qmth.distributed.print.business.entity.ExamTaskPrint;
+
+/**
+ * <p>
+ * 以试卷作为起点生成考务数据 服务类
+ * </p>
+ *
+ * @author xf
+ * @since 2021-08-02
+ */
+public interface ExamTaskPrintService extends IService<ExamTaskPrint> {
+    void createTaskPrint(TaskPrintParams taskPrintParams);
+}

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

@@ -165,6 +165,7 @@ public class DataSyncServiceImpl implements DataSyncService {
 
             // 同步计划 -> 对应云阅卷考试
             ExamPrintPlan printPlan = examSave(examPrintPlan, thirdRelateId);
+            syncTask.setThirdRelateId(printPlan.getThirdRelateId());
             // 考试同步成功,才能同步考生和题卡
             if (Objects.nonNull(printPlan.getThirdRelateId())) {
                 studentSave(printPlan);

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

@@ -32,6 +32,7 @@ import com.qmth.teachcloud.common.enums.ClassifyEnum;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.ServletUtil;
+import io.swagger.annotations.Example;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -408,6 +409,13 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
         dataSyncService.syncDataMerge(syncDataParam);
     }
 
+    @Override
+    public List<ExamPrintPlan> printSyncPlan(Long schoolId) {
+        QueryWrapper<ExamPrintPlan> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(ExamPrintPlan::getSchoolId, schoolId).in(ExamPrintPlan::getStatus, Arrays.asList(PrintPlanStatusEnum.PRINT_FINISH, PrintPlanStatusEnum.END));
+        return null;
+    }
+
 
     /**
      * 查找子机构

+ 19 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskPrintServiceImpl.java

@@ -0,0 +1,19 @@
+package com.qmth.distributed.print.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.distributed.print.business.bean.params.TaskPrintParams;
+import com.qmth.distributed.print.business.entity.ExamTaskPrint;
+import com.qmth.distributed.print.business.mapper.ExamTaskPrintMapper;
+import com.qmth.distributed.print.business.service.ExamTaskPrintService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Date: 2021/8/2.
+ */
+@Service
+public class ExamTaskPrintServiceImpl extends ServiceImpl<ExamTaskPrintMapper, ExamTaskPrint> implements ExamTaskPrintService {
+    @Override
+    public void createTaskPrint(TaskPrintParams taskPrintParams) {
+
+    }
+}

+ 4 - 0
distributed-print-business/src/main/resources/mapper/ExamTaskPrintMapper.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.ExamTaskPrintMapper">
+</mapper>

+ 0 - 30
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPrintPlanController.java

@@ -324,35 +324,5 @@ 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)})
-    @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);
-    }
 }
 

+ 126 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPrintPlanSyncController.java

@@ -0,0 +1,126 @@
+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;
+import com.qmth.distributed.print.business.bean.dto.PrintTaskTotalDto;
+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;
+import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
+import com.qmth.distributed.print.business.service.ExamDetailService;
+import com.qmth.distributed.print.business.service.ExamPrintPlanService;
+import com.qmth.distributed.print.business.service.ExamTaskDetailService;
+import com.qmth.distributed.print.business.service.ExamTaskService;
+import com.qmth.distributed.print.business.templete.execute.AsyncDownloadPdfTempleteService;
+import com.qmth.teachcloud.common.bean.params.ArraysParams;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.entity.TBTask;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.TaskTypeEnum;
+import com.qmth.teachcloud.common.service.TBTaskService;
+import com.qmth.teachcloud.common.util.Result;
+import com.qmth.teachcloud.common.util.ResultUtil;
+import com.qmth.teachcloud.common.util.ServletUtil;
+import io.swagger.annotations.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * <p>
+ * 印刷计划管理 前端控制器
+ * </p>
+ *
+ * @author xf
+ * @since 2021-03-23
+ */
+@Api(tags = "印刷计划管理Controller")
+@RestController
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.exam}/print_sync")
+public class ExamPrintPlanSyncController {
+    @Resource
+    private ExamPrintPlanService examPrintPlanService;
+
+    /**
+     * 需要合并的计划查询
+     * @param printPlanId
+     * @param status
+     * @param startTime
+     * @param endTime
+     * @param pageNumber
+     * @param pageSize
+     * @return
+     */
+    @ApiOperation(value = "印刷计划查询")
+    @RequestMapping(value = "/list_sync", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
+    public Result findPrintPlanPage(@ApiParam(value = "印刷计划id") @RequestParam(required = false) String printPlanId,
+                                    @ApiParam(value = "印刷计划状态") @RequestParam(required = false) PrintPlanStatusEnum status,
+                                    @ApiParam(value = "计划创建时间段开始时间") @RequestParam(required = false) Long startTime,
+                                    @ApiParam(value = "计划创建时间段结束时间") @RequestParam(required = false) Long endTime,
+                                    @ApiParam(value = "分页页码", required = true) @RequestParam int pageNumber,
+                                    @ApiParam(value = "分页数", required = true) @RequestParam int pageSize) {
+
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        return ResultUtil.ok(examPrintPlanService.printPlanPage(schoolId, SystemConstant.convertIdToLong(printPlanId), status, startTime, endTime, pageNumber, pageSize));
+    }
+
+    @ApiOperation(value = "云阅卷考试ID查询")
+    @RequestMapping(value = "/list_relate_id", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
+    public Result findPrintPlanPage() {
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        return ResultUtil.ok(examPrintPlanService.printSyncPlan(schoolId));
+    }
+
+
+    /**
+     * 多计划合并同步
+     * @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)})
+    @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);
+    }
+}
+

+ 20 - 3
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.boot.api.exception.ApiException;
 import com.qmth.distributed.print.business.bean.dto.*;
+import com.qmth.distributed.print.business.bean.params.TaskPrintParams;
 import com.qmth.distributed.print.business.bean.result.EditResult;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.enums.*;
@@ -77,6 +78,9 @@ public class ExamTaskController {
     @Resource
     TeachcloudCommonService teachcloudCommonService;
 
+    @Autowired
+    private ExamTaskPrintService examTaskPrintService;
+
     /**
      * 查询
      *
@@ -531,11 +535,24 @@ public class ExamTaskController {
     @RequestMapping(value = "/paper_card_download_pdf", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
     public Result paperCardDownloadPdf(@RequestParam(value = "courseCode", required = false) String courseCode,
-                                  @RequestParam(value = "paperNumber", required = false) String paperNumber,
-                                  @RequestParam(value = "startTime", required = false) Long startTime,
-                                  @RequestParam(value = "endTime", required = false) Long endTime) {
+                                       @RequestParam(value = "paperNumber", required = false) String paperNumber,
+                                       @RequestParam(value = "startTime", required = false) Long startTime,
+                                       @RequestParam(value = "endTime", required = false) Long endTime) {
         TBTask tbTask = examTaskService.taskDownloadPdf(courseCode, paperNumber, startTime, endTime);
         return Objects.nonNull(tbTask) ? ResultUtil.ok(new EditResult(tbTask.getId())) : ResultUtil.error("创建任务失败");
     }
+
+    /**
+     * 发布印刷任务
+     * @param taskPrintParams
+     * @return
+     */
+    @ApiOperation(value = "卷库查询-发布印刷任务")
+    @RequestMapping(value = "/create_task_print", method = RequestMethod.POST)
+    public Result createTaskPrint(@RequestBody TaskPrintParams taskPrintParams) {
+        examTaskPrintService.createTaskPrint(taskPrintParams);
+        return ResultUtil.ok(true);
+    }
+
 }
 

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

@@ -11,6 +11,7 @@ import com.qmth.teachcloud.common.entity.SysRole;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.FieldUniqueEnum;
+import com.qmth.teachcloud.common.enums.OrgTypeEnum;
 import com.qmth.teachcloud.common.enums.RoleTypeEnum;
 import com.qmth.teachcloud.common.mapper.SysOrgMapper;
 import com.qmth.teachcloud.common.service.SysOrgService;
@@ -18,7 +19,6 @@ import com.qmth.teachcloud.common.service.SysRoleService;
 import com.qmth.teachcloud.common.service.SysUserService;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -92,6 +92,7 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
                 if (sysOrg != null) {
                     throw ExceptionResultEnum.ERROR.exception("机构代码已存在");
                 }
+                checkOrgTree(org);
                 org.insertInfo(sysUser.getId());
                 return this.save(org);
             } else { // 修改
@@ -115,6 +116,34 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         return true;
     }
 
+    /**
+     * 校验各机构关系
+     * @param org
+     */
+    private void checkOrgTree(SysOrg org) {
+        // 印刷厂不能设置子机构
+        if (Objects.nonNull(org.getParentId())) {
+            SysOrg parentOrg = this.getById(org.getParentId());
+            if (OrgTypeEnum.COLLEGE.equals(parentOrg.getType())) {
+                if (!OrgTypeEnum.FACULTY.equals(org.getType()) && !OrgTypeEnum.TEACHING_ROOM.equals(org.getType())) {
+                    throw ExceptionResultEnum.ERROR.exception("学院下只能设置院系或者教研室");
+                }
+            } else if (OrgTypeEnum.FACULTY.equals(parentOrg.getType())) {
+                if (!OrgTypeEnum.TEACHING_ROOM.equals(org.getType())) {
+                    throw ExceptionResultEnum.ERROR.exception("院系下只能设置教研室");
+                }
+            } else if (OrgTypeEnum.TEACHING_ROOM.equals(parentOrg.getType())) {
+                throw ExceptionResultEnum.ERROR.exception("教研室下不能设置子机构");
+            } else if (OrgTypeEnum.PRINTING_HOUSE.equals(parentOrg.getType())) {
+                throw ExceptionResultEnum.ERROR.exception("印刷厂不能设置子机构");
+            }
+        } else {
+            if (!OrgTypeEnum.COLLEGE.equals(org.getType()) && !OrgTypeEnum.PRINTING_HOUSE.equals(org.getType())) {
+                throw ExceptionResultEnum.ERROR.exception("一级机构只能设置学院或者印刷厂");
+            }
+        }
+    }
+
     @Override
     public SysOrg findByForeignKey(Long schoolId, String collegeCode, String collegeName) {
         List<SysOrg> tbSchoolCollegeList = this.list(new QueryWrapper<SysOrg>().lambda()