最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

分布式醫(yī)療掛號(hào)系統(tǒng)Nacos微服務(wù)Feign遠(yuǎn)程調(diào)用數(shù)據(jù)字典

 更新時(shí)間:2022年04月25日 10:47:26   作者:Hudie.  
這篇文章主要為大家介紹了分布式醫(yī)療掛號(hào)系統(tǒng)Nacos微服務(wù)Feign遠(yuǎn)程調(diào)用數(shù)據(jù)字典,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>

需求:制作一個(gè)醫(yī)院列表的顯示功能。列表中包含醫(yī)院編號(hào)、醫(yī)院等級(jí)、醫(yī)院地址、狀態(tài)等。
分析:首先確定是典型的條件查詢帶分頁(yè)。由于醫(yī)院的等級(jí)需要查詢數(shù)據(jù)字典部分,這個(gè)調(diào)用是在不同的微服務(wù)模塊中,這就需要進(jìn)行遠(yuǎn)程調(diào)用。

步驟1:向Nacos服務(wù)中心注冊(cè)微服務(wù)

(1)引入Nacos依賴

  <!--服務(wù)注冊(cè)-->
  <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  </dependency>

(2)配置微服務(wù)到Nacos

1.配置service-hosp

# 服務(wù)端口
server.port=8201
# 服務(wù)名
spring.application.name=service-hosp
# Nacos服務(wù)地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

2.配置service-cmn

# 服務(wù)端口
server.port=8202
# 服務(wù)名
spring.application.name=service-cmn
# Nacos服務(wù)地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

3.將各微服務(wù)模塊添加到注冊(cè)中心

在各微服務(wù)模塊的啟動(dòng)類添加@EnableDiscoveryClient,表示將微服務(wù)注冊(cè)到Nacos。

步驟2:使用Feign進(jìn)行遠(yuǎn)程調(diào)用

下面在service-hosp創(chuàng)建醫(yī)院列表接口(條件查詢帶分頁(yè)),在service-cmn中創(chuàng)建根據(jù)編號(hào)查詢數(shù)據(jù)字典名稱的醫(yī)院等級(jí)接口。然后通過(guò)Feign完成遠(yuǎn)程調(diào)用。

(1)service-hosp醫(yī)院列表接口

訪問(wèn)路徑

/admin/hosp/hospital/list/{page}/{limit}

Controller:

@RestController
@RequestMapping("/admin/hosp/hospital")
@CrossOrigin
public class HospitalController {
    @Autowired
    private HospitalService hospitalService;
    /**
     * 醫(yī)院列表(條件查詢帶分頁(yè))
     * @param page
     * @param limit
     * @param hospitalQueryVo
     * @return
     */
    @GetMapping("list/{page}/{limit}")
    public Result listHosp(@PathVariable Integer page,
                           @PathVariable Integer limit,
                           HospitalQueryVo hospitalQueryVo){
        Page<Hospital> pageModel = hospitalService.selectHospPage(page,limit,hospitalQueryVo);
        return Result.ok(pageModel);
    }
}

Service接口:

    // 醫(yī)院列表(條件查詢帶分頁(yè))
    Page<Hospital> selectHospPage(Integer page, Integer limit, HospitalQueryVo hospitalQueryVo);

Service實(shí)現(xiàn)類:

// 醫(yī)院列表(條件查詢帶分頁(yè))
    @Override
    public Page<Hospital> selectHospPage(Integer page, Integer limit, HospitalQueryVo hospitalQueryVo) {
        // 1.創(chuàng)建pageable對(duì)象
        Pageable pageable = PageRequest.of(page - 1, limit);
        // 2.創(chuàng)建條件匹配器
        ExampleMatcher matcher = ExampleMatcher.matching()
                .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING)
                .withIgnoreCase(true);
        // 3.hospitalQueryVo轉(zhuǎn)換為Hospital對(duì)象
        Hospital hospital = new Hospital();
        BeanUtils.copyProperties(hospitalQueryVo, hospital);
        // 4.創(chuàng)建對(duì)象
        Example<Hospital> example = Example.of(hospital, matcher);
        // 5.調(diào)用方法實(shí)現(xiàn)查詢
        Page<Hospital> pages = hospitalRepository.findAll(example, pageable);
        // 6.得到所有醫(yī)院信息的集合
        pages.getContent().stream().forEach(item -> {
        	// 此方法執(zhí)行了遠(yuǎn)程調(diào)用
            this.setHospitalHosType(item);
        });
        return pages;
    }

Repository:

@Repository
public interface HospitalRepository extends MongoRepository<Hospital,String> {
    /**
     * 根據(jù)HosCode獲得記錄
     * @param hoscode
     * @return
     */
    Hospital getHospitalByHoscode(String hoscode);
}

