IndexPatternService 通过应用,系统名索引名模糊查询索引 queryindicesBySystemAndApplication分析

news/2024/11/21 0:29:23/文章来源:https://www.cnblogs.com/lmzzr24/p/18559721

好的,根据您提供的文档内容,我提取了 queryIndicesBySystemAndApplication 方法,并对其进行详细分析。以下是提取的方法及其相关部分:

提取的 queryIndicesBySystemAndApplication 方法

@Override
public QueryIndicesBySystemAndApplicationResponse queryIndicesBySystemAndApplication(QueryIndicesBySystemAndApplicationRequest request) {QueryIndicesBySystemAndApplicationResponse response = new QueryIndicesBySystemAndApplicationResponse();String userName = request.getUserName();if (StringUtils.isEmpty(userName)) {log.error("查询用户关联索引请求参数为空");throw new TitanException("所传参数为空!");}UserConfig user = userService.queryByUserName(userName);if (user == null) {RespUtils.setError(ErrorCodeEnum.USER_NOT_EXIST, response);return response;}QueryFinTechUserRequest userRequest = new QueryFinTechUserRequest();List<String> userNameList = new ArrayList<>();userNameList.add(userName);userRequest.setUserNameList(userNameList);UserInfoResponse userInfoResponse = finTechDataProviderService.queryFinTechUserInfo(userRequest);String departmentId = userInfoResponse.getUserList().get(0).getOrgId();Department department = departmentService.getDepartmentById(departmentId);int isGlobal = 0;if (user.getGlobalQuery() || (department != null && department.getGlobalQuery())) {isGlobal = 1;}PageHelper.startPage(request.getPageIndex(), request.getPageLimit());PageInfo<IndexPattern> pageInfo = new PageInfo<>(indexPatternMapper.selectIndexByApplicationAndSystemId(request.getIndexName(),request.getApplicationName(),request.getSystemIdList(),isGlobal,userName,departmentId));List<IndexPatternItem> indexPatternItemList = new ArrayList<>();pageInfo.getList().forEach(userIndex -> {IndexPatternItem item = new IndexPatternItem();item.setSystemId(userIndex.getSystemId());item.setApplicationName(userIndex.getApplicationName());item.setIndexPatternName(userIndex.getIndexPatternName());item.setId(userIndex.getId());indexPatternItemList.add(item);});response.setIndicesList(indexPatternItemList);response.setTotal(pageInfo.getTotal());response.setSuccess();return response;
}

方法分析

输入参数

  • QueryIndicesBySystemAndApplicationRequest request:包含请求参数,主要包括 userName(用户名)、pageIndex(当前页码)、pageLimit(每页显示的记录数)、indexName(索引名称)、applicationName(应用名称)和 systemIdList(系统ID列表)。

输出参数

  • QueryIndicesBySystemAndApplicationResponse response:包含查询结果的响应对象,包括分页信息和查询到的 IndexPatternItem 列表。

方法步骤

  1. 创建响应对象

    QueryIndicesBySystemAndApplicationResponse response = new QueryIndicesBySystemAndApplicationResponse();
    
  2. 获取用户名

    String userName = request.getUserName();
    
  3. 参数校验

    if (StringUtils.isEmpty(userName)) {log.error("查询用户关联索引请求参数为空");throw new TitanException("所传参数为空!");
    }
    
    • 检查 userName 是否为空,如果为空则抛出异常并记录日志。
  4. 查询用户配置

    UserConfig user = userService.queryByUserName(userName);
    if (user == null) {RespUtils.setError(ErrorCodeEnum.USER_NOT_EXIST, response);return response;
    }
    
    • 调用 userService.queryByUserName 方法查询用户配置。
    • 如果用户不存在,设置响应对象的错误信息并返回。
  5. 查询用户信息

    QueryFinTechUserRequest userRequest = new QueryFinTechUserRequest();
    List<String> userNameList = new ArrayList<>();
    userNameList.add(userName);
    userRequest.setUserNameList(userNameList);UserInfoResponse userInfoResponse = finTechDataProviderService.queryFinTechUserInfo(userRequest);
    String departmentId = userInfoResponse.getUserList().get(0).getOrgId();
    Department department = departmentService.getDepartmentById(departmentId);
    
    • 创建 QueryFinTechUserRequest 对象并设置用户名列表。
    • 调用 finTechDataProviderService.queryFinTechUserInfo 方法查询用户信息。
    • 获取用户的部门ID并查询部门信息。
  6. 判断是否全局查询

    int isGlobal = 0;
    if (user.getGlobalQuery() || (department != null && department.getGlobalQuery())) {isGlobal = 1;
    }
    
    • 根据用户配置和部门配置判断是否允许全局查询。
  7. 设置分页参数并执行查询

    PageHelper.startPage(request.getPageIndex(), request.getPageLimit());
    PageInfo<IndexPattern> pageInfo = new PageInfo<>(indexPatternMapper.selectIndexByApplicationAndSystemId(request.getIndexName(),request.getApplicationName(),request.getSystemIdList(),isGlobal,userName,departmentId
    ));
    
    • 使用 PageHelper 设置分页参数。
    • 调用 indexPatternMapper.selectIndexByApplicationAndSystemId 方法执行查询,并获取分页结果。
  8. 转换查询结果

    List<IndexPatternItem> indexPatternItemList = new ArrayList<>();
    pageInfo.getList().forEach(userIndex -> {IndexPatternItem item = new IndexPatternItem();item.setSystemId(userIndex.getSystemId());item.setApplicationName(userIndex.getApplicationName());item.setIndexPatternName(userIndex.getIndexPatternName());item.setId(userIndex.getId());indexPatternItemList.add(item);
    });
    
    • 创建一个新的 List<IndexPatternItem> 对象。
    • 遍历查询结果,将每个 IndexPattern 对象转换为 IndexPatternItem 对象,并添加到 indexPatternItemList 中。
  9. 设置响应结果

    response.setIndicesList(indexPatternItemList);
    response.setTotal(pageInfo.getTotal());
    response.setSuccess();
    
    • 将查询结果列表和总记录数设置到响应对象中。
    • 设置响应对象的成功状态。
  10. 返回响应对象

    return response;
    

