机构树列表
This commit is contained in:
@@ -3,10 +3,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.openhis.web.basedatamanage.controller;
|
package com.openhis.web.basedatamanage.controller;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
@@ -16,7 +13,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.core.common.core.domain.R;
|
import com.core.common.core.domain.R;
|
||||||
import com.core.common.utils.AssignSeqUtil;
|
import com.core.common.utils.AssignSeqUtil;
|
||||||
@@ -26,8 +22,6 @@ import com.openhis.administration.mapper.OrganizationMapper;
|
|||||||
import com.openhis.administration.service.IOrganizationService;
|
import com.openhis.administration.service.IOrganizationService;
|
||||||
import com.openhis.common.constant.PromptMsgConstant;
|
import com.openhis.common.constant.PromptMsgConstant;
|
||||||
import com.openhis.common.enums.OrganizationType;
|
import com.openhis.common.enums.OrganizationType;
|
||||||
import com.openhis.common.utils.HisPageUtils;
|
|
||||||
import com.openhis.common.utils.HisQueryUtils;
|
|
||||||
import com.openhis.web.basedatamanage.dto.OrgQueryParam;
|
import com.openhis.web.basedatamanage.dto.OrgQueryParam;
|
||||||
import com.openhis.web.basedatamanage.dto.OrganizationInitDto;
|
import com.openhis.web.basedatamanage.dto.OrganizationInitDto;
|
||||||
import com.openhis.web.basedatamanage.dto.OrganizationQueryDto;
|
import com.openhis.web.basedatamanage.dto.OrganizationQueryDto;
|
||||||
@@ -82,15 +76,22 @@ public class OrganizationController {
|
|||||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||||
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
|
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
|
||||||
|
|
||||||
// 构建查询条件
|
// // 构建查询条件
|
||||||
QueryWrapper<Organization> queryWrapper = HisQueryUtils.buildQueryWrapper(orgQueryParam, searchKey,
|
// QueryWrapper<Organization> queryWrapper = HisQueryUtils.buildQueryWrapper(orgQueryParam, searchKey,
|
||||||
new HashSet<>(Arrays.asList("name", "py_str", "wb_str")), request);
|
// new HashSet<>(Arrays.asList("name", "py_str", "wb_str")), request);
|
||||||
|
//
|
||||||
// 设置排序
|
// // 设置排序
|
||||||
queryWrapper.orderByDesc("create_time");
|
// queryWrapper.orderByDesc("create_time");
|
||||||
// 执行分页查询并转换为 orgQueryDtoPage
|
// // 执行分页查询并转换为 orgQueryDtoPage
|
||||||
Page<OrganizationQueryDto> orgQueryDtoPage =
|
// Page<OrganizationQueryDto> orgQueryDtoPage =
|
||||||
HisPageUtils.selectPage(organizationMapper, queryWrapper, pageNo, pageSize, OrganizationQueryDto.class);
|
// HisPageUtils.selectPage(organizationMapper, queryWrapper, pageNo, pageSize, OrganizationQueryDto.class);
|
||||||
|
// 查询机构列表
|
||||||
|
Page<Organization> page = organizationService.page(new Page<>(pageNo, pageSize));
|
||||||
|
List<Organization> organizationList = page.getRecords();
|
||||||
|
// 将机构列表转为树结构
|
||||||
|
List<OrganizationQueryDto> orgTree = buildTree(organizationList);
|
||||||
|
Page<OrganizationQueryDto> orgQueryDtoPage = new Page<>(pageNo, pageSize, page.getCurrent());
|
||||||
|
orgQueryDtoPage.setRecords(orgTree);
|
||||||
|
|
||||||
return R.ok(orgQueryDtoPage,
|
return R.ok(orgQueryDtoPage,
|
||||||
MessageUtils.createMessage(PromptMsgConstant.Common.M00009, new Object[] {"机构信息"}));
|
MessageUtils.createMessage(PromptMsgConstant.Common.M00009, new Object[] {"机构信息"}));
|
||||||
@@ -184,4 +185,45 @@ public class OrganizationController {
|
|||||||
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, new Object[] {"机构活动标识"}));
|
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, new Object[] {"机构活动标识"}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将机构列表转换为树结构
|
||||||
|
*
|
||||||
|
* @param records 机构列表
|
||||||
|
* @return tree
|
||||||
|
*/
|
||||||
|
private List<OrganizationQueryDto> buildTree(List<Organization> records) {
|
||||||
|
// 按b_no的层级排序,确保父节点先处理
|
||||||
|
List<Organization> sortedRecords = records.stream()
|
||||||
|
.sorted(Comparator.comparingInt(r -> r.getBusNo().split("\\.").length)).collect(Collectors.toList());
|
||||||
|
|
||||||
|
Map<String, OrganizationQueryDto> nodeMap = new HashMap<>();
|
||||||
|
List<OrganizationQueryDto> tree = new ArrayList<>();
|
||||||
|
|
||||||
|
for (Organization record : sortedRecords) {
|
||||||
|
String bNo = record.getBusNo();
|
||||||
|
String[] parts = bNo.split("\\.");
|
||||||
|
OrganizationQueryDto node = new OrganizationQueryDto();
|
||||||
|
BeanUtils.copyProperties(record, node);
|
||||||
|
// 将当前节点加入映射
|
||||||
|
nodeMap.put(bNo, node);
|
||||||
|
|
||||||
|
if (parts.length == 1) {
|
||||||
|
// 根节点
|
||||||
|
tree.add(node);
|
||||||
|
} else {
|
||||||
|
// 获取父节点的b_no(去掉最后一部分)
|
||||||
|
String parentBNo = String.join(".", Arrays.copyOf(parts, parts.length - 1));
|
||||||
|
OrganizationQueryDto parent = nodeMap.get(parentBNo);
|
||||||
|
|
||||||
|
if (parent != null) {
|
||||||
|
parent.getChildren().add(node);
|
||||||
|
} else {
|
||||||
|
// 处理父节点不存在的情况(例如数据缺失)
|
||||||
|
// 可根据需求调整为将节点加入根或抛出异常
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return tree;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,9 @@
|
|||||||
*/
|
*/
|
||||||
package com.openhis.web.basedatamanage.dto;
|
package com.openhis.web.basedatamanage.dto;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.openhis.common.enums.OrganizationClass;
|
import com.openhis.common.enums.OrganizationClass;
|
||||||
@@ -52,4 +55,7 @@ public class OrganizationQueryDto {
|
|||||||
|
|
||||||
/** 显示顺序 */
|
/** 显示顺序 */
|
||||||
private Integer displayOrder;
|
private Integer displayOrder;
|
||||||
|
|
||||||
|
/** 子集合 */
|
||||||
|
private List<OrganizationQueryDto> children = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
|||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import com.core.common.core.domain.HisBaseEntity;
|
import com.core.common.core.domain.HisBaseEntity;
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||||
import com.openhis.common.enums.OrganizationClass;
|
import com.openhis.common.enums.OrganizationClass;
|
||||||
import com.openhis.common.enums.OrganizationType;
|
import com.openhis.common.enums.OrganizationType;
|
||||||
|
|
||||||
@@ -25,6 +27,7 @@ public class Organization extends HisBaseEntity {
|
|||||||
|
|
||||||
/** ID */
|
/** ID */
|
||||||
@TableId(type = IdType.ASSIGN_ID)
|
@TableId(type = IdType.ASSIGN_ID)
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
/** 编码 */
|
/** 编码 */
|
||||||
|
|||||||
Reference in New Issue
Block a user