医院信息化与智能化系统(15)

医院信息化与智能化系统(15)

这里只描述对应过程,和可能遇到的问题及解决办法以及对应的参考链接,并不会直接每一步详细配置
如果你想通过文字描述或代码画流程图,可以试试PlantUML,告诉GPT你的文件结构,让他给你对应的代码

预约挂号微服务模块搭建

前端知识点补充,此章节不会详细讲具体前端的每个知识点

1、医院管理概述

目前我们把医院、科室和排班都上传到了平台,那么管理平台就应该把他们管理起来,在我们的管理平台能够直观的查看这些信息。

需求分析及Nacos启动

需求分析:
要设置一个element-ui中的table标签存放logo医院名称等级...

在这里插入图片描述

在MongoDB数据库中并没有等级字段,只有hostype,那么需要根据数据字典获取对应的等级:这里涉及到通过service-hosp远程调用service-cmn模块

注册中心与服务调用

下载nacos-server-1.1.4版本并解压,在其bin目录下双击打开startup.cmd | start.sh,前后分别对应Windows | Linux

访问路径默认为 : http://localhost:8848/nacos,用户密码都是nacos
在这里插入图片描述

Nacos注册服务

  1. 在service模块引入spring-cloud-starter-alibaba-nacos-discovery依赖
  2. application.properties配置文件设置nacos地址`spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
  3. 在启动类ServiceHospApplication上添加注解@EnableDiscoveryClient
  4. 注意:service-hosp和service-cmn都要按步骤2、3设置

我这里出现了一个问题:service-cmn突然爆了一个关于没有找到mongodb连接的问题,我心想我也没使用它,所以在该模块的依赖中去找,找到了对service-hosp的依赖,再具体分析依赖关系(右键项目可以查看),发现确实不小心填加了关于mongodb的依赖项,所以做法很简单,就是直接把对service-hosp的依赖删除即可。[我这删除完没报错,如果你们有,最多应该也就是import出了问题,应该直接删就行,我没看见需要import关于hosp模块的地方]

在这里插入图片描述

2、 医院列表接口

在service-hosp中创建HospitalController用于存储实现方法,用@RestController@RequestMapping("xx")@CrossOrigin注解修饰。

医院列表实际是以get方式获取page和limit,随后进行条件查询。项目提供HospitalQueryVo类用于存放查询条件。创建selectHospPage方法实现条件查询,流程就是基于Mongodb数据库条件查询逻辑。

由于医院等级、省市区地址都是取的数据字典value值,因此我们在列表显示医院等级与医院地址时要根据数据字典value值获取数据字典名称。

由于yygh_cmn数据库表的value值并不唯一,所以需要创建方法来根据dictcode和value获取对应的name
service-cmnDictController创建getName方法;
在这里插入图片描述

    @GetMapping("getName/{dictCode}/{value}")
    public String getName(@PathVariable String dictCode,
                          @PathVariable String value){
        String dictName = dictService.getDictName(dictCode,value);
        return dictName;
    }
    @GetMapping("getName/{value}")
    public String getName(@PathVariable String value){
        String dictName = dictService.getDictName("",value);
        return dictName;
    }

在DictServiceImpl中实现具体getDictName方法:

  1. 提供value,直接依靠value值来找
  2. 提供value和dictcode,根据dictcode找到对应其父类对应的id,再根据parent_id =id以及value做更细致的查找
public String getDictName(String dictCode, String 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 {
            Dict codeDict =this.getDictByCode(dictCode);
            Long parent_id = codeDict.getId();
            //根据parent_id和value进行查询
            Dict finalDick = baseMapper.selectOne(new QueryWrapper<Dict>()
                    .eq("parent_id", parent_id)
                    .eq("value", value));
            return finalDick.getName();
        }

封装Feign服务调用

搭建service_client模块,来进行服务调用的封装,注意:这里是创建子模块,也就是yygh_parent->新建模块->Maven工程,而不是用Spring Initializr创建一个springboot工程。

设置打包方式为<packaging>pom</packaging>

导入相关依赖:common模块、feign相关依赖、common-util模块等。

在该模块创建子模块service_cmn_client

创建接口DictFeignClient,该接口用@FeignClient("service-cmn")@Repository修饰,其中service-cmn是nacos中需要被调用服务的名称,该名称的声明在application.properties中。

该接口中方法的声明步骤,直接去找你要调用的模块方法,除方法体外内容全部复制即可,但需要注意的是@xxxMapping注解的路径需要补充完整;此外还需要指定URL路径中的变量名

   @GetMapping("/admin/cmn/dict/getName/{value}")
    public String getName(@PathVariable("value") String value);

接着就是在调用端service-hosp模块引入service_cmn_client依赖,在HospitalServiceImpl中实例化实现DictFeignClient接口的对象;并在启动类添加注解@EnableFeignClients(basePackages = "com.xxx")

由于Hospital中没有等级信息字段,查看其父类BaseMongoEntity中声明了Map<String,Object> param,利用其进行对等级的封装。

根据lambda表达式,对每一个取出的Hospital进行等级与地区设置;分别用hostypeStringfullAddress对应。

//根据条件与页数返回pages后
  //获取查询list集合,遍历进行医院等级封装
  ...
        pages.getContent().stream().forEach(item->{
            this.setHospitalHosType(item);
        });

private Hospital setHospitalHosType(Hospital hospital) {
        //这里的hospital的Hostype是value类型:1,2...
        //"Hostype"是对应字典的dict_Code
        String hostypeString = dictFeignClient.getName("Hostype", hospital.getHostype());
        //查询省 市 地区
        String provinceString = dictFeignClient.getName(hospital.getProvinceCode());
        String cityString = dictFeignClient.getName( hospital.getCityCode());
        String districtString = dictFeignClient.getName(hospital.getDistrictCode());
        hospital.getParam().put("hostypeString",hostypeString);
        hospital.getParam().put("fullAddress",provinceString+cityString+districtString);
        return hospital;
    }

测试时nacos、redis、mongodb、nginx全部打开,再启动模块,再到swagger里测试。
在这里插入图片描述

查询所有子节点 接口

首次进入前端,显示所有省份的医院信息;再添加查询功能,根据进行条件查询

所以在DictController创建方法,根据dictCode查询子数据列表并在DictServiceImpl实现findByDictCode代码逻辑。

findByDictCode借助getDictByCode函数,输入dictCode可以得到对应的Dict对象,再通过findChildData,输入Dict对象的id,得到其子节点数组,最后做返回。

测试时,输入对应dict_code,会以JSON响应对应的子节点(省:北京市...)

医院列表 前端

第一步是添加路由,在router/index.js的医院设置管理下面添加医院列表部分,并设置跳转路径为:@/views/hosp/list(对应创建)

第二步在api/hosp.js设置与后端接口的对应;

  1. getHospList:对应后端listHospital方法,根据当前页,每页记录数,查询条件查询。
  2. findByDictCode:对应后端findByDictCode方法,根据DictCode查所有
  3. findChildId:对应后端findChildData方法,根据数据id查所有

第三部分编写list.vue

<template>标签内,仍是借助element-ui

先是提供两个选择表单,选择要查询的省和市,一个普通表单对应要查询的医院名称,一个查询按钮;

随后提供一个table,里面对应医院列表的各个信息

最后放置分组组件对应分页功能。

方法部分

  1. 导入hosp.js,为后续调用方法做准备
  2. 搭建基础结构:data、created、methods
  3. 定义变量及默认值:list医院列表数据、 total数据库中的总记录数、page 默认页码

进入页面就需要进行查询,所以创建fetchData方法,内部调用getHospList,并在.then()中处理返回值,将list和total分别赋值。

同时,需要在查询列表中,显示所有的省份,因此创建findAllProvince方法,内部调用findByDictCode

根据省需要提供市的列表,做法是创建provinceChanged方法,首先初始化市列表,随后根据searchObj.provinceCode获得选项框省的ID,再调用findChildId,最后把返回值赋值给`cityList

