Commit 332257bc authored by Rensq's avatar Rensq

获取机构树

parent 55e9353b
......@@ -34,6 +34,7 @@ import com.testor.module.contractor.ledger.service.TContractorLedgerService;
import com.testor.module.sys.model.domian.NewSysOrg;
import com.testor.module.sys.model.dto.NewDeptAndPost;
import com.testor.module.sys.model.dto.NewSysOrgCreateAndUpdateRequest;
import com.testor.module.sys.model.dto.NewTreeVo;
import com.testor.module.sys.model.vo.SysOrgAndDeptVo;
import com.testor.module.sys.model.vo.SysOrgVo;
import com.testor.module.sys.service.NewSysDictDataService;
......@@ -63,10 +64,8 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
......@@ -486,4 +485,50 @@ public class NewSysOrgController extends SuperController {
return baseResponse;
}
@ApiModelProperty(value = "根据机构id获取机构路径")
@GetMapping(value = "/getOrgTree")
public BaseResponse<NewTreeVo> getOrgTree(String orgId) throws Exception {
BaseResponse<NewTreeVo> baseResponse = new BaseResponse<>();
List<NewSysOrg> allOrgs = sysOrgService.list(new QueryWrapper<NewSysOrg>()
.ne(SysOrg.STATUS, BizConstants.STATUS_DELETE)
.eq(SysOrg.IS_DEPT, "0")
);
// 使用Map来存储orgId到SysOrg的映射
Map<String, NewSysOrg> orgMap = allOrgs.stream()
.collect(Collectors.toMap(NewSysOrg::getOrgId, Function.identity()));
SysOrg rootOrg = orgMap.get(orgId);
if (rootOrg == null) {
return new BaseResponse<>(); // 根节点不存在
}
// 将SysOrg转为NewTreeVo
NewTreeVo rootNewTreeVo = BeanHelper.beanToBean(rootOrg, NewTreeVo.class);
rootNewTreeVo.setChildren(buildChildren(orgId, orgMap));
baseResponse.setData(rootNewTreeVo);
return baseResponse;
}
private List<NewTreeVo> buildChildren(String parentId, Map<String, NewSysOrg> orgMap) {
List<NewTreeVo> children = new ArrayList<>();
// 找到所有子节点
List<SysOrg> childOrgs = orgMap.values().stream()
.filter(org -> parentId.equals(org.getParentId()))
.sorted(Comparator.comparing(SysOrg::getIsDept).reversed()) // 按照IS_DEPT降序排序
.collect(Collectors.toList());
// 递归处理每个子节点
for (SysOrg childOrg : childOrgs) {
NewTreeVo childNewTreeVo = BeanHelper.beanToBean(childOrg, NewTreeVo.class);
List<NewTreeVo> grandChildren = buildChildren(childNewTreeVo.getOrgId(), orgMap);
childNewTreeVo.setChildren(grandChildren);
children.add(childNewTreeVo);
}
return children;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment