diff --git a/pom.xml b/pom.xml
index ef4b26af3..30d8c9b51 100644
--- a/pom.xml
+++ b/pom.xml
@@ -180,6 +180,13 @@
${ruoyi-vue-plus.version}
+
+
+ com.ruoyi
+ ruoyi-edu
+ ${ruoyi-vue-plus.version}
+
+
@@ -191,6 +198,7 @@
ruoyi-generator
ruoyi-common
ruoyi-demo
+ ruoyi-edu
pom
diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index e51c7dabb..d50518e54 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -1,89 +1,95 @@
-
-
-
- ruoyi-vue-plus
- com.ruoyi
- ${ruoyi-vue-plus.version}
-
- 4.0.0
- jar
- ruoyi-admin
-
-
- web服务入口
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-devtools
- true
-
-
-
-
- mysql
- mysql-connector-java
-
-
-
-
- com.ruoyi
- ruoyi-framework
-
-
-
-
- com.ruoyi
- ruoyi-quartz
-
-
-
-
- com.ruoyi
- ruoyi-generator
-
-
-
-
- com.ruoyi
- ruoyi-demo
-
-
-
-
-
- ${project.artifactId}
-
-
- org.springframework.boot
- spring-boot-maven-plugin
- ${spring-boot.version}
-
- true
-
-
-
-
- repackage
-
-
-
-
-
- org.apache.maven.plugins
- maven-war-plugin
- 3.1.0
-
- false
- ${project.artifactId}
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+ ruoyi-vue-plus
+ com.ruoyi
+ ${ruoyi-vue-plus.version}
+
+ 4.0.0
+ jar
+ ruoyi-admin
+
+
+ web服务入口
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-devtools
+ true
+
+
+
+
+ mysql
+ mysql-connector-java
+
+
+
+
+ com.ruoyi
+ ruoyi-framework
+
+
+
+
+ com.ruoyi
+ ruoyi-quartz
+
+
+
+
+ com.ruoyi
+ ruoyi-generator
+
+
+
+
+ com.ruoyi
+ ruoyi-demo
+
+
+
+
+ com.ruoyi
+ ruoyi-edu
+
+
+
+
+
+ ${project.artifactId}
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring-boot.version}
+
+ true
+
+
+
+
+ repackage
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+ 3.1.0
+
+ false
+ ${project.artifactId}
+
+
+
+
+
+
diff --git a/ruoyi-edu/pom.xml b/ruoyi-edu/pom.xml
new file mode 100644
index 000000000..d76bd573e
--- /dev/null
+++ b/ruoyi-edu/pom.xml
@@ -0,0 +1,28 @@
+
+
+
+ ruoyi-vue-plus
+ com.ruoyi
+ ${ruoyi-vue-plus.version}
+
+ 4.0.0
+
+ ruoyi-edu
+
+
+ edu模块
+
+
+
+
+
+
+ com.ruoyi
+ ruoyi-common
+
+
+
+
+
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduExamAddBo.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduExamAddBo.java
new file mode 100644
index 000000000..72717ef74
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduExamAddBo.java
@@ -0,0 +1,40 @@
+package com.ruoyi.edu.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+import javax.validation.constraints.*;
+
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 考试信息添加对象 edu_exam
+ *
+ * @author keyleaf
+ * @date 2021-05-23
+ */
+@Data
+@ApiModel("考试信息添加对象")
+public class EduExamAddBo {
+
+ /** 考试编号 */
+ @ApiModelProperty("考试编号")
+ @NotBlank(message = "考试编号不能为空")
+ private String examNo;
+ /** 考试名称 */
+ @ApiModelProperty("考试名称")
+ @NotBlank(message = "考试名称不能为空")
+ private String examName;
+ /** 考试简称 */
+ @ApiModelProperty("考试简称")
+ private String examShortName;
+ /** 考试日期 */
+ @ApiModelProperty("考试日期")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @NotNull(message = "考试日期不能为空")
+ private Date examDate;
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduExamEditBo.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduExamEditBo.java
new file mode 100644
index 000000000..a318cac80
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduExamEditBo.java
@@ -0,0 +1,47 @@
+package com.ruoyi.edu.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 考试信息编辑对象 edu_exam
+ *
+ * @author keyleaf
+ * @date 2021-05-23
+ */
+@Data
+@ApiModel("考试信息编辑对象")
+public class EduExamEditBo {
+
+
+ /** $column.columnComment */
+ @ApiModelProperty("$column.columnComment")
+ private Long id;
+
+ /** 考试编号 */
+ @ApiModelProperty("考试编号")
+ @NotBlank(message = "考试编号不能为空")
+ private String examNo;
+
+ /** 考试名称 */
+ @ApiModelProperty("考试名称")
+ @NotBlank(message = "考试名称不能为空")
+ private String examName;
+
+ /** 考试简称 */
+ @ApiModelProperty("考试简称")
+ private String examShortName;
+
+ /** 考试日期 */
+ @ApiModelProperty("考试日期")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @NotNull(message = "考试日期不能为空")
+ private Date examDate;
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduExamQueryBo.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduExamQueryBo.java
new file mode 100644
index 000000000..b3d9a8cab
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduExamQueryBo.java
@@ -0,0 +1,54 @@
+package com.ruoyi.edu.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 考试信息分页查询对象 edu_exam
+ *
+ * @author keyleaf
+ * @date 2021-05-23
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("考试信息分页查询对象")
+public class EduExamQueryBo extends BaseEntity {
+
+ /** 分页大小 */
+ @ApiModelProperty("分页大小")
+ private Integer pageSize;
+ /** 当前页数 */
+ @ApiModelProperty("当前页数")
+ private Integer pageNum;
+ /** 排序列 */
+ @ApiModelProperty("排序列")
+ private String orderByColumn;
+ /** 排序的方向desc或者asc */
+ @ApiModelProperty(value = "排序的方向", example = "asc,desc")
+ private String isAsc;
+
+
+ /** 考试编号 */
+ @ApiModelProperty("考试编号")
+ private String examNo;
+ /** 考试名称 */
+ @ApiModelProperty("考试名称")
+ private String examName;
+ /** 考试简称 */
+ @ApiModelProperty("考试简称")
+ private String examShortName;
+ /** 考试日期 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @ApiModelProperty("考试日期")
+ private Date examDate;
+
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduStudentAddBo.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduStudentAddBo.java
new file mode 100644
index 000000000..099c5a030
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduStudentAddBo.java
@@ -0,0 +1,48 @@
+package com.ruoyi.edu.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+import javax.validation.constraints.*;
+
+
+
+/**
+ * 学生信息添加对象 edu_student
+ *
+ * @author keyleaf
+ * @date 2021-05-22
+ */
+@Data
+@ApiModel("学生信息添加对象")
+public class EduStudentAddBo {
+
+ /** 身份证号 */
+ @ApiModelProperty("身份证号")
+ @NotBlank(message = "身份证号不能为空")
+ private String idCardNo;
+ /** 学生姓名 */
+ @ApiModelProperty("学生姓名")
+ @NotBlank(message = "学生姓名不能为空")
+ private String studentName;
+ /** 年级 */
+ @ApiModelProperty("年级")
+ private String currentGrade;
+ /** 班级 */
+ @ApiModelProperty("班级")
+ private String currentClass;
+ /** 学校 */
+ @ApiModelProperty("学校")
+ private String currentSchool;
+ /** 手机号 */
+ @ApiModelProperty("手机号")
+ private String mobile;
+ /** 父亲手机 */
+ @ApiModelProperty("父亲手机")
+ private String fatherMobile;
+ /** 母亲手机 */
+ @ApiModelProperty("母亲手机")
+ private String motherMobile;
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduStudentEditBo.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduStudentEditBo.java
new file mode 100644
index 000000000..18f6d68bb
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduStudentEditBo.java
@@ -0,0 +1,59 @@
+package com.ruoyi.edu.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+import javax.validation.constraints.*;
+
+
+/**
+ * 学生信息编辑对象 edu_student
+ *
+ * @author keyleaf
+ * @date 2021-05-22
+ */
+@Data
+@ApiModel("学生信息编辑对象")
+public class EduStudentEditBo {
+
+
+ /** $column.columnComment */
+ @ApiModelProperty("$column.columnComment")
+ private Long id;
+
+ /** 身份证号 */
+ @ApiModelProperty("身份证号")
+ @NotBlank(message = "身份证号不能为空")
+ private String idCardNo;
+
+ /** 学生姓名 */
+ @ApiModelProperty("学生姓名")
+ @NotBlank(message = "学生姓名不能为空")
+ private String studentName;
+
+ /** 年级 */
+ @ApiModelProperty("年级")
+ private String currentGrade;
+
+ /** 班级 */
+ @ApiModelProperty("班级")
+ private String currentClass;
+
+ /** 学校 */
+ @ApiModelProperty("学校")
+ private String currentSchool;
+
+ /** 手机号 */
+ @ApiModelProperty("手机号")
+ private String mobile;
+
+ /** 父亲手机 */
+ @ApiModelProperty("父亲手机")
+ private String fatherMobile;
+
+ /** 母亲手机 */
+ @ApiModelProperty("母亲手机")
+ private String motherMobile;
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduStudentExamAddBo.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduStudentExamAddBo.java
new file mode 100644
index 000000000..45d6bacff
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduStudentExamAddBo.java
@@ -0,0 +1,73 @@
+package com.ruoyi.edu.bo;
+
+import com.ruoyi.edu.domain.EduStudent;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+import javax.validation.constraints.*;
+
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 学生考试信息添加对象 edu_student_exam
+ *
+ * @author keyleaf
+ * @date 2021-05-23
+ */
+@Data
+@ApiModel("学生考试信息添加对象")
+public class EduStudentExamAddBo {
+
+ /** 学生id */
+ @ApiModelProperty("学生id")
+ @NotNull(message = "学生id不能为空")
+ private Long studentId;
+ /** 考试id */
+ @ApiModelProperty("考试id")
+ @NotNull(message = "考试id不能为空")
+ private Long examId;
+ /** 语文分数 */
+ @ApiModelProperty("语文分数")
+ private BigDecimal chineseScore;
+ /** 数学分数 */
+ @ApiModelProperty("数学分数")
+ private BigDecimal mathScore;
+ /** 英语分数 */
+ @ApiModelProperty("英语分数")
+ private BigDecimal englishScore;
+ /** 化学分数 */
+ @ApiModelProperty("化学分数")
+ private BigDecimal chemistryScore;
+ /** 物理分数 */
+ @ApiModelProperty("物理分数")
+ private BigDecimal physicsScore;
+ /** 生物分数 */
+ @ApiModelProperty("生物分数")
+ private BigDecimal biologyScore;
+ /** 政治分数 */
+ @ApiModelProperty("政治分数")
+ private BigDecimal politicsScore;
+ /** 历史分数 */
+ @ApiModelProperty("历史分数")
+ private BigDecimal historyScore;
+ /** 地理分数 */
+ @ApiModelProperty("地理分数")
+ private BigDecimal geographyScore;
+ /** 思想品德分数 */
+ @ApiModelProperty("思想品德分数")
+ private BigDecimal ethicScore;
+ /** 班级排名 */
+ @ApiModelProperty("班级排名")
+ private Long classRank;
+ /** 级部排名 */
+ @ApiModelProperty("级部排名")
+ private Long gradeRank;
+
+ /** 学生信息信息 */
+ @ApiModelProperty("学生信息")
+ private List eduStudentList;
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduStudentExamEditBo.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduStudentExamEditBo.java
new file mode 100644
index 000000000..d3bc1932e
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduStudentExamEditBo.java
@@ -0,0 +1,90 @@
+package com.ruoyi.edu.bo;
+
+import com.ruoyi.edu.domain.EduStudent;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+import javax.validation.constraints.*;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 学生考试信息编辑对象 edu_student_exam
+ *
+ * @author keyleaf
+ * @date 2021-05-23
+ */
+@Data
+@ApiModel("学生考试信息编辑对象")
+public class EduStudentExamEditBo {
+
+
+ /** $column.columnComment */
+ @ApiModelProperty("$column.columnComment")
+ private Long id;
+
+ /** 学生id */
+ @ApiModelProperty("学生id")
+ @NotNull(message = "学生id不能为空")
+ private Long studentId;
+
+ /** 考试id */
+ @ApiModelProperty("考试id")
+ @NotNull(message = "考试id不能为空")
+ private Long examId;
+
+ /** 语文分数 */
+ @ApiModelProperty("语文分数")
+ private BigDecimal chineseScore;
+
+ /** 数学分数 */
+ @ApiModelProperty("数学分数")
+ private BigDecimal mathScore;
+
+ /** 英语分数 */
+ @ApiModelProperty("英语分数")
+ private BigDecimal englishScore;
+
+ /** 化学分数 */
+ @ApiModelProperty("化学分数")
+ private BigDecimal chemistryScore;
+
+ /** 物理分数 */
+ @ApiModelProperty("物理分数")
+ private BigDecimal physicsScore;
+
+ /** 生物分数 */
+ @ApiModelProperty("生物分数")
+ private BigDecimal biologyScore;
+
+ /** 政治分数 */
+ @ApiModelProperty("政治分数")
+ private BigDecimal politicsScore;
+
+ /** 历史分数 */
+ @ApiModelProperty("历史分数")
+ private BigDecimal historyScore;
+
+ /** 地理分数 */
+ @ApiModelProperty("地理分数")
+ private BigDecimal geographyScore;
+
+ /** 思想品德分数 */
+ @ApiModelProperty("思想品德分数")
+ private BigDecimal ethicScore;
+
+ /** 班级排名 */
+ @ApiModelProperty("班级排名")
+ private Long classRank;
+
+ /** 级部排名 */
+ @ApiModelProperty("级部排名")
+ private Long gradeRank;
+
+ /** 学生信息信息 */
+ @ApiModelProperty("学生信息")
+ private List eduStudentList;
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduStudentExamQueryBo.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduStudentExamQueryBo.java
new file mode 100644
index 000000000..b3ebc6136
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduStudentExamQueryBo.java
@@ -0,0 +1,47 @@
+package com.ruoyi.edu.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+import java.math.BigDecimal;
+import java.util.List;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 学生考试信息分页查询对象 edu_student_exam
+ *
+ * @author keyleaf
+ * @date 2021-05-23
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("学生考试信息分页查询对象")
+public class EduStudentExamQueryBo extends BaseEntity {
+
+ /** 分页大小 */
+ @ApiModelProperty("分页大小")
+ private Integer pageSize;
+ /** 当前页数 */
+ @ApiModelProperty("当前页数")
+ private Integer pageNum;
+ /** 排序列 */
+ @ApiModelProperty("排序列")
+ private String orderByColumn;
+ /** 排序的方向desc或者asc */
+ @ApiModelProperty(value = "排序的方向", example = "asc,desc")
+ private String isAsc;
+
+
+ /** 学生id */
+ @ApiModelProperty("学生id")
+ private Long studentId;
+ /** 考试id */
+ @ApiModelProperty("考试id")
+ private Long examId;
+
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduStudentQueryBo.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduStudentQueryBo.java
new file mode 100644
index 000000000..2fddb6037
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/bo/EduStudentQueryBo.java
@@ -0,0 +1,51 @@
+package com.ruoyi.edu.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 学生信息分页查询对象 edu_student
+ *
+ * @author keyleaf
+ * @date 2021-05-22
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("学生信息分页查询对象")
+public class EduStudentQueryBo extends BaseEntity {
+
+ /** 分页大小 */
+ @ApiModelProperty("分页大小")
+ private Integer pageSize;
+ /** 当前页数 */
+ @ApiModelProperty("当前页数")
+ private Integer pageNum;
+ /** 排序列 */
+ @ApiModelProperty("排序列")
+ private String orderByColumn;
+ /** 排序的方向desc或者asc */
+ @ApiModelProperty(value = "排序的方向", example = "asc,desc")
+ private String isAsc;
+
+
+ /** 身份证号 */
+ @ApiModelProperty("身份证号")
+ private String idCardNo;
+ /** 学生姓名 */
+ @ApiModelProperty("学生姓名")
+ private String studentName;
+ /** 年级 */
+ @ApiModelProperty("年级")
+ private String currentGrade;
+ /** 班级 */
+ @ApiModelProperty("班级")
+ private String currentClass;
+
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/controller/EduExamController.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/controller/EduExamController.java
new file mode 100644
index 000000000..ef3706ffd
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/controller/EduExamController.java
@@ -0,0 +1,107 @@
+package com.ruoyi.edu.controller;
+
+import java.util.List;
+import java.util.Arrays;
+
+import lombok.RequiredArgsConstructor;
+import javax.validation.constraints.*;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.edu.vo.EduExamVo;
+import com.ruoyi.edu.bo.EduExamQueryBo;
+import com.ruoyi.edu.bo.EduExamAddBo;
+import com.ruoyi.edu.bo.EduExamEditBo;
+import com.ruoyi.edu.service.IEduExamService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 考试信息Controller
+ *
+ * @author keyleaf
+ * @date 2021-05-23
+ */
+@Api(value = "考试信息控制器", tags = {"考试信息管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/edu/exam")
+public class EduExamController extends BaseController {
+
+ private final IEduExamService iEduExamService;
+
+ /**
+ * 查询考试信息列表
+ */
+ @ApiOperation("查询考试信息列表")
+ @PreAuthorize("@ss.hasPermi('edu:exam:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(@Validated EduExamQueryBo bo) {
+ return iEduExamService.queryPageList(bo);
+ }
+
+ /**
+ * 导出考试信息列表
+ */
+ @ApiOperation("导出考试信息列表")
+ @PreAuthorize("@ss.hasPermi('edu:exam:export')")
+ @Log(title = "考试信息", businessType = BusinessType.EXPORT)
+ @GetMapping("/export")
+ public AjaxResult export(@Validated EduExamQueryBo bo) {
+ List list = iEduExamService.queryList(bo);
+ ExcelUtil util = new ExcelUtil(EduExamVo.class);
+ return util.exportExcel(list, "考试信息");
+ }
+
+ /**
+ * 获取考试信息详细信息
+ */
+ @ApiOperation("获取考试信息详细信息")
+ @PreAuthorize("@ss.hasPermi('edu:exam:query')")
+ @GetMapping("/{id}")
+ public AjaxResult getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable("id") Long id) {
+ return AjaxResult.success(iEduExamService.queryById(id));
+ }
+
+ /**
+ * 新增考试信息
+ */
+ @ApiOperation("新增考试信息")
+ @PreAuthorize("@ss.hasPermi('edu:exam:add')")
+ @Log(title = "考试信息", businessType = BusinessType.INSERT)
+ @PostMapping()
+ public AjaxResult add(@Validated @RequestBody EduExamAddBo bo) {
+ return toAjax(iEduExamService.insertByAddBo(bo) ? 1 : 0);
+ }
+
+ /**
+ * 修改考试信息
+ */
+ @ApiOperation("修改考试信息")
+ @PreAuthorize("@ss.hasPermi('edu:exam:edit')")
+ @Log(title = "考试信息", businessType = BusinessType.UPDATE)
+ @PutMapping()
+ public AjaxResult edit(@Validated @RequestBody EduExamEditBo bo) {
+ return toAjax(iEduExamService.updateByEditBo(bo) ? 1 : 0);
+ }
+
+ /**
+ * 删除考试信息
+ */
+ @ApiOperation("删除考试信息")
+ @PreAuthorize("@ss.hasPermi('edu:exam:remove')")
+ @Log(title = "考试信息" , businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iEduExamService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
+ }
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/controller/EduStudentController.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/controller/EduStudentController.java
new file mode 100644
index 000000000..1351312ff
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/controller/EduStudentController.java
@@ -0,0 +1,107 @@
+package com.ruoyi.edu.controller;
+
+import java.util.List;
+import java.util.Arrays;
+
+import lombok.RequiredArgsConstructor;
+import javax.validation.constraints.*;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.edu.vo.EduStudentVo;
+import com.ruoyi.edu.bo.EduStudentQueryBo;
+import com.ruoyi.edu.bo.EduStudentAddBo;
+import com.ruoyi.edu.bo.EduStudentEditBo;
+import com.ruoyi.edu.service.IEduStudentService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 学生信息Controller
+ *
+ * @author keyleaf
+ * @date 2021-05-22
+ */
+@Api(value = "学生信息控制器", tags = {"学生信息管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/edu/student")
+public class EduStudentController extends BaseController {
+
+ private final IEduStudentService iEduStudentService;
+
+ /**
+ * 查询学生信息列表
+ */
+ @ApiOperation("查询学生信息列表")
+ @PreAuthorize("@ss.hasPermi('edu:student:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(@Validated EduStudentQueryBo bo) {
+ return iEduStudentService.queryPageList(bo);
+ }
+
+ /**
+ * 导出学生信息列表
+ */
+ @ApiOperation("导出学生信息列表")
+ @PreAuthorize("@ss.hasPermi('edu:student:export')")
+ @Log(title = "学生信息", businessType = BusinessType.EXPORT)
+ @GetMapping("/export")
+ public AjaxResult export(@Validated EduStudentQueryBo bo) {
+ List list = iEduStudentService.queryList(bo);
+ ExcelUtil util = new ExcelUtil(EduStudentVo.class);
+ return util.exportExcel(list, "学生信息");
+ }
+
+ /**
+ * 获取学生信息详细信息
+ */
+ @ApiOperation("获取学生信息详细信息")
+ @PreAuthorize("@ss.hasPermi('edu:student:query')")
+ @GetMapping("/{id}")
+ public AjaxResult getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable("id") Long id) {
+ return AjaxResult.success(iEduStudentService.queryById(id));
+ }
+
+ /**
+ * 新增学生信息
+ */
+ @ApiOperation("新增学生信息")
+ @PreAuthorize("@ss.hasPermi('edu:student:add')")
+ @Log(title = "学生信息", businessType = BusinessType.INSERT)
+ @PostMapping()
+ public AjaxResult add(@Validated @RequestBody EduStudentAddBo bo) {
+ return toAjax(iEduStudentService.insertByAddBo(bo) ? 1 : 0);
+ }
+
+ /**
+ * 修改学生信息
+ */
+ @ApiOperation("修改学生信息")
+ @PreAuthorize("@ss.hasPermi('edu:student:edit')")
+ @Log(title = "学生信息", businessType = BusinessType.UPDATE)
+ @PutMapping()
+ public AjaxResult edit(@Validated @RequestBody EduStudentEditBo bo) {
+ return toAjax(iEduStudentService.updateByEditBo(bo) ? 1 : 0);
+ }
+
+ /**
+ * 删除学生信息
+ */
+ @ApiOperation("删除学生信息")
+ @PreAuthorize("@ss.hasPermi('edu:student:remove')")
+ @Log(title = "学生信息" , businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iEduStudentService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
+ }
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/controller/EduStudentExamController.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/controller/EduStudentExamController.java
new file mode 100644
index 000000000..822d57a2f
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/controller/EduStudentExamController.java
@@ -0,0 +1,107 @@
+package com.ruoyi.edu.controller;
+
+import java.util.List;
+import java.util.Arrays;
+
+import lombok.RequiredArgsConstructor;
+import javax.validation.constraints.*;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.edu.vo.EduStudentExamVo;
+import com.ruoyi.edu.bo.EduStudentExamQueryBo;
+import com.ruoyi.edu.bo.EduStudentExamAddBo;
+import com.ruoyi.edu.bo.EduStudentExamEditBo;
+import com.ruoyi.edu.service.IEduStudentExamService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 学生考试信息Controller
+ *
+ * @author keyleaf
+ * @date 2021-05-23
+ */
+@Api(value = "学生考试信息控制器", tags = {"学生考试信息管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/edu/score")
+public class EduStudentExamController extends BaseController {
+
+ private final IEduStudentExamService iEduStudentExamService;
+
+ /**
+ * 查询学生考试信息列表
+ */
+ @ApiOperation("查询学生考试信息列表")
+ @PreAuthorize("@ss.hasPermi('edu:score:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(@Validated EduStudentExamQueryBo bo) {
+ return iEduStudentExamService.queryPageList(bo);
+ }
+
+ /**
+ * 导出学生考试信息列表
+ */
+ @ApiOperation("导出学生考试信息列表")
+ @PreAuthorize("@ss.hasPermi('edu:score:export')")
+ @Log(title = "学生考试信息", businessType = BusinessType.EXPORT)
+ @GetMapping("/export")
+ public AjaxResult export(@Validated EduStudentExamQueryBo bo) {
+ List list = iEduStudentExamService.queryList(bo);
+ ExcelUtil util = new ExcelUtil(EduStudentExamVo.class);
+ return util.exportExcel(list, "学生考试信息");
+ }
+
+ /**
+ * 获取学生考试信息详细信息
+ */
+ @ApiOperation("获取学生考试信息详细信息")
+ @PreAuthorize("@ss.hasPermi('edu:score:query')")
+ @GetMapping("/{id}")
+ public AjaxResult getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable("id") Long id) {
+ return AjaxResult.success(iEduStudentExamService.queryById(id));
+ }
+
+ /**
+ * 新增学生考试信息
+ */
+ @ApiOperation("新增学生考试信息")
+ @PreAuthorize("@ss.hasPermi('edu:score:add')")
+ @Log(title = "学生考试信息", businessType = BusinessType.INSERT)
+ @PostMapping()
+ public AjaxResult add(@Validated @RequestBody EduStudentExamAddBo bo) {
+ return toAjax(iEduStudentExamService.insertByAddBo(bo) ? 1 : 0);
+ }
+
+ /**
+ * 修改学生考试信息
+ */
+ @ApiOperation("修改学生考试信息")
+ @PreAuthorize("@ss.hasPermi('edu:score:edit')")
+ @Log(title = "学生考试信息", businessType = BusinessType.UPDATE)
+ @PutMapping()
+ public AjaxResult edit(@Validated @RequestBody EduStudentExamEditBo bo) {
+ return toAjax(iEduStudentExamService.updateByEditBo(bo) ? 1 : 0);
+ }
+
+ /**
+ * 删除学生考试信息
+ */
+ @ApiOperation("删除学生考试信息")
+ @PreAuthorize("@ss.hasPermi('edu:score:remove')")
+ @Log(title = "学生考试信息" , businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iEduStudentExamService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
+ }
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/domain/EduExam.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/domain/EduExam.java
new file mode 100644
index 000000000..690e98776
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/domain/EduExam.java
@@ -0,0 +1,59 @@
+package com.ruoyi.edu.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.ruoyi.common.annotation.Excel;
+
+/**
+ * 考试信息对象 edu_exam
+ *
+ * @author keyleaf
+ * @date 2021-05-23
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("edu_exam")
+public class EduExam implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+
+ /** $column.columnComment */
+ @TableId(value = "id")
+ private Long id;
+
+ /** 考试编号 */
+ private String examNo;
+
+ /** 考试名称 */
+ private String examName;
+
+ /** 考试简称 */
+ private String examShortName;
+
+ /** 考试日期 */
+ private Date examDate;
+
+ /** 创建时间 */
+ @TableField(fill = FieldFill.INSERT)
+ private Date createTime;
+
+ /** 创建人id */
+ @TableField(fill = FieldFill.INSERT)
+ private String createBy;
+
+ /** 修改时间 */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Date updateTime;
+
+ /** 修改人id */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private String updateBy;
+
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/domain/EduStudent.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/domain/EduStudent.java
new file mode 100644
index 000000000..3d9234f98
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/domain/EduStudent.java
@@ -0,0 +1,71 @@
+package com.ruoyi.edu.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.ruoyi.common.annotation.Excel;
+
+/**
+ * 学生信息对象 edu_student
+ *
+ * @author keyleaf
+ * @date 2021-05-22
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("edu_student")
+public class EduStudent implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+
+ /** $column.columnComment */
+ @TableId(value = "id")
+ private Long id;
+
+ /** 身份证号 */
+ private String idCardNo;
+
+ /** 学生姓名 */
+ private String studentName;
+
+ /** 年级 */
+ private String currentGrade;
+
+ /** 班级 */
+ private String currentClass;
+
+ /** 学校 */
+ private String currentSchool;
+
+ /** 手机号 */
+ private String mobile;
+
+ /** 父亲手机 */
+ private String fatherMobile;
+
+ /** 母亲手机 */
+ private String motherMobile;
+
+ /** 创建时间 */
+ @TableField(fill = FieldFill.INSERT)
+ private Date createTime;
+
+ /** 创建人id */
+ @TableField(fill = FieldFill.INSERT)
+ private String createBy;
+
+ /** 修改时间 */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Date updateTime;
+
+ /** 修改人id */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private String updateBy;
+
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/domain/EduStudentExam.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/domain/EduStudentExam.java
new file mode 100644
index 000000000..53d21dfff
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/domain/EduStudentExam.java
@@ -0,0 +1,89 @@
+package com.ruoyi.edu.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.ruoyi.common.annotation.Excel;
+
+/**
+ * 学生考试信息对象 edu_student_exam
+ *
+ * @author keyleaf
+ * @date 2021-05-23
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("edu_student_exam")
+public class EduStudentExam implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+
+ /** $column.columnComment */
+ @TableId(value = "id")
+ private Long id;
+
+ /** 学生id */
+ private Long studentId;
+
+ /** 考试id */
+ private Long examId;
+
+ /** 语文分数 */
+ private BigDecimal chineseScore;
+
+ /** 数学分数 */
+ private BigDecimal mathScore;
+
+ /** 英语分数 */
+ private BigDecimal englishScore;
+
+ /** 化学分数 */
+ private BigDecimal chemistryScore;
+
+ /** 物理分数 */
+ private BigDecimal physicsScore;
+
+ /** 生物分数 */
+ private BigDecimal biologyScore;
+
+ /** 政治分数 */
+ private BigDecimal politicsScore;
+
+ /** 历史分数 */
+ private BigDecimal historyScore;
+
+ /** 地理分数 */
+ private BigDecimal geographyScore;
+
+ /** 思想品德分数 */
+ private BigDecimal ethicScore;
+
+ /** 班级排名 */
+ private Long classRank;
+
+ /** 级部排名 */
+ private Long gradeRank;
+
+ /** 创建时间 */
+ @TableField(fill = FieldFill.INSERT)
+ private Date createTime;
+
+ /** 创建人id */
+ @TableField(fill = FieldFill.INSERT)
+ private String createBy;
+
+ /** 修改时间 */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Date updateTime;
+
+ /** 修改人id */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private String updateBy;
+
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/mapper/EduExamMapper.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/mapper/EduExamMapper.java
new file mode 100644
index 000000000..7685de70c
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/mapper/EduExamMapper.java
@@ -0,0 +1,14 @@
+package com.ruoyi.edu.mapper;
+
+import com.ruoyi.edu.domain.EduExam;
+import com.ruoyi.common.core.page.BaseMapperPlus;
+
+/**
+ * 考试信息Mapper接口
+ *
+ * @author keyleaf
+ * @date 2021-05-23
+ */
+public interface EduExamMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/mapper/EduStudentExamMapper.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/mapper/EduStudentExamMapper.java
new file mode 100644
index 000000000..30b3393f6
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/mapper/EduStudentExamMapper.java
@@ -0,0 +1,14 @@
+package com.ruoyi.edu.mapper;
+
+import com.ruoyi.edu.domain.EduStudentExam;
+import com.ruoyi.common.core.page.BaseMapperPlus;
+
+/**
+ * 学生考试信息Mapper接口
+ *
+ * @author keyleaf
+ * @date 2021-05-23
+ */
+public interface EduStudentExamMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/mapper/EduStudentMapper.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/mapper/EduStudentMapper.java
new file mode 100644
index 000000000..c1bd61ae7
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/mapper/EduStudentMapper.java
@@ -0,0 +1,14 @@
+package com.ruoyi.edu.mapper;
+
+import com.ruoyi.edu.domain.EduStudent;
+import com.ruoyi.common.core.page.BaseMapperPlus;
+
+/**
+ * 学生信息Mapper接口
+ *
+ * @author keyleaf
+ * @date 2021-05-22
+ */
+public interface EduStudentMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/service/IEduExamService.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/service/IEduExamService.java
new file mode 100644
index 000000000..0459cd92e
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/service/IEduExamService.java
@@ -0,0 +1,57 @@
+package com.ruoyi.edu.service;
+
+import com.ruoyi.edu.domain.EduExam;
+import com.ruoyi.edu.vo.EduExamVo;
+import com.ruoyi.edu.bo.EduExamQueryBo;
+import com.ruoyi.edu.bo.EduExamAddBo;
+import com.ruoyi.edu.bo.EduExamEditBo;
+import com.ruoyi.common.core.page.IServicePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 考试信息Service接口
+ *
+ * @author keyleaf
+ * @date 2021-05-23
+ */
+public interface IEduExamService extends IServicePlus {
+ /**
+ * 查询单个
+ * @return
+ */
+ EduExamVo queryById(Long id);
+
+ /**
+ * 查询列表
+ */
+ TableDataInfo queryPageList(EduExamQueryBo bo);
+ /**
+ * 查询列表
+ */
+ List queryList(EduExamQueryBo bo);
+
+ /**
+ * 根据新增业务对象插入考试信息
+ * @param bo 考试信息新增业务对象
+ * @return
+ */
+ Boolean insertByAddBo(EduExamAddBo bo);
+
+ /**
+ * 根据编辑业务对象修改考试信息
+ * @param bo 考试信息编辑业务对象
+ * @return
+ */
+ Boolean updateByEditBo(EduExamEditBo bo);
+
+ /**
+ * 校验并删除数据
+ * @param ids 主键集合
+ * @param isValid 是否校验,true-删除前校验,false-不校验
+ * @return
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/service/IEduStudentExamService.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/service/IEduStudentExamService.java
new file mode 100644
index 000000000..4a901f775
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/service/IEduStudentExamService.java
@@ -0,0 +1,57 @@
+package com.ruoyi.edu.service;
+
+import com.ruoyi.edu.domain.EduStudentExam;
+import com.ruoyi.edu.vo.EduStudentExamVo;
+import com.ruoyi.edu.bo.EduStudentExamQueryBo;
+import com.ruoyi.edu.bo.EduStudentExamAddBo;
+import com.ruoyi.edu.bo.EduStudentExamEditBo;
+import com.ruoyi.common.core.page.IServicePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 学生考试信息Service接口
+ *
+ * @author keyleaf
+ * @date 2021-05-23
+ */
+public interface IEduStudentExamService extends IServicePlus {
+ /**
+ * 查询单个
+ * @return
+ */
+ EduStudentExamVo queryById(Long id);
+
+ /**
+ * 查询列表
+ */
+ TableDataInfo queryPageList(EduStudentExamQueryBo bo);
+ /**
+ * 查询列表
+ */
+ List queryList(EduStudentExamQueryBo bo);
+
+ /**
+ * 根据新增业务对象插入学生考试信息
+ * @param bo 学生考试信息新增业务对象
+ * @return
+ */
+ Boolean insertByAddBo(EduStudentExamAddBo bo);
+
+ /**
+ * 根据编辑业务对象修改学生考试信息
+ * @param bo 学生考试信息编辑业务对象
+ * @return
+ */
+ Boolean updateByEditBo(EduStudentExamEditBo bo);
+
+ /**
+ * 校验并删除数据
+ * @param ids 主键集合
+ * @param isValid 是否校验,true-删除前校验,false-不校验
+ * @return
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/service/IEduStudentService.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/service/IEduStudentService.java
new file mode 100644
index 000000000..df911e17d
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/service/IEduStudentService.java
@@ -0,0 +1,57 @@
+package com.ruoyi.edu.service;
+
+import com.ruoyi.edu.domain.EduStudent;
+import com.ruoyi.edu.vo.EduStudentVo;
+import com.ruoyi.edu.bo.EduStudentQueryBo;
+import com.ruoyi.edu.bo.EduStudentAddBo;
+import com.ruoyi.edu.bo.EduStudentEditBo;
+import com.ruoyi.common.core.page.IServicePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 学生信息Service接口
+ *
+ * @author keyleaf
+ * @date 2021-05-22
+ */
+public interface IEduStudentService extends IServicePlus {
+ /**
+ * 查询单个
+ * @return
+ */
+ EduStudentVo queryById(Long id);
+
+ /**
+ * 查询列表
+ */
+ TableDataInfo queryPageList(EduStudentQueryBo bo);
+ /**
+ * 查询列表
+ */
+ List queryList(EduStudentQueryBo bo);
+
+ /**
+ * 根据新增业务对象插入学生信息
+ * @param bo 学生信息新增业务对象
+ * @return
+ */
+ Boolean insertByAddBo(EduStudentAddBo bo);
+
+ /**
+ * 根据编辑业务对象修改学生信息
+ * @param bo 学生信息编辑业务对象
+ * @return
+ */
+ Boolean updateByEditBo(EduStudentEditBo bo);
+
+ /**
+ * 校验并删除数据
+ * @param ids 主键集合
+ * @param isValid 是否校验,true-删除前校验,false-不校验
+ * @return
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/service/impl/EduExamServiceImpl.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/service/impl/EduExamServiceImpl.java
new file mode 100644
index 000000000..eb80cd781
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/service/impl/EduExamServiceImpl.java
@@ -0,0 +1,89 @@
+package com.ruoyi.edu.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.ruoyi.common.utils.PageUtils;
+import com.ruoyi.common.core.page.PagePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.edu.bo.EduExamAddBo;
+import com.ruoyi.edu.bo.EduExamQueryBo;
+import com.ruoyi.edu.bo.EduExamEditBo;
+import com.ruoyi.edu.domain.EduExam;
+import com.ruoyi.edu.mapper.EduExamMapper;
+import com.ruoyi.edu.vo.EduExamVo;
+import com.ruoyi.edu.service.IEduExamService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 考试信息Service业务层处理
+ *
+ * @author keyleaf
+ * @date 2021-05-23
+ */
+@Service
+public class EduExamServiceImpl extends ServiceImpl implements IEduExamService {
+
+ @Override
+ public EduExamVo queryById(Long id){
+ return getVoById(id, EduExamVo.class);
+ }
+
+ @Override
+ public TableDataInfo queryPageList(EduExamQueryBo bo) {
+ PagePlus result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo), EduExamVo.class);
+ return PageUtils.buildDataInfo(result);
+ }
+
+ @Override
+ public List queryList(EduExamQueryBo bo) {
+ return listVo(buildQueryWrapper(bo), EduExamVo.class);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(EduExamQueryBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(StrUtil.isNotBlank(bo.getExamNo()), EduExam::getExamNo, bo.getExamNo());
+ lqw.like(StrUtil.isNotBlank(bo.getExamName()), EduExam::getExamName, bo.getExamName());
+ lqw.like(StrUtil.isNotBlank(bo.getExamShortName()), EduExam::getExamShortName, bo.getExamShortName());
+ lqw.eq(bo.getExamDate() != null, EduExam::getExamDate, bo.getExamDate());
+ return lqw;
+ }
+
+ @Override
+ public Boolean insertByAddBo(EduExamAddBo bo) {
+ EduExam add = BeanUtil.toBean(bo, EduExam.class);
+ validEntityBeforeSave(add);
+ return save(add);
+ }
+
+ @Override
+ public Boolean updateByEditBo(EduExamEditBo bo) {
+ EduExam update = BeanUtil.toBean(bo, EduExam.class);
+ validEntityBeforeSave(update);
+ return updateById(update);
+ }
+
+ /**
+ * 保存前的数据校验
+ *
+ * @param entity 实体类数据
+ */
+ private void validEntityBeforeSave(EduExam entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return removeByIds(ids);
+ }
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/service/impl/EduStudentExamServiceImpl.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/service/impl/EduStudentExamServiceImpl.java
new file mode 100644
index 000000000..d3b4496f1
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/service/impl/EduStudentExamServiceImpl.java
@@ -0,0 +1,92 @@
+package com.ruoyi.edu.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ruoyi.common.utils.PageUtils;
+import com.ruoyi.common.core.page.PagePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.edu.bo.EduStudentExamAddBo;
+import com.ruoyi.edu.bo.EduStudentExamQueryBo;
+import com.ruoyi.edu.bo.EduStudentExamEditBo;
+import com.ruoyi.edu.domain.EduStudentExam;
+import com.ruoyi.edu.mapper.EduStudentExamMapper;
+import com.ruoyi.edu.vo.EduStudentExamVo;
+import com.ruoyi.edu.service.IEduStudentExamService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 学生考试信息Service业务层处理
+ *
+ * @author keyleaf
+ * @date 2021-05-23
+ */
+@Service
+public class EduStudentExamServiceImpl extends ServiceImpl implements IEduStudentExamService {
+
+ @Override
+ public EduStudentExamVo queryById(Long id){
+ return getVoById(id, EduStudentExamVo.class);
+ }
+
+ @Override
+ public TableDataInfo queryPageList(EduStudentExamQueryBo bo) {
+ PagePlus result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo), EduStudentExamVo.class);
+ return PageUtils.buildDataInfo(result);
+ }
+
+ @Override
+ public List queryList(EduStudentExamQueryBo bo) {
+ return listVo(buildQueryWrapper(bo), EduStudentExamVo.class);
+ }
+
+ private Wrapper buildQueryWrapper(EduStudentExamQueryBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(bo.getStudentId() != null, EduStudentExam::getStudentId, bo.getStudentId());
+ lqw.eq(bo.getExamId() != null, EduStudentExam::getExamId, bo.getExamId());
+
+ QueryWrapper qw = new QueryWrapper<>();
+// qw.eq("b.id", 2);
+ return qw;
+ }
+
+ @Override
+ public Boolean insertByAddBo(EduStudentExamAddBo bo) {
+ EduStudentExam add = BeanUtil.toBean(bo, EduStudentExam.class);
+ validEntityBeforeSave(add);
+ return save(add);
+ }
+
+ @Override
+ public Boolean updateByEditBo(EduStudentExamEditBo bo) {
+ EduStudentExam update = BeanUtil.toBean(bo, EduStudentExam.class);
+ validEntityBeforeSave(update);
+ return updateById(update);
+ }
+
+ /**
+ * 保存前的数据校验
+ *
+ * @param entity 实体类数据
+ */
+ private void validEntityBeforeSave(EduStudentExam entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return removeByIds(ids);
+ }
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/service/impl/EduStudentServiceImpl.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/service/impl/EduStudentServiceImpl.java
new file mode 100644
index 000000000..70bf267c9
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/service/impl/EduStudentServiceImpl.java
@@ -0,0 +1,89 @@
+package com.ruoyi.edu.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.ruoyi.common.utils.PageUtils;
+import com.ruoyi.common.core.page.PagePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.edu.bo.EduStudentAddBo;
+import com.ruoyi.edu.bo.EduStudentQueryBo;
+import com.ruoyi.edu.bo.EduStudentEditBo;
+import com.ruoyi.edu.domain.EduStudent;
+import com.ruoyi.edu.mapper.EduStudentMapper;
+import com.ruoyi.edu.vo.EduStudentVo;
+import com.ruoyi.edu.service.IEduStudentService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 学生信息Service业务层处理
+ *
+ * @author keyleaf
+ * @date 2021-05-22
+ */
+@Service
+public class EduStudentServiceImpl extends ServiceImpl implements IEduStudentService {
+
+ @Override
+ public EduStudentVo queryById(Long id){
+ return getVoById(id, EduStudentVo.class);
+ }
+
+ @Override
+ public TableDataInfo queryPageList(EduStudentQueryBo bo) {
+ PagePlus result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo), EduStudentVo.class);
+ return PageUtils.buildDataInfo(result);
+ }
+
+ @Override
+ public List queryList(EduStudentQueryBo bo) {
+ return listVo(buildQueryWrapper(bo), EduStudentVo.class);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(EduStudentQueryBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(StrUtil.isNotBlank(bo.getIdCardNo()), EduStudent::getIdCardNo, bo.getIdCardNo());
+ lqw.like(StrUtil.isNotBlank(bo.getStudentName()), EduStudent::getStudentName, bo.getStudentName());
+ lqw.eq(StrUtil.isNotBlank(bo.getCurrentGrade()), EduStudent::getCurrentGrade, bo.getCurrentGrade());
+ lqw.eq(StrUtil.isNotBlank(bo.getCurrentClass()), EduStudent::getCurrentClass, bo.getCurrentClass());
+ return lqw;
+ }
+
+ @Override
+ public Boolean insertByAddBo(EduStudentAddBo bo) {
+ EduStudent add = BeanUtil.toBean(bo, EduStudent.class);
+ validEntityBeforeSave(add);
+ return save(add);
+ }
+
+ @Override
+ public Boolean updateByEditBo(EduStudentEditBo bo) {
+ EduStudent update = BeanUtil.toBean(bo, EduStudent.class);
+ validEntityBeforeSave(update);
+ return updateById(update);
+ }
+
+ /**
+ * 保存前的数据校验
+ *
+ * @param entity 实体类数据
+ */
+ private void validEntityBeforeSave(EduStudent entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return removeByIds(ids);
+ }
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/vo/EduExamVo.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/vo/EduExamVo.java
new file mode 100644
index 000000000..f33c8b67d
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/vo/EduExamVo.java
@@ -0,0 +1,47 @@
+package com.ruoyi.edu.vo;
+
+import com.ruoyi.common.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 考试信息视图对象 mall_package
+ *
+ * @author keyleaf
+ * @date 2021-05-23
+ */
+@Data
+@ApiModel("考试信息视图对象")
+public class EduExamVo {
+ private static final long serialVersionUID = 1L;
+
+ /** $pkColumn.columnComment */
+ @ApiModelProperty("$pkColumn.columnComment")
+ private Long id;
+
+ /** 考试编号 */
+ @Excel(name = "考试编号")
+ @ApiModelProperty("考试编号")
+ private String examNo;
+ /** 考试名称 */
+ @Excel(name = "考试名称")
+ @ApiModelProperty("考试名称")
+ private String examName;
+ /** 考试简称 */
+ @Excel(name = "考试简称")
+ @ApiModelProperty("考试简称")
+ private String examShortName;
+ /** 考试日期 */
+ @Excel(name = "考试日期" , width = 30, dateFormat = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @ApiModelProperty("考试日期")
+ private Date examDate;
+
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/vo/EduStudentExamVo.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/vo/EduStudentExamVo.java
new file mode 100644
index 000000000..e692b7c9e
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/vo/EduStudentExamVo.java
@@ -0,0 +1,110 @@
+package com.ruoyi.edu.vo;
+
+import com.ruoyi.common.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.math.BigDecimal;
+import java.util.List;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 学生考试信息视图对象 mall_package
+ *
+ * @author keyleaf
+ * @date 2021-05-25
+ */
+@Data
+@ApiModel("学生考试信息视图对象")
+public class EduStudentExamVo {
+ private static final long serialVersionUID = 1L;
+
+ /** $pkColumn.columnComment */
+ @ApiModelProperty("$pkColumn.columnComment")
+ private Long id;
+
+ /** 语文分数 */
+ @Excel(name = "语文分数")
+ @ApiModelProperty("语文分数")
+ private BigDecimal chineseScore;
+ /** 数学分数 */
+ @Excel(name = "数学分数")
+ @ApiModelProperty("数学分数")
+ private BigDecimal mathScore;
+ /** 英语分数 */
+ @Excel(name = "英语分数")
+ @ApiModelProperty("英语分数")
+ private BigDecimal englishScore;
+ /** 化学分数 */
+ @Excel(name = "化学分数")
+ @ApiModelProperty("化学分数")
+ private BigDecimal chemistryScore;
+ /** 物理分数 */
+ @Excel(name = "物理分数")
+ @ApiModelProperty("物理分数")
+ private BigDecimal physicsScore;
+ /** 生物分数 */
+ @Excel(name = "生物分数")
+ @ApiModelProperty("生物分数")
+ private BigDecimal biologyScore;
+ /** 政治分数 */
+ @Excel(name = "政治分数")
+ @ApiModelProperty("政治分数")
+ private BigDecimal politicsScore;
+ /** 历史分数 */
+ @Excel(name = "历史分数")
+ @ApiModelProperty("历史分数")
+ private BigDecimal historyScore;
+ /** 地理分数 */
+ @Excel(name = "地理分数")
+ @ApiModelProperty("地理分数")
+ private BigDecimal geographyScore;
+ /** 思想品德分数 */
+ @Excel(name = "思想品德分数")
+ @ApiModelProperty("思想品德分数")
+ private BigDecimal ethicScore;
+ /** 班级排名 */
+ @Excel(name = "班级排名")
+ @ApiModelProperty("班级排名")
+ private Long classRank;
+ /** 级部排名 */
+ @Excel(name = "级部排名")
+ @ApiModelProperty("级部排名")
+ private Long gradeRank;
+
+ // 补充主表字段
+ private Long studentId;
+ // 关联表 eduStudent 字段
+ @Excel(name = "身份证号")
+ private String eduStudentIdCardNo;
+ @Excel(name = "班级")
+ private String eduStudentCurrentClass;
+ @Excel(name = "年级")
+ private String eduStudentCurrentGrade;
+ @Excel(name = "学生姓名")
+ private String eduStudentStudentName;
+ @Excel(name = "手机号")
+ private String eduStudentMobile;
+ @Excel(name = "父亲手机")
+ private String eduStudentFatherMobile;
+ @Excel(name = "母亲手机")
+ private String eduStudentMotherMobile;
+ @Excel(name = "学校")
+ private String eduStudentCurrentSchool;
+
+ // 补充主表字段
+ private Long examId;
+ // 关联表 eduExam 字段
+ @Excel(name = "考试日期" , width = 30, dateFormat = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date eduExamExamDate;
+ @Excel(name = "考试编号")
+ private String eduExamExamNo;
+ @Excel(name = "考试名称")
+ private String eduExamExamName;
+
+
+}
diff --git a/ruoyi-edu/src/main/java/com/ruoyi/edu/vo/EduStudentVo.java b/ruoyi-edu/src/main/java/com/ruoyi/edu/vo/EduStudentVo.java
new file mode 100644
index 000000000..debbc8df8
--- /dev/null
+++ b/ruoyi-edu/src/main/java/com/ruoyi/edu/vo/EduStudentVo.java
@@ -0,0 +1,60 @@
+package com.ruoyi.edu.vo;
+
+import com.ruoyi.common.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 学生信息视图对象 mall_package
+ *
+ * @author keyleaf
+ * @date 2021-05-22
+ */
+@Data
+@ApiModel("学生信息视图对象")
+public class EduStudentVo {
+ private static final long serialVersionUID = 1L;
+
+ /** $pkColumn.columnComment */
+ @ApiModelProperty("$pkColumn.columnComment")
+ private Long id;
+
+ /** 身份证号 */
+ @Excel(name = "身份证号")
+ @ApiModelProperty("身份证号")
+ private String idCardNo;
+ /** 学生姓名 */
+ @Excel(name = "学生姓名")
+ @ApiModelProperty("学生姓名")
+ private String studentName;
+ /** 年级 */
+ @Excel(name = "年级")
+ @ApiModelProperty("年级")
+ private String currentGrade;
+ /** 班级 */
+ @Excel(name = "班级")
+ @ApiModelProperty("班级")
+ private String currentClass;
+ /** 学校 */
+ @Excel(name = "学校")
+ @ApiModelProperty("学校")
+ private String currentSchool;
+ /** 手机号 */
+ @Excel(name = "手机号")
+ @ApiModelProperty("手机号")
+ private String mobile;
+ /** 父亲手机 */
+ @Excel(name = "父亲手机")
+ @ApiModelProperty("父亲手机")
+ private String fatherMobile;
+ /** 母亲手机 */
+ @Excel(name = "母亲手机")
+ @ApiModelProperty("母亲手机")
+ private String motherMobile;
+
+}
diff --git a/ruoyi-edu/src/main/resources/mapper/edu/EduExamMapper.xml b/ruoyi-edu/src/main/resources/mapper/edu/EduExamMapper.xml
new file mode 100644
index 000000000..33d20f8a1
--- /dev/null
+++ b/ruoyi-edu/src/main/resources/mapper/edu/EduExamMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ruoyi-edu/src/main/resources/mapper/edu/EduStudentExamMapper.xml b/ruoyi-edu/src/main/resources/mapper/edu/EduStudentExamMapper.xml
new file mode 100644
index 000000000..e63238f1c
--- /dev/null
+++ b/ruoyi-edu/src/main/resources/mapper/edu/EduStudentExamMapper.xml
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select
+
+ edu_student_exam.id as id,
+ edu_student_exam.student_id as student_id,
+ edu_student_exam.exam_id as exam_id,
+ edu_student_exam.chinese_score as chinese_score,
+ edu_student_exam.math_score as math_score,
+ edu_student_exam.english_score as english_score,
+ edu_student_exam.chemistry_score as chemistry_score,
+ edu_student_exam.physics_score as physics_score,
+ edu_student_exam.biology_score as biology_score,
+ edu_student_exam.politics_score as politics_score,
+ edu_student_exam.history_score as history_score,
+ edu_student_exam.geography_score as geography_score,
+ edu_student_exam.ethic_score as ethic_score,
+ edu_student_exam.class_rank as class_rank,
+ edu_student_exam.grade_rank as grade_rank,
+ edu_student_exam.create_time as create_time,
+ edu_student_exam.create_by as create_by,
+ edu_student_exam.update_time as update_time,
+ edu_student_exam.update_by as update_by,
+
+
+ edu_student.id_card_no as edu_student_id_card_no,
+ edu_student.current_class as edu_student_current_class,
+ edu_student.current_grade as edu_student_current_grade,
+ edu_student.student_name as edu_student_student_name,
+ edu_student.mobile as edu_student_mobile,
+ edu_student.father_mobile as edu_student_father_mobile,
+ edu_student.mother_mobile as edu_student_mother_mobile,
+ edu_student.current_school as edu_student_current_school,
+
+ edu_exam.exam_date as edu_exam_exam_date,
+ edu_exam.exam_no as edu_exam_exam_no,
+ edu_exam.exam_name as edu_exam_exam_name
+
+ from edu_student_exam
+ left join edu_student on edu_student_exam.student_id = edu_student.id
+ left join edu_exam on edu_student_exam.exam_id = edu_exam.id
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ruoyi-edu/src/main/resources/mapper/edu/EduStudentMapper.xml b/ruoyi-edu/src/main/resources/mapper/edu/EduStudentMapper.xml
new file mode 100644
index 000000000..647442756
--- /dev/null
+++ b/ruoyi-edu/src/main/resources/mapper/edu/EduStudentMapper.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ruoyi-edu/src/main/resources/sql/edu.sql b/ruoyi-edu/src/main/resources/sql/edu.sql
new file mode 100644
index 000000000..2eb4ddb66
--- /dev/null
+++ b/ruoyi-edu/src/main/resources/sql/edu.sql
@@ -0,0 +1,63 @@
+create table edu_exam
+(
+ id int auto_increment
+ primary key,
+ exam_no varchar(64) null comment '考试编号',
+ exam_name varchar(64) null comment '考试名称',
+ exam_short_name varchar(64) null comment '考试简称',
+ exam_date datetime null comment '考试日期',
+ create_time datetime null comment '创建时间',
+ create_by varchar(64) null comment '创建人id',
+ update_time datetime null comment '修改时间',
+ update_by varchar(64) null comment '修改人id',
+ constraint edu_exam_exam_no_uindex
+ unique (exam_no)
+)
+ comment '考试信息' charset=utf8;
+
+create table ruoyi.edu_student
+(
+ id int auto_increment
+ primary key,
+ id_card_no varchar(64) null comment '身份证号',
+ student_name varchar(64) null comment '学生姓名',
+ current_grade varchar(64) null comment '学生当前所在年级',
+ current_class varchar(64) null comment '学生当前所在班级',
+ current_school varchar(64) null comment '学生当前所在学校',
+ mobile varchar(64) null comment '手机号',
+ father_mobile varchar(64) null comment '父亲手机',
+ mother_mobile varchar(64) null comment '母亲手机',
+ create_time datetime null comment '创建时间',
+ create_by varchar(64) null comment '创建人id',
+ update_time datetime null comment '修改时间',
+ update_by varchar(64) null comment '修改人id',
+ constraint edu_student_id_card_no_uindex
+ unique (id_card_no)
+)
+ comment '学生信息表' charset=utf8;
+
+create table ruoyi.edu_student_exam
+(
+ id int auto_increment
+ primary key,
+ student_id int null comment '学生id',
+ exam_id int null comment '考试id',
+ chinese_score decimal(10,2) null comment '语文分数',
+ math_score decimal(10,2) null comment '数学分数',
+ english_score decimal(10,2) null comment '英语分数',
+ chemistry_score decimal(10,2) null comment '化学分数',
+ physics_score decimal(10,2) null comment '物理分数',
+ biology_score decimal(10,2) null comment '生物分数',
+ politics_score decimal(10,2) null comment '政治分数',
+ history_score decimal(10,2) null comment '历史分数',
+ geography_score decimal(10,2) null comment '地理分数',
+ ethic_score decimal(10,2) null comment '思想品德分数',
+ class_rank int null comment '班级排名',
+ grade_rank int null comment '级部排名',
+ create_time datetime null comment '创建时间',
+ create_by varchar(64) null comment '创建人id',
+ update_time datetime null comment '修改时间',
+ update_by varchar(64) null comment '修改人id'
+)
+ comment '学生考试信息' charset=utf8;
+
diff --git a/ruoyi-ui/src/api/edu/exam.js b/ruoyi-ui/src/api/edu/exam.js
new file mode 100644
index 000000000..638765e8d
--- /dev/null
+++ b/ruoyi-ui/src/api/edu/exam.js
@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询考试信息列表
+export function listExam(query) {
+ return request({
+ url: '/edu/exam/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// 查询考试信息详细
+export function getExam(id) {
+ return request({
+ url: '/edu/exam/' + id,
+ method: 'get'
+ })
+}
+
+// 新增考试信息
+export function addExam(data) {
+ return request({
+ url: '/edu/exam',
+ method: 'post',
+ data: data
+ })
+}
+
+// 修改考试信息
+export function updateExam(data) {
+ return request({
+ url: '/edu/exam',
+ method: 'put',
+ data: data
+ })
+}
+
+// 删除考试信息
+export function delExam(id) {
+ return request({
+ url: '/edu/exam/' + id,
+ method: 'delete'
+ })
+}
+
+// 导出考试信息
+export function exportExam(query) {
+ return request({
+ url: '/edu/exam/export',
+ method: 'get',
+ params: query
+ })
+}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/edu/score.js b/ruoyi-ui/src/api/edu/score.js
new file mode 100644
index 000000000..57d15379b
--- /dev/null
+++ b/ruoyi-ui/src/api/edu/score.js
@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询学生考试信息列表
+export function listScore(query) {
+ return request({
+ url: '/edu/score/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// 查询学生考试信息详细
+export function getScore(id) {
+ return request({
+ url: '/edu/score/' + id,
+ method: 'get'
+ })
+}
+
+// 新增学生考试信息
+export function addScore(data) {
+ return request({
+ url: '/edu/score',
+ method: 'post',
+ data: data
+ })
+}
+
+// 修改学生考试信息
+export function updateScore(data) {
+ return request({
+ url: '/edu/score',
+ method: 'put',
+ data: data
+ })
+}
+
+// 删除学生考试信息
+export function delScore(id) {
+ return request({
+ url: '/edu/score/' + id,
+ method: 'delete'
+ })
+}
+
+// 导出学生考试信息
+export function exportScore(query) {
+ return request({
+ url: '/edu/score/export',
+ method: 'get',
+ params: query
+ })
+}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/edu/student.js b/ruoyi-ui/src/api/edu/student.js
new file mode 100644
index 000000000..77969f20d
--- /dev/null
+++ b/ruoyi-ui/src/api/edu/student.js
@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询学生信息列表
+export function listStudent(query) {
+ return request({
+ url: '/edu/student/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// 查询学生信息详细
+export function getStudent(id) {
+ return request({
+ url: '/edu/student/' + id,
+ method: 'get'
+ })
+}
+
+// 新增学生信息
+export function addStudent(data) {
+ return request({
+ url: '/edu/student',
+ method: 'post',
+ data: data
+ })
+}
+
+// 修改学生信息
+export function updateStudent(data) {
+ return request({
+ url: '/edu/student',
+ method: 'put',
+ data: data
+ })
+}
+
+// 删除学生信息
+export function delStudent(id) {
+ return request({
+ url: '/edu/student/' + id,
+ method: 'delete'
+ })
+}
+
+// 导出学生信息
+export function exportStudent(query) {
+ return request({
+ url: '/edu/student/export',
+ method: 'get',
+ params: query
+ })
+}
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/edu/score/index.vue b/ruoyi-ui/src/views/edu/score/index.vue
new file mode 100644
index 000000000..5e9e61f42
--- /dev/null
+++ b/ruoyi-ui/src/views/edu/score/index.vue
@@ -0,0 +1,442 @@
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+ 新增
+
+
+ 修改
+
+
+ 删除
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 修改
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ruoyi-ui/src/views/edu/student/index.vue b/ruoyi-ui/src/views/edu/student/index.vue
new file mode 100644
index 000000000..77367482a
--- /dev/null
+++ b/ruoyi-ui/src/views/edu/student/index.vue
@@ -0,0 +1,425 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+ 新增
+
+
+ 修改
+
+
+ 删除
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 修改
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+