尚医通 (二十六) --------- 科室接口开发

news2024/12/23 12:43:59

目录

  • 一、上传科室接口
    • 1. 添加科室基础类
    • 2. 上传科室
  • 二、查询科室接口
  • 三、删除科室接口


一、上传科室接口

1. 添加科室基础类

A、添加 model

说明:由于实体对象没有逻辑,我们已经统一导入
com.fancy.yygh.model.hosp.Department

B、添加 repository

添加 com.fancy.yygh.hosp.repository.DepartmentRepository

package com.fancy.yygh.hosp.repository;


@Repository
public interface DepartmentRepository extends MongoRepository<Department,String> {

}

C、添加 service 接口及实现类

添加 com.fancy.yygh.hosp.service.DepartmentService 接口

package com.fancy.yygh.hosp.service;


public interface DepartmentService {

}

添加com.fancy.yygh.hosp.service.impl.DepartmentServiceImpl 接口实现

package com.fancy.yygh.hosp.service.impl;

@Service
@Slf4j
public class DepartmentServiceImpl implements DepartmentService {
	@Autowired
	private DepartmentRepository departmentRepository;
}

2. 上传科室

A、上传科室

医院编号是平台分配的,全局唯一,科室编号为医院自己的编号,相对医院唯一,上传科室接口可以多次调用,如果医院编号与科室编号组合唯一为更新操作

B、接口数据分析

{
	"hoscode": "1000_0",
	"depcode": "200050923",
	"depname": "门诊部核酸检测门诊(东院)",
	"intro": "门诊部核酸检测门诊(东院)",
	"bigcode": "44f162029abb45f9ff0a5f743da0650d",
	"bigname": "体检科"
}

说明:一个大科室下可以有多个小科室,如图:
在这里插入图片描述

C、添加 service 接口

在 DepartmentService 类添加接口

/**
 * 上传科室信息
 * @param paramMap
*/
void save(Map<String, Object> paramMap);

说明:参数使用 Map,减少对象封装,有利于签名校验,后续会体验到

在 DepartmentServiceImpl 类添加实现

@Override
public void save(Map<String, Object> paramMap) {
	Department department = JSONObject.parseObject(JSONObject.toJSONString(paramMap), Department.class);
	Department targetDepartment = departmentRepository.getDepartmentByHoscodeAndDepcode(department.getHoscode(), department.getDepcode());
	if(null != targetDepartment) {
		//copy不为null的值,该方法为自定义方法
		BeanUtils.copyBean(department, targetDepartment, Department.class);
		departmentRepository.save(targetDepartment);
	} else {
		department.setCreateTime(new Date());
		department.setUpdateTime(new Date());
		department.setIsDeleted(0);
		departmentRepository.save(department);
	}
}

D、添加 repository 接口

在DepartmentRepository添加方法

Department getDepartmentByHoscodeAndDepcode(String hoscode, String depcode);

E、添加 controller 接口

在 ApiController 类添加接口

@Autowired
private DepartmentService departmentService;

@ApiOperation(value = "上传科室")
@PostMapping("saveDepartment")
public Result saveDepartment(HttpServletRequest request) {
	Map<String, Object> paramMap = HttpRequestHelper.switchMap(request.getParameterMap());
	//必须参数校验 略
	String hoscode = (String)paramMap.get("hoscode");
	if(StringUtils.isEmpty(hoscode)) {
		throw new YyghException(ResultCodeEnum.PARAM_ERROR);
	}
	//签名校验
	if(!HttpRequestHelper.isSignEquals(paramMap, hospitalSetService.getSignKey(hoscode))) {
		throw new YyghException(ResultCodeEnum.SIGN_ERROR);
	}
	
	departmentService.save(paramMap);
	return Result.ok();
}

二、查询科室接口

一个医院有多个科室,因此我们采取分页查询方式

A、添加 service 接口

在 DepartmentService 类添加接口

/**
 * 分页查询
 * @param page 当前页码
 * @param limit 每页记录数
 * @param departmentQueryVo 查询条件
 * @return
*/
Page<Department> selectPage(Integer page, Integer limit, DepartmentQueryVo departmentQueryVo);

在 DepartmentServiceImpl 类添加实现

@Override
public Page<Department> selectPage(Integer page, Integer limit, DepartmentQueryVo departmentQueryVo) {
	Sort sort = Sort.by(Sort.Direction.DESC, "createTime");
	//0为第一页
	Pageable pageable = PageRequest.of(page-1, limit, sort);

	Department department = new Department();
	BeanUtils.copyProperties(departmentQueryVo, department);
	department.setIsDeleted(0);

	//创建匹配器,即如何使用查询条件
	ExampleMatcher matcher = ExampleMatcher.matching() //构建对象
		.withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING) //改变默认字符串匹配方式:模糊查询
		.withIgnoreCase(true); //改变默认大小写忽略方式:忽略大小写

	//创建实例
	Example<Department> example = Example.of(department, matcher);
	Page<Department> pages = departmentRepository.findAll(example, pageable);
	return pages;
}

