欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

分布式醫(yī)療掛號系統(tǒng)Nacos微服務Feign遠程調用數據字典

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

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

步驟1:向Nacos服務中心注冊微服務

(1)引入Nacos依賴

  <!--服務注冊-->
  <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  </dependency>

(2)配置微服務到Nacos

1.配置service-hosp

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

2.配置service-cmn

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

3.將各微服務模塊添加到注冊中心

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

步驟2:使用Feign進行遠程調用

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

(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實現類:

// 醫(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轉換為Hospital對象
        Hospital hospital = new Hospital();
        BeanUtils.copyProperties(hospitalQueryVo, hospital);
        // 4.創(chuàng)建對象
        Example<Hospital> example = Example.of(hospital, matcher);
        // 5.調用方法實現查詢
        Page<Hospital> pages = hospitalRepository.findAll(example, pageable);
        // 6.得到所有醫(yī)院信息的集合
        pages.getContent().stream().forEach(item -> {
        	// 此方法執(zhí)行了遠程調用
            this.setHospitalHosType(item);
        });
        return pages;
    }

Repository:

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

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

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

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

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

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

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

Controller:

    /**
     * 根據dictCode和value查詢 數據字典
     * @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;
    }
     /**
     * 根據value查詢 數據字典
     * @param value
     * @return
     */
    @GetMapping("getName/{value}")
    public String getName(@PathVariable String value) {
        String dictName = dictService.getDictName("",value);
        return dictName;
    }

Service接口:

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

Service實現類:

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

數據訪問層由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工程進行遠程調用。

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

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

(5)遠程調用

接口中的方法為要調用模塊的方法簽名,注意訪問路徑為完整路徑,且形參中注解后要加上參數名稱。

1.遠程調用接口

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

2.執(zhí)行遠程調用

    @Autowired
    private DictFeignClient dictFeignClient;
    // 獲取查詢list集合,遍歷進行醫(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頁面中添加請求參數后,點擊執(zhí)行按鈕。

swagger頁面添加請求參數

成功通過遠程調用獲取到醫(yī)院等級、地址:

通過遠程調用獲取到醫(yī)院等級、地址

以上就是分布式醫(yī)療掛號系統(tǒng)Nacos微服務Feign遠程調用數據字典的詳細內容,更多關于分布式醫(yī)療掛號系統(tǒng)Nacos Feign遠程調用數據字典的資料請關注腳本之家其它相關文章!

相關文章

  • SpringBoot中并發(fā)定時任務的實現、動態(tài)定時任務的實現(看這一篇就夠了)推薦

    SpringBoot中并發(fā)定時任務的實現、動態(tài)定時任務的實現(看這一篇就夠了)推薦

    這篇文章主要介紹了SpringBoot并發(fā)定時任務動態(tài)定時任務實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • springboot 整合 seata的配置過程

    springboot 整合 seata的配置過程

    本文給大家介紹springboot 整合 seata的配置過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-08-08
  • SpringBoot應用啟動內置Tomcat的過程源碼分析

    SpringBoot應用啟動內置Tomcat的過程源碼分析

    這篇文章主要介紹了SpringBoot應用啟動內置Tomcat的過程分析,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07
  • 詳解Java Web項目啟動執(zhí)行順序

    詳解Java Web項目啟動執(zhí)行順序

    這篇文章主要介紹了詳解Java Web項目啟動執(zhí)行順序,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • idea中git如何刪除commit提交的log信息

    idea中git如何刪除commit提交的log信息

    這篇文章主要介紹了idea中git如何刪除commit提交的log信息問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • maven插件maven-jar-plugin構建jar文件的詳細使用

    maven插件maven-jar-plugin構建jar文件的詳細使用

    maven-jar-plugin插件時maven中最常用的插件,也是maven構建Java程序執(zhí)行包或者依賴包的默認插件,本文主要介紹了maven插件maven-jar-plugin構建jar文件的詳細使用,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • 基于JavaMail的Java實現簡單郵件發(fā)送功能

    基于JavaMail的Java實現簡單郵件發(fā)送功能

    這篇文章主要為大家詳細介紹了基于JavaMail的Java實現簡單郵件發(fā)送功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Java?IO與NIO高效的輸入輸出操作深入探究

    Java?IO與NIO高效的輸入輸出操作深入探究

    這篇文章主要為大家介紹了Java?IO與NIO高效的輸入輸出操作深入探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • java正則表達式匹配規(guī)則超詳細總結

    java正則表達式匹配規(guī)則超詳細總結

    正則表達式并不僅限于某一種語言,但是在每種語言中有細微的差別,下面這篇文章主要給大家介紹了關于java正則表達式匹配規(guī)則的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-10-10
  • SpringBoot使用MockMvc進行單元測試的實例代碼

    SpringBoot使用MockMvc進行單元測試的實例代碼

    在Spring Boot應用程序中,使用MockMvc進行單元測試是一種有效的方式,可以驗證控制器的行為和API的正確性,在這篇博客中,我們將介紹如何使用MockMvc對用戶控制器進行測試,感興趣的朋友可以參考下
    2024-01-01

最新評論