1
0
ting.yin 2 жил өмнө
parent
commit
f4a8e40517
19 өөрчлөгдсөн 99 нэмэгдсэн , 35 устгасан
  1. 7 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamStudentDao.java
  2. 7 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/InspectHistoryDao.java
  3. 11 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/ExamStudent.java
  4. 4 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/ExamStudentService.java
  5. 2 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/InspectHistoryService.java
  6. 10 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamStudentServiceImpl.java
  7. 5 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/InspectHistoryServiceImpl.java
  8. 1 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/InspectedServiceImpl.java
  9. 22 14
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/MarkServiceImpl.java
  10. 3 2
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/InspectedController.java
  11. 1 1
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/PaperController.java
  12. 17 14
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/StudentController.java
  13. 1 0
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/thread/DataSyncThread.java
  14. 1 0
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/thread/OnlineExamThread.java
  15. 3 3
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/vo/InspectedSubjectVO.java
  16. 1 0
      stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/CoreController.java
  17. 1 0
      stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/ScanController.java
  18. 1 0
      stmms-web/src/main/java/cn/com/qmth/stmms/common/controller/BaseController.java
  19. 1 1
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/inspectedInfo.jsp

+ 7 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamStudentDao.java

@@ -214,4 +214,11 @@ public interface ExamStudentDao extends PagingAndSortingRepository<ExamStudent,
     @Query("select distinct m.subjectCode from ExamStudent m where m.examId=?1 and m.college=?2 ")
     public List<String> findDistinctSubjectCodeByCollege(int examId, String college);
 
+    @Query("select min(s.inspectCount) from ExamStudent s where s.examId=?1 and s.subjectCode=?2 ")
+    public Integer findMinInspectCountByExamIdAndSubjectCode(int examId, String subjectCode);
+
+    @Modifying
+    @Query("update ExamStudent s set s.inspectCount=?2 where s.id=?1 ")
+    public void updateInspectCount(Integer studentId, Integer inspectCount);
+
 }

+ 7 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/InspectHistoryDao.java

@@ -3,6 +3,7 @@ package cn.com.qmth.stmms.biz.exam.dao;
 import java.util.List;
 
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.PagingAndSortingRepository;
 
@@ -14,4 +15,10 @@ public interface InspectHistoryDao extends PagingAndSortingRepository<InspectHis
     @Query(value = "select * from eb_inspect_history s where s.student_id=?1 order by s.inspect_time desc limit ?2 ", nativeQuery = true)
     List<InspectHistory> findByStudentIdLimit3(int studentId, int count);
 
+    Integer countByStudentId(Integer studentId);
+
+    @Modifying
+    @Query("delete from InspectHistory m where m.studentId=?1")
+    void deleteByStudentId(Integer studentId);
+
 }

+ 11 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/ExamStudent.java

@@ -280,6 +280,9 @@ public class ExamStudent implements Serializable {
     @Column(name = "card_number", nullable = true)
     private Integer cardNumber;
 
+    @Column(name = "inspect_count", nullable = true)
+    private Integer inspectCount;
+
     /**
      * 科目备注信息
      */
@@ -898,4 +901,12 @@ public class ExamStudent implements Serializable {
         this.inspectHistoryList = inspectHistoryList;
     }
 
+    public Integer getInspectCount() {
+        return inspectCount;
+    }
+
+    public void setInspectCount(Integer inspectCount) {
+        this.inspectCount = inspectCount;
+    }
+
 }

+ 4 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/ExamStudentService.java

@@ -159,4 +159,8 @@ public interface ExamStudentService {
     public List<String> findDistinctCollege(int examId);
 
     public List<String> findDistinctSubjectCodeByCollege(int examId, String college);
+
+    public Integer findMinInspectCountByExamIdAndSubjectCode(int examId, String subjectCode);
+
+    public void updateInspectCount(Integer studentId, Integer inspectCount);
 }

+ 2 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/InspectHistoryService.java

