Java项目:体检管理系统(java+SpringBoot+Mybaits+Vue+elementui+mysql)

源码获取:俺的博客首页 "资源" 里下载! 

项目介绍

基于Springboot + vue实现的体检管理系统

系统包含用户和管理员两个角色,分为前后台;

管理员:

管理员管理:创建、编辑、删除管理员账户,分配权限和角色,确保系统的安全性。
基础数据管理:管理科室信息、医生信息、设备信息等基础数据,确保数据的准确性和完整性。
健康常识管理:发布和管理健康常识文章,帮助用户提升健康意识。
疾病预防管理:发布疾病预防信息,提供预防措施。
单页数据管理:管理体检中心介绍、服务流程、注意事项等单页数据。
轮播图信息设置:在前台门户或其他页面设置轮播图,展示最新体检信息和健康资讯。
在线咨询管理:回复用户的在线咨询,提供专业的解答和建议。
论坛管理:管理论坛内容,包括审核用户发布的帖子、回复用户问题等,确保论坛内容的合规性和质量。
体检提醒管理:自动发送体检或复查提醒给用户,提高体检率。

用户:
用户管理:注册、登录账户,修改个人信息,确保个人信息的准确性和安全性。
体检项目管理:浏览体检项目信息,了解项目的具体内容。
体检项目预约管理:在线预约体检项目,选择适合自己的时间和地点。
在线咨询:通过系统向医生或客服人员在线咨询,获取专业的解答和建议。
浏览健康常识和疾病预防信息:了解健康知识和预防措施,提升个人健康意识。
论坛参与:在论坛中发布讨论、分享经验、提问等,与其他用户互动交流。

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 
4.数据库:MySql 5.7/8.0版本均可;
5.是否Maven项目:是;


技术栈

后端:SpringBoot+Mybaits

前端:Vue+elementui


使用说明

项目运行:
1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令;
3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;
4.运行项目,在浏览器中输入地址:
前台登录页面
http://localhost:8080/laonianrentijian/front/index.html
用户账户:a1 密码:123456
后台登录页面
http://localhost:8080/laonianrentijian/admin/dist/index.html#/login
管理员账户:admin 密码:admin
用户账户:a1 密码:123456

文档结构展示:

首页展示页面:

健康常识展示:

疾病预防展示:

体检项目展示:

个人中心展示:

在线咨询展示:

 后台管理健康常识:

疾病预防管理:

体检项目管理:

医生管理控制层:

/**
 *
 * @author:yy
 */
package vip.penint.dandp.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import vip.penint.dandp.entity.User;
import vip.penint.dandp.service.IUserService;
import vip.penint.dandp.utils.MD5Util;
import vip.penint.dandp.utils.QueryRequest;
import vip.penint.dandp.utils.ResultVo;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;


@RestController
@RequestMapping("/adminApi/doctor")
public class DoctorController {

    @Autowired
    private IUserService userService;

    @GetMapping("/list")
    public ResultVo list(QueryRequest queryRequest, User user) {
        return ResultVo.oK(userService.queryDoctorFuzz(queryRequest, user));
    }

    /**
     * 修改账户状态,禁用或者取消
     *
     * @param user
     * @param request
     * @return
     */
    @PutMapping("/changeStatus")
    public ResultVo changeStatus(@RequestBody User user, HttpServletRequest request) {
        userService.updateById(user);
        return ResultVo.oK();
    }

    /**
     * 根据ID查询用户详情
     *
     * @param userId
     * @return
     */
    @GetMapping("/{userId}")
    public ResultVo getUserInfo(@PathVariable Integer userId) {
        User info = userService.getById(userId);
        return ResultVo.oK(info);
    }


