lizijie
2019-09-03 2bfc4ed9012c5cae2a01bc67bdce68eeb59dc0b8
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);
            //当关系发生修改时,更新关系