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

開(kāi)發(fā)分布式醫(yī)療掛號(hào)系統(tǒng)MongoDB集成實(shí)現(xiàn)上傳醫(yī)院接口

 更新時(shí)間:2022年04月25日 10:14:40   作者:Hudie.  
這篇文章主要介紹了開(kāi)發(fā)分布式醫(yī)療掛號(hào)系統(tǒng)MongoDB集成實(shí)現(xiàn)上傳醫(yī)院接口,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

需求:在《分布式預(yù)約掛號(hào)平臺(tái)》中完成上傳醫(yī)院接口開(kāi)發(fā),再通過(guò)醫(yī)院接口模擬系統(tǒng)(醫(yī)院管理表)調(diào)用平臺(tái)中的接口,從而實(shí)現(xiàn)上傳醫(yī)院的功能。另外,所有通過(guò)平臺(tái)中接口上傳的信息都需要被保存到MongoDB中,通過(guò)MongoDB來(lái)進(jìn)行操作。

本篇文章根據(jù)上述需求,對(duì)《分布式醫(yī)療掛號(hào)系統(tǒng)》中的上傳醫(yī)院接口進(jìn)行實(shí)現(xiàn),項(xiàng)目代碼已同步至github,https://github.com/Guoqianliang/yygh_parent

一、集成MongoDB

上傳醫(yī)院接口的開(kāi)發(fā)仍然在之前創(chuàng)建好的service-hosp模塊中進(jìn)行,由于此次額外使用了MongoDB技術(shù),所以首先需要引入MongoDB的依賴:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>

除了引入MongoDB的依賴還需要將MongoDB數(shù)據(jù)庫(kù)添加到配置中:

spring.data.mongodb.uri=mongodb://[ip地址]:27017/[MongoDB的數(shù)據(jù)庫(kù)]

將來(lái)通過(guò)接口會(huì)向MongoDB上傳一張hospital文檔,下標(biāo)對(duì)這些記錄進(jìn)行說(shuō)明,這些表在Java中也需要有一個(gè)對(duì)應(yīng)的實(shí)體類。

hospital文檔中的記錄說(shuō)明

二、開(kāi)發(fā)Controller層

上傳醫(yī)院的接口路徑為:/api/hosp/saveHospital,下面分析ApiController中上傳醫(yī)院接口所做的事情:

1.將從醫(yī)院管理表傳遞過(guò)來(lái)的醫(yī)院信息轉(zhuǎn)換為Object類型

2.獲取醫(yī)院管理表中的密鑰(已經(jīng)使用MD5加密好了)

3.獲取醫(yī)院設(shè)置表中的密鑰并進(jìn)行MD5加密 此處調(diào)用醫(yī)院設(shè)置業(yè)務(wù)層

4.密鑰不匹配就拋出錯(cuò)誤

5.傳遞的圖片涉及base64編碼問(wèn)題,需要將logoData記錄中所有的" "替換為+

6.執(zhí)行上傳操作 此處調(diào)用醫(yī)院管理業(yè)務(wù)層

詳細(xì)代碼實(shí)現(xiàn):

@RestController
@RequestMapping("/api/hosp")
public class ApiController {
    @Autowired
    private HospitalService hospitalService;
    @Autowired
    private HospitalSetService hospitalSetService;
    @ApiOperation(value = "上傳醫(yī)院到數(shù)據(jù)庫(kù)")
    @PostMapping("saveHospital")
    public Result saveHosp(HttpServletRequest request) {
        // 1.將從醫(yī)院管理表傳遞過(guò)來(lái)的醫(yī)院信息轉(zhuǎn)換為Object類型
        Map<String, String[]> requestMap = request.getParameterMap();
        Map<String, Object> paramMap = HttpRequestHelper.switchMap(requestMap);
        // 2.獲取醫(yī)院管理表中的密鑰(已經(jīng)使用MD5加密好了)
        String hospSign = (String) paramMap.get("sign");
        // 3.獲取醫(yī)院設(shè)置表中的密鑰并進(jìn)行MD5加密
        String hoscode = (String) paramMap.get("hoscode");
        String signKey = hospitalSetService.getSignKey(hoscode);
        String signKeyMd5 = MD5.encrypt(signKey);
        // 4.密鑰不匹配就拋出錯(cuò)誤
        if (!hospSign.equals(signKeyMd5)) {
            throw new YyghException(ResultCodeEnum.SIGN_ERROR);
        }
        // 5.傳遞的圖片涉及base64編碼問(wèn)題,需要將logoData記錄中所有的" "替換為+
        String logoData = (String) paramMap.get("logoData");
        logoData = logoData.replaceAll(" ", "+");
        paramMap.put("logoData", logoData);
        // 6.執(zhí)行上傳操作
        hospitalService.save(paramMap);
        return Result.ok();
    }
}

