Browse Source

增加数据同步功能

宋悦 7 years ago
parent
commit
b7d248db4b

+ 1 - 1
cqb-base/src/main/java/com/qmth/cqb/base/dao/CourseRepo.java

@@ -12,7 +12,7 @@ import org.springframework.data.repository.query.QueryByExampleExecutor;
  */
 public interface CourseRepo extends MongoRepository<Course, String>,QueryByExampleExecutor<Course> {
 
-    Course findFirstByCodeAndOrgId(String code,Long orgId);
+    Course findFirstByCodeAndOrgId(String code,String orgId);
 
     Course findFirstByCode(String courseNo);
 

+ 6 - 11
cqb-base/src/main/java/com/qmth/cqb/base/model/Course.java

@@ -1,13 +1,8 @@
 package com.qmth.cqb.base.model;
 
-import cn.com.qmth.examcloud.common.dto.core.enums.CourseLevel;
 import org.springframework.data.annotation.Id;
-import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
 
 /**
  * Created by songyue on 16/12/26.
@@ -22,9 +17,9 @@ public class Course implements Serializable{
 
     private String name;
 
-    private Long orgId;
+    private String orgId;
 
-    private CourseLevel level;
+    private String level;
 
     private String createTime;
 
@@ -56,19 +51,19 @@ public class Course implements Serializable{
         this.name = name;
     }
 
-    public Long getOrgId() {
+    public String getOrgId() {
         return orgId;
     }
 
-    public void setOrgId(Long orgId) {
+    public void setOrgId(String orgId) {
         this.orgId = orgId;
     }
 
-    public CourseLevel getLevel() {
+    public String getLevel() {
         return level;
     }
 
-    public void setLevel(CourseLevel level) {
+    public void setLevel(String level) {
         this.level = level;
     }
 

+ 19 - 30
cqb-comm-utils/pom.xml

@@ -26,12 +26,13 @@
         <dependency>
             <groupId>cn.com.qmth.examcloud.common</groupId>
             <artifactId>common-uac</artifactId>
-            </dependency>
+            <version>${project.version}</version>
+        </dependency>
         
         <dependency>
             <groupId>com.google.code.gson</groupId>
             <artifactId>gson</artifactId>
-            </dependency>
+        </dependency>
 
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -54,10 +55,21 @@
         </dependency>
 
         <dependency>
-            <groupId>org.mongodb</groupId>
-            <artifactId>mongo-java-driver</artifactId>
-            </dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
 
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>5.1.21</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.qmth.commons</groupId>
+            <artifactId>data-sync-rabbit</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
 
         <dependency>
             <groupId>io.springfox</groupId>
@@ -86,29 +98,6 @@
         <dependency>
             <groupId>commons-io</groupId>
             <artifactId>commons-io</artifactId>
-            </dependency>
-
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-collections4</artifactId>
-            <version>4.1</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-math3</artifactId>
-            <version>3.6.1</version>
-        </dependency>
-
-        <dependency>
-            <groupId>commons-codec</groupId>
-            <artifactId>commons-codec</artifactId>
-            </dependency>
-
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-text</artifactId>
-            <version>1.0</version>
         </dependency>
 
         <dependency>
@@ -188,12 +177,12 @@
         <dependency>
             <groupId>org.freemarker</groupId>
             <artifactId>freemarker</artifactId>
-            </dependency>
+        </dependency>
 
         <dependency>
             <groupId>dom4j</groupId>
             <artifactId>dom4j</artifactId>
-            </dependency>
+        </dependency>
 
         <dependency>
             <groupId>com.esotericsoftware</groupId>

+ 2 - 0
cqb-paper/src/main/java/com/qmth/cqb/paper/dao/PaperRepo.java

@@ -26,4 +26,6 @@ public interface PaperRepo extends MongoRepository<Paper, String>, QueryByExampl
     Page<Paper> findByIdNotInAndCourseNoAndOrgIdAndPaperType(Set<String> idSet, String courseNo, String orgId,
             PaperType paperType, Pageable page);
 
+    List<Paper> findByCourseNoAndOrgId(String courseNo,String orgId);
+
 }

+ 14 - 1
cqb-paper/src/main/java/com/qmth/cqb/paper/model/Paper.java

@@ -3,6 +3,7 @@ package com.qmth.cqb.paper.model;
 import java.io.Serializable;
 import java.util.Map;
 
+import com.qmth.cqb.base.model.Course;
 import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.index.Indexed;
 
@@ -11,6 +12,7 @@ import com.qmth.cqb.utils.enums.PaperStatus;
 import com.qmth.cqb.utils.enums.PaperType;
 
 import cn.com.qmth.examcloud.common.dto.core.enums.CourseLevel;
+import org.springframework.data.mongodb.core.mapping.DBRef;
 
 /**
  * @author songyue
@@ -48,9 +50,13 @@ public class Paper implements Serializable {
 
     private PaperType paperType;// 试卷类型(导入、组卷)
 
+    @Deprecated
     private String courseNo;
 
+    @Deprecated
     private String courseName;
+
+    private Course course;
     
     private CourseLevel level;
 
@@ -222,5 +228,12 @@ public class Paper implements Serializable {
 	public void setHasAudioQuestion(Boolean hasAudioQuestion) {
 		this.hasAudioQuestion = hasAudioQuestion;
 	}
-	
+
+    public Course getCourse() {
+        return course;
+    }
+
+    public void setCourse(Course course) {
+        this.course = course;
+    }
 }

+ 16 - 14
cqb-paper/src/main/java/com/qmth/cqb/paper/service/ImportPaperService.java

@@ -11,6 +11,8 @@ import java.util.Map;
 import java.util.UUID;
 import java.util.regex.Pattern;
 
+import com.qmth.cqb.base.dao.CourseRepo;
+import com.qmth.cqb.base.model.Course;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.ArrayUtils;
@@ -71,6 +73,9 @@ public class ImportPaperService {
     @Autowired
     PaperService paperService;
 
+    @Autowired
+    CourseRepo courseRepo;
+
     /**
      * 获取上传文件
      *
@@ -184,10 +189,8 @@ public class ImportPaperService {
         byte[] writeByte = DocxProcessUtil.getPkgByte(writePkg);
         // 获取word文档中所有段落
         List<Object> pList = DocxProcessUtil.getAllElementFromObject(wordMLPackage.getMainDocumentPart(), P.class);
-        paper.setOrgId(user.getRootOrgId().toString());
-        paper.setCreator(user.getName());
         // 设置试卷
-        initPaper(paper, paper.getName());
+        initPaper(paper, paper.getName(), user);
         // 创建空大题类
         PaperDetail paperDetail = null;
         // 创建大题集合
@@ -259,8 +262,7 @@ public class ImportPaperService {
                 // 设置WordMlPackage二进制数据
                 question.setQuesPkg(writeByte);
                 // 设置question与Unit集合数据
-                question.setCourseNo(paper.getCourseNo());
-                question.setCourseName(paper.getCourseName());
+                question.setCourse(paper.getCourse());
                 question.setOrgId(user.getRootOrgId().toString());
                 questions.add(question);
                 paperDetailUnits.add(paperDetailUnit);
@@ -310,15 +312,20 @@ public class ImportPaperService {
 
     /**
      * 初始化试卷信息
-     *
-     * @param paper
+     *  @param paper
      * @param paperName
+     * @param user
      */
-    public void initPaper(Paper paper, String paperName) {
+    public void initPaper(Paper paper, String paperName, AccessUser user) {
         paper.setName(paperName);
         paper.setTitle(paperName);
         paper.setPaperType(PaperType.IMPORT);
         paper.setPaperStatus(PaperStatus.DRAFT);
+        paper.setOrgId(user.getRootOrgId().toString());
+        paper.setCreator(user.getName());
+        Course course = courseRepo.findFirstByCodeAndOrgId(paper.getCourseNo(),user.getRootOrgId().toString());
+        paper.setCourse(course);
+        paper.setCreateTime(CommonUtils.getCurDateTime());
     }
 
     /**
@@ -893,12 +900,7 @@ public class ImportPaperService {
             returnMap.put("msg", msg);
             return returnMap;
         }
-        initPaper(paper, paperName);
-        paper.setCourseNo(courseNo);
-        paper.setCourseName(courseName);
-        paper.setOrgId(user.getRootOrgId().toString());
-        paper.setCreator(user.getName());
-        paper.setCreateTime(CommonUtils.getCurDateTime());
+        initPaper(paper, paperName, user);
         PaperDetail pd = new PaperDetail();
         pd.setId(UUID.randomUUID().toString());
         pd.setNumber(1);

+ 8 - 10
cqb-paper/src/main/java/com/qmth/cqb/paper/service/PaperService.java

@@ -17,6 +17,7 @@ import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import com.qmth.cqb.base.model.Course;
 import com.qmth.cqb.utils.exception.PaperException;
 
 import main.java.com.UpYun;
@@ -25,12 +26,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.nlpcn.commons.lang.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.data.domain.Example;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageImpl;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.domain.Sort;
+import org.springframework.data.domain.*;
 import org.springframework.data.domain.Sort.Direction;
 import org.springframework.data.domain.Sort.Order;
 import org.springframework.data.mongodb.core.MongoTemplate;
@@ -148,8 +144,9 @@ public class PaperService {
         Query query = new Query();
         query.addCriteria(Criteria.where("paperType").is(PaperType.IMPORT));
         if(StringUtils.isNotBlank(paperSearchInfo.getCourseNo())){
-        	query.addCriteria(Criteria.where("courseNo").is(paperSearchInfo.getCourseNo()));
+        	query.addCriteria(Criteria.where("course.code").is(paperSearchInfo.getCourseNo()));
         }
+        query.addCriteria(Criteria.where("course.enable").is("true"));
         query.addCriteria(Criteria.where("orgId").is(paperSearchInfo.getOrgId()));
         long count = this.mongoTemplate.count(query, Paper.class);
         query.with(new Sort(new Order(Direction.DESC,"createTime")));
@@ -177,9 +174,9 @@ public class PaperService {
         query.addCriteria(Criteria.where("paperType").is(PaperType.IMPORT));
         query.addCriteria(Criteria.where("orgId").is(paperSearchInfo.getOrgId()));
         if (StringUtil.isNotBlank(paperSearchInfo.getCourseNo())) {
-            query.addCriteria(Criteria.where("courseNo").is(paperSearchInfo.getCourseNo()));
+            query.addCriteria(Criteria.where("course.code").is(paperSearchInfo.getCourseNo()));
         }
-
+        query.addCriteria(Criteria.where("course.enable").is("true"));
         long totalNumber = this.mongoTemplate.count(query, Paper.class);
         query.limit(pageSize);
         query.skip((curPage - 1) * pageSize);
@@ -257,8 +254,9 @@ public class PaperService {
         Query query = new Query();
         query.addCriteria(Criteria.where("paperType").is(PaperType.GENERATE.name()));
         if(StringUtils.isNotBlank(paperSearchInfo.getCourseNo())){
-        	query.addCriteria(Criteria.where("courseNo").is(paperSearchInfo.getCourseNo()));
+        	query.addCriteria(Criteria.where("course.code").is(paperSearchInfo.getCourseNo()));
         }
+        query.addCriteria(Criteria.where("course.enable").is("true"));
         query.addCriteria(Criteria.where("orgId").is(paperSearchInfo.getOrgId()));
         long count = this.mongoTemplate.count(query, Paper.class);
         query.with(new Sort(new Order(Direction.DESC,"createTime")));

+ 5 - 0
cqb-question-resource/pom.xml

@@ -21,5 +21,10 @@
             <artifactId>cqb-comm-utils</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>com.qmth.cqb</groupId>
+            <artifactId>cqb-base</artifactId>
+            <version>${project.version}</version>
+        </dependency>
     </dependencies>
 </project>

+ 3 - 0
cqb-question-resource/src/main/java/com/qmth/cqb/question/dao/QuesRepo.java

@@ -7,6 +7,7 @@ import org.springframework.data.domain.Pageable;
 import org.springframework.data.mongodb.repository.MongoRepository;
 import org.springframework.data.repository.query.QueryByExampleExecutor;
 
+import java.util.List;
 import java.util.Set;
 
 /**
@@ -18,4 +19,6 @@ public interface QuesRepo extends MongoRepository<Question, String>, QueryByExam
 
     Page<Question> findByIdNotInAndCourseNoAndQuestionTypeAndOrgId(Set<String> idSet, String courseNo,
                                                                    QuesStructType quesType, String orgId,Pageable page);
+
+    List<Question> findByCourseNoAndOrgId(String courseNo, String orgId);
 }

+ 14 - 0
cqb-question-resource/src/main/java/com/qmth/cqb/question/model/Question.java

@@ -4,6 +4,7 @@ import java.io.Serializable;
 import java.util.List;
 import java.util.Map;
 
+import com.qmth.cqb.base.model.Course;
 import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
 import org.springframework.data.annotation.Id;
 
@@ -51,14 +52,20 @@ public class Question implements Serializable {
 
     private Double score;// 预设分值
 
+    @Deprecated
     private String courseNo;// 课程CODE
 
+    @Deprecated
     private String courseName;// 课程名称
 
+    @Deprecated
     private String courseLevel;//课程层次
 
+    @Deprecated
     private String courseMajor;//课程专业
 
+    private Course course;
+
     private String orgId; // 机构ID
 
     private Map<String, String> quesParams;// 试题属性
@@ -270,4 +277,11 @@ public class Question implements Serializable {
 		this.questionAudios = questionAudios;
 	}
 
+    public Course getCourse() {
+        return course;
+    }
+
+    public void setCourse(Course course) {
+        this.course = course;
+    }
 }

+ 30 - 8
cqb-question-resource/src/main/java/com/qmth/cqb/question/service/QuesService.java

@@ -5,15 +5,18 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Set;
 
+import cn.com.qmth.examcloud.common.dto.core.Course;
+import cn.com.qmth.examcloud.common.dto.core.enums.CourseLevel;
 import cn.com.qmth.examcloud.common.uac.entity.AccessUser;
+import com.qmth.cqb.utils.enums.PaperType;
 import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Example;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.*;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 
 import com.qmth.cqb.question.dao.QuesRepo;
@@ -35,6 +38,9 @@ public class QuesService {
     @Autowired
     QuesRepo quesRepo;
 
+    @Autowired
+    MongoTemplate mongoTemplate;
+
     /**
      * 套题子题按序号自动生成ID
      *
@@ -190,12 +196,28 @@ public class QuesService {
      */
     public Page<Question> findAll(QuestionSearchCondition searchCondition, int curPage, int pageSize) {
         formatQuesCondition(searchCondition);
-        Question ques = BeanCopierUtil.copyProperties(searchCondition, Question.class);
-        Page<Question> list = quesRepo.findAll(Example.of(ques), new PageRequest(curPage - 1, pageSize));
-        for (Question question : list) {
+        Query query = new Query();
+        query.addCriteria(Criteria.where("orgId").is(searchCondition.getOrgId()));
+        if(StringUtils.isNotBlank(searchCondition.getCourseNo())){
+            query.addCriteria(Criteria.where("course.code").is(searchCondition.getCourseNo()));
+        }
+        if(StringUtils.isNotBlank(searchCondition.getCourseLevel())){
+            query.addCriteria(Criteria.where("course.level").is(searchCondition.getCourseLevel()));
+        }
+        if(searchCondition.getQuestionType() != null){
+            query.addCriteria(Criteria.where("questionType").is(searchCondition.getQuestionType()));
+        }
+        query.addCriteria(Criteria.where("course.enable").is("true"));
+
+        long count = this.mongoTemplate.count(query, Question.class);
+        query.with(new Sort(new Sort.Order(Sort.Direction.DESC,"createTime")));
+        query.limit(pageSize);
+        query.skip((curPage - 1) * pageSize);
+        List<Question> questionList = this.mongoTemplate.find(query, Question.class);
+        for (Question question : questionList) {
             formatQues(question);
         }
-        return list;
+        return new PageImpl<Question>(questionList, new PageRequest(curPage - 1, pageSize), count);
     }
 
     public void formatQuesCondition(QuestionSearchCondition searchCondition){

+ 5 - 0
cqb-starter/pom.xml

@@ -90,6 +90,11 @@
             <optional>true</optional>
         </dependency>
 
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-autoconfigure</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-feign</artifactId>

+ 9 - 2
cqb-starter/src/main/java/com/qmth/cqb/App.java → cqb-starter/src/main/java/com/qmth/cqb/Application.java

@@ -1,14 +1,18 @@
 package com.qmth.cqb;
 
+import com.qmth.commons.query.dao.impl.BaseQueryDaoImpl;
 import com.qmth.cqb.utils.GridFSUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.domain.EntityScan;
 import org.springframework.boot.autoconfigure.web.MultipartAutoConfiguration;
 import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
 import org.springframework.cloud.netflix.feign.EnableFeignClients;
 import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 import org.springframework.web.multipart.MultipartResolver;
 import org.springframework.web.multipart.commons.CommonsMultipartResolver;
 
@@ -16,17 +20,20 @@ import org.springframework.web.multipart.commons.CommonsMultipartResolver;
  * 项目入口主程序
  *
  */
+@ComponentScan(basePackages = {"com.qmth.commons","com.qmth.cqb"})
+@EntityScan(basePackages = {"com.qmth.commons","com.qmth.cqb"})
+@EnableJpaRepositories(basePackages = {"com.qmth.commons","com.qmth.cqb"},repositoryBaseClass = BaseQueryDaoImpl.class)
 @SpringBootApplication
 @EnableEurekaClient
 @EnableFeignClients
 @EnableAutoConfiguration(exclude = {MultipartAutoConfiguration.class})
-public class App {
+public class Application {
 
     @Autowired
     GridFSUtil gridFSUtil;
 
     public static void main(String[] args) {
-        SpringApplication.run(App.class, args);
+        SpringApplication.run(Application.class, args);
     }
 
     // 显示声明CommonsMultipartResolver为mutipartResolver

+ 83 - 0
cqb-starter/src/main/java/com/qmth/cqb/sync/DataReceiveService.java

@@ -0,0 +1,83 @@
+package com.qmth.cqb.sync;
+
+import com.qmth.commons.dataSync.core.annotations.DataReceive;
+import com.qmth.commons.dataSync.core.entity.BaseSyncData;
+import com.qmth.commons.dataSync.core.service.DataSyncService;
+import com.qmth.cqb.base.model.Course;
+import com.qmth.cqb.paper.dao.PaperRepo;
+import com.qmth.cqb.paper.model.Paper;
+import com.qmth.cqb.question.dao.QuesRepo;
+import com.qmth.cqb.question.model.Question;
+import com.qmth.cqb.utils.CommonUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * Created by songyue on 17/8/3.
+ */
+@Service
+public class DataReceiveService {
+
+    private static final Logger log = LoggerFactory.getLogger(DataReceiveService.class);
+
+    @Autowired
+    DataSyncService dataSyncService;
+
+    @Autowired
+    QuesRepo quesRepo;
+
+    @Autowired
+    PaperRepo paperRepo;
+
+    @DataReceive(domain = "cn.com.qmth.examcloud.common.dto.core.CourseSync")
+    public synchronized void readCourse(BaseSyncData baseSyncData) {
+        if (dataSyncService.expired(baseSyncData)) {
+            return;
+        }
+        log.info("-----------coursesync start---------");
+        log.info(baseSyncData.toString());
+        String courseCode = baseSyncData.getEntity().get("code");
+        String orgId = baseSyncData.getEntity().get("orgId");
+        String courseName = baseSyncData.getEntity().get("name");
+        String courseLevel = baseSyncData.getEntity().get("level");
+        String enable = baseSyncData.getEntity().get("enable");
+        if (StringUtils.isEmpty(courseCode)
+                || StringUtils.isEmpty(orgId)
+                || StringUtils.isEmpty(courseName)
+                || StringUtils.isEmpty(courseLevel)
+                || StringUtils.isEmpty(enable)) {
+            log.error("entity value is null");
+            return;
+        }
+        List<Question> questions = quesRepo.findByCourseNoAndOrgId(courseCode, orgId);
+        List<Paper> papers = paperRepo.findByCourseNoAndOrgId(courseCode, orgId);
+        if (questions != null && questions.size() > 0) {
+            for (Question question : questions) {
+                Course course = question.getCourse();
+                course.setName(courseName);
+                course.setLevel(courseLevel);
+                course.setEnable(enable);
+                course.setUpdateTime(CommonUtils.getCurDateTime());
+            }
+        }
+        if (papers != null && papers.size() > 0) {
+            for (Paper paper : papers) {
+                Course course = paper.getCourse();
+                course.setName(courseName);
+                course.setLevel(courseLevel);
+                course.setEnable(enable);
+                course.setUpdateTime(CommonUtils.getCurDateTime());
+            }
+        }
+        quesRepo.save(questions);
+        paperRepo.save(papers);
+        log.info("-----------coursesync end---------");
+    }
+
+
+}

+ 16 - 0
cqb-starter/src/main/java/com/qmth/cqb/sync/DataSendService.java

@@ -0,0 +1,16 @@
+package com.qmth.cqb.sync;
+
+import com.qmth.commons.dataSync.core.service.DataSyncService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Created by songyue on 17/8/3.
+ */
+@Service
+public class DataSendService {
+
+    @Autowired
+    DataSyncService dataSyncService;
+
+}

+ 18 - 1
cqb-starter/src/main/resources/application-dev.properties

@@ -16,4 +16,21 @@ upyun.audio.uploadUrl=/comm-ques-bank/audio/
 upyun.downloadUrl=http://exam-cloud-test.b0.upaiyun.com
 upyun.downloadDirectory=paperDirectory
 upyun.zipDirectory=paperZipDirectory
-upyun.radioType=mp3,wma
+upyun.radioType=mp3,wma
+
+
+spring.datasource.url=jdbc:mysql://192.168.1.99:3306/exam_cloud_test?useUnicode=true&characterEncoding=UTF-8
+spring.datasource.username=root
+spring.datasource.password=root
+spring.datasource.validation-query=SELECT 1 FROM DUAL
+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.1.99
+spring.rabbitmq.port=5672
+spring.rabbitmq.username=examcloud
+spring.rabbitmq.password=examcloud
+spring.rabbitmq.listener.acknowledgeMode=MANUAL

+ 18 - 1
cqb-starter/src/main/resources/application-prod.properties

@@ -16,4 +16,21 @@ upyun.audio.uploadUrl=/comm-ques-bank/audio/
 upyun.downloadUrl=http://exam-cloud-test.b0.upaiyun.com
 upyun.downloadDirectory=paperDirectory
 upyun.zipDirectory=paperZipDirectory
-upyun.radioType=mp3,wma
+upyun.radioType=mp3,wma
+
+
+spring.datasource.url=jdbc:mysql://192.168.1.99:3306/exam_cloud_test?useUnicode=true&characterEncoding=UTF-8
+spring.datasource.username=root
+spring.datasource.password=root
+spring.datasource.validation-query=SELECT 1 FROM DUAL
+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.1.99
+spring.rabbitmq.port=5672
+spring.rabbitmq.username=examcloud
+spring.rabbitmq.password=examcloud
+spring.rabbitmq.listener.acknowledgeMode=MANUAL

+ 18 - 1
cqb-starter/src/main/resources/application-test.properties

@@ -15,4 +15,21 @@ upyun.audio.uploadUrl=/comm-ques-bank/audio/
 upyun.downloadUrl=http://exam-cloud-test.b0.upaiyun.com
 upyun.downloadDirectory=paperDirectory
 upyun.zipDirectory=paperZipDirectory
-upyun.radioType=mp3,wma
+upyun.radioType=mp3,wma
+
+
+spring.datasource.url=jdbc:mysql://192.168.1.99:3306/exam_cloud_test?useUnicode=true&characterEncoding=UTF-8
+spring.datasource.username=root
+spring.datasource.password=root
+spring.datasource.validation-query=SELECT 1 FROM DUAL
+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.1.99
+spring.rabbitmq.port=5672
+spring.rabbitmq.username=examcloud
+spring.rabbitmq.password=examcloud
+spring.rabbitmq.listener.acknowledgeMode=MANUAL

+ 4 - 4
cqb-starter/src/main/resources/log4j2.xml

@@ -2,9 +2,10 @@
 <Configuration status="info">
     <Appenders>
         <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout charset="UTF-8">
-                <pattern>%d %p %C{1.} [%t] %m%n</pattern>
-            </PatternLayout>
+            <!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
+            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
+            <!-- 输出日志的格式 -->
+            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
         </Console>
     </Appenders>
     <Loggers>
@@ -13,6 +14,5 @@
             <AppenderRef ref="Console" />
         </Root>
         <Logger name="org.docx4j" level="off" />
-
     </Loggers>
 </Configuration>

+ 83 - 3
cqb-starter/src/test/java/com/qmth/cqb/AppTest.java → cqb-starter/src/test/java/com/qmth/cqb/ApplicationTest.java

@@ -1,6 +1,9 @@
 package com.qmth.cqb;
 
+import cn.com.qmth.examcloud.common.dto.core.enums.CourseLevel;
 import com.google.gson.Gson;
+import com.qmth.cqb.base.dao.CourseRepo;
+import com.qmth.cqb.base.model.Course;
 import com.qmth.cqb.paper.dao.*;
 import com.qmth.cqb.paper.model.*;
 import com.qmth.cqb.paper.service.ImportPaperService;
@@ -25,7 +28,6 @@ import com.qmth.cqb.utils.word.DocxProcessUtil;
 import org.apache.log4j.Logger;
 import org.docx4j.Docx4J;
 import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
-import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -42,8 +44,8 @@ import java.util.Map;
  */
 @RunWith(SpringRunner.class)
 @SpringBootTest
-public class AppTest {
-    protected final Logger log = Logger.getLogger(AppTest.class);
+public class ApplicationTest {
+    protected final Logger log = Logger.getLogger(ApplicationTest.class);
 
     @Autowired
     QuesRepo quesRepo;
@@ -78,6 +80,9 @@ public class AppTest {
     @Autowired
     PaperDetailUnitService paperDetailUnitService;
 
+    @Autowired
+    CourseRepo courseRepo;
+
     @Test
     public void testGridFs() throws FileNotFoundException {
         String fileName = "testXml";
@@ -251,4 +256,79 @@ public class AppTest {
 //        System.out.println(gson.toJson(papers));
     }
 
+    @Test
+    public void testCourse1(){
+        List<Question> questions = quesRepo.findAll();
+        List<Question> saveQues = new ArrayList<>();
+        for(Question question:questions){
+            Course course = courseRepo.findFirstByCodeAndOrgId(question.getCourseNo(),question.getOrgId());
+            if(course != null){
+                question.setCourseLevel(course.getLevel());
+            }else{
+                question.setCourseLevel(CourseLevel.ALL.name());
+            }
+            saveQues.add(question);
+        }
+        quesRepo.save(saveQues);
+    }
+
+    @Test
+    public void testCourse2(){
+        List<Question> questions = quesRepo.findAll();
+        List<Question> saveQues = new ArrayList<>();
+        for(Question question:questions){
+            Course course = courseRepo.findFirstByCodeAndOrgId(question.getCourseNo(),question.getOrgId());
+            question.setCourse(course);
+            saveQues.add(question);
+        }
+        quesRepo.save(saveQues);
+    }
+
+    @Test
+    public void testCourse3(){
+        List<Paper> papers = paperRepo.findAll();
+        List<Paper> savePaper = new ArrayList<>();
+        for(Paper paper:papers){
+            Course course = courseRepo.findFirstByCodeAndOrgId(paper.getCourseNo(),paper.getOrgId());
+            paper.setCourse(course);
+            savePaper.add(paper);
+        }
+        paperRepo.save(savePaper);
+    }
+
+    @Test
+    public void testCourse5(){
+        List<Question> questions = quesRepo.findAll();
+        List<Paper> papers = paperRepo.findAll();
+        for(Question question:questions){
+            Course course = question.getCourse();
+            if(course != null){
+                if(course.getEnable().equals("1")){
+                    course.setEnable("true");
+                }
+                if(course.getEnable().equals("0")){
+                    course.setEnable("false");
+                }
+            }
+        }
+        for(Paper paper:papers){
+            Course course = paper.getCourse();
+            if(course != null){
+                if(course.getEnable().equals("1")){
+                    course.setEnable("true");
+                }
+                if(course.getEnable().equals("0")){
+                    course.setEnable("false");
+                }
+            }
+        }
+        quesRepo.save(questions);
+        paperRepo.save(papers);
+    }
+
+    @Test
+    public void testCourse4(){
+        Course course = courseRepo.findFirstByCodeAndOrgId("010048","1");
+    }
+
 }

+ 1 - 1
pom.xml

@@ -8,7 +8,7 @@
   <parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
-    <version>1.4.3.RELEASE</version>
+    <version>1.5.2.RELEASE</version>
   </parent>
   <modules>
     <module>cqb-starter</module>