浏览代码

swagger提交

weiwenhai 6 年之前
父节点
当前提交
65ee8c45c5
共有 26 个文件被更改,包括 519 次插入23 次删除
  1. 1 1
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/AudioTimeConfigController.java
  2. 1 1
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/CourseController.java
  3. 1 1
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/CoursePropertyController.java
  4. 1 1
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/ExamFileController.java
  5. 1 1
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/ExportPaperController.java
  6. 1 1
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/ExportStructureController.java
  7. 1 1
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/ExtractConfigController.java
  8. 1 1
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/GenPaperController.java
  9. 1 1
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/ImportPaperController.java
  10. 1 1
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/PaperController.java
  11. 1 1
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/PaperDetailController.java
  12. 1 1
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/PaperDetailUnitController.java
  13. 1 1
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/PaperStructController.java
  14. 1 1
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/PropertyController.java
  15. 1 1
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/QuesController.java
  16. 1 1
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/QuestionAudioController.java
  17. 1 1
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/SettingController.java
  18. 84 0
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/controller/DefaultQuesionController.java
  19. 1 1
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/provider/QuestionCloudServiceProvider.java
  20. 172 3
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/temp/DdExcelService.java
  21. 103 0
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/temp/vo/DdPaperDto.java
  22. 89 0
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/temp/vo/DdPaperStructDto.java
  23. 7 1
      examcloud-core-questions-starter/pom.xml
  24. 32 0
      examcloud-core-questions-starter/src/main/java/cn/com/qmth/examcloud/core/questions/starter/config/Swagger2.java
  25. 13 0
      examcloud-core-questions-starter/src/main/resources/security-exclusions.conf
  26. 1 1
      examcloud-core-questions-starter/src/test/java/cn/com/qmth/examcloud/core/questions/starter/DdCollegeUtilTest.java

+ 1 - 1
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/service/core/api/AudioTimeConfigController.java → examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/AudioTimeConfigController.java

@@ -1,4 +1,4 @@
-package cn.com.qmth.examcloud.service.core.api;
+package cn.com.qmth.examcloud.core.questions.api;
 
 import io.swagger.annotations.ApiOperation;
 

+ 1 - 1
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/service/core/api/CourseController.java → examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/CourseController.java

@@ -1,4 +1,4 @@
-package cn.com.qmth.examcloud.service.core.api;
+package cn.com.qmth.examcloud.core.questions.api;
 
 import java.util.List;
 

+ 1 - 1
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/service/core/api/CoursePropertyController.java → examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/CoursePropertyController.java

@@ -1,4 +1,4 @@
-package cn.com.qmth.examcloud.service.core.api;
+package cn.com.qmth.examcloud.core.questions.api;
 
 import io.swagger.annotations.ApiOperation;
 

+ 1 - 1
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/service/core/api/ExamFileController.java → examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/ExamFileController.java

@@ -1,4 +1,4 @@
-package cn.com.qmth.examcloud.service.core.api;
+package cn.com.qmth.examcloud.core.questions.api;
 
 import io.swagger.annotations.ApiOperation;
 

+ 1 - 1
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/service/core/api/ExportPaperController.java → examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/ExportPaperController.java

@@ -1,4 +1,4 @@
-package cn.com.qmth.examcloud.service.core.api;
+package cn.com.qmth.examcloud.core.questions.api;
 
 import cn.com.qmth.examcloud.core.questions.dao.ExportServiceManageRepo;
 import cn.com.qmth.examcloud.core.questions.dao.entity.ExportServiceManage;

+ 1 - 1
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/service/core/api/ExportStructureController.java → examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/ExportStructureController.java

@@ -1,4 +1,4 @@
-package cn.com.qmth.examcloud.service.core.api;
+package cn.com.qmth.examcloud.core.questions.api;
 
 import io.swagger.annotations.ApiOperation;
 

+ 1 - 1
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/service/core/api/ExtractConfigController.java → examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/ExtractConfigController.java

