实战分布式医疗挂号系统开发医院科室及排班的接口
作者:Hudie. 时间:2021-05-27 14:21:16
一、医院接口
本文继续开发分布式医疗挂号系统,进入到医院信息、科室、排版接口的开发,内容比较枯燥。关于医院医院信息的上传接口实现,已经在上一篇文章中进行了介绍,本文继续对接口进行扩展。
查询医院接口
Controller层:
@PostMapping("hospital/show")
public Result getHospital(HttpServletRequest request) {
// 1.将从医院管理表传递过来的医院信息转换为Object类型
Map<String, String[]> requestMap = request.getParameterMap();
Map<String, Object> paramMap = HttpRequestHelper.switchMap(requestMap);
// 2.获取医院管理表中的密钥(已经使用MD5加密好了)
String hospSign = (String) paramMap.get("sign");
// 3.获取医院设置表中的密钥并进行MD5加密
String hoscode = (String) paramMap.get("hoscode");
String signKey = hospitalSetService.getSignKey(hoscode);
String signKeyMd5 = MD5.encrypt(signKey);
// 4.密钥不匹配就抛出错误
if (!hospSign.equals(signKeyMd5)) {
throw new YyghException(ResultCodeEnum.SIGN_ERROR);
}
// 5.执行查询操作
Hospital hospital = hospitalService.getByHoscode(hoscode);
return Result.ok(hospital);
}
Service接口:
Hospital getByHoscode(String hoscode);
Service实现类:
@Override
public Hospital getByHoscode(String hoscode) {
Hospital hospital = hospitalRepository.getHospitalByHoscode(hoscode);
return hospital;
}
Repository层:
@Repository
public interface HospitalRepository extends MongoRepository<Hospital,String> {
/**
* 根据HosCode获得记录
* @param hoscode
* @return
*/
Hospital getHospitalByHoscode(String hoscode);
}
二、科室接口
(1)上传科室功能
上传科室Controller层:
@PostMapping("saveDepartment")
public Result saveDepartment(HttpServletRequest request) {
// 1.将传递过来的数组类型转换为Object类型
Map<String, String[]> requestMap = request.getParameterMap();
Map<String, Object> paramMap = HttpRequestHelper.switchMap(requestMap);
// 2.获取医院管理表中的密钥(已经使用MD5加密好了)
String hospSign = (String) paramMap.get("sign");
// 3.获取医院设置表中的密钥并进行MD5加密
String hoscode = (String) paramMap.get("hoscode");
String signKey = hospitalSetService.getSignKey(hoscode);
String signKeyMd5 = MD5.encrypt(signKey);
// 4.密钥不匹配就抛出错误
if (!hospSign.equals(signKeyMd5)) {
throw new YyghException(ResultCodeEnum.SIGN_ERROR);
}
// 5.执行上传科室操作
departmentService.save(paramMap);
return Result.ok();
}
上传科室Service接口:
void save(Map<String, Object> paramMap);
上传科室Service实现类:
@Override
public void save(Map<String, Object> paramMap) {
// 1.把paramMap集合转换为Department对象(借助JSONObject工具)
String paramMapString = JSONObject.toJSONString(paramMap);
Department department = JSONObject.parseObject(paramMapString, Department.class);
// 2.根据医院编号和科室编号查询科室信息
Department departmentExist = departmentRepository
.getDepartmentByHoscodeAndDepcode(department.getHoscode(), department.getDepcode());
// 3.如果有就执行更新,没有就执行保存
if (null != departmentExist) {// 更新
departmentExist.setUpdateTime(new Date());
departmentExist.setIsDeleted(0);
departmentRepository.save(departmentExist);
} else {// 保存
department.setCreateTime(new Date());
department.setUpdateTime(new Date());
department.setIsDeleted(0);
departmentRepository.save(department);
}
}
Repositroy层交由Spring Data
去自动完成。
(2)查询科室功能
查询科室Controller层:
@PostMapping("department/list")
public Result findDepartment(HttpServletRequest request) {
// 1.将传递过来的科室转换为Object类型
Map<String, String[]> requestMap = request.getParameterMap();
Map<String, Object> paramMap = HttpRequestHelper.switchMap(requestMap);
// 3.获取医院编号
String hoscode = (String) paramMap.get("hoscode");
// 2.获取医院管理表中的密钥(已经使用MD5加密好了)
String hospSign = (String) paramMap.get("sign");
// 当前页和每页记录数
int page = StringUtils.isEmpty(paramMap.get("page")) ? 1 : Integer.parseInt((String) paramMap.get("page"));
int limit = StringUtils.isEmpty(paramMap.get("limit")) ? 1 : Integer.parseInt((String) paramMap.get("limit"));
String signKey = hospitalSetService.getSignKey(hoscode);
String signKeyMd5 = MD5.encrypt(signKey);
// 4.密钥不匹配就抛出错误
if (!hospSign.equals(signKeyMd5)) {
throw new YyghException(ResultCodeEnum.SIGN_ERROR);
}
DepartmentQueryVo departmentQueryVo = new DepartmentQueryVo();
departmentQueryVo.setHoscode(hoscode);
// 执行查询科室操作
Page<Department> pageModel = departmentService.findPageDepartment(page, limit, departmentQueryVo);
return Result.ok(pageModel);
}
查询科室Service接口:
Page<Department> findPageDepartment(int page, int limit, DepartmentQueryVo departmentQueryVo);
查询科室Service实现类:
@Override
public Page<Department> findPageDepartment(int page, int limit, DepartmentQueryVo departmentQueryVo) {
// 创建Pageable对象,设置当前页和每页记录数
PageRequest pageable = PageRequest.of(page - 1, limit);
// 创建Example对象
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> all = departmentRepository.findAll(example, pageable);
return all;
}
Repositroy层交由Spring Data
去自动完成。
(3)删除科室功能
删除科室Controller层:
@PostMapping("department/remove")
public Result removeDepartment(HttpServletRequest request) {
// 1.将传递过来的科室转换为Object类型
Map<String, String[]> requestMap = request.getParameterMap();
Map<String, Object> paramMap = HttpRequestHelper.switchMap(requestMap);
// 获取科室编号 和 医院编号
String depcode = (String) paramMap.get("depcode");
String hoscode = (String) paramMap.get("hoscode");
// 2.获取医院管理表中的密钥(已经使用MD5加密好了)
String hospSign = (String) paramMap.get("sign");
// 3.获取医院设置表中的密钥并进行MD5加密
String signKey = hospitalSetService.getSignKey(hoscode);
String signKeyMd5 = MD5.encrypt(signKey);
// 4.密钥不匹配就抛出错误
if (!hospSign.equals(signKeyMd5)) {
throw new YyghException(ResultCodeEnum.SIGN_ERROR);
}
departmentService.remove(hoscode, depcode);
return Result.ok();
}
删除科室Service接口:
@PostMapping("department/remove")
public Result removeDepartment(HttpServletRequest request) {
// 1.将传递过来的科室转换为Object类型
Map<String, String[]> requestMap = request.getParameterMap();
Map<String, Object> paramMap = HttpRequestHelper.switchMap(requestMap);
// 获取科室编号 和 医院编号
String depcode = (String) paramMap.get("depcode");
String hoscode = (String) paramMap.get("hoscode");
// 2.获取医院管理表中的密钥(已经使用MD5加密好了)
String hospSign = (String) paramMap.get("sign");
// 3.获取医院设置表中的密钥并进行MD5加密
String signKey = hospitalSetService.getSignKey(hoscode);
String signKeyMd5 = MD5.encrypt(signKey);
// 4.密钥不匹配就抛出错误
if (!hospSign.equals(signKeyMd5)) {
throw new YyghException(ResultCodeEnum.SIGN_ERROR);
}
departmentService.remove(hoscode, depcode);
return Result.ok();
}
删除科室Service接口:
void remove(String hoscode, String depcode);
删除科室Service实现类:
@Override
public void remove(String hoscode, String depcode) {
// 1.根据 医院编号 和 科室编号 查询科室信息
Department department = departmentRepository.getDepartmentByHoscodeAndDepcode(hoscode, depcode);
if (null != department) {
// 执行删除方法
departmentRepository.deleteById(department.getId());
}
}
Repositroy层交由Spring Data
去自动完成。
三、排班接口
(1)上传排班功能
上传排班Controller层:
@PostMapping("saveSchedule")
public Result saveSchedule(HttpServletRequest request) {
Map<String, String[]> requestMap = request.getParameterMap();
Map<String, Object> paramMap = HttpRequestHelper.switchMap(requestMap);
// 获取科室编号 和 医院编号
String hoscode = (String) paramMap.get("hoscode");
// 2.获取医院管理表中的密钥(已经使用MD5加密好了)
String hospSign = (String) paramMap.get("sign");
// 3.获取医院设置表中的密钥并进行MD5加密
String signKey = hospitalSetService.getSignKey(hoscode);
String signKeyMd5 = MD5.encrypt(signKey);
// 4.密钥不匹配就抛出错误
if (!hospSign.equals(signKeyMd5)) {
throw new YyghException(ResultCodeEnum.SIGN_ERROR);
}
// 执行上传操作
scheduleService.save(paramMap);
return Result.ok();
}
上传排班Service接口:
void save(Map<String, Object> paramMap);
上传排班Service实现类:
@Override
public void save(Map<String, Object> paramMap) {
// 1.把paramMap集合转换为Department对象(借助JSONObject工具)
String paramMapString = JSONObject.toJSONString(paramMap);
Schedule schedule = JSONObject.parseObject(paramMapString, Schedule.class);
// 2.根据 医院编号 和 排班编号 查询科室信息
Schedule scheduleExist = scheduleRepository
.getScheduleByHoscodeAndHosScheduleId(schedule.getHoscode(), schedule.getHosScheduleId());
// 3.如果有就执行更新,没有就执行保存
if (null != scheduleExist) {// 更新
scheduleExist.setUpdateTime(new Date());
scheduleExist.setIsDeleted(0);
scheduleExist.setStatus(1);
scheduleRepository.save(scheduleExist);
} else {// 保存
schedule.setCreateTime(new Date());
schedule.setUpdateTime(new Date());
schedule.setIsDeleted(0);
schedule.setStatus(1);
scheduleRepository.save(schedule);
}
}
Repositroy层交由Spring Data
去自动完成。
(2)查询排班功能
查询排班Controller层:
@PostMapping("schedule/list")
public Result findSchedule(HttpServletRequest request) {
Map<String, String[]> requestMap = request.getParameterMap();
Map<String, Object> paramMap = HttpRequestHelper.switchMap(requestMap);
// 3.获取医院编号,科室编号
String hoscode = (String) paramMap.get("hoscode");
String depcode = (String) paramMap.get("depcode");
// 2.获取医院管理表中的密钥(已经使用MD5加密好了)
String hospSign = (String) paramMap.get("sign");
// 当前页和每页记录数
int page = StringUtils.isEmpty(paramMap.get("page")) ? 1 : Integer.parseInt((String) paramMap.get("page"));
int limit = StringUtils.isEmpty(paramMap.get("limit")) ? 1 : Integer.parseInt((String) paramMap.get("limit"));
String signKey = hospitalSetService.getSignKey(hoscode);
String signKeyMd5 = MD5.encrypt(signKey);
// 4.密钥不匹配就抛出错误
if (!hospSign.equals(signKeyMd5)) {
throw new YyghException(ResultCodeEnum.SIGN_ERROR);
}
ScheduleQueryVo scheduleQueryVo = new ScheduleQueryVo();
scheduleQueryVo.setHoscode(hoscode);
scheduleQueryVo.setHoscode(depcode);
// 执行查询科室操作
Page<Schedule> pageModel = scheduleService.findPageSchedule(page, limit, scheduleQueryVo);
return Result.ok(pageModel);
}
查询排班Service接口:
Page<Schedule> findPageSchedule(int page, int limit, ScheduleQueryVo scheduleQueryVo);
查询排班Service实现类:
@Override
public Page<Schedule> findPageSchedule(int page, int limit, ScheduleQueryVo scheduleQueryVo) {
// 创建Pageable对象,设置当前页和每页记录数
PageRequest pageable = PageRequest.of(page - 1, limit);
// 创建Example对象
Schedule schedule = new Schedule();
BeanUtils.copyProperties(scheduleQueryVo, schedule);
schedule.setIsDeleted(0);
schedule.setStatus(1);
ExampleMatcher matcher = ExampleMatcher.matching()
.withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING)
.withIgnoreCase(true);
Example<Schedule> example = Example.of(schedule, matcher);
Page<Schedule> all = scheduleRepository.findAll(example, pageable);
return all;
}
Repositroy层交由Spring Data
去自动完成。
(3)删除排班功能
删除排班Controller层:
@PostMapping("schedule/remove")
public Result removeSchedule(HttpServletRequest request){
Map<String, String[]> requestMap = request.getParameterMap();
Map<String, Object> paramMap = HttpRequestHelper.switchMap(requestMap);
// 获取医院编号和排班编号
String hoscode = (String) paramMap.get("hoscode");
String hosScheduleId = (String) paramMap.get("hosScheduleId");
// 2.获取医院管理表中的密钥(已经使用MD5加密好了)
String hospSign = (String) paramMap.get("sign");
// 3.获取医院设置表中的密钥并进行MD5加密
String signKey = hospitalSetService.getSignKey(hoscode);
String signKeyMd5 = MD5.encrypt(signKey);
// 4.密钥不匹配就抛出错误
if (!hospSign.equals(signKeyMd5)) {
throw new YyghException(ResultCodeEnum.SIGN_ERROR);
}
scheduleService.removeSchedule(hoscode, hosScheduleId);
return Result.ok();
}
删除排班Service接口:
void removeSchedule(String hoscode, String hosScheduleId);
删除排班Service实现类:
@PostMapping("schedule/remove")
public Result removeSchedule(HttpServletRequest request){
Map<String, String[]> requestMap = request.getParameterMap();
Map<String, Object> paramMap = HttpRequestHelper.switchMap(requestMap);
// 获取医院编号和排班编号
String hoscode = (String) paramMap.get("hoscode");
String hosScheduleId = (String) paramMap.get("hosScheduleId");
// 2.获取医院管理表中的密钥(已经使用MD5加密好了)
String hospSign = (String) paramMap.get("sign");
// 3.获取医院设置表中的密钥并进行MD5加密
String signKey = hospitalSetService.getSignKey(hoscode);
String signKeyMd5 = MD5.encrypt(signKey);
// 4.密钥不匹配就抛出错误
if (!hospSign.equals(signKeyMd5)) {
throw new YyghException(ResultCodeEnum.SIGN_ERROR);
}
scheduleService.removeSchedule(hoscode, hosScheduleId);
return Result.ok();
}
Repositroy层交由Spring Data
去自动完成。
来源:https://guoqianliang.blog.csdn.net/article/details/116008214
标签:分布式,医疗挂号,科室排班,接口开发
0
投稿
猜你喜欢
详解Unity 实现语音识别功能
2023-11-30 22:01:11
SpringBoot实现接口数据的加解密功能
2023-06-30 00:11:01
C# 9.0新特性——扩展方法GetEnumerator支持foreach循环
2021-08-27 22:38:09
C#byte数组传入C操作方法
2021-11-06 12:30:18
Unity实现切割图集工具
2021-07-03 23:14:57
C++实现扫雷游戏示例讲解
2022-05-03 18:49:05
C语言实现模拟银行系统
2022-01-17 08:40:27
Spring实战之SpEl语法实例详解
2023-09-18 07:56:03
js 交互在Flutter 中使用 webview_flutter
2023-07-20 22:40:14
Java事件处理机制(自定义事件)实例详解
2023-10-28 21:30:50
java实现消息队列的两种方式(小结)
2022-07-09 08:12:13
c#打包文件解压缩的实例
2022-07-22 11:20:20
基于java中两个对象属性的比较
2023-08-23 05:25:02
Spring4如何自定义@Value功能详解
2021-12-16 06:31:12
基于WPF实现代码查看器控件
2022-10-06 03:32:11
C#学习教程之Socket的简单使用
2022-09-07 18:15:04
c#中LINQ的基本用法(二)
2022-05-29 07:00:43
unity实现玻璃效果
2023-03-17 07:08:28
JAVA使用POI(XSSFWORKBOOK)读取EXCEL文件过程解析
2023-03-01 16:36:39
Android开发之绘制平面上的多边形功能分析
2023-12-13 13:31:57