Browse Source

修复回评时原卷显示问题

ting.yin 6 years ago
parent
commit
ecd11f1ce5

+ 2 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/Marker.java

@@ -160,10 +160,10 @@ public class Marker implements Serializable {
         this.number = number;
     }
 
-    public void buildLoginName(int number) {
+    public void buildLoginName(int number,String code) {
         StringBuilder name = new StringBuilder();
         name.append(examId).append(LOGINNAME_SPLITE);
-//        name.append(subjectCode).append(LOGINNAME_SPLITE);
+        name.append(code).append(LOGINNAME_SPLITE);
         name.append(number);
         setLoginName(name.toString());
     }

+ 23 - 41
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/MarkerServiceImpl.java

@@ -16,13 +16,10 @@ import javax.persistence.criteria.Root;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Sort;
-import org.springframework.data.domain.Sort.Direction;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import cn.com.qmth.stmms.biz.common.BaseQuery;
 import cn.com.qmth.stmms.biz.common.BaseQueryService;
 import cn.com.qmth.stmms.biz.exam.dao.MarkerDao;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
@@ -150,31 +147,23 @@ public class MarkerServiceImpl extends BaseQueryService<Marker> implements Marke
         int result = 0;
         if (subject != null && count > 0) {
             int start = 1;
-            Marker previous = findLastMarker(subject.getExamId());
-            if (previous != null) {
-                start = previous.getId() + 1;
-            }
             int end = start + count - 1;
+            String randomStr = getRandom();
             for (; start <= end; start++) {
                 Marker marker = new Marker();
                 marker.setExamId(subject.getExamId());
                 marker.setSubjectCode(subject.getCode());
                 if(StringUtils.isEmpty(password)){
-                    Random random = new Random();
-                    for (int i=0;i<6;i++)
-                    {
-                        password+=random.nextInt(10);
-                    }
-                    marker.setPassword(password);
-                    password = "";//随机码生产后将密码置空
+                    marker.setPassword(getRandom());
                 }else {
                     marker.setPassword(password);
                 }
                 marker.setEnable(true);
-                marker.buildLoginName(start);
+                marker.buildLoginName(start,randomStr);
+                randomStr = checkLoginName(start, randomStr, marker);
                 marker.setName(marker.getLoginName());
                 if (save(marker) != null) {
-                    result++;
+                	result++;
                 }
                 Set<Marker> markers = subject.getMarkers();
                 markers.add(marker);
@@ -185,32 +174,25 @@ public class MarkerServiceImpl extends BaseQueryService<Marker> implements Marke
         return result;
     }
 
-    private Marker findLastMarker(int examId) {
-        BaseQuery<Marker> query = new BaseQuery<Marker>();
-        query.setPageNumber(1);
-        query.setPageSize(1);
-        query.setSort(new Sort(Direction.DESC, "id"));
-        List<Marker> list = markerDao.findByExamId(examId, query);
-        if (list != null && list.size() > 0) {
-//            return Marker.parseLoginName(list.get(0).getLoginName());
-        	return list.get(0);
-        } else {
-            return null;
-        }
-    }
+	private String checkLoginName(int start, String randomStr, Marker marker) {
+		if(countByLoginName(marker.getLoginName())>0){
+			randomStr = getRandom();
+			marker.buildLoginName(start,randomStr);
+			return checkLoginName(start, randomStr, marker);
+		}else{
+			return randomStr;
+		}
+	}
 
-//    private Marker findLastCommonMarker(int examId) {
-//        BaseQuery<Marker> query = new BaseQuery<Marker>();
-//        query.setPageNumber(1);
-//        query.setPageSize(1);
-//        query.setSort(new Sort(Direction.DESC, "id"));
-//        List<Marker> list = markerDao.findByExamIdAndCommon(examId, true, query);
-//        if (list != null && list.size() > 0) {
-//            return Marker.parseLoginName(list.get(0).getLoginName());
-//        } else {
-//            return null;
-//        }
-//    }
+	private String getRandom() {
+		String randomStr = "";
+		Random random = new Random();
+		for (int i=0;i<6;i++)
+		{
+			randomStr+=random.nextInt(10);
+		}
+		return randomStr;
+	}
 
     @Override
     public List<Marker> getMarkCount(int examId) {

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

@@ -267,7 +267,7 @@ public class ExamMarkerController extends BaseParameterController {
             		marker.setSubjectCode("-");
         			marker.setSubjectName("-");
             		list.add(marker);
-            	}else if(query.getSubjectCode()!=null){
+            	}else if(StringUtils.isNotBlank(query.getSubjectCode())){
             		ExamSubject subject = subjectService.find(examId, query.getSubjectCode());
             		marker.setSubjectCode(subject.getCode());
             		marker.setSubjectName(subject.getCode() + "-" + subject.getName());