@@ -1,4 +1,4 @@
-package cn.com.qmth.examcloud.service.core.api;
+package cn.com.qmth.examcloud.core.questions.api;
 
 
 import cn.com.qmth.examcloud.core.questions.base.question.PaperDto;

+ 1 - 1
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/service/core/api/GenPaperController.java → examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/GenPaperController.java

@@ -1,4 +1,4 @@
-package cn.com.qmth.examcloud.service.core.api;
+package cn.com.qmth.examcloud.core.questions.api;
 
 import java.util.HashMap;
 import java.util.Map;

+ 1 - 1
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/service/core/api/ImportPaperController.java → examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/ImportPaperController.java

@@ -1,4 +1,4 @@
-package cn.com.qmth.examcloud.service.core.api;
+package cn.com.qmth.examcloud.core.questions.api;
 
 import cn.com.qmth.examcloud.commons.base.exception.StatusException;
 import cn.com.qmth.examcloud.commons.web.security.bean.User;

+ 1 - 1
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/service/core/api/PaperController.java → examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/PaperController.java

@@ -1,4 +1,4 @@
-package cn.com.qmth.examcloud.service.core.api;
+package cn.com.qmth.examcloud.core.questions.api;
 
 import java.util.ArrayList;
 import java.util.Arrays;

+ 1 - 1
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/service/core/api/PaperDetailController.java → examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/PaperDetailController.java

@@ -1,4 +1,4 @@
-package cn.com.qmth.examcloud.service.core.api;
+package cn.com.qmth.examcloud.core.questions.api;
 
 import java.util.List;
 

+ 1 - 1
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/service/core/api/PaperDetailUnitController.java → examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/PaperDetailUnitController.java

@@ -1,4 +1,4 @@
-package cn.com.qmth.examcloud.service.core.api;
+package cn.com.qmth.examcloud.core.questions.api;
 
 import javax.servlet.http.HttpServletRequest;
 

+ 1 - 1
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/service/core/api/PaperStructController.java → examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/PaperStructController.java

@@ -1,4 +1,4 @@
-package cn.com.qmth.examcloud.service.core.api;
+package cn.com.qmth.examcloud.core.questions.api;
 
 import java.util.ArrayList;
 import java.util.List;

+ 1 - 1
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/service/core/api/PropertyController.java → examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/PropertyController.java

@@ -1,4 +1,4 @@
-package cn.com.qmth.examcloud.service.core.api;
+package cn.com.qmth.examcloud.core.questions.api;
 
 import java.util.ArrayList;
 import java.util.List;

+ 1 - 1
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/service/core/api/QuesController.java → examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/QuesController.java

@@ -1,4 +1,4 @@
-package cn.com.qmth.examcloud.service.core.api;
+package cn.com.qmth.examcloud.core.questions.api;
 
 import java.util.List;
 import java.util.stream.Collectors;

+ 1 - 1
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/service/core/api/QuestionAudioController.java → examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/QuestionAudioController.java

@@ -1,4 +1,4 @@
-package cn.com.qmth.examcloud.service.core.api;
+package cn.com.qmth.examcloud.core.questions.api;
 
 import io.swagger.annotations.ApiOperation;
 

+ 1 - 1
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/service/core/api/SettingController.java → examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/SettingController.java

@@ -1,4 +1,4 @@
-package cn.com.qmth.examcloud.service.core.api;
+package cn.com.qmth.examcloud.core.questions.api;
 
 import cn.com.qmth.examcloud.commons.web.security.enums.RoleMeta;
 

+ 84 - 0
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/controller/DefaultQuesionController.java

