From 2bfc4ed9012c5cae2a01bc67bdce68eeb59dc0b8 Mon Sep 17 00:00:00 2001 From: lizijie <lzjiiie@163.com> Date: Tue, 03 Sep 2019 13:38:19 +0800 Subject: [PATCH] 完善排名 --- src/main/java/com/moral/service/impl/OrganizationServiceImpl.java | 94 +++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 87 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java b/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java index 7b8d709..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,14 +28,9 @@ import com.moral.mapper.OrganizationMapper; import com.moral.mapper.OrganizationRelationMapper; import com.moral.service.OrganizationService; -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 static com.moral.common.bean.Constants.IS_DELETE_FALSE; @Service public class OrganizationServiceImpl implements OrganizationService { @@ -55,6 +68,7 @@ return organizations; } + @Override public PageBean queryByPageBean(PageBean pageBean){ Example example = ExampleUtil.generateExample(ENTITY_CLASS,pageBean); List<Example.Criteria> criteriaList = example.getOredCriteria(); @@ -84,12 +98,64 @@ }else{ organizationMapper.updateByPrimaryKey(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; } } - + @Transient + private void addOrModifyOrgRelation(Organization organization){ + OrganizationRelation relation = new OrganizationRelation(); + relation.setChildId(organization.getId()); + List<OrganizationRelation> relations = organizationRelationMapper.select(relation); + if(CollectionUtils.isEmpty(relations)){ + if (!ObjectUtils.isEmpty(organization.getParentId())) { + relation.setParentId(organization.getParentId()); + organizationRelationMapper.insert(relation); + } + }else{ + OrganizationRelation relationOfSelect = relations.get(0); + //��������������������������������������� + if(organization.getParentId() !=null && + !organization.getParentId().equals(relationOfSelect.getParentId()) + ) { + relationOfSelect.setParentId(organization.getParentId()); + organizationRelationMapper.updateByPrimaryKey(relationOfSelect); + }else if(organization.getParentId() ==null){ + //ParentI���null��������������������� + organizationRelationMapper.deleteByPrimaryKey(relationOfSelect.getId()); + } + //������������������ + if(relations.size()>1){ + relations.remove(0); + List<Integer> relationIds = relations.stream().map( + element->{ + return element.getId(); + } + ).collect(Collectors.toList()); + Example example = new Example(OrganizationRelation.class); + example.or().andIn("id",relationIds); + organizationRelationMapper.deleteByExample(example); + } + } + } @Override public void deleteByIds(Integer... ids) { Organization organization = new Organization(); @@ -127,4 +193,18 @@ List<Organization> organizationList = organizationMapper.selectWithAreaNameByExample(example); return organizationList.size()>0?organizationList.get(0):null; } + + @Override + public Organization getFatherOrg(int childId) { + OrganizationRelation relation = new OrganizationRelation(); + relation.setChildId(childId); + List<OrganizationRelation> relations = organizationRelationMapper.select(relation); + if (!CollectionUtils.isEmpty(relations)){ + OrganizationRelation relationOfSelect = relations.get(0); + if(relationOfSelect.getParentId()!=null){ + return organizationMapper.selectByPrimaryKey(relationOfSelect.getParentId()); + } + } + return null; + } } -- Gitblit v1.8.0