B、添加 controller 接口

在 ApiController 类添加接口

@ApiOperation(value = "获取分页列表")
@PostMapping("department/list")
public Result department(HttpServletRequest request) {
    Map<String, Object> paramMap = HttpRequestHelper.switchMap(request.getParameterMap());
	
	//必须参数校验 略
	String hoscode = (String)paramMap.get("hoscode");
	
	//非必填
	String depcode = (String)paramMap.get("depcode");
	int page = StringUtils.isEmpty(paramMap.get("page")) ? 1 : Integer.parseInt((String)paramMap.get("page"));
	int limit = StringUtils.isEmpty(paramMap.get("limit")) ? 10 : Integer.parseInt((String)paramMap.get("limit"));

	if(StringUtils.isEmpty(hoscode)) {
		throw new YyghException(ResultCodeEnum.PARAM_ERROR);
    }
	//签名校验
	if(!HttpRequestHelper.isSignEquals(paramMap, hospitalSetService.getSignKey(hoscode))) {
		throw new YyghException(ResultCodeEnum.SIGN_ERROR);
    }

	DepartmentQueryVo departmentQueryVo = new DepartmentQueryVo();
	departmentQueryVo.setHoscode(hoscode);
	departmentQueryVo.setDepcode(depcode);
	Page<Department> pageModel = departmentService.selectPage(page, limit, departmentQueryVo);
	return Result.ok(pageModel);
}

三、删除科室接口

根据医院编号与科室编号删除科室

A、添加 service 接口

在 DepartmentService 类添加接口

/**
 * 删除科室
 * @param hoscode
* @param depcode
*/
void remove(String hoscode, String depcode);

在 DepartmentServiceImpl 类添加实现

@Override
public void remove(String hoscode, String depcode) {
	Department department = departmentRepository.getDepartmentByHoscodeAndDepcode(hoscode, depcode);
	if(null != department) {
		//departmentRepository.delete(department);
		departmentRepository.deleteById(department.getId());
	}
}

B、添加 controller 接口

在 ApiController 类添加接口

@ApiOperation(value = "删除科室")
@PostMapping("department/remove")
public Result removeDepartment(HttpServletRequest request) {
	Map<String, Object> paramMap = HttpRequestHelper.switchMap(request.getParameterMap());
	//必须参数校验 略
	String hoscode = (String)paramMap.get("hoscode");
	//必填
	String depcode = (String)paramMap.get("depcode");
	if(StringUtils.isEmpty(hoscode)) {
		throw new YyghException(ResultCodeEnum.PARAM_ERROR);
	}
	//签名校验
	if(!HttpRequestHelper.isSignEquals(paramMap, hospitalSetService.getSignKey(hoscode))) {
		throw new YyghException(ResultCodeEnum.SIGN_ERROR);
	}
	
	departmentService.remove(hoscode, depcode);
	return Result.ok();
}

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

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

相关文章

多元正态分布

最广为使用的基于模型的聚类方法依赖于多元正态分布。多元正态分布是对p个变量正态分布的一种推广。该分布使用一组均值和协方差矩阵∑定义。协方差矩阵是变量间相关性的度量. 协方差矩阵∑由p个方差以及所有变量对的协方差σi,ji≠j&#xff09;构成。矩阵的行和列均用变量表…

闲活一:一步登天

标题不希望能被人搜到&#xff0c;因为目前没有任何技术含量&#xff0c;可行性也偏低&#xff0c;纯纯的预研阶段。 项目起步阶段是最无从下手的阶段&#xff0c;还是先明确大目标。我这个赛车要做什么&#xff0c;怎样去做。 做什么 我脑中蹦出的大方向是这样的 玩家体…

初识Matter协议

初识Matter协议什么是MatterMatter有什么用Matter的核心优势Matter网络的组网方式什么是Matter Matter的概念最初在2019年12月被提出&#xff0c;当时被称为CHIP(Connected Home Over IP)&#xff0c;之后在2021年5月作为全新的连接标准被正式提出。 CHIP是由AWS、Google、App…

1. 算法简介

1.2 二分查找 二分查找是一种算法&#xff0c;其输入是一个有序的元素列表。如果要查找的元素包含在列表中&#xff0c;二分查找返回其位置; 否则返回null 。 使用二分查找时&#xff0c;最多需要检查log n 个元素。 仅当列表是有序的时候&#xff0c;二分查找才管用。 完整…

XCTF1-web php

场景一&#xff1a;simple_php 题目描述 小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。 进入场景 给了php代码&#xff0c;分析一下 GET传入两个参数a,b aaa_GET[“a”];其中的是为了防止没有$_GET[‘a’]出现错误提示 $a0 and a&#xff1a;a等于0,且a是…

Spring之Bean生命周期之二--- Instantiation阶段

