当前位置: 首页 > news >正文

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

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

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

预约挂号微服务模块搭建

1、构建父工程(yygh-parent)

在Maven的pom.xml中,<packaging>pom</packaging>指定了该项目的打包类型为 POM。这意味着这个项目是一个父项目或聚合项目,而不是一个可执行的JAR或WAR文件。

其作用是为了管理依赖版本以及公共依赖

通过Spring Initializr创建项目:添加依赖项

好处:

  • 自动重启: 当你修改代码并保存文件时,DevTools 会自动重启应用,这样你不必手动重启服务,提高开发效率。
  • 快速热部署: 在开发模式下,DevTools 允许快速查看代码更改的效果,无需每次都重新启动应用。
  • LiveReload: 与浏览器配合,实时刷新网页,方便前端开发。
  • 增强配置元数据: 为你的配置类生成元数据,使得 IDE(如 IntelliJ IDEA)能够提供智能提示和代码补全功能。
  • 类型安全的配置: 通过生成的元数据,确保配置项的类型和名称的正确性,避免常见的配置错误。
    在这里插入图片描述

此处还会出现一个问题:创建好的springboot项目根本没有spring-boot-starter-parent

原因: 因为创建springboot工程的时候,使用的是阿里云提供的网址,初始化项目的时候,官网的采用的是继承的parent标签。而阿里云是直接通过引用依赖,所以看不到parent标签!(转自此处)

解决方案: 自行添加<parent>标签,记住,这里的版本一定要和你的spring-boot设置的版本一样

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.16</version>
</parent>

后续就是添加相关依赖,这里主要描述pom内标签的几个作用:

