소스 검색

bug修改:

1.评卷质量计算线程MarkService传递方式修改
2.轨迹阅卷提交待评任务时,包括轨迹对象时markerId获取方式修改
luoshi 6 년 전
부모
커밋
97b684822b

+ 7 - 5
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/model/MarkResult.java

@@ -5,6 +5,8 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
+import cn.com.qmth.stmms.biz.exam.model.Marker;
+
 /**
  * 标准评卷结果对象
  * 
@@ -133,7 +135,7 @@ public class MarkResult {
         return map;
     }
 
-    public Map<String, List<MarkTrack>> getTrackMap(MarkLibrary library) {
+    public Map<String, List<MarkTrack>> getTrackMap(MarkLibrary library, Marker marker) {
         Map<String, List<MarkTrack>> map = new HashMap<>();
         if (trackList != null) {
             for (TrackDTO dto : trackList) {
@@ -143,17 +145,17 @@ public class MarkResult {
                     list = new LinkedList<MarkTrack>();
                     map.put(questionNumber, list);
                 }
-                list.add(dto.transform(library));
+                list.add(dto.transform(library, marker));
             }
         }
         return map;
     }
 
-    public List<MarkTrack> getTrackList(MarkLibrary library) {
+    public List<MarkTrack> getTrackList(MarkLibrary library, Marker marker) {
         List<MarkTrack> list = new LinkedList<>();
         if (trackList != null) {
             for (TrackDTO dto : trackList) {
-                list.add(dto.transform(library));
+                list.add(dto.transform(library, marker));
             }
         }
         return list;
@@ -169,7 +171,7 @@ public class MarkResult {
         return list;
     }
 
-    public List<MarkSpecialTag> getSpecialTagList(MarkLibrary library) {
+    public List<MarkSpecialTag> getSpecialTagList(MarkLibrary library, Marker marker) {
         List<MarkSpecialTag> list = new LinkedList<>();
         if (tagList != null) {
             for (SpecialTagDTO dto : tagList) {

+ 4 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/model/TrackDTO.java

@@ -2,6 +2,8 @@ package cn.com.qmth.stmms.biz.mark.model;
 
 import java.io.Serializable;
 
+import cn.com.qmth.stmms.biz.exam.model.Marker;
+
 /**
  * 阅卷轨迹交换类
  * 
@@ -42,7 +44,7 @@ public class TrackDTO implements Serializable {
         setPositionY(track.getPositionY());
     }
 
-    public MarkTrack transform(MarkLibrary library) {
+    public MarkTrack transform(MarkLibrary library, Marker marker) {
         MarkTrack track = new MarkTrack();
         track.setLibraryId(library.getId());
         track.setQuestionNumber(getQuestionNumber());
@@ -51,7 +53,7 @@ public class TrackDTO implements Serializable {
         track.setExamId(library.getExamId());
         track.setSubjectCode(library.getSubjectCode());
         track.setGroupNumber(library.getGroupNumber());
-        track.setMarkerId(library.getMarkerId());
+        track.setMarkerId(marker.getId());
         track.setScore(getScore());
         track.setPositionX(getPositionX());
         track.setPositionY(getPositionY());

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

@@ -545,12 +545,12 @@ public class MarkServiceImpl implements MarkService {
         // 保存阅卷轨迹
         if (result.getTrackList() != null) {
             trackDao.deleteByLibraryId(library.getId());
-            trackDao.save(result.getTrackList(library));
+            trackDao.save(result.getTrackList(library, marker));
         }
         // 保存特殊标记
         if (result.getTagList() != null) {
             specialTagDao.deleteByLibraryId(library.getId());
-            specialTagDao.save(result.getSpecialTagList(library));
+            specialTagDao.save(result.getSpecialTagList(library, marker));
         }
         // 判断多评模式下是否需要仲裁
         ArbitrateHistory history = null;
@@ -584,7 +584,7 @@ public class MarkServiceImpl implements MarkService {
             libraryDao.updateByStudentIdAndGroupNumber(library.getStudentId(), library.getGroupNumber(),
                     LibraryStatus.WAIT_ARBITRATE);
         }
-        taskExecutor.submit(new MarkQualityThread(marker, this, null));
+        taskExecutor.submit(new MarkQualityThread(marker, null));
         return true;
     }
 

+ 6 - 7
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/thread/MarkQualityThread.java

@@ -8,6 +8,7 @@ import org.slf4j.LoggerFactory;
 
 import cn.com.qmth.stmms.biz.exam.model.Marker;
 import cn.com.qmth.stmms.biz.mark.service.MarkService;
+import cn.com.qmth.stmms.biz.utils.SpringContextHolder;
 import cn.com.qmth.stmms.common.utils.Callback;
 
 /**
@@ -22,26 +23,24 @@ public class MarkQualityThread implements Runnable {
 
     private List<Marker> markers;
 
-    private MarkService markService;
-
     private Callback callback;
 
-    public MarkQualityThread(Marker marker, MarkService markService, Callback callback) {
+    public MarkQualityThread(Marker marker, Callback callback) {
         this.markers = new LinkedList<>();
         this.markers.add(marker);
-        this.markService = markService;
         this.callback = callback;
     }
 
-    public MarkQualityThread(List<Marker> markers, MarkService markService, Callback callback) {
+    public MarkQualityThread(List<Marker> markers, Callback callback) {
         this.markers = markers;
-        this.markService = markService;
         this.callback = callback;
     }
 
     @Override
     public void run() {
-        if (markers != null) {
+        MarkService markService = SpringContextHolder.getBean(MarkService.class);
+
+        if (markers != null && markService != null) {
             for (Marker marker : markers) {
                 log.info("start update quality for marker: " + marker.getId());
                 try {

+ 57 - 63
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkQualityController.java

@@ -23,13 +23,11 @@ import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
 import cn.com.qmth.stmms.biz.exam.model.Marker;
 import cn.com.qmth.stmms.biz.exam.query.MarkerSearchQuery;
-import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
 import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
 import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
 import cn.com.qmth.stmms.biz.exam.service.MarkerService;
 import cn.com.qmth.stmms.biz.lock.LockService;
 import cn.com.qmth.stmms.biz.mark.service.MarkLibraryService;
-import cn.com.qmth.stmms.biz.mark.service.MarkService;
 import cn.com.qmth.stmms.biz.mark.thread.MarkQualityThread;
 import cn.com.qmth.stmms.common.domain.WebUser;
 import cn.com.qmth.stmms.common.enums.LibraryStatus;
@@ -49,21 +47,15 @@ public class MarkQualityController extends BaseExamController {
     @Autowired
     private MarkerService markerService;
 
-    @Autowired
-    private MarkService markService;
-
     @Autowired
     private LockService lockService;
 
     @Autowired
     private AsyncTaskExecutor taskExecutor;
-    
-    @Autowired
-    private ExamQuestionService questionService;
-    
+
     @Autowired
     private ExamSubjectService subjectService;
-    
+
     @Autowired
     private MarkLibraryService libraryService;
 
@@ -105,8 +97,7 @@ public class MarkQualityController extends BaseExamController {
             final String lockKey = getLockKey(examId, subjectCode, groupNumber);
             if (lockService.trylock(LockType.GROUP, lockKey)) {
                 taskExecutor.submit(new MarkQualityThread(
-                        markerService.findByExamAndSubjectAndGroup(examId, subjectCode, groupNumber), markService,
-                        new Callback() {
+                        markerService.findByExamAndSubjectAndGroup(examId, subjectCode, groupNumber), new Callback() {
 
                             @Override
                             public void invoke() {
@@ -123,42 +114,43 @@ public class MarkQualityController extends BaseExamController {
     private String getLockKey(Integer examId, String subjectCode, Integer groupNumber) {
         return examId + "_" + subjectCode + "_" + groupNumber;
     }
-    
+
     @RequestMapping("/chart")
-    public String chart(HttpServletRequest request, Model model, 
-            @RequestParam String subjectCode, @RequestParam Integer groupNumber) {
-    	int examId = getSessionExamId(request);
+    public String chart(HttpServletRequest request, Model model, @RequestParam String subjectCode,
+            @RequestParam Integer groupNumber) {
+        int examId = getSessionExamId(request);
         MarkGroup group = groupService.findOne(examId, subjectCode, groupNumber);
         if (group != null) {
-        	List<MarkerVO> list  = new ArrayList<MarkerVO>();
+            List<MarkerVO> list = new ArrayList<MarkerVO>();
             List<Marker> markers = markerService.findByExamAndSubjectAndGroup(examId, subjectCode, groupNumber);
             Double minScore = null;
-            Double maxScore = null; 
+            Double maxScore = null;
             for (Marker marker : markers) {
-            	List<Object[]> libraries = libraryService.findScoreCount(examId,subjectCode,groupNumber,marker.getId(),LibraryStatus.MARKED);
-        		Map<Double,Long> scoreCount = new HashMap<Double, Long>();
-        		for (Object[] array : libraries) {
-        			Double score = (Double)array[0];
-        			Long count = (Long)array[1];
-        			scoreCount.put(score, count);
-        			if(minScore == null || maxScore ==null){
-        				minScore=score;
-        				maxScore=score;
-        			}else{
-        				if(minScore > score){
-        					minScore=score;
-        				}
-        				if(maxScore < score){
-        					maxScore=score;
-        				}
-        			}
-    			}
-        		MarkerVO vo =new MarkerVO();
-    			vo.setLoginName(marker.getLoginName());
-    			vo.setName(marker.getName());
-    			vo.setScoreCount(scoreCount);
-    			list.add(vo);
-			}
+                List<Object[]> libraries = libraryService.findScoreCount(examId, subjectCode, groupNumber,
+                        marker.getId(), LibraryStatus.MARKED);
+                Map<Double, Long> scoreCount = new HashMap<Double, Long>();
+                for (Object[] array : libraries) {
+                    Double score = (Double) array[0];
+                    Long count = (Long) array[1];
+                    scoreCount.put(score, count);
+                    if (minScore == null || maxScore == null) {
+                        minScore = score;
+                        maxScore = score;
+                    } else {
+                        if (minScore > score) {
+                            minScore = score;
+                        }
+                        if (maxScore < score) {
+                            maxScore = score;
+                        }
+                    }
+                }
+                MarkerVO vo = new MarkerVO();
+                vo.setLoginName(marker.getLoginName());
+                vo.setName(marker.getName());
+                vo.setScoreCount(scoreCount);
+                list.add(vo);
+            }
             model.addAttribute("minScore", minScore);
             model.addAttribute("maxScore", maxScore);
             model.addAttribute("markers", list);
@@ -169,29 +161,31 @@ public class MarkQualityController extends BaseExamController {
         model.addAttribute("groupNumber", groupNumber);
         return "modules/exam/qualityChart";
     }
-    
+
     @RequestMapping("/getChart")
     @ResponseBody
-    public List<MarkerVO> getChart(HttpServletRequest request, @RequestParam String subjectCode, @RequestParam Integer groupNumber) {
-    	int examId = getSessionExamId(request);
-    	List<MarkerVO> list  = new ArrayList<MarkerVO>();
-    	List<Marker> markers = markerService.findByExamAndSubjectAndGroup(examId, subjectCode, groupNumber);
-    	for (Marker marker : markers) {
-    		List<Object[]> libraries = libraryService.findScoreCount(examId,subjectCode,groupNumber,marker.getId(),LibraryStatus.MARKED);
-    		long totalCount = libraryService.countByMarker(marker.getId());
-    		Map<Double,Double> scorePercent = new HashMap<Double, Double>();
-    		for (Object[] array : libraries) {
-    			Double score = (Double)array[0];
-    			Long count = (Long)array[1];
-    			double percent = count*100/totalCount;
-    			scorePercent.put(score, percent);
-			}
-    		MarkerVO vo =new MarkerVO();
-			vo.setLoginName(marker.getLoginName());
-			vo.setName(marker.getName());
-			vo.setScorePercent(scorePercent);
-			list.add(vo);
-		}
+    public List<MarkerVO> getChart(HttpServletRequest request, @RequestParam String subjectCode,
+            @RequestParam Integer groupNumber) {
+        int examId = getSessionExamId(request);
+        List<MarkerVO> list = new ArrayList<MarkerVO>();
+        List<Marker> markers = markerService.findByExamAndSubjectAndGroup(examId, subjectCode, groupNumber);
+        for (Marker marker : markers) {
+            List<Object[]> libraries = libraryService.findScoreCount(examId, subjectCode, groupNumber, marker.getId(),
+                    LibraryStatus.MARKED);
+            long totalCount = libraryService.countByMarker(marker.getId());
+            Map<Double, Double> scorePercent = new HashMap<Double, Double>();
+            for (Object[] array : libraries) {
+                Double score = (Double) array[0];
+                Long count = (Long) array[1];
+                double percent = count * 100 / totalCount;
+                scorePercent.put(score, percent);
+            }
+            MarkerVO vo = new MarkerVO();
+            vo.setLoginName(marker.getLoginName());
+            vo.setName(marker.getName());
+            vo.setScorePercent(scorePercent);
+            list.add(vo);
+        }
         return list;
     }
 

+ 1 - 1
stmms-web/src/main/webapp/WEB-INF/application.properties

@@ -1,7 +1,7 @@
 #jdbc config
 driverClassName=com.mysql.jdbc.Driver
 #jdbc config
-url=jdbc:mysql://localhost:3306/stmms_ft?useUnicode=true&characterEncoding=UTF-8
+url=jdbc:mysql://192.168.10.30:3306/stmms_ft_online?useUnicode=true&characterEncoding=UTF-8
 username=root
 password=root