feat(department): 添加根据企业类型和企业ID集合查询部门树功能

dev_change_0814
zhaokai 2026-08-17 14:05:47 +08:00
parent 961bf60ad6
commit 16c316dc36
13 changed files with 101 additions and 6 deletions

View File

@ -3,8 +3,8 @@ spring:
import: import:
# - classpath:nacos.yml # - classpath:nacos.yml
# - classpath:sdk.yml # - classpath:sdk.yml
# - classpath:nacos-prod.yml - classpath:nacos-prod.yml
# - classpath:sdk-prod.yml - classpath:sdk-prod.yml
- classpath:nacos-prod2.yml # - classpath:nacos-prod2.yml
- classpath:sdk-prod2.yml # - classpath:sdk-prod2.yml
- classpath:swagger.yml - classpath:swagger.yml

View File

@ -2,6 +2,7 @@ package com.zcloud.basic.info.facade;
import com.alibaba.cola.dto.MultiResponse; import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse; import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.basic.info.api.CorpInfoServiceI; import com.zcloud.basic.info.api.CorpInfoServiceI;
import com.zcloud.basic.info.command.convertor.CorpInfoCoConvertor; import com.zcloud.basic.info.command.convertor.CorpInfoCoConvertor;
@ -86,4 +87,9 @@ public class ZcloudCorpFacadeImpl implements ZcloudCorpFacade {
return MultiResponse.of(CorpTypeEnum.getCodesByEnterpriseType(enterpriseType)); return MultiResponse.of(CorpTypeEnum.getCodesByEnterpriseType(enterpriseType));
} }
@Override
public Response saveAdminCorp() {
return null;
}
} }

View File

@ -104,6 +104,12 @@ public class DepartmentController {
return MultiResponse.of(departmentService.listAllTreeByCorpType(qry)); return MultiResponse.of(departmentService.listAllTreeByCorpType(qry));
} }
@ApiOperation("所有企业下部门树状所有数据根据企业类型和企业id集合")
@PostMapping("/listAllTreeByCorpTypeAndCorpIds")
public MultiResponse<DepartmentTreeInfoCO> listAllTreeByCorpTypeAndCorpIds(@RequestBody DepartmentTreeCorpQry qry) {
return MultiResponse.of(departmentService.listAllTreeByCorpTypeAndCorpIds(qry));
}
} }

View File