页面插件有一个选择页数进行展示,绑定方法changeSize,每一次选择页数进行调用,内部直接赋值this.limit,再执行this.fetchData(1)实现刷新即可。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/906335.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从比亚迪超越特斯拉,看颠覆全球市场的中国力量

这是比亚迪CEO王传福早年在日本调研电池供应链时发出的感慨。 那时的人们谁也没有想到&#xff0c;比亚迪会从深圳的一家普通的电池供应商开始做起&#xff0c;拼出一条属于自己的“血路”&#xff0c;摇身一变成为名副其实的“电车之王”&#xff0c;并让全球车企仰望。 比亚…

3d 添加辅助坐标器和轨道控制器

1.添加辅助坐标器 使用AxesHelper类来添加坐标轴辅助器&#xff0c;辅助器简单模拟3个坐标轴的对象。红色代表X轴&#xff0c;绿色代表Y轴&#xff0c;蓝色代表Z轴。 // 创建坐标轴辅助器&#xff0c;5是坐标轴的长度 const axesHelper new THREE.AxesHelper(5); // 将坐标轴…

「C/C++」C++标准库之#include<fstream>文件流

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「C/C」C/C程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

计算机后台服务-更新下载,重启————未来之窗行业应用跨平台架构

一在教育中应用 1. 提高效率&#xff1a;能够快速收集大量学生的卷子&#xff0c;节省了传统人工收集和整理的时间。 2. 准确性&#xff1a;减少了人工收卷过程中可能出现的错漏和混乱&#xff0c;确保每份卷子都能准确无误地被收集和记录。 3. 即时性&#xff1a;可以实时接收…

