Browse Source

分数完毕

wuheng 1 year ago
parent
commit
e03c7d40aa

+ 19 - 2
controller/src/main/java/com/koobietech/eas/controller/EasArcTlsScoresController.java

@@ -4,6 +4,7 @@ import com.github.pagehelper.PageHelper;
 import com.koobietech.eas.common.result.JsonPageResult;
 import com.koobietech.eas.common.result.JsonResult;
 import com.koobietech.eas.common.result.PageDataResult;
+import com.koobietech.eas.dao.dto.ScoresDto;
 import com.koobietech.eas.mbg.model.EasArcTlsScores;
 import com.koobietech.eas.service.EasArcTlsScoresService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -69,13 +70,29 @@ public class EasArcTlsScoresController {
         return JsonPageResult.data(pageDataResult);
     }
 
+    /**
+     * 条件查询学生成绩信息
+     * @param scoresDto
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    @PostMapping(value = "/queryScores")
+    @Operation(summary = "综合查询分数接口",description = "综合查询分数接口")
+    public JsonPageResult queryStudentScores(@RequestBody ScoresDto scoresDto,
+                                               @RequestParam Integer pageNum,@RequestParam Integer pageSize){
+        PageHelper.startPage(pageNum,pageSize);
+        PageDataResult pageDataResult = easArcTlsScoresService.queryStudentScores(scoresDto);
+        return JsonPageResult.data(pageDataResult);
+    }
+
     @PostMapping(value = "/import")
     @Operation(summary = "Excel导入学生成绩信息",description = "用于Excel导入学生成绩信息")
-    public JsonResult importExcelScores(MultipartFile excelFile) {
+    public JsonResult importExcelScores(MultipartFile file) {
         InputStream inputStream = null;
         Boolean ret;
         try {
-            inputStream = excelFile.getInputStream();
+            inputStream = file.getInputStream();
             ret = easArcTlsScoresService.importExcelScores(inputStream);
         } catch (IOException e) {
             ret = false;

+ 1 - 1
controller/src/main/resources/application-wheng.yaml

@@ -1,5 +1,5 @@
 server:
-  port: 8080
+  port: 9081
 spring:
   datasource:
     url: jdbc:mysql://127.0.0.1:13306/eas?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=true&tinyInt1isBit=false

+ 20 - 0
dao/src/main/java/com/koobietech/eas/dao/dto/ScoresDto.java

@@ -0,0 +1,20 @@
+package com.koobietech.eas.dao.dto;
+
+import lombok.Data;
+
+/**
+ * @author lc
+ */
+@Data
+public class ScoresDto {
+    private Integer groupId;
+    private Integer studentId;
+    private Integer subjectId;
+    private Integer categoryId;
+    private String studentName;
+    private String categoryName;
+    private String subjectsName;
+    private String groupName;
+    private String studentNumber;
+    private Double score;
+}

+ 27 - 0
dao/src/main/java/com/koobietech/eas/dao/mapper/ScoresMapper.java

@@ -0,0 +1,27 @@
+package com.koobietech.eas.dao.mapper;
+
+import com.koobietech.eas.dao.dto.ScoresDto;
+import com.koobietech.eas.dao.pojo.ScoresPojo;
+
+import java.util.List;
+
+/**
+ * @author lc
+ */
+public interface ScoresMapper {
+
+    /**
+     * 查询分数
+     * @param scoresDto
+     * @return
+     */
+    List<ScoresPojo> queryStudentScores(ScoresDto  scoresDto);
+
+    /**
+     * 分页
+     * @param scoresDto
+     * @return
+     */
+    Integer queryStudentScoresCount(ScoresDto scoresDto);
+
+}

+ 31 - 0
dao/src/main/java/com/koobietech/eas/dao/pojo/ScoresPojo.java

