xiatian 2 년 전
부모
커밋
de96c46493

+ 4 - 4
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/controller/CopyDataController.java

@@ -25,10 +25,10 @@ public class CopyDataController extends ControllerSupport {
 	//西交大数据复制
 	@GetMapping("data")
 	public void copyData(HttpServletResponse response) {
-//		Long fromRootOrgId = 371L;
-//		Long toRootOrgId = 21595L;
-		Long fromRootOrgId = 17283L;
-		Long toRootOrgId = 17288L;
+		Long fromRootOrgId = 371L;
+		Long toRootOrgId = 21595L;
+//		Long fromRootOrgId = 17283L;
+//		Long toRootOrgId = 17288L;
 		User user = getAccessUser();
 		if (!user.getRootOrgId().equals(toRootOrgId)) {
 			ServletUtil.returnJson("请求失败,没有权限", response);

+ 12 - 8
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/controller/ImportPaperController.java

@@ -1,7 +1,9 @@
 package cn.com.qmth.examcloud.core.questions.api.controller;
 
 import java.io.File;
+import java.util.Arrays;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import javax.validation.constraints.NotNull;
@@ -172,28 +174,30 @@ public class ImportPaperController extends ControllerSupport {
 		cqdxService.bulidPaper(dataFile, user, rootOrgId, paperNameSuffix, impType);
 		return new ResponseEntity<>(HttpStatus.OK);
 	}
-	
+
 	@ApiOperation(value = "云开导入前清理课程属性、试题属性")
 	@PostMapping(value = "/importYunkaiProp/clear")
-	public void importYunkaiPropClear(Long rootOrgId,@RequestParam String batch) {
+	public void importYunkaiPropClear(Long rootOrgId, @RequestParam String batch) {
 		yunkaiService.propClear(rootOrgId, batch);
 	}
 
 	@ApiOperation(value = "云开导入课程属性、试题属性")
 	@PostMapping(value = "/importYunkaiProp")
 	public void importYunkaiProp(@RequestPart @NotNull(message = "上传文件不能为空!") MultipartFile dataFile,
-			@RequestParam Long rootOrgId, @RequestParam String courseCode, @RequestParam String batch) {
+			@RequestParam Long rootOrgId, @RequestParam String courseCodes, @RequestParam String batch) {
 		User user = getAccessUser();
-		yunkaiService.saveProp(user, dataFile, rootOrgId, courseCode, batch);
+		List<String> cs = Arrays.asList(courseCodes.split(","));
+		yunkaiService.saveProp(user, dataFile, rootOrgId, cs, batch);
+
 	}
-	
+
 	@ApiOperation(value = "云开导入试卷")
 	@PostMapping(value = "/importYunkaiPaper")
 	public void importYunkaiPaper(@RequestPart @NotNull(message = "上传文件不能为空!") MultipartFile dataFile,
-			@RequestParam Long rootOrgId,@RequestParam String courseCode) {
+			@RequestParam Long rootOrgId, @RequestParam String courseCodes) {
 		User user = getAccessUser();
-		YunkaiImportPaperParam p=new YunkaiImportPaperParam(user, dataFile, rootOrgId, courseCode);
-		
+		List<String> cs = Arrays.asList(courseCodes.split(","));
+		YunkaiImportPaperParam p = new YunkaiImportPaperParam(user, dataFile, rootOrgId, cs);
 		yunkaiService.importYunkaiPaper(p);
 	}
 }

+ 15 - 13
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/yunkai/YunkaiImportPaperParam.java

@@ -1,5 +1,7 @@
 package cn.com.qmth.examcloud.core.questions.service.yunkai;
 
+import java.util.List;
+
 import org.springframework.web.multipart.MultipartFile;
 
 import cn.com.qmth.examcloud.api.commons.security.bean.User;
@@ -10,7 +12,7 @@ public class YunkaiImportPaperParam {
 	private User user;
 	private MultipartFile dataFile;
 	private Long rootOrgId;
-	private String courseCode;
+	private List<String> courseCodes;
 	private CourseProperty courseProperty;
 
 	private Course course;
@@ -39,20 +41,12 @@ public class YunkaiImportPaperParam {
 		this.rootOrgId = rootOrgId;
 	}
 
-	public String getCourseCode() {
-		return courseCode;
-	}
-
-	public void setCourseCode(String courseCode) {
-		this.courseCode = courseCode;
+	public List<String> getCourseCodes() {
+		return courseCodes;
 	}
 
-	public YunkaiImportPaperParam(User user, MultipartFile dataFile, Long rootOrgId, String courseCode) {
-		super();
-		this.user = user;
-		this.dataFile = dataFile;
-		this.rootOrgId = rootOrgId;
-		this.courseCode = courseCode;
+	public void setCourseCodes(List<String> courseCodes) {
+		this.courseCodes = courseCodes;
 	}
 
 	public Course getCourse() {
@@ -71,4 +65,12 @@ public class YunkaiImportPaperParam {
 		this.courseProperty = courseProperty;
 	}
 
+	public YunkaiImportPaperParam(User user, MultipartFile dataFile, Long rootOrgId, List<String> courseCodes) {
+		super();
+		this.user = user;
+		this.dataFile = dataFile;
+		this.rootOrgId = rootOrgId;
+		this.courseCodes = courseCodes;
+	}
+
 }

+ 99 - 89
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/yunkai/YunkaiService.java

@@ -46,7 +46,6 @@ import cn.com.qmth.examcloud.core.questions.dao.entity.QuesOption;
 import cn.com.qmth.examcloud.core.questions.dao.entity.QuesProperty;
 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.service.PaperService;
 import cn.com.qmth.examcloud.web.config.SystemProperties;
 
 @Component
@@ -58,8 +57,6 @@ public class YunkaiService {
 	@Autowired
 	private PaperRepo paperRepo;
 	@Autowired
-	private PaperService paperService;
-	@Autowired
 	private PaperDetailRepo paperDetailRepo;
 
 	@Autowired
@@ -71,12 +68,66 @@ public class YunkaiService {
 	private QuesTypeNameRepo quesTypeNameRepo;
 	@Autowired
 	private SystemProperties systemProperties;
-	
+
 	@Autowired
 	private PropertyRepo propertyRepo;
 
+	private void savePropOneCourse(User user, File zfile, Long rootOrgId, String courseCode, String batch) {
+		GetCourseReq req = new GetCourseReq();
+		req.setRootOrgId(rootOrgId);
+		req.setCode(courseCode);
+		GetCourseResp res = courseCloudService.getCourse(req);
+
+		CourseProperty cp = new CourseProperty();
+		cp.setCourseCode(courseCode);
+		cp.setCourseId(res.getCourseBean().getId());
+		cp.setCourseName(res.getCourseBean().getName());
+		cp.setEnable(true);
+		cp.setOrgId(rootOrgId);
+		cp.setName(res.getCourseBean().getName() + "课程属性" + batch);
+		cp.setBatch(batch);
+		coursePropertyRepo.save(cp);
+		String json;
+		try {
+			json = FileUtils.readFileToString(zfile, "utf-8");
+		} catch (IOException e) {
+			throw new StatusException("500", "文件读取出错", e);
+		}
+		List<PropertyDto> pds = JSON.parseArray(json, PropertyDto.class);
+		int num = 0;
+		for (PropertyDto pd : pds) {
+			num++;
+			Property p = new Property();
+			p.setCode(pd.getName());
+			p.setCoursePropertyId(cp.getId());
+			p.setName(pd.getName());
+			p.setNumber(num);
+			p.setOrgId(rootOrgId);
+			p.setParentId("0");
+			p.setFromId(pd.getId().toString());
+			propertyRepo.save(p);
+			if (CollectionUtils.isNotEmpty(pd.getSubPropertyDto())) {
+				int subnum = 0;
+				List<Property> ps = new ArrayList<>();
+				for (PropertyDto subpd : pd.getSubPropertyDto()) {
+					subnum++;
+					Property subp = new Property();
+					subp.setCode(subpd.getName());
+					subp.setCoursePropertyId(cp.getId());
+					subp.setName(subpd.getName());
+					subp.setNumber(subnum);
+					subp.setOrgId(rootOrgId);
+					subp.setParentId(p.getId());
+					subp.setFromId(subpd.getId().toString());
+					ps.add(subp);
+				}
+				propertyRepo.saveAll(ps);
+			}
+		}
+	}
+
 	@Transactional
-	public void saveProp(User user, MultipartFile dataFile, Long rootOrgId, String courseCode, String batch) {
+	public void saveProp(User user, MultipartFile dataFile, Long rootOrgId, List<String> courseCodes, String batch) {
 		String tempDir = systemProperties.getTempDataDir();
 		String dir = tempDir + File.separator + UUID.randomUUID() + File.separator;
 		try {
@@ -85,51 +136,8 @@ public class YunkaiService {
 			File zfile = new File(dir + dataFile.getOriginalFilename());
 			zfile.createNewFile();
 			dataFile.transferTo(zfile);
-			GetCourseReq req = new GetCourseReq();
-			req.setRootOrgId(rootOrgId);
-			req.setCode(courseCode);
-			GetCourseResp res = courseCloudService.getCourse(req);
-
-			CourseProperty cp = new CourseProperty();
-			cp.setCourseCode(courseCode);
-			cp.setCourseId(res.getCourseBean().getId());
-			cp.setCourseName(res.getCourseBean().getName());
-			cp.setEnable(true);
-			cp.setOrgId(rootOrgId);
-			cp.setName(res.getCourseBean().getName() + "课程属性" + batch);
-			cp.setBatch(batch);
-			coursePropertyRepo.save(cp);
-			String json = FileUtils.readFileToString(zfile, "utf-8");
-			List<PropertyDto> pds = JSON.parseArray(json, PropertyDto.class);
-			int num = 0;
-			for (PropertyDto pd : pds) {
-				num++;
-				Property p = new Property();
-				p.setCode(pd.getName());
-				p.setCoursePropertyId(cp.getId());
-				p.setName(pd.getName());
-				p.setNumber(num);
-				p.setOrgId(rootOrgId);
-				p.setParentId("0");
-				p.setFromId(pd.getId().toString());
-				propertyRepo.save(p);
-				if (CollectionUtils.isNotEmpty(pd.getSubPropertyDto())) {
-					int subnum = 0;
-					List<Property> ps = new ArrayList<>();
-					for (PropertyDto subpd : pd.getSubPropertyDto()) {
-						subnum++;
-						Property subp = new Property();
-						subp.setCode(subpd.getName());
-						subp.setCoursePropertyId(cp.getId());
-						subp.setName(subpd.getName());
-						subp.setNumber(subnum);
-						subp.setOrgId(rootOrgId);
-						subp.setParentId(p.getId());
-						subp.setFromId(subpd.getId().toString());
-						ps.add(subp);
-					}
-					propertyRepo.saveAll(ps);
-				}
+			for (String courseCode : courseCodes) {
+				savePropOneCourse(user, zfile, rootOrgId, courseCode, batch);
 			}
 		} catch (IOException e) {
 			throw new StatusException("500", "出错", e);
@@ -180,30 +188,33 @@ public class YunkaiService {
 	private void resolvingFile(File file, YunkaiImportPaperParam p) {
 		List<File> files = new ArrayList<>();
 		getPaperFile(file, files);
-		GetCourseReq req = new GetCourseReq();
-		req.setRootOrgId(p.getRootOrgId());
-		req.setCode(p.getCourseCode());
-		GetCourseResp res = courseCloudService.getCourse(req);
-		Course c=new Course();
-		c.setId(res.getCourseBean().getId().toString());
-		c.setCode(res.getCourseBean().getCode());
-		c.setEnable(res.getCourseBean().getEnable().toString());
-		c.setLevel(res.getCourseBean().getLevel());
-		c.setName(res.getCourseBean().getName());
-		c.setOrgId(res.getCourseBean().getRootOrgId().toString());
-		p.setCourse(c);
-		List<CourseProperty> cps=coursePropertyRepo.findByOrgIdAndCourseCodeAndEnable(p.getRootOrgId(),p.getCourseCode(), true);
-		if(CollectionUtils.isNotEmpty(cps)) {
-			p.setCourseProperty(cps.get(0));
-		}
-		for (File paperFile : files) {
-			KdPaper kpaper = JSONObject.parseObject(FileUtil.readFileContent(paperFile), KdPaper.class);
-			kpaper.setCourseCode(p.getCourseCode());
-			savePaper(kpaper,p);
+		for (String courseCode : p.getCourseCodes()) {
+			GetCourseReq req = new GetCourseReq();
+			req.setRootOrgId(p.getRootOrgId());
+			req.setCode(courseCode);
+			GetCourseResp res = courseCloudService.getCourse(req);
+			Course c = new Course();
+			c.setId(res.getCourseBean().getId().toString());
+			c.setCode(res.getCourseBean().getCode());
+			c.setEnable(res.getCourseBean().getEnable().toString());
+			c.setLevel(res.getCourseBean().getLevel());
+			c.setName(res.getCourseBean().getName());
+			c.setOrgId(res.getCourseBean().getRootOrgId().toString());
+			p.setCourse(c);
+			List<CourseProperty> cps = coursePropertyRepo.findByOrgIdAndCourseCodeAndEnable(p.getRootOrgId(),
+					courseCode, true);
+			if (CollectionUtils.isNotEmpty(cps)) {
+				p.setCourseProperty(cps.get(0));
+			}
+			for (File paperFile : files) {
+				KdPaper kpaper = JSONObject.parseObject(FileUtil.readFileContent(paperFile), KdPaper.class);
+				kpaper.setCourseCode(courseCode);
+				savePaper(kpaper, p);
+			}
 		}
 	}
 
-	private void savePaper(KdPaper kpaper,YunkaiImportPaperParam p) {
+	private void savePaper(KdPaper kpaper, YunkaiImportPaperParam p) {
 		int questionNum = 0;
 		Paper paper = initPaper(kpaper, p);
 		paper.setDifficultyDegree(0.5);
@@ -221,7 +232,8 @@ public class YunkaiService {
 				questionNum++;
 				Question question = initQuestion(que, p);
 				questions.add(question);
-				PaperDetailUnit paperDetailUnit = initPaperDetailUnit(paper, paperDetail, question, questionNum,p.getUser());
+				PaperDetailUnit paperDetailUnit = initPaperDetailUnit(paper, paperDetail, question, questionNum,
+						p.getUser());
 				paperDetailUnits.add(paperDetailUnit);
 			}
 		}
@@ -272,7 +284,6 @@ public class YunkaiService {
 		}
 	}
 
-
 	private Paper initPaper(KdPaper kpaper, YunkaiImportPaperParam p) {
 		int unitCount = 0;
 		for (KdDetail de : kpaper.getDetails()) {
@@ -301,7 +312,6 @@ public class YunkaiService {
 		return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
 	}
 
-
 	private PaperDetail initPaperDetail(KdDetail de, Paper paper) {
 		PaperDetail paperDetail = new PaperDetail();
 		if (de.getQuestions() != null && de.getQuestions().size() > 0) {
@@ -318,7 +328,7 @@ public class YunkaiService {
 		return paperDetail;
 	}
 
-	private Question initQuestion(KdQuestion que,YunkaiImportPaperParam p) {
+	private Question initQuestion(KdQuestion que, YunkaiImportPaperParam p) {
 		Question question = new Question();
 		question.setFromId(que.getId().toString());
 		question.setCreateTime(getCurDateTime());
@@ -326,10 +336,10 @@ public class YunkaiService {
 		question.setCourse(p.getCourse());
 		question.setOrgId(p.getRootOrgId().toString());
 		question.setHasAudio(false);
-		if(que.getDifficulty()==null) {
+		if (que.getDifficulty() == null) {
 			question.setDifficulty("易");
 			question.setDifficultyDegree(0.5);
-		}else {
+		} else {
 			question.setDifficulty(que.getDifficulty().getDesc());
 			question.setDifficultyDegree(que.getDifficulty().getType());
 		}
@@ -339,23 +349,23 @@ public class YunkaiService {
 		question.setCreateTime(getCurDateTime());
 		// 按试题分类初始化题干,答案,选项
 		initQuestionInfo(question, que);
-		initQuestionProp(question, que,p);
+		initQuestionProp(question, que, p);
 		return question;
 	}
-	
-	private void initQuestionProp(Question question, KdQuestion que,YunkaiImportPaperParam p) {
-		if(CollectionUtils.isEmpty(que.getPropIds())) {
+
+	private void initQuestionProp(Question question, KdQuestion que, YunkaiImportPaperParam p) {
+		if (CollectionUtils.isEmpty(que.getPropIds())) {
 			return;
 		}
-		List<QuesProperty> quesProperties=new ArrayList<>();
-		for(Long id:que.getPropIds()) {
-			Property prop=propertyRepo.findByCoursePropertyIdAndFromId(p.getCourseProperty().getId(),id.toString());
-			QuesProperty qp=new QuesProperty();
+		List<QuesProperty> quesProperties = new ArrayList<>();
+		for (Long id : que.getPropIds()) {
+			Property prop = propertyRepo.findByCoursePropertyIdAndFromId(p.getCourseProperty().getId(), id.toString());
+			QuesProperty qp = new QuesProperty();
 			quesProperties.add(qp);
 			qp.setCoursePropertyName(p.getCourseProperty().getName());
-			if("0".equals(prop.getParentId())) {
+			if ("0".equals(prop.getParentId())) {
 				qp.setFirstProperty(prop);
-			}else {
+			} else {
 				Property fprop = Model.of(propertyRepo.findById(prop.getParentId()));
 				qp.setFirstProperty(fprop);
 				qp.setSecondProperty(prop);
@@ -441,7 +451,7 @@ public class YunkaiService {
 			question.setQuestionType(QuesStructType.FILL_BLANK_QUESTION);
 			String answer = que.getAnswer();
 			question.setQuesAnswer(answer);
-		} else {//全是问答题
+		} else {// 全是问答题
 			String quesBody = que.getBody();
 			question.setQuesBody(quesBody);
 			question.setQuestionType(QuesStructType.TEXT_ANSWER_QUESTION);
@@ -460,7 +470,7 @@ public class YunkaiService {
 	}
 
 	private PaperDetailUnit initPaperDetailUnit(Paper paper, PaperDetail paperDetail, Question question,
-			int questionNum,User user) {
+			int questionNum, User user) {
 		PaperDetailUnit paperDetailUnit = new PaperDetailUnit();
 		paperDetailUnit.setPaper(paper);
 		paperDetailUnit.setNumber(questionNum);