@@ -10,4 +10,6 @@ public interface InspectHistoryService {
 
     List<InspectHistory> findByStudentIdLimit3(Integer studentId);
 
+    Integer countByStudentId(Integer studentId);
+
 }

+ 10 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamStudentServiceImpl.java

@@ -1133,4 +1133,14 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
     public List<String> findDistinctSubjectCodeByCollege(int examId, String college) {
         return studentDao.findDistinctSubjectCodeByCollege(examId, college);
     }
+
+    @Override
+    public Integer findMinInspectCountByExamIdAndSubjectCode(int examId, String subjectCode) {
+        return studentDao.findMinInspectCountByExamIdAndSubjectCode(examId, subjectCode);
+    }
+
+    @Override
+    public void updateInspectCount(Integer studentId, Integer inspectCount) {
+        studentDao.updateInspectCount(studentId, inspectCount);
+    }
 }

+ 5 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/InspectHistoryServiceImpl.java

@@ -36,4 +36,9 @@ public class InspectHistoryServiceImpl extends BaseQueryService<InspectHistory>
         return list;
     }
 
+    @Override
+    public Integer countByStudentId(Integer studentId) {
+        return inspectHistoryDao.countByStudentId(studentId);
+    }
+
 }

+ 1 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/InspectedServiceImpl.java

@@ -249,6 +249,7 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
             i.setInspectorId(userId);
             i.setInspectTime(now);
             inspectHistoryService.save(i);
+            studentService.updateInspectCount(studentId, inspectHistoryService.countByStudentId(studentId));
             this.releaseByStudent(student);
             return true;
         }

+ 22 - 14
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/MarkServiceImpl.java

@@ -11,6 +11,7 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,6 +19,7 @@ import org.springframework.data.domain.Sort;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import cn.com.qmth.stmms.biz.exam.dao.InspectHistoryDao;
 import cn.com.qmth.stmms.biz.exam.dao.MarkGroupDao;
 import cn.com.qmth.stmms.biz.exam.dao.MarkGroupStudentDao;
 import cn.com.qmth.stmms.biz.exam.dao.MarkerDao;