    /**
     * 新增用户
     */
    @PostMapping
    public ResultVo add(@RequestBody User user) {

        // 查询用户名是否存在数据库中
        LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(User::getUsername, user.getUsername());
        User entity = userService.getOne(lambdaQueryWrapper);
        if (entity == null) {
            user.setCreateTime(new Date());
            // 设置默认密码1234qwer
            user.setPassword(MD5Util.md5("1234qwer"));
            user.setRoleId(1);
            userService.save(user);
            return ResultVo.oK("用户:" + user.getUsername() + "新增成功,默认密码为:" + "1234qwer");
        } else {
            return ResultVo.failed(201, "用户新增失败,用户名:" + user.getUsername() + "已存在");
        }
    }

    /**
     * 删除用户
     */
    @DeleteMapping("/{userIds}")
    public ResultVo remove(@PathVariable Integer[] userIds) {
        for (Integer userId : userIds) {
            userService.removeById(userId);
            return ResultVo.oK();
        }
        return null;
    }

    /**
     * 修改用户
     *
     * @return
     */
    @PutMapping
    public ResultVo edit(@RequestBody User user) {
        user.setModifyTime(new Date());
        userService.updateById(user);
        return ResultVo.oK();
    }

    /**
     * 重置密码
     */
    @PutMapping("/resetPwd")
    public ResultVo reSetPwd(@RequestBody User user) {
        user.setPassword(MD5Util.md5(user.getPassword()));
        userService.updateById(user);
        return ResultVo.oK();
    }

}

登录用户控制层:

/**
 *
 * @author: yy
 */
@RestController
@RequestMapping("/adminApi/common")
public class CommonController {
    @Autowired
    private IUserService userService;

    @Autowired
    private IDepartmentService departmentService;

    @PostMapping("/login")
    public Object adminLogin(String username, String password) {
        User user = userService.selectByUsername(username);
        if (user == null) {
            return ResultVo.failed(201, "账号不存在,请检查账号是否正确或联系管理员");
        } else {
            if (!MD5Util.md5(password).equals(user.getPassword())) {
                return ResultVo.failed(201, "密码错误");
            } else {
                JSONObject obj = new JSONObject();
                obj.put("userInfo", user);
                obj.put("token", TokenUtil.getAdminToken(user));
                return ResultVo.oK(obj);
            }
        }
    }

    @ApiOperation("根据Token获取用户信息")
    @GetMapping("/getUserInfo")
    @AdminLoginToken
    public Object getUserInfo(HttpServletRequest request) {
        User user = userService.getById(TokenUtil.getAdminUserId(request.getHeader("Authorization")));
        if (user == null) {
            return ResultVo.failed(201, "账号不存在,请检查账号是否正确或联系管理员");
        } else {
            JSONObject obj = new JSONObject();
            obj.put("userInfo", user);
            obj.put("token", TokenUtil.getAdminToken(user));
            return ResultVo.oK(obj);
        }
    }

    @ApiOperation("退出登录")
    @GetMapping("/outLogin")
    public Object outLogin() {
        return ResultVo.oK();
    }


    @ApiOperation("文件上传")
    @PostMapping("/file")
    public ResultVo uploadFile(@RequestParam("file") MultipartFile file) {
        String uploadUrl = FileUpload.uploadAccessory(file);
        if (uploadUrl != null && uploadUrl != "") {
            return ResultVo.oK(uploadUrl);
        }
        return ResultVo.failed(500, "失败");
    }


    @PostMapping("/getMeInfo")
    @AdminLoginToken
    public ResultVo getMeInfo(HttpServletRequest request) {
        User user = userService.getById(TokenUtil.getAdminUserId(request.getHeader("Authorization")));
        return ResultVo.oK(user);
    }


    /**
     * 判断库中用户名 有没有被使用
     *
     * @param username
     * @return
     */
    @GetMapping("/checkUsername/{username}")
    public ResultVo checkUsername(@PathVariable String username) {
        LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(User::getUsername, username);
        if (userService.getOne(lambdaQueryWrapper) != null) {
            return ResultVo.oK(true);
        } else {
            return ResultVo.oK(false);
        }
    }

