尚医通-医院列表接口-等级接口-功能测试(二十二)

news2024/9/20 16:51:19

目录:

(1)医院列表接口-医院等级接口

 (2)医院列表接口-远程调用

 (3)医院列表接口-功能测试


(1)医院列表接口-医院等级接口

由于我们的医院等级、省市区地址都是取的数据字典value值,因此我们在列表显示医院等级与医院地址时要根据数据字典value值获取数据字典名称

通过学习数据字典我们知道,根据上级编码与value值可以获取对应的数据字典名称,如果value值能够保持唯一(不一定唯一),我们也可以直接通过value值获取数据字典名称,目前省市区三级数据我们使用的是国家统计局的数据,数据编码我们就是数据字典的id与value,所以value能够唯一确定一条数据字典

省市区根据value则就可以进行查询,医院等级则根据dict_code和value进行查询医院等级获取数据如图:

 在DictController中添加两个方法:

 

 

//根据dictcode和value进行查询 医院等级
    @ApiOperation(value = "获取数据字典名称")
    @GetMapping(value = "/getName/{dictCode}/{value}")
    public String getName(
            @ApiParam(name = "dictCode", value = "上级编码", required = true)
            @PathVariable("dictCode") String dictCode,

            @ApiParam(name = "value", value = "值", required = true)
            @PathVariable("value") String value) {
        //调用Service的方法进行查询
        String dicName=dictService.getDictName(dictCode, value);
        return dicName;
    }

    //根据value进行查询 省市区
    @ApiOperation(value = "获取数据字典名称")
    @GetMapping(value = "/getName/{value}")
    public String getName(
            @ApiParam(name = "value", value = "值", required = true)
            @PathVariable("value") String value) {
        //调用Service的方法进行查询
        String dicName=dictService.getDictName("", value);
        return dicName;
    }

DictService 接口: 

 

package com.atguigu.yygh.cmn.service;

import com.atguigu.yygh.model.cmn.Dict;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

public interface DictService extends IService<Dict> {
    //根据数据id查询子数据列表
    List<Dict> findChlidData(Long id);

    //导出数据字典接口
    void exportDictData(HttpServletResponse response);

    //导入数据字典
    void importDictData(MultipartFile file);

    //查询 医院等级
    String getDictName(String dictCode, String value);

}

 实现类:DictServiceImpl:

 //查询 医院等级
    @Override
    public String getDictName(String dictCode, String value) {
        //如果dictCode为空,直接根据value查询
        if (StringUtils.isEmpty(dictCode)){
            //根据value进行查询
            QueryWrapper<Dict> wrapper=new QueryWrapper<>();
            wrapper.eq("value",value);
            Dict dict = baseMapper.selectOne(wrapper);
            return dict.getName();
        }else{//如果dictCode不为空,直接根据dictCode和 value查询
            //根据dictCode查询dict对象,得到dict的id值
            QueryWrapper<Dict> wrapper=new QueryWrapper<>();
            wrapper.eq("dict_code",dictCode);
            Dict codedict = baseMapper.selectOne(wrapper);

            Long parent_id = codedict.getId();
            //根据parent_id和value进行查询
            Dict findDict=baseMapper.selectOne(new QueryWrapper<Dict>()
                    .eq("parent_id",parent_id)
                    .eq("value",value));
            return findDict.getName();
        }
    }

 (2)医院列表接口-远程调用

我们通过service-hosp去调用service_cmn得到医院的等级信息,需要用到SpringCloud中的另外一个组件Feign

我们可以把调用代码写到service_hosp模块中通过它调用service_cmn,为了接口更加明显可以单独建立一个模块,专门封装调用的内容

 

  

 

 里面还需要在穿件子模块,我们把它改为pom类型:

 引入依赖:

