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

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

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

预约挂号微服务模块搭建

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

1、EasyExcel-写操作

首先是在后端service-cmn引入相应依赖,接着创建实体类,并在对应属性上添加注解,设置表头内容

@Data
public class UserData {@ExcelProperty("用户编号")private  int uid;@ExcelProperty("用户名称")private  String username;
}

最终实现写操作代码

    public static void main(String[] args) {//构建数据list集合List<UserData> list = new ArrayList<>();for (int i = 0; i < 10; i++) {UserData data = new UserData();data.setUid(i);data.setUsername("lucy" + i);list.add(data);}//设置excel文件路径和文件名称String fileName = "C:\\Users\\666\\Desktop\\新建文件夹\\excel\\01.xlsx";//调用方法实现写操作EasyExcel.write(fileName, UserData.class).sheet("用户信息").doWrite(list);}

最终效果
在这里插入图片描述

2、EasyExcel-读操作

首先需要创建ExcelListener类,其继承AnalysisEventListener接口,并实现invokedoAfterAllAnalysedinvokeHeadMap等方法。

  • invoke:一行一行读取数据,从第二行读取数据
  • doAfterAllAnalysed:读取后执行
  • invokeHeadMap:当你读取 Excel 文件时, 可以提供表头的名称和对应的列索引映射

在测试类使用下行代码进行excel文件读取

  EasyExcel.read(fileName, UserData.class,new ExcelListener()).sheet().doRead();

3、EasyExcel-导出操作

目的:在前端导出数据,并导出到excel

DictController里添加方法importData,输入参数为HttpServletResponse response,进行导出数据字典操作。

其中在DictService接口中声明并在DictServiceImpl实现exportDictData方法,实现具体逻辑功能。

依靠传递的repsonse对象,可以实现下载设置:

Content-disposition 头部用于指示浏览器处理响应内容的方式。attachment 表示内容应该被当作附件下载

        response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系String fileName = "dict";response.setHeader("Content-disposition", "attachment;filename="+ fileName + ".xlsx");

写操作传递的类是DictEeVo.class,它与Dict的区别是仅包含必要的字段,专注于数据的展示,去掉了与数据库操作无关的字段(如时间和删除标记),而通过baseMapper返回的是Dict类型的List,所以要进行循环赋值。

BeanUtils 提供了一个简单的方式来复制对象的属性。这个方法会将 dictEeVo 对象的属性值复制到 dict 对象中,前提是这两个对象具有相同名称和兼容类型的属性。

       for(Dict dict : dictList) {DictEeVo dictEeVo = new DictEeVo();BeanUtils.copyProperties((dict, dictEeVo);dictVoList.add(dictEeVo);}

最后在EasyExcel中写入dictVoList即可。

       EasyExcel.write(response.getOutputStream(), DictEeVo.class).sheet("dict").doWrite(dictVoList);

前端操作
list.vue放置element-ui按钮标签,其绑定方法exportData

在mehtods编写该方法

它会通过将浏览器的当前地址 (window.location.href) 设置为指定的 URL 来发起请求。

        exportData(){//调用导出接口window.location.href="http://localhost:8202/admin/cmn/dict/exportData"}

4、EasyExcel-导入操作

目的:在excel中写入数据,并导入到数据库

DictController里添加方法importData,输入参数为MultipartFile file,进行导入数据字典操作。

其中在DictService接口中声明并在DictServiceImpl实现importDictData方法,实现具体逻辑功能。

MultipartFile 是 Spring Framework 中的一个接口,用于处理上传的文件。它提供了对上传文件的抽象,允许开发者在控制器中轻松地处理文件上传的操作。

创建DictListener,并构造器传参basemapper,其中basemapper用来执行数据库添加操作,而操作对象只能是Dict,所以调用方法对dict进行复制操作

    public DictListener(DictSetMapper dictSetMapper) {this.dictSetMapper = dictSetMapper;}...@Overridepublic void invoke(DictEeVo dictEeVo, AnalysisContext analysisContext) {//调用方法添加数据库Dict dict = new Dict();BeanUtils.copyProperties(dictEeVo,dict);dictSetMapper.insert(dict);}

前端处理

在导出的element-ui代码下面添加一行导入标签代码,其绑定方法importData

还希望在导入时,能出现一个弹窗,还是需要在<temple>中添加相关代码(放在table标签后)

dialogImportVisible在默认值设置为false,当其为true时,弹窗出现

:multiple是否上传多个组件

:on-success="onUploadSuccess"上传成功调用该方法,该方法设置执行关闭弹窗刷新页面(自己编写的)

:action="'http://localhost:8202/admin/cmn/dict/importData'"点击上传时调用该方法,附url路径

<el-dialog title="导入":visible.sync="dialogImportVisible"width="480px">
<el-form label-position="right"label-width="170px"><el-form-item label="文件">
<el-upload
:multiple="false"
:on-success="onUploadSuccess"
:action="'http://localhost:8202/admin/cmn/dict/importData'"
class="upload-demo">
<el-button size="small"type="primary">点击上传</el-button>
<div slot="tip"class="el-upload__tip">只能上传xls文件,且不超过500kb</div>
</el-upload>
</el-form-item></el-form>
<div slot="footer"class="dialog-footer">
<el-button @click="dialogImportVisible = false">取消
</el-button>
</div>
</el-dialog>

在这里插入图片描述
在数据库中,需要把is_deleted字段默认值从1改为0,不然前端显示不出来

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 Python 的 BeautifulSoup(bs4)解析复杂 HTML

使用 Python 的 BeautifulSoup&#xff08;bs4&#xff09;解析复杂 HTML&#xff1a;详解与示例 在 Web 开发和数据分析中&#xff0c;解析 HTML 是一个常见的任务&#xff0c;尤其是当你需要从网页中提取数据时。Python 提供了多个库来处理 HTML&#xff0c;其中最受欢迎的就…

ElasticSearch备考 -- index rollover

一、题目 给索引my-index-000001&#xff0c;创建别名my-index&#xff0c;并设置rollover&#xff0c;满足以下三个条件的 The index was created 7 or more days ago.The index contains 5 or more documents.The index’s largest primary shard is 1GB or larger. 二、思考…

nodejs包管理器pnpm

简介 通常在nodejs项目中我们使用npm或者yarn做为默认的包管理器&#xff0c;但是pnpm的出现让我们的包管理器有了更多的选择&#xff0c;pnpm相比npm具有以下优势&#xff1a; 速度更快&#xff0c;pnpm在安装依赖时&#xff0c;会将依赖包缓存到全局目录&#xff0c;下次安…

vue3当中vscode给ref定义的变量使用时自动加上.value

vue3当中vscode给ref定义的变量使用时自动加上.value 1.在扩展中找到vue-office进行安装 2.安装完成后点击设置找到“dot value”勾起即可

Flutter 状态管理框架Get

状态管理框架 Get的使用 目录 状态管理框架 Get的使用 GetMaterialApp 路由的注册 路由的跳转 middlewares的使用 组件使用 defaultDialog bottomSheet snackbar 状态刷新有很多种方式 ValueBuilder Obx 基础使用 是时候引入GetxController, 也是Get里面的常用的 G…

香港国际金融市场的多元化投资策略与风险管理

香港国际金融市场长期以来以其开放性和稳健性闻名&#xff0c;吸引了全球众多投资者。随着全球经济日益互联&#xff0c;投资者在香港市场可以获得多样化的资产选择&#xff0c;包括股票、债券、基金、外汇等多元化金融产品。本文将探讨香港国际金融市场的投资策略和风险管理措…

远程IO控制器ZLAN6808-3 使用JSON定时下发执行DO通断

一.使用场景 对于数据采集控制点是按照线性分布的场景&#xff0c;比如智慧园区的路灯、桥梁、路灯、数字化工厂、停车场车位监测、智慧停车场、智能停车架、楼宇自动控制系统等场景&#xff0c;采用以太网/4G远程I0模块要比采用PLC节省更多的成本。远程IO控制器在很多场景中作…

【无人机设计与控制】基于Astar算法无人机路径规划,优化路径平滑

摘要 本文提出了一种基于A算法的无人机路径规划方法&#xff0c;并通过路径平滑优化提升路径的可行性和安全性。传统A算法在生成路径时&#xff0c;常因路径节点分布不规则导致路径不平滑&#xff0c;影响无人机的飞行效率和安全性。本文通过引入贝塞尔曲线对A*算法生成的路径…

【自动化测试之oracle数据库】MacOs如何安装oracle- client

操作系统为Mac OS&#xff0c;本地在pycharm上跑自动化脚本时&#xff0c;因为有操作oracle数据库的部分&#xff0c;所以需要安装oracle数据库的客户端&#xff0c;并install cx_oracle,本文主要介绍如何在macOS上完成安装&#xff0c;并在python自动化测试代码中配置&#xf…

WPF入门_06资源和样式

目录 1、资源基础介绍 2、静态资源和动态资源区别 3、资源字典 4、共享资源的方法 5、在Custom Control Library中定义和使用共享资源 6、样式 7、样式触发器 1、资源基础介绍 尽管每个元素都提供了Resources属性,但通常在窗口级别上定义资源,如下定义一个字符串资源…

哥德巴赫猜想渐行渐远

我现在的工作&#xff0c;表明经典分析可能出了问题&#xff0c;如此则连Vinogradov的三素数定理都不成立了&#xff0c;更别说基于L-函数方程的陈氏定理“12”了。事实上即使L-函数方程成立&#xff0c;由于我指出Siegel定理不成立&#xff0c;陈景润和张益唐的工作就不成立。…

使用Python和Matplotlib模拟3D海浪动画

使用Python和Matplotlib模拟3D海浪动画 在计算机图形学和动画领域&#xff0c;模拟逼真的海洋表面一直是一个具有挑战性的问题。本文将介绍如何使用Python的Matplotlib库和Gerstner波浪模型&#xff0c;创建一个动态的3D海浪动画。通过叠加多个波浪&#xff0c;我们可以生成复…

【iOS】YYModel初学习

前言 YYModel是一个OC的开源库&#xff0c;用于处理json数据和iOS应用中的数据的相互转换&#xff0c;在使用场景中非常的实用。 常用方法 // 字典转模型(nullable instancetype)yy_modelWithDictionary:(NSDictionary *)dictionary; // json转模型(nullable instancetype)y…

【Fargo】14: sockaddr_in 、 sockaddr 、sockaddr_storage 区别及转换

sockaddr_in 和 sockaddr struct recv_addr_; uv_ip4_addr(ip.c_str(), port, &recv_addr); 这里libuv用的是sockaddr_in ,mediasoup用的是sockaddr,二者有什么区别,可以直接转换么sockaddr 看起来更为通用 差异和特定的用途 在网络编程中,sockaddr_in 和 sockaddr 是…

HarmonyOS ArkTS与C++数据类型转换

1. HarmonyOS ArkTS与C数据类型转换 本文介绍了C与TS各自数据类型与互相之间的数据类型转换&#xff0c;在需要使用C模块时可以快速上手对各种数据类型进行转换。 1.1. 概述 HarmonyOS的主力开发语言是ArkTS&#xff0c;也提供了C语言的支持&#xff0c;对于一些能力&#xff…

react mackDowan 渲染文本,图片,视频

需要安装&#xff1a;react-markdown&#xff1b;remark-gfm "react-markdown": "^9.0.1", "remark-gfm": "^4.0.0", import { useEffect, useState } from react; import ReactMarkdown, { Components } from react-markdown;functio…

iOS_响应者链 Responder Chain

文章目录 简述Hit-Test 机制 &#xff08;找到最佳响应者&#xff09;响应者链 Responder chain应用获取当前View的控制器对象&#xff1a;手势穿透&#xff1a; 简述 传递链&#xff1a; 系统向离用户最近的view传递。 UIKit –> active app’s event queue –> window …

【设计模式系列】迭代器模式(七)

一、什么是迭代器模式 迭代器模式&#xff08;Iterator Pattern&#xff09;是一种行为型设计模式&#xff0c;它提供一种方法来顺序访问一个聚合对象中的各个元素&#xff0c;而不暴露其内部的表示。迭代器模式将集合的遍历过程封装在一个独立的迭代器对象中&#xff0c;这样…

纯GO语言开发RTSP流媒体服务器-RTSP推流直播、本地保存录像、录像回放、http-flv及hls协议分发

温馨提示&#xff1a;我们分享的文章是给需要的人&#xff0c;不需要的人请绕过&#xff0c;文明浏览&#xff0c;误恶语伤人&#xff01; 前言 在软件开发中遇到使用流媒体音视频的行业比较多&#xff0c;如安防监控系统、无人机巡逻视频上云处理、直播平台、教育与企业培训…

如何快速使用Cesium完成项目

要快速使用Cesium完成项目&#xff0c;可以按照以下步骤进行&#xff1a; 学习基础知识&#xff1a; 首先&#xff0c;了解Cesium的基本概念和功能。可以通过阅读Cesium的官方文档和一些入门教程来掌握基础知识。例如&#xff0c;可以参考“Cesium速成教程&#xff1a;一小时入…