总结

queryIndicesBySystemAndApplication 方法的主要功能是根据用户名和相关参数查询索引模式,并将结果以分页形式返回。具体步骤包括:

  1. 参数校验:确保传入的用户名不为空。
  2. 查询用户配置:根据用户名查询用户配置。
  3. 查询用户信息:查询用户的详细信息,包括所属部门。
  4. 判断是否全局查询:根据用户和部门配置判断是否允许全局查询。
  5. 设置分页参数并执行查询:使用 PageHelper 设置分页参数,并调用 Mapper 方法执行查询。
  6. 转换查询结果:将查询结果转换为 IndexPatternItem 列表。
  7. 设置响应结果:将查询结果和分页信息设置到响应对象中,并设置成功状态。
  8. 返回响应对象:返回包含查询结果的响应对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/837610.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《软件设计》适配器模式

设计模式-双向适配器的实现实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。 java代码 Adapterpublic class Adapter implements CatTarget, DogAdaptee {private CatTarget cattarget;private DogAdaptee dogadaptee;public Adapter() {// TODO Auto-generated cons…

《软件设计》

用桥接模式实现在路上开车这个问题,其中,车可以是car或bus,路可以是水泥路或沥青路。实验要求: 1. 画出对应的类图;2. 提交源代码; 1. #include <iostream> 2. 3. using namespace std; 4. 5. class Vehicle{ 6. public: 7. virtual void drive(){} 8. }; 9.…

分享 一个传输文件和目录的网站 fastsend

分享 一个传输文件和目录的网站 创建时间:20231103 1.网站地址 https://fastsend.ing/zh2.介绍点对点快速传输文件和目录

.NET9 - 新功能体验(一)

.NET9发布,包含数千项改进。新功能包括命令行安装、C#13新转义序列\e、隐式索引访问、params参数增强、新锁类型System.Threading.Lock及生成UUIDv7。示例源码已上传至代码库。被微软形容为“迄今为止最高效、最现代、最安全、最智能、性能最高的.NET版本”——.NET 9已经发布…

《软件设计》建造者模式

建造者模式[实验任务一]:计算机组装 使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机。实验要求: 1. 画出对应的类图; 2.提交源代码;2.1 Builder.java package jianza…

《软件设计》 原型模式

原型模式---向量的原型的实验 下面是代码部分和要求部分: [实验任务一]:向量的原型 用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比较这两种克隆方式的异同。 实验要求: 1. 画出对应的类图; 2.提交源代码(用C++…

2024-10-18《软件设计》抽象工厂模式

今天做了抽象工厂模式--人与肤色的实验,最终成功运行成功人与肤色的代码; 下面是操作流程和步骤: [实验任务一]:人与肤色 使用抽象工厂模式,完成下述产品等级结构: 实验要求: 1. 画出对应的类图;2.提交源代码;Java: public class BlackFactory implements MWFactory {…

Alpha冲刺(7/14)——2024.11.17

目录一、团队成员分工与进度二、成员任务问题及处理方式三、冲刺会议内容记录会议内容四、GitHub签入记录及项目运行截图GitHub签入记录五、项目开发进展及燃尽图项目开发进展燃尽图六、团队成员贡献表 一、团队成员分工与进度成员 完成的任务 完成的任务时长 剩余时间施靖杰 查…

一款绘制3D架构图的在线神器:iCraft Editor

在软件开发的世界里,架构图是系统设计的蓝图,它们不仅帮助团队理解系统的整体结构,还能提升沟通效率,确保项目的顺利推进。然而,绘制一张清晰、直观的架构图,往往需要大量时间和专业工具。面对繁琐的操作和复杂的学习曲线,不少程序员感到力不从心。 之前DD有给大家推荐过…

敏捷开发:Scrum 中的 Product Backlog 介绍

Product Backlog 产品待办列表 在计划开发产品功能时,都希望产品功能上线后,用户能够喜欢并经常使用。 因此在开发产品新功能时,就要衡量哪些产品需求是对用户最有价值,这是最应该思考的问题。 然后把这些有价值的需求集合放在一起。当然,也有与需求实现相关的其它工作项。…

自我理解的洋葱模型

前言 简单说自己理解的洋葱模型。 正文 先来看一个洋葱模型:这个是ddd的洋葱模型。 我们看到最里面的是domain model。 为什么里面是domain model呢? 领域模型 domain model 是做什么的,是实现我们业务逻辑模型的,这个重中之重。 然后看domain services 是什么呢? 当涉及到…

B.XOR = 平均值

题目 给你一个整数 n 。找出一个由 n 个整数 a1, a2, ..., an 组成的序列,使得所有 i 和 i<= ai<=10^9 都是i<=ai<=10^9 。其中⊕表示 bitwise XOR。 可以证明存在满足上述所有条件的整数序列。 输入 第一行输入包含 t ( i <= t <= 10^4 ) - 测试用例数。 每…