<dependencies>
        <!--引入上面模块common的依赖-->
        <dependency>
            <groupId>com.atguigu</groupId>
            <artifactId>common_util</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <!--引入上面模块model的依赖-->
        <dependency>
            <groupId>com.atguigu</groupId>
            <artifactId>model</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <scope>provided </scope>
        </dependency>

        <!-- 服务调用feign -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <scope>provided </scope>
        </dependency>

    </dependencies>

 

在他下面再创建一个子模块:

 

 

 

 

 删除src:

 

 创建DictFeignClient 接口:接口和service_cmn里面的那两个方法相对应

package com.atguigu.yygh.cmn.client;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

@FeignClient("service-cmn")  //定义服务的名字
public interface DictFeignClient {

    //根据dictcode和value进行查询 医院等级
    @GetMapping(value = "/admin/cmn/dict/getName/{dictCode}/{value}")
    String getName(@PathVariable("dictCode") String parentDictCode, @PathVariable("value") String value);

    //根据value查询
    @GetMapping(value = "/admin/cmn/dict/getName/{value}")
    String getName(@PathVariable("value") String value);

}

 service_hosp是调用端service_cmn被调用端,首先在调用端引入:pom中

 在HospitalServiceImpl:

 先注入这个接口:

在医院列表的方法中继续添加代码:

 

//医院列表(条件查询分页)
    @Override
    public Page<Hospital> selectHospPage(Integer page, Integer limit, HospitalQueryVo hospitalQueryVo) {
        //创建Pageable的对象
        Pageable pageable= PageRequest.of(page-1,limit);
        //创建条件匹配器
        ExampleMatcher matcher=ExampleMatcher.matching()
                .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING)  //改变默认字符串匹配方式:模糊查询
                .withIgnoreCase(true); //改变默认大小写忽略方式:忽略大小写

        //将hospitalQueryVo对象转换为Hospital对象
        Hospital hospital =new Hospital();
        BeanUtils.copyProperties(hospitalQueryVo, hospital);//使用工具类把HospitalQueryVo转换成department

        //创建Example对象
        Example<Hospital> example=Example.of(hospital,matcher);
        //调用方法进行实现
        Page<Hospital> pages = hospitalRepository.findAll(example, pageable);

        //使用java8里面的stream流的方法遍历,在使用lombda进行遍历赋值  获取查到的list集合,遍历进行医院等级的封装
        pages.getContent().stream().forEach(item ->{
            this.setHospitalHosType(item);//封装方法
        });

        return pages;
    }
    //封装医院等级方法
    private Hospital setHospitalHosType(Hospital hospital){
        //获取到医院等级的名称
        String hostypeString= dictFeignClient.getName("Hostype", hospital.getHostype());
        //给hospital里面的Map属性赋值
        hospital.getParam().put("hostypeString", hostypeString);

       //查询省市区
        String provinceString = dictFeignClient.getName(hospital.getProvinceCode());
        String cityString = dictFeignClient.getName(hospital.getCityCode());
        String districtString = dictFeignClient.getName(hospital.getDistrictCode());
        hospital.getParam().put("fullAddress", provinceString + cityString + districtString + hospital.getAddress());
        return hospital;
    }

 (3)医院列表接口-功能测试

分被启动数据字典模块service_cmn 启用service_hosp医院模块

在service模块的pom下引入依赖:

在ServiceHospApplication 主启动类上加上Feign的注解

package com.atguigu.yygh.hosp;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan(basePackages = "com.atguigu")
@EnableDiscoveryClient  //服务在Nacos中注册
@EnableFeignClients(basePackages = "com.atguigu")  //Feign的注解开关 因为远程调用写在另外一个模块,让他扫描包 它会扫描@FeignClient
public class ServiceHospApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceHospApplication.class, args);
    }
}

 打开swagger文档:

测试这个接口: 

 

 发现param:中成功设置的数据

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BGP在数据中心的应用1——数据中心网络介绍

