Browse Source

1.导入时:相同大题合并
2.修改同一级属性下,名称不能相同的bug

weiwenhai 7 năm trước cách đây
mục cha
commit
a1b51f4ca5

+ 10 - 0
cqb-paper/src/main/java/com/qmth/cqb/paper/model/Paper.java

@@ -68,6 +68,8 @@ public class Paper implements Serializable {
     private Specialty specialty;
     
     private Double difficultyDegree ; //难度系数
+    
+    private String sameName; //相同大题名 0:不合并,1:合并
 
     public static long getSerialVersionUID() {
         return serialVersionUID;
@@ -244,5 +246,13 @@ public class Paper implements Serializable {
 	public void setDifficultyDegree(Double difficultyDegree) {
 		this.difficultyDegree = difficultyDegree;
 	}
+
+	public String getSameName() {
+		return sameName;
+	}
+
+	public void setSameName(String sameName) {
+		this.sameName = sameName;
+	}
 	
 }

+ 28 - 0
cqb-paper/src/main/java/com/qmth/cqb/paper/service/ImportPaperService.java

@@ -160,6 +160,10 @@ public class ImportPaperService {
         	checkUnitNum(paperDetailUnits,importPaperCheck);
         	//校验答案是否不全
         	checkAnswerISfull(paperDetailUnits,importPaperCheck);
+        	//如果合并相同的大题
+            if(paper.getSameName().equals("1")){
+            	paperDetails = mergePaperDetails(paperDetails,paperDetailUnits);
+            }
             tempPaper = paperRepo.save(paper);
         }
         if (paperDetails!=null&&paperDetails.size() > 0) {
@@ -181,6 +185,30 @@ public class ImportPaperService {
     }
 
     /**
+     * 合并相同大题
+     * @param paperDetails
+     * @param paperDetailUnits
+     * @return
+     */
+    private List<PaperDetail> mergePaperDetails(List<PaperDetail> paperDetails,List<PaperDetailUnit> paperDetailUnits) {
+    	List<PaperDetail> mergePaperDetails = new ArrayList<PaperDetail>();
+    	Set<String> set = new  HashSet<String>(); 
+    	for(PaperDetail paperDetail:paperDetails){
+            if(set.add(paperDetail.getName())){
+            	mergePaperDetails.add(paperDetail);
+            }
+    	}
+    	for(PaperDetail mergePaperDetail:mergePaperDetails){
+    		for(PaperDetailUnit mergePaperDetailUnit:paperDetailUnits){
+    			if(mergePaperDetailUnit.getPaperDetail().getName().equals(mergePaperDetail.getName())){
+    				mergePaperDetailUnit.setPaperDetail(mergePaperDetail);
+    			}
+    		}
+    	}
+    	return mergePaperDetails;
+	}
+
+	/**
      * 清空试卷对象,加速回收
      * @param paper
      * @param paperDetails

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

@@ -19,5 +19,8 @@ public interface PropertyRepo extends JpaRepository<Property, Long>, QueryByExam
 	
 	//查询子节点
 	List<Property> findByParentIdOrderByNumber(Long parentId);
+	
+	//根据课程属性id,一级id,属性名称查询
+	Property findByOrgIdAndCoursePropertyIdAndParentIdAndName(Long orgId, Long coursePropertyId, Long parentId, String name);
 
 }

+ 1 - 1
cqb-question-resource/src/main/java/com/qmth/cqb/question/service/PropertyService.java

@@ -33,7 +33,7 @@ public interface PropertyService {
 	 * @param property
 	 * @param user
 	 */
-	public void saveProperty(Property property, AccessUser user);
+	public void saveProperty(Property property, AccessUser user) throws Exception;
 	
 	/**
 	 * 删除属性

+ 17 - 1
cqb-question-resource/src/main/java/com/qmth/cqb/question/service/impl/PropertyServiceImpl.java

@@ -69,14 +69,30 @@ public class PropertyServiceImpl implements PropertyService{
 	}
 
 	@Override
-	public void saveProperty(Property property, AccessUser user) {
+	public void saveProperty(Property property, AccessUser user) throws Exception {
+		//新增
 		if(property.getId() == null){
+			//检查是否重名
+			Property sameName = propertyRepo.findByOrgIdAndCoursePropertyIdAndParentIdAndName(user.getRootOrgId(), property.getCoursePropertyId(), property.getParentId(), property.getName());
+			if(sameName != null){
+				throw new Exception("属性名已经存在");
+			}
 			Integer number = 0;
 			List<Property> propertieParents = propertyRepo.findByOrgIdAndCoursePropertyIdAndParentIdOrderByNumber(user.getRootOrgId(), property.getCoursePropertyId(), property.getParentId());
 			if(propertieParents != null && propertieParents.size()>0){
 				number = propertieParents.get(propertieParents.size()-1).getNumber();
 			}
 			property.setNumber(number+1);
+		}else{
+			//得到原来的对象
+			Property propertyOld = propertyRepo.findOne(property.getId());
+			if(!propertyOld.getName().equals(property.getName())){
+				//检查是否重名
+				Property sameName = propertyRepo.findByOrgIdAndCoursePropertyIdAndParentIdAndName(user.getRootOrgId(), property.getCoursePropertyId(), property.getParentId(), property.getName());
+				if(sameName != null){
+					throw new Exception("属性名已经存在");
+				}
+			}
 		}
 		property.setOrgId(user.getRootOrgId());
 		propertyRepo.save(property);

+ 14 - 4
cqb-question-resource/src/main/java/com/qmth/cqb/question/web/PropertyController.java

@@ -43,8 +43,13 @@ public class PropertyController {
 	public ResponseEntity<Object> saveProperty(HttpServletRequest request, @RequestBody Property property){
 		AccessUser accessUser = (AccessUser)request.getAttribute("accessUser");
 		if(accessUser != null){
-			propertyService.saveProperty(property, accessUser);
-			return new ResponseEntity<Object>(HttpStatus.OK);
+			try {
+				propertyService.saveProperty(property, accessUser);
+				return new ResponseEntity<Object>(HttpStatus.OK);
+			} catch (Exception e) {
+				e.printStackTrace();
+				return new ResponseEntity<Object>(HttpStatus.INTERNAL_SERVER_ERROR);
+			}
 		}
 		return new ResponseEntity<Object>(HttpStatus.NOT_FOUND);
 	}
@@ -65,8 +70,13 @@ public class PropertyController {
 	public ResponseEntity<Object> updateProperty(HttpServletRequest request, @RequestBody Property property){
 		AccessUser accessUser = (AccessUser)request.getAttribute("accessUser");
 		if(accessUser != null){
-			propertyService.saveProperty(property, accessUser);
-			return new ResponseEntity<Object>(HttpStatus.OK);
+			try {
+				propertyService.saveProperty(property, accessUser);
+				return new ResponseEntity<Object>(HttpStatus.OK);
+			} catch (Exception e) {
+				e.printStackTrace();
+				return new ResponseEntity<Object>(HttpStatus.INTERNAL_SERVER_ERROR);
+			}
 		}
 		return new ResponseEntity<Object>(HttpStatus.NOT_FOUND);
 	}