From b9c7bd2fd2953d13b24efdc2d0289dc70c0705ee Mon Sep 17 00:00:00 2001
From: xufenglei <xufenglei>
Date: Mon, 12 Aug 2019 10:55:09 +0800
Subject: [PATCH] update

---
 src/main/java/com/moral/service/impl/OrganizationServiceImpl.java |   53 ++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 40 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java b/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java
index 2dca7d1..da6e198 100644
--- a/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java
@@ -1,8 +1,26 @@
 package com.moral.service.impl;
 
+import static com.moral.common.bean.Constants.IS_DELETE_FALSE;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import javax.annotation.Resource;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.data.annotation.Transient;
+import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+
+import com.alibaba.fastjson.JSON;
 import com.github.pagehelper.PageHelper;
 import com.moral.common.bean.Constants;
 import com.moral.common.bean.PageBean;
+import com.moral.common.exception.BusinessException;
 import com.moral.common.util.ExampleUtil;
 import com.moral.common.util.ValidateUtil;
 import com.moral.entity.Organization;
@@ -10,17 +28,9 @@
 import com.moral.mapper.OrganizationMapper;
 import com.moral.mapper.OrganizationRelationMapper;
 import com.moral.service.OrganizationService;
-import org.apache.commons.collections.CollectionUtils;
-import org.springframework.data.annotation.Transient;
-import org.springframework.stereotype.Service;
+
 import tk.mybatis.mapper.entity.Example;
 import tk.mybatis.mapper.entity.Example.Criteria;
-
-import javax.annotation.Resource;
-import java.util.*;
-import java.util.stream.Collectors;
-
-import static com.moral.common.bean.Constants.IS_DELETE_FALSE;
 
 @Service
 public class OrganizationServiceImpl implements OrganizationService {
@@ -88,8 +98,23 @@
 			}else{
 				organizationMapper.updateByPrimaryKey(organization);
 			}
-			//���������������������
-			addOrModifyOrgRelation(organization);
+			if(organization.getId()!=null && !organization.getId().equals(organization.getParentId())){
+				List<Integer> orgIds = organizationMapper.selectLowerOrgIds(organization.getId());
+				boolean isChild = orgIds.stream().anyMatch(
+						item -> {
+							return item!=null && item.equals(organization.getParentId());
+						}
+				);
+				// ������������������������������������������������������������
+				if(!isChild){
+					//���������������������
+					addOrModifyOrgRelation(organization);
+				}else{
+					throw new BusinessException("cannot set the children as father,organization:"+ JSON.toJSONString(organization));
+				}
+			}else {
+				throw new BusinessException("id of organization can't equal to it's parentId,organization:"+ JSON.toJSONString(organization));
+			}
 		}
 		catch (Exception ex){
 			throw  ex;
@@ -101,8 +126,10 @@
     	relation.setChildId(organization.getId());
     	List<OrganizationRelation> relations =  organizationRelationMapper.select(relation);
     	if(CollectionUtils.isEmpty(relations)){
-    		relation.setParentId(organization.getParentId());
-			organizationRelationMapper.insert(relation);
+    		if (!ObjectUtils.isEmpty(organization.getParentId())) {
+    			relation.setParentId(organization.getParentId());
+    			organizationRelationMapper.insert(relation);
+			}
 		}else{
 				OrganizationRelation relationOfSelect = relations.get(0);
 				//���������������������������������������

--
Gitblit v1.8.0