三、開(kāi)發(fā)Service層

醫(yī)院設(shè)置的Service層

在醫(yī)院設(shè)置的Service層中根據(jù)醫(yī)院編碼獲取SignKey,下面是接口和實(shí)現(xiàn)類:

public interface HospitalSetService extends IService<HospitalSet> {
    String getSignKey(String hoscode);
}
@Service
public class HospitalSetServiceImpl extends ServiceImpl<HospitalSetMapper, HospitalSet>
        implements HospitalSetService {
    @Override
    public String getSignKey(String hoscode) {
        QueryWrapper<HospitalSet> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("hoscode", hoscode);
        HospitalSet hospitalSet = baseMapper.selectOne(queryWrapper);
        return hospitalSet.getSignKey();
    }
}

醫(yī)院管理的Service層

分析醫(yī)院管理Service層所做的事情:

1.把參宿map集合轉(zhuǎn)換為Hospital對(duì)象(借助JSONObject工具)

2.判斷MongoDB中是否已有這條記錄

3.如果有就執(zhí)行更新,沒(méi)有就執(zhí)行保存

詳細(xì)代碼實(shí)現(xiàn):

public interface HospitalService {
    void save(Map<String, Object> paramMap);
}
@Service
public class HospitalServiceImpl implements HospitalService {
    @Autowired
    private HospitalRepository hospitalRepository;
    @Override
    public void save(Map<String, Object> paramMap) {
        // 1.把參宿map集合轉(zhuǎn)換為Hospital對(duì)象(借助JSONObject工具)
        String mapString = JSONObject.toJSONString(paramMap);
        Hospital hospital = JSONObject.parseObject(mapString, Hospital.class);
        // 2.判斷MongoDB中是否已有這條記錄
        String hoscode = hospital.getHoscode();
        Hospital hospitalExist = hospitalRepository.getHospitalByHoscode(hoscode);
        // 3.如果有就執(zhí)行更新,沒(méi)有就執(zhí)行保存
        if (null != hospitalExist) {
            hospital.setStatus(hospitalExist.getStatus());
            hospital.setCreateTime(hospitalExist.getCreateTime());
            hospital.setUpdateTime(new Date());
            hospital.setIsDeleted(0);
            hospitalRepository.save(hospital);
        } else {
            //0:未上線 1:已上線
            hospital.setStatus(0);
            hospital.setCreateTime(new Date());
            hospital.setUpdateTime(new Date());
            hospital.setIsDeleted(0);
            hospitalRepository.save(hospital);
        }
    }
}

四、Respository數(shù)據(jù)層

在Respository層中僅僅進(jìn)行了根據(jù)HosCode獲得記錄的方法定義,MongoDB會(huì)智能的為我們生成相應(yīng)查詢代碼。(這需要我們對(duì)類名進(jìn)行規(guī)范定義,當(dāng)然,這并不是本篇文章所討論的內(nèi)容)

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

五、測(cè)試上傳醫(yī)院接口

運(yùn)行醫(yī)院設(shè)置和醫(yī)院管理兩個(gè)微服務(wù)模塊,打開(kāi)醫(yī)院管理模塊的模擬添加頁(yè)面,加入一條JSON測(cè)試記錄。

在醫(yī)院接口模擬系統(tǒng)中添加JSON數(shù)據(jù)

點(diǎn)擊保存后,調(diào)用醫(yī)院設(shè)置中的api接口,最終將數(shù)據(jù)保存到了MongoDB中:

MongoDB中接收到了JSON數(shù)據(jù)

