package com.ibeetl.admin.console.service; import java.util.ArrayList; import java.util.List; import org.beetl.sql.core.engine.PageQuery; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.ibeetl.admin.console.dao.OrgConsoleDao; import com.ibeetl.admin.core.entity.CoreOrg; import com.ibeetl.admin.core.entity.CoreUser; import com.ibeetl.admin.core.rbac.tree.OrgItem; import com.ibeetl.admin.core.service.CoreBaseService; import com.ibeetl.admin.core.service.CorePlatformService; import com.ibeetl.admin.core.util.PlatformException; /** * * @author : xiandafu */ @Service @Transactional public class OrgConsoleService extends CoreBaseService { @Autowired private OrgConsoleDao orgDao; @Autowired private CorePlatformService platformService; /** * 根据条件查询 * @param query */ public void queryByCondtion(PageQuery query) { orgDao.queryByCondtion(query); List list = query.getList(); queryListAfter(list); OrgItem root = platformService.buildOrg(); //处理父机构名称显示,没有用sql查询是考虑到跨数据库 for(CoreOrg org:list) { Long parentId = org.getParentOrgId(); OrgItem item = root.findChild(parentId); String name = item!=null?item.getName():""; org.set("parentOrgText", name); } } public void queryUserByCondition(PageQuery query) { orgDao.queryUserByCondtion(query); queryListAfter(query.getList()); } /** * 获取机构下面的所以机构 * @param orgId 机构id */ public List getAllChildIdsByOrgId(Long orgId) { if (orgId == null) return null; OrgItem orgItem = platformService.buildOrg().findChild(orgId); if (orgItem == null) { return null; } List ids = orgItem.findAllChildrenId(); if (ids == null) { ids = new ArrayList<>(); } ids.add(orgId); return ids; } @Override public boolean deleteById(List ids) { OrgItem root = platformService.buildOrg(); //检查子节点 for (Long id : ids) { OrgItem child = root.findChild(id); if(child != null && child.getChildren().size()!=0){ throw new PlatformException("不能删除 "+child.getOrg().getName()+",还包含子机构"); } } return super.deleteById(ids); } }