123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303 |
- package com.huaxu.service.impl;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.huaxu.dao.OrgMapper;
- import com.huaxu.dto.OrgTree;
- import com.huaxu.entity.Org;
- import com.huaxu.model.LoginUser;
- import com.huaxu.model.ProgramItem;
- import com.huaxu.service.OrgService;
- import com.huaxu.util.UserUtil;
- import io.swagger.models.auth.In;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.util.*;
- import static com.google.common.collect.Lists.newArrayList;
- /**
- * 组织(Org表)服务实现类
- *
- * @author makejava
- * @since 2020-10-26 14:55:43
- */
- @Service("orgService")
- public class OrgServiceImpl implements OrgService {
- @Autowired
- private OrgMapper orgMapper;
- /**
- * 通过ID查询单条数据
- *
- * @param id 主键
- * @return 实例对象
- */
- @Override
- public Org selectById(Integer id) {
- return this.orgMapper.selectById(id);
- }
- /**
- * 查询所有
- *
- * @return 实例对象的集合
- */
- @Override
- public List<Org> selectAll() {
- return this.orgMapper.selectAll();
- }
- /**
- * 根据条件查询
- *
- * @return 实例对象的集合
- */
- @Override
- public List<Org> selectList(Org org) {
- return this.orgMapper.selectList(org);
- }
- /**
- * 新增数据
- *
- * @param org 实例对象
- * @return 实例对象
- */
- @Override
- public int insert(Org org) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- org.setTenantId(currentUser.getTenantId());
- org.setCreateBy(currentUser.getUsername());
- org.setDateCreate(new Date());
- org.setStatus(1);
- if(org.getParentOrgId()==null){
- org.setParentOrgId(0);
- }
- return this.orgMapper.insert(org);
- }
- /**
- * 批量新增
- *
- * @param orgs 实例对象的集合
- * @return 生效的条数
- */
- @Override
- public int batchInsert(List<Org> orgs) {
- return this.orgMapper.batchInsert(orgs);
- }
- /**
- * 修改数据
- *
- * @param org 实例对象
- * @return 实例对象
- */
- @Override
- public int update(Org org) {
- Org orgType = orgMapper.findOrgType(org);
- if(!orgType.getOrgType().equals(org.getOrgType())){
- if(orgType.getChildType()!=null&&org.getOrgType().equals("department")
- &&orgType.getChildType().equals("company")){
- return -2;
- }else if(orgType.getParentType()!=null&&org.getOrgType().equals("company")&&
- orgType.getParentType().equals("department")){
- return -3;
- }
- }
- //删除前先查询机构下是否还有用户
- LoginUser currentUser = UserUtil.getCurrentUser();
- org.setUpdateBy(currentUser.getUsername());
- return this.orgMapper.update(org);
- }
- /**
- * 通过主键删除数据
- *
- * @param id 主键
- * @return 是否成功
- */
- @Override
- public int deleteById(Integer id) {
- return this.orgMapper.deleteById(id);
- }
- @Override
- public List<String> deleteAll(List<Integer> ids) {
- List<String>fail=new ArrayList<>();
- ids.forEach(id->{
- Org org=new Org();
- org.setId(id);
- Org orgUser = orgMapper.findOrgUser(org);
- if(orgUser==null){
- org.setStatus(0);
- orgMapper.update(org);
- }else {
- fail.add(orgUser.getOrgName());
- }
- });
- return fail;
- }
- /**
- * 查询总数据数
- *
- * @return 数据总数
- */
- @Override
- public int count() {
- return this.orgMapper.count();
- }
- /**
- * 分页查询
- *
- * @return 对象列表
- */
- @Override
- public IPage<Org> selectPage(Org org, IPage<Org> page) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- org.setTenantId(currentUser.getTenantId());
- return this.orgMapper.selectPage(page, org);
- }
- @Override
- public List<OrgTree> getTrees(Org org) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- org.setTenantId(currentUser.getTenantId());
- /* Set<Integer>orgIds=new HashSet<>();
- List<ProgramItem> programItemList = currentUser.getProgramItemList();
- if(programItemList!=null){
- programItemList.forEach(programItem -> {
- orgIds.add(programItem.getOrgId());
- });
- }*/
- List<OrgTree> trees=orgMapper.selectTrees(org);
- trees=getOrgTree(trees,0,1);
- return trees;
- }
- @Override
- public List<OrgTree> getUserTrees(Org org) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- org.setTenantId(currentUser.getTenantId());
- Integer id=org.getId();
- org.setId(null);
- /* Set<Integer>orgIds=new HashSet<>();
- List<ProgramItem> programItemList = currentUser.getProgramItemList();
- if(programItemList!=null){
- programItemList.forEach(programItem -> {
- orgIds.add(programItem.getOrgId());
- });
- }*/
- List<OrgTree> trees=new ArrayList<>();
- if("company".equals(org.getOrgType())){
- if(currentUser.getDepartmentId()==null){
- trees=orgMapper.selectTrees(org);
- trees=getOrgTreeByOrg(trees,currentUser.getCompanyId());
- }else{
- org.setId(currentUser.getCompanyId());
- trees=orgMapper.selectTrees(org);
- }
- }else{
- if(currentUser.getDepartmentId()!=null){
- org.setOrgType("department");
- trees=orgMapper.selectTrees(org);
- trees=getOrgTreeByOrg(trees,currentUser.getDepartmentId());
- }else{
- trees=orgMapper.selectTrees(org);
- trees=getOrgDepartmentTree(trees,id);
- }
- }
- return trees;
- }
- List<OrgTree> getOrgTreeByOrg(List<OrgTree> trees,int id){
- OrgTree fatherOrgTree=new OrgTree();
- for (OrgTree tree : trees) {
- if(tree.getId()==id){
- fatherOrgTree=tree;
- break;
- }
- }
- trees=getOrgTree(trees,id,1);
- fatherOrgTree.setOrgs(trees);
- List<OrgTree> result=new ArrayList<>();
- result.add(fatherOrgTree);
- trees=result;
- return trees;
- }
- public List<OrgTree> getOrgTree(List<OrgTree> list, Integer id, Integer level) {
- List<OrgTree> temList = newArrayList();
- if (list != null) {
- for (OrgTree orgTree : list) {
- if (id.equals(orgTree.getParentOrgId())) {
- //拥有权限可以显示
- /* if(!set.contains(id)){
- orgTree.setDisplay(true);
- }*/
- List<OrgTree> chidren = getOrgTree(list, orgTree.getId(),level);
- OrgTree temPermission = new OrgTree();
- BeanUtils.copyProperties(orgTree, temPermission);
- temPermission.setOrgs(chidren);
- temList.add(temPermission);
- level--;
- }
- }
- }
- if (temList.size() > 0) {
- return temList;
- } else {
- return null;
- }
- }
- public List<OrgTree> getOrgDepartmentTree(List<OrgTree> list, Integer id) {
- List<OrgTree> temList = newArrayList();
- if (list != null) {
- for (OrgTree orgTree : list) {
- if (id.equals(orgTree.getParentOrgId())
- &&"department".equals(orgTree.getOrgType())) {
- List<OrgTree> chidren = getOrgDepartmentTree(list, orgTree.getId());
- OrgTree temPermission = new OrgTree();
- BeanUtils.copyProperties(orgTree, temPermission);
- temPermission.setOrgs(chidren);
- temList.add(temPermission);
- ;
- }
- }
- }
- if (temList.size() > 0) {
- return temList;
- } else {
- return null;
- }
- }
- }
|