注&#xff1a; 本文根据《BGP in the Datacenter》整理&#xff0c;有兴趣和英文阅读能力的朋友可以直接看原文&#xff1a;https://www.oreilly.com/library/view/bgp-in-the/9781491983416/ 引子 在传统的大型数据中心&#xff0c;网络通常是三层结构。Cisco称之为&#x…

js函数之call和apply

一、含义 function test() {console.log(----) }//执行 test(); test.call() 结果一致&#xff0c;调用test()默认会调用call&#xff0c;二者效果一致&#xff0c;call省略掉了。 二、改变this指向 call还有一个很重要的功能是改变this的指向。 function Car(brand, color)…

[Java]泛型

文章目录&#x1f97d; 泛型简介&#x1f30a; 泛型的概念&#x1f30a; 使用泛型的原因&#x1f30a; 小结&#x1f30a; 类型推断&#x1f97d; 自定义泛型&#x1f30a; 自定义泛型类&#x1f30a; 自定义泛型类/泛型接口注意点&#x1f30a; 自定义泛型方法&#x1f97d; 泛…

2022HW11

文章目录任务描述-域自适应二、代码三、实验1、Simple Baseline2、Medium Baseline3、Strong Baseline任务描述-域自适应 ●想象一下&#xff0c;你想做与3D环境相关的任务&#xff0c;然后发现 ○3D图像很难标记&#xff0c;因此也很昂贵。 ○模拟图像&#xff08;如GTA-5上的…

shell-流程控制之循环

1.for创建20用户用户前缀由用户输入用户初始密码由用户输入 例如&#xff1a;test01,test10 [rootcotenos day06]# vim useradd.sh #!/bin/bash read -p "请输入用户前缀&#xff1a;" user read -p "请输入初始密码&#xff1a;" pass for ((i1;i<…

重新成长再出发

文章大纲突然的转型&#xff0c;逼自己一把也能重新成长为什么脱口秀突然火了起来&#xff1f;上天是给了你一个重新成长的机会&#xff01;2022 一些成长的点滴突然的转型&#xff0c;逼自己一把也能重新成长 年初的时候&#xff0c;航旅纵横给我弹窗问我很久没有坐飞机了怎么…

微三云陈志坤:盘点帮助企业转型到线上的模式

今/天小编给大家介绍一下泰山众筹模式系统&#xff0c;想搭建系统平台的联系微三云陈志坤。 泰山众筹模式已经走了4个多年头&#xff0c;目前仍在运行。 第一部分&#xff1a;泰山众筹模式介绍 一、无泡沫——安全长久 所有的互联网金融项目的死穴就是泡沫无法消除&#xf…

对于此版本,windows installer和即点即用的Office不能并行运行,因此只能安装一种类型(安装Visio破解版时的报错)

阅读前请看一下&#xff1a;我是一个热衷于记录的人&#xff0c;每次写博客会反复研读&#xff0c;尽量不断提升博客质量。文章设置为仅粉丝可见&#xff0c;是因为写博客确实花了不少精力。不用担心你关注我而我却不关注你&#xff0c;因为我是个诚信互关的人&#xff01;&…

gem5 arm架构 fullsystem spec2017 benchmark 仿真

gem5 system emulation 模式&#xff0c;内部实现了对system call的模拟&#xff0c;使用了一段时间后&#xff0c;有一些发现: 如果使用spec2017 X86编译&#xff0c;那么会存在对intel比较新的指令不支持的问题&#xff1b;后来使用gcc march K6 m32来解决&#xff0c;即使用…

FPGA知识汇集-FPGA配置模式和配置设计

所有现代FPGA的配置分为两类:基于SRAM的和基于非易失性的。其中&#xff0c;前者使用外部存储器来配置FPGA内的SRAM;后者只配置一次。 Lattice和Actel的FPGA使用称为反熔丝的非易失性配置技术&#xff0c;其主要优点是系统设计更加简单、不需要外部存储器和配置控制器、功耗低…

Kotlin之泛型的高级特性

