liukangdong
2024-06-12 a11bc1bed7953b88213330582c2085f60b5a73b1
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
@@ -24,19 +24,19 @@
import com.doumee.core.utils.Utils;
import com.doumee.dao.admin.request.UpdateCompanySortDTO;
import com.doumee.dao.admin.response.CompanyDTO;
import com.doumee.dao.business.CompanyMapper;
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.join.CompanyJoinMapper;
import com.doumee.dao.business.model.Category;
import com.doumee.dao.business.dao.CompanyMapper;
import com.doumee.dao.business.dao.join.CompanyJoinMapper;
import com.doumee.dao.business.model.Company;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.vo.CompanyTree;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.CompanyService;
import com.doumee.dao.business.vo.CompanyTree;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.checkerframework.checker.units.qual.C;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -85,8 +85,10 @@
            user = company.getLoginUserInfo();
        }
        String rootOrgId = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_ROOTORG_CODE).getCode();
        company.setCompanyPath(company.getName());//名称路径
        company.setCompanyPath(company.getId()+"/");//名称路径
        company.setCompanyNamePath(company.getName());//名称路径
        company.setHkParentId(rootOrgId);
        String idPath = "";
        if(company.getParentId() !=null){
            Company parent = findById(company.getParentId());
            if(parent == null || Constants.equalsInteger(parent.getIsdeleted(),Constants.ONE)){
@@ -95,15 +97,23 @@
            if(StringUtils.isBlank(parent.getHkId())){
                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,父级组织信息尚未同步下发成功~");
            }
            company.setHkParentId(parent.getHkId());
            company.setCompanyPath(parent.getCompanyPath()+"/"+company.getName());
            if(Constants.equalsInteger(parent.getType(),Constants.ZERO)){
                //如果父级是相关方组织,下级不能建立内部组织
                if(Constants.equalsInteger(company.getType(),Constants.ONE)){
                    throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,相关方组织,下级不能建立内部组织~");
                }
            }
            idPath = parent.getCompanyPath();
            company.setCompanyPath(parent.getCompanyPath()+company.getId()+"/");
            company.setCompanyNamePath(parent.getCompanyNamePath()+"/"+company.getName());
        }
        company.setHkCompanyPath(company.getCompanyPath());
        company.setHkCompanyPath(company.getCompanyNamePath());
        company.setCreateDate(new Date());
        company.setCreator(user.getId());
        company.setIsdeleted(Constants.ZERO);
        company.setHkStatus(Constants.ONE);
        company.setStatus(Constants.ZERO);
        company.setSortnum(0);//默认最上面
        company.setHkDate(company.getCreateDate());
        company.setEditDate(company.getCreateDate());
        company.setEditor(company.getCreator());
@@ -113,6 +123,10 @@
        if(!addHkOrg(company)){
            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,组织同步下发失败,请稍后重试");
        }
        Company com = new Company();
        com.setId(company.getId());
        com.setCompanyPath(idPath+company.getId()+"/");
        companyMapper.updateById(com);
        return company.getId();
    }
@@ -273,8 +287,14 @@
        if(model == null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,组织信息不存在~");
        }
        if(StringUtils.isBlank(model.getHkId())){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,组织信息尚未同步下发成功,暂不支持修改,请尝试删除后重新添加~");
         if( Constants.equalsInteger(Constants.ONE,model.getType())&& Constants.equalsInteger(Constants.ZERO,company.getType())){
        //如果由内部组织切换成内部组织,排查下级组织是否有内部组织
             if(companyJoinMapper.selectCount(new QueryWrapper<Company>().lambda()
                     .eq(Company::getIsdeleted,Constants.ZERO )
                     .eq(Company::getType,Constants.ONE )
                     .likeRight(Company::getCompanyPath,company.getCompanyPath())) >0){
                 throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,下级部门存在内部组织,该部门不支持切换为相关方组织!~");
             }
        }
        company.setEditDate(new Date());
        company.setEditor(user.getId());
@@ -283,14 +303,19 @@
        company.setHkId(StringUtils.defaultString(model.getHkId(),UUID.randomUUID().toString().replace("-","")));
        company.setParentId(null);//不支持修改父级
        companyMapper.updateById(company);
        //更新的companyPath
        String newName = model.getCompanyNamePath().replace(model.getName(),company.getName());
        companyMapper.update(null,new UpdateWrapper<Company>().lambda()
                        .setSql("company_name_path=REPLACE(company_name_path,'"+ model.getCompanyNamePath()+"','"+newName+"')")
                        .setSql("hk_company_path=REPLACE(hk_company_path,'"+ model.getCompanyNamePath()+"','"+newName+"')")
                .likeRight(Company::getCompanyPath,model.getCompanyPath()));
        //下发海康安防平台
        if(StringUtils.isNotBlank(model.getHkId())
                && Constants.equalsObject(Constants.ONE,model.getHkStatus())){
             if(editHkOrg(company)){
        if(StringUtils.isNotBlank(model.getHkId())){
             if(!editHkOrg(company)){
                 throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,组织同步下发失败,请稍后重试");
             }
        }else{//如果没有下发过,直接新建安防平台组织
            if(addHkOrg(company)){
            if(!addHkOrg(company)){
                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,组织同步下发失败,请稍后重试");
            }
        }
@@ -545,11 +570,13 @@
        queryWrapper.selectAs(Member::getPhone,Company::getHeadPhone);
        queryWrapper.select("t1.name",Company::getParentName);
        queryWrapper.select("t1.company_path",Company::getParentCompanyPath);
        queryWrapper.select("t1.type",Company::getParentType);
        queryWrapper.leftJoin(Company.class,Company::getId,Company::getParentId);
        queryWrapper.leftJoin(Member.class,Member::getId,Company::getHeadId);
        queryWrapper.leftJoin(SystemUser.class,SystemUser::getId,Company::getEditor);
        queryWrapper.eq(Company::getIsdeleted,Constants.ZERO);
        queryWrapper.eq(type!=null,Company::getType,type);
        queryWrapper.orderByAsc(Company::getSortnum );
        List<Company> companyList = companyJoinMapper.selectJoinList(Company.class,queryWrapper);
        //配置组员人员类型来源方式 0自建 1ERP
        CompanyTree treeBuild = new CompanyTree(companyList, dataSyncConfig.getOrgUserDataOrigin());