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

目录
  • 一、医院接口
    • 查询医院接口
  • 二、科室接口
    • (1)上传科室功能
    • (2)查询科室功能
    • (3)删除科室功能
  • 三、排班接口
    • (1)上传排班功能
    • (2)查询排班功能
    • (3)删除排班功能

一、医院接口

本文继续开发分布式医疗挂号系统,进入到医院信息、科室、排版接口的开发,内容比较枯燥。关于医院医院信息的上传接口实现,已经在上一篇文章中进行了介绍,本文继续对接口进行扩展。

查询医院接口

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去自动完成。

以上就是实战分布式医疗挂号系统开发医院科室及排班的接口的详细内容,更多关于分布式医疗挂号系统医院科室及排班接口的资料请关注我们其它相关文章!

(0)

相关推荐

  • 实战分布式医疗挂号系统之设置微服务搭建医院模块

    目录 文章导读 一.项目模块划分图 二.开发前的准备工作 1.医院设置数据库表设计 2.搭建医院设置微服务模块 三.医院设置微服务模块开发 步骤1:生成表对应的实体类 步骤2:创建Mapper 步骤3:创建Service 步骤4:创建Controller 四.测试开发环境 文章导读 本系列文章介绍从0开始搭建一个基于分布式的医疗挂号系统.本次四篇文章完成了医院设置微服务模块的后端接口,为了方便开发,对接口的返回结果.全局异常.全局日志进行了统一处理. 同时,为了方便进行访问测试,还整合了Swag

  • 实战分布式医疗挂号通用模块统一返回结果异常日志处理

    目录 文章导读 一.统一返回结果 1.统一返回结果类 2.统一返回状态信息类 二.统一异常处理 1.自定义异常类 2.全局异常处理 三.统一日志处理 文章导读 本系列文章介绍从0开始搭建一个基于分布式的医疗挂号系统.本次四篇文章完成了医院设置微服务模块的后端接口,为了方便开发,对接口的返回结果.全局异常.全局日志进行了统一处理. 同时,为了方便进行访问测试,还整合了Swagger2工具,这些通用的模块中,除了全局日志被放在医院设置微服务模块的配置资源中,其余都统一被抽取在common模块中.具体

  • 实战分布式医疗挂号系统之设置微服务接口开发模块

    目录 文章导读 一.框架调用流程 二.医院设置表接口开发 1.增 2.删 (1)逻辑删除记录 (2)批量删除记录 3.改 (1)修改记录 4.查 (1)查询所有记录 (2)条件查询带分页 (3)根据id获取记录 5.锁定和解锁表 6.发送签名密钥 文章导读 本系列文章介绍从0开始搭建一个基于分布式的医疗挂号系统.本次四篇文章完成了医院设置微服务模块的后端接口,为了方便开发,对接口的返回结果.全局异常.全局日志进行了统一处理. 同时,为了方便进行访问测试,还整合了Swagger2工具,这些通用的模

  • 分布式医疗挂号系统EasyExcel导入导出数据字典的使用

    目录 一.导出数据字典到Excel 1.创建导出实体类 2.后台接口代码 Controller层 Service层 3.页面导出按钮 4.测试数据导出到Excel 二.导入数据字典到网页 1.后台接口代码 Controller层 Service层 配置监听器 2.页面导入按钮 3.测试数据导入到网页 一.导出数据字典到Excel 1.创建导出实体类 这里导出数据时,只导出网页上每条记录的id.父id.名称.编码.值. @Data public class DictEeVo { @ExcelPro

  • 分布式医疗挂号系统SpringCache与Redis为数据字典添加缓存

    目录 一.SpringCache介绍 二.项目集成Spring Cache 1.添加缓存相关依赖 2.添加redis配置类 3.添加redos配置 三.数据字典配置Spring Cache 1.缓存@Cacheable 2.缓存@CachePut 四.测试缓存是否添加成功 一.SpringCache介绍 Spring Cache 是一个优秀的缓存组件.自Spring 3.1起,提供了类似于@Transactional注解事务的注解Cache支持,且提供了Cache抽象,方便切换各种底层Cache

  • 分布式开发医疗挂号系统数据字典模块前后端实现

    目录 一.后端接口 1.数据库表设计 2.编写三层调用 Controller层 Service层 Mapper层 二.前端页面 1.添加路由 2.添加跳转页面 3.页面表格渲染 三.标准Debug流程 数据字典可以管理系统常用的分类数据或 固定数据,例如:省市区三级联动数据.民族数据.行业数据.学历数据等.由于我们的 分布式医疗挂号系统 大量使用这种数据,所有我们要做一个数据管理,方便管理系统数据,并且在一般的系统中基本都会做数据管理. 数据字典主要功能:使系统中的各项数据变的更加的严格,这样有

  • 实战分布式医疗挂号系统之整合Swagger2到通用模块

    目录 通用模块整合swagger2步骤 2.配置Swagger2 3.启动类添加包扫描 测试 swagger常用注解 本系列文章介绍从0开始搭建一个基于分布式的医疗挂号系统.本次四篇文章完成了医院设置微服务模块的后端接口,为了方便开发,对接口的返回结果.全局异常.全局日志进行了统一处理. 同时,为了方便进行访问测试,还整合了Swagger2工具,这些通用的模块中,除了全局日志被放在医院设置微服务模块的配置资源中,其余都统一被抽取在common模块中.具体实现可参考下面文章: 医院设置微服务 |

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

    目录 一.医院接口 查询医院接口 二.科室接口 (1)上传科室功能 (2)查询科室功能 (3)删除科室功能 三.排班接口 (1)上传排班功能 (2)查询排班功能 (3)删除排班功能 一.医院接口 本文继续开发分布式医疗挂号系统,进入到医院信息.科室.排版接口的开发,内容比较枯燥.关于医院医院信息的上传接口实现,已经在上一篇文章中进行了介绍,本文继续对接口进行扩展. 查询医院接口 Controller层: @PostMapping("hospital/show") public Resu

  • VUE开发分布式医疗挂号系统的医院设置页面步骤

    目录 一.显示记录列表功能 1.显示列表组件 2.分页组件 3.条件查询组件 二.删除记录功能 1.删除单条记录 2.批量删除记录 三.锁定和解锁功能 四.添加记录功能 五.修改功能 六.解决组件重用问题 分布式医疗挂号系统 | 开发医院设置页面 在分布式医疗挂号系统中,前端主要使用的两个技术是Vue和ElementUI.医院设置微服务模块的后端之前已经完成,现在需要借助Vue+ElementUI完成医院设置微服务模块的前端页面: 一.显示记录列表功能 1.显示列表组件 带斑马纹表格开发文档:

  • 实战分布式医疗挂号系统登录接口整合阿里云短信详情

    目录 步骤1:搭建service-user用户模块 1.启动类&配置网关 步骤2:整合JWT 步骤3: 搭建service-msm短信模块(整合阿里云短信) 1.启动类&配置网关 4.三层调用 步骤4:登录页面前端 1.封装api请求 2.添加登录组件 3.登录全局事件 附加:用户认证与网关整合 1.在服务网关添加fillter 2.调整前端代码 本篇文章完成的需求: 1,登录采取弹出层的形式. 2,登录方式: (1)手机号码+手机验证码 (2)微信扫描(后文完成) 3,无注册界面,第一次

  • 实战开发分布式医疗挂号系统上传医院接口

    目录 一.集成MongoDB 二.开发Controller层 医院管理的Service层 四.Respository数据层 五.测试上传医院接口 需求:在<分布式预约挂号平台>中完成上传医院接口开发,再通过医院接口模拟系统(医院管理表)调用平台中的接口,从而实现上传医院的功能.另外,所有通过平台中接口上传的信息都需要被保存到MongoDB中,通过MongoDB来进行操作. 本篇文章根据上述需求,对<分布式医疗挂号系统>中的上传医院接口进行实现,项目代码已同步至github,http

  • VUE实现分布式医疗挂号系统预约挂号首页步骤详情

    目录 (1)定义布局 1.修改默认布局 2.提取头文件 3.提取尾文件 (2)首页引入 (3)首页数据API接口 1.获取医院等级/地区接口 2.医院列表接口 3.模糊查询医院列表 (4)首页前端实现 1.封装Api请求 2.预约挂号前端页面 (1)定义布局 将准备好的静态资源下面的css.images文件夹添加到assets目录: 1.修改默认布局 参考静态资源文件首页,我们可以把页头和页尾提取出来,形成布局页.在layouts目录下修改默认布局文件default.vue,将主内容区域的内容替

  • 分布式医疗挂号系统之搭建后台管理系统页面

    目录 前言 一.搭建前端环境 (1)引入项目到项目工作区 (2)根据package.json下载依赖 (3)启动创建好的前端项目 二.前端环境目录结构 (1)总体目录概览 (2)关键文件 package.js build/webpack.dev.conf.js index.html src/main.js config/dev.env.js src/utils/request.js src/api/login.js 三.登录改造 (1)登入方法改造 获取用户信息方法改造 登出方法改造 前端登出方

随机推荐