1
0
nikang 7 жил өмнө
parent
commit
91ac84bb66

+ 15 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamSubjectPaperDao.java

@@ -4,15 +4,29 @@ 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;
 
 import cn.com.qmth.stmms.biz.exam.model.ExamSubjectPaper;
+import cn.com.qmth.stmms.common.enums.LibraryStatus;
 
 public interface ExamSubjectPaperDao extends PagingAndSortingRepository<ExamSubjectPaper, Integer>,
         JpaSpecificationExecutor<ExamSubjectPaper> {
 	
-	@Query(value = "select GROUP_CONCAT(b.main_number SEPARATOR ',') mainNumber from ( select p.main_number from eb_exam_subject_paper p where 1=1"
+	@Query(value = "select GROUP_CONCAT(b.main_number SEPARATOR ';') mainNumber from ( select p.main_number from eb_exam_subject_paper p where 1=1"
 			+ " and p.exam_id = ?1 and p.`code` = ?2 GROUP BY p.main_number) b",nativeQuery=true)
 	public List<String> getMainNumbersByExamIdAndCode(int examId,String subjectCode);
+	
+	@Query(value = "select GROUP_CONCAT(b.main_number SEPARATOR ';') MainNumber from ( select p.main_number from eb_exam_subject_paper p where 1=1"
+			+ " and p.exam_id = ?1 and p.`code` = ?2 and p.is_objective = ?3) b",nativeQuery=true)
+	public List<String> getMainNumbersByExamIdAndCodeAndType(int examId,String subjectCode,int objective);
+	
+	
+    @Modifying
+    @Query("delete from ExamSubjectPaper q where q.examId=?1 and q.code=?2 and q.objective=?3")
+    public void deleteByExamAndCodeAndObjective(int examId, String subjectCode, int objective);
+    
+    @Query("select count(*) from ExamSubjectPaper s where s.examId=?1 and s.code=?2 and s.objective=?3")
+    Long getExamSubjectPaperCountBy(Integer examId, String subjectCode,int objective); 
 }

+ 6 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/ExamSubjectPaperService.java

@@ -2,6 +2,7 @@ package cn.com.qmth.stmms.biz.exam.service;
 
 
 import java.util.List;
+import java.util.Map;
 
 import cn.com.qmth.stmms.biz.exam.model.ExamSubjectPaper;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubjectPaperDTO;
@@ -20,6 +21,9 @@ public interface ExamSubjectPaperService {
 	
 	ExamSubjectPaper getExamSubjectPaperById(Integer id);
 	
-	String getMainNumbersByExamIdAndCode(int examId,String subjectCode);
-
+	void deleteByExamAndCodeAndObjective(int examId, String subjectCode, int objective);
+	
+	Long getExamSubjectPaperCountBy(int examId, String subjectCode, int objective);
+	
+	String getMainNumbersByExamIdAndCodeAndType(int examId,String subjectCode,boolean objective);
 }

+ 32 - 4
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamSubjectPaperServiceImpl.java

@@ -1,8 +1,10 @@
 package cn.com.qmth.stmms.biz.exam.service.impl;
 import java.text.DecimalFormat;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Map;
 
 import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
@@ -14,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 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.BaseQueryService;
 import cn.com.qmth.stmms.biz.exam.dao.ExamQuestionDao;
@@ -129,11 +132,36 @@ public class ExamSubjectPaperServiceImpl extends BaseQueryService<ExamSubjectPap
 	public ExamSubjectPaper getExamSubjectPaperById(Integer id) {
 		return examSubjectPaperDao.findOne(id);
 	}
-	public String getMainNumbersByExamIdAndCode(int examId,String subjectCode){
-		List<String> list = examSubjectPaperDao.getMainNumbersByExamIdAndCode(examId, subjectCode);
-		if(list != null && list.size() > 0){
-			return list.get(0)==null ? "":list.get(0).toString();
+	
+	@Override
+	public String getMainNumbersByExamIdAndCodeAndType(int examId,String subjectCode,boolean objective){
+		if(objective){
+			List<String> objectivelist 	= examSubjectPaperDao.getMainNumbersByExamIdAndCodeAndType(examId, subjectCode,1);
+			if(!"[null]".equals(objectivelist.toString())){
+				return objectivelist.get(0).toString();
+			}
+		}else{
+			List<String> subjectivelist = examSubjectPaperDao.getMainNumbersByExamIdAndCodeAndType(examId, subjectCode,0);
+			if(!"[null]".equals(subjectivelist.toString())){
+				return subjectivelist.get(0).toString();
+			}
 		}
 		return "";
 	}
+	
+    @Transactional
+    @Override
+    public void deleteByExamAndCodeAndObjective(int examId, String subjectCode, int objective) {
+    	examSubjectPaperDao.deleteByExamAndCodeAndObjective(examId, subjectCode, objective);
+    }
+    @Override
+    public Long getExamSubjectPaperCountBy(int examId, String subjectCode, int objective){
+    	return examSubjectPaperDao.getExamSubjectPaperCountBy(examId, subjectCode, objective);
+    }
+    public static void main(String[] args) {
+		List<String> list = new ArrayList<String>();
+		list.add("null");
+		
+		System.out.println();
+	}
 }

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

@@ -28,6 +28,7 @@ import cn.com.qmth.stmms.admin.dto.SubjectiveQuestionDTO;
 import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
+import cn.com.qmth.stmms.biz.exam.service.ExamSubjectPaperService;
 import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
 import cn.com.qmth.stmms.biz.exam.service.query.ExamQuestionSearchQuery;
 import cn.com.qmth.stmms.biz.exam.service.query.ExamSubjectSearchQuery;
@@ -43,6 +44,9 @@ public class ExamPaperController extends BaseParameterController {
 
     @Autowired
     private ExamQuestionService questionService;
+    
+    @Autowired
+    private ExamSubjectPaperService examSubjectPaperService;
 
     @Value("${card.server}")
     private String cardServer;
@@ -190,7 +194,10 @@ public class ExamPaperController extends BaseParameterController {
                 if (subject != null) {
                     if (dto.validate(error)) {
                         questionService.deleteByExamAndSubjectAndObjective(examId, dto.getSubjectCode(), objective);
-
+                        
+                        //删除通过页面操作生产的试卷结构表:eb_exam_subject_paper
+                        examSubjectPaperService.deleteByExamAndCodeAndObjective(examId,dto.getSubjectCode(),objective ? 1 : 0);
+                        
                         for (ExamQuestion question : dto.getQuestionList()) {
                             questionService.save(question);
                         }

+ 17 - 3
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/parameter/ExamSubjectPaperController.java

@@ -4,6 +4,7 @@ import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -110,18 +111,31 @@ public class ExamSubjectPaperController extends BaseParameterController {
         	query.setExamId(examId);
         	query.setCode(subjectCode);
         	query = examSubjectPaperService.findByQuery(query);
-        	String mainNumbers = examSubjectPaperService.getMainNumbersByExamIdAndCode(examId, subjectCode);
+        	String objectiveNumber = examSubjectPaperService.getMainNumbersByExamIdAndCodeAndType(examId, subjectCode,true);
+        	String subjectiveNumber = examSubjectPaperService.getMainNumbersByExamIdAndCodeAndType(examId, subjectCode,false);
         	model.addAttribute("query", query);
-        	model.addAttribute("mainNumberList",mainNumbers );
+        	model.addAttribute("objectiveNumber",objectiveNumber);
+        	model.addAttribute("subjectiveNumber",subjectiveNumber);
     	}
         return "modules/exam/param/subjectPaperForm";
     }
-    //保存 或 修改
+    //新增 或 修改
     @RequestMapping(value = "/save",method = RequestMethod.POST)
     public String saveSubjectPaper(ExamSubjectPaper examPaper, HttpServletRequest request){
     	int examId = getSessionExamId(request);
     	if(examId>0){
     		examPaper.setExamId(examId);
+    		
+    		//后商定根据页面保存的情况,需要去eb_exam_question表中将起对应的数据删除。
+    		boolean objective = examPaper.getObjective() == 1?true:false;
+    		Long count = examSubjectPaperService.getExamSubjectPaperCountBy(examId, examPaper.getCode(), examPaper.getObjective());
+    		if(count == 0){
+    			//当通过页面维护一个科目的客观题或主观题时,第一次进来需要删除eb_exam_question表中对应的数据
+    			questionService.deleteByExamAndSubjectAndObjective(examId, examPaper.getCode(), objective);
+    		}
+    		if(examPaper.getId() != null){//表示修改情况,将eb_exam_question表中对应的数据删除
+    			questionService.deleteByExamIdAndSubjectCodeAndObjectiveAndMainNumber(examPaper.getExamId(), examPaper.getCode(), objective,examPaper.getMainNumber());
+    		}
     		ExamSubjectPaper examSubjectPaper = examSubjectPaperService.save(examPaper);
     		return "redirect:/admin/exam-param/subjectPaper/examQuestionTypeEdit?subjectCode="+examPaper.getCode();
     	}

+ 12 - 2
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/param/subjectPaperForm.jsp

@@ -186,9 +186,19 @@
 		}, "有效数小于总数");
 		jQuery.validator.addMethod("validationMainNumber", function(value, element) { 
 			var mainNumber = $("#mainNumber").val();
-			var a = '${mainNumberList}';
+			var objective = $("#objective").val();//1:客观题 ;0:主观题
+			var objectiveNumber = '${objectiveNumber}';
+			var subjectiveNumber = '${subjectiveNumber}';
+			var a = objective == '1'?'${objectiveNumber}':'${subjectiveNumber}';
 			var edit = $("#questionTypeName").attr("readonly");
-			var flag = !(a.indexOf(mainNumber)>-1);
+			var arr = a.split(";");
+			var flag =true;
+			for(var i=0;i<arr.length;i++){
+				if(arr[i]==mainNumber){
+					flag = false;
+					break;
+				}
+			}
 			if(edit && mainN == mainNumber){//表示修改的情况下除去旧的大题号
 				flag = true;
 			}