奥数与C++小学四年级(第十八题 小球重量)

参考程序代码&#xff1a; #include <iostream> #include <vector>int main() {// 小球的重量std::vector<int> weights {1, 2, 3, 4, 5};// 用来存储可能的结果int a, b, c, d, e, x;// 穷举所有可能的 a, b, c, d, e 的组合for (int i 0; i < weight…

Android启动流程_Init阶段

前言 本文将会介绍 Android 启动流程&#xff0c;将基于 Android 10 代码逻辑介绍原生启动过程。 bootloader 上电 -> 加载 recovery 镜像或者 boot 镜像 -> linux kernel 启动 -> 加载 init 进程 -> 加载 zygote 进程 -> systemserver 进程 -> 系统启动 …

线上3D看车有何优势?

随着Web3D展示技术的不断革新&#xff0c;线上3D看车正逐步成为消费者购车的新选择。这种创新的展示方式不仅提供了更真实、更有趣的互动体验&#xff0c;还带来了诸多优势&#xff0c;让购车过程变得更加便捷、高效。 一、更真实的展示效果 相较于传统的图片和文字描述&…

OpenCv —— 为opencv支持中文,将freetype2库编译进opencv中(附详细编译流程、测试代码)

效果(下面摄像头视频过于老旧 视频效果不好;但文字可添加。) 背景 由于OpenCV本身不支持中文显示,开发者需要借助其他库来实现这一功能。 OpenCV的contrib版本中包含了freetype库,可以通过编译opencv-contrib模块来支持中文显示。这种方法需要在编译OpenCV时特别配置,确保…

打印直角三角形

今天给大家分享一个打印直角三角形的方法 其实直角三角形在终端中的显示是又空格和星号组成的 只要将其看成一个矩形&#xff0c;并找出两者规律便可实现&#xff08;与打印菱形有一定相似的理解&#xff09;&#xff0c;下面我们来分享一个更简便的方法 它的规律是行和列之和…

python-函数前一行加@xxxx的含义参数的约束条件检查装饰器

在sklearn中看到红框中的函数&#xff0c;于是好奇是什么东西&#xff0c;查到python-函数前一行加xxxx的含义 于是找到函数定义&#xff1a;def validate_params(parameter_constraints, *, prefer_skip_nested_validation): 但是&#xff0c;里面没有定义func参数 于是再看…

