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

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

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

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

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

(1)引入Nacos依賴

  <!--服務(wù)注冊-->
  <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ù)模塊添加到注冊中心

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

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

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

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

訪問路徑

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

Controller:

@RestController
@RequestMapping("/admin/hosp/hospital")
@CrossOrigin
public class HospitalController {
    @Autowired
    private HospitalService hospitalService;
    /**
     * 醫(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ī)院列表(條件查詢帶分頁)
    Page<Hospital> selectHospPage(Integer page, Integer limit, HospitalQueryVo hospitalQueryVo);

Service實現(xiàn)類:

// 醫(yī)院列表(條件查詢帶分頁)
    @Override
    public Page<Hospital> selectHospPage(Integer page, Integer limit, HospitalQueryVo hospitalQueryVo) {
        // 1.創(chuàng)建pageable對象
        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對象
        Hospital hospital = new Hospital();
        BeanUtils.copyProperties(hospitalQueryVo, hospital);
        // 4.創(chuàng)建對象
        Example<Hospital> example = Example.of(hospital, matcher);
        // 5.調(diào)用方法實現(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ī)院等級/地址接口

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

查詢醫(yī)院等級,訪問路徑為

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

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

/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實現(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對象,得到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ù)訪問層由Mybatis-plus完成。

(3)引入Feign依賴

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

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

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

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

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

接口中的方法為要調(diào)用模塊的方法簽名,注意訪問路徑為完整路徑,且形參中注解后要加上參數(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ī)院等級封裝
    private Hospital setHospitalHosType(Hospital hospital) {
        // 封裝醫(yī)院等級
        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測試

在swagger頁面中添加請求參數(shù)后,點擊執(zhí)行按鈕。

swagger頁面添加請求參數(shù)

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

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

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

相關(guān)文章

  • HttpServletRequest對象常用功能_動力節(jié)點Java學(xué)院整理

    HttpServletRequest對象常用功能_動力節(jié)點Java學(xué)院整理

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

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

    Nacos是SpringCloudAlibaba架構(gòu)中最重要的組件,提供注冊中心、配置中心和動態(tài)DNS服務(wù)三大功能,如果需要配置多個數(shù)據(jù)庫適配的環(huán)境,啟動服務(wù)時需要將服務(wù)注冊到不同的命名空間下,并配置新部署的網(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)步一點點(38)

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

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

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

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

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

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

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

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

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

    Tika是一款A(yù)pache開源的,跨平臺,支持多品種文本類型的內(nèi)容檢測和提取工具,本文將介紹Springboot如何集成Tika實現(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ū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • PowerJob的OmsLogHandler工作流程源碼解析

    PowerJob的OmsLogHandler工作流程源碼解析

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

最新評論

绍兴市| 四平市| 蒙自县| 彭阳县| 株洲县| 涡阳县| 军事| 搜索| 石河子市| 富平县| 云南省| 句容市| 湖州市| 南溪县| 随州市| 孝义市| 宜阳县| 南通市| 达拉特旗| 隆昌县| 太仆寺旗| 兴山县| 库车县| 绥中县| 长汀县| 定安县| 霍林郭勒市| 阳东县| 鹤壁市| 河南省| 尖扎县| 宁武县| 平谷区| 察隅县| 屯昌县| 桂林市| 连云港市| 通城县| 黄浦区| 南澳县| 乳山市|