xiatian 1 年之前
父節點
當前提交
6fc2ee27a3

+ 17 - 2
src/main/java/cn/com/qmth/dp/examcloud/oe/OeToolApplication.java

@@ -4,9 +4,17 @@ import cn.com.qmth.dp.examcloud.oe.util.PropertiesUtil;
 import cn.com.qmth.examcloud.web.support.SpringContextHolder;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+import org.springframework.data.mongodb.config.EnableMongoAuditing;
+import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
 import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
 
 /**
  * 启动类
@@ -15,10 +23,17 @@ import org.springframework.scheduling.annotation.EnableAsync;
  * @date 2019年3月29日
  * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
  */
-@SpringBootApplication
-@Configuration
 @EnableAsync
+@Configuration
+@EnableJpaAuditing
+@EnableMongoAuditing
+@EnableTransactionManagement
+@EnableDiscoveryClient
 @ComponentScan(basePackages = {"cn.com.qmth"})
+@EntityScan(basePackages = {"cn.com.qmth"})
+@EnableJpaRepositories(basePackages = {"cn.com.qmth"})
+@EnableMongoRepositories(basePackages = {"cn.com.qmth"})
+@SpringBootApplication(exclude = {MultipartAutoConfiguration.class})
 public class OeToolApplication {
 
     static {

+ 16 - 22
src/main/java/cn/com/qmth/dp/examcloud/oe/Task.java

@@ -1,22 +1,9 @@
 package cn.com.qmth.dp.examcloud.oe;
 
-import cn.com.qmth.dp.examcloud.oe.modules.export_exam_student_score.ExportExamStudentScore;
-import cn.com.qmth.dp.examcloud.oe.modules.findreduplicatequestion.ExportReduplicateQuestionService;
-import cn.com.qmth.dp.examcloud.oe.modules.fixExamStudentId.FixExamStudentId;
-import cn.com.qmth.dp.examcloud.oe.modules.get_student_answer_detail.GetStduentAnswerDetailService;
-import cn.com.qmth.dp.examcloud.oe.modules.get_student_one_question_answer.GetStduentOneAnswerService;
-import cn.com.qmth.dp.examcloud.oe.modules.import_paper_dzkd.ImportPaperDzkdService;
-import cn.com.qmth.dp.examcloud.oe.modules.init_user_data_rule.InitUserDataRule;
-import cn.com.qmth.dp.examcloud.oe.modules.marking_item_change.MarkingItemChangeService;
-import cn.com.qmth.dp.examcloud.oe.modules.update_correct_answer.FixCorrectAnswerAndResetScoreService;
-import cn.com.qmth.examcloud.commons.util.JsonUtil;
-import cn.com.qmth.examcloud.web.support.SpringContextHolder;
-import cn.com.qmth.examcloud.web.upyun.UpYunPathInfo;
-import cn.com.qmth.examcloud.web.upyun.UpyunPathEnvironmentInfo;
-import cn.com.qmth.examcloud.web.upyun.UpyunService;
-import com.mongodb.client.FindIterable;
-import com.mongodb.client.MongoCollection;
-import com.mongodb.client.MongoCursor;
+import java.io.File;
+import java.util.List;
+import java.util.Map;
+
 import org.apache.commons.lang3.RandomUtils;
 import org.bson.Document;
 import org.slf4j.Logger;
@@ -25,9 +12,16 @@ import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Component;
 
-import java.io.File;
-import java.util.List;
-import java.util.Map;
+import com.mongodb.client.FindIterable;
+import com.mongodb.client.MongoCollection;
+import com.mongodb.client.MongoCursor;
+
+import cn.com.qmth.dp.examcloud.oe.modules.findreduplicatequestion.ExportReduplicateQuestionService;
+import cn.com.qmth.examcloud.commons.util.JsonUtil;
+import cn.com.qmth.examcloud.web.support.SpringContextHolder;
+import cn.com.qmth.examcloud.web.upyun.UpYunPathInfo;
+import cn.com.qmth.examcloud.web.upyun.UpyunPathEnvironmentInfo;
+import cn.com.qmth.examcloud.web.upyun.UpyunService;
 
 /**
  * 任务
@@ -57,8 +51,8 @@ public class Task {
             // SpringContextHolder.getBean(InitUserDataRule.class).start();
             // SpringContextHolder.getBean(FixExamStudentId.class).start(2843L, null);
             // SpringContextHolder.getBean(MarkingItemChangeService.class).start();
-            // SpringContextHolder.getBean(ExportReduplicateQuestionService.class).start();
-
+             SpringContextHolder.getBean(ExportReduplicateQuestionService.class).start();
+             System.out.println("finish *********************");
         } catch (Exception e) {
             log.error("unexpected", e);
             throw new RuntimeException(e);

+ 1 - 1
src/main/java/cn/com/qmth/dp/examcloud/oe/modules/export_course_questions_count/ExportCourseQuestionsCountService.java

@@ -30,7 +30,7 @@ import cn.com.qmth.examcloud.web.support.SpringContextHolder;
  */
 @Service
 public class ExportCourseQuestionsCountService {
-	private String rootOrgId = "137";
+	private String rootOrgId = "17068";
 	private int threadCount=20;
 	
 	@Autowired

+ 10 - 6
src/main/java/cn/com/qmth/dp/examcloud/oe/modules/export_course_questions_count/ExportQuesConsumer.java

@@ -32,7 +32,6 @@ public class ExportQuesConsumer extends Consumer<Course> {
 	@Override
 	public void consume(Map<String, Object> param,Course c) {
 		CourseQuestionsCountRetDto rd = new CourseQuestionsCountRetDto();
-		addRet(rd);
 		String rootOrgId=(String)param.get("rootOrgId");
 		rd.setCourseCode(c.getCode());
 		rd.setCourseName(c.getName());
@@ -41,6 +40,11 @@ public class ExportQuesConsumer extends Consumer<Course> {
 			setCount(rd, tc);
 			setExtCount(rd, rootOrgId);
 		}
+		if(rd.getSingleAnswerQuestion()!=0||rd.getMultipleAnswerQuestion()!=0||rd.getBoolAnswerQuestion()!=0||
+				rd.getFillBlankQuestion()!=0||rd.getTextAnswerQuestion()!=0||rd.getNestedAnswerQuestion()!=0||
+				rd.getExt()!=0) {
+			addRet(rd);
+		}
 
 	}
 	private List<ObjectId> getPaperIds(String courseCode,String rootOrgId) {
@@ -62,11 +66,11 @@ public class ExportQuesConsumer extends Consumer<Course> {
 			return null;
 		}
 		List<ObjectId> ids=new ArrayList<>();
-		for(Detail d:ds) {
-			if(d.getName().contains("案例分析")) {
-				ids.add(new ObjectId(d.getId()));
-			}
-		}
+//		for(Detail d:ds) {
+//			if(d.getName().contains("案例分析")) {
+//				ids.add(new ObjectId(d.getId()));
+//			}
+//		}
 		return ids;
 	}
 	

+ 41 - 3
src/main/java/cn/com/qmth/dp/examcloud/oe/modules/export_course_questions_count/ExportQuesProducer.java

@@ -21,14 +21,15 @@ public class ExportQuesProducer extends Producer {
 	
 	@Override
 	protected void produce(Map<String, Object> param) throws Exception {
-		List<Course> cs = getCourse((String)param.get("rootOrgId"));
+		String rootOrgId=(String)param.get("rootOrgId");
+		List<Course> cs = getCourse(rootOrgId);
+		System.out.println("courseCount:" + cs.size());
 		if (CollectionUtils.isNotEmpty(cs)) {
 			for (Course c : cs) {
 				offer(c);
 			}
 		}
 		
-		System.out.println("courseCount:" + cs.size());
 		
 	}
 	
@@ -40,6 +41,43 @@ public class ExportQuesProducer extends Producer {
 		return ret;
 	}
 	
-
+//	private List<Course> getCourse() {
+//		Set<String> set=new HashSet<>();
+//		List<Course> list=new ArrayList<>();
+//		XSSFWorkbook wb = null;
+//		try {
+//			wb = new XSSFWorkbook(ResouceUtil.getStream("subject_info.xlsx"));
+//			XSSFSheet sheet = wb.getSheetAt(0);
+//			int rows = sheet.getLastRowNum();
+//			for (int i = 1; i <= rows; i++) {
+//				Course c = new Course();
+//				XSSFRow row = sheet.getRow(i);
+//				String ecCode;
+//				try {
+//					ecCode = row.getCell(0).getStringCellValue().trim();
+//				} catch (Exception e) {
+//					ecCode = ((int)row.getCell(0).getNumericCellValue())+"";
+//				}
+//				String name = row.getCell(2).getStringCellValue().trim();
+//				c.setCode(ecCode);
+//				c.setName(name);
+//				if(!set.contains(ecCode)) {
+//					list.add(c);
+//					set.add(ecCode);
+//				}
+//				
+//			}
+//		} catch (IOException e) {
+//			throw new RuntimeException(e);
+//		} finally {
+//			if (wb != null) {
+//				try {
+//					wb.close();
+//				} catch (IOException e) {
+//				}
+//			}
+//		}
+//		return list;
+//	}
 
 }

+ 27 - 27
src/main/java/cn/com/qmth/dp/examcloud/oe/modules/export_questions_count/ExportQuestionsCountService.java

@@ -35,13 +35,13 @@ import cn.com.qmth.dp.examcloud.oe.excel.ExportUtils;
 @Service
 public class ExportQuestionsCountService {
 
-	@Resource(name = "secondaryMongoTemplate")
+	@Autowired
 	MongoTemplate mongoTemplate;
 
 	public void start() {
 		Date start=new Date();
 		Query query = new Query();
-		query.addCriteria(Criteria.where("orgId").is("18108").and("paperType").is("IMPORT"));
+		query.addCriteria(Criteria.where("orgId").is("22163").and("paperType").is("IMPORT"));
 		List<Paper> ps = mongoTemplate.find(query, Paper.class, "paper");
 		if (ps != null&&ps.size()>0) {
 //			List<String> course= readCourseCode();
@@ -125,31 +125,31 @@ public class ExportQuestionsCountService {
 		System.out.println("*****************end:" +((end.getTime()-start.getTime())/(1000*60))+"分钟");
 	}
 	
-	private List<String> readCourseCode() {
-		List<String> list = new ArrayList<String>();
-		XSSFWorkbook wb = null;
-		try {
-			wb = new XSSFWorkbook("d:\\course.xlsx");
-			XSSFSheet sheet = wb.getSheetAt(0);
-			int rows = sheet.getLastRowNum();
-			for (int i = 1; i <= rows; i++) {
-				XSSFRow row = sheet.getRow(i);
-				list.add(row.getCell(0).getStringCellValue());
-			}
-		} catch (IOException e) {
-			e.printStackTrace();
-		} finally {
-			if (wb != null) {
-				try {
-					wb.close();
-				} catch (IOException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				}
-			}
-		}
-		return list;
-	}
+//	private List<String> readCourseCode() {
+//		List<String> list = new ArrayList<String>();
+//		XSSFWorkbook wb = null;
+//		try {
+//			wb = new XSSFWorkbook("d:\\course.xlsx");
+//			XSSFSheet sheet = wb.getSheetAt(0);
+//			int rows = sheet.getLastRowNum();
+//			for (int i = 1; i <= rows; i++) {
+//				XSSFRow row = sheet.getRow(i);
+//				list.add(row.getCell(0).getStringCellValue());
+//			}
+//		} catch (IOException e) {
+//			e.printStackTrace();
+//		} finally {
+//			if (wb != null) {
+//				try {
+//					wb.close();
+//				} catch (IOException e) {
+//					// TODO Auto-generated catch block
+//					e.printStackTrace();
+//				}
+//			}
+//		}
+//		return list;
+//	}
 
 //	public static void main(String[] args) {
 //		List<RetDto> ret= new ArrayList<RetDto>();

+ 17 - 22
src/main/java/cn/com/qmth/dp/examcloud/oe/modules/findreduplicatequestion/ExportQuesReduplicateConsumer.java

@@ -2,6 +2,7 @@ package cn.com.qmth.dp.examcloud.oe.modules.findreduplicatequestion;
 
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -22,7 +23,6 @@ import cn.com.qmth.dp.examcloud.oe.enums.question.PaperType;
 import cn.com.qmth.dp.examcloud.oe.enums.question.QuesStructType;
 import cn.com.qmth.dp.examcloud.oe.multithread.Consumer;
 import cn.com.qmth.dp.examcloud.oe.util.PaperUtil;
-import cn.com.qmth.dp.examcloud.oe.util.StringSimilarityUtils;
 import cn.com.qmth.examcloud.commons.util.DateUtil;
 
 @Service
@@ -62,17 +62,9 @@ public class ExportQuesReduplicateConsumer extends Consumer<Course> {
 		if (CollectionUtils.isEmpty(quess)) {
 			return;
 		}
-		List<QuestionDto> sin = findQuestionByType(quess, QuesStructType.SINGLE_ANSWER_QUESTION);
-		if (CollectionUtils.isNotEmpty(sin)) {
-			checkQuestion(sin, c.getName(), c.getCode());
-		}
-		List<QuestionDto> mut = findQuestionByType(quess, QuesStructType.MULTIPLE_ANSWER_QUESTION);
-		if (CollectionUtils.isNotEmpty(mut)) {
-			checkQuestion(mut, c.getName(), c.getCode());
-		}
-		List<QuestionDto> bool = findQuestionByType(quess, QuesStructType.BOOL_ANSWER_QUESTION);
-		if (CollectionUtils.isNotEmpty(bool)) {
-			checkQuestion(bool, c.getName(), c.getCode());
+		Map<QuesStructType,List<QuestionDto>> map=toMap(quess);
+		for(QuesStructType k:map.keySet()) {
+			checkQuestion(map.get(k), c.getName(), c.getCode());
 		}
 		System.out.println("处理完科目:" + c.getCode());
 	}
@@ -87,12 +79,15 @@ public class ExportQuesReduplicateConsumer extends Consumer<Course> {
 //		return ret;
 //	}
 
-	private List<QuestionDto> findQuestionByType(List<QuestionDto> dtos, QuesStructType type) {
-		List<QuestionDto> ret = new ArrayList<>();
+	private Map<QuesStructType,List<QuestionDto>> toMap(List<QuestionDto> dtos) {
+		Map<QuesStructType,List<QuestionDto>> ret=new HashMap<>();
 		for (QuestionDto dto : dtos) {
-			if (type.equals(dto.getQuestionType())) {
-				ret.add(dto);
+			List<QuestionDto> tem=ret.get(dto.getQuestionType());
+			if(tem==null) {
+				tem=new ArrayList<>();
+				ret.put(dto.getQuestionType(), tem);
 			}
+			tem.add(dto);
 		}
 		return ret;
 	}
@@ -108,11 +103,11 @@ public class ExportQuesReduplicateConsumer extends Consumer<Course> {
 //	}
 
 	private List<QuestionDto> findQuestion(String rootOrgId, String courseCode) {
-		Date day=DateUtil.parse("2024-01-01 00:00:00", "yyyy-MM-dd HH:mm:ss");
+		Date day=DateUtil.parse("2024-06-13 00:00:00", "yyyy-MM-dd HH:mm:ss");
 		Query query = new Query();
 		query.addCriteria(Criteria.where("orgId").is(rootOrgId));
 		query.addCriteria(Criteria.where("course.code").is(courseCode));
-//		query.addCriteria(Criteria.where("creationBy").is(646523L));
+		query.addCriteria(Criteria.where("creationBy").is(646523L));
 		query.addCriteria(Criteria.where("creationDate").gt(day));
 		List<QuestionDto> ret = this.mongoTemplate.find(query, QuestionDto.class, "question");
 		return ret;
@@ -172,7 +167,7 @@ public class ExportQuesReduplicateConsumer extends Consumer<Course> {
 		Set<String> checkIds = new HashSet<>();
 		for (QuestionDto dto : dtos) {
 			dto.setExtractText(PaperUtil.getExtractText(dto));
-			if (StringUtils.isEmpty(dto.getExtractText())||PaperUtil.hasImg(dto)) {
+			if (PaperUtil.hasImg(dto)||StringUtils.isEmpty(dto.getExtractText())) {
 				checkIds.add(dto.getId());
 			}
 		}
@@ -191,9 +186,9 @@ public class ExportQuesReduplicateConsumer extends Consumer<Course> {
 					continue;
 				}
 				String quesText2 = subdto.getExtractText();
-				double similarity = StringSimilarityUtils.getSimilarityWithCosinesBySeg(quesText1, quesText2);
-				if (similarity > 0.94) {
-//				if (StringUtils.equals(quesText1, quesText2)) {
+//				double similarity = StringSimilarityUtils.getSimilarityWithCosinesBySeg(quesText1, quesText2);
+//				if (similarity > 0.94) {
+				if (StringUtils.equals(quesText1, quesText2)) {
 					checkIds.add(dto.getId());
 					checkIds.add(subdto.getId());
 					if (!hasGroup) {

+ 3 - 2
src/main/java/cn/com/qmth/dp/examcloud/oe/modules/findreduplicatequestion/ExportReduplicateQuestionService.java

@@ -17,9 +17,10 @@ import cn.com.qmth.examcloud.web.support.SpringContextHolder;
 
 @Service
 public class ExportReduplicateQuestionService {
-	private String rootOrgId = "22163";
+//	private String rootOrgId = "17068";
+	private String rootOrgId = "17351";
 //	private String paperName = "230517";
-	private int threadCount=4;
+	private int threadCount=8;
 
 	public void start() {
 		Date s=new Date();

+ 15 - 20
src/main/java/cn/com/qmth/dp/examcloud/oe/util/PaperUtil.java

@@ -6,8 +6,6 @@ import java.util.regex.Pattern;
 
 import org.apache.commons.lang3.StringUtils;
 import org.jsoup.Jsoup;
-import org.jsoup.nodes.Element;
-import org.jsoup.select.Elements;
 
 import cn.com.qmth.dp.examcloud.oe.modules.findreduplicatequestion.QuesOptionDto;
 import cn.com.qmth.dp.examcloud.oe.modules.findreduplicatequestion.QuestionDto;
@@ -37,6 +35,9 @@ public class PaperUtil {
 	}
 
 	public static boolean hasImg(String htmlStr) {
+		if(htmlStr==null) {
+			return false;
+		}
 		Matcher matcher = imgPat.matcher(htmlStr);
 		if (matcher.find()) {
 			return true;
@@ -74,25 +75,19 @@ public class PaperUtil {
 		return quesText.toString();
 	}
 
-	public static String getTextInHtml(String htmlStr) {
-		htmlStr = htmlStr.replaceAll("\\&[a-zA-Z]{1,10};", "").trim();
-		if (!htmlStr.startsWith("<p>")) {
-			return htmlStr;
-		}
-
-		try {
-			org.jsoup.nodes.Document doc = Jsoup.parse(htmlStr);
-			StringBuilder textStr = new StringBuilder();
-			Elements links = doc.select("p").removeAttr("img");
+	public static void main(String[] args) {
+		String s = "ss<p>1<p>2  6   &nbsp;    3</p><img src='ddd'/></p>";
+		System.out.println(getTextInHtml(s));
+	}
 
-			for (Element link : links) {
-				textStr.append(link.text().trim());
-			}
+	private static String getTextInHtml(String htmlStr) {
+//		htmlStr = htmlStr.replaceAll("\\&[a-zA-Z]{1,10};", "").trim();
+//		if (!htmlStr.startsWith("<p>")) {
+//			return htmlStr;
+//		}
 
-			return textStr.toString();
-		} catch (Exception e) {
-			throw new RuntimeException(e);
-		}
+		org.jsoup.nodes.Document doc = Jsoup.parse(htmlStr);
+		return doc.text().replaceAll(" ", "");
 	}
-	
+
 }

+ 105 - 0
src/main/resources/application-devcf.properties

@@ -0,0 +1,105 @@
+#
+# ********** server config **********
+#
+server.port=8082
+spring.application.name=EXAMCLOUD-OE-TOOL
+spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
+spring.jackson.time-zone=GMT+8
+spring.main.allow-bean-definition-overriding=true
+#
+# ********** redis config **********
+#
+spring.redis.host=localhost
+spring.redis.port=6379
+spring.redis.password=87863577
+spring.redis.database=9
+#
+# ********** mongodb config **********
+#
+mguri.hostAndPortGroup=192.168.10.130:27017
+mguri.username=examcloud_question_dev
+mguri.password=examcloud_question_dev
+mguri.database=examcloud_question_dev
+mguri.primary.database=examcloud_question_dev
+mguri.secondary.database=examcloud_question_dev
+
+spring.data.mongodb.primary.uri=mongodb://${mguri.username}:${mguri.password}@${mguri.hostAndPortGroup}/${mguri.primary.database}
+spring.data.mongodb.secondary.uri=mongodb://${mguri.username}:${mguri.password}@${mguri.hostAndPortGroup}/${mguri.secondary.database}
+# oe
+#spring.data.mongodb.secondary.grid-fs-database=examcloud-core-oe
+#spring.data.mongodb.secondary.database=examcloud-core-oe
+# question
+#spring.data.mongodb.primary.database=comm-ques-bank
+#spring.data.mongodb.primary.grid-fs-database=comm-ques-bank
+#
+# ********** mysql config **********
+#
+dsurl.host=192.168.10.130
+dsurl.port=3306
+dsurl.database=exam_cloud_dev
+spring.datasource.username=exam_cloud_dev
+spring.datasource.password=exam_cloud_dev
+spring.datasource.url=jdbc:mysql://${dsurl.host}:${dsurl.port}/${dsurl.database}?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2b8&rewriteBatchedStatements=true
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
+spring.datasource.druid.initial-size=5
+spring.datasource.druid.min-idle=5
+spring.datasource.druid.max-active=50
+spring.datasource.druid.max-wait=3000
+spring.datasource.druid.validation-query=SELECT 1
+spring.datasource.druid.validation-query-timeout=2000
+spring.datasource.druid.test-on-borrow=false
+spring.datasource.druid.test-on-return=false
+spring.datasource.druid.test-while-idle=true
+spring.datasource.druid.time-between-eviction-runs-millis=60000
+spring.datasource.druid.min-evictable-idle-time-millis=300000
+spring.jpa.hibernate.ddl-auto=validate
+#
+# ********** exchange api config **********
+#
+qmth.server.host=192.168.10.240
+qmth.server.port=8007
+qmth.rootOrgId=0
+qmth.appId=11
+qmth.secretKey=123456
+#
+# ********** other config **********
+#
+#\u83b7\u53d6\u65ad\u70b9\u7eed\u8003\u7684\u8003\u8bd5ID
+getContiuedCount.examId=19
+#\u901a\u7528\u6587\u4ef6\u5bfc\u51fa\u76ee\u5f55
+file.export.path=/home/admin/project/
+fixAnswer.data.path=/home/admin/project/oe/data.txt
+
+#upyun 1
+$upyun.site.1.bucketName=exam-cloud-test
+$upyun.site.1.userName=examcloudtest
+$upyun.site.1.domain=https://ecs-test-static-upyun.qmth.com.cn
+$upyun.site.1.domain.backup=https://ecs-test-static-upyun.qmth.com.cn
+$upyun.site.1.password=JEXAA7dvQZse8YxecjNKdU3UoDCqPkuc
+
+$aliyun.site.1.bucket=examcloud-test
+$aliyun.site.1.ossEndpoint=https://oss-cn-shenzhen.aliyuncs.com
+$aliyun.site.1.accessKeyId=LTAI4FboXLCJzrjVo5dUoXaU
+$aliyun.site.1.accessKeySecret=O0my6eSAl1Ic62WvxEf3WlMXox1LNX
+$aliyun.site.1.domain=https://ecs-test-static.qmth.com.cn
+
+$aliyun.site.2.bucket=examcloud-test
+$aliyun.site.2.ossEndpoint=https://oss-cn-shenzhen.aliyuncs.com
+$aliyun.site.2.accessKeyId=LTAI4FboXLCJzrjVo5dUoXaU
+$aliyun.site.2.accessKeySecret=O0my6eSAl1Ic62WvxEf3WlMXox1LNX
+$aliyun.site.2.domain=https://ecs-test-static.qmth.com.cn
+
+$upyun.site.num=1
+$aliyun.site.num=2
+
+
+# upyun config
+upyun.uploadUrl=/comm-ques-bank/prod/exam-paper-file/
+upyun.audio.uploadUrl=/comm-ques-bank/prod/audio/
+upyun.audio.maxsize=10
+upyun.downloadDirectory=paperDirectory
+upyun.zipDirectory=paperZipDirectory
+upyun.radioType=mp3,wma
+
+question.reduplicate.similarity=0.95

+ 105 - 0
src/main/resources/application-mutidatasource.properties

@@ -0,0 +1,105 @@
+#
+# ********** server config **********
+#
+server.port=8082
+spring.application.name=EXAMCLOUD-OE-TOOL
+spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
+spring.jackson.time-zone=GMT+8
+spring.main.allow-bean-definition-overriding=true
+#
+# ********** redis config **********
+#
+spring.redis.host=localhost
+spring.redis.port=6379
+spring.redis.password=87863577
+spring.redis.database=9
+#
+# ********** mongodb config **********
+#
+mguri.hostAndPortGroup=dds-wz93958e4b3d8b141100.mongodb.rds.aliyuncs.com:3717
+mguri.username=reader
+mguri.password=vqd2uq-5zuxcm-ge4fn3
+mguri.database=admin
+mguri.primary.database=comm-ques-bank
+mguri.secondary.database=examcloud-core-oe
+
+spring.data.mongodb.primary.uri=mongodb://${mguri.username}:${mguri.password}@${mguri.hostAndPortGroup}/${mguri.primary.database}?authSource=admin
+spring.data.mongodb.secondary.uri=mongodb://${mguri.username}:${mguri.password}@${mguri.hostAndPortGroup}/${mguri.secondary.database}?authSource=admin
+# oe
+#spring.data.mongodb.secondary.grid-fs-database=examcloud-core-oe
+#spring.data.mongodb.secondary.database=examcloud-core-oe
+# question
+#spring.data.mongodb.primary.database=comm-ques-bank
+#spring.data.mongodb.primary.grid-fs-database=comm-ques-bank
+#
+# ********** mysql config **********
+#
+dsurl.host=qmth-db1.mysql.rds.aliyuncs.com
+dsurl.port=3306
+dsurl.database=exam_cloud
+spring.datasource.username=exam_cloud_view
+spring.datasource.password=exam_cloud_view_123
+spring.datasource.url=jdbc:mysql://${dsurl.host}:${dsurl.port}/${dsurl.database}?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2b8&rewriteBatchedStatements=true
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
+spring.datasource.druid.initial-size=5
+spring.datasource.druid.min-idle=5
+spring.datasource.druid.max-active=50
+spring.datasource.druid.max-wait=3000
+spring.datasource.druid.validation-query=SELECT 1
+spring.datasource.druid.validation-query-timeout=2000
+spring.datasource.druid.test-on-borrow=false
+spring.datasource.druid.test-on-return=false
+spring.datasource.druid.test-while-idle=true
+spring.datasource.druid.time-between-eviction-runs-millis=60000
+spring.datasource.druid.min-evictable-idle-time-millis=300000
+spring.jpa.hibernate.ddl-auto=validate
+#
+# ********** exchange api config **********
+#
+qmth.server.host=192.168.10.240
+qmth.server.port=8007
+qmth.rootOrgId=0
+qmth.appId=11
+qmth.secretKey=123456
+#
+# ********** other config **********
+#
+#\u83b7\u53d6\u65ad\u70b9\u7eed\u8003\u7684\u8003\u8bd5ID
+getContiuedCount.examId=19
+#\u901a\u7528\u6587\u4ef6\u5bfc\u51fa\u76ee\u5f55
+file.export.path=/home/admin/project/
+fixAnswer.data.path=/home/admin/project/oe/data.txt
+
+#upyun 1
+$upyun.site.1.bucketName=exam-cloud-test
+$upyun.site.1.userName=examcloudtest
+$upyun.site.1.domain=https://ecs-test-static-upyun.qmth.com.cn
+$upyun.site.1.domain.backup=https://ecs-test-static-upyun.qmth.com.cn
+$upyun.site.1.password=JEXAA7dvQZse8YxecjNKdU3UoDCqPkuc
+
+$aliyun.site.1.bucket=examcloud-test
+$aliyun.site.1.ossEndpoint=https://oss-cn-shenzhen.aliyuncs.com
+$aliyun.site.1.accessKeyId=LTAI4FboXLCJzrjVo5dUoXaU
+$aliyun.site.1.accessKeySecret=O0my6eSAl1Ic62WvxEf3WlMXox1LNX
+$aliyun.site.1.domain=https://ecs-test-static.qmth.com.cn
+
+$aliyun.site.2.bucket=examcloud-test
+$aliyun.site.2.ossEndpoint=https://oss-cn-shenzhen.aliyuncs.com
+$aliyun.site.2.accessKeyId=LTAI4FboXLCJzrjVo5dUoXaU
+$aliyun.site.2.accessKeySecret=O0my6eSAl1Ic62WvxEf3WlMXox1LNX
+$aliyun.site.2.domain=https://ecs-test-static.qmth.com.cn
+
+$upyun.site.num=1
+$aliyun.site.num=2
+
+
+# upyun config
+upyun.uploadUrl=/comm-ques-bank/prod/exam-paper-file/
+upyun.audio.uploadUrl=/comm-ques-bank/prod/audio/
+upyun.audio.maxsize=10
+upyun.downloadDirectory=paperDirectory
+upyun.zipDirectory=paperZipDirectory
+upyun.radioType=mp3,wma
+
+question.reduplicate.similarity=0.95

二進制
src/main/resources/subject_info.xlsx