wangliang 3 anni fa
parent
commit
e01f8d1eec
17 ha cambiato i file con 608 aggiunte e 23 eliminazioni
  1. 58 0
      README.md
  2. 15 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/analyze/GradeBatchParam.java
  3. 148 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/analyze/GradeBatchPaperResult.java
  4. 35 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/GradeBatchPaper.java
  5. 13 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TSAuth.java
  6. 41 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/GradeBatchPaperMapper.java
  7. 33 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/GradeModuleDefineMapper.java
  8. 8 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/GradeBatchService.java
  9. 102 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/GradeModuleDefineService.java
  10. 36 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradeBatchServiceImpl.java
  11. 15 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradeModuleDefineServiceImpl.java
  12. 89 0
      distributed-print-business/src/main/resources/mapper/GradeBatchPaperMapper.xml
  13. 7 4
      distributed-print-business/src/main/resources/mapper/GradeModuleDefineMapper.xml
  14. 1 1
      pom.xml
  15. 4 4
      teachcloud-common-api/src/main/java/com/qmth/teachcloud/common/api/api/BasicSchoolController.java
  16. 3 3
      teachcloud-report/src/test/java/com/qmth/teachcloud/report/TeachcloudReportApplicationTests.java
  17. 0 0
      teachcloud-task/src/test/java/com/qmth/distributed/print/task/DistributedPrintTaskApplicationTests.java

+ 58 - 0
README.md

