MrShi
2025-08-19 ff087240b3dee29ce4e14ad0836e76b9fdf312cf
server/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
@@ -1,5 +1,6 @@
package com.doumee.service.business.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -15,7 +16,9 @@
import com.doumee.core.utils.qiyeweixin.QywxUtil;
import com.doumee.core.utils.qiyeweixin.model.response.QywxDepartInfoResponse;
import com.doumee.dao.business.CompanyMapper;
import com.doumee.dao.business.CompanyMemberMapper;
import com.doumee.dao.business.model.Company;
import com.doumee.dao.business.model.CompanyMember;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.vo.CompanyTree;
import com.doumee.dao.system.model.SystemUser;
@@ -24,9 +27,12 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -40,8 +46,12 @@
@Service
public class CompanyServiceImpl implements CompanyService {
    @Resource(name="sessionRedisTemplate")
    private RedisTemplate<Object, Serializable> redisTemplate;
    @Autowired
    private CompanyMapper companyMapper;
    @Autowired
    private CompanyMemberMapper companyMemberMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
@@ -98,8 +108,21 @@
    @Override
    public List<Company> findList(Company company) {
        QueryWrapper<Company> wrapper = new QueryWrapper<>(company);
        return companyMapper.selectList(wrapper);
        MPJLambdaWrapper<Company> wrapper = new MPJLambdaWrapper<Company>();
        wrapper.selectAll(Company.class )
                .select(" (select count(1) from company t1 where t1.isdeleted=0 and t1.parent_id = t.id )",Company::getChildNum)
                .isNull(company.getParentId()==null,Company::getParentId)
                .eq(company.getParentId()!=null,Company::getParentId,company.getParentId())
                .eq(Company::getIsdeleted,Constants.ZERO)
                .orderByAsc(Company::getName);
        List<Company> companyList = companyMapper.selectJoinList(Company.class,wrapper);
        if(companyList.size()>0){
            for (Company c : companyList){
                c.setHasChildren(Constants.formatIntegerNum(c.getChildNum())>0);
            }
        }
        return  companyList;
    }
  
    @Override
@@ -146,6 +169,9 @@
    @Override
    public List<Company> companyTree( ) {
        return companyTreeBiz(0);
    }
    public List<Company> companyTreeBiz(int type ) {
        MPJLambdaWrapper<Company> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Company.class);
        queryWrapper.selectAs(SystemUser::getUsername,Company::getEditorName);
@@ -154,12 +180,26 @@
        queryWrapper.leftJoin(Company.class,Company::getId,Company::getParentId);
        queryWrapper.leftJoin(SystemUser.class,SystemUser::getId,Company::getEditor);
        queryWrapper.eq(Company::getIsdeleted,Constants.ZERO);
        queryWrapper.orderByAsc( "t.code");
        queryWrapper.orderByAsc( "t.name");
        List<Company> companyList = companyMapper.selectJoinList(Company.class,queryWrapper);
        CompanyTree treeBuild = new CompanyTree(companyList, 0);
        List<CompanyMember> memberList = null;
        if(type == 1){
            memberList = companyMemberMapper.selectJoinList(CompanyMember.class,new MPJLambdaWrapper<CompanyMember>()
                    .selectAll(CompanyMember.class)
                    .selectAs(Member::getName,CompanyMember::getMemberName)
                    .leftJoin(Member.class,Member::getId,CompanyMember::getMemberId)
                    .eq(Member::getIsdeleted,Constants.ZERO )
                    .eq(CompanyMember::getIsdeleted,Constants.ZERO )
                    .orderByAsc(Member::getName));
        }
        CompanyTree treeBuild = new CompanyTree(companyList, 0,memberList);
        companyList = treeBuild.buildTree();
        return companyList;
    }
    @Override
    public List<Company> companyTreeWithMember() {
        return companyTreeBiz(1);
    }
    @Override
    public int syncAll(Company company) {