(2)service-cmn醫(yī)院等級(jí)/地址接口

由于醫(yī)院等級(jí)、省市區(qū)地址都是取得數(shù)據(jù)字典value值,所以在列表顯示醫(yī)院等級(jí)、醫(yī)院地址時(shí)要根據(jù)數(shù)據(jù)字典value值獲取數(shù)據(jù)字典名稱。我們?cè)谶@里需要寫(xiě)兩個(gè)接口。

查詢醫(yī)院等級(jí),訪問(wèn)路徑為

/admin/cmn/dict/getName/{dictCode}/{value}

查詢醫(yī)院地址,訪問(wèn)路徑為

/admin/cmn/dict/getName/{value}

Controller:

    /**
     * 根據(jù)dictCode和value查詢 數(shù)據(jù)字典
     * @param dictCode
     * @param value
     * @return
     */
    @GetMapping("getName/{dictCode}/{value}")
    public String getName(@PathVariable String dictCode,
                          @PathVariable String value) {
        String dictName = dictService.getDictName(dictCode, value);
        return dictName;
    }
     /**
     * 根據(jù)value查詢 數(shù)據(jù)字典
     * @param value
     * @return
     */
    @GetMapping("getName/{value}")
    public String getName(@PathVariable String value) {
        String dictName = dictService.getDictName("",value);
        return dictName;
    }

Service接口:

    /**
     * 根據(jù)dictCode和value查詢 數(shù)據(jù)字典
     * @param dictCode
     * @param value
     * @return
     */
    String getDictName(String dictCode, String value);

Service實(shí)現(xiàn)類:

 /**
     * 根據(jù)dictCode和value查詢 數(shù)據(jù)字典
     * @param dictCode
     * @param value
     * @return
     */
    @Override
    public String getDictName(String dictCode, String value) {
        // 如果dictCode為空,直接根據(jù)value查詢;否則根據(jù)dictCode和value查詢
        if (StringUtils.isEmpty(dictCode)) {
            QueryWrapper<Dict> wrapper = new QueryWrapper<>();
            wrapper.eq("value", value);
            Dict dict = baseMapper.selectOne(wrapper);
            return dict.getName();
        } else {
            // 根據(jù)dictcode查詢dict對(duì)象,得到dict的id值
            Dict codeDict = this.getDictByDictCode(dictCode);
            Long parent_id = codeDict.getId();
            // 根據(jù)parent_id和value進(jìn)行查詢
            Dict finalDict = baseMapper.selectOne(new QueryWrapper<Dict>()
                    .eq("parent_id", parent_id)
                    .eq("value", value));
            return finalDict.getName();
        }
    }

數(shù)據(jù)訪問(wèn)層由Mybatis-plus完成。

(3)引入Feign依賴

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <scope>provided</scope>
        </dependency>

單獨(dú)創(chuàng)建service-cmn-clientMave工程進(jìn)行遠(yuǎn)程調(diào)用。

(4)調(diào)用端通過(guò)包掃描Feign

在調(diào)用端的啟動(dòng)類上,添加 @EnableFeignClients(basePackages = "com.gql") 注解。

(5)遠(yuǎn)程調(diào)用

接口中的方法為要調(diào)用模塊的方法簽名,注意訪問(wèn)路徑為完整路徑,且形參中注解后要加上參數(shù)名稱。

1.遠(yuǎn)程調(diào)用接口

// 要調(diào)用的微服務(wù)名稱
@FeignClient("service-cmn")
@Repository
public interface DictFeignClient {
    /**
     * 根據(jù)dictCode和value查詢 數(shù)據(jù)字典
     * @param dictCode
     * @param value
     * @return
     */
    @GetMapping("/admin/cmn/dict/getName/{dictCode}/{value}")
    public String getName(@PathVariable("dictCode") String dictCode,
                          @PathVariable("value") String value);
    /**
     * 根據(jù)value查詢 數(shù)據(jù)字典
     * @param value
     * @return
     */
    @GetMapping("/admin/cmn/dict/getName/{value}")
    public String getName(@PathVariable("value") String value);
}

2.執(zhí)行遠(yuǎn)程調(diào)用

    @Autowired
    private DictFeignClient dictFeignClient;
    // 獲取查詢list集合,遍歷進(jìn)行醫(yī)院等級(jí)封裝
    private Hospital setHospitalHosType(Hospital hospital) {
        // 封裝醫(yī)院等級(jí)
        String hostypeString = dictFeignClient.getName("Hostype", hospital.getHostype());
        hospital.getParam().put("hostypeString", hostypeString);
        // 封裝醫(yī)院省市區(qū)
        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);
        return hospital;
    }

步驟3:使用swagger測(cè)試

在swagger頁(yè)面中添加請(qǐng)求參數(shù)后,點(diǎn)擊執(zhí)行按鈕。