科技资讯|谷歌Play应用商店有望支持 XR 头显,AR / VR设备有望得到发展

据 Android Authority 报道&#xff0c;谷歌似乎正在为其 Play 商店增加对 XR 头显的支持。该媒体在 Play 商店的代码中发现了相关的线索&#xff0c;包括一个代表头显的小图标以及对“XR 头显”的提及。 谷歌也可能改变了此前拒绝将 Play 商店引入 Meta Quest 头显的决定。今…

百度SEO分析实用指南 提升网站搜索排名的有效策略

内容概要 在数字化时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已经成为提升网站曝光度的关键工具。本指南将带您了解SEO的基本知识&#xff0c;帮助您在复杂的网络环境中立足。我们将从关键词优化开始&#xff0c;重点讲解如何选择合适的关键词来提高搜索引擎排…

基于vue框架的的考研网上辅导系统ao9z7(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;学生,公告信息,课程分类,考研资料,考研视频,课程信息,院校建议,教师 开题报告内容 基于Vue框架的考研网上辅导系统开题报告 一、研究背景与意义 随着高等教育的普及和就业竞争的加剧&#xff0c;考研已成为众多大学生提升学历、增强就…

flutter 用PUT的方式传输文件不带分隔符

最近有个需求&#xff0c;需要在flutter中用put的方式传输固件到设备上&#xff0c;本来以为用dio或者http这两个框架就能轻松完成的&#xff0c;结果发现&#xff0c;这两个框架传输过去的文件都会修改了源文件&#xff0c;把请求头的分隔符也带进去了&#xff0c;设备无法识别…

Javaweb 实验4 xml

我发现了有些人喜欢静静看博客不聊天呐&#xff0c; 但是ta会点赞。 这样的人呢帅气低调有内涵&#xff0c; 美丽大方很优雅。 说的就是你&#xff0c; 不用再怀疑哦 实验四 XML 目的&#xff1a; 安装和使用XML的开发环境认识XML的不同类型掌握XML文档的基本语法了解D…

基于SSM+VUE历史车轮网站JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解

源代码数据库LW文档&#xff08;1万字以上&#xff09;开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统&#xff1a;Window操作系统 2、开发工具&#xff1a;IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

【果实种子识别】Python+深度学习+人工智能+CNN卷积神经网络算法+TensorFlow+算法模型训练

一、介绍 果实种子识别系统&#xff0c;使用Python语言进行开发&#xff0c;通过TensorFlow搭建卷积神经网络算法模型&#xff0c;对10种坚果果实&#xff08;‘杏仁’, ‘巴西坚果’, ‘腰果’, ‘椰子’, ‘榛子’, ‘夏威夷果’, ‘山核桃’, ‘松子’, ‘开心果’, ‘核桃…

云服务器哪家好?(跨境电商云服务器推荐)

跨境电商的发展势头愈发迅猛&#xff0c;对云服务器的需求也在与日俱增。挑选一个合适的云服务器&#xff0c;能够为跨境电商提供稳定的运行环境&#xff0c;确保网站具备快速响应能力&#xff0c;提升用户体验&#xff0c;进而增强商业竞争力。 以下是一些比较好的云服务器提供…

CentOS 文件系统扩容与缩容

一、 概述 理解Linux文件系统的管理&#xff0c;需要了解以下的一张图&#xff1a; 一般使用LVM (Logical Volume Manager) 管理磁盘存储&#xff0c;该工具允许用户更灵活地分配和管理存储空间。主要有以下几个概念&#xff1a; PV&#xff08;Physical Volume&#xff0c;物…

分布式事务(2)----AT模式脏写问题

1.AT模式的脏写问题 我们先回顾一下AT模式的流程&#xff0c;AT模式也分为两个阶段&#xff1a; 第一阶段是记录数据快照&#xff0c;执行并提交事务&#xff1a; 第二阶段根据阶段一的结果来判断&#xff1a; 如果每一个分支事务都成功&#xff0c;则事务已经结束&#xff…