caozixuan 1 жил өмнө
parent
commit
c942d8c27c
34 өөрчлөгдсөн 1732 нэмэгдсэн , 5 устгасан
  1. 210 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/BasicExamStudentParam.java
  2. 198 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/BasicExamStudentResult.java
  3. 190 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/BasicExamStudent.java
  4. 67 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/BasicTeachClazz.java
  5. 78 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/CourseEvaluation.java
  6. 102 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/CourseTarget.java
  7. 109 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/CourseWeight.java
  8. 43 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/BasicExamStudentMapper.java
  9. 16 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/BasicTeachClazzMapper.java
  10. 16 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/CourseEvaluationMapper.java
  11. 16 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/CourseTargetMapper.java
  12. 16 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/CourseWeightMapper.java
  13. 82 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicExamStudentService.java
  14. 27 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicTeachClazzService.java
  15. 16 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/CourseEvaluationService.java
  16. 16 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/CourseTargetService.java
  17. 16 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/CourseWeightService.java
  18. 207 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicExamStudentServiceImpl.java
  19. 47 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicTeachClazzServiceImpl.java
  20. 20 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CourseEvaluationServiceImpl.java
  21. 20 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CourseTargetServiceImpl.java
  22. 20 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CourseWeightServiceImpl.java
  23. 5 5
      distributed-print-business/src/main/resources/db/log/脚本-caozx.sql
  24. 74 0
      distributed-print-business/src/main/resources/mapper/BasicExamStudentMapper.xml
  25. 5 0
      distributed-print-business/src/main/resources/mapper/BasicTeachClazzMapper.xml
  26. 5 0
      distributed-print-business/src/main/resources/mapper/CourseEvaluationMapper.xml
  27. 5 0
      distributed-print-business/src/main/resources/mapper/CourseTargetMapper.xml
  28. 5 0
      distributed-print-business/src/main/resources/mapper/CourseWeightMapper.xml
  29. 20 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/BasicExamStudentController.java
  30. 20 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/BasicTeachClazzController.java
  31. 20 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/CourseEvaluationController.java
  32. 20 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/CourseTargetController.java
  33. 20 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/CourseWeightController.java
  34. 1 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

+ 210 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/BasicExamStudentParam.java

