wangwei 7 years ago
parent
commit
4d9edc4224

+ 3 - 1
examcloud-core-basic-dao/src/main/java/cn/com/qmth/examcloud/core/basic/dao/OrgRepo.java

@@ -19,7 +19,9 @@ public interface OrgRepo
 
 	List<Org> findByRootId(Long rootId);
 
-	List<Org> findByParentIdAndNameLikeAndEnable(long parentId, String name, Boolean enable);
+	List<Org> findByParentIdAndNameLikeAndEnable(Long parentId, String name, Boolean enable);
+
+	Org findByParentIdAndCodeAndEnable(Long parentId, String code, Boolean enable);
 
 	List<Org> findByParentIdAndEnable(Long parentId, Boolean enable);
 

+ 78 - 74
examcloud-core-basic-service/src/main/java/cn/com/qmth/examcloud/core/basic/service/impl/OrgService.java

@@ -1,4 +1,5 @@
 package cn.com.qmth.examcloud.core.basic.service.impl;
+
 import static org.springframework.data.domain.ExampleMatcher.GenericPropertyMatchers.contains;
 
 import java.io.InputStream;
@@ -38,11 +39,11 @@ import cn.com.qmth.examcloud.core.basic.service.bean.OrgDto;
 @Service
 public class OrgService {
 
-    @Autowired
-    OrgRepo orgRepo;
+	@Autowired
+	OrgRepo orgRepo;
 
-    @Autowired
-    UserRepo userRepo;
+	@Autowired
+	UserRepo userRepo;
 
 	@Autowired
 	ExamSiteRepo examSiteRepo;
@@ -53,31 +54,33 @@ public class OrgService {
 	@Autowired
 	OrgMemRepo orgMemRepo;
 
-    @Transactional
+	@Transactional
 	public List<ExcelError> importLearnCenter(Long orgId, InputStream inputStream) {
 		ExcelReader excelReader = new ExcelReader(OrgDto.class);
-        List<ExcelError> excelErrors = excelReader.reader(inputStream, new ExcelReaderHandle() {
-            @Override
-            public ExcelError handle(Object obj) {
+		List<ExcelError> excelErrors = excelReader.reader(inputStream, new ExcelReaderHandle() {
+			@Override
+			public ExcelError handle(Object obj) {
 				OrgDto dto = (OrgDto) obj;
 				dto.setParentId(orgId);
 				dto.setRootId(orgId);
-                ExcelError error = importCheck(dto);
-                if (error == null) {
-                	saveOrgAndExamSite(dto);
-                }
-                return error;
-            }
-        });
+				ExcelError error = importCheck(dto);
+				if (error == null) {
+					saveOrgAndExamSite(dto);
+				}
+				return error;
+			}
+		});
 		return excelErrors;
 	}
 
 	/**
 	 * 保存学习中心和考点
+	 * 
 	 * @param orgDto
-     */
+	 */
 	private void saveOrgAndExamSite(OrgDto orgDto) {
-		Org org = orgRepo.findFirstByParentIdAndCode(orgDto.getParentId(), orgDto.getCode());
+		Org org = orgRepo.findByParentIdAndCodeAndEnable(orgDto.getParentId(), orgDto.getCode(),
+				true);
 		if (org == null) {
 
 			Org tempOrg = orgRepo.save(orgAssembler(orgDto));
@@ -93,13 +96,14 @@ public class OrgService {
 			orgRepo.save(org);
 
 			orgDto.setId(org.getId());
-			ExamSite examSite = examSiteRepo.findFirstByOrgIdAndCode(org.getId(), orgDto.getExamSiteCode());
+			ExamSite examSite = examSiteRepo.findFirstByOrgIdAndCode(org.getId(),
+					orgDto.getExamSiteCode());
 			if (examSite == null) {
 				examSiteRepo.save(examSiteAssembler(orgDto));
 			} else {
 				examSite.setName(orgDto.getExamSiteName());
-//				examSite.setContacts(orgDto.getContacts());
-//				examSite.setTelphone(orgDto.getTelphone());
+				// examSite.setContacts(orgDto.getContacts());
+				// examSite.setTelphone(orgDto.getTelphone());
 				examSiteRepo.save(examSite);
 			}
 		}
@@ -108,10 +112,12 @@ public class OrgService {
 
 	/**
 	 * 创建学习中心用户
+	 * 
 	 * @param tempOrg
-     */
-	private void createOrgUser(Org tempOrg){
-		UserEntity user = new UserEntity(tempOrg.getName(), UserScope.ORG, tempOrg.getRootId(), tempOrg.getId(), UserType.COMMON);
+	 */
+	private void createOrgUser(Org tempOrg) {
+		UserEntity user = new UserEntity(tempOrg.getName(), UserScope.ORG, tempOrg.getRootId(),
+				tempOrg.getId(), UserType.COMMON);
 		user.setLoginName(tempOrg.getCode());
 		user.setEnable(true);
 		user.setCreateTime(new Date());
@@ -122,7 +128,7 @@ public class OrgService {
 		userRepo.save(user);
 	}
 
-	private Org orgAssembler(OrgDto orgDto){
+	private Org orgAssembler(OrgDto orgDto) {
 		Org org = new Org();
 		org.setRootId(orgDto.getRootId());
 		org.setParentId(orgDto.getParentId());
@@ -131,40 +137,40 @@ public class OrgService {
 		org.setContacts(orgDto.getContacts());
 		org.setTelphone(orgDto.getTelphone());
 		org.setEnable(true);
-		//添加机构类型
+		// 添加机构类型
 		org.setType(OrgType.SCHOOL);
 		return org;
 	}
 
-	private ExamSite examSiteAssembler(OrgDto orgDto){
+	private ExamSite examSiteAssembler(OrgDto orgDto) {
 		ExamSite examSite = new ExamSite();
 		examSite.setCode(orgDto.getExamSiteCode());
 		examSite.setName(orgDto.getExamSiteName());
 		examSite.setOrgId(orgDto.getId());
-//		examSite.setContacts(orgDto.getContacts());
-//		examSite.setTelphone(orgDto.getTelphone());
+		// examSite.setContacts(orgDto.getContacts());
+		// examSite.setTelphone(orgDto.getTelphone());
 		examSite.setCreateTime(new Date());
 		examSite.setEnable(true);
 		return examSite;
 	}
 
 	private ExcelError importCheck(OrgDto dto) {
-		if(StringUtils.isBlank(dto.getCode())){
+		if (StringUtils.isBlank(dto.getCode())) {
 			return new ExcelError("中心代码不能为空");
 		}
-		if(StringUtils.isBlank(dto.getName())){
+		if (StringUtils.isBlank(dto.getName())) {
 			return new ExcelError("中心名称不能为空");
 		}
-		if(StringUtils.isBlank(dto.getExamSiteCode())){
+		if (StringUtils.isBlank(dto.getExamSiteCode())) {
 			return new ExcelError("考点代码不能为空");
 		}
-		if(StringUtils.isBlank(dto.getExamSiteName())){
+		if (StringUtils.isBlank(dto.getExamSiteName())) {
 			return new ExcelError("考点名称不能为空");
 		}
-		if(StringUtils.isBlank(dto.getContacts())){
+		if (StringUtils.isBlank(dto.getContacts())) {
 			return new ExcelError("联系人不能为空");
 		}
-		if(StringUtils.isBlank(dto.getTelphone())){
+		if (StringUtils.isBlank(dto.getTelphone())) {
 			return new ExcelError("联系电话不能为空");
 		}
 		return null;
@@ -172,6 +178,7 @@ public class OrgService {
 
 	/**
 	 * 启用/禁用机构;禁用机构时禁用该机构下的所有用户
+	 * 
 	 * @param id
 	 * @param enable
 	 * @return
@@ -181,7 +188,7 @@ public class OrgService {
 		Org org = orgRepo.findOne(id);
 		org.setEnable(enable);
 		orgRepo.save(org);
-		if(enable == false){
+		if (enable == false) {
 			List<UserEntity> users = userRepo.findByOrgId(id);
 			for (UserEntity user : users) {
 				user.setEnable(false);
@@ -192,87 +199,84 @@ public class OrgService {
 	}
 
 	public Page<Org> findAll(Org orgCriteria, Pageable pageable) {
-		if(orgCriteria.getType() == null){
+		if (orgCriteria.getType() == null) {
 			Specification<Org> specification = getSpecification(orgCriteria);
-			return orgRepo.findAll(specification,pageable);
+			return orgRepo.findAll(specification, pageable);
 		}
-		//orgCriteria.setType(OrgType.SCHOOL);
-		ExampleMatcher exampleMatcher = ExampleMatcher.matching()
-				.withMatcher("name", contains())
+		// orgCriteria.setType(OrgType.SCHOOL);
+		ExampleMatcher exampleMatcher = ExampleMatcher.matching().withMatcher("name", contains())
 				.withMatcher("code", contains());
-		Example<Org> examExamStudentple = Example.of(orgCriteria,
-				exampleMatcher);
+		Example<Org> examExamStudentple = Example.of(orgCriteria, exampleMatcher);
 		return orgRepo.findAll(examExamStudentple, pageable);
 	}
-	
+
 	private Specification<Org> getSpecification(Org orgCriteria) {
 		Specification<Org> specification = (root, query, cb) -> {
-		    List<Predicate> predicates = new ArrayList<>();
-		    if(!StringUtils.isEmpty(orgCriteria.getName())){
-		    	predicates.add(cb.equal(root.get("name"),orgCriteria.getName()));
-		    }
-		    if(!StringUtils.isEmpty(orgCriteria.getCode())){
-		    	predicates.add(cb.equal(root.get("code"),orgCriteria.getCode()));
-		    }
-		    predicates.add(cb.notEqual(root.get("type"), OrgType.SCHOOL));
-		    predicates.add(cb.equal(root.get("parentId"),orgCriteria.getParentId()));
-		    return cb.and(predicates.toArray(new Predicate[predicates.size()]));
+			List<Predicate> predicates = new ArrayList<>();
+			if (!StringUtils.isEmpty(orgCriteria.getName())) {
+				predicates.add(cb.equal(root.get("name"), orgCriteria.getName()));
+			}
+			if (!StringUtils.isEmpty(orgCriteria.getCode())) {
+				predicates.add(cb.equal(root.get("code"), orgCriteria.getCode()));
+			}
+			predicates.add(cb.notEqual(root.get("type"), OrgType.SCHOOL));
+			predicates.add(cb.equal(root.get("parentId"), orgCriteria.getParentId()));
+			return cb.and(predicates.toArray(new Predicate[predicates.size()]));
 		};
 		return specification;
 	}
 
 	public List<Org> findAll(Org orgCriteria) {
-		ExampleMatcher exampleMatcher = ExampleMatcher.matching()
-				.withMatcher("name", contains())
+		ExampleMatcher exampleMatcher = ExampleMatcher.matching().withMatcher("name", contains())
 				.withMatcher("code", contains());
-        Example<Org> examExample = Example.of(orgCriteria,exampleMatcher);
-        return orgRepo.findAll(examExample);
+		Example<Org> examExample = Example.of(orgCriteria, exampleMatcher);
+		return orgRepo.findAll(examExample);
 	}
 
-	public Org save(Org org){
-		checkCode(org.getParentId(),org.getCode());
+	public Org save(Org org) {
+		checkCode(org.getParentId(), org.getCode());
 		Org reOrg = orgRepo.save(org);
 		dataSendService.sendOrg(reOrg);
-		//删除缓存
+		// 删除缓存
 		orgMemRepo.remove(reOrg.getId());
 		return reOrg;
 	}
 
-	private void checkCode(Long parentId,String code) {
-		Org old = orgRepo.findFirstByParentIdAndCode(parentId,code);
-		if(old!=null){
+	private void checkCode(Long parentId, String code) {
+		Org old = orgRepo.findFirstByParentIdAndCode(parentId, code);
+		if (old != null) {
 			throw new RuntimeException("代码已存在");
 		}
 	}
 
 	public Org update(Long id, Org org) {
 		Org old = orgRepo.findOne(id);
-		if(!old.getCode().equals(org.getCode())){
-			checkCode(org.getParentId(),org.getCode());
+		if (!old.getCode().equals(org.getCode())) {
+			checkCode(org.getParentId(), org.getCode());
 		}
 		org.setUpdateTime(new Date());
 		Org reOrg = orgRepo.save(org);
 		dataSendService.sendOrg(reOrg);
-		//删除缓存
+		// 删除缓存
 		orgMemRepo.remove(reOrg.getId());
 		return reOrg;
 	}
 
-	public Org findOne(Long id){
+	public Org findOne(Long id) {
 		Org cacheOrg = orgMemRepo.get(id);
-		if(cacheOrg != null){
+		if (cacheOrg != null) {
 			return cacheOrg;
-		}else{
+		} else {
 			Org org = orgRepo.findOne(id);
-			if(org != null){
-				orgMemRepo.set(id,org);
+			if (org != null) {
+				orgMemRepo.set(id, org);
 			}
 			return org;
 		}
 	}
-	
-	public Org findFirstByParentIdAndCode(Long parentId,String code){
+
+	public Org findFirstByParentIdAndCode(Long parentId, String code) {
 		return orgRepo.findFirstByParentIdAndCode(parentId, code);
 	}
-	
+
 }