在BeanFactory中&#xff0c;主要的流程就是创建Bean的过程&#xff0c; // 核心方法: 创建Bean实列对象,并且生命周期的动作大部分都在这里。Object beanInstance doCreateBean(beanName, mbdToUse, args);Bean的生命周期包括: 实例化设置属性值初始化值销毁 实例化Bean在…

[附源码]java毕业设计网上报销管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

西电计网ARP欺骗实验

ARP欺骗实验 文章目录ARP欺骗实验Cloud云设备连接本机网卡ARP欺骗实验Cain基本设置主机发现ARP欺骗的原理实现Cain干了啥DNS欺骗实验Cain干了啥欺骗转发实验Cloud云设备 想查一下华为官方使用手册,看看云到底是个啥,但是查不到. 在ensp模拟器中云设备这篇博客上这样写的: eNS…

基于K-means(K均值)聚类算法的图像特征分割研究-含Matlab代码

⭕⭕ 目 录 ⭕⭕✳️ 一、引言✳️ 二、K-means 聚类算法原理✳️ 三、图像聚类分割实例✳️ 四、参考文献✳️ 五、Matlab代码获取✳️ 一、引言 图像分割是一个跨学科的研究方向&#xff0c;涉及人工智能、机器学习、模式识别等。随着计算机技术的不断发展&#xff0c;图像分…

java毕业设计——基于java+Socket+sqlserver的网络通信系统设计与实现(毕业论文+程序源码)——网络通信系统

基于javaSocketsqlserver的网络通信系统设计与实现&#xff08;毕业论文程序源码&#xff09; 大家好&#xff0c;今天给大家介绍基于javaSocketsqlserver的网络通信系统设计与实现&#xff0c;文章末尾附有本毕业设计的论文和源码下载地址哦。 文章目录&#xff1a; 基于jav…

2022-11-20 每日打卡:Leetcode第 320 场周赛

2022-11-20 每日打卡&#xff1a;Leetcode第 320 场周赛 题解主要参考&#xff1a;https://www.bilibili.com/video/BV1A3411f7H3/?spm_id_from333.999.0.0&vd_source6fcf135348bf11256bcd756a96851533 6241. 数组中不等三元组的数目 对于排列组合问题&#xff0c;关注“…

实现微服务:匹配系统(中)

目录 1、同步两个玩家的位置思路解析 2、实现了三个棋盘的同步原理 3、初始化一下我们的playerAplayerB 4、什么是线程为什么要用多线程&#xff1f; 5、如何去实现等待两名玩家输入 6、前端向后端发消息 7、在数据库中创建表record 1、同步两个玩家的位置思路解析 除了地…

koa框架(一) 认识koa

koa ​koa是express原班人马打造的轻量、健壮、富有表现力的nodejs框架。目前koa有koa1和koa2两个版本&#xff1b;koa2依赖Node.js 7.6.0或者更高版本&#xff1b;koa不在内核方法中绑定任何中间件&#xff0c;它仅仅是一个轻量级的函数库&#xff0c;几乎所有功能都必须通过…

[附源码]java毕业设计网上点餐系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

干货分享丨第五届“大数据安全与隐私计算”学术会议

开放隐私计算 开放隐私计算 开放隐私计算OpenMPC是国内第一个且影响力最大的隐私计算开放社区。社区秉承开放共享的精神&#xff0c;专注于隐私计算行业的研究与布道。社区致力于隐私计算技术的传播&#xff0c;愿成为中国 “隐私计算最后一公里的服务区”。 177篇原创内容 …

网页设计大作业模板-网页设计大作业(文房四宝 5页)-实训素材

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 茶文化网站 | 中华传统文化题材 | 京剧文化水墨风书画 | 中国民间年画文化艺术网站 | 等网站的设计与制作| HTML期末大学生网页设计作业&#xff0c;W…

通过STM32F103C8T6配置完成基于SPI协议的0.96OLED屏显

文章目录前言一、SPI协议1、应用2、组成二、OLED屏显和汉字点阵编码原理1、汉字点阵编码原理2、OLED屏显三、OLED模块四、显示自己的学号和姓名五、显示温湿度&滑动显示长字符六、总结七、参考资料前言 硬件&#xff1a;stm32f103c8t6 核心板软件&#xff1a;keil5 mdk软件…

混沌引力搜索算法(CGSA)解决三个机械工程设计问题(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

_linux 进程间通信(匿名管道)

文章目录1. 匿名管道2. 利用通过匿名管道实现进程间通信2.1 实现思路2.2 父子进程实现通信的简单代码2.3 结果展示如下3. 总结管道特点4. 扩展&#xff08;好玩的--简单内存池&#xff09;思路&#xff1a;代码&#xff1a;1. 匿名管道 查看手册(man)&#xff1a; 翻译 #incl…

[附源码]计算机毕业设计JAVA基于JSP技术的新电商助农平台

[附源码]计算机毕业设计JAVA基于JSP技术的新电商助农平台 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; …