@@ -0,0 +1,31 @@
+package com.koobietech.eas.dao.pojo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lc
+ */
+@Data
+public class ScoresPojo {
+    private int id;
+    private int groupId;
+    private int categoryId;
+    private int subjectId;
+    private Date testDate;
+    private String type;
+    private int studentId;
+    private String groupName;
+    private String studentName;
+    private double score;
+    private double passRate;
+    private double excelRate;
+    private String comment;
+    private String categoryName;
+    private String subjectsName;
+    private String studentNumber;
+    private Date createTime;
+    private Date modifyTime;
+    private int scheduleId;
+}

+ 133 - 0
dao/src/main/resources/com/koobietech/eas/dao/mapper/ScoresMapper.xml

@@ -0,0 +1,133 @@
+<?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.koobietech.eas.dao.mapper.ScoresMapper">
+
+    <resultMap id="scoreMap" type="com.koobietech.eas.dao.pojo.ScoresPojo">
+        <id property="id" column="id"/>
+        <result property="groupId" column="group_id"/>
+        <result property="categoryId" column="category_id"/>
+        <result property="subjectId" column="subject_id"/>
+        <result property="testDate" column="test_date"/>
+        <result property="type" column="type"/>
+        <result property="studentId" column="student_id"/>
+        <result property="groupName" column="group_name"/>
+        <result property="studentName" column="student_name"/>
+        <result property="score" column="score"/>
+        <result property="passRate" column="pass_rate"/>
+        <result property="excelRate" column="excel_rate"/>
+        <result property="comment" column="comment"/>
+        <result property="categoryName" column="category_name"/>
+        <result property="subjectsName" column="subjects_name"/>
+        <result property="studentNumber" column="student_number"/>
+        <result property="createTime" column="create_time"/>
+        <result property="modifyTime" column="modify_time"/>
+        <result property="scheduleId" column="schedule_id"/>
+    </resultMap>
+
+    <select id="queryStudentScores" parameterType="com.koobietech.eas.dao.dto.ScoresDto" resultMap="scoreMap">
+        SELECT
+            eas_arc_tls_scores.id,
+            eas_edu_class.id AS group_id,
+            eas_edu_category.id AS category_id,
+            eas_edu_subjects.id AS subject_id,
+            eas_arc_tls_scores.test_date,
+            eas_edu_clt_relation.type,
+            eas_edu_clt_relation.student_id,
+            eas_edu_class.`name` AS group_name,
+            eas_sys_student.student_name,
+            eas_arc_tls_scores.score,
+            eas_arc_tls_scores.pass_rate,
+            eas_arc_tls_scores.excel_rate,
+            eas_arc_tls_scores.`comment`,
+            eas_edu_category.`name` AS category_name,
+            eas_edu_subjects.`name` AS subjects_name,
+            eas_edu_schedule.id AS schedule_id,
+            eas_sys_student.student_number,
+            eas_arc_tls_scores.create_time,
+            eas_arc_tls_scores.modify_time
+        FROM
+            eas_edu_clt_relation
+        LEFT JOIN eas_sys_student ON eas_sys_student.id = eas_edu_clt_relation.student_id
+        LEFT JOIN eas_edu_class ON eas_edu_class.id = eas_edu_clt_relation.class_id
+        LEFT JOIN eas_edu_schedule ON eas_edu_schedule.id IN (SELECT MIN(id) AS id FROM eas_edu_schedule  WHERE class_id = eas_edu_class.id GROUP BY subjects_id)
+        LEFT JOIN eas_edu_category ON eas_edu_category.id = eas_edu_schedule.category_id
+        LEFT JOIN eas_edu_subjects ON  eas_edu_subjects.id = eas_edu_schedule.subjects_id
+        LEFT JOIN eas_arc_tls_scores ON eas_arc_tls_scores.subject_id = eas_edu_schedule.subjects_id AND eas_arc_tls_scores.student_number = eas_sys_student.student_number
+        WHERE 1 = 1
+            <if test="groupId != null and groupId > 0" >
+                AND eas_edu_clt_relation.class_id = #{groupId}
+            </if>
+            <if test="studentId != null and studentId > 0" >
+                AND eas_edu_clt_relation.student_id = #{studentId}
+            </if>
+            <if test="studentNumber != null and studentNumber != ''" >
+                AND eas_sys_student.student_number =  #{studentNumber}
+            </if>
+            <if test="studentName != null and studentName != ''" >
+                AND eas_sys_student.student_name LIKE  CONCAT('%', #{studentName},'%')
+            </if>
+            <if test="score != null and score > 0" >
+                AND eas_arc_tls_scores.score > #{score}
+            </if>
+            <if test="subjectId != null and subjectId > 0" >
+                AND eas_edu_subjects.id = #{subjectId}
+            </if>
+            <if test="categoryId != null and categoryId > 0" >
+                AND eas_edu_category.id = #{categoryId}
+            </if>
+            <if test="categoryName != null and categoryName != ''" >
+                AND eas_edu_category.name = #{categoryName}
+            </if>
+            <if test="subjectsName != null and subjectsName != ''" >
+                AND eas_edu_subjects.name = #{subjectsName}
+            </if>
+            <if test="groupName != null and groupName != ''" >
+                AND eas_edu_class.name = #{groupName}
+            </if>
+    </select>
+
+    <select id="queryStudentScoresCount" parameterType="com.koobietech.eas.dao.dto.ScoresDto"  resultType="integer"  >
+        SELECT
+            count(*) AS total
+        FROM
+        eas_edu_clt_relation
+        LEFT JOIN eas_sys_student ON eas_sys_student.id = eas_edu_clt_relation.student_id
+        LEFT JOIN eas_edu_class ON eas_edu_class.id = eas_edu_clt_relation.class_id
+        LEFT JOIN eas_edu_schedule ON eas_edu_schedule.id IN (SELECT MIN(id) AS id FROM eas_edu_schedule  WHERE class_id = eas_edu_class.id GROUP BY subjects_id)
+        LEFT JOIN eas_edu_category ON eas_edu_category.id = eas_edu_schedule.category_id
+        LEFT JOIN eas_edu_subjects ON  eas_edu_subjects.id = eas_edu_schedule.subjects_id
+        LEFT JOIN eas_arc_tls_scores ON eas_arc_tls_scores.subject_id = eas_edu_schedule.subjects_id AND eas_arc_tls_scores.student_number = eas_sys_student.student_number
+        WHERE 1 = 1
+            <if test="groupId != null and groupId > 0" >
+                AND eas_edu_clt_relation.class_id = #{groupId}
+            </if>
+            <if test="studentId != null and studentId > 0" >
+                AND eas_edu_clt_relation.student_id = #{studentId}
+            </if>
+            <if test="studentName != null and studentName != ''" >
+                AND eas_sys_student.student_name =  CONCAT('%', #{studentName},'%')
+            </if>
+            <if test="studentNumber != null and studentNumber != ''" >
+                AND eas_sys_student.student_number =  #{studentNumber}
+            </if>
+            <if test="score != null and score > 0" >
+                AND eas_arc_tls_scores.score > #{score}
+            </if>
+            <if test="subjectId != null and subjectId > 0" >
+                AND eas_edu_subjects.id = #{subjectId}
+            </if>
+            <if test="categoryId != null and categoryId > 0" >
+                AND eas_edu_category.id = #{categoryId}
+            </if>
+            <if test="categoryName != null and categoryName != ''" >
+                AND eas_edu_category.name = #{categoryName}
+            </if>
+            <if test="subjectsName != null and subjectsName != ''" >
+                AND eas_edu_subjects.name = #{subjectsName}
+            </if>
+            <if test="groupName != null and groupName != ''" >
+                AND eas_edu_class.name = #{groupName}
+            </if>
+    </select>
+
+</mapper>

+ 3 - 0
service/src/main/java/com/koobietech/eas/service/EasArcTlsScoresService.java

@@ -1,6 +1,7 @@
 package com.koobietech.eas.service;
 
 import com.koobietech.eas.common.result.PageDataResult;
+import com.koobietech.eas.dao.dto.ScoresDto;
 import com.koobietech.eas.mbg.model.EasArcTlsScores;
 
 import java.io.InputStream;
@@ -42,4 +43,6 @@ public interface EasArcTlsScoresService {
      */
     Boolean importExcelScores(InputStream inputStream);
 
+    PageDataResult queryStudentScores(ScoresDto scoresDto);
+
 }

+ 26 - 5
service/src/main/java/com/koobietech/eas/service/impl/EasArcTlsScoresServiceImpl.java

@@ -9,8 +9,11 @@ import com.koobietech.eas.common.constant.FileType;
 import com.koobietech.eas.common.exception.EasException;
 import com.koobietech.eas.common.result.PageDataResult;
 import com.koobietech.eas.common.utils.SecurityManager;
+import com.koobietech.eas.dao.dto.ScoresDto;
+import com.koobietech.eas.dao.mapper.ScoresMapper;
 import com.koobietech.eas.dao.pojo.EasArcTlsScoresPojo;
 import com.koobietech.eas.dao.dto.ArchivesDto;
+import com.koobietech.eas.dao.pojo.ScoresPojo;
 import com.koobietech.eas.mbg.mapper.EasArcArchivesMapper;
 import com.koobietech.eas.mbg.mapper.EasArcTlsScoresMapper;
 import com.koobietech.eas.mbg.model.EasArcArchives;
@@ -44,15 +47,26 @@ public class EasArcTlsScoresServiceImpl implements EasArcTlsScoresService {
     @Resource
     EasArchivesFilesService easArchivesFilesService;
 
+    @Resource
+    ScoresMapper scoresMapper;
+
     @Resource
     EasArcArchivesMapper arcArchivesMapper;
 
     @Override
     public int addStudentScore(EasArcTlsScores easArcTlsScores) {
-        easArcTlsScores.setCreateTime(new Date());
-        easArcTlsScores.setModifyTime(new Date());
-        easArcTlsScoresMapper.insert(easArcTlsScores);
-        return saveStudentScoreArchive(easArcTlsScores) ? 1: 0;
+        if ( Objects.nonNull(easArcTlsScores.getId()) &&  easArcTlsScores.getId() > 0  ) {
+            return updateStudentScore(easArcTlsScores);
+        } else {
+            if ( Objects.isNull(easArcTlsScores.getTestDate()) ) {
+                easArcTlsScores.setTestDate(new Date());
+            }
+            easArcTlsScores.setCreateTime(new Date());
+            easArcTlsScores.setModifyTime(new Date());
+            easArcTlsScores.setCreateUid(SecurityManager.getLoginUid().intValue());
+            easArcTlsScoresMapper.insert(easArcTlsScores);
+            return saveStudentScoreArchive(easArcTlsScores) ? 1 : 0;
+        }
     }
 
     private boolean saveStudentScoreArchive(EasArcTlsScores easArcTlsScores){
@@ -76,7 +90,7 @@ public class EasArcTlsScoresServiceImpl implements EasArcTlsScoresService {
 
     @Override
     public int updateStudentScore(EasArcTlsScores easArcTlsScores) {
-        easArcTlsScoresMapper.updateByPrimaryKey(easArcTlsScores);
+        easArcTlsScoresMapper.updateByPrimaryKeySelective(easArcTlsScores);
         return saveStudentScoreArchive(easArcTlsScores) ? 1: 0;
     }
 
@@ -166,6 +180,13 @@ public class EasArcTlsScoresServiceImpl implements EasArcTlsScoresService {
         return true;
     }
 
+    @Override
+    public PageDataResult queryStudentScores(ScoresDto scoresDto) {
+        List<ScoresPojo> scoresPojos = scoresMapper.queryStudentScores(scoresDto);
+        Integer total = scoresMapper.queryStudentScoresCount(scoresDto);
+        return PageDataResult.init(scoresPojos, total);
+    }
+
     /**
      * 将学员考试分数保存为Execl文件
      */