@@ -0,0 +1,84 @@
+package cn.com.qmth.examcloud.core.questions.api.controller;
+
+import javax.servlet.http.HttpServletRequest;
+
+import io.swagger.annotations.ApiOperation;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import cn.com.qmth.examcloud.commons.base.exception.StatusException;
+import cn.com.qmth.examcloud.commons.web.security.bean.User;
+import cn.com.qmth.examcloud.commons.web.support.ControllerSupport;
+import cn.com.qmth.examcloud.core.questions.api.request.GetDefaultQuesionReq;
+import cn.com.qmth.examcloud.core.questions.api.request.GetDefaultQuesionsReq;
+import cn.com.qmth.examcloud.core.questions.service.QuestionProviderService;
+import cn.com.qmth.examcloud.question.core.question.DefaultQuestion;
+
+/**
+ * @author 		weiwenhai
+ * @date 		20180.9.10
+ * @company		qmth
+ * @description	controller
+ * @code		013
+ */
+@RestController
+@RequestMapping("${api_cqb}/default_question")
+public class DefaultQuesionController extends ControllerSupport {
+
+	@Autowired
+	QuestionProviderService questionProviderService;
+	
+	@ApiOperation(value = "外部接口保存单个试题", notes = "外部接口保存单个试题")
+    @PostMapping("/save")
+	public ResponseEntity<Object> save(HttpServletRequest request, @RequestBody GetDefaultQuesionReq req) {
+		User user = getAccessUser();
+		if(user == null){
+			throw new StatusException("Q-013041", "用户不存在!");
+		}
+		DefaultQuestion defaultQuestion = req.getDefaultQuestion();
+		if(defaultQuestion.getRootOrgId() == null){
+			throw new StatusException("Q-013045", "rootOrgId is null");
+		}
+		String id = questionProviderService.save(defaultQuestion);
+		return new ResponseEntity<Object>(id,HttpStatus.OK);
+	}
+	
+	@ApiOperation(value = "修改试题")
+	@PutMapping("/update")
+	public ResponseEntity<Object> update(HttpServletRequest request, @RequestBody GetDefaultQuesionReq req) {
+		User user = getAccessUser();
+		if(user == null){
+			throw new StatusException("Q-013057", "用户不存在!");
+		}
+		DefaultQuestion defaultQuestion = req.getDefaultQuestion();
+		if(defaultQuestion.getRootOrgId() == null){
+			throw new StatusException("Q-013061", "rootOrgId is null");
+		}
+		String id = questionProviderService.save(defaultQuestion);
+		return new ResponseEntity<Object>(id,HttpStatus.OK);
+	}
+	
+	@ApiOperation(value = "查询试题")
+	@GetMapping("/find")
+	public ResponseEntity<Object> find(HttpServletRequest request, @RequestBody GetDefaultQuesionsReq req) {
+		User user = getAccessUser();
+		if(user == null){
+			throw new StatusException("Q-013075", "用户不存在!");
+		}
+		Long rootOrgId = req.getRootOrgId();
+		if(rootOrgId == null){
+			throw new StatusException("Q-011079", "rootOrgId is null");
+		}
+		Page<DefaultQuestion> defaultQuestions = questionProviderService.findQustions(rootOrgId, req.getProperties(), req.getCurPage(), req.getPageSize());
+		return new ResponseEntity<Object>(defaultQuestions,HttpStatus.OK);
+	}
+}

+ 1 - 1
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/provider/QuestionCloudServiceProvider.java

@@ -23,7 +23,7 @@ import cn.com.qmth.examcloud.question.core.question.DefaultQuestion;
  * @author 		weiwenhai
  * @date 		20180.9.10
  * @company		qmth
- * @describle	试题对象外部接口增删改查请求接口实现类
+ * @description	试题对象外部接口增删改查请求接口实现类
  * @code		011
  */
 

+ 172 - 3
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/temp/DdExcelService.java

@@ -13,22 +13,32 @@ import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
+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 cn.com.qmth.examcloud.core.questions.base.enums.PaperType;
 import cn.com.qmth.examcloud.core.questions.base.question.enums.QuesStructType;
 import cn.com.qmth.examcloud.core.questions.dao.CourseRepo;
