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 getChildOrganizationIds(Integer orgId){ Set orgIds = new HashSet(); orgIds.add(orgId); OrganizationRelation relation = new OrganizationRelation(); relation.setParentId(orgId); Organization organization = organizationMapper.selectByPrimaryKey(orgId); if (IS_DELETE_FALSE.equals(organization.getIsDelete())) { List organizationRelations = organizationRelationMapper.select(relation); for (OrganizationRelation organizationRelation : organizationRelations) { Set organizationIds = getChildOrganizationIds(organizationRelation.getParentId()); orgIds.addAll(organizationIds); } } return orgIds; } @Override public List getOrganizationsByAreaName(Map parameters) { ValidateUtil.notNull(parameters.get("areaName"), "param.is.null"); List organizations = organizationMapper.getOrganizationsByAreaName(parameters); return organizations; } public PageBean queryByPageBean(PageBean pageBean){ Example example = ExampleUtil.generateExample(ENTITY_CLASS,pageBean); List 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() == null || example.getOrderByClause().isEmpty()) { example.setOrderByClause("create_time desc"); } List 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 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 organizations = organizationMapper.selectByExample(example); return organizations; } }