91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • 分布式醫療掛號系統Nacos微服務Feign遠程調用數據字典的方法

分布式醫療掛號系統Nacos微服務Feign遠程調用數據字典的方法

發布時間:2022-04-25 11:56:09 來源:億速云 閱讀:340 作者:iii 欄目:開發技術

這篇文章主要介紹“分布式醫療掛號系統Nacos微服務Feign遠程調用數據字典的方法”,在日常操作中,相信很多人在分布式醫療掛號系統Nacos微服務Feign遠程調用數據字典的方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”分布式醫療掛號系統Nacos微服務Feign遠程調用數據字典的方法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

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

    步驟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創建醫院列表接口(條件查詢帶分頁),在service-cmn中創建根據編號查詢數據字典名稱的醫院等級接口。然后通過Feign完成遠程調用。

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

    訪問路徑

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

    Controller:

    @RestController
    @RequestMapping("/admin/hosp/hospital")
    @CrossOrigin
    public class HospitalController {
        @Autowired
        private HospitalService hospitalService;
        /**
         * 醫院列表(條件查詢帶分頁)
         * @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接口:

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

    Service實現類:

    // 醫院列表(條件查詢帶分頁)
        @Override
        public Page<Hospital> selectHospPage(Integer page, Integer limit, HospitalQueryVo hospitalQueryVo) {
            // 1.創建pageable對象
            Pageable pageable = PageRequest.of(page - 1, limit);
            // 2.創建條件匹配器
            ExampleMatcher matcher = ExampleMatcher.matching()
                    .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING)
                    .withIgnoreCase(true);
            // 3.hospitalQueryVo轉換為Hospital對象
            Hospital hospital = new Hospital();
            BeanUtils.copyProperties(hospitalQueryVo, hospital);
            // 4.創建對象
            Example<Hospital> example = Example.of(hospital, matcher);
            // 5.調用方法實現查詢
            Page<Hospital> pages = hospitalRepository.findAll(example, pageable);
            // 6.得到所有醫院信息的集合
            pages.getContent().stream().forEach(item -> {
            	// 此方法執行了遠程調用
                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醫院等級/地址接口

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

    查詢醫院等級,訪問路徑為

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

    查詢醫院地址,訪問路徑為

    /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>

    單獨創建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.執行遠程調用

        @Autowired
        private DictFeignClient dictFeignClient;
        // 獲取查詢list集合,遍歷進行醫院等級封裝
        private Hospital setHospitalHosType(Hospital hospital) {
            // 封裝醫院等級
            String hostypeString = dictFeignClient.getName("Hostype", hospital.getHostype());
            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);
            return hospital;
        }

    步驟3:使用swagger測試

    在swagger頁面中添加請求參數后,點擊執行按鈕。

    分布式醫療掛號系統Nacos微服務Feign遠程調用數據字典的方法

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

    分布式醫療掛號系統Nacos微服務Feign遠程調用數據字典的方法

    到此,關于“分布式醫療掛號系統Nacos微服務Feign遠程調用數據字典的方法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    海伦市| 通河县| 侯马市| 互助| 新源县| 大厂| 高密市| 宁强县| 荣昌县| 三穗县| 鄂伦春自治旗| 房产| 济宁市| 白河县| 若羌县| 桦南县| 平阴县| 申扎县| 保亭| 页游| 苏尼特右旗| 韶山市| 望江县| 息烽县| 沙坪坝区| 谢通门县| 大荔县| 桂林市| 许昌县| 建宁县| 玉田县| 云浮市| 黔南| 镇雄县| 长乐市| 久治县| 来凤县| 东宁县| 江陵县| 博客| 芮城县|