至此,開(kāi)發(fā)上傳醫(yī)院接口的后端代碼,全部完成,更多關(guān)于分布式醫(yī)療掛號(hào)系統(tǒng)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MongoDB在Windows系統(tǒng)和Linux系統(tǒng)中實(shí)現(xiàn)自動(dòng)定時(shí)備份的操作步驟

    MongoDB在Windows系統(tǒng)和Linux系統(tǒng)中實(shí)現(xiàn)自動(dòng)定時(shí)備份的操作步驟

    要在Windows系統(tǒng)中實(shí)現(xiàn)自動(dòng)定時(shí)備份MongoDB數(shù)據(jù)庫(kù),可以使用Windows任務(wù)計(jì)劃程序和MongoDB自帶的mongodump工具,這篇文章主要介紹了MongoDB在Windows系統(tǒng)和Linux系統(tǒng)中實(shí)現(xiàn)自動(dòng)定時(shí)備份的操作步驟,需要的朋友可以參考下
    2023-12-12
  • MongoDB中方法limit和skip的使用

    MongoDB中方法limit和skip的使用

    這篇文章主要給大家介紹了關(guān)于MongoDB中方法limit和skip的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • MongoDB 中聚合統(tǒng)計(jì)計(jì)算--$SUM表達(dá)式

    MongoDB 中聚合統(tǒng)計(jì)計(jì)算--$SUM表達(dá)式

    這篇文章主要介紹了MongoDB 中聚合統(tǒng)計(jì)計(jì)算--$SUM表達(dá)式的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 關(guān)于MongoDB數(shù)據(jù)庫(kù)學(xué)習(xí)路線指南

    關(guān)于MongoDB數(shù)據(jù)庫(kù)學(xué)習(xí)路線指南

    這篇文章主要介紹了關(guān)于MongoDB數(shù)據(jù)庫(kù)學(xué)習(xí)路線指南,給大家以學(xué)習(xí)路線地圖的形式講解該怎么學(xué)習(xí)MongoDB數(shù)據(jù)庫(kù),需要的朋友可以參考下
    2023-04-04
  • MongoDB 副本集的搭建過(guò)程

    MongoDB 副本集的搭建過(guò)程

    這篇文章主要介紹了MongoDB 副本集的搭建過(guò)程,幫助大家更好的理解和學(xué)習(xí)使用MongoDB數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2021-03-03
  • MongoDB數(shù)據(jù)備份遷移的全過(guò)程

    MongoDB數(shù)據(jù)備份遷移的全過(guò)程

    這篇文章主要記錄了MongoDB數(shù)據(jù)備份遷移的全過(guò)程,文中通過(guò)圖文結(jié)合的方式介紹的非常詳細(xì),對(duì)大家了解學(xué)習(xí)MongoDB數(shù)據(jù)備份遷移有一定的幫助,需要的朋友可以參考下
    2024-06-06
  • Mac中mongoDB的安裝與卸載步驟詳解

    Mac中mongoDB的安裝與卸載步驟詳解

    mongoDB是一個(gè)非常不錯(cuò)的數(shù)據(jù)庫(kù),最近也正在學(xué)習(xí)mongoDB,在使用一個(gè)數(shù)據(jù)庫(kù)前必不可少的就是安裝和卸載,所以下面這篇文章主要給大家介紹了關(guān)于Mac系統(tǒng)中mongoDB安裝與卸載的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-10-10
  • mongoDB 實(shí)現(xiàn)主從讀寫(xiě)分離實(shí)現(xiàn)的實(shí)例代碼

    mongoDB 實(shí)現(xiàn)主從讀寫(xiě)分離實(shí)現(xiàn)的實(shí)例代碼

    這篇文章主要介紹了 mongoDB 實(shí)現(xiàn)主從讀寫(xiě)分離實(shí)現(xiàn)的實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • MongoDB數(shù)據(jù)庫(kù)基礎(chǔ)操作總結(jié)

    MongoDB數(shù)據(jù)庫(kù)基礎(chǔ)操作總結(jié)

    這篇文章主要介紹了MongoDB數(shù)據(jù)庫(kù)基礎(chǔ)操作,結(jié)合實(shí)例形式總結(jié)分析了MongoDB數(shù)據(jù)庫(kù)創(chuàng)建、刪除、集合、文檔等基本操作技巧,需要的朋友可以參考下
    2020-06-06
  • 使用MongoDB進(jìn)行數(shù)據(jù)存儲(chǔ)的操作流程

    使用MongoDB進(jìn)行數(shù)據(jù)存儲(chǔ)的操作流程

    在現(xiàn)代應(yīng)用開(kāi)發(fā)中,數(shù)據(jù)存儲(chǔ)是一個(gè)至關(guān)重要的部分,隨著數(shù)據(jù)量的增大和復(fù)雜性的增加,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)有時(shí)難以應(yīng)對(duì)高并發(fā)和大數(shù)據(jù)量的處理需求,MongoDB作為一種高效的NoSQL數(shù)據(jù)庫(kù),逐漸成為了開(kāi)發(fā)者的首選,本文將介紹如何使用MongoDB進(jìn)行數(shù)據(jù)存儲(chǔ)
    2025-01-01

最新評(píng)論

健康| 水城县| 大化| 海盐县| 五华县| 横山县| 且末县| 巨鹿县| 常山县| 桦甸市| 梅河口市| 泗阳县| 定兴县| 通渭县| 新竹县| 鄯善县| 无极县| 伊通| 大渡口区| 绩溪县| 灵寿县| 桑植县| 大洼县| 垫江县| 洮南市| 博乐市| 长乐市| 天气| 信阳市| 崇明县| 富川| 安远县| 江北区| 武功县| 朝阳市| 深圳市| 西宁市| 乡城县| 库尔勒市| 册亨县| 永靖县|