weiwenhai 6 yıl önce
ebeveyn
işleme
e91ffe9d08

+ 3 - 7
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/ExportStructureController.java

@@ -68,14 +68,10 @@ public class ExportStructureController extends ControllerSupport{
 	
 	@ApiOperation(value="根据考试ID查询导出结构",notes="根据考试ID查询导出结构")
 	@GetMapping(value="/findExportStructure/{examId}")
-	public ResponseEntity findExportStructure(HttpServletRequest request,@PathVariable String examId){
+	public ResponseEntity<Object> findExportStructure(@PathVariable String examId){
 		User user = getAccessUser();
-		//AccessUser user = (AccessUser) request.getAttribute("accessUser");
-		ExportStructure  condition = new ExportStructure();
-		condition.setOrgId(user.getRootOrgId()+"");
-		condition.setExamId(examId);
-		ExportStructure exportStructure = exportStructureService.findByExportStructure(condition);
-		return new ResponseEntity(exportStructure,HttpStatus.OK);
+		ExportStructure exportStructure = exportStructureService.findByExportStructure(user.getRootOrgId()+"",examId);
+		return new ResponseEntity<Object>(exportStructure,HttpStatus.OK);
 	}
 	
 	@ApiOperation(value="根据考试类型查询考试id",notes="根据考试类型查询考试id")

+ 1 - 0
examcloud-core-questions-dao/src/main/java/cn/com/qmth/examcloud/core/questions/dao/entity/ExtractConfig.java

@@ -56,6 +56,7 @@ public class ExtractConfig implements Serializable {
     private String callType;
     /**
      * 是否生成 1:生成 0:没生成
+     * 生成预览卷
      */
     private Short ifFinish;
     /**

+ 1 - 1
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/ExportStructureService.java

@@ -25,7 +25,7 @@ public interface ExportStructureService {
 	 * @param exportStructure
 	 * @return
 	 */
-	public ExportStructure findByExportStructure(ExportStructure exportStructure);
+	public ExportStructure findByExportStructure(String orgId,String examId);
 	/**
 	 * 分页查询
 	 * @param exportStructure

+ 10 - 1
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/ExtractConfigService.java

@@ -6,12 +6,14 @@ import java.util.Map;
 
 
 
+
 import cn.com.qmth.examcloud.core.questions.base.question.PaperDto;
 
 import org.springframework.data.domain.Page;
 
 import cn.com.qmth.examcloud.core.questions.base.question.QuestionDto;
 import cn.com.qmth.examcloud.commons.web.security.bean.User;
+import cn.com.qmth.examcloud.core.questions.dao.entity.ExamPaper;
 import cn.com.qmth.examcloud.core.questions.dao.entity.ExtractConfig;
 import cn.com.qmth.examcloud.core.questions.dao.entity.Paper;
 import cn.com.qmth.examcloud.core.questions.base.enums.PaperType;
@@ -43,7 +45,14 @@ public interface ExtractConfigService {
 	 * @param orgName		机构名称
 	 * @throws Exception
 	 */
-	public Map<String, String> saveExtractConfig(ExtractConfig extractConfig,User user) throws Exception;
+	public Map<String, String> saveExtractConfig2(ExtractConfig extractConfig,User user) throws Exception;
+	
+	/**
+	 * 保存调卷规则
+	 * @return
+	 * @throws Exception
+	 */
+	public List<ExamPaper> saveExtractConfig(ExtractConfig extractConfig,User user) throws Exception;
 	/**
 	 * 按照设定调卷规则生成一套试卷
 	 * 1.根据ExamPaper集合得出每个类型下应该抽取的试卷,并返回 试卷类型--->试卷的map

+ 11 - 5
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExportStructureServiceImpl.java

@@ -77,10 +77,14 @@ public class ExportStructureServiceImpl implements ExportStructureService {
 	}
 
 	@Override
-	public ExportStructure findByExportStructure(ExportStructure exportStructure) {
-		List<ExportStructure> exportStructures = exportStructureRepo.findAll(Example.of(exportStructure));
-		if(exportStructures.size()>0){
-			return exportStructures.get(0);
+	public ExportStructure findByExportStructure(String orgId,String examId) {
+		Query query = new Query();
+		query.addCriteria(Criteria.where("orgId").is(orgId));
+		query.addCriteria(Criteria.where("examId").is(examId));
+		long count = this.mongoTemplate.count(query, ExportStructure.class);
+		List<ExportStructure> list = this.mongoTemplate.find(query, ExportStructure.class);
+		if(list.size()>0){
+			return list.get(0);
 		}
 		return null;
 	}
@@ -107,7 +111,9 @@ public class ExportStructureServiceImpl implements ExportStructureService {
 
 	@Override
 	public ExportStructure findStructureByExamId(String examId) {
-		ExportStructure exportStructure = findByExportStructure(new ExportStructure(examId));
+		Query query = new Query();
+		query.addCriteria(Criteria.where("examId").is(examId));
+		ExportStructure exportStructure = this.mongoTemplate.findOne(query, ExportStructure.class);
 		if(exportStructure==null){
 			return null;
 		}

+ 18 - 3
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExtractConfigFileServiceImpl.java

@@ -23,6 +23,7 @@ import cn.com.qmth.examcloud.core.questions.service.export.ExportPaperAbstractSe
 import cn.com.qmth.examcloud.core.questions.service.export.InitPaperExpService;
 import cn.com.qmth.examcloud.core.questions.service.rpc.ExamCourseClient;
 import main.java.com.UpYun;
+
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.docx4j.Docx4J;
@@ -34,6 +35,7 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletResponse;
+
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -117,8 +119,21 @@ public class ExtractConfigFileServiceImpl implements ExtractConfigFileService {
             exportStructure = exportStructureService.findStructureByExamId(extractConfig.getExamId() + "");
         }
         //生成试卷
-        Map<String, String> finishedPaperIdMap = extractConfigService.saveExtractConfig(extractConfig, user);
-        if (isbuildFile == 1) {
+        List<ExamPaper> examPaperList = extractConfigService.saveExtractConfig(extractConfig, user);
+        if(isbuildFile == 1) {
+            //删除原有试卷文件
+            ExamFile examFile = new ExamFile();
+            examFile.setExamId(extractConfig.getExamId() + "");
+            examFile.setCourseId(extractConfig.getCourseCode());
+            examFile.setOrgId(extractConfig.getOrgId());
+            examFileService.deleteExamFile(examFile);
+            //上传抽取试卷对象集合
+            for(ExamPaper examPaper:examPaperList){
+            	String paperId = examPaper.getPaper().getId();
+            	uploadPaperFile(extractConfig, paperId, exportStructure, user);
+            }
+        }
+        /*if (isbuildFile == 1) {
             //删除原有试卷文件
             ExamFile examFile = new ExamFile();
             examFile.setExamId(extractConfig.getExamId() + "");
@@ -133,7 +148,7 @@ public class ExtractConfigFileServiceImpl implements ExtractConfigFileService {
                 String paperId = entry.getValue();
                 uploadPaperFile(extractConfig, paperId, exportStructure, user);
             }
-        }
+        }*/
     }
 
     /**

+ 19 - 2
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExtractConfigServiceImpl.java

@@ -173,12 +173,11 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
         query.addCriteria(Criteria.where("examId").is(condition.getExamId()));
         query.addCriteria(Criteria.where("courseCode").is(condition.getCourseCode()));
         ExtractConfig tempConfig = this.mongoTemplate.findOne(query, ExtractConfig.class);
-		//ExtractConfig tempConfig =  extractConfigRepo.findOne(Example.of(condition));
         return tempConfig;
 	}
 
 	@Override
-	public Map<String, String> saveExtractConfig(ExtractConfig extractConfig,User user) throws Exception {
+	public Map<String, String> saveExtractConfig2(ExtractConfig extractConfig,User user) throws Exception {
 		List<ExamPaper> examPapers = extractConfig.getExamPaperList();
 		for(int i=0;i<examPapers.size();i++){
 			ExamPaper examPaper = examPapers.get(i);
@@ -195,6 +194,24 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
     	extractConfigRepo.save(extractConfig);
 		return newFinishedPaperIdMap;
 	}
+	
+	@Override
+	public List<ExamPaper> saveExtractConfig(ExtractConfig extractConfig,User user) throws Exception {
+		List<ExamPaper> examPapers = extractConfig.getExamPaperList();
+		for(int i=0;i<examPapers.size();i++){
+			ExamPaper examPaper = examPapers.get(i);
+			Paper paper = examPaper.getPaper();
+			paper = paperRepo.findOne(paper.getId());
+			examPaper.setPaper(paper);
+		}
+		Course course = courseRepo.findFirstByCodeAndOrgId(extractConfig.getCourseCode(),extractConfig.getOrgId());
+		extractConfig.setCourse(course);
+		extractConfig.setCourseName(course.getName());
+    	extractConfig.setIfFinish((short)1);
+    	extractConfigRepo.save(extractConfig);
+		return examPapers;
+	}
+
 
 	@Override
 	public ExtractConfig findConfigById(String id) {

+ 1 - 9
examcloud-core-questions-starter/src/main/resources/application-test.properties

@@ -2,7 +2,6 @@ spring.data.mongodb.uri=mongodb://db-host:27017/exam_cloud_question_kf
 spring.data.mongodb.grid-fs-database=exam_cloud_question_kf
 spring.data.mongodb.database=exam_cloud_question_kf
 eureka.client.serviceUrl.defaultZone=http://eureka-host:1111/eureka/
-spring.application.name=ExamCloud-service-question
 
 spring.redis.host=redis-host
 spring.redis.port=6379
@@ -19,7 +18,7 @@ upyun.zipDirectory=paperZipDirectory
 upyun.radioType=mp3
 
 
-spring.datasource.url=jdbc:mysql://db-host:3306/exam_cloud_test?useUnicode=true&characterEncoding=UTF-8
+spring.datasource.url=jdbc:mysql://db-host:3306/exam_cloud_kf?useUnicode=true&characterEncoding=UTF-8
 spring.datasource.username=root
 spring.datasource.password=root
 spring.datasource.validation-query=SELECT 1 FROM DUAL
@@ -27,10 +26,3 @@ spring.datasource.test-on-borrow=true
 spring.datasource.driver-class-name=com.mysql.jdbc.Driver
 spring.jpa.show-sql=false
 spring.jpa.hibernate.ddl-auto=update
-
-
-#spring.rabbitmq.host=192.168.10.30
-spring.rabbitmq.port=5672
-spring.rabbitmq.username=examcloud
-spring.rabbitmq.password=examcloud
-spring.rabbitmq.listener.acknowledgeMode=MANUAL

+ 9 - 2
examcloud-core-questions-starter/src/main/resources/application.properties

@@ -1,7 +1,7 @@
 spring.profiles.active=dev
 server.port=8008
 logging.config=classpath:logback-spring.xml
-spring.application.name=ExamCloud-service-question
+spring.application.name=EC-CORE-QUESTION
 hystrix.command.default.execution.timeout.enabled=false
 api_cqb=/api/ecs_ques
 app.api.core=/api/ecs_core
@@ -15,4 +15,11 @@ ribbon.ConnectTimeout=800000
 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
 spring.jackson.time-zone=GMT+8
 
-$rmp.cloud.questions=/api/core/questions/
+$rmp.cloud.questions=/api/core/questions/
+
+eureka.instance.lease-renewal-interval-in-seconds=1
+eureka.instance.lease-expiration-duration-in-seconds=2
+eureka.instance.prefer-ip-address=true
+eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${server.port}
+eureka.client.healthcheck.enabled=true
+info.app=${spring.application.name}

+ 9 - 4
examcloud-core-questions-starter/src/test/java/cn/com/qmth/examcloud/core/questions/starter/DdCollegeUtilTest.java

@@ -4,6 +4,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.regex.Pattern;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -168,11 +169,15 @@ public class DdCollegeUtilTest {
 	 @Test
 	 public void queryQuestionTest(){
 		 Map<String, String> map = new HashMap<String, String>();
-		 map.put("a", "a");
+		 map.put("a", "x,j");
+		 //map.put("b", "b");
 		 Query query = new Query();
 		 for(Map.Entry<String, String> entry:map.entrySet()){
+			 String la = entry.getValue();
+			 la = la.replaceAll(",", "*");
+			 Pattern pattern=Pattern.compile(la, Pattern.CASE_INSENSITIVE);
 			 String key = "properties." + entry.getKey();
-			 query.addCriteria(Criteria.where(key).is(entry.getValue()));
+			 query.addCriteria(Criteria.where(key).regex(pattern));
 		 }
 		 long count = this.mongoTemplate.count(query, Question.class);
 		 List<Question> questionList = this.mongoTemplate.find(query, Question.class);
@@ -182,7 +187,7 @@ public class DdCollegeUtilTest {
 			 System.out.println("question:"+question.getProperties());
 		 }
 		 
-		 Map<String, String> map2 = new HashMap<String, String>();
+		 /*Map<String, String> map2 = new HashMap<String, String>();
 		 map2.put("d", "d");
 		 Query query2 = new Query();
 		 for(Map.Entry<String, String> entry:map2.entrySet()){
@@ -244,7 +249,7 @@ public class DdCollegeUtilTest {
 		 System.out.println("count:"+ count5);
 		 for(Question question:questionList5){
 			 System.out.println("question:"+question.getProperties());
-		 }
+		 }*/
 	 }
 }