    /**
     * 判断请求方法的该用户原密码是否正确
     *
     * @param password
     * @return
     */
    @GetMapping("/checkPassword/{password}")
    public ResultVo checkPassword(@PathVariable String password, HttpServletRequest request) {
        Integer userId = TokenUtil.getAdminUserId(request.getHeader("Authorization"));
        String encrypt = MD5Util.md5(password);// 用户输入的密码加密字符串

        if (userService.getById(userId).getPassword().equalsIgnoreCase(encrypt)) {
            return ResultVo.oK(true);
        } else {
            return ResultVo.oK(false);
        }
    }


    /**
     * 获取科室下拉框
     */
    @GetMapping("/getDepartment")
    public ResultVo getDepartment() {
        LambdaQueryWrapper<Department> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.select(Department::getId, Department::getDepName);
        return ResultVo.oK(departmentService.list(lambdaQueryWrapper));
    }


    /**
     * 通过科室id查询医生
     */
    @GetMapping("/getDoctor/{id}")
    public ResultVo getDoctor(@PathVariable Integer id) {
        LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.select(User::getNickName, User::getUserId);
        lambdaQueryWrapper.eq(User::getDepId, id);
        return ResultVo.oK(userService.list(lambdaQueryWrapper));
    }


    @PostMapping("/registerDoctor")
    public ResultVo registerStudent(User user) {
        user.setPassword(MD5Util.md5(user.getPassword()));
        user.setCreateTime(new Date());
        user.setRoleId(1);
        userService.save(user);

        return ResultVo.oK();
    }

    @PostMapping("/registerPatients")
    public ResultVo registerTeacher(User user) {
        user.setPassword(MD5Util.md5(user.getPassword()));
        user.setCreateTime(new Date());
        user.setRoleId(2);
        userService.save(user);
        return ResultVo.oK();
    }

    /**
     * 忘记密码
     */
    @PutMapping("/forgotPassword")
    public ResultVo forgotPassword(User sysUser) {

        LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(!StringUtils.isEmpty(sysUser.getUsername()), User::getUsername, sysUser.getUsername());
        // 先判断用户名在不在库中
        User user = userService.getOne(lambdaQueryWrapper);
        if (user != null) {
            sysUser.setPassword(MD5Util.md5(sysUser.getPassword()));
            sysUser.setUserId(user.getUserId());
            userService.updateById(sysUser);
            return ResultVo.oK();
        } else {
            return ResultVo.failed(201, "请输入正确的用户名");
        }
    }

    /**
     * 通过用户名查询医生详情,科室
     */
    @GetMapping("/getDoctorInfoByUsername/{username}")
    public ResultVo getDoctorInfoByUsername(@PathVariable String username){
        return ResultVo.oK(userService.getDoctorInfoByUsername(username));
    }

}

用户管理控制层: 

/**
 * <p>
 * 系统用户 前端控制器
 * </p>
 *
 * @author yy
 */
@RestController
@RequestMapping("/adminApi/user")
public class UserController {

    @Autowired
    private IUserService userService;

    @GetMapping("/list")
    public ResultVo list(QueryRequest queryRequest, User user) {
        return ResultVo.oK(userService.queryFuzz(queryRequest, user));
    }

    /**
     * 修改账户状态,禁用或者取消
     *
     * @param user
     * @return
     */
    @PutMapping("/changeStatus")
    public ResultVo changeStatus(@RequestBody User user) {
        userService.updateById(user);
        return ResultVo.oK();
    }

    /**
     * 根据ID查询用户详情
     *
     * @param userId
     * @return
     */
    @GetMapping("/{userId}")
    public ResultVo getUserInfo(@PathVariable Integer userId) {
        User info = userService.getById(userId);
        return ResultVo.oK(info);
    }


    /**
     * 新增用户
     */
    @PostMapping
    public ResultVo add(@RequestBody User entity) {
        // 查询用户名是否存在数据库中
        LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(User::getUsername, entity.getUsername());
        User user = userService.getOne(lambdaQueryWrapper);
        if (user == null) {
            entity.setCreateTime(new Date());
            // 设置默认密码1234qwer
            entity.setPassword(MD5Util.md5("1234qwer"));
            entity.setRoleId(0);
            userService.save(entity);
            // 插入返回ID
            return ResultVo.oK("用户:" + entity.getUsername() + "新增成功,默认密码为:1234qwer");
        } else {
            return ResultVo.failed(201, "用户新增失败,用户名:" + entity.getUsername() + "已存在");
        }
    }