Kotlin泛型中的基本用法和Java中的泛型用法是大致相同的&#xff0c;因此也比较好理解。然而实际上&#xff0c;Kotlin在泛型方面还提供了不少特有的功能&#xff0c;接下来将进行介绍。 一、对泛型进行实化 泛型实化这个功能对于绝大多数Java程序员来讲是非常陌生的&#xf…

对云台、IMU、鲁棒性和硬件时间同步的理解

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 为什么大多数人学不会人工智能编程&#xff1f;>>> slam是一门集硬件和软件的多科学技术&#xff0c;涉及到很多技术术语、概念以及数学公式等等。下面我将结合网上资料以及个人理解进行介绍。 什么叫云台…

navicat导入sql数据库文件的简单操作步骤

目录 前言必读 一、概念 二、操作步骤 &#xff08;一&#xff09;新建连接 &#xff08;二&#xff09;新建数据库 &#xff08;三&#xff09;数据库导入sql文件 前言必读 读者手册&#xff08;必读&#xff09;_云边的快乐猫的博客-CSDN博客 一、概念 在很多项目当…

LeetCode 309. 最佳买卖股票时机含冷冻期

309. 最佳买卖股票时机含冷冻期 给定一个整数数组prices&#xff0c;其中第 prices[i] 表示第 i 天的股票价格 。​ 设计一个算法计算出最大利润。在满足以下约束条件下&#xff0c;你可以尽可能地完成更多的交易&#xff08;多次买卖一支股票&#xff09;: 卖出股票后&#x…

第二个岳云鹏,跨年晚会含泪主持,成为一道最靓丽的风景

中国人自古讲究&#xff1a;百善孝入先&#xff0c;尤其是对于娱乐圈的明星来说&#xff0c;孝心和爱心更是他们成功的根本。 在这方面&#xff0c;德云社的小岳岳走在了前列&#xff0c;他用自己的孝心和爱心感动了粉丝&#xff0c;也收获了无数的鲜花和掌声。小岳岳的爱心体现…

2022年终总结 2023展望

一、回首2022 总结2022&#xff0c;同时也给新的一年设定目标&#xff0c;明年来还愿。 2022对我来说意义非凡&#xff0c;最重要莫过于考上了理想的研究生学校。 1~2月 考研初试刚结束&#xff0c;很长时间没敲过代码&#xff0c;而且本科期间刷的算法题不多&#xff0c;感觉…

02 USART

串口是一种应用十分广泛的通讯接口&#xff0c;串口成本低、容易使用、通信线路简单&#xff0c;可实现两个设备的互相通信。 单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信&#xff0c;极大地扩展了单片机的应用范围&#xff0c;增强了单片…

RabbitMQ——高级特性

1、RabbitMQ高级特性 1.1、消息的可靠性投递 在使用 RabbitMQ 的时候&#xff0c;作为消息发送方希望杜绝任何消息丢失或者投递失败场景。 RabbitMQ 为我们提供了两种方式用来控制消息的投递可靠性模式。 ⚫ confirm 确认模式 ⚫ return 退回模式 rabbitmq 整个消息投递的路径…

【回答问题】ChatGPT上线了!推荐30个以上比较好的命名实体识别模型

【回答问题】ChatGPT上线了&#xff01;推荐30个以上比较好的命名实体识别模型以及github源码&#xff1f; 推荐30个以上比较好的命名实体识别模型 命名实体识别模型是指识别文本中提到的特定的人名、地名、机构名等命名实体的模型。推荐的命名实体识别模型有&#xff1a; …

数据仓库搭建——本地数仓搭建详细流程

1 准备 1.1 本地虚拟机器准备 使用本地搭建三台机器&#xff0c;搭建数仓&#xff0c;模拟实际平台数据仓库的搭建。具体的搭建框架如下 安装软件角色主机1主机2主机3HadoopNameNode√SecondaryNameNode√DataNode√√√NodeManager√√√ResourceManager√√Zookeeperzk se…