<parent> 标签在 Maven 项目中用于声明一个项目的父 POM(Project Object Model)。父 POM 提供了一组可以被子项目继承的配置和依赖,从而减少重复配置,简化多模块项目的管理。可以继承的包括:

  1. 依赖版本(通过 <dependencyManagement>)。
  2. 构建设置(通过 <build>
  3. 插件配置(通过 <pluginManagement>
  4. 通用属性(通过 <properties>

<dependencyManagement> 主要用于在父项目或父 POM 中定义依赖的版本和范围,但并不会将依赖自动引入子项目。子项目需要显式声明依赖项.
<dependencies> 标签用于直接声明项目中需要的依赖项。这些依赖会立即被添加到项目的构建路径中,并且在构建时自动下载和使用。

<properties> 标签,你可以定义一些全局的变量,如 Java 版本、字符编码、依赖的版本等,便于项目的统一配置和维护。

<build> 标签出现在 pom.xml 文件中,用于管理项目的构建配置包括:

  1. 项目编译、测试和打包的行为定义。
  2. 配置构建过程中的插件及其参数。
  3. 自定义项目输出的路径和文件名称等。

位于 <build> 标签下:

  1. <pluginManagement>:用于为子项目或模块定义插件的默认配置。子项目要想使用这些插件,必须显式声明插件。它只管理插件,而不会在没有声明的情况下自动应用插件。

  2. <plugins>:用于在当前项目或子项目中直接应用插件。这里声明的插件会自动应用,并参与项目的构建过程。

  3. <plugin> ,用于定义和配置 Maven 插件。Maven 插件是一组可以在项目构建过程中执行的任务,例如编译、打包、测试等。通过插件,你可以扩展 Maven 的默认行为,或引入特定的功能。

2、搭建common父模块

在这里插入图片描述
yygh-parent工程下创建子工程模块common,会遇到一个问题:找不到常规Maven模块创建,似乎只提供了Maven Archetype模版创建,其实是可以创建普通Maven模块的,在新建模块里。 此处参考
在这里插入图片描述
添加依赖,对swagger依赖项进行说明

使用 Swagger 的功能:

  • 生成 API 文档:通过注解生成自动化的 API 文档,无需手动编写。
  • 在线测试:Swagger 提供可视化的接口文档页面,可以直接在页面上进行 API 请求测试。
  • 代码生成:Swagger 可以根据文档生成多语言的客户端和服务端代码。

搭建common-util、service-util(common子模块)先统一安装对应依赖 (后续还有再补充)

3、搭建model、Service父模块

在这里插入图片描述
在这里插入图片描述
搭建过程如common,不再赘述。

4、Gitee使用

打开https://gitee.com/网址

点击创建仓库,选择是否开源、`仓库名称

复制gitee码云Https连接类似于:https://gitee.com/xxxx/yygh_parent.git

创建本地仓库: 在Idea工具栏上方点击VCS -->创建Git仓库

建立远程仓库并上传代码步骤

第一步: 右键项目名称,在Git中点击管理远程,将之前复制的码云的URL粘贴,创建时,需要填写你码云的账号密码

这里要注意,注册账号时的用户名和这里的账号可能不一样,以https://gitee.com/xxxx/yygh_parent.git为准的话,账号就是xxxx,密码一样

第二步: 右键项目名称,在Git中点击添加

第三步: Git ->提交目录,在打开的窗口中选择要上传到本地仓库的代码并添加注释后提交并推送到远程仓库中。

pull:首先从远程仓库获取最新的提交记录,再将远程仓库中的更新合并到本地当前分支。

commmit: 是将已添加到暂存区(staging area)的更改保存到本地仓库的历史记录中。提交的内容只在本地仓库中进行保存,并不会影响远程仓库。

push:是将本地仓库中的提交推送到远程仓库

在这里插入图片描述

5、医院设置需求

医院设置功能的主要作用是保存医院的基本信息,确保每个医院开通后可以参与后续的流程。

具体表结构:

字段名描述备注
id编号自增
hosname医院名称
hoscode医院编号(平台分配,全局唯一,API接口必填信息)
api_url医院回调的基础URL(如:预约下单,调用该地址下单)
sign_key双方API接口调用的签名Key,由平台生成
contacts_name医院联系人姓名
contacts_phone医院联系人手机
status状态(锁定/解锁)默认值:01表示可用于连接
create_time创建时间默认值:CURRENT_TIMESTAMP
update_time更新时间默认值:CURRENT_TIMESTAMP,更新时修改
is_deleted逻辑删除(1:已删除,0:未删除)默认值:0

6、搭建医院模块service-hosp

第一步: 修改pom.xml,添加依赖

第二步: 添加配置文件application.properties设置数据库、Mapper等信息

其中配置mapper-locations是为了告诉 MyBatis-Plus 框架,在哪个路径下可以找到 XML 文件,这些文件定义了数据库操作的 SQL 语句。

第三步: 添加启动类,启动类模块统一在model模块创建

第四步: 添加Mapper接口,在Mapper接口继承BaseMapper时需要指定实体类(HospitalSet),所以必须在pom.xml添加对model模块的依赖。最后并在Mapper文件夹下方创建xml文件夹,用于存储xml文件

        <dependency><groupId>com.xxx</groupId><artifactId>model</artifactId><version>0.0.1-SNAPSHOT</version></dependency>

其中添加 mapper 接口是为了在 MyBatis 或 MyBatis-Plus 中定义与数据库的交互逻辑,它提供了将 Java 方法与 SQL 语句进行映射的机制。

第五步: 添加service接口及实现类

创建HospitalSetService接口(封装业务逻辑),继承IService接口,它集成了一些通用的服务方法。[这里接口填泛型,填的是实体类HospitalSet]

实现该Service接口,并可以调用 Mapper 接口。

@Service
public class HospitalSetServiceImpl extends ServiceImpl<HospitalSetMapper, HospitalSet>implements HospitalSetService {
@Autowired
private HospitalSetMapper hospitalSetMapper;
}

ServiceImpl 是 MyBatis-Plus 提供的一个基础服务实现类,它已经封装好了常见的 CRUD(增删改查)操作,开发者只需继承这个类,就可以自动拥有这些基本功能,而无需每次都手动实现。

ServiceImpl 使用了两个泛型参数:

<M extends BaseMapper<T>, T> implements IService<T>

  • M(Mapper 类型):表示对应的 Mapper 接口,通常继承自 BaseMapper。
  • T(实体类型):表示对应的实体类,通常对应数据库中的某张表。

这里会不会有一个疑问:既然服务层实现类继承了serviceImpl,又继承了 服务类接口,那为什么服务类接口还需要继承IService接口呢?

从 IService 继承的 CRUD 方法可以直接复用,避免在每个实现类中重复编写;可以在 Service 接口中定义额外的业务方法,使其不仅仅限于基本的 CRUD 操作;未来如果需要替换 ServiceImpl,只需要修改实现类,接口层不用动,保持系统的解耦。

第六步: 添加controller

这里介绍这两个注解:

@RestController:它的作用等同于 @Controller 和 @ResponseBody 的组合

  • @Controller:用于定义一个控制器类,用来接收和处理 HTTP 请求。
  • @ResponseBody:表示该方法的返回值直接作为 HTTP 响应体,而不是返回一个视图(如 JSP 页面)。通常用来返回 JSON、XML 等格式的数据。

@RequestMapping("/admin/hosp/hospitalSet") 表示这个控制器类处理所有以 /admin/hosp/hospitalSet 开头的请求路径。

这里我在运行配置类Main时,出现了一个报错:

java.lang.IllegalStateException: failed to req API:/nacos/v1/ns/instance after all servers([localhost:8848]) tried

这个错误表明 Spring Boot 应用在尝试连接 Nacos 服务时出现了 Connection refused 的错误。我的解决方法是,把关于nacos的依赖项先注释掉。

后续讨论如何在Controller中添加CRUD方法

相关文章:

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

医院信息化与智能化系统(3) 这里只描述对应过程&#xff0c;和可能遇到的问题及解决办法以及对应的参考链接&#xff0c;并不会直接每一步详细配置 如果你想通过文字描述或代码画流程图&#xff0c;可以试试PlantUML&#xff0c;告诉GPT你的文件结构&#xff0c;让他给你对应的…...

数据结构(线性表)

1线性表的定义与操作 1.1线性表的定义 线性表是一种基础的数据结构&#xff0c;其主要特点是&#xff1a;数据元素之间存在一种线性关系&#xff08;一对一&#xff09;。线性表的每一个数据元素都有一个唯一的前驱和后继&#xff0c;除了第一个元素没有前驱&#xff0c;最后…...

ArcGIS Pro SDK (十八)栅格

ArcGIS Pro SDK (十八)栅格 环境:Visual Studio 2022 + .NET6 + ArcGIS Pro SDK 3.0 栅格 1 在文件夹中打开栅格数据集 // 使用文件夹路径创建 FileSystemConnectionPath 对象。 FileSystemConnectionPath connectionPath = new FileSystemConnectionPath(new System...

c++ 对象作用域

在 C 中&#xff0c;对象的作用域&#xff08;scope&#xff09;指的是对象的生命周期以及对象在程序中可以访问的范围。作用域影响对象的创建、使用和销毁&#xff0c;主要有以下几种类型&#xff1a; 1. 局部作用域&#xff08;Local Scope&#xff09; 局部作用域的对象是…...

【无标题】海尔AI英语面试

1.自我介绍 Good morning. I am delighted to have this English interview. My name is fu guilin. I graduated from CDUT with a degree in Information engineering. During my university years, I have laid a solid foundation in my professional knowledge. I posses…...

软件设计模式------概述

一&#xff1a;简述 目的&#xff1a;为了可重用代码&#xff0c;代码更容易被他人理解&#xff0c;提高代码的可靠性。 定义&#xff1a;是一套被反复使用&#xff0c;多数人知晓&#xff0c;经过分类编目的&#xff0c;代码设计经验的总结。 &#xff08;通俗来说&#xf…...

刷题/学习网站推荐

前言&#xff1a; 最近没怎么学习&#xff0c;荒芜生活&#xff0c;学不进去&#xff0c;太累了&#xff0c;就喜欢翻翻网站有没有好用的东西分享给大家&#xff0c;正好看到一些刷题的网站&#xff08;其实也是学习的网站吧&#xff09;&#xff0c;相比学程序的很多都是力扣…...

OQE-OPTICAL AND QUANTUM ELECTRONICS

文章目录 一、征稿简介二、重要信息三、服务简述四、投稿须知五、联系咨询 一、征稿简介 二、重要信息 期刊官网&#xff1a;https://ais.cn/u/3eEJNv 三、服务简述 四、投稿须知 1.在线投稿&#xff1a;由艾思科蓝支持在线投稿&#xff0c;请将文章全文投稿至艾思科蓝投稿系…...

在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?

大家好&#xff0c;我是锋哥。今天分享关于【在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; 在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处&#xff1f; 1000道 互联网大厂Java工程师 精选…...

Chromium html<textarea>c++接口定义

<textarea>&#xff1a;文本区域元素 <textarea> HTML 元素是一个多行纯文本编辑控件&#xff0c;适用于允许用户输入大量自由格式文本的场景。 例子&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> &l…...

OpenCV高级图形用户界面(13)选择图像中的一个矩形区域的函数selectROI()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 允许用户在给定的图像上选择一个感兴趣区域&#xff08;ROI&#xff09;。 该功能创建一个窗口&#xff0c;并允许用户使用鼠标来选择一个 ROI。…...

《计算机视觉》—— 基于dlib库的人检检测

文章目录 一、dlib库的安装1. 通过PyCharm的Settings安装2. 通过Anaconda安装&#xff08;适用于Windows等操作系统&#xff09;3. 通过命令行安装4.懒人安装 二、基于dlib库的人检测1.对图像进行人脸检测2.打开电脑摄像头&#xff0c;检测人脸 一、dlib库的安装 在PyCharm中&…...

分布式数据库安全可靠测评名录之平凯数据库(TiDB企业版)

作者&#xff1a; 数据源的TiDB学习之路 原文来源&#xff1a; https://tidb.net/blog/d052ee0b 2024 年 9 月 30 日&#xff0c;中国信息安全测评中心公布安全可靠测评结果公告&#xff08;2024年第2号&#xff09;&#xff0c;其中包含 6 款集中式数据库和 11 款分布式数据…...

动态规划之打家劫舍

大纲 题目思路第一步&#xff1a;确定下标含义第二步&#xff1a;确定递推公式第二步&#xff1a;dp数组如何初始化第三步&#xff1a;确定遍历顺序第四步&#xff1a;举例推导dp数组 总结 最近有人询问我 LeetCode 「打家劫舍」系列问题&#xff08;英文版叫 House Robber&…...

嵌入式入门学习——8基于Protues仿真Arduino+SSD1306液晶显示数字时钟

0 系列文章入口 嵌入式入门学习——0快速入门&#xff0c;Let‘s Do It&#xff01; SSD1306 1 Protues查找SSD1306器件并放置在画布&#xff0c;画好电气连接&#xff08;这里VCC和GND画反了&#xff0c;后面仿真出错我才看见&#xff0c;要是现实硬件估计就烧毁了&#xf…...

盘点现代浏览器的各种神奇能力,功能令人惊讶

盘点现代浏览器的各种神奇能力&#xff0c;功能令人惊讶&#x1f62e; 浏览器的进化 一个运行在浏览器里面的操作系统。一个炫酷的量子纠缠网页。内嵌在浏览器里面的AI大模型。 随着web技术的迅猛发展&#xff0c;现代浏览器已经不仅仅是一个浏览网页的工具了。它的功能早已进…...

人工智能停滞:人工智能投资与人工智能采用之间的差距

关注公众号网络研究观获取更多内容。 人工智能继续影响着云战略&#xff0c;但人工智能的实施速度比大多数人预测的要慢。这让在人工智能上押下重注的技术提供商感到沮丧。到底发生了什么&#xff1f; Censuswide 代表 Red Hat 近期开展了一项调查&#xff0c;调查对象为英国…...

高效容器化技术(3)---docker镜像仓库

1.镜像仓库 Docker镜像仓库是存储和管理Docker镜像的地方。它允许用户上传、下载和共享Docker镜像&#xff0c;从而方便在不同的主机上部署和运行应用程序。 常见的Docker镜像仓库包括&#xff1a; Docker Hub&#xff1a;官方的Docker镜像仓库&#xff0c;包含了大量的公共镜…...

使用docker搭建lnmp运行WordPress

一&#xff0c;部署目的 使用 Docker 技术在单机上部署 LNMP 服务&#xff08;Linux Nginx MySQL PHP&#xff09;。部署并运行 WordPress 网站平台。掌握 Docker 容器间的互联及数据卷共享。 二&#xff0c;部署环境 操作系统&#xff1a;CentOS 7Docker 版本&#xff1…...

【设计模式】深入理解Python中的桥接模式(Bridge Pattern)

深入理解Python中的桥接模式&#xff08;Bridge Pattern&#xff09; 在软件开发中&#xff0c;我们常常会遇到一个类随着功能的扩展&#xff0c;继承层次越来越复杂&#xff0c;导致系统僵化&#xff0c;难以维护。桥接模式&#xff08;Bridge Pattern&#xff09;提供了一种…...

YOLOv11改进策略【卷积层】| SAConv 可切换的空洞卷积 二次创新C3k2

一、本文介绍 本文记录的是利用SAConv优化YOLOv11的目标检测网络模型。空洞卷积是一种在不增加参数量和计算量的情况下,通过在卷积核元素之间插入空洞来扩大滤波器视野的技术。并且为了使模型能够适应不同尺度的目标,本文利用SAConv将不同空洞率卷积结果进行结合,来获取更全…...

Javaweb基础-axios

Axios 是一个基于 Promise 的 HTTP 库&#xff0c;可以用在浏览器和 node.js 中。 GET方法 get请求第一种写法 //后端 Slf4j RestController RequestMapping("/demo") public class DemoController {RequestMapping("/getTest")// 被RequestParam标记的参数…...

智能EDA小白从0开始 —— DAY20 OrCAD

以下是对OrCAD和MATLAB两种EDA工具的深入解析&#xff0c;内容扩展至约2220字&#xff1a; OrCAD&#xff1a;电子设计自动化的强大工具 OrCAD&#xff0c;作为电子设计自动化&#xff08;EDA&#xff09;领域的佼佼者&#xff0c;为电子工程师们提供了一套全面的设计解决方案…...

C# WebApi 接口测试工具:WebApiTestClient应用技术详解

目录 一、引言 二、WebApiTestClient介绍 1、特性 2、应用场景 三、WebApiTestClient具体使用 1、WebApi项目引入组件 2、如何使用组件 1、修改Api.cshtml文件 2、配置读取注释的xml路径 3、测试接口 四、总结 一、引言 由于最近项目需要开发WebApi接口&…...

Qt_ymode自己实现

文章内容: 通过Qt实现Ymode协议的封装。通过传入的数据从里面一包一包拿数据。可以用作平时串口和网口的通信。也可以用来程序升级。 #include "ymodem.h"Ymodem::Ymodem() {m_data = nullptr; }Ymodem...

5.3章节python中字典:字典创建、元素访问、相关操作

1.字典的创建和删除 2.字典的访问和遍历 3.字典的相关操作 4.字典的生成式 一、字典的创建和删除 字典&#xff08;dictionary&#xff09;是一种用于存储键值对&#xff08;key-value pairs&#xff09;的数据结构。每个键&#xff08;key&#xff09;都映射到一个值&#xf…...

ECCV2024 Tracking 汇总

一、OneTrack: Demystifying the Conflict Between Detection and Tracking in End-to-End 3D Trackers paper&#xff1a; https://www.ecva.net/papers/eccv_2024/papers_ECCV/papers/01174.pdf 二、VETRA: A Dataset for Vehicle Tracking in Aerial Imagery paper&#…...

C语言知识点

命名规则&#xff1a; 字符组成&#xff1a;标识符只能由字母&#xff08;A~Z&#xff0c;a~z&#xff09;、数字&#xff08;0~9&#xff09;和下划线&#xff08;_&#xff09;组成。首字符要求&#xff1a;标识符的第一个字符必须是字母或下划线&#xff0c;不能是数字。长…...

ICMP协议以及ARP欺骗攻击

ping 命令使用的是 ICMP&#xff08;Internet Control Message Protocol&#xff09;协议&#xff0c;而不是 TCP 或 UDP 协议。因此&#xff0c;ping 命令并不使用特定的端口号。 ICMP 协议 ICMP 是一种网络层协议&#xff0c;主要用于在 IP 网络中传递控制消息。ping 命令利…...

qt5.12.12插件机制无法加载插件问题

环境&#xff1a;win11 vs2015 qt5.12.12 问题描述&#xff1a;确保插件代码正确的情况下&#xff0c;无法解析插件接口&#xff08;即QPluginLoader类的instance(); 返回为空&#xff09;。 问题现象&#xff1a;1、qt5.12.12的debug下无法解析&#xff1b;2、release下禁…...