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

作者: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
投稿

猜你喜欢

  • 基于SpringMVC的全局异常处理器介绍

    2023-11-23 20:55:58
  • 带你详细了解Java值传递和引用传递

    2023-02-19 08:42:26
  • java POI解析Excel 之数据转换公用方法(推荐)

    2023-06-10 11:04:53
  • SpringBoot过滤器的使用

    2023-08-28 21:28:56
  • Java实现去除文档阴影的示例代码

    2023-08-31 11:45:48
  • Java设计模式之职责链模式详解

    2023-01-26 21:16:26
  • 一文带你真正理解Java中的内部类

    2023-11-24 20:42:07
  • 详解SpringMVC如何进行数据回显

    2023-09-12 08:48:15
  • SpringBoot消息国际化配置实现过程解析

    2023-05-16 01:19:22
  • SpringBoot 实现自定义的 @ConditionalOnXXX 注解示例详解

    2023-04-04 03:37:18
  • java中functional interface的分类和使用详解

    2021-09-15 15:59:20
  • 打印Java程序的线程栈信息方式

    2021-11-02 19:00:28
  • JavaCV实现照片马赛克效果

    2023-04-27 15:55:14
  • 学习Java九大内置对象

    2023-10-13 01:10:10
  • 浅谈Spring自定义注解从入门到精通

    2023-11-25 03:59:12
  • Spring Security实现用户名密码登录详解

    2021-05-24 14:32:36
  • Spring集成MyBatis 及Aop分页的实现代码

    2022-01-06 14:30:47
  • Spring Boot 2.7.6整合redis与低版本的区别

    2023-11-11 19:44:56
  • Flutter添加页面过渡动画实现步骤

    2023-08-20 09:06:20
  • jQuery.event.trigger()的简单解释

    2023-05-24 03:41:37
  • asp之家 软件编程 m.aspxhome.com