@@ -0,0 +1,210 @@
+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.teachcloud.common.annotation.EditKey;
+import io.swagger.annotations.ApiModelProperty;
+import org.hibernate.validator.constraints.Length;
+import org.hibernate.validator.constraints.Range;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description: 考生字典参数
+ * @Author: CaoZixuan
+ * @Date: 2024-02-22
+ */
+public class BasicExamStudentParam {
+
+    @ApiModelProperty("id(编辑必填)")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @EditKey
+    private Long id;
+
+    @ApiModelProperty("学期id(必填)")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @NotNull(message = "请选择学期")
+    @Range(min = 1L, message = "请选择学期")
+    private Long semesterId;
+
+    @ApiModelProperty("考试id(必填)")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @NotNull(message = "请选择考试")
+    @Range(min = 1L, message = "请选择考试")
+    private Long examId;
+
+    @ApiModelProperty("课程代码(必填)")
+    @NotNull(message = "请输入课程代码")
+    @Length(min = 1, message = "请输入课程代码")
+    private String courseCode;
+
+    @ApiModelProperty("姓名(必填)")
+    @NotNull(message = "请输入姓名")
+    @Length(min = 1, message = "请输入姓名")
+    private String studentName;
+
+    @ApiModelProperty("学号(必填)")
+    @NotNull(message = "请输入学号")
+    @Length(min = 1, message = "请输入学号")
+    private String studentCode;
+
+    @ApiModelProperty("学院")
+    private String college;
+
+    @ApiModelProperty("专业")
+    private String major;
+
+    @ApiModelProperty("教学班")
+    private String teachClazz;
+
+    @ApiModelProperty("试卷编号")
+    private String paperNumber;
+
+    @ApiModelProperty("任课老师")
+    private String teacherName;
+
+    @ApiModelProperty("任课老师工号")
+    private String teacherCode;
+
+    @ApiModelProperty("考试开始时间")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long examStartTime;
+
+    @ApiModelProperty("考试结束时间")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long examEndTime;
+
+    @ApiModelProperty("考点(校区)")
+    private String examPlace;
+
+    @ApiModelProperty("考场(考试教室)")
+    private String examRoom;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getSemesterId() {
+        return semesterId;
+    }
+
+    public void setSemesterId(Long semesterId) {
+        this.semesterId = semesterId;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public String getCollege() {
+        return college;
+    }
+
+    public void setCollege(String college) {
+        this.college = college;
+    }
+
+    public String getMajor() {
+        return major;
+    }
+
+    public void setMajor(String major) {
+        this.major = major;
+    }
+
+    public String getTeachClazz() {
+        return teachClazz;
+    }
+
+    public void setTeachClazz(String teachClazz) {
+        this.teachClazz = teachClazz;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getTeacherCode() {
+        return teacherCode;
+    }
+
+    public void setTeacherCode(String teacherCode) {
+        this.teacherCode = teacherCode;
+    }
+
+    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 getExamPlace() {
+        return examPlace;
+    }
+
+    public void setExamPlace(String examPlace) {
+        this.examPlace = examPlace;
+    }
+
+    public String getExamRoom() {
+        return examRoom;
+    }
+
+    public void setExamRoom(String examRoom) {
+        this.examRoom = examRoom;
+    }
+}

+ 198 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/BasicExamStudentResult.java

@@ -0,0 +1,198 @@
+package com.qmth.distributed.print.business.bean.result;
+
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 考生字典查询结果
+ * @Author: CaoZixuan
+ * @Date: 2024-02-22
+ */
+public class BasicExamStudentResult {
+
+    @ApiModelProperty("id")
+    private Long id;
+
+    @ApiModelProperty("课程名称")
+    private String courseName;
+
+    @ApiModelProperty("课程代码")
+    private String courseCode;
+
+    @ApiModelProperty("姓名")
+    private String studentName;
+
+    @ApiModelProperty("学号")
+    private String studentCode;
+
+    @ApiModelProperty("学院")
+    private String college;
+
+    @ApiModelProperty("专业")
+    private String major;
+
+    @ApiModelProperty("教学班")
+    private String teachClazz;
+
+    @ApiModelProperty("试卷编号")
+    private String paperNumber;
+
+    @ApiModelProperty("任课老师")
+    private String teacherName;
+
+    @ApiModelProperty("任课老师工号")
+    private String teacherCode;
+
+    @ApiModelProperty("考试开始时间")
+    private Long examStartTime;
+
+    @ApiModelProperty("考试结束时间")
+    private Long examEndTime;
+
+    @ApiModelProperty("考试日期")
+    private String examDate;
+
+    @ApiModelProperty("考试时间")
+    private String examTime;
+
+    @ApiModelProperty("考点(校区)")
+    private String examPlace;
+
+    @ApiModelProperty("考场(考试教室)")
+    private String examRoom;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public String getCollege() {
+        return college;
+    }
+
+    public void setCollege(String college) {
+        this.college = college;
+    }
+
+    public String getMajor() {
+        return major;
+    }
+
+    public void setMajor(String major) {
+        this.major = major;
+    }
+
+    public String getTeachClazz() {
+        return teachClazz;
+    }
+
+    public void setTeachClazz(String teachClazz) {
+        this.teachClazz = teachClazz;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getTeacherCode() {
+        return teacherCode;
+    }
+
+    public void setTeacherCode(String teacherCode) {
+        this.teacherCode = teacherCode;
+    }
+
+    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 getExamDate() {
+        return examDate;
+    }
+
+    public void setExamDate(String examDate) {
+        this.examDate = examDate;
+    }
+
+    public String getExamTime() {
+        return examTime;
+    }
+
+    public void setExamTime(String examTime) {
+        this.examTime = examTime;
+    }
+
+    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;
+    }
+}

+ 190 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/BasicExamStudent.java

@@ -0,0 +1,190 @@
+package com.qmth.distributed.print.business.entity;
+
+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.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * <p>
+ * 考生字典表
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+@ApiModel(value="BasicExamStudent对象", description="考生字典表")
+public class BasicExamStudent extends BaseEntity {
+
+    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 semesterId;
+
+    @ApiModelProperty(value = "考试id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long examId;
+
+    @ApiModelProperty(value = "课程编号")
+    private String courseCode;
+
+    @ApiModelProperty(value = "教学班id(basic_teach_clazz)")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long clazzId;
+
+    @ApiModelProperty(value = "试卷编号")
+    private String paperNumber;
+
+    @ApiModelProperty(value = "姓名")
+    private String studentName;
+
+    @ApiModelProperty(value = "学号")
+    private String studentCode;
+
+    @ApiModelProperty(value = "学院")
+    private String college;
+
+    @ApiModelProperty(value = "专业")
+    private String major;
+
+    @ApiModelProperty(value = "任课教师id")
+    private Long teacherId;
+
+    @ApiModelProperty(value = "考试开始时间")
+    private Long examStartTime;
+
+    @ApiModelProperty(value = "考试结束时间")
+    private Long examEndTime;
+
+    @ApiModelProperty(value = "考点")
+    private String examPlace;
+
+    @ApiModelProperty(value = "考场")
+    private String examRoom;
+
+    public Long getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(Long schoolId) {
+        this.schoolId = schoolId;
+    }
+
+    public Long getSemesterId() {
+        return semesterId;
+    }
+
+    public void setSemesterId(Long semesterId) {
+        this.semesterId = semesterId;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public Long getClazzId() {
+        return clazzId;
+    }
+
+    public void setClazzId(Long clazzId) {
+        this.clazzId = clazzId;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public String getCollege() {
+        return college;
+    }
+
+    public void setCollege(String college) {
+        this.college = college;
+    }
+
+    public String getMajor() {
+        return major;
+    }
+
+    public void setMajor(String major) {
+        this.major = major;
+    }
+
+    public Long getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Long teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    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 getExamPlace() {
+        return examPlace;
+    }
+
+    public void setExamPlace(String examPlace) {
+        this.examPlace = examPlace;
+    }
+
+    public String getExamRoom() {
+        return examRoom;
+    }
+
+    public void setExamRoom(String examRoom) {
+        this.examRoom = examRoom;
+    }
+}

+ 67 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/BasicTeachClazz.java

@@ -0,0 +1,67 @@
+package com.qmth.distributed.print.business.entity;
+
+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.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * <p>
+ * 基础教学班表
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+@ApiModel(value="BasicTeachClazz对象", description="基础教学班表")
+public class BasicTeachClazz extends BaseEntity {
+
+    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 examId;
+
+    @ApiModelProperty(value = "课程编号")
+    private String courseCode;
+
+    @ApiModelProperty(value = "教学班名称")
+    private String clazzName;
+
+    public Long getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(Long schoolId) {
+        this.schoolId = schoolId;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getClazzName() {
+        return clazzName;
+    }
+
+    public void setClazzName(String clazzName) {
+        this.clazzName = clazzName;
+    }
+}

+ 78 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/CourseEvaluation.java

@@ -0,0 +1,78 @@
+package com.qmth.distributed.print.business.entity;
+
+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.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * <p>
+ * 课程评价方式
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+@ApiModel(value="CourseEvaluation对象", description="课程评价方式")
+public class CourseEvaluation extends BaseEntity {
+
+    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 examId;
+
+    @ApiModelProperty(value = "课程编号")
+    private String courseCode;
+
+    @ApiModelProperty(value = "评价方式")
+    private String evaluation;
+
+    @ApiModelProperty(value = "评价方式描述")
+    private String evaluationDesc;
+
+    public Long getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(Long schoolId) {
+        this.schoolId = schoolId;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getEvaluation() {
+        return evaluation;
+    }
+
+    public void setEvaluation(String evaluation) {
+        this.evaluation = evaluation;
+    }
+
+    public String getEvaluationDesc() {
+        return evaluationDesc;
+    }
+
+    public void setEvaluationDesc(String evaluationDesc) {
+        this.evaluationDesc = evaluationDesc;
+    }
+}

+ 102 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/CourseTarget.java

@@ -0,0 +1,102 @@
+package com.qmth.distributed.print.business.entity;
+
+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.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 课程目标表
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+@ApiModel(value="CourseTarget对象", description="课程目标表")
+public class CourseTarget extends BaseEntity {
+
+    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 examId;
+
+    @ApiModelProperty(value = "课程编号")
+    private String courseCode;
+
+    @ApiModelProperty(value = "课程目标")
+    private String targetName;
+
+    @ApiModelProperty(value = "毕业要求指标")
+    private String targetContent;
+
+    @ApiModelProperty(value = "毕业要求")
+    private String degreeRequirement;
+
+    @ApiModelProperty(value = "课程目标整体权重")
+    private BigDecimal totalWeight;
+
+    public Long getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(Long schoolId) {
+        this.schoolId = schoolId;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getTargetName() {
+        return targetName;
+    }
+
+    public void setTargetName(String targetName) {
+        this.targetName = targetName;
+    }
+
+    public String getTargetContent() {
+        return targetContent;
+    }
+
+    public void setTargetContent(String targetContent) {
+        this.targetContent = targetContent;
+    }
+
+    public String getDegreeRequirement() {
+        return degreeRequirement;
+    }
+
+    public void setDegreeRequirement(String degreeRequirement) {
+        this.degreeRequirement = degreeRequirement;
+    }
+
+    public BigDecimal getTotalWeight() {
+        return totalWeight;
+    }
+
+    public void setTotalWeight(BigDecimal totalWeight) {
+        this.totalWeight = totalWeight;
+    }
+}

+ 109 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/CourseWeight.java

@@ -0,0 +1,109 @@
+package com.qmth.distributed.print.business.entity;
+
+import com.qmth.teachcloud.common.base.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 课程权重设置
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+@ApiModel(value="CourseWeight对象", description="课程权重设置")
+public class CourseWeight extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "学校id")
+    private Long schoolId;
+
+    @ApiModelProperty(value = "考试id")
+    private Long examId;
+
+    @ApiModelProperty(value = "课程编号")
+    private String courseCode;
+
+    @ApiModelProperty(value = "课程目标表id")
+    private Long targetId;
+
+    @ApiModelProperty(value = "课程评价表id")
+    private Long evaluationId;
+
+    @ApiModelProperty(value = "使用状态 1:使用 0:未使用")
+    private Boolean enable;
+
+    @ApiModelProperty(value = "权重")
+    private BigDecimal weight;
+
+    @ApiModelProperty(value = "目标分值")
+    private BigDecimal targetScore;
+
+    public Long getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(Long schoolId) {
+        this.schoolId = schoolId;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public Long getTargetId() {
+        return targetId;
+    }
+
+    public void setTargetId(Long targetId) {
+        this.targetId = targetId;
+    }
+
+    public Long getEvaluationId() {
+        return evaluationId;
+    }
+
+    public void setEvaluationId(Long evaluationId) {
+        this.evaluationId = evaluationId;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public BigDecimal getWeight() {
+        return weight;
+    }
+
+    public void setWeight(BigDecimal weight) {
+        this.weight = weight;
+    }
+
+    public BigDecimal getTargetScore() {
+        return targetScore;
+    }
+
+    public void setTargetScore(BigDecimal targetScore) {
+        this.targetScore = targetScore;
+    }
+}

+ 43 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/BasicExamStudentMapper.java

@@ -0,0 +1,43 @@
+package com.qmth.distributed.print.business.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.distributed.print.business.bean.result.BasicExamStudentResult;
+import com.qmth.distributed.print.business.bean.result.analyze.GradeBatchResult;
+import com.qmth.distributed.print.business.entity.BasicExamStudent;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 考生字典表 Mapper 接口
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+public interface BasicExamStudentMapper extends BaseMapper<BasicExamStudent> {
+
+    /**
+     * 分页查询
+     *
+     * @param schoolId        学校id
+     * @param semesterId      学期id
+     * @param examId          考试id
+     * @param courseCode      课程代码
+     * @param teacher         教师
+     * @param college         学院
+     * @param major           专业
+     * @param teachClazzId    教学班id
+     * @param examStudentInfo 考生信息(姓名/学号)
+     * @param dpr             数据权限
+     * @return 查询结果
+     */
+    IPage<BasicExamStudentResult> findBasicExamStudentPage(@Param("iPage") Page<BasicExamStudentResult> iPage,
+            @Param("schoolId") Long schoolId, @Param("semesterId") Long semesterId, @Param("examId") Long examId,
+            @Param("courseCode") String courseCode, @Param("teacher") String teacher, @Param("college") String college,
+            @Param("major") String major, @Param("teachClazzId") Long teachClazzId,
+            @Param("examStudentInfo") String examStudentInfo, @Param("dpr") DataPermissionRule dpr);
+
+}

+ 16 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/BasicTeachClazzMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.distributed.print.business.mapper;
+
+import com.qmth.distributed.print.business.entity.BasicTeachClazz;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 基础教学班表 Mapper 接口
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+public interface BasicTeachClazzMapper extends BaseMapper<BasicTeachClazz> {
+
+}

+ 16 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/CourseEvaluationMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.distributed.print.business.mapper;
+
+import com.qmth.distributed.print.business.entity.CourseEvaluation;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 课程评价方式 Mapper 接口
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+public interface CourseEvaluationMapper extends BaseMapper<CourseEvaluation> {
+
+}

+ 16 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/CourseTargetMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.distributed.print.business.mapper;
+
+import com.qmth.distributed.print.business.entity.CourseTarget;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 课程目标表 Mapper 接口
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+public interface CourseTargetMapper extends BaseMapper<CourseTarget> {
+
+}

+ 16 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/CourseWeightMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.distributed.print.business.mapper;
+
+import com.qmth.distributed.print.business.entity.CourseWeight;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 课程权重设置 Mapper 接口
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+public interface CourseWeightMapper extends BaseMapper<CourseWeight> {
+
+}

+ 82 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicExamStudentService.java

@@ -0,0 +1,82 @@
+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.BasicExamStudentParam;
+import com.qmth.distributed.print.business.bean.result.BasicExamStudentResult;
+import com.qmth.distributed.print.business.entity.BasicExamStudent;
+import com.qmth.teachcloud.common.entity.SysUser;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * <p>
+ * 考生字典表 服务类
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+public interface BasicExamStudentService extends IService<BasicExamStudent> {
+
+    /**
+     * 分页查询
+     *
+     * @param requestUser     请求人
+     * @param semesterId      学期id
+     * @param examId          考试id
+     * @param courseCode      课程代码
+     * @param teacher         教师
+     * @param college         学院
+     * @param major           专业
+     * @param teachClazzId      教学班id
+     * @param examStudentInfo 考生信息(姓名/学号)
+     * @param pageNumber      分页页码
+     * @param pageSize        分页数量
+     * @return 查询结果
+     */
+    IPage<BasicExamStudentResult> page(SysUser requestUser, Long semesterId, Long examId, String courseCode, String teacher,
+            String college, String major, Long teachClazzId, String examStudentInfo, int pageNumber, int pageSize);
+
+    /**
+     * 新增编辑
+     *
+     * @param basicExamStudentParam 参数
+     * @param requestUser           用户
+     * @return id
+     */
+    Long edit(BasicExamStudentParam basicExamStudentParam, SysUser requestUser);
+
+    /**
+     * 导入
+     *
+     * @param file excel文件
+     */
+    void importLogic(MultipartFile file);
+
+    /**
+     * 导出
+     *
+     * @param response        response
+     * @param schoolId        学校id
+     * @param semesterId      学期id
+     * @param examId          考试id
+     * @param courseCode      课程代码
+     * @param teacher         教师
+     * @param college         学院
+     * @param major           专业
+     * @param teachClazz      教学班
+     * @param examStudentInfo 考生信息(姓名/学号)
+     */
+    void exportLogic(HttpServletResponse response, Long schoolId, Long semesterId, Long examId, String courseCode,
+            String teacher, String college, String major, String teachClazz, String examStudentInfo);
+
+    /**
+     * 批量删除
+     *
+     * @param idList 要删除的考生字典id集合
+     */
+    void deleteBatch(List<Long> idList);
+}

+ 27 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicTeachClazzService.java

@@ -0,0 +1,27 @@
+package com.qmth.distributed.print.business.service;
+
+import com.qmth.distributed.print.business.entity.BasicTeachClazz;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.teachcloud.common.entity.SysUser;
+
+/**
+ * <p>
+ * 基础教学班表 服务类
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+public interface BasicTeachClazzService extends IService<BasicTeachClazz> {
+
+    /**
+     * 查询或新增教学班
+     *
+     * @param requestUser    请求人
+     * @param examId         考试id
+     * @param teachClazzName 教学班名称
+     * @param courseCode     课程编号
+     * @return 教学班
+     */
+    BasicTeachClazz findOrCreateBasicTeachClazz(SysUser requestUser, Long examId, String courseCode, String teachClazzName);
+}

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

@@ -0,0 +1,16 @@
+package com.qmth.distributed.print.business.service;
+
+import com.qmth.distributed.print.business.entity.CourseEvaluation;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 课程评价方式 服务类
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+public interface CourseEvaluationService extends IService<CourseEvaluation> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.qmth.distributed.print.business.service;
+
+import com.qmth.distributed.print.business.entity.CourseTarget;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 课程目标表 服务类
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+public interface CourseTargetService extends IService<CourseTarget> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.qmth.distributed.print.business.service;
+
+import com.qmth.distributed.print.business.entity.CourseWeight;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 课程权重设置 服务类
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+public interface CourseWeightService extends IService<CourseWeight> {
+
+}

+ 207 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicExamStudentServiceImpl.java

@@ -0,0 +1,207 @@
+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.BasicExamStudentParam;
+import com.qmth.distributed.print.business.bean.result.BasicExamStudentResult;
+import com.qmth.distributed.print.business.entity.BasicExamStudent;
+import com.qmth.distributed.print.business.entity.BasicTeachClazz;
+import com.qmth.distributed.print.business.mapper.BasicExamStudentMapper;
+import com.qmth.distributed.print.business.service.BasicExamStudentService;
+import com.qmth.distributed.print.business.service.BasicTeachClazzService;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.BasicCourse;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.service.BasicCourseService;
+import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
+import com.qmth.teachcloud.common.service.SysUserService;
+import com.qmth.teachcloud.common.util.ConvertUtil;
+import com.qmth.teachcloud.common.util.ServletUtil;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * <p>
+ * 考生字典表 服务实现类
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+@Service
+public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMapper, BasicExamStudent> implements BasicExamStudentService {
+
+    @Resource
+    private BasicRoleDataPermissionService basicRoleDataPermissionService;
+
+    @Resource
+    private BasicCourseService basicCourseService;
+
+    @Resource
+    private BasicTeachClazzService basicTeachClazzService;
+
+    @Resource
+    private SysUserService sysUserService;
+
+    @Override
+    public IPage<BasicExamStudentResult> page(SysUser requestUser, Long semesterId, Long examId, String courseCode,
+            String teacher, String college, String major, Long teachClazzId, String examStudentInfo, int pageNumber,
+            int pageSize) {
+        Long schoolId = requestUser.getSchoolId();
+
+        courseCode = SystemConstant.translateSpecificSign(courseCode);
+        teacher = SystemConstant.translateSpecificSign(teacher);
+        college = SystemConstant.translateSpecificSign(college);
+        major = SystemConstant.translateSpecificSign(major);
+        examStudentInfo = SystemConstant.translateSpecificSign(examStudentInfo);
+
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, requestUser.getId(),
+                ServletUtil.getRequest().getServletPath());
+        IPage<BasicExamStudentResult> page = this.baseMapper.findBasicExamStudentPage(new Page<>(pageNumber, pageSize),
+                schoolId, semesterId, examId, courseCode, teacher, college, major, teachClazzId, examStudentInfo, dpr);
+        for (BasicExamStudentResult record : page.getRecords()) {
+            Long examStartTime = record.getExamStartTime();
+            Long examEndTime = record.getExamEndTime();
+            if (SystemConstant.longNotNull(examStartTime) && SystemConstant.longNotNull(examEndTime)) {
+                Map<String, Object> dateMap = ConvertUtil.analyzeDateAndTime(examStartTime, examEndTime);
+                String date = String.valueOf(dateMap.get("date"));
+                String time = String.valueOf(dateMap.get("time"));
+                record.setExamDate(date);
+                record.setExamTime(time);
+            }
+        }
+        return page;
+    }
+
+    @Transactional
+    @Override
+    public Long edit(BasicExamStudentParam basicExamStudentParam, SysUser requestUser) {
+        List<String> errorMsgList = new ArrayList<>();
+        Long schoolId = requestUser.getSchoolId();
+        Long requestUserId = requestUser.getId();
+
+        Long id = basicExamStudentParam.getId();
+        Long semesterId = basicExamStudentParam.getSemesterId();
+        Long examId = basicExamStudentParam.getExamId();
+        String courseCode = basicExamStudentParam.getCourseCode();
+        String studentName = basicExamStudentParam.getStudentName();
+        String studentCode = basicExamStudentParam.getStudentCode();
+        String college = basicExamStudentParam.getCollege();
+        String major = basicExamStudentParam.getMajor();
+        String teachClazz = basicExamStudentParam.getTeachClazz();
+        String paperNumber = basicExamStudentParam.getPaperNumber();
+        String teacherName = basicExamStudentParam.getTeacherName();
+        String teacherCode = basicExamStudentParam.getTeacherCode();
+        Long examStartTime = basicExamStudentParam.getExamStartTime();
+        Long examEndTime = basicExamStudentParam.getExamEndTime();
+        String examPlace = basicExamStudentParam.getExamPlace();
+        String examRoom = basicExamStudentParam.getExamRoom();
+
+        // 校验1 学期、考试、课程为下拉框,姓名、学号、教学班为文本框,均必填;
+        if (SystemConstant.longNotNull(semesterId)) {
+            errorMsgList.add("缺少学期id");
+        }
+        if (SystemConstant.longNotNull(examId)) {
+            errorMsgList.add("缺少考试id");
+        }
+        if (SystemConstant.strNotNull(courseCode)) {
+            errorMsgList.add("缺少课程编号");
+        }
+        BasicCourse basicCourse = basicCourseService.findByCourseCode(courseCode, schoolId);
+        if (Objects.isNull(basicCourse)) {
+            errorMsgList.add(String.format("缺少课程编号为[%s]", courseCode));
+        }
+
+        if (SystemConstant.strNotNull(studentName)) {
+            errorMsgList.add("缺少学生姓名");
+        }
+        if (SystemConstant.strNotNull(studentCode)) {
+            errorMsgList.add("缺少学号");
+        }
+        if (SystemConstant.strNotNull(teachClazz)) {
+            errorMsgList.add("缺少教学班名称");
+        }
+
+        // 校验2 试卷编号存在时,任课教师,考试时间,考点考场均必填;
+        if (SystemConstant.strNotNull(paperNumber)) {
+            String hasPaperNumberError = "存在试卷编号时: ";
+            if (!SystemConstant.strNotNull(teacherCode) || !SystemConstant.strNotNull(teacherName)) {
+                errorMsgList.add(hasPaperNumberError + "缺少任课教师信息");
+            } else {
+                // 存在教师信息,根据工号查询,不存在报错(缺少机构信息没法直接创建教师),存在更新姓名
+                SysUser teacher = sysUserService.getOne(
+                        new QueryWrapper<SysUser>().lambda().eq(SysUser::getSchoolId, schoolId)
+                                .eq(SysUser::getCode, teacherCode).last(SystemConstant.LIMIT1));
+                if (Objects.isNull(teacher)) {
+                    errorMsgList.add(String.format("工号为[%s]的教师不存在,请先创建", teacherCode));
+                } else {
+                    String dbTeacherName = teacher.getRealName();
+                    if (!dbTeacherName.equals(teacherName)) {
+                        teacher.setRealName(teacherName);
+                        teacher.updateInfo(requestUserId);
+                        sysUserService.updateById(teacher);
+                    }
+                }
+            }
+
+            if (!SystemConstant.longNotNull(examStartTime) || !SystemConstant.longNotNull(examEndTime)) {
+                errorMsgList.add(hasPaperNumberError + "缺少考试时间");
+            }
+            if (!SystemConstant.strNotNull(examPlace)) {
+                errorMsgList.add(hasPaperNumberError + "缺少考点信息");
+            }
+            if (!SystemConstant.strNotNull(examRoom)) {
+                errorMsgList.add(hasPaperNumberError + "缺少考场信息");
+            }
+        }
+
+        if (CollectionUtils.isNotEmpty(errorMsgList)) {
+            throw ExceptionResultEnum.ERROR.exception(String.join(";", errorMsgList));
+        }
+
+        // 若教学班不存在则新建一个
+        BasicTeachClazz basicTeachClazz = basicTeachClazzService.findOrCreateBasicTeachClazz(requestUser, examId,
+                courseCode, teachClazz);
+
+        BasicExamStudent basicExamStudent = new BasicExamStudent();
+
+        if (SystemConstant.longNotNull(id)) {
+            // 编辑
+
+        }
+
+        return null;
+    }
+
+    @Transactional
+    @Override
+    public void importLogic(MultipartFile file) {
+
+    }
+
+    @Override
+    public void exportLogic(HttpServletResponse response, Long schoolId, Long semesterId, Long examId,
+            String courseCode, String teacher, String college, String major, String teachClazz,
+            String examStudentInfo) {
+
+    }
+
+    @Transactional
+    @Override
+    public void deleteBatch(List<Long> idList) {
+
+    }
+}

+ 47 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicTeachClazzServiceImpl.java

@@ -0,0 +1,47 @@
+package com.qmth.distributed.print.business.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.distributed.print.business.entity.BasicTeachClazz;
+import com.qmth.distributed.print.business.mapper.BasicTeachClazzMapper;
+import com.qmth.distributed.print.business.service.BasicTeachClazzService;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.SysUser;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Objects;
+
+/**
+ * <p>
+ * 基础教学班表 服务实现类
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+@Service
+public class BasicTeachClazzServiceImpl extends ServiceImpl<BasicTeachClazzMapper, BasicTeachClazz> implements BasicTeachClazzService {
+
+    @Transactional
+    @Override
+    public BasicTeachClazz findOrCreateBasicTeachClazz(SysUser requestUser, Long examId, String courseCode, String teachClazzName) {
+        Long schoolId = requestUser.getSchoolId();
+        Long userId = requestUser.getId();
+        BasicTeachClazz basicTeachClazz;
+        basicTeachClazz = this.getOne(
+                new QueryWrapper<BasicTeachClazz>().lambda().eq(BasicTeachClazz::getSchoolId, schoolId)
+                        .eq(BasicTeachClazz::getExamId, examId).eq(BasicTeachClazz::getClazzName, teachClazzName).last(SystemConstant.LIMIT1));
+
+        if (Objects.isNull(basicTeachClazz)) {
+            basicTeachClazz = new BasicTeachClazz();
+            basicTeachClazz.setSchoolId(schoolId);
+            basicTeachClazz.setClazzName(teachClazzName);
+            basicTeachClazz.setCourseCode(courseCode);
+            basicTeachClazz.setExamId(examId);
+            basicTeachClazz.insertInfo(userId);
+            this.save(basicTeachClazz);
+        }
+        return basicTeachClazz;
+    }
+}

+ 20 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CourseEvaluationServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.distributed.print.business.service.impl;
+
+import com.qmth.distributed.print.business.entity.CourseEvaluation;
+import com.qmth.distributed.print.business.mapper.CourseEvaluationMapper;
+import com.qmth.distributed.print.business.service.CourseEvaluationService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 课程评价方式 服务实现类
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+@Service
+public class CourseEvaluationServiceImpl extends ServiceImpl<CourseEvaluationMapper, CourseEvaluation> implements CourseEvaluationService {
+
+}

+ 20 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CourseTargetServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.distributed.print.business.service.impl;
+
+import com.qmth.distributed.print.business.entity.CourseTarget;
+import com.qmth.distributed.print.business.mapper.CourseTargetMapper;
+import com.qmth.distributed.print.business.service.CourseTargetService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 课程目标表 服务实现类
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+@Service
+public class CourseTargetServiceImpl extends ServiceImpl<CourseTargetMapper, CourseTarget> implements CourseTargetService {
+
+}

+ 20 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CourseWeightServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.distributed.print.business.service.impl;
+
+import com.qmth.distributed.print.business.entity.CourseWeight;
+import com.qmth.distributed.print.business.mapper.CourseWeightMapper;
+import com.qmth.distributed.print.business.service.CourseWeightService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 课程权重设置 服务实现类
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+@Service
+public class CourseWeightServiceImpl extends ServiceImpl<CourseWeightMapper, CourseWeight> implements CourseWeightService {
+
+}

+ 5 - 5
distributed-print-business/src/main/resources/db/log/脚本-caozx.sql

@@ -86,13 +86,13 @@ CREATE TABLE `basic_exam_student` (
     `course_code` VARCHAR(20) NOT NULL COMMENT '课程编号',
     `clazz_id` BIGINT(20) NOT NULL COMMENT '教学班id(basic_teach_clazz)',
     `paper_number` VARCHAR(30) DEFAULT NULL COMMENT '试卷编号',
-    `exam_student_name` VARCHAR(50) NOT NULL COMMENT '考生姓名',
-    `exam_student_code` VARCHAR(50) NOT NULL COMMENT '考生编号',
+    `student_name` VARCHAR(50) NOT NULL COMMENT '姓名',
+    `student_code` VARCHAR(50) NOT NULL COMMENT '学号',
     `college` VARCHAR(50) NULL COMMENT '学院',
     `major` VARCHAR(50) NULL COMMENT '专业',
     `teacher_id` BIGINT(20) NULL COMMENT '任课教师id',
-    `exam_date` VARCHAR(50) DEFAULT NULL COMMENT '考试日期',
-    `exam_time` VARCHAR(50) DEFAULT NULL COMMENT '考试时间',
+    `exam_start_time` BIGINT(20) DEFAULT NULL COMMENT '考试开始时间',
+    `exam_end_time` BIGINT(20) DEFAULT NULL COMMENT '考试结束时间',
     `exam_place` VARCHAR(50) DEFAULT NULL COMMENT '考点',
     `exam_room` VARCHAR(50) DEFAULT NULL COMMENT '考场',
     `create_id` BIGINT(20) NULL COMMENT '创建人',
@@ -103,7 +103,7 @@ CREATE TABLE `basic_exam_student` (
 )  ENGINE=INNODB DEFAULT CHARACTER SET=UTF8MB4 COMMENT='考生字典表';
 
 ALTER TABLE `basic_exam_student` 
-ADD UNIQUE INDEX `basic_exam_student_unique` (`school_id` ASC, `exam_id` ASC, `course_code` ASC, `exam_student_code` ASC) VISIBLE;
+ADD UNIQUE INDEX `basic_exam_student_unique` (`school_id` ASC, `exam_id` ASC, `course_code` ASC, `student_code` ASC) VISIBLE;
 ;
 
 

+ 74 - 0
distributed-print-business/src/main/resources/mapper/BasicExamStudentMapper.xml

@@ -0,0 +1,74 @@
+<?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.BasicExamStudentMapper">
+
+    <select id="findBasicExamStudentPage"
+            resultType="com.qmth.distributed.print.business.bean.result.BasicExamStudentResult">
+        SELECT
+            bes.id,
+            bc.name AS courseName,
+            bes.course_code AS courseCode,
+            bes.student_name AS studentName,
+            bes.student_code AS studentCode,
+            bes.college,
+            bes.major,
+            tbc.clazz_name AS clazzName,
+            bes.paper_number AS paperNumber,
+            teacher.real_name AS teacherName,
+            teacher.code AS teacherCode,
+            bes.exam_start_time AS examStartTime,
+            bes.exam_end_time AS examEndTime,
+            bes.exam_place AS examPlace,
+            bes.exam_room AS examRoom
+        FROM
+            basic_exam_student bes
+                LEFT JOIN
+            basic_course bc ON bes.course_code = bc.code
+                LEFT JOIN
+            basic_teach_clazz tbc ON bes.clazz_id = tbc.id
+                LEFT JOIN
+            sys_user teacher ON bes.teacher_id = teacher.id
+                LEFT JOIN
+            sys_user su ON bes.create_id = su.id
+        <where>
+            <if test="schoolId != null and schoolId != ''">
+                AND bes.school_id = #{schoolId}
+            </if>
+            <if test="semesterId != null">
+                AND bes.semester_id = #{semesterId}
+            </if>
+            <if test="examId != null">
+                AND bes.exam_id = #{examId}
+            </if>
+            <if test="courseCode != null and courseCode != ''">
+                AND bes.course_code LIKE CONCAT('%',#{courseCode},'%')
+            </if>
+            <if test="teacher != null and teacher != ''">
+                AND (teacher.real_name LIKE CONCAT('%',#{teacher},'%') OR teacher.code LIKE CONCAT('%',#{teacher},'%'))
+            </if>
+            <if test="college != null and college != ''">
+                AND bes.college LIKE CONCAT('%',#{college},'%')
+            </if>
+            <if test="major != null and major != ''">
+                AND bes.major LIKE CONCAT('%',#{major},'%')
+            </if>
+            <if test="teachClazzId != null">
+                AND tbc.id = #{teachClazzId}
+            </if>
+            <if test="examStudentInfo != null and examStudentInfo != ''">
+                AND (bes.student_code LIKE CONCAT('%',#{examStudentInfo},'%') OR bes.student_name LIKE CONCAT('%',#{examStudentInfo},'%'))
+            </if>
+            <if test="dpr != null">
+                <if test="dpr.requestUserId != null">
+                    AND bes.create_id = #{dpr.requestUserId}
+                </if>
+                <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                    AND su.org_id IN
+                    <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                </if>
+            </if>
+        </where>
+    </select>
+</mapper>

+ 5 - 0
distributed-print-business/src/main/resources/mapper/BasicTeachClazzMapper.xml

@@ -0,0 +1,5 @@
+<?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.BasicTeachClazzMapper">
+
+</mapper>

+ 5 - 0
distributed-print-business/src/main/resources/mapper/CourseEvaluationMapper.xml

@@ -0,0 +1,5 @@
+<?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.CourseEvaluationMapper">
+
+</mapper>

+ 5 - 0
distributed-print-business/src/main/resources/mapper/CourseTargetMapper.xml

@@ -0,0 +1,5 @@
+<?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.CourseTargetMapper">
+
+</mapper>

+ 5 - 0
distributed-print-business/src/main/resources/mapper/CourseWeightMapper.xml

@@ -0,0 +1,5 @@
+<?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.CourseWeightMapper">
+
+</mapper>

+ 20 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/BasicExamStudentController.java

@@ -0,0 +1,20 @@
+package com.qmth.distributed.print.api;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 考生字典表 前端控制器
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+@RestController
+@RequestMapping("/basic-exam-student")
+public class BasicExamStudentController {
+
+}

+ 20 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/BasicTeachClazzController.java

@@ -0,0 +1,20 @@
+package com.qmth.distributed.print.api;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 基础教学班表 前端控制器
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+@RestController
+@RequestMapping("/basic-teach-clazz")
+public class BasicTeachClazzController {
+
+}

+ 20 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/CourseEvaluationController.java

@@ -0,0 +1,20 @@
+package com.qmth.distributed.print.api;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 课程评价方式 前端控制器
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+@RestController
+@RequestMapping("/course-evaluation")
+public class CourseEvaluationController {
+
+}

+ 20 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/CourseTargetController.java

@@ -0,0 +1,20 @@
+package com.qmth.distributed.print.api;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 课程目标表 前端控制器
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+@RestController
+@RequestMapping("/course-target")
+public class CourseTargetController {
+
+}

+ 20 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/CourseWeightController.java

@@ -0,0 +1,20 @@
+package com.qmth.distributed.print.api;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 课程权重设置 前端控制器
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+@RestController
+@RequestMapping("/course-weight")
+public class CourseWeightController {
+
+}

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

@@ -326,6 +326,7 @@ public class SystemConstant {
     public static final String PATH_MATCH = "*";
     public static final String CATALOG_LINK = "->";
     public static final String OPERATE_LINK = "--";
+    public static final String LIMIT1 = "limit 1";
 
     public static final Integer DEFAULT_BACKUP_COUNT = 1;