@@ -137,6 +139,9 @@ public class MarkServiceImpl implements MarkService {
     @Autowired
     private SelectiveStudentDao selectiveStudentDao;
 
+    @Autowired
+    private InspectHistoryDao inspectHistoryDao;
+
     private Map<Integer, Long> markerLastUpdateTime = new ConcurrentHashMap<>();
 
     /**
@@ -527,6 +532,8 @@ public class MarkServiceImpl implements MarkService {
         scoreDao.deleteByStudentId(student.getId());
         selectiveStudentDao.delete(student.getId());
         updateAllCount(student.getExamId(), student.getSubjectCode());
+        // 复核记录
+        inspectHistoryDao.deleteByStudentId(student.getId());
     }
 
     /**
@@ -1676,20 +1683,20 @@ public class MarkServiceImpl implements MarkService {
                             }
                         }
                     }
-                    StringBuilder markerScoreList = new StringBuilder();
+                    List<Object> markerScoreList = new ArrayList<Object>();
                     for (int i = 0; i < sList.size(); i++) {
                         ScoreItem scoreItem = sList.get(i);
                         if (scoreItem.getScore() != null) {
-                            markerScoreList.append(scoreItem.getScore());
+                            markerScoreList.add(scoreItem.getScore());
                         } else {
-                            markerScoreList.append("#");
-                        }
-                        if (i < sList.size() - 1) {
-                            markerScoreList.append(",");
+                            markerScoreList.add("#");
                         }
+                        // if (i < sList.size() - 1) {
+                        // markerScoreList.append(",");
+                        // }
                     }
                     if (libraryDao.updateMarkerResult(library.getId(), LibraryStatus.REJECTED, library.getMarkerId(),
-                            null, markerScoreList.toString(), null, null, reason, LibraryStatus.MARKED,
+                            null, StringUtils.join(markerScoreList, ","), null, null, reason, LibraryStatus.MARKED,
                             LibraryStatus.INSPECTED) == 1) {
                         markerService.updateRejectCountById(library.getMarkerId());
                         count++;
@@ -1773,20 +1780,21 @@ public class MarkServiceImpl implements MarkService {
                 }
             }
         }
-        StringBuilder markerScoreList = new StringBuilder();
+        List<Object> markerScoreList = new ArrayList<Object>();
         for (int i = 0; i < sList.size(); i++) {
             ScoreItem scoreItem = sList.get(i);
             if (scoreItem.getScore() != null) {
-                markerScoreList.append(scoreItem.getScore());
+                markerScoreList.add(scoreItem.getScore());
             } else {
-                markerScoreList.append("#");
-            }
-            if (i < sList.size() - 1) {
-                markerScoreList.append(",");
+                markerScoreList.add("#");
             }
+            // if (i < sList.size() - 1) {
+            // markerScoreList.append(",");
+            // }
         }
         if (libraryDao.updateMarkerResult(library.getId(), LibraryStatus.REJECTED, library.getMarkerId(), null,
-                markerScoreList.toString(), null, null, reason, LibraryStatus.MARKED, LibraryStatus.INSPECTED) == 1) {
+                StringUtils.join(markerScoreList, ","), null, null, reason, LibraryStatus.MARKED,
+                LibraryStatus.INSPECTED) == 1) {
             markerService.updateRejectCountById(library.getMarkerId());
             resetStudentGroup(library.getStudentId(), library.getExamId(), library.getSubjectCode(),
                     library.getGroupNumber());

+ 3 - 2
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/InspectedController.java

@@ -430,7 +430,7 @@ public class InspectedController extends BaseExamController {
         return "redirect:/admin/exam/inspected/list";
     }
 
-    @Logging(menu = "评卷管理查询", type = LogType.QUERY)
+    @Logging(menu = "成绩复核进度查询", type = LogType.QUERY)
     @RequestMapping(value = "/info")
     public String info(HttpServletRequest request, Model model, ExamSubjectSearchQuery query) {
         WebUser wu = RequestUtils.getWebUser(request);
@@ -467,8 +467,9 @@ public class InspectedController extends BaseExamController {
             vo.setTotalCount(totalCount);
             vo.setLeftCount(totalCount - inspectedCount);
             String percent = totalCount > 0 ? (new DecimalFormat("####.###")
-                    .format(inspectedCount * 100.0 / totalCount) + "%") : "0%";
+                    .format(inspectedCount * 100.0 / totalCount) + "%") : "100%";
             vo.setPercent(percent);
+            vo.setFinishCount(studentService.findMinInspectCountByExamIdAndSubjectCode(examId, subject.getCode()));
             list.add(vo);
         }
         ExamStudentSearchQuery sQuery = new ExamStudentSearchQuery();

+ 1 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/PaperController.java

@@ -838,7 +838,7 @@ public class PaperController extends BaseExamController {
         List<String> error = new ArrayList<String>();
         try {
             byte[] data = IOUtils.toByteArray(file.getInputStream());
-            File target = new File(fileStore, "temp.zip");
+            File target = new File(fileStore + File.separator + "temp.zip");
             target.getParentFile().mkdirs();
             FileOutputStream ous = new FileOutputStream(target);
             ous.write(data);

+ 17 - 14
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/StudentController.java

@@ -186,6 +186,7 @@ public class StudentController extends BaseExamController {
                 student.setSubjectiveScore(0d);
                 student.setSubjectiveStatus(SubjectiveStatus.UNMARK);
                 student.setPaperType(NULL_PAPER_TYPE_PLACEHOLDER);
+                student.setInspectCount(0);
                 ExamStudent old = checkExamNumber(student, new HashMap<String, ExamStudent>(),
                         new HashMap<String, ExamStudent>());
                 if (old != null) {
@@ -208,8 +209,11 @@ public class StudentController extends BaseExamController {
         if (student != null) {
             studentService.deleteById(id);
             markService.deleteByStudent(student);
-            subjectService.updateUploadCount(student.getExamId(), student.getSubjectCode(), (int) studentService
-                    .countUploadedByExamIdAndSubjectCode(student.getExamId(), student.getSubjectCode()));
+            subjectService.updateUploadCount(
+                    student.getExamId(),
+                    student.getSubjectCode(),
+                    (int) studentService.countUploadedByExamIdAndSubjectCode(student.getExamId(),
+                            student.getSubjectCode()));
             addMessage(redirectAttributes, "删除考生成功");
             RequestUtils.setLog(request, "删除成功,id:" + id);
         } else {
@@ -258,10 +262,10 @@ public class StudentController extends BaseExamController {
 
             for (ExamStudent student : list) {
                 if (StringUtils.isBlank(student.getExamNumber()) || StringUtils.isBlank(student.getName())
-                        || StringUtils.isBlank(student.getSubjectCode()) || StringUtils
-                        .isBlank(student.getSubjectName()) || StringUtils.isBlank(student.getCollege()) || StringUtils
-                        .isBlank(student.getClassName()) || StringUtils.isBlank(student.getTeacher()) || StringUtils
-                        .isBlank(student.getStudentCode())) {
+                        || StringUtils.isBlank(student.getSubjectCode())
+                        || StringUtils.isBlank(student.getSubjectName()) || StringUtils.isBlank(student.getCollege())
+                        || StringUtils.isBlank(student.getClassName()) || StringUtils.isBlank(student.getTeacher())
+                        || StringUtils.isBlank(student.getStudentCode())) {
                     continue;
                 }
 
@@ -276,6 +280,7 @@ public class StudentController extends BaseExamController {
                 student.setSubjectiveScore(0d);
                 student.setSubjectiveStatus(SubjectiveStatus.UNMARK);
                 student.setPaperType(NULL_PAPER_TYPE_PLACEHOLDER);
+                student.setInspectCount(0);
                 ExamStudent previous = checkExamNumber(student, current, saveMap);
                 if (previous != null) {
                     student = updatePrevious(student, previous);
@@ -354,8 +359,7 @@ public class StudentController extends BaseExamController {
 
     @Logging(menu = "导入缺考名单", type = LogType.IMPORT_FILE)
     @RequestMapping(value = "/absentImport", method = RequestMethod.POST)
-    public String absentImportFile(HttpServletRequest request, MultipartFile file,
-            RedirectAttributes redirectAttributes) {
+    public String absentImportFile(HttpServletRequest request, MultipartFile file, RedirectAttributes redirectAttributes) {
         int examId = getSessionExamId(request);
         try {
             int successNum = 0;
@@ -407,8 +411,7 @@ public class StudentController extends BaseExamController {
 
     @Logging(menu = "导入违纪名单", type = LogType.IMPORT_FILE)
     @RequestMapping(value = "/breachImport", method = RequestMethod.POST)
-    public String breachImportFile(HttpServletRequest request, MultipartFile file,
-            RedirectAttributes redirectAttributes) {
+    public String breachImportFile(HttpServletRequest request, MultipartFile file, RedirectAttributes redirectAttributes) {
         int examId = getSessionExamId(request);
         // Exam exam = examService.findById(examId);
         try {
@@ -484,8 +487,7 @@ public class StudentController extends BaseExamController {
     }
 
     @RequestMapping(value = "/uploadImport", method = RequestMethod.POST)
-    public String uploadImportFile(HttpServletRequest request, MultipartFile file,
-            RedirectAttributes redirectAttributes) {
+    public String uploadImportFile(HttpServletRequest request, MultipartFile file, RedirectAttributes redirectAttributes) {
         int examId = getSessionExamId(request);
         // Exam exam = examService.findById(examId);
         try {
@@ -506,6 +508,7 @@ public class StudentController extends BaseExamController {
                     student.setBatchCode(null);
                     student.setSliceCount(0);
                     student.setSheetCount(0);
+                    student.setInspectCount(0);
                     if (student.getPaperType() != null && student.getPaperType().matches(PAPER_TYPES_REGEX)) {
                         student.setPaperType(StringUtils.trimToNull(studentVO.getPaperType()));
                     } else {
@@ -564,8 +567,8 @@ public class StudentController extends BaseExamController {
     }
 
     private void buildSheetUrl(ExamStudent student) {
-        student.setSheetUrls(
-                fileService.getSheetUris(student.getExamId(), student.getExamNumber(), 1, student.getSheetCount()));
+        student.setSheetUrls(fileService.getSheetUris(student.getExamId(), student.getExamNumber(), 1,
+                student.getSheetCount()));
     }
 
     private void buildPackageUrl(ExamStudent student) {

+ 1 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/thread/DataSyncThread.java

@@ -197,6 +197,7 @@ public class DataSyncThread implements Runnable {
                         examStudent.setAnswers(null);
                         examStudent.setBatchCode(null);
                         examStudent.setUploadTime(now);
+                        examStudent.setInspectCount(0);
                         examStudent.setSecretNumber(student.getString("examNumber"));
                         list.add(examStudent);
 

+ 1 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/thread/OnlineExamThread.java

@@ -206,6 +206,7 @@ public class OnlineExamThread implements Runnable {
         examStudent.setAnswers(null);
         examStudent.setBatchCode(null);
         examStudent.setUploadTime(now);
+        examStudent.setInspectCount(0);
         return examStudent;
     }
 

+ 3 - 3
stmms-web/src/main/java/cn/com/qmth/stmms/admin/vo/InspectedSubjectVO.java

@@ -14,7 +14,7 @@ public class InspectedSubjectVO {
 
     private String percent;
 
-    private boolean finishCount;
+    private Integer finishCount;
 
     public ExamSubject getSubject() {
         return subject;
@@ -56,11 +56,11 @@ public class InspectedSubjectVO {
         this.percent = percent;
     }
 
-    public boolean isFinishCount() {
+    public Integer getFinishCount() {
         return finishCount;
     }
 
-    public void setFinishCount(boolean finishCount) {
+    public void setFinishCount(Integer finishCount) {
         this.finishCount = finishCount;
     }
 

+ 1 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/CoreController.java

@@ -210,6 +210,7 @@ public class CoreController extends BaseApiController {
             student.setSheetCount(0);
             student.setObjectiveScore(0d);
             student.setSubjectiveScore(0d);
+            student.setInspectCount(0);
             student.setSubjectiveStatus(SubjectiveStatus.UNMARK);
         } else {
             // 更新现有考生

+ 1 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/ScanController.java

@@ -142,6 +142,7 @@ public class ScanController extends BaseApiController {
         student.setSheetCount(0);
         student.setPaperType(null);
         student.setCardNumber(null);
+        student.setInspectCount(0);
         student.setUploadTime(new Date());
         JSONObject obj = new JSONObject();
         if (saveUploadStudent(student)) {

+ 1 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/common/controller/BaseController.java

@@ -328,6 +328,7 @@ public class BaseController {
         if (!old.isAbsent() && student.isAbsent()) {// 正考转缺考
             student.setSubjectiveScore(0d);
             student.setSubjectiveScoreList(null);
+            student.setInspectCount(0);
             studentService.save(student);
             studentService.updateSubjectiveStatusAndScore(student.getId(), SubjectiveStatus.UNMARK, 0, null);
         }

+ 1 - 1
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/inspectedInfo.jsp

@@ -62,7 +62,7 @@
 				<td>${result.inspectedCount}</td>
 				<td>${result.leftCount}</td>
 				<td>${result.percent}</td>
-				<td></td>
+				<td>${result.finishCount}</td>
 			</tr>
 		</c:forEach>
 		</tbody>