@@ -0,0 +1,58 @@
+package com.qmth.distributed.print.business.bean.params.analyze;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 分析试卷批次参数
+ * @Author: CaoZixuan
+ * @Date: 2022-05-26
+ */
+public class GradeBatchPaperParam {
+    @ApiModelProperty(value = "试卷编号")
+    private String paperNumber;
+
+    @ApiModelProperty(value = "试卷类型")
+    private String paperType;
+
+    @ApiModelProperty(value = "开课学院id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long teachCollegeId;
+
+    @ApiModelProperty(value = "开课学院名称")
+    private String teachCollegeName;
+
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+    public Long getTeachCollegeId() {
+        return teachCollegeId;
+    }
+
+    public void setTeachCollegeId(Long teachCollegeId) {
+        this.teachCollegeId = teachCollegeId;
+    }
+
+    public String getTeachCollegeName() {
+        return teachCollegeName;
+    }
+
+    public void setTeachCollegeName(String teachCollegeName) {
+        this.teachCollegeName = teachCollegeName;
+    }
+}

+ 15 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/analyze/GradeBatchParam.java

@@ -1,5 +1,8 @@
 package com.qmth.distributed.print.business.bean.params.analyze;
 
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import org.hibernate.validator.constraints.Range;
 
@@ -11,6 +14,10 @@ import javax.validation.constraints.NotNull;
  * @Date: 2022-05-24
  */
 public class GradeBatchParam {
+    @ApiModelProperty(value = "批次id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
     @ApiModelProperty(value = "批次名称")
     @NotNull(message = "请输入批次名称")
     private String batchName;
@@ -20,6 +27,14 @@ public class GradeBatchParam {
     @Range(min = 1L, message = "请选择批次时刻")
     private Long batchTime;
 
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
     public String getBatchName() {
         return batchName;
     }

+ 148 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/analyze/GradeBatchPaperResult.java

@@ -0,0 +1,148 @@
+package com.qmth.distributed.print.business.bean.result.analyze;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.distributed.print.business.enums.GradeAnalyzePaperStatusEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 批次试卷结果类
+ * @Author: CaoZixuan
+ * @Date: 2022-05-25
+ */
+public class GradeBatchPaperResult {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @ApiModelProperty(value = "学期名称")
+    private String semesterName;
+
+    @ApiModelProperty(value = "考试名称")
+    private String examName;
+
+    @ApiModelProperty(value = "课程编号")
+    private String courseCode;
+
+    @ApiModelProperty(value = "课程名称")
+    private String courseName;
+
+    @ApiModelProperty(value = "教研室id")
+    private Long teachingRoomId;
+
+    @ApiModelProperty(value = "开课学院id")
+    private Long teachCollegeId;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "开课学院名称")
+    private String teachCollegeName;
+
+    @ApiModelProperty(value = "命题教师")
+    private String teacherName;
+
+    @ApiModelProperty(value = "试卷编号")
+    private String paperNumber;
+
+    @ApiModelProperty(value = "试卷类型")
+    private String paperType;
+
+    @ApiModelProperty(value = "分析批次状态")
+    private GradeAnalyzePaperStatusEnum status;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getSemesterName() {
+        return semesterName;
+    }
+
+    public void setSemesterName(String semesterName) {
+        this.semesterName = semesterName;
+    }
+
+    public String getExamName() {
+        return examName;
+    }
+
+    public void setExamName(String examName) {
+        this.examName = examName;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public Long getTeachingRoomId() {
+        return teachingRoomId;
+    }
+
+    public void setTeachingRoomId(Long teachingRoomId) {
+        this.teachingRoomId = teachingRoomId;
+    }
+
+    public Long getTeachCollegeId() {
+        return teachCollegeId;
+    }
+
+    public void setTeachCollegeId(Long teachCollegeId) {
+        this.teachCollegeId = teachCollegeId;
+    }
+
+    public String getTeachCollegeName() {
+        return teachCollegeName;
+    }
+
+    public void setTeachCollegeName(String teachCollegeName) {
+        this.teachCollegeName = teachCollegeName;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+    public GradeAnalyzePaperStatusEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(GradeAnalyzePaperStatusEnum status) {
+        this.status = status;
+    }
+}

+ 35 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/GradeBatchPaper.java

@@ -4,7 +4,6 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.distributed.print.business.enums.GradeAnalyzePaperStatusEnum;
 import com.qmth.teachcloud.common.base.BaseEntity;
-import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -23,6 +22,10 @@ public class GradeBatchPaper extends BaseEntity implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    @ApiModelProperty(value = "学校id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long schoolId;
+
     @ApiModelProperty(value = "分析批次id")
     @JsonSerialize(using = ToStringSerializer.class)
     private Long batchId;
@@ -43,6 +46,21 @@ public class GradeBatchPaper extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "分析试卷状态")
     private GradeAnalyzePaperStatusEnum status;
 
+    @ApiModelProperty(value = "开课学院id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long teachCollegeId;
+
+    @ApiModelProperty(value = "开课学院名称")
+    private String teachCollegeName;
+
+    public Long getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(Long schoolId) {
+        this.schoolId = schoolId;
+    }
+
     public Long getBatchId() {
         return batchId;
     }
@@ -90,4 +108,20 @@ public class GradeBatchPaper extends BaseEntity implements Serializable {
     public void setStatus(GradeAnalyzePaperStatusEnum status) {
         this.status = status;
     }
+
+    public Long getTeachCollegeId() {
+        return teachCollegeId;
+    }
+
+    public void setTeachCollegeId(Long teachCollegeId) {
+        this.teachCollegeId = teachCollegeId;
+    }
+
+    public String getTeachCollegeName() {
+        return teachCollegeName;
+    }
+
+    public void setTeachCollegeName(String teachCollegeName) {
+        this.teachCollegeName = teachCollegeName;
+    }
 }

+ 13 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TSAuth.java

@@ -1,7 +1,11 @@
 package com.qmth.distributed.print.business.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.distributed.print.business.bean.result.analyze.GradeBatchResult;
 import com.qmth.distributed.print.business.entity.GradeBatch;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -12,5 +16,13 @@ import com.qmth.distributed.print.business.entity.GradeBatch;
  * @since 2022-05-20
  */
 public interface GradeBatchMapper extends BaseMapper<GradeBatch> {
-
+    /**
+     * 模糊查询批次分页列表
+     *
+     * @param iPage     分页参数
+     * @param batchName 批次名称
+     * @param schoolId  学校id
+     * @return 分页结果
+     */
+    IPage<GradeBatchResult> findGradeBatchPage(@Param("iPage") Page<GradeBatchResult> iPage, @Param("batchName") String batchName, @Param("schoolId") Long schoolId);
 }

+ 41 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/GradeBatchPaperMapper.java

@@ -1,7 +1,14 @@
 package com.qmth.distributed.print.business.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.distributed.print.business.bean.result.analyze.GradeBatchPaperResult;
 import com.qmth.distributed.print.business.entity.GradeBatchPaper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Set;
 
 /**
  * <p>
@@ -13,4 +20,38 @@ import com.qmth.distributed.print.business.entity.GradeBatchPaper;
  */
 public interface GradeBatchPaperMapper extends BaseMapper<GradeBatchPaper> {
 
+    /**
+     * 查找分析批次下的试卷分页数据
+     *
+     * @param iPage         分页参数
+     * @param semesterId    学期id
+     * @param examId        考试id
+     * @param basicCourseId 基础课程id
+     * @param schoolId      学校id
+     * @return 结果
+     */
+    IPage<GradeBatchPaperResult> findGradeBatchPaperPage(@Param("iPage") Page<GradeBatchPaperResult> iPage,
+                                                         @Param("semesterId") Long semesterId,
+                                                         @Param("examId") Long examId,
+                                                         @Param("basicCourseId") Long basicCourseId,
+                                                         @Param("schoolId") Long schoolId);
+
+    /**
+     * 查询可以分析的试卷数据
+     *
+     * @param semesterId  学期id
+     * @param examId      考试id
+     * @param collegeId   开课学院id
+     * @param teacherName 命题教师名称
+     * @return 查询结果
+     */
+    List<GradeBatchPaperResult> findAbleAnalyzePaper(@Param("semesterId") Long semesterId,
+                                                     @Param("examId") Long examId,
+                                                     @Param("collegeId") Long collegeId,
+                                                     @Param("basicCourseId") Long basicCourseId,
+                                                     @Param("teacherName") String teacherName,
+                                                     @Param("orgIds") Set<Long> orgIds,
+                                                     @Param("schoolId") Long schoolId);
+
+
 }

+ 33 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/GradeModuleDefineMapper.java

@@ -1,7 +1,13 @@
 package com.qmth.distributed.print.business.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.distributed.print.business.bean.params.analyze.GradeBatchPaperParam;
+import com.qmth.distributed.print.business.bean.result.analyze.GradeBatchPaperResult;
 import com.qmth.distributed.print.business.entity.GradeBatchPaper;
+import com.qmth.teachcloud.common.entity.SysUser;
+
+import java.util.List;
 
 /**
  * <p>
@@ -12,5 +18,32 @@ import com.qmth.distributed.print.business.entity.GradeBatchPaper;
  * @since 2022-05-20
  */
 public interface GradeBatchPaperService extends IService<GradeBatchPaper> {
+    /**
+     * 查询批次试卷分页数据
+     *
+     * @param semesterId    学期id
+     * @param examId        考试id
+     * @param basicCourseId 基础课程id
+     * @param pageNumber    分页页数
+     * @param pageSize      分页容量
+     * @param requestUser   请求用户
+     * @return 分页结果
+     */
+    IPage<GradeBatchPaperResult> findGradeBatchPaperPage(Long semesterId, Long examId, Long basicCourseId, int pageNumber, int pageSize, SysUser requestUser);
+
+    /**
+     * 查询可以作为分析样本的试卷
+     * @param semesterId 学期id
+     * @param examId 考试id
+     * @param collegeId 学院id
+     * @param basicCourseId 基础课程id
+     * @param teacherName 命题教师
+     * @param requestUser 请求用户
+     * @return 试卷结果
+     */
+    List<GradeBatchPaperResult> findAbleAnalyzePaperList(Long semesterId, Long examId, Long collegeId,Long basicCourseId, String teacherName, SysUser requestUser);
+
+    void saveGradeBatchPaper(List<GradeBatchPaperParam> gradeBatchPaperParamList,SysUser requestUser);
 
+    boolean deleteGradeBatchPaper(Long id);
 }

+ 8 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/GradeBatchService.java

@@ -6,6 +6,7 @@ import com.qmth.distributed.print.business.bean.params.analyze.GradeBatchParam;
 import com.qmth.distributed.print.business.bean.result.TeachCourseResult;
 import com.qmth.distributed.print.business.bean.result.analyze.GradeBatchResult;
 import com.qmth.distributed.print.business.entity.GradeBatch;
+import com.qmth.teachcloud.common.entity.SysUser;
 
 /**
  * <p>
@@ -20,18 +21,20 @@ public interface GradeBatchService extends IService<GradeBatch> {
     /**
      * 分析批次分页查询
      *
-     * @param batchName  批次名称
-     * @param pageNumber 分页页数
-     * @param pageSize   分页容量
+     * @param batchName   批次名称
+     * @param pageNumber  分页页数
+     * @param pageSize    分页容量
+     * @param requestUser 请求用户
      * @return 查询结果
      */
-    IPage<GradeBatchResult> gradeBatchPage(String batchName, int pageNumber, int pageSize);
+    IPage<GradeBatchResult> gradeBatchPage(String batchName, int pageNumber, int pageSize, SysUser requestUser);
 
     /**
      * 创建教研分析批次
      *
      * @param gradeBatchParam 分析批次参数
+     * @param requestUser     请求用户
      * @return 批次id
      */
-    Long editGradeBatch(GradeBatchParam gradeBatchParam);
+    Long editGradeBatch(GradeBatchParam gradeBatchParam, SysUser requestUser);
 }

+ 102 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/GradeModuleDefineService.java

@@ -1,10 +1,30 @@
 package com.qmth.distributed.print.business.service.impl;
 
+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.qmth.distributed.print.business.bean.params.analyze.GradeBatchPaperParam;
+import com.qmth.distributed.print.business.bean.result.analyze.GradeBatchPaperResult;
 import com.qmth.distributed.print.business.entity.GradeBatchPaper;
 import com.qmth.distributed.print.business.mapper.GradeBatchPaperMapper;
 import com.qmth.distributed.print.business.service.GradeBatchPaperService;
+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.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.OrgTypeEnum;
+import com.qmth.teachcloud.common.service.SysOrgService;
+import com.qmth.teachcloud.common.service.TeachcloudCommonService;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -16,5 +36,87 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class GradeBatchPaperServiceImpl extends ServiceImpl<GradeBatchPaperMapper, GradeBatchPaper> implements GradeBatchPaperService {
+    @Resource
+    SysOrgService sysOrgService;
+    @Resource
+    TeachcloudCommonService teachcloudCommonService;
+
+    @Override
+    public IPage<GradeBatchPaperResult> findGradeBatchPaperPage(Long semesterId, Long examId, Long basicCourseId, int pageNumber, int pageSize, SysUser requestUser) {
+        Long schoolId = requestUser.getSchoolId();
+        IPage<GradeBatchPaperResult> datasource = this.baseMapper.findGradeBatchPaperPage(new Page<>(pageNumber, pageSize), semesterId, examId, basicCourseId, schoolId);
+        for (GradeBatchPaperResult record : datasource.getRecords()) {
+            Long teachingRoomId = record.getTeachingRoomId();
+            SysOrg teachCollege = this.findTeachCollegeByOrgId(teachingRoomId);
+            record.setTeachCollegeId(teachCollege.getId());
+            record.setTeachCollegeName(teachCollege.getName());
+        }
+        return datasource;
+    }
+
+    @Override
+    public List<GradeBatchPaperResult> findAbleAnalyzePaperList(Long semesterId, Long examId, Long collegeId, Long basicCourseId, String teacherName, SysUser requestUser) {
+        Long schoolId = requestUser.getSchoolId();
+        Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
+        List<GradeBatchPaperResult> datasource = this.baseMapper.findAbleAnalyzePaper(semesterId, examId, collegeId, basicCourseId, teacherName, orgIds, schoolId);
+        List<GradeBatchPaperResult> needAddList = new ArrayList<>();
+        for (GradeBatchPaperResult gradeBatchPaperResult : datasource) {
+            // 额外处理开课学院
+            Long teachingRoomId = gradeBatchPaperResult.getTeachingRoomId();
+            SysOrg teachCollege = this.findTeachCollegeByOrgId(teachingRoomId);
+            if (SystemConstant.longNotNull(collegeId) && !collegeId.equals(teachCollege.getId())){
+                datasource.remove(gradeBatchPaperResult);
+                continue;
+            }
+            gradeBatchPaperResult.setTeachCollegeId(teachCollege.getId());
+            gradeBatchPaperResult.setTeachCollegeName(teachCollege.getName());
+
+            // 需要拆分的试卷类型
+            String paperType = gradeBatchPaperResult.getPaperType();
+            for (String paperTypeCell : paperType.split(",")) {
+                GradeBatchPaperResult needAdd = new GradeBatchPaperResult();
+                BeanUtils.copyProperties(gradeBatchPaperResult,needAdd);
+                needAdd.setPaperType(paperTypeCell);
+                needAddList.add(needAdd);
+            }
+            datasource.remove(gradeBatchPaperResult);
+        }
+        datasource.addAll(needAddList);
+        return datasource.stream().sorted(Comparator.comparing(GradeBatchPaperResult::getSemesterName)
+                .thenComparing(GradeBatchPaperResult::getExamName)
+                .thenComparing(GradeBatchPaperResult::getTeachCollegeId)
+                .thenComparing(GradeBatchPaperResult::getCourseCode)
+                .thenComparing(GradeBatchPaperResult::getPaperNumber)
+                .thenComparing(GradeBatchPaperResult::getPaperType)).collect(Collectors.toList());
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void saveGradeBatchPaper(List<GradeBatchPaperParam> gradeBatchPaperParamList, SysUser requestUser) {
+
+
+    }
+
+    @Override
+    public boolean deleteGradeBatchPaper(Long id) {
+        return false;
+    }
+
+    /**
+     * 根据机构id查询开课学院
+     *
+     * @param orgId 机构id(课程所在教研室)
+     * @return 开课学院
+     */
+    private SysOrg findTeachCollegeByOrgId(Long orgId) {
+        if (!SystemConstant.longNotNull(orgId)) {
+            throw ExceptionResultEnum.ERROR.exception("机构id不存在");
+        }
 
+        List<SysOrg> collegeList = sysOrgService.findParentsByOrgId(orgId).stream().filter(e -> OrgTypeEnum.COLLEGE.equals(e.getType())).distinct().collect(Collectors.toList());
+        if (collegeList.size() != 1) {
+            throw ExceptionResultEnum.ERROR.exception("未找到开课学院");
+        }
+        return collegeList.get(0);
+    }
 }

+ 36 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradeBatchServiceImpl.java

@@ -1,15 +1,24 @@
 package com.qmth.distributed.print.business.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 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.qmth.distributed.print.business.bean.params.analyze.GradeBatchParam;
 import com.qmth.distributed.print.business.bean.result.analyze.GradeBatchResult;
 import com.qmth.distributed.print.business.entity.GradeBatch;
+import com.qmth.distributed.print.business.enums.GradeAnalyzePaperStatusEnum;
 import com.qmth.distributed.print.business.mapper.GradeBatchMapper;
 import com.qmth.distributed.print.business.service.GradeBatchService;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import org.apache.commons.lang3.time.DateFormatUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Objects;
+
 /**
  * <p>
  * 分析-批次表 服务实现类
@@ -22,13 +31,36 @@ import org.springframework.transaction.annotation.Transactional;
 public class GradeBatchServiceImpl extends ServiceImpl<GradeBatchMapper, GradeBatch> implements GradeBatchService {
 
     @Override
-    public IPage<GradeBatchResult> gradeBatchPage(String batchName, int pageNumber, int pageSize) {
-        return null;
+    public IPage<GradeBatchResult> gradeBatchPage(String batchName, int pageNumber, int pageSize, SysUser requestUser) {
+        batchName = SystemConstant.translateSpecificSign(batchName);
+        return this.baseMapper.findGradeBatchPage(new Page<>(pageNumber, pageSize), batchName, requestUser.getSchoolId());
     }
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public Long editGradeBatch(GradeBatchParam gradeBatchParam) {
-        return null;
+    public Long editGradeBatch(GradeBatchParam gradeBatchParam, SysUser requestUser) {
+        Long schoolId = requestUser.getSchoolId();
+        Long id = gradeBatchParam.getId();
+        String batchName = gradeBatchParam.getBatchName();
+        Long batchTime = gradeBatchParam.getBatchTime();
+
+        // 教研分析批次名称学校唯一
+        GradeBatch check = this.getOne(new QueryWrapper<GradeBatch>().lambda().eq(GradeBatch::getSchoolId, schoolId).eq(GradeBatch::getBatchName, batchName));
+        if (Objects.nonNull(check) && !Objects.equals(check.getId(), id)) {
+            throw ExceptionResultEnum.ERROR.exception("已存在名称为: " + batchName + ",的教研分析批次");
+        }
+
+        GradeBatch gradeBatch = new GradeBatch();
+        gradeBatch.setBatchName(batchName);
+        gradeBatch.setBatchTime(batchTime);
+        gradeBatch.setBatchCode(DateFormatUtils.format(batchTime, "yyyyMMdd"));
+        gradeBatch.setStatus(GradeAnalyzePaperStatusEnum.SETTING_GRADE_PAPER);
+        if (!SystemConstant.longNotNull(id)) {
+            id = SystemConstant.getDbUuid();
+        }
+        gradeBatch.setId(id);
+
+        this.saveOrUpdate(gradeBatch);
+        return id;
     }
 }

+ 15 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradeModuleDefineServiceImpl.java

@@ -2,4 +2,19 @@
 <!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.GradeBatchMapper">
 
+    <select id="findGradeBatchPage"
+            resultType="com.qmth.distributed.print.business.bean.result.analyze.GradeBatchResult">
+        SELECT
+            id, batch_name AS batchName, batch_time AS batchTime, status
+        FROM
+            grade_batch
+        <where>
+            <if test="schoolId != null and schoolId != ''">
+                AND school_id = #{schoolId}
+            </if>
+            <if test="batchName != null and batchName != ''">
+                AND batch_name LIKE CONCAT('%',#{batchName},'%')
+            </if>
+        </where>
+    </select>
 </mapper>

+ 89 - 0
distributed-print-business/src/main/resources/mapper/GradeBatchPaperMapper.xml

@@ -2,4 +2,93 @@
 <!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.GradeBatchPaperMapper">
 
+    <select id="findGradeBatchPaperPage"
+            resultType="com.qmth.distributed.print.business.bean.result.analyze.GradeBatchPaperResult">
+        SELECT
+            gbp.id AS id,
+            bs.name AS semesterName,
+            be.name AS examName,
+            et.course_code AS courseCode,
+            et.course_name AS courseName,
+            et.teaching_room_id AS teachingRoomId,
+            gbp.paper_number AS paperNumber,
+            gbp.paper_type AS paperType,
+            gbp.status AS status
+        FROM
+            grade_batch_paper gbp
+                LEFT JOIN
+            exam_task et ON gbp.school_id = et.school_id
+                AND gbp.paper_number = et.paper_number
+                LEFT JOIN
+            basic_exam be ON et.school_id = be.school_id
+                AND et.exam_id = be.id
+                LEFT JOIN
+            basic_semester bs ON be.school_id = bs.school_id
+                AND be.semester_id = bs.id
+                LEFT JOIN
+            basic_course bc ON et.school_id = bc.school_id
+                AND et.course_code = bc.code
+        <where>
+            <if test="schoolId != null and schoolId != ''">
+                AND gbp.school_id = #{schoolId}
+            </if>
+            <if test="semesterId != null and semesterId != ''">
+                AND bs.id = #{semesterId}
+            </if>
+            <if test="examId != null and examId != ''">
+                AND be.id = #{examId}
+            </if>
+            <if test="basicCourseId != null and basicCourseId != ''">
+                AND bc.id = #{basicCourseId}
+            </if>
+        </where>
+    </select>
+
+    <select id="findAbleAnalyzePaper"
+            resultType="com.qmth.distributed.print.business.bean.result.analyze.GradeBatchPaperResult">
+        SELECT
+            bs.name AS semesterName,
+            be.name AS examName,
+            et.course_code AS courseCode,
+            et.course_name AS courseName,
+            et.teaching_room_id AS teachingRoomId,
+            et.teacher_name AS teacherName,
+            et.paper_number AS paperNumber,
+            etd.exposed_paper_type AS paperType
+        FROM
+            exam_task et
+                INNER JOIN
+            exam_task_detail etd ON et.id = etd.exam_task_id
+                LEFT JOIN
+            basic_exam be ON be.school_id = et.school_id
+                AND be.id = et.exam_id
+                LEFT JOIN
+            basic_semester bs ON bs.school_id = et.school_id
+                AND bs.id = be.semester_id
+                LEFT JOIN
+            basic_course bc ON bc.school_id = et.school_id
+                AND bc.code = et.course_code
+        <where>
+            AND etd.exposed_paper_type != ''
+            <if test="schoolId != null and schoolId != ''">
+                AND et.school_id = #{schoolId}
+            </if>
+            <if test="semesterId != null and semesterId != ''">
+                AND bs.id = #{semesterId}
+            </if>
+            <if test="examId != null and examId != ''">
+                AND be.id = #{examId}
+            </if>
+            <if test="basicCourseId != null and basicCourseId != ''">
+                AND bc.id = #{basicCourseId}
+            </if>
+            <if test="orgIds != null">
+                AND et.org_id IN
+                <foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+    </select>
+
 </mapper>

+ 7 - 4
distributed-print-business/src/main/resources/mapper/GradeModuleDefineMapper.xml

@@ -12,9 +12,9 @@ spring.application.name=distributed-print
 #\u6570\u636E\u6E90\u914D\u7F6E
 db.host=localhost
 db.port=3306
-db.name=distributed-v3.0.1-test
+db.name=distributed-clear-v3.0.2
 db.username=root
-db.password=123456789
+db.password=88888888
 
 #redis\u6570\u636E\u6E90\u914D\u7F6E
 com.qmth.redis.host=${db.host}
@@ -74,7 +74,7 @@ sys.config.accessKey=274f823e5f59410f8b3bb6edcd8e2b6e
 sys.config.accessSecret=y7AO6W0TOdTF8HpWBwGHbp3wfIHsmUKr
 sys.config.adminLogoUrl=http://qmth-test.oss-cn-shenzhen.aliyuncs.com/frontend/wx_logo.png
 #sys.config.htmlToPdfUrl=/usr/local/bin/wkhtmltopdf
-sys.config.htmlToPdfUrl=/usr/local/bin/wkhtmltopdf
+sys.config.htmlToPdfUrl=E:/devUtils/wkhtmltopdf/bin/wkhtmltopdf.exe
 sys.config.autoCreatePdfResetMaxCount=5
 sys.config.threadPoolCoreSize=1
 sys.config.customThreadPoolCoreSize=true
@@ -131,7 +131,7 @@ com.qmth.logging.file-path=/Users/king/Downloads/distributed-print.log
 
 #\uFFFD\uFFFD\uFFFD\u013E\uFFFD\uFFFD\uFFFD\uFFFDurl
 #sync.config.hostUrl=http://192.168.10.224:80
-sync.config.hostUrl=http://192.168.10.225:8000
+sync.config.hostUrl=http://localhost:8081
 #\u036C\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
 sync.config.examSaveUrl=/api/exam/save
 #\u036C\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
@@ -160,6 +160,9 @@ sync.config.markerSaveUrl=/api/exam/marker/save
 #com.qmth.solar.access-key=274f823e5f59410f8b3bb6edcd8e2b6e
 #com.qmth.solar.access-secret=y7AO6W0TOdTF8HpWBwGHbp3wfIHsmUKr
 com.qmth.solar.license=/Volumes/extend/\u542F\u660E/\u5206\u5E03\u5F0F\u5370\u5237/\u5206\u5E03\u5F0F\u5370\u5237&\u6559\u7814\u5206\u6790v3.0.2/tc-dev-wl.lic
+com.qmth.solar.access-key=274f823e5f59410f8b3bb6edcd8e2b6e
+com.qmth.solar.access-secret=y7AO6W0TOdTF8HpWBwGHbp3wfIHsmUKr
+#com.qmth.solar.license=/Volumes/extend/\u542F\u660E/\u5206\u5E03\u5F0F\u5370\u5237/\u5206\u5E03\u5F0F\u5370\u5237v3.0.2/tc-dev-wl.lic
 
 sms.config.smsNormalCode=qmth
 sms.config.codeExpiredTime=2

+ 1 - 1
pom.xml

@@ -4,7 +4,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.qmth.distributed.print.service</groupId>
     <artifactId>distributed-print-service</artifactId>
-    <version>3.1.0</version>
+    <version>3.0.1</version>
     <packaging>pom</packaging>
 
     <modules>

+ 4 - 4
teachcloud-common-api/src/main/java/com/qmth/teachcloud/common/api/api/BasicSchoolController.java

@@ -13,10 +13,10 @@ spring.application.name=teachcloud-report
 #db.host=192.168.10.136
 db.host=localhost
 db.port=3306
-db.name=teachcloud-report-v3.0.2
+db.name=teachcloud_report_v3.0.2
 #db.name=teachcloud-report
 db.username=root
-db.password=123456789
+db.password=88888888
 
 #redis\u6570\u636E\u6E90\u914D\u7F6E
 com.qmth.redis.host=${db.host}
@@ -141,6 +141,6 @@ yun.mark.studentScoreApi=/api/exam/student/score
 
 print.open.callbackUrlApi=/api/admin/print/notify/analysis/progress
 
-#com.qmth.solar.access-key=274f823e5f59410f8b3bb6edcd8e2b6e
-#com.qmth.solar.access-secret=y7AO6W0TOdTF8HpWBwGHbp3wfIHsmUKr
+com.qmth.solar.access-key=274f823e5f59410f8b3bb6edcd8e2b6e
+com.qmth.solar.access-secret=y7AO6W0TOdTF8HpWBwGHbp3wfIHsmUKr
 #com.qmth.solar.license=/Users/king/Downloads/tc-dev-wl.lic

+ 3 - 3
teachcloud-report/src/test/java/com/qmth/teachcloud/report/TeachcloudReportApplicationTests.java

@@ -13,9 +13,9 @@ spring.application.name=teachcloud-task
 #\u6570\u636E\u6E90\u914D\u7F6E
 db.host=localhost
 db.port=3306
-db.name=distributed-v3.0.1-test
+db.name=distributed-v3.0.2
 db.username=root
-db.password=123456789
+db.password=88888888
 
 #redis\u6570\u636E\u6E90\u914D\u7F6E
 com.qmth.redis.host=${db.host}
@@ -75,7 +75,7 @@ sys.config.accessKey=274f823e5f59410f8b3bb6edcd8e2b6e
 sys.config.accessSecret=y7AO6W0TOdTF8HpWBwGHbp3wfIHsmUKr
 sys.config.adminLogoUrl=http://qmth-test.oss-cn-shenzhen.aliyuncs.com/frontend/wx_logo.png
 #sys.config.htmlToPdfUrl=/usr/local/bin/wkhtmltopdf
-sys.config.htmlToPdfUrl=/usr/local/bin/wkhtmltopdf
+sys.config.htmlToPdfUrl=E:/devUtils/wkhtmltopdf/bin/wkhtmltopdf.exe
 sys.config.autoCreatePdfResetMaxCount=5
 sys.config.threadPoolCoreSize=1
 sys.config.customThreadPoolCoreSize=true

+ 0 - 0
teachcloud-task/src/test/java/com/qmth/distributed/print/task/DistributedPrintTaskApplicationTests.java