package com.moral.service.impl;
|
|
import com.github.pagehelper.PageHelper;
|
import com.moral.common.bean.Constants;
|
import com.moral.common.bean.PageBean;
|
import com.moral.common.util.ExampleUtil;
|
import com.moral.common.util.ValidateUtil;
|
import com.moral.entity.Organization;
|
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 {
|
|
@Resource
|
private OrganizationMapper organizationMapper;
|
|
@Resource
|
private OrganizationRelationMapper organizationRelationMapper;
|
|
private static Class ENTITY_CLASS = Organization.class;
|
|
@Override
|
public Set<Integer> getChildOrganizationIds(Integer orgId){
|
Set<Integer> orgIds = new HashSet<Integer>();
|
orgIds.add(orgId);
|
OrganizationRelation relation = new OrganizationRelation();
|
relation.setParentId(orgId);
|
Organization organization = organizationMapper.selectByPrimaryKey(orgId);
|
if (IS_DELETE_FALSE.equals(organization.getIsDelete())) {
|
List<OrganizationRelation> organizationRelations = organizationRelationMapper.select(relation);
|
for (OrganizationRelation organizationRelation : organizationRelations) {
|
Set<Integer> organizationIds = getChildOrganizationIds(organizationRelation.getParentId());
|
orgIds.addAll(organizationIds);
|
}
|
}
|
return orgIds;
|
}
|
|
|
@Override
|
public List<Organization> getOrganizationsByAreaName(Map<String, Object> parameters) {
|
ValidateUtil.notNull(parameters.get("areaName"), "param.is.null");
|
List<Organization> organizations = organizationMapper.getOrganizationsByAreaName(parameters);
|
return organizations;
|
}
|
|
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",Constants.IS_DELETE_TRUE);
|
}
|
}else {
|
example.or().andNotEqualTo("isDelete",Constants.IS_DELETE_TRUE);
|
}
|
if(pageBean.getPageSize()>0){
|
PageHelper.startPage(pageBean.getPageIndex(),pageBean.getPageSize());
|
}
|
if(example.getOrderByClause().isEmpty()) {
|
example.setOrderByClause("create_time desc");
|
}
|
List<Organization> organizationList = organizationMapper.selectWithAreaNameByExample(example);
|
return new PageBean(organizationList);
|
}
|
public void addOrModify(Organization organization){
|
try{
|
if(organization.getId()==null){
|
//新建数据,默认为未删除状态
|
organization.setIsDelete(Constants.IS_DELETE_FALSE);
|
organizationMapper.insertSelective(organization);
|
}else{
|
organizationMapper.updateByPrimaryKeySelective(organization);
|
}
|
}
|
catch (Exception ex){
|
throw ex;
|
}
|
}
|
|
@Override
|
public void deleteByIds(Integer... ids) {
|
Organization organization = new Organization();
|
organization.setIsDelete(Constants.IS_DELETE_TRUE);
|
if(ids!=null&&ids.length>0){
|
if(ids.length==1){
|
organization.setId(ids[0]);
|
organizationMapper.updateByPrimaryKeySelective(organization);
|
}else{
|
Example example = new Example(ENTITY_CLASS);
|
example.or().andIn("id", Arrays.asList(ids));
|
organizationMapper.updateByExampleSelective(organization,example);
|
}
|
|
}
|
}
|
|
@Override
|
public List<Organization> getOrganizationsByName(String name) {
|
ValidateUtil.notEmpty(name, "param.is.null");
|
Example example = new Example(Organization.class);
|
Criteria criteria = example.createCriteria();
|
|
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;
|
}
|
|
}
|