    /**
     * 删除用户
     */
    @DeleteMapping("/{userIds}")
    public ResultVo remove(@PathVariable Integer[] userIds) {
        boolean flag = false;
        for (Integer userId : userIds) {
            User entity = userService.getById(userId);
            if (!entity.getUsername().equals("admin")) {
                userService.removeById(userId);
            } else {
                flag = true;
            }
        }
        if (flag) {
            return ResultVo.failed(201, "admin用户不能删除");
        } else {
            return ResultVo.oK();
        }
    }

    /**
     * 修改用户
     */
    @PutMapping
    public ResultVo edit(@RequestBody User user) {
        userService.updateById(user);
        return ResultVo.oK();
    }

    /**
     * 重置密码
     */
    @PutMapping("/resetPwd")
    public ResultVo reSetPwd(@RequestBody User user) {
        user.setPassword(MD5Util.md5(user.getPassword()));
        userService.updateById(user);
        return ResultVo.oK();
    }


    /**
     * 个人中心配置
     */
    @GetMapping("/profile")
    public ResultVo profile(HttpServletRequest request) {
        Integer userId = TokenUtil.getAdminUserId(request.getHeader("Authorization"));
        return ResultVo.oK(userService.getById(userId));
    }

    /**
     * 个人中心配置
     */
    @PutMapping("/profile")
    public ResultVo updateProfile(@RequestBody User user) {
        userService.updateById(user);
        return ResultVo.oK();
    }

    @PutMapping("/profile/updatePwd")
    public ResultVo profileUpdatePwd(QueryRequest queryRequest, HttpServletRequest request) {
        Integer userId = TokenUtil.getAdminUserId(request.getHeader("Authorization"));

        User user = userService.getById(userId);
        if (user.getPassword().equalsIgnoreCase(MD5Util.md5(queryRequest.getOldPassword()))) {
            User u = new User();
            u.setUserId(userId);
            u.setPassword(MD5Util.md5(queryRequest.getNewPassword()));
            userService.updateById(u);
            return ResultVo.oK();
        } else {
            return ResultVo.failed(201, "原密码不正确");
        }
    }

    @PostMapping("/profile/avatar")
    public ResultVo avatarUpload(@RequestParam("avatarfile") MultipartFile file, HttpServletRequest request) {
        Integer userId = TokenUtil.getAdminUserId(request.getHeader("Authorization"));
        JSONObject result = UploadFileUtils.upload(file);
        if (result.getInteger("status") == 200) {
            if (result.getBoolean("isImage")) {
                User user = new User();
                user.setAvatar(result.getString("requestUrl"));
                user.setUserId(userId);
                userService.updateById(user);
                // 缓存
                return ResultVo.oK(result.getString("requestUrl"));
            } else {
                return ResultVo.failed(201, "不是图片文件");
            }
        } else {
            return ResultVo.failed(201, "文件上传失败,请联系管理员");
        }

    }
}

源码获取:俺的博客首页 "资源" 里下载!