+import cn.com.qmth.examcloud.core.questions.dao.PaperDetailRepo;
 import cn.com.qmth.examcloud.core.questions.dao.PaperDetailUnitRepo;
 import cn.com.qmth.examcloud.core.questions.dao.PaperRepo;
 import cn.com.qmth.examcloud.core.questions.dao.QuesTypeNameRepo;
 import cn.com.qmth.examcloud.core.questions.dao.entity.Course;
 import cn.com.qmth.examcloud.core.questions.dao.entity.Paper;
+import cn.com.qmth.examcloud.core.questions.dao.entity.PaperDetail;
+import cn.com.qmth.examcloud.core.questions.dao.entity.PaperDetailStruct;
 import cn.com.qmth.examcloud.core.questions.dao.entity.PaperDetailUnit;
+import cn.com.qmth.examcloud.core.questions.dao.entity.PaperStruct;
 import cn.com.qmth.examcloud.core.questions.dao.entity.QuesTypeName;
 import cn.com.qmth.examcloud.core.questions.dao.entity.Question;
+import cn.com.qmth.examcloud.core.questions.dao.entity.dto.PaperDetailUnitStructDto;
 import cn.com.qmth.examcloud.core.questions.dao.QuesRepo;
 import cn.com.qmth.examcloud.core.questions.service.PaperDetailUnitService;
 import cn.com.qmth.examcloud.core.questions.service.temp.vo.DdExcelDto;
+import cn.com.qmth.examcloud.core.questions.service.temp.vo.DdPaperDto;
+import cn.com.qmth.examcloud.core.questions.service.temp.vo.DdPaperStructDto;
 import cn.com.qmth.examcloud.question.core.question.QuestionType;
 
 @Service("ddExcelService")
