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 | 133 ++++++++++++++++++++++++++++++++++++++------ 1 files changed, 114 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java b/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java index fc181d0..da6e198 100644 --- a/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java +++ b/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java @@ -1,24 +1,36 @@ 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; -import com.moral.entity.exp.OrganizationExp; import com.moral.entity.OrganizationRelation; 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 { @@ -41,7 +53,7 @@ if (IS_DELETE_FALSE.equals(organization.getIsDelete())) { List<OrganizationRelation> organizationRelations = organizationRelationMapper.select(relation); for (OrganizationRelation organizationRelation : organizationRelations) { - Set<Integer> organizationIds = getChildOrganizationIds(organizationRelation.getParentId()); + Set<Integer> organizationIds = getChildOrganizationIds(organizationRelation.getChildId()); orgIds.addAll(organizationIds); } } @@ -56,39 +68,98 @@ return organizations; } + @Override public PageBean queryByPageBean(PageBean pageBean){ Example example = ExampleUtil.generateExample(ENTITY_CLASS,pageBean); List<Example.Criteria> criteriaList = example.getOredCriteria(); if(criteriaList!=null&&criteriaList.size()>0){ for(Example.Criteria cri : criteriaList){ - cri.andNotEqualTo("isDelete","1"); + cri.andNotEqualTo("isDelete",Constants.IS_DELETE_TRUE); } }else { - example.or().andNotEqualTo("isDelete","1"); + example.or().andNotEqualTo("isDelete",Constants.IS_DELETE_TRUE); } - PageHelper.startPage(pageBean.getPageIndex(),pageBean.getPageSize()); - List<OrganizationExp> organizationExpandList = organizationMapper.selectWithAreaNameByExample(example); - return new PageBean(organizationExpandList); + if(pageBean.getPageSize()>0){ + PageHelper.startPage(pageBean.getPageIndex(),pageBean.getPageSize()); + } + if(example.getOrderByClause() == null || example.getOrderByClause().isEmpty()) { + example.setOrderByClause("create_time desc"); + } + List<Organization> organizationList = organizationMapper.selectWithAreaNameByExample(example); + return new PageBean(organizationList); } + @Override public void addOrModify(Organization organization){ try{ if(organization.getId()==null){ //��������������������������������������� - organization.setIsDelete("0"); + organization.setIsDelete(Constants.IS_DELETE_FALSE); organizationMapper.insertSelective(organization); }else{ - organizationMapper.updateByPrimaryKeySelective(organization); + 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(); - organization.setIsDelete("1"); + organization.setIsDelete(Constants.IS_DELETE_TRUE); if(ids!=null&&ids.length>0){ if(ids.length==1){ organization.setId(ids[0]); @@ -104,12 +175,36 @@ @Override public List<Organization> getOrganizationsByName(String name) { + ValidateUtil.notEmpty(name, "param.is.null"); Example example = new Example(Organization.class); Criteria criteria = example.createCriteria(); - criteria.andLike("name", "%" + name + "%"); - criteria.andEqualTo("isDelete", Constants.IS_DELETE_FALSE); + + criteria.andEqualTo("isDelete", Constants.IS_DELETE_FALSE).andLike("name", "%" + name + "%"); + example.or().andEqualTo("isDelete", Constants.IS_DELETE_FALSE).andCondition("getPY(name) like ", "%" + name + "%"); + List<Organization> organizations = organizationMapper.selectByExample(example); return organizations; } + @Override + public Organization getOrganizationById(int id) { + Example example = new Example(ENTITY_CLASS); + example.or().andEqualTo("id",id); + 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