【资源说明】 Java开发基于SSM框架的医院体检预约管理系统源码+项目说明.zip Java开发基于SSM框架的医院体检预约管理系统源码+项目说明.zip 1、该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果有一点儿基础,亦可在此代码基础上进行修改,以实现其他功能。 功能需求: 系统分为三个角色:系统管理员、医生和体检人员。 系统管理员主要有以下几个功能: 体检人员管理:增删改查,模糊查询 医生人员管理:增删改查,模糊查询 预约审批:体检人员预约以后,可以审批通过或者不通过 角色管理:增删改查,分配权限给不同的角色 个人信息:查看和修改自己的个人信息 密码修改:修改自己的系统密码 统计分析:系统中出现的各种疾病的男女比例 医生有以下功能: 体检人员管理:增删改查模糊查询体检人员 体检项目管理:增删改查体检项目 套餐管理:增删改查体检套餐 体检管理:给体检人员反馈体检情况 个人信息:查看和修改自己的个人信息 密码修改:修改自己的系统密码 统计分析:系统中出现的各种疾病的男女比例 体检人员有以下功能: 个人体检预约:预约体检 个人信息:查看和修改自己的个人信息 密码修改:修改自己的系统密码 统计分析:系统中出现的各种疾病的男女比例 项目技术 后台:SSM(Spring+Spring MVC+ Mybits) 前台:主要是layui,还有jsp+jquery+ajax
健康体检管理软件 是一套完整的数字化健康体检中心管理软件 , 该系 统本着从体检中心检查的实际应用出发,根据体检人员相对集中进行,人员分布 不均,体检过程相对程序化,重点解决了体检流程化问题,把体检信息采集源放 在各体检科室的医生工作台上,各种设备检查信息全部来源与相关医疗设备,使 体检人员的全部检查信息贯穿在系统工作流的全过程,使其真正成为从采集体检 人员的基本信息-相关科室体检信息-设备采集信息-体检信息综合分析-个人 / 集体综合统计分析及健康状况总结分析等,完全的计算机综合管理过程。 <<健康体检管理软件 >>是如何产生的呢 ? 健康已成为现代社会人们日益关 心的问题 , 如何知道自己是否有健康的体魄 ? 用人单位如何知道所雇佣的人是 否健康 ? 学生入学 , 工厂招工 , 接触有害物质人员的定期检查等等 , 都离不 开医院的体检 . 因此 , 目前专门的体检医院或化出一个部门用于体检的医院 , 象雨后的春笋越来越多,那么 , 一个体检医院 , 如何有效的利用现有资源 , 如 何面对大批量人员的体检 , 如何给被检人员准确 , 快捷做出检查结果 , 如何建 立并有效的管理自己日益庞大的体检档案 , 将是医院面邻的越来越严峻的问题。 完成一个单位的体检后,系统根据体检结果,综合做出该单位的体检分析,健康 建议分析,职业病分布状况分析等。体检结果可通过 INTERNET 方便的传递给相 关单位。长期的档案的管理,体检信息的综合查询,为长期跟踪观察某单位员工 健康状况提供一手资料。 功能特点 采用B/S和C/S相结合的网络模式:内网实现体检中心的业务管理;外网实现体检客 户网上预约,网上查询等。 采用体检条码或磁卡的管理技术:对体检号采用条形码或磁卡的管理。由于体检 号贯穿于系统始终,可通过对条码或磁卡的扫描读取,大大减少了人工输入的出 错率,同时也方便了结果的录入和数据的查询。 强大的自定义功能:一个好的软件,要最大限度满足最多用户的需求,要求软件 的通用性足够强大。体检管理软件采用大量自定义设置,可以通过简单的应用前 初始化设置。达到适用不同规模、流程与要求的体检中心的业务需求,从而实现 软件的高性价比。这样的软件也具有容易升级,易维护的特点。 软件具有智能化:由于体检业务是一项工作量烦重的业务。从检前准备,检中检 查,检后服务,每一过程都有大量工作要作。这就要求体检管理软件智能化。开 发人员深入工作现场,了解体检医生的工作情况,在软件的各个部分都有智能化 的表现,如:可以自动判断阳性结果;自动生成小结;自动生成总结;自动生成 建议;批量导入人员名单,批量登记,批量报告打印等等,总之,你会发现无处 不为您所想。 与检验系统、检查仪器的对接:对于每天大量的检查结果,凭人工录入,是一件 非常头痛的工作,而且非常容易出错,<>实现500人检验数据(约 合3万条记录),不足30秒,可以全部录入完成。 灵活独立的计价收费系统系统自身具有独立的计价收费功能,专们针对散检和
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq1334611189

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值