@@ -51,8 +61,13 @@ public class DdExcelService {
 
 	@Autowired
 	private QuesTypeNameRepo quesTypeRepo;
+	
+	@Autowired
+    MongoTemplate mongoTemplate;
+	
+	@Autowired
+	PaperDetailRepo paperDetailRepo;
 
-	 
 	public void insertQueryName(String orgId){
 		//查询所有课程
 		long startCourseTime = System.currentTimeMillis();
@@ -132,6 +147,8 @@ public class DdExcelService {
 		return map;
 	}
 	
+	
+	
 	public void exporExcel(String orgId) throws Exception{
 		//导出Excel集合
 		List<DdExcelDto> ddExcelDtos = new ArrayList<DdExcelDto>();
@@ -374,9 +391,161 @@ public class DdExcelService {
         System.out.println(otherMap);
 	}
 	
+	/**
+	 * 导出试卷详情
+	 * @param orgId
+	 * @throws Exception
+	 */
+	public void exportPaperExcel(String orgId) throws Exception {
+		System.out.println("开始导出试卷具体信息。。。。");
+		//导出Excel对象集合
+		List<DdPaperDto> excelDtoList = new ArrayList<DdPaperDto>();
+		//查询所有课程
+		List<Course> courses = courseRepo.findByOrgId(orgId);
+		System.out.println("查询课程总数:"+ courses.size());
+		if(courses != null && courses.size()>0){
+			int i = 1;
+			for(Course course : courses){
+				//根据课程查询试卷
+			    Query query = new Query();
+		        query.addCriteria(Criteria.where("orgId").is(orgId));
+		        query.addCriteria(Criteria.where("paperType").is(PaperType.GENERATE));
+		        query.addCriteria(Criteria.where("course.enable").is("true"));
+		        query.addCriteria(Criteria.where("course.code").is(course.getCode()));
+		        List<Paper> paperList = this.mongoTemplate.find(query, Paper.class);
+		        System.out.println(course.getCode() + "课程下的组卷试卷数量:" + paperList.size());
+		        if(paperList != null && paperList.size()>0){
+		        	int j = 1;
+		        	for(Paper paper : paperList){
+		        		//查询大题集合
+		        		List<PaperDetail> details = paperDetailRepo.findByPaperOrderByNumber(paper);
+		        		if(details != null && details.size()>0){
+		        			for(PaperDetail detail:details){
+		        				DdPaperDto ddPaperDto = new DdPaperDto();
+			        			ddPaperDto.setCode(paper.getCourse().getCode());
+			        			ddPaperDto.setDetailName(detail.getName());
+			        			ddPaperDto.setName(paper.getCourse().getName());
+			        			ddPaperDto.setNumber(detail.getUnitCount());
+			        			ddPaperDto.setPaperName(paper.getName());
+			        			excelDtoList.add(ddPaperDto);
+		        			}
+		        		}
+		        		System.out.println("处理完第"+ j + "套试卷。。。");
+		        		j++;
+		        	}
+		        }
+		        System.out.println("处理完第"+ i + "个课程。。。");
+        		i++;
+			}
+		}
+		//生成Excel对象
+		File ddExcelFile = new File("H:\\ddPaperDto.xlsx");
+		Workbook workBook = new XSSFWorkbook(ddExcelFile);
+		//获取第一个工作页
+        Sheet sheet = workBook.getSheetAt(0);
+        //向Excle中写入数据,从第2行开始
+        for(int i = 0;i<excelDtoList.size();i++){
+        	//创建一行:从第1行开始,跳过表头
+            Row row = sheet.createRow(i+1);
+            DdPaperDto excelDto = excelDtoList.get(i);
+            //每列赋值
+            row.createCell(0).setCellValue(excelDto.getCode());
+            row.createCell(1).setCellValue(excelDto.getName());
+            row.createCell(2).setCellValue(excelDto.getPaperName());
+            row.createCell(3).setCellValue(excelDto.getDetailName());
+            row.createCell(4).setCellValue(excelDto.getNumber());
+        }
+        File file = new File("H:\\ddPaperDtoNew.xlsx");
+        OutputStream out = new FileOutputStream(file);
+        workBook.write(out);
+        out.close();
+        System.out.println("结束...");
+	}
+	
+	/**
+	 * 导出试卷结构
+	 * @param orgId
+	 * @throws Exception
+	 */
+	public void exportPaperStructExcel(String orgId) throws Exception{
+		System.out.println("开始导出试卷结构");
+		//导出Excel对象集合
+		List<DdPaperStructDto> excelDtoList = new ArrayList<DdPaperStructDto>();
+		//查询所有课程
+		List<Course> courses = courseRepo.findByOrgId(orgId);
+		System.out.println("查询课程总数:"+ courses.size());
+		if(courses != null && courses.size()>0){
+			int i = 1;
+			for(Course course : courses){
+				Query query = new Query();
+		        query.addCriteria(Criteria.where("orgId").is(orgId));
+		        query.addCriteria(Criteria.where("type").is("EXACT"));
+		        query.addCriteria(Criteria.where("courseNo").is(course.getCode()));
+		        List<PaperStruct> paperStructList = this.mongoTemplate.find(query, PaperStruct.class);
+		        System.out.println(course.getCode() + "课程下的试卷结构数量:" + paperStructList.size());
+		        if(paperStructList != null && paperStructList.size()>0){
+		        	for(PaperStruct paperStruct:paperStructList){
+		        		//得到大题集合
+		        		List<PaperDetailStruct> paperDetailStructs = paperStruct.getPaperDetailStructs();
+		        		if(paperDetailStructs != null && paperDetailStructs.size()>0){
+		        			for(PaperDetailStruct paperDetailStruct:paperDetailStructs){
+		        				//得到大题下的小题集合
+		        				List<PaperDetailUnitStructDto> unitStructs = paperDetailStruct.getUnitStructs();
+		        				if(unitStructs != null && unitStructs.size()>0){
+		        					for(PaperDetailUnitStructDto unitStructDto:unitStructs){
+		        						DdPaperStructDto excelDto = new DdPaperStructDto();
+		        						excelDto.setCode(paperStruct.getCourseNo());
+		        						excelDto.setDetailName(paperDetailStruct.getName());
+		        						excelDto.setName(course.getName());
+		        						excelDto.setNumber(unitStructDto.getCount());
+		        						excelDto.setQuesNames(unitStructDto.getQuesNames().toString());
+		        						excelDto.setQuesType(unitStructDto.getQuestionType().getName());
+		        						excelDtoList.add(excelDto);
+		        					}
+		        				}
+		        			}
+		        		}
+		        	}
+		        }
+		        System.out.println("处理完第:" + i + "个课程。");
+		        System.out.println("生成对象个数:" + excelDtoList.size());
+		        i++;
+			}
+		}
+		//生成Excel对象
+		File ddExcelFile = new File("H:\\ddPaperStructDto.xlsx");
+		Workbook workBook = new XSSFWorkbook(ddExcelFile);
+		//获取第一个工作页
+        Sheet sheet = workBook.getSheetAt(0);
+        //向Excle中写入数据,从第2行开始
+        for(int i = 0;i<excelDtoList.size();i++){
+        	//创建一行:从第1行开始,跳过表头
+            Row row = sheet.createRow(i+1);
+            DdPaperStructDto excelDto = excelDtoList.get(i);
+            //每列赋值
+            row.createCell(0).setCellValue(excelDto.getCode());
+            row.createCell(1).setCellValue(excelDto.getName());
+            row.createCell(2).setCellValue(excelDto.getDetailName());
+            row.createCell(3).setCellValue(excelDto.getQuesNames());
+            row.createCell(4).setCellValue(excelDto.getNumber());
+            row.createCell(5).setCellValue(excelDto.getQuesType());
+        }
+        File file = new File("H:\\ddPaperStructDtoNew.xlsx");
+        OutputStream out = new FileOutputStream(file);
+        workBook.write(out);
+        out.close();
+        System.out.println("结束...");
+	}
+	
+	
 	public static void main(String[] args){
-		File ddExcelFile = new File("H:\\ddExcelDto.xlsx");
-		System.out.println(ddExcelFile);
+//		File ddExcelFile = new File("H:\\ddExcelDto.xlsx");
+		List<String> ss = new ArrayList<String>();
+		ss.add("单选");
+		ss.add("单选题");
+		ss.add("选择题");
+		System.out.println(ss);
+		System.out.println(ss.toString());
 	}
 	
 }

+ 103 - 0
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/temp/vo/DdPaperDto.java

@@ -0,0 +1,103 @@
+package cn.com.qmth.examcloud.core.questions.service.temp.vo;
+
+/**
+ * @author 		weiwenhai
+ * @date		2018.9.15
+ * @company		qmth
+ * @description	地大试卷详情导出类
+ */
+
+public class DdPaperDto {
+	
+	/**
+	 * 课程代码
+	 */
+	private String code;
+	
+	/**
+	 * 课程名称
+	 */
+	private String name;
+	
+	/**
+	 * 试卷名称
+	 */
+	private String paperName;
+	
+	/**
+	 * 大题名称
+	 */
+	private String detailName;
+	
+	/**
+	 * 大题来源
+	 */
+	private String quesNames;
+	
+	/**
+	 * 题目数量
+	 */
+	private int number;
+	
+	/**
+	 * 题型
+	 */
+	private String quesType;
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getPaperName() {
+		return paperName;
+	}
+
+	public void setPaperName(String paperName) {
+		this.paperName = paperName;
+	}
+
+	public String getDetailName() {
+		return detailName;
+	}
+
+	public void setDetailName(String detailName) {
+		this.detailName = detailName;
+	}
+
+	public String getQuesNames() {
+		return quesNames;
+	}
+
+	public void setQuesNames(String quesNames) {
+		this.quesNames = quesNames;
+	}
+
+	public int getNumber() {
+		return number;
+	}
+
+	public void setNumber(int number) {
+		this.number = number;
+	}
+
+	public String getQuesType() {
+		return quesType;
+	}
+
+	public void setQuesType(String quesType) {
+		this.quesType = quesType;
+	}
+
+}

+ 89 - 0
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/temp/vo/DdPaperStructDto.java

@@ -0,0 +1,89 @@
+package cn.com.qmth.examcloud.core.questions.service.temp.vo;
+
+/**
+ * @author 		weiwenhai
+ * @date		2018.9.15
+ * @company		qmth
+ * @description	地大试卷结构导出类
+ */
+public class DdPaperStructDto {
+
+	/**
+	 * 课程代码
+	 */
+	private String code;
+	
+	/**
+	 * 课程名称
+	 */
+	private String name;
+	
+	/**
+	 * 大题名称
+	 */
+	private String detailName;
+	
+	/**
+	 * 大题来源
+	 */
+	private String quesNames;
+	
+	/**
+	 * 题目数量
+	 */
+	private int number;
+	
+	/**
+	 * 题型
+	 */
+	private String quesType;
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getDetailName() {
+		return detailName;
+	}
+
+	public void setDetailName(String detailName) {
+		this.detailName = detailName;
+	}
+
+	public String getQuesNames() {
+		return quesNames;
+	}
+
+	public void setQuesNames(String quesNames) {
+		this.quesNames = quesNames;
+	}
+
+	public int getNumber() {
+		return number;
+	}
+
+	public void setNumber(int number) {
+		this.number = number;
+	}
+
+	public String getQuesType() {
+		return quesType;
+	}
+
+	public void setQuesType(String quesType) {
+		this.quesType = quesType;
+	}
+	
+}

+ 7 - 1
examcloud-core-questions-starter/pom.xml

@@ -30,7 +30,13 @@
 		    <version>11.2.0.4.0-atlassian-hosted</version>
 		    <scope>test</scope>
 		</dependency>
-
+		
+		<dependency>
+            <groupId>com.github.xiaoymin</groupId>
+            <version>1.8.1</version>
+            <artifactId>swagger-bootstrap-ui</artifactId>
+        </dependency>
+		
 	</dependencies>
 
 	<build>

+ 32 - 0
examcloud-core-questions-starter/src/main/java/cn/com/qmth/examcloud/core/questions/starter/config/Swagger2.java

@@ -0,0 +1,32 @@
+package cn.com.qmth.examcloud.core.questions.starter.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.service.Contact;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+@Configuration
+@EnableSwagger2
+public class Swagger2 {
+
+	@Bean
+	public Docket createRestApi() {
+		return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
+				.apis(RequestHandlerSelectors.basePackage("cn.com.qmth")).paths(PathSelectors.any())
+				.build();
+	}
+
+	private ApiInfo apiInfo() {
+		return new ApiInfoBuilder().title("API doc")
+				.contact(new Contact("qmth", "http://www.qmth.com.cn/", "")).version("xxx")
+				.description("API文档").build();
+	}
+
+}

+ 13 - 0
examcloud-core-questions-starter/src/main/resources/security-exclusions.conf

@@ -6,6 +6,19 @@ regexp:.*/extractQues/.*
 regexp:.*/ecs_ques/checkObjective/.*
 regexp:.*/batch_export/.*
 
+regexp:.*swagger.*
+regexp:.*docs.*
+regexp:.*webjars.*
+
+[][/swagger/ui/index][GET]
+[/swagger-resources][][GET]
+[/swagger-resources][/configuration/ui][GET]
+[/swagger-resources][/configuration/security][GET]
+[][${springfox.documentation.swagger.v2.path:/v2/api-docs}][GET]
+[][/doc.html][GET]
+[][/swagger-ui.html][GET]
+[][/docs.html][GET]
+
 [${api_cqb}/][/paper/{paperId}][GET]
 [${api_cqb}/][/questionAudio/{questionAudioId}][GET]
 [${api_cqb}/][/extract/getAnswerHtml/{paperId}][GET]

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

@@ -108,7 +108,7 @@ public class DdCollegeUtilTest {
 	 public void excelTest(){
 		 try {
 			//ddExcelService.exporExcel("1627");
-			 ddExcelService.insertQueryName("1627");
+			 ddExcelService.exportPaperExcel("1627");
 		} catch (Exception e) {
 			e.printStackTrace();
 		}