@ -10,6 +10,7 @@ import com.jjb.saas.system.client.dept.facade.DeptFacade;
import com.jjb.saas.system.client.role.facade.RoleFacade; import com.jjb.saas.system.client.role.facade.RoleFacade;
import com.jjb.saas.system.client.role.response.RoleCO; import com.jjb.saas.system.client.role.response.RoleCO;
import com.jjb.saas.system.client.user.facade.UserFacade; import com.jjb.saas.system.client.user.facade.UserFacade;
import com.zcloud.basic.info.domain.enums.UserRZFlagEnum;
import com.zcloud.basic.info.domain.gateway.DepartmentGateway; import com.zcloud.basic.info.domain.gateway.DepartmentGateway;
import com.zcloud.basic.info.domain.gateway.PostGateway; import com.zcloud.basic.info.domain.gateway.PostGateway;
import com.zcloud.basic.info.domain.gateway.UserEmploymentLogGateway; import com.zcloud.basic.info.domain.gateway.UserEmploymentLogGateway;
@ -410,6 +411,7 @@ public class UserImportExe {
user.setPhone(importEntity.getUsername()); user.setPhone(importEntity.getUsername());
user.setUserType(corpFlag); user.setUserType(corpFlag);
user.setMainCorpFlag(0); user.setMainCorpFlag(0);
user.setRzFlag(UserRZFlagEnum.YES.getCode());
user.setRoleId(roleId); user.setRoleId(roleId);
user.setDepartmentId(departmentId); user.setDepartmentId(departmentId);
user.setPostId(postId); user.setPostId(postId);

View File

@ -2,6 +2,7 @@ package com.zcloud.basic.info.command.query;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.exception.BizException;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jjb.saas.framework.auth.utils.AuthContext; import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.basic.info.command.convertor.DepartmentCoConvertor; import com.zcloud.basic.info.command.convertor.DepartmentCoConvertor;
@ -201,6 +202,30 @@ public class DepartmentQueryExe {
return result2; return result2;
} }
public Collection<DepartmentTreeInfoCO> listAllTreeByCorpTypeAndCorpIds(DepartmentTreeCorpQry qry) {
Map<String, Object> params = PageQueryHelper.toHashMap(qry);
List<Integer> enterpriseType = CorpTypeEnum.getCodesByEnterpriseType(qry.getEnterpriseType());
if (CollUtil.isNotEmpty(enterpriseType)) {
params.put("inType", enterpriseType);
}
if (CollUtil.isNotEmpty(qry.getCorpinfoIdList())) {
try {
List<Long> corpinfoIdList = qry.getCorpinfoIdList().stream()
.map(StringUtils::trim)
.map(Long::valueOf)
.collect(Collectors.toList());
params.put("corpinfoIdList", corpinfoIdList);
} catch (NumberFormatException e) {
throw new BizException("企业id格式错误");
}
}
List<DepartmentDO> pageResponse = departmentRepository.listAllTreeByCorpTypeAndCorpIds(params);
if (CollUtil.isEmpty(pageResponse)) {
return Collections.emptyList();
}
return getDepartmentAllTree(pageResponse);
}
public Collection<DepartmentTreeInfoCO> listTreeNopermission(DepartmentTreeQry departmentQry) { public Collection<DepartmentTreeInfoCO> listTreeNopermission(DepartmentTreeQry departmentQry) {
if (Objects.isNull(departmentQry.getEqCorpinfoId())) { if (Objects.isNull(departmentQry.getEqCorpinfoId())) {

View File

@ -95,6 +95,11 @@ public class DepartmentServiceImpl implements DepartmentServiceI {
} }
@Override
public Collection<DepartmentTreeInfoCO> listAllTreeByCorpTypeAndCorpIds(DepartmentTreeCorpQry qry) {
return departmentQueryExe.listAllTreeByCorpTypeAndCorpIds(qry);
}
@Override @Override
@Cacheable(value = "deptAllNameCache", key="'deptId:'+#deptId") @Cacheable(value = "deptAllNameCache", key="'deptId:'+#deptId")
public String getFullNameForList(Long deptId, List<DepartmentCO> list) { public String getFullNameForList(Long deptId, List<DepartmentCO> list) {

View File

@ -45,6 +45,8 @@ public interface DepartmentServiceI {
Collection<DepartmentTreeInfoCO> listAllTreeByCorpType(DepartmentTreeQry qry); Collection<DepartmentTreeInfoCO> listAllTreeByCorpType(DepartmentTreeQry qry);
Collection<DepartmentTreeInfoCO> listAllTreeByCorpTypeAndCorpIds(DepartmentTreeCorpQry qry);
Long addHumanUserDept(DepartmentAddCmd cmd); Long addHumanUserDept(DepartmentAddCmd cmd);
Collection<DepartmentTreeInfoCO> listTreeNopermission(DepartmentTreeQry qry); Collection<DepartmentTreeInfoCO> listTreeNopermission(DepartmentTreeQry qry);

View File

@ -0,0 +1,15 @@
package com.zcloud.basic.info.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
@Data
@EqualsAndHashCode(callSuper = true)
public class DepartmentTreeCorpQry extends DepartmentTreeQry {
@ApiModelProperty(value = "企业id集合", name = "corpinfoIdList")
private List<String> corpinfoIdList;
}

View File

@ -8,6 +8,7 @@ import com.jjb.saas.framework.utils.DataEncryptDecryptUtil;
import com.zcloud.basic.info.domain.enums.CorpTypeEnum; import com.zcloud.basic.info.domain.enums.CorpTypeEnum;
import com.zcloud.basic.info.domain.enums.UserEmploymentFlagEnum; import com.zcloud.basic.info.domain.enums.UserEmploymentFlagEnum;
import com.zcloud.basic.info.domain.enums.UserFlowFlagEnum; import com.zcloud.basic.info.domain.enums.UserFlowFlagEnum;
import com.zcloud.basic.info.domain.enums.UserRZFlagEnum;
import com.zcloud.basic.info.domain.enums.UserTypeEnum; import com.zcloud.basic.info.domain.enums.UserTypeEnum;
import com.zcloud.gbscommon.excelEntity.UserExcelExportEntity; import com.zcloud.gbscommon.excelEntity.UserExcelExportEntity;
import com.zcloud.gbscommon.utils.ExcelUtils; import com.zcloud.gbscommon.utils.ExcelUtils;
@ -187,6 +188,9 @@ public class UserE extends BaseE {
userE.setTenantId(!ObjectUtils.isEmpty(userE.getTenantId()) ? userE.getTenantId() : tenantId); userE.setTenantId(!ObjectUtils.isEmpty(userE.getTenantId()) ? userE.getTenantId() : tenantId);
userE.setCorpinfoId(!ObjectUtils.isEmpty(userE.getCorpinfoId()) ? userE.getCorpinfoId() : tenantId); userE.setCorpinfoId(!ObjectUtils.isEmpty(userE.getCorpinfoId()) ? userE.getCorpinfoId() : tenantId);
userE.setEmploymentFlag(1); userE.setEmploymentFlag(1);
if (userE.getRzFlag() == null) {
userE.setRzFlag(UserRZFlagEnum.NO.getCode());
}
userE.setPassword(defaultPassword); userE.setPassword(defaultPassword);
} }

View File

@ -29,5 +29,7 @@ public interface DepartmentMapper extends BaseMapper<DepartmentDO> {
IPage<DepartmentDO> selectDeptPage(IPage<DepartmentDO> iPage, @Param("ew") QueryWrapper<DepartmentDO> queryWrapper, String menuPerms); IPage<DepartmentDO> selectDeptPage(IPage<DepartmentDO> iPage, @Param("ew") QueryWrapper<DepartmentDO> queryWrapper, String menuPerms);
List<DepartmentDO> listAllTreeByCorpType(Map<String, Object> parmas); List<DepartmentDO> listAllTreeByCorpType(Map<String, Object> parmas);
List<DepartmentDO> listAllTreeByCorpTypeAndCorpIds(Map<String, Object> params);
} }

View File

@ -40,6 +40,8 @@ public interface DepartmentRepository extends BaseRepository<DepartmentDO> {
List<DepartmentDO> listAllTreeByCorpType(Map<String, Object> parmas); List<DepartmentDO> listAllTreeByCorpType(Map<String, Object> parmas);
List<DepartmentDO> listAllTreeByCorpTypeAndCorpIds(Map<String, Object> params);
void deleteByCorpInfoId(Long corpInfoId); void deleteByCorpInfoId(Long corpInfoId);
} }

View File

@ -136,6 +136,11 @@ public class DepartmentRepositoryImpl extends BaseRepositoryImpl<DepartmentMappe
return departmentMapper.listAllTreeByCorpType(parmas); return departmentMapper.listAllTreeByCorpType(parmas);
} }
@Override
public List<DepartmentDO> listAllTreeByCorpTypeAndCorpIds(Map<String, Object> params) {
return departmentMapper.listAllTreeByCorpTypeAndCorpIds(params);
}
@Override @Override
public boolean existsByName(Long parentId,String name, Long id) { public boolean existsByName(Long parentId,String name, Long id) {
QueryWrapper<DepartmentDO> queryWrapper = new QueryWrapper<>(); QueryWrapper<DepartmentDO> queryWrapper = new QueryWrapper<>();

View File

@ -30,5 +30,26 @@
</if> </if>
order by c.corp_order, c.create_time desc,d.dep_order, d.create_time desc order by c.corp_order, c.create_time desc,d.dep_order, d.create_time desc
</select> </select>
<select id="listAllTreeByCorpTypeAndCorpIds" resultType="com.zcloud.basic.info.persistence.dataobject.DepartmentDO">
select d.*
from department d
left join corp_info c on d.corpinfo_id = c.id
where d.delete_enum = 'FALSE'
and c.delete_enum = 'FALSE'
<if test="inType != null and inType.size() > 0">
and c.type in
<foreach collection="inType" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
<if test="corpinfoIdList != null and corpinfoIdList.size() > 0">
and c.id in
<foreach collection="corpinfoIdList" item="corpinfoId" open="(" close=")" separator=",">
#{corpinfoId}
</foreach>
</if>
order by c.corp_order, c.create_time desc,d.dep_order, d.create_time desc
</select>
</mapper> </mapper>