实战分布式医疗挂号系统开发医院科室及排班的接口

作者: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
  • asp之家 软件编程 m.aspxhome.com