浏览代码

阅卷数据

xiatian 8 月之前
父节点
当前提交
8fc182c6e5

+ 6 - 6
src/main/java/cn/com/qmth/markingaudit/bean/ExamDataVo.java

@@ -12,9 +12,9 @@ public class ExamDataVo {
 
     private String endTime;
 
-    private Integer passScore;
+    private Double passScore;
 
-    private Integer excellentScore;
+    private Double excellentScore;
 
     private String createTime;
 
@@ -62,19 +62,19 @@ public class ExamDataVo {
         this.endTime = endTime;
     }
 
-    public Integer getPassScore() {
+    public Double getPassScore() {
         return passScore;
     }
 
-    public void setPassScore(Integer passScore) {
+    public void setPassScore(Double passScore) {
         this.passScore = passScore;
     }
 
-    public Integer getExcellentScore() {
+    public Double getExcellentScore() {
         return excellentScore;
     }
 
-    public void setExcellentScore(Integer excellentScore) {
+    public void setExcellentScore(Double excellentScore) {
         this.excellentScore = excellentScore;
     }
 

+ 17 - 5
src/main/java/cn/com/qmth/markingaudit/bean/MarkingScoreDataVo.java

@@ -2,12 +2,16 @@ package cn.com.qmth.markingaudit.bean;
 
 import java.util.List;
 
+import cn.com.qmth.markingaudit.enums.SubjectiveStatus;
+
 public class MarkingScoreDataVo {
 
     private Integer id;
 
+    private SubjectiveStatus subjectiveStatus;
+
     // 准考证号
-    private String carNo;
+    private String cardNo;
 
     List<MarkingScoreInfo> examInfo;
 
@@ -19,12 +23,12 @@ public class MarkingScoreDataVo {
         this.id = id;
     }
 
-    public String getCarNo() {
-        return carNo;
+    public String getCardNo() {
+        return cardNo;
     }
 
-    public void setCarNo(String carNo) {
-        this.carNo = carNo;
+    public void setCardNo(String cardNo) {
+        this.cardNo = cardNo;
     }
 
     public List<MarkingScoreInfo> getExamInfo() {
@@ -35,4 +39,12 @@ public class MarkingScoreDataVo {
         this.examInfo = examInfo;
     }
 
+    public SubjectiveStatus getSubjectiveStatus() {
+        return subjectiveStatus;
+    }
+
+    public void setSubjectiveStatus(SubjectiveStatus subjectiveStatus) {
+        this.subjectiveStatus = subjectiveStatus;
+    }
+
 }

+ 17 - 7
src/main/java/cn/com/qmth/markingaudit/bean/MarkingScoreInfo.java

@@ -4,6 +4,8 @@ public class MarkingScoreInfo {
 
     private Integer studentId;
 
+    private Integer groupNumber;
+
     // 大题名
     private String majorName;
 
@@ -14,12 +16,12 @@ public class MarkingScoreInfo {
     private String minorNo;
 
     // 得分
-    private Integer score;
+    private Double score;
 
     private String createTime;
 
-    // 操作账号id
-    private Integer id;
+    // 操作账号登录名
+    private String id;
 
     public String getMajorName() {
         return majorName;
@@ -45,11 +47,11 @@ public class MarkingScoreInfo {
         this.minorNo = minorNo;
     }
 
-    public Integer getScore() {
+    public Double getScore() {
         return score;
     }
 
-    public void setScore(Integer score) {
+    public void setScore(Double score) {
         this.score = score;
     }
 
@@ -61,11 +63,11 @@ public class MarkingScoreInfo {
         this.createTime = createTime;
     }
 
-    public Integer getId() {
+    public String getId() {
         return id;
     }
 
-    public void setId(Integer id) {
+    public void setId(String id) {
         this.id = id;
     }
 
@@ -77,4 +79,12 @@ public class MarkingScoreInfo {
         this.studentId = studentId;
     }
 
+    public Integer getGroupNumber() {
+        return groupNumber;
+    }
+
+    public void setGroupNumber(Integer groupNumber) {
+        this.groupNumber = groupNumber;
+    }
+
 }

+ 65 - 0
src/main/java/cn/com/qmth/markingaudit/bean/MarkingScoreOperateInfo.java

@@ -0,0 +1,65 @@
+package cn.com.qmth.markingaudit.bean;
+
+public class MarkingScoreOperateInfo {
+
+    private Integer studentId;
+
+    private Integer groupNumber;
+
+    private String markerTime;
+
+    private String markerAccount;
+
+    private String headerAccount;
+
+    private String headerTime;
+
+    public Integer getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Integer studentId) {
+        this.studentId = studentId;
+    }
+
+    public Integer getGroupNumber() {
+        return groupNumber;
+    }
+
+    public void setGroupNumber(Integer groupNumber) {
+        this.groupNumber = groupNumber;
+    }
+
+    public String getMarkerTime() {
+        return markerTime;
+    }
+
+    public void setMarkerTime(String markerTime) {
+        this.markerTime = markerTime;
+    }
+
+    public String getMarkerAccount() {
+        return markerAccount;
+    }
+
+    public void setMarkerAccount(String markerAccount) {
+        this.markerAccount = markerAccount;
+    }
+
+    public String getHeaderAccount() {
+        return headerAccount;
+    }
+
+    public void setHeaderAccount(String headerAccount) {
+        this.headerAccount = headerAccount;
+    }
+
+    public String getHeaderTime() {
+        return headerTime;
+    }
+
+    public void setHeaderTime(String headerTime) {
+        this.headerTime = headerTime;
+    }
+
+}

+ 3 - 3
src/main/java/cn/com/qmth/markingaudit/bean/QuestionDataVo.java

@@ -15,7 +15,7 @@ public class QuestionDataVo {
     private String minorNo;
 
     // 小题分
-    private Integer minorScore;
+    private Double minorScore;
 
     public String getName() {
         return name;
@@ -49,11 +49,11 @@ public class QuestionDataVo {
         this.minorNo = minorNo;
     }
 
-    public Integer getMinorScore() {
+    public Double getMinorScore() {
         return minorScore;
     }
 
-    public void setMinorScore(Integer minorScore) {
+    public void setMinorScore(Double minorScore) {
         this.minorScore = minorScore;
     }
 

+ 3 - 0
src/main/java/cn/com/qmth/markingaudit/dao/MonitorDao.java

@@ -9,6 +9,7 @@ import cn.com.qmth.markingaudit.bean.ExamDataVo;
 import cn.com.qmth.markingaudit.bean.MarkingScoreDataQuery;
 import cn.com.qmth.markingaudit.bean.MarkingScoreDataVo;
 import cn.com.qmth.markingaudit.bean.MarkingScoreInfo;
+import cn.com.qmth.markingaudit.bean.MarkingScoreOperateInfo;
 import cn.com.qmth.markingaudit.bean.QuestionDataQuery;
 import cn.com.qmth.markingaudit.bean.QuestionDataVo;
 import cn.com.qmth.markingaudit.bean.StudentDataQuery;
@@ -32,4 +33,6 @@ public interface MonitorDao {
 
     List<MarkingScoreInfo> markingScoreInfo(@Param("ids") List<Integer> ids);
 
+    List<MarkingScoreOperateInfo> markingScoreOperateInfo(@Param("ids") List<Integer> ids);
+
 }

+ 0 - 34
src/main/java/cn/com/qmth/markingaudit/enums/DataStatus.java

@@ -1,34 +0,0 @@
-package cn.com.qmth.markingaudit.enums;
-
-/**数据处理状态
- *
- */
-public enum DataStatus {
-
-	WAITING("待处理"),
-	PROCESSING("处理中"),
-	SUCCESS("成功"),
-	FAILED("失败"),
-	;
-
-	private DataStatus(String name){
-		this.name = name;
-	}
-
-	private String name;
-
-	public String getName() {
-		return name;
-	}
-
-	
-	public static DataStatus getByName(String name) {
-    	for(DataStatus r:DataStatus.values()) {
-    		if(r.getName().equals(name)) {
-    			return r;
-    		}
-    	}
-    	return null;
-    }
-
-}

+ 26 - 0
src/main/java/cn/com/qmth/markingaudit/enums/SubjectiveStatus.java

@@ -0,0 +1,26 @@
+package cn.com.qmth.markingaudit.enums;
+
+public enum SubjectiveStatus {
+
+    UNMARK("未评完"), MARKED("已评完");
+
+    private String name;
+
+    private SubjectiveStatus(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public static SubjectiveStatus findByText(String text) {
+        for (SubjectiveStatus c : SubjectiveStatus.values()) {
+            if (c.toString().equalsIgnoreCase(text)) {
+                return c;
+            }
+        }
+        return null;
+    }
+
+}

+ 58 - 14
src/main/java/cn/com/qmth/markingaudit/service/impl/MonitorServiceImpl.java

@@ -19,6 +19,7 @@ import cn.com.qmth.markingaudit.bean.ExamDataVo;
 import cn.com.qmth.markingaudit.bean.MarkingScoreDataQuery;
 import cn.com.qmth.markingaudit.bean.MarkingScoreDataVo;
 import cn.com.qmth.markingaudit.bean.MarkingScoreInfo;
+import cn.com.qmth.markingaudit.bean.MarkingScoreOperateInfo;
 import cn.com.qmth.markingaudit.bean.QuestionDataQuery;
 import cn.com.qmth.markingaudit.bean.QuestionDataVo;
 import cn.com.qmth.markingaudit.bean.StudentDataQuery;
@@ -26,6 +27,7 @@ import cn.com.qmth.markingaudit.bean.StudentDataVo;
 import cn.com.qmth.markingaudit.bean.SubjectDataQuery;
 import cn.com.qmth.markingaudit.bean.SubjectDataVo;
 import cn.com.qmth.markingaudit.dao.MonitorDao;
+import cn.com.qmth.markingaudit.enums.SubjectiveStatus;
 import cn.com.qmth.markingaudit.service.MonitorService;
 
 @Service
@@ -42,10 +44,10 @@ public class MonitorServiceImpl implements MonitorService {
                 if (StringUtils.isNotBlank(vo.getSasConfig())) {
                     JSONObject js = JSONObject.parseObject(vo.getSasConfig());
                     if (js.containsKey("passScore")) {
-                        vo.setPassScore(js.getInteger("passScore"));
+                        vo.setPassScore(js.getDouble("passScore"));
                     }
                     if (js.containsKey("excellentScore")) {
-                        vo.setExcellentScore(js.getInteger("excellentScore"));
+                        vo.setExcellentScore(js.getDouble("excellentScore"));
                     }
                     vo.setSasConfig(null);
                 }
@@ -84,22 +86,64 @@ public class MonitorServiceImpl implements MonitorService {
         checkExamIdValid(req.getExamId(), req.getSchoolCode());
         List<MarkingScoreDataVo> ret = monitorDao.markingScoreData(req);
         if (CollectionUtils.isNotEmpty(ret)) {
-            List<Integer> ids = ret.stream().map(e -> e.getId()).collect(Collectors.toList());
-            List<MarkingScoreInfo> infos = monitorDao.markingScoreInfo(ids);
-            Map<Integer, List<MarkingScoreInfo>> map = new HashMap<>();
-            for (MarkingScoreInfo info : infos) {
-                List<MarkingScoreInfo> tem = map.get(info.getStudentId());
-                if (tem == null) {
-                    tem = new ArrayList<>();
-                    map.put(info.getStudentId(), tem);
+            List<Integer> ids = ret.stream().filter(e -> SubjectiveStatus.MARKED.equals(e.getSubjectiveStatus()))
+                    .map(e -> e.getId()).collect(Collectors.toList());
+            if (CollectionUtils.isNotEmpty(ids)) {
+                List<MarkingScoreInfo> infos = monitorDao.markingScoreInfo(ids);
+                if (CollectionUtils.isNotEmpty(infos)) {
+                    List<MarkingScoreOperateInfo> opinfos = monitorDao.markingScoreOperateInfo(ids);
+                    Map<String, List<MarkingScoreOperateInfo>> opmap = new HashMap<>();
+                    for (MarkingScoreOperateInfo info : opinfos) {
+                        String key = info.getStudentId() + "-" + info.getGroupNumber();
+                        List<MarkingScoreOperateInfo> tem = opmap.get(key);
+                        if (tem == null) {
+                            tem = new ArrayList<>();
+                            opmap.put(key, tem);
+                        }
+                        tem.add(info);
+                    }
+                    Map<Integer, List<MarkingScoreInfo>> map = new HashMap<>();
+                    for (MarkingScoreInfo info : infos) {
+                        String key = info.getStudentId() + "-" + info.getGroupNumber();
+                        fillOperateInfo(info, opmap.get(key));
+                        List<MarkingScoreInfo> tem = map.get(info.getStudentId());
+                        if (tem == null) {
+                            tem = new ArrayList<>();
+                            map.put(info.getStudentId(), tem);
+                        }
+                        tem.add(info);
+                    }
+                    for (MarkingScoreDataVo vo : ret) {
+                        vo.setExamInfo(map.get(vo.getId()));
+                    }
                 }
-                tem.add(info);
-            }
-            for (MarkingScoreDataVo vo : ret) {
-                vo.setExamInfo(map.get(vo.getId()));
             }
         }
         return ret;
     }
 
+    private void fillOperateInfo(MarkingScoreInfo info, List<MarkingScoreOperateInfo> list) {
+        List<String> markerAcount = new ArrayList<>();
+        List<String> headAcount = new ArrayList<>();
+        List<String> markerTime = new ArrayList<>();
+        List<String> headerTime = new ArrayList<>();
+        for (MarkingScoreOperateInfo op : list) {
+            if (StringUtils.isNotBlank(op.getMarkerAccount())) {
+                markerAcount.add(op.getMarkerAccount());
+                markerTime.add(op.getMarkerTime());
+            }
+            if (StringUtils.isNotBlank(op.getHeaderAccount())) {
+                headAcount.add(op.getHeaderAccount());
+                headerTime.add(op.getHeaderTime());
+            }
+        }
+        if (CollectionUtils.isNotEmpty(headAcount)) {
+            info.setCreateTime(StringUtils.join(headerTime, ","));
+            info.setId(StringUtils.join(headAcount, ","));
+        } else {
+            info.setCreateTime(StringUtils.join(markerTime, ","));
+            info.setId(StringUtils.join(markerAcount, ","));
+        }
+    }
+
 }

+ 22 - 4
src/main/resources/mapper/MonitorMapper.xml

@@ -46,7 +46,7 @@
 	</select>
 	
 	<select id="markingScoreData" resultType="cn.com.qmth.markingaudit.bean.MarkingScoreDataVo">
-		select t.id,t.name,t.exam_number cardNo
+		select t.id,t.name,t.exam_number cardNo,t.subjective_status
 		from eb_exam_student t 
 		where t.exam_id=#{req.examId}
 		and t.subject_code=#{req.subjectCode}
@@ -55,10 +55,28 @@
 		limit #{req.pageSize}
 	</select>
 	<select id="markingScoreInfo" resultType="cn.com.qmth.markingaudit.bean.MarkingScoreInfo">
-		select t.id,t.name,t.exam_number cardNo//todo
-		from eb_exam_student t 
+		select t.student_id,t.group_number,
+		f.main_title majorName,f.main_number majorNo,f.sub_number minorNo,t.score
+		from eb_subjective_score t 
+		left join eb_exam_question f on t.exam_id=f.exam_id and t.subject_code=f.subject_code 
+		and t.main_number=f.main_number and t.sub_number=f.sub_number
+		where 1=1
+		and t.student_id in
+		<foreach collection="ids" item="item"
+			index="index" separator="," open="(" close=")">
+			#{item}
+		</foreach>
+		order by f.main_number,f.sub_number
+	</select>
+	<select id="markingScoreOperateInfo" resultType="cn.com.qmth.markingaudit.bean.MarkingScoreOperateInfo">
+		select t.student_id,t.group_number,t.marker_time,t.header_time,
+		mu.login_name markerAccount,hu.login_name headerAccount
+		from m_library t 
+		left join eb_marker m on t.marker_id=m.id
+		left join b_user mu on m.user_id=mu.id
+		left join b_user hu on t.header_id=hu.id
 		where 1=1
-		and t.id in
+		and t.student_id in
 		<foreach collection="ids" item="item"
 			index="index" separator="," open="(" close=")">
 			#{item}