swagger頁(yè)面添加請(qǐng)求參數(shù)

成功通過(guò)遠(yuǎn)程調(diào)用獲取到醫(yī)院等級(jí)、地址:

通過(guò)遠(yuǎn)程調(diào)用獲取到醫(yī)院等級(jí)、地址

以上就是分布式醫(yī)療掛號(hào)系統(tǒng)Nacos微服務(wù)Feign遠(yuǎn)程調(diào)用數(shù)據(jù)字典的詳細(xì)內(nèi)容,更多關(guān)于分布式醫(yī)療掛號(hào)系統(tǒng)Nacos Feign遠(yuǎn)程調(diào)用數(shù)據(jù)字典的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • HttpServletRequest對(duì)象常用功能_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    HttpServletRequest對(duì)象常用功能_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了HttpServletRequest對(duì)象常用功能的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • nacos將服務(wù)注冊(cè)到不同的命名空間下問(wèn)題

    nacos將服務(wù)注冊(cè)到不同的命名空間下問(wèn)題

    Nacos是SpringCloudAlibaba架構(gòu)中最重要的組件,提供注冊(cè)中心、配置中心和動(dòng)態(tài)DNS服務(wù)三大功能,如果需要配置多個(gè)數(shù)據(jù)庫(kù)適配的環(huán)境,啟動(dòng)服務(wù)時(shí)需要將服務(wù)注冊(cè)到不同的命名空間下,并配置新部署的網(wǎng)關(guān)服務(wù)ip和端口或者域名
    2024-12-12
  • java selenium教程環(huán)境搭建方法

    java selenium教程環(huán)境搭建方法

    本文主要介紹java selenium 環(huán)境搭建,這里詳細(xì)介紹了selenium的安裝環(huán)境搭建,有興趣的小伙伴可以參考下
    2016-08-08
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(38)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(38)

    下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你
    2021-07-07
  • SpringBoot開(kāi)發(fā)技巧之使用AOP記錄日志示例解析

    SpringBoot開(kāi)發(fā)技巧之使用AOP記錄日志示例解析

    這篇文章主要為大家介紹了SpringBoot開(kāi)發(fā)技巧之如何利用AOP記錄日志的示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • SpringBoot項(xiàng)目?jī)?yōu)雅的全局異常處理方式(全網(wǎng)最新)

    SpringBoot項(xiàng)目?jī)?yōu)雅的全局異常處理方式(全網(wǎng)最新)

    這篇文章主要介紹了SpringBoot項(xiàng)目?jī)?yōu)雅的全局異常處理方式(全網(wǎng)最新),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Struts2配置文件中使用通配符的方法(三種形式)

    Struts2配置文件中使用通配符的方法(三種形式)

    Struts2是一個(gè)基于MVC設(shè)計(jì)模式的Web應(yīng)用框架,它本質(zhì)上相當(dāng)于一個(gè)servlet,在MVC設(shè)計(jì)模式中,Struts2作為控制器(Controller)來(lái)建立模型與視圖的數(shù)據(jù)交互。這篇文章主要介紹了Struts2配置文件中使用通配符的相關(guān)知識(shí),需要的朋友可以參考下
    2019-11-11
  • Springboot集成Tika實(shí)現(xiàn)文檔解析

    Springboot集成Tika實(shí)現(xiàn)文檔解析

    Tika是一款A(yù)pache開(kāi)源的,跨平臺(tái),支持多品種文本類型的內(nèi)容檢測(cè)和提取工具,本文將介紹Springboot如何集成Tika實(shí)現(xiàn)文檔解析,需要的可以參考下
    2024-11-11
  • 理解maven命令package、install、deploy的聯(lián)系與區(qū)別

    理解maven命令package、install、deploy的聯(lián)系與區(qū)別

    這篇文章主要介紹了理解maven命令package、install、deploy的聯(lián)系與區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • PowerJob的OmsLogHandler工作流程源碼解析

    PowerJob的OmsLogHandler工作流程源碼解析

    這篇文章主要為大家介紹了PowerJob的OmsLogHandler工作流程源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12

最新評(píng)論

黄平县| 怀安县| 青川县| 水富县| 巫山县| 九台市| 长海县| 北流市| 扎兰屯市| 阿巴嘎旗| 贞丰县| 珲春市| 都江堰市| 香河县| 普宁市| 孝义市| 滕州市| 舟曲县| 石狮市| 玉龙| 浏阳市| 霍城县| 东乡| 溧水县| 泰安市| 平凉市| 岱山县| 华安县| 巨野县| 栖霞市| 靖江市| 汤原县| 五常市| 民和| 阿合奇县| 呼图壁县| 股票| 都昌县| 双鸭山市| 通辽市| 聂拉木县|