精华内容
下载资源
问答
  • Java学习,毕业设计项目学习,框架学习
  • 医院药品管理系统

    2012-05-14 21:55:03
    医院药品管理系统代码+文档
  • 医院药品管理系统 

    2012-06-11 17:00:45
    医院药品管理系统 关于课程设计,在VB环境下编写的程序
  • 学 号 课 程 设 计 基于 Java 环境的医院 题 目 药品管理系统的设计 学 院 计算机科学与技术学院 专 业 计算机科学与技术专业 班 姓 名 指导教师 许 毅 2012 年 09 月 02 日 武汉理工大学计算机能力拓展训练报告书 ...
  • 基于jsp,servlet实现医院药物管理
  • 医院及药店的药品管理系统java 该系统包含药品采购管理,药品库存管理,药店销售收银管理等子模块,药客医药信息管理软件针对我国医药企业药品经营管理特点(尤其是中小型药店销售商)而特别设计,符合GSP管理规范,...
  • 医院管理系统(药品管理系统).zip
  • django+mysql 药品管理系统
  • 从需求分析到参考文献一应俱全 表的创建过程和执行操作等都有详细的介绍
  • 计算机课程设计|毕业设计之医院药品管理系统代码-基于Springboot的医院药品管理系统 注意:该项目只展示部分功能,如需了解,评论区咨询即可。 > > 所有工具下载链接: JDK版本下载 Eclipse下载链接 Mysql...

    计算机课程设计|毕业设计之医院药品管理系统代码-基于Springboot的医院药品管理系统

    注意:该项目只展示部分功能,如需了解,评论区咨询即可。

    > > 所有工具下载链接:

    JDK版本下载
    Eclipse下载链接
    Mysql下载链接
    tomcat下载链接
    向日葵远程工具

    1.开发环境

    • 开发语言:Java
    • 技术:Springboot+Layui
    • 数据库:MySQL
    • 架构:B/S
    • 源码类型: Web
    • 编译工具:Idea、Eclipse、MyEclipse (选其一)
    • 其他:jdk1.8、Tomcat8.5【不需要】 、Navicat

    2.系统的设计与实现

    2.1 用户类型

    用户角色分为 管理员 这类用户。

    2.2 各角色功能模块

    2.2.1 管理员

    • 登录;
    • 登记出入库信息;
    • 问题药品记录;
    • 药品保质期检查;
    • 销售记录
    • 收到退货
    • 药品信息
    • 供应商信息
    • 退货给供应商
    • 账单信息;

    2.3 部分功能模块展示

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    java项目实战推荐:

    基于SSM+Vue的车辆租赁车辆在线综合管理系统
    基于Springboot+Vue的网上书城管理系统
    基于Springboot+Vue的外卖点餐管理系统
    基于Springboot的停车场小程序管理系统系统
    基于Springboot的报平安小程序管理系统系统
    基于Springboot的个人理财及借贷管理系统
    基于SSM的艺术展览管理系统

    大家可以点赞、收藏、关注、评论我啦 、下面的投票也可以积极互动起来哟

    展开全文
  • 一、登录页面 1.1 登录展示 1.2 用户名错误 1.3 密码错误 二、后台页面 2.1 首页 2.2 首页功能 三、功能页面 药品库存管理 3.1 登录出入库信息 3.2 问题药品记录 3.3 药品保质期检查 药品销售管理 3.4 销售记录 3.5 ...

    一、登录页面

    1.1 登录展示

    在这里插入图片描述

    1.2 用户名错误

    在这里插入图片描述

    1.3 密码错误

    在这里插入图片描述

    二、后台页面

    2.1 首页

    在这里插入图片描述

    2.2 首页功能

    在这里插入图片描述

    三、功能页面

    药品库存管理

    3.1 登录出入库信息

    在这里插入图片描述

    3.2 问题药品记录

    在这里插入图片描述

    3.3 药品保质期检查

    在这里插入图片描述

    药品销售管理

    3.4 销售记录

    在这里插入图片描述

    3.5 商品退货

    在这里插入图片描述

    药品明细查询

    3.6 药品信息

    在这里插入图片描述

    3.7 供应商信息

    在这里插入图片描述

    3.8 退货给供应商

    在这里插入图片描述

    3.9 账单详情

    在这里插入图片描述

    其他功能,可以根据自己需求,进行增加!

    展开全文
  • 【Spring项目源码】医院药品管理系统
  • 药品管理系统这个数据库管理系统适用于中小药店以及小型诊所的进销存管理。主要有以下几个功能模块:(1)系统登录模块,登录系统。(2)系统设置模块,管理系统用户及密码。(3)仓库管理模块,录入药品基本信息,...
  • 医院药品管理系统.doc

    2021-09-30 14:23:56
    医院药品管理系统.doc
  • 一、创建药品数据 二、创建药品后台页面 三、药品出入库管理 四、出入库后台页面 五、药品记录管理 六、问题管理后台页面 七、药品保质期检查

    一、创建药品数据

    大致上和之前供货商一样,Ctrl+C复制粘贴修改

    1.1 创建pojo实体类

    package com.dh.pojo;
    
    import com.baomidou.mybatisplus.annotation.IdType;
    import com.baomidou.mybatisplus.annotation.TableField;
    import com.baomidou.mybatisplus.annotation.TableId;
    import com.baomidou.mybatisplus.annotation.TableName;
    import lombok.Data;
    
    import org.springframework.format.annotation.DateTimeFormat;
    
    import java.io.Serializable;
    import java.util.Date;
    
    /**
     * 药品管理
     */
    @Data
    @TableName(value = "druginfo")
    public class Druginfo implements Serializable {
        /*主键*/
        @TableField(value = "id")
        @TableId(value = "id", type = IdType.AUTO)
        private Integer id;
    
        /*药品名称*/
        private String name;
    
        /*供应商名称*/
        private String supplier;
    
        /*生产时间*/
        @DateTimeFormat(pattern = "yyyy-MM-dd")
        private Date producttime;
    
        /*保质期(月)*/
        private String warrenty;
    
        /*药品编码*/
        private String number;
    
        /*价格*/
        private Float price;
    
        /*库存*/
        private Integer stock;
        
    }
    

    1.2 创建mapper接口

    DruginfoMapper

    package com.dh.mapper;
    
    
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import com.dh.pojo.Druginfo;
    import org.apache.ibatis.annotations.Mapper;
    
    /**
     * 药品的增删改查mapper
     */
    @Mapper
    public interface DruginfoMapper extends BaseMapper<Druginfo> {
    }
    
    

    1.3 创建Service业务层

    DruginfoService

    package com.dh.service;
    
    import com.baomidou.mybatisplus.core.metadata.IPage;
    import com.baomidou.mybatisplus.extension.service.IService;
    import com.dh.pojo.Druginfo;
    
    import java.util.List;
    
    /**
     * 药品的service接口
     */
    public interface DruginfoService extends IService<Druginfo> {
        /**
         * 分页查询药品数据
         * @param pageNum 第几页
         * @param pageSize 每页多少条数据
         * @param param 查询参数-药品名称
         * @return
         */
        public IPage<Druginfo> selectDruginfoPage(int pageNum, int pageSize, String param);
    
        /**
         * 新增一条药品信息
         * @param druginfo
         */
        public int addDruginfo(Druginfo druginfo);
    
        /**
         * 修改一条药品信息
         * @param druginfo
         */
        public int editDruginfo(Druginfo druginfo);
    
        /**
         * 根据主键id查询一个药品对象
         * @param id
         * @return
         */
        public Druginfo queryDruginfoById(Integer id);
    
        /**
         * 根据主键id删除一个药品对象
         * @param id
         * @return
         */
        public int delDruginfoById(Integer id);
    
        /**
         * 查询所有药品
         * @return
         */
        public List<Druginfo> queryDruginfoList();
    }
    
    

    实现类:

    package com.dh.service.Impl;
    
    import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    import com.baomidou.mybatisplus.core.metadata.IPage;
    import com.baomidou.mybatisplus.core.toolkit.StringUtils;
    import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
    import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
    import com.dh.mapper.DruginfoMapper;
    import com.dh.pojo.Druginfo;
    import com.dh.service.DruginfoService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    /**
     * 药品service实现类
     */
    @Service
    public class DruginfoServiceImpl extends ServiceImpl<DruginfoMapper, Druginfo> implements DruginfoService {
    
        @Autowired
        private DruginfoMapper druginfoMapper;
    
        /**
         * 分页查询药品数据
         *
         * @param pageNum  第几页
         * @param pageSize 每页多少条数据
         * @param param    查询参数-药品名称
         * @return
         */
        @Override
        public IPage<Druginfo> selectDruginfoPage(int pageNum, int pageSize, String param) {
            QueryWrapper<Druginfo> queryWrapper = new QueryWrapper<>();
            if(StringUtils.isNotBlank(param)){
                queryWrapper.like("name",param);
            }
            Page<Druginfo> page = new Page<>(pageNum,pageSize);
            return druginfoMapper.selectPage(page,queryWrapper);
        }
    
        /**
         * 新增一条药品信息
         *
         * @param druginfo
         */
        @Override
        public int addDruginfo(Druginfo druginfo) {
            return druginfoMapper.insert(druginfo);
        }
    
        /**
         * 修改一条药品信息
         *
         * @param druginfo
         */
        @Override
        public int editDruginfo(Druginfo druginfo) {
            return druginfoMapper.updateById(druginfo);
        }
    
        /**
         * 根据主键id查询一个药品对象
         *
         * @param id
         * @return
         */
        @Override
        public Druginfo queryDruginfoById(Integer id) {
            return druginfoMapper.selectById(id);
        }
    
        /**
         * 根据主键id删除一个药品对象
         *
         * @param id
         * @return
         */
        @Override
        public int delDruginfoById(Integer id) {
            return druginfoMapper.deleteById(id);
        }
    
        /**
         * 查询所有药品
         *
         * @return
         */
        @Override
        public List<Druginfo> queryDruginfoList() {
            return druginfoMapper.selectList(null);
        }
    }
    

    1.4 创建controller控制层

    package com.dh.controller;
    
    import com.baomidou.mybatisplus.core.metadata.IPage;
    import com.dh.common.ResultMapUtil;
    import com.dh.pojo.Druginfo;
    import com.dh.service.DruginfoService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    /**
     * 药品相关的controller
     */
    @Controller
    @RequestMapping(value = "/druginfo")
    public class DruginfoController {
    
        @Autowired
        private DruginfoService druginfoService;
    
        /**
         * 转向药品页面
         */
        @RequestMapping
        public String druginfo(){
            return "/druginfo";
        }
    
        /**
         * 分页查询药品列表
         */
        @RequestMapping(value = "/druginfoQueryPage")
        @ResponseBody
        public Object druginfoQueryPage(String param, @RequestParam(defaultValue = "1")int pageNum,@RequestParam(defaultValue = "10")int pageSize){
            try{
                IPage<Druginfo> iPage = druginfoService.selectDruginfoPage(pageNum,pageSize,param);
                return ResultMapUtil.getHashMapMysqlPage(iPage);
            } catch (Exception e){
                return ResultMapUtil.getHashMapException(e);
            }
        }
    
        /**
         * 转向药品新增页面
         */
        @RequestMapping(value = "/druginfoPage")
        public String druginfoPage(){
            return "/druginfoPage";
        }
    
        /**
         * 添加一个药品
         */
        @RequestMapping(value = "/druginfoAdd")
        @ResponseBody
        public Object druginfoAdd(Druginfo druginfo){
            try{
                int i = druginfoService.addDruginfo(druginfo);
                return ResultMapUtil.getHashMapSave(i);
            } catch (Exception e){
                return ResultMapUtil.getHashMapException(e);
            }
        }
    
        /**
         * 转向药品编辑页面
         */
        @RequestMapping(value = "/druginfoQueryById")
        public String druginfoQueryById(@RequestParam(name = "id",required = true)Integer id, Model model){
            Druginfo druginfo = druginfoService.queryDruginfoById(id);
            model.addAttribute("obj",druginfo);
            return "/druginfoPage";
        }
    
        /**
         * 修改一个药品
         */
        @RequestMapping(value = "/druginfoEdit")
        @ResponseBody
        public Object druginfoEdit(Druginfo druginfo){
            try{
                int i = druginfoService.editDruginfo(druginfo);
                return ResultMapUtil.getHashMapSave(i);
            } catch (Exception e){
                return ResultMapUtil.getHashMapException(e);
            }
        }
    
        /**
         * 删除一个药品
         */
        @RequestMapping(value = "/druginfoDelById")
        @ResponseBody
        public Object druginfoDelById(Integer id){
            try{
                int i = druginfoService.delDruginfoById(id);
                return ResultMapUtil.getHashMapDel(i);
            } catch (Exception e){
                return ResultMapUtil.getHashMapException(e);
            }
        }
    }
    

    1.5 创建日期处理类

    DateUtil
    处理日期相关的操作

    package com.dh.common;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    /**
     * 日期处理类
     * 处理日期相关的操作
     */
    public class DateUtil {
    
        /**
         * 把日期格式转换成年月日(yyyy-MM-dd)的字符串
         */
        public static String dateConvert(Date date){
            //用java提供的SimpleDateFormat进行转换,传入转换的格式
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            //返回转换的格式
            return sdf.format(date);
        }
    
        public static void main(String[] args) {
            //测试转换的结果
            System.out.println(DateUtil.dateConvert(new Date()));
        }
    }
    

    1.6 在Druginfo中添加时间转换

        /*生产时间转换成年月日*/
        public String getProducttimeStr(){
            return DateUtil.dateConvert(producttime);
        }
    

    二、药品后台页面

    2.1 编写药品管理页面

    druginfo.html

    <!DOCTYPE html>
    <html lang="zh_CN" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>药品信息管理</title>
        <link rel="stylesheet" th:href="@{/static/layui/css/layui.css}" media="all">
        <link rel="stylesheet" th:href="@{/static/admin/style.css}" media="all">
        <script type="text/html" id="indexTpl">
            {{d.LAY_TABLE_INDEX+1}}
        </script>
    </head>
    <body class="layui-layout-body">
        <div class="layui-fluid">
            <div class="layui-row layui-col-space15">
                <div class="layui-col-md12">
                    <div class="layui-card">
                        <div class="layui-card-header">药品信息列表</div>
                        <div class="layui-card-body">
                            <table class="layui-hide" id="main-table" lay-filter="main-table"></table>
                            <script type="text/html" id="toolbarDemo">
                                <span class="layui-inline" lay-event="add"><i class="layui-icon">&#xe654;</i> </span>
                                <span class="layui-inline" style="width: 240px;">
                                    <input class="layui-input" name="param" id="param" placeholder="根据药品名称查询" autocomplete="off">
                                </span>
                                <span class="layui-btn layui-btn-sm layui-bg-red" lay-event="querySearch">
                                    <i class="layui-icon">&#xe615;</i>查询
                                </span>
                            </script>
                            <script type="text/html" id="barDemo">
                                <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
                                <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
                            </script>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <script th:src="@{/static/layui/layui.js}"></script>
        <script>
            layui.use(['table','form'],function () {
                var $ = layui.$;
                var table = layui.table;
                table.render({
                    elem: '#main-table',
                    height: 650,
                    url: '/druginfo/druginfoQueryPage',
                    method: 'POST',
                    page: true,
                    id: 'table-load',
                    toolbar: '#toolbarDemo',
                    cols: [
                        [
                        {title: '序号',templet: '#indexTpl',width: 60,align:'center'},
                        {field:'name',title:'药品名称',algin:'center'},
                        {field:'supplier',title:'供应商',algin:'center'},
                        {field:'warrenty',title:'保质期(月)',algin:'center'},
                        {field:'number',title:'药品编码',algin:'center'},
                        {field:'price',title:'药品价格',algin:'center'},
                        {field:'stock',title:'库存',algin:'center'},
                        {field:'producttime',title:'生产时间',algin:'center',
                        templet:"<div>{{layui.util.toDateString(d.producttime,'yyyy-MM-dd')}}</div>"},
                        {title:'操作',align:'center',toolbar:'#barDemo',fixed:'right'}
                        ]
                    ]
                });
    
                //监听头工具栏事件
                table.on('toolbar(main-table)',function (obj) {
                    switch (obj.event) {
                        case 'add':
                            layer.open({
                                type: 2,
                                title: '新增药品信息',
                                content: '/druginfo/druginfoPage',
                                shade:[0.8,'#393d49'],
                                area:['600px','530px'],
                                btn:['确定','取消'],
                                yes:function (index,layero) {
                                    var iframeWindow = window['layui-layer-iframe'+index];
                                    var submit = layero.find('iframe').contents().find("#LAY-front-submit");
                                    //监听提交
                                    iframeWindow.layui.form.on('submit(LAY-front-submit)',function (data) {
                                        var field = data.field;
                                        $.ajax({
                                            url: '/druginfo/druginfoAdd',
                                            data: field,
                                            async: false,
                                            cache: false,
                                            success: function (str) {
                                                if(str.code === 0){
                                                    table.reload('table-load');
                                                }
                                                layer.msg(str.msg,{icon:str.icon,anim:str.anim});
                                            }
                                        });
                                        layer.close(index);     //关闭弹层
                                    });
                                    submit.trigger('click');
                                },
                                success:function (layero,index) {
                                    
                                }
                            });
                            break;
                        case 'querySearch':
                            var param = $('#param').val();
                            table.reload('table-load',{
                                where: {
                                    param: param
                                }
                            });
                            $('#param').val(param);
                            break;
                    }
                });
    
                //监听编辑、删除
                table.on('tool(main-table)',function (obj) {
                    var data = obj.data;
                    switch (obj.event) {
                        case 'edit':
                            layer.open({
                                type: 2,
                                title: '编辑药品信息',
                                content: '/druginfo/druginfoQueryById?id=' +data.id,
                                shade:[0.8,'#393d49'],
                                area:['600px','500px'],
                                btn:['确定','取消'],
                                yes:function (index,layero) {
                                    var iframeWindow = window['layui-layer-iframe'+index];
                                    var submit = layero.find('iframe').contents().find("#LAY-front-submit");
                                    //监听提交
                                    iframeWindow.layui.form.on('submit(LAY-front-submit)',function (data) {
                                        var field = data.field;
                                        $.ajax({
                                            url: '/druginfo/druginfoEdit',
                                            data: field,
                                            async: false,
                                            cache: false,
                                            success: function (str) {
                                                if(str.code === 0){
                                                    table.reload('table-load');
                                                }
                                                layer.msg(str.msg,{icon:str.icon,anim:str.anim});
                                            }
                                        });
                                        layer.close(index);     //关闭弹层
                                    });
                                    submit.trigger('click');
                                },
                                success:function (layero,index) {
    
                                }
                            });
                            break;
                        case 'del':
                            layer.confirm('确认要删除吗?',function (index) {
                                $.ajax({
                                    url: '/druginfo/druginfoDelById?id=' +data.id,
                                    data: null,
                                    async: false,
                                    cache: false,
                                    success: function (str) {
                                        table.reload('table-load');
                                        layer.msg(str.msg,{icon:str.icon,anim:str.anim});
                                    }
                                });
                            })
                            break;
                    }
                });
            });
        </script>
    </body>
    </html>
    

    2.2 编写药品编辑页面

    druginfoPage.html

    <!DOCTYPE html>
    <html lang="zh_CN" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>药品信息</title>
        <link rel="stylesheet" th:href="@{/static/layui/css/layui.css}" media="all">
        <link rel="stylesheet" th:href="@{/static/admin/style.css}" media="all">
    </head>
    <body>
        <div class="layui-fluid">
            <div class="layui-card">
                <div class="layui-card-body" style="padding: 15px;">
                    <form class="layui-form layui-form-pane" action="">
                        <input name="id" th:value="${obj?.id}" class="layui-input layui-hide"/>
                        <div class="layui-form-item">
                            <label class="layui-form-label">药品名称</label>
                            <div class="layui-input-block">
                                <input type="text" name="name" th:value="${obj?.name}" lay-verify="required" placeholder="请输入药品名称" autocomplete="off" class="layui-input">
                            </div>
                        </div>
                        <div class="layui-form-item">
                            <label class="layui-form-label">药品编码</label>
                            <div class="layui-input-block">
                                <input type="text" name="number" th:value="${obj?.number}" lay-verify="required" placeholder="请输入药品编码" autocomplete="off" class="layui-input">
                            </div>
                        </div>
                        <div class="layui-form-item">
                            <label class="layui-form-label">供应商</label>
                            <div class="layui-input-block">
                                <select name="supplier" id="supplier"></select>
                            </div>
                        </div>
                        <div class="layui-form-item">
                            <label class="layui-form-label">生产时间</label>
                            <div class="layui-input-block">
                                <input type="text" readonly name="producttime" id="producttime" th:value="${obj?.producttimeStr}" lay-verify="required" placeholder="请输入生产时间" autocomplete="off" class="layui-input">
                            </div>
                        </div>
                        <div class="layui-form-item">
                            <label class="layui-form-label">保质期(月)</label>
                            <div class="layui-input-block">
                                <input type="text" name="warrenty" th:value="${obj?.warrenty}" lay-verify="required" placeholder="请输入保质期(月)" autocomplete="off" class="layui-input">
                            </div>
                        </div>
                        <div class="layui-form-item">
                            <label class="layui-form-label">价格</label>
                            <div class="layui-input-block">
                                <input type="text" name="price" th:value="${obj?.price}" lay-verify="required" placeholder="请输入价格" autocomplete="off" class="layui-input">
                            </div>
                        </div>
                        <div class="layui-form-item">
                            <label class="layui-form-label">库存</label>
                            <div class="layui-input-block">
                                <input type="text" name="stock" th:value="${obj?.stock}" lay-verify="required" placeholder="请输入库存" autocomplete="off" class="layui-input">
                            </div>
                        </div>
                        <div class="layui-form-item layui-hide">
                            <input type="button" lay-submit lay-filter="LAY-front-submit" id="LAY-front-submit" value="确认">
                        </div>
                    </form>
                </div>
            </div>
        </div>
        <script th:src="@{/static/layui/layui.js}"></script>
        <script>
            layui.use(['form','laydate'],function () {
                var $ = layui.$;
                var laydate = layui.laydate;
                var form = layui.form;
    
                //支持日期控件
                laydate.render({
                    elem: '#producttime',
                    trigger: 'click'
                });
    
                //当前供应商的值
                var currentSupplier = '[[${obj?.supplier}]]';
                //获取供应商列表
                $.ajax({
                    url: '/supplier/supplieList',
                    dataType:'json',
                    type:'post',
                    cache:false,
                    success:function (data) {
                        $('#supplier').prepend("<option value=''>请选择</option>");
                        for(var i=0;i<data.data.length;i++){
                            if(data.data[i].name==currentSupplier){
                                $('#supplier').append("<option selected value='"+data.data[i].name+"'>"+data.data[i].name+"</option>");
                            }else{
                                $('#supplier').append("<option value='"+data.data[i].name+"'>"+data.data[i].name+"</option>");
                            }
                        }
                        form.render();          //下拉列表渲染,把内容加载进去
                    }
                });
            });
        </script>
    </body>
    </html>
    

    2.3 修改index跳转页面

    二级药品菜单的页面跳转

     <!--二级菜单-->
    <dl class="layui-nav-child">
    	<dd><a href="#" class="site-demo-active" lay-href="/druginfo" data-id="1" data-title="药品信息">药品信息</a> </dd>
    	<dd><a href="#" class="site-demo-active" lay-href="/supplier" data-id="2" data-title="供应商信息">供应商信息</a> </dd>
    </dl>
    

    2.4 测试

    在这里插入图片描述
    发现无法显示供应商

    2.5 List返回格式

    编写ResultMapUtil

     /**
         * List返回格式
         */
        public static HashMap<String,Object> getHashMapList(List<?> list){
            HashMap<String,Object> resultMap = new HashMap<>();
            resultMap.put("code",0);
            if(list!=null&&list.size()>0){
                resultMap.put("msg","");
            }else {
                resultMap.put("msg","没有查询到数据!");
            }
            resultMap.put("data",list);
            return resultMap;
        }
    

    2.6 获取所有供应商

    编写SupplierController

        /**
         * 获取所有供应商
         */
        @RequestMapping(value = "/supplierList")
        @ResponseBody
        public Object supplierList(){
            List<Supplier> supplierList = supplierService.querySupplierList();
            return ResultMapUtil.getHashMapList(supplierList);
        }
    

    2.7 测试:

    在这里插入图片描述
    在这里插入图片描述

    三、药品出入库管理

    3.1 创建pojo实体类

    Owinfo

    package com.dh.pojo;
    
    import com.baomidou.mybatisplus.annotation.IdType;
    import com.baomidou.mybatisplus.annotation.TableField;
    import com.baomidou.mybatisplus.annotation.TableId;
    import com.baomidou.mybatisplus.annotation.TableName;
    import lombok.Data;
    
    import java.io.Serializable;
    import java.util.Date;
    
    /**
     * 药品出入库管理
     */
    @Data
    @TableName(value = "owinfo")
    public class Owinfo implements Serializable {
        /*主键*/
        @TableField(value = "id")
        @TableId(value = "id",type = IdType.AUTO)
        private Integer id;
    
        /*药品名称*/
        private String dname;
    
        /*出库/入库*/
        private String type;
    
        /*数量*/
        private Integer count;
    
        /*操作人*/
        private String operator;
    
        /*操作时间*/
        private Date createtime;
    }
    

    3.2 创建mapper接口

    package com.dh.mapper;
    
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import com.dh.pojo.Owinfo;
    import org.apache.ibatis.annotations.Mapper;
    
    /**
     * 药品出入库的增删改查Mapper
     */
    @Mapper
    public interface OwinfoMapper extends BaseMapper<Owinfo> {
    }
    
    

    3.3 创建Service业务层

    package com.dh.service;
    
    import com.baomidou.mybatisplus.core.metadata.IPage;
    import com.baomidou.mybatisplus.extension.service.IService;
    import com.dh.pojo.Owinfo;
    
    /**
     * 药品出入库的service接口
     */
    public interface OwinfoService extends IService<Owinfo> {
        /**
         * 分页查询药品出入库数据
         * @param pageNum 第几页
         * @param pageSize 每页多少条数据
         * @param param 查询参数-药品出入库名称
         * @return
         */
        public IPage<Owinfo> selectOwinfoPage(int pageNum, int pageSize, String param);
    
        /**
         * 新增一条药品出入库信息
         * @param owinfo
         */
        public int addOwinfo(Owinfo owinfo);
    
        /**
         * 修改一条药品出入库信息
         * @param owinfo
         */
        public int updateOwinfo(Owinfo owinfo);
    
        /**
         * 根据主键id查询一个药品出入库对象
         * @param id
         * @return
         */
        public Owinfo queryOwinfoById(Integer id);
    
        /**
         * 根据主键id删除一个药品出入库对象
         * @param id
         * @return
         */
        public int delOwinfoById(Integer id);
    
    }
    

    实现类

    package com.dh.service.Impl;
    
    import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    import com.baomidou.mybatisplus.core.metadata.IPage;
    import com.baomidou.mybatisplus.core.toolkit.StringUtils;
    import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
    import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
    import com.dh.mapper.OwinfoMapper;
    import com.dh.pojo.Owinfo;
    import com.dh.service.OwinfoService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    /**
     * 药品出入库service实现类
     */
    @Service
    public class OwinfoServiceImpl extends ServiceImpl<OwinfoMapper, Owinfo> implements OwinfoService {
    
        @Autowired
        private OwinfoMapper owinfoMapper;
    
        /**
         * 分页查询药品出入库数据
         *
         * @param pageNum  第几页
         * @param pageSize 每页多少条数据
         * @param param    查询参数-药品出入库名称
         * @return
         */
        @Override
        public IPage<Owinfo> selectOwinfoPage(int pageNum, int pageSize, String param) {
            QueryWrapper<Owinfo> queryWrapper = new QueryWrapper<>();
            if(StringUtils.isNotBlank(param)){
                queryWrapper.like("dname",param);
            }
            Page<Owinfo> page = new Page<>(pageNum,pageSize);
            return owinfoMapper.selectPage(page,queryWrapper);
        }
    
        /**
         * 新增一条药品出入库信息
         *
         * @param owinfo
         */
        @Override
        public int addOwinfo(Owinfo owinfo) {
            return owinfoMapper.insert(owinfo);
        }
    
        /**
         * 修改一条药品出入库信息
         *
         * @param owinfo
         */
        @Override
        public int updateOwinfo(Owinfo owinfo) {
            return owinfoMapper.updateById(owinfo);
        }
    
        /**
         * 根据主键id查询一个药品出入库对象
         *
         * @param id
         * @return
         */
        @Override
        public Owinfo queryOwinfoById(Integer id) {
            return owinfoMapper.selectById(id);
        }
    
        /**
         * 根据主键id删除一个药品出入库对象
         *
         * @param id
         * @return
         */
        @Override
        public int delOwinfoById(Integer id) {
            return owinfoMapper.deleteById(id);
        }
    
    }
    

    3.4 创建controller控制层

    package com.dh.controller;
    
    import com.baomidou.mybatisplus.core.metadata.IPage;
    import com.dh.common.ResultMapUtil;
    import com.dh.pojo.Owinfo;
    import com.dh.service.OwinfoService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import java.util.Date;
    
    /**
     * 药品出入库相关的controller
     */
    @Controller
    @RequestMapping(value = "/owinfo")
    public class OwinfoController {
    
        @Autowired
        private OwinfoService owinfoService;
    
        /**
         * 转向药品出入库页面
         */
        @RequestMapping
        public String owinfo(){
            return "/owinfo";
        }
    
    
        /**
         * 分页查询药品出入库列表
         * value可以指定请求的参数
         * value = "/xxx",method = RequestMethod.POST
         * @param param 数据
         * @param pageNum 起始页数
         * @param pageSize 每页10行记录
         * @return
         */
        @RequestMapping(value = "/owinfoQueryPage")
        @ResponseBody
        public Object owinfoQueryPage(String param, @RequestParam(defaultValue = "1")Integer pageNum,@RequestParam(defaultValue = "10")Integer pageSize){
            try {
                //查询对应的数据
                IPage<Owinfo> iPage = owinfoService.selectOwinfoPage(pageNum, pageSize, param);
                //获取mysql的分页查询结果
                return ResultMapUtil.getHashMapMysqlPage(iPage);
            } catch (Exception e) {
                //如果出错,把异常信息返回给前端
                return ResultMapUtil.getHashMapException(e);
            }
        }
    
        /**
         * 转向药品出入库新增页面
         * @return 跳转owinfoPage.html
         */
        @RequestMapping(value = "/owinfoPage")
        public String owinfoPage(){
            return "/owinfoPage";
        }
    
        /**
         * 添加一个药品出入库
         * @param owinfo
         * @return
         */
        @RequestMapping(value = "/owinfoAdd")
        @ResponseBody
        public Object owinfoAdd(Owinfo owinfo){
            try {
                //获取创建时间
                owinfo.setCreatetime(new Date());
                //新增一条出入库信息
                int i = owinfoService.addOwinfo(owinfo);
                //保存,并统一格式返回
                return ResultMapUtil.getHashMapSave(i);
            } catch (Exception e) {
                //如果出错,把异常信息返回给前端
                return ResultMapUtil.getHashMapException(e);
            }
        }
    
        /**
         * 根据查询的id,转向药品出入库编辑页面
         * @param id 查询的id
         * @param model
         * @return
         */
        @RequestMapping(value = "/owinfoQueryById")
        public String owinfoQueryById(@RequestParam(name = "id",required = true)Integer id, Model model){
            //根据id查询药品
            Owinfo owinfo = owinfoService.queryOwinfoById(id);
            //model调用逻辑处理
            model.addAttribute("obj", owinfo);
            //跳转页owinfoPage.html
            return "/owinfoPage";
        }
    
        /**
         * 修改一个药品出入库
         * @param owinfo 实体类
         * @return 返回修改的数据
         */
        @RequestMapping(value = "/owinfoEdit")
        @ResponseBody
        public Object owinfoupdate(Owinfo owinfo){
            try {
                //修改一条药品出入库信息
                int i = owinfoService.updateOwinfo(owinfo);
                //保存,并统一格式返回
                return ResultMapUtil.getHashMapSave(i);
            } catch (Exception e) {
                //如果出错,把异常信息返回给前端
               return ResultMapUtil.getHashMapException(e);
            }
        }
    
        /**
         * 删除一个药品出入库
         * @param id 根据id删除
         * @return 返回删除的数据
         */
        @RequestMapping(value = "/owinfoDelById")
        @ResponseBody
        public Object owinfoDelById(Integer id){
            try {
                //根据id删除数据
                int i = owinfoService.delOwinfoById(id);
                //保存,并统一格式返回
                return ResultMapUtil.getHashMapDel(i);
            } catch (Exception e) {
                //如果出错,把异常信息返回给前端
                return ResultMapUtil.getHashMapException(e);
            }
        }
    }
    

    3.5 获取所有的药品

    DruginfoController

        /**
         * 获取所有药品
         */
        @RequestMapping(value = "/druginfoList")
        @ResponseBody
        public Object druginfoList(){
            List<Druginfo> druginfoList = druginfoService.queryDruginfoList();
            return ResultMapUtil.getHashMapList(druginfoList);
        }
    

    四、出入库后台页面

    4.1 药品管理页面

    owinfo.html

    <!DOCTYPE html>
    <html lang="zh_CN" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>药品出入库信息管理</title>
        <link rel="stylesheet" th:href="@{/static/layui/css/layui.css}" media="all">
        <link rel="stylesheet" th:href="@{/static/admin/style.css}" media="all">
        <script type="text/html" id="indexTpl">
            {{d.LAY_TABLE_INDEX+1}}
        </script>
    </head>
    <body class="layui-layout-body">
        <div class="layui-fluid">
            <div class="layui-row layui-col-space15">
                <div class="layui-col-md12">
                    <div class="layui-card">
                        <div class="layui-card-header">药品出入库信息列表</div>
                        <div class="layui-card-body">
                            <table class="layui-hide" id="main-table" lay-filter="main-table"></table>
                            <script type="text/html" id="toolbarDemo">
                                <span class="layui-inline" lay-event="add"><i class="layui-icon">&#xe654;</i> </span>
                                <span class="layui-inline" style="width: 240px;">
                                    <input class="layui-input" name="param" id="param" placeholder="根据药品名称查询" autocomplete="off">
                                </span>
                                <span class="layui-btn layui-btn-sm layui-bg-red" lay-event="querySearch">
                                    <i class="layui-icon">&#xe615;</i>查询
                                </span>
                            </script>
                            <script type="text/html" id="barDemo">
                                <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
                                <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
                            </script>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <script th:src="@{/static/layui/layui.js}"></script>
        <script>
            layui.use(['table','form'],function () {
                var $ = layui.$;
                var table = layui.table;
                table.render({
                    elem: '#main-table',
                    height: 650,
                    url: '/owinfo/owinfoQueryPage',
                    method: 'POST',
                    page: true,
                    id: 'table-load',
                    toolbar: '#toolbarDemo',
                    cols: [
                        [
                        {title: '序号',templet: '#indexTpl',width: 60,align:'center'},
                        {field:'dname',title:'药品名称',algin:'center'},
                        {field:'type',title:'出库/入库',algin:'center'},
                        {field:'count',title:'数量',algin:'center'},
                        {field:'operator',title:'操作人',algin:'center'},
                        {field:'createtime',title:'操作时间',algin:'center',
                        templet:"<div>{{layui.util.toDateString(d.createtime,'yyyy-MM-dd HH:mm:ss')}}</div>"},
                        {title:'操作',align:'center',toolbar:'#barDemo',fixed:'right'}
                        ]
                    ]
                });
    
                //监听头工具栏事件
                table.on('toolbar(main-table)',function (obj) {
                    switch (obj.event) {
                        case 'add':
                            layer.open({
                                type: 2,
                                title: '新增药品出入库信息',
                                content: '/owinfo/owinfoPage',
                                shade:[0.8,'#393d49'],
                                area:['600px','530px'],
                                btn:['确定','取消'],
                                yes:function (index,layero) {
                                    var iframeWindow = window['layui-layer-iframe'+index];
                                    var submit = layero.find('iframe').contents().find("#LAY-front-submit");
                                    //监听提交
                                    iframeWindow.layui.form.on('submit(LAY-front-submit)',function (data) {
                                        var field = data.field;
                                        $.ajax({
                                            url: '/owinfo/owinfoAdd',
                                            data: field,
                                            async: false,
                                            cache: false,
                                            success: function (str) {
                                                if(str.code === 0){
                                                    table.reload('table-load');
                                                }
                                                layer.msg(str.msg,{icon:str.icon,anim:str.anim});
                                            }
                                        });
                                        layer.close(index);     //关闭弹层
                                    });
                                    submit.trigger('click');
                                },
                                success:function (layero,index) {
                                    
                                }
                            });
                            break;
                        case 'querySearch':
                            var param = $('#param').val();
                            table.reload('table-load',{
                                where: {
                                    param: param
                                }
                            });
                            $('#param').val(param);
                            break;
                    }
                });
    
                //监听编辑、删除
                table.on('tool(main-table)',function (obj) {
                    var data = obj.data;
                    switch (obj.event) {
                        case 'edit':
                            layer.open({
                                type: 2,
                                title: '编辑药品出入库信息',
                                content: '/owinfo/owinfoQueryById?id=' +data.id,
                                shade:[0.8,'#393d49'],
                                area:['600px','500px'],
                                btn:['确定','取消'],
                                yes:function (index,layero) {
                                    var iframeWindow = window['layui-layer-iframe'+index];
                                    var submit = layero.find('iframe').contents().find("#LAY-front-submit");
                                    //监听提交
                                    iframeWindow.layui.form.on('submit(LAY-front-submit)',function (data) {
                                        var field = data.field;
                                        $.ajax({
                                            url: '/owinfo/owinfoEdit',
                                            data: field,
                                            async: false,
                                            cache: false,
                                            success: function (str) {
                                                if(str.code === 0){
                                                    table.reload('table-load');
                                                }
                                                layer.msg(str.msg,{icon:str.icon,anim:str.anim});
                                            }
                                        });
                                        layer.close(index);     //关闭弹层
                                    });
                                    submit.trigger('click');
                                },
                                success:function (layero,index) {
    
                                }
                            });
                            break;
                        case 'del':
                            layer.confirm('确认要删除吗?',function (index) {
                                $.ajax({
                                    url: '/owinfo/owinfoDelById?id=' +data.id,
                                    data: null,
                                    async: false,
                                    cache: false,
                                    success: function (str) {
                                        table.reload('table-load');
                                        layer.msg(str.msg,{icon:str.icon,anim:str.anim});
                                    }
                                });
                            })
                            break;
                    }
                });
            });
        </script>
    </body>
    </html>
    

    4.2 药品编辑页面

    owinfoPage.html

    <!DOCTYPE html>
    <html lang="zh_CN" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>药品出入库信息</title>
        <link rel="stylesheet" th:href="@{/static/layui/css/layui.css}" media="all">
        <link rel="stylesheet" th:href="@{/static/admin/style.css}" media="all">
    </head>
    <body>
        <div class="layui-fluid">
            <div class="layui-card">
                <div class="layui-card-body" style="padding: 15px;">
                    <form class="layui-form layui-form-pane" action="">
                        <input name="id" th:value="${obj?.id}" class="layui-input layui-hide"/>
                        <div class="layui-form-item">
                            <label class="layui-form-label">药品名称</label>
                            <div class="layui-input-block">
                                <select name="dname" id="dname"></select>
                            </div>
                        </div>
                        <div class="layui-form-item">
                            <label class="layui-form-label">出入库类型</label>
                            <div class="layui-input-block" th:style="'display:' + @{(${obj?.type != null} ? 'none' : '')} + ''">
                                <input type="radio" name="type" value="出库" title="出库">
                                <input type="radio" name="type" value="入库" title="入库">
                            </div>
                            <div class="layui-input-block" th:style="'display:' + @{(${obj?.type == null} ? 'none' : '')} + ''">
                                <input type="text" th:value="${obj?.type}" class="layui-input" disabled>
                            </div>
                        </div>
                        <div class="layui-form-item">
                            <label class="layui-form-label">数量</label>
                            <div class="layui-input-block">
                                <input type="text" name="count" th:value="${obj?.count}" lay-verify="required" placeholder="请输入数量" autocomplete="off" class="layui-input">
                            </div>
                        </div>
                        <div class="layui-form-item">
                            <label class="layui-form-label">操作人</label>
                            <div class="layui-input-block">
                                <input type="text" name="operator" th:value="${obj?.operator}" lay-verify="required" placeholder="请输入操作人" autocomplete="off" class="layui-input">
                            </div>
                        </div>
    
                        <div class="layui-form-item layui-hide">
                            <input type="button" lay-submit lay-filter="LAY-front-submit" id="LAY-front-submit" value="确认">
                        </div>
                    </form>
                </div>
            </div>
        </div>
        <script th:src="@{/static/layui/layui.js}"></script>
        <script>
            layui.use(['form'],function () {
                var $ = layui.$;
                var form = layui.form;
    
                //当前药品的值
                var currentDname = '[[${obj?.dname}]]';
                //获取供应商列表
                $.ajax({
                    url: '/druginfo/druginfoList',
                    dataType:'json',
                    type:'post',
                    cache:false,
                    success:function (data) {
                        $('#dname').prepend("<option value=''>请选择</option>");
                        for(var i=0;i<data.data.length;i++){
                            if(data.data[i].name==currentDname){
                                $('#dname').append("<option selected value='"+data.data[i].name+"'>"+data.data[i].name+"</option>");
                            }else{
                                $('#dname').append("<option value='"+data.data[i].name+"'>"+data.data[i].name+"</option>");
                            }
                        }
                        form.render();          //下拉列表渲染,把内容加载进去
                    }
                });
            });
        </script>
    </body>
    </html>
    

    4.3 完善index左侧菜单

    完善左侧页面代码,为后面提供便利

        <!--左侧菜单-->
        <div class="layui-side layui-bg-black">
            <!--可以滚动-->
            <div class="layui-side-scroll">
                <!--lay-accordion="true" 菜单可以折叠-->
                <ul class="layui-nav layui-nav-tree" lay-accordion="true">
                    <li class="layui-nav-item">
                        <a href="javascript:;" class="layui-icon layui-icon-set-fill layui-nav-item"> 药品库存管理</a>
                        <dl class="layui-nav-child">
                            <dd><a href="#" class="site-demo-active" lay-href="/owinfo" data-id="11" data-title="登记出入库信息">登记出入库信息</a> </dd>
                            <dd><a href="#" class="site-demo-active" lay-href="/problem" data-id="12" data-title="问题药品记录">问题药品记录</a> </dd>
                            <dd><a href="#" class="site-demo-active" lay-href="/druginfo/warranty" data-id="13" data-title="药品保质期检查">药品保质期检查</a> </dd>
                        </dl>
                    </li>
    
                    <li class="layui-nav-item">
                        <a href="javascript:;" class="layui-icon layui-icon-chart-screen layui-nav-item"> 药品销售管理</a>
                        <dl class="layui-nav-child">
                            <dd><a href="#" class="site-demo-active" lay-href="/saleinfo" data-id="21" data-title="销售记录">销售记录</a> </dd>
                            <dd><a href="#" class="site-demo-active" lay-href="/returngoods" data-id="22" data-title="收到退货">收到退货</a> </dd>
                        </dl>
                    </li>
    
                    <li class="layui-nav-item">
                        <a href="javascript:;" class="layui-icon layui-icon-date layui-nav-item"> 药品明细查询</a>
                        <!--二级菜单-->
                        <dl class="layui-nav-child">
                            <dd><a href="#" class="site-demo-active" lay-href="/druginfo" data-id="1" data-title="药品信息">药品信息</a> </dd>
                            <dd><a href="#" class="site-demo-active" lay-href="/supplier" data-id="2" data-title="供应商信息">供应商信息</a> </dd>
                            <dd><a href="#" class="site-demo-active" lay-href="/returnsupplier" data-id="33" data-title="退货给供应商">退货给供应商</a> </dd>
                            <dd><a href="#" class="site-demo-active" lay-href="/billinfo" data-id="33" data-title="账单信息">账单信息</a> </dd>
                        </dl>
                    </li>
                </ul>
            </div>
        </div>
    

    4.4 运行测试

    在这里插入图片描述

    编辑药品出入库
    在这里插入图片描述

    在这里插入图片描述

    五、药品记录管理

    参考入库管理,进行修改

    5.1 创建pojo实体类

    Problem

    package com.dh.pojo;
    
    import com.baomidou.mybatisplus.annotation.IdType;
    import com.baomidou.mybatisplus.annotation.TableField;
    import com.baomidou.mybatisplus.annotation.TableId;
    import com.baomidou.mybatisplus.annotation.TableName;
    import lombok.Data;
    
    import java.io.Serializable;
    import java.util.Date;
    
    /**
     * 药品记录管理
     * 问题药品
     */
    @Data
    @TableName(value = "problem")
    public class Problem implements Serializable {
        /*主键*/
        @TableField(value = "id")
        @TableId(value = "id",type = IdType.AUTO)
        private Integer id;
    
        /*药品名称*/
        private String dname;
    
        /*问题药品数量*/
        private Integer dcount;
    
        /*药品单价*/
        private Float dprice;
    
        /*问题原因*/
        private String reason;
    
        /*操作时间*/
        private Date createtime;
    }
    
    

    5.2 创建mapper接口

    package com.dh.mapper;
    
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import com.dh.pojo.Problem;
    import org.apache.ibatis.annotations.Mapper;
    
    @Mapper
    public interface ProblemMapper extends BaseMapper<Problem> {
    }
    
    

    5.3 创建Service业务层

    package com.dh.service;
    
    import com.baomidou.mybatisplus.core.metadata.IPage;
    import com.baomidou.mybatisplus.extension.service.IService;
    import com.dh.pojo.Problem;
    
    /**
     * 问题药品的service接口
     */
    public interface ProblemService extends IService<Problem> {
        /**
         * 分页查询问题药品数据
         * @param pageNum 第几页
         * @param pageSize 每页多少条数据
         * @param param 查询参数-问题药品名称
         * @return
         */
        public IPage<Problem> selectProblemPage(int pageNum, int pageSize, String param);
    
        /**
         * 新增一条问题药品信息
         * @param problem
         */
        public int addProblem(Problem problem);
    
        /**
         * 修改一条问题药品信息
         * @param problem
         */
        public int editProblem(Problem problem);
    
        /**
         * 根据主键id查询一个问题药品对象
         * @param id
         * @return
         */
        public Problem queryProblemById(Integer id);
    
        /**
         * 根据主键id删除一个问题药品对象
         * @param id
         * @return
         */
        public int delProblemById(Integer id);
    }
    

    实现类

    package com.dh.service.Impl;
    
    import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    import com.baomidou.mybatisplus.core.metadata.IPage;
    import com.baomidou.mybatisplus.core.toolkit.StringUtils;
    import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
    import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
    import com.dh.mapper.ProblemMapper;
    import com.dh.pojo.Problem;
    import com.dh.service.ProblemService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    /**
     * 问题药品service实现类
     */
    @Service
    public class ProblemServiceImpl extends ServiceImpl<ProblemMapper, Problem> implements ProblemService {
    
        @Autowired
        private ProblemMapper problemMapper;
    
        /**
         * 分页查询问题药品数据
         *
         * @param pageNum  第几页
         * @param pageSize 每页多少条数据
         * @param param    查询参数-问题药品名称
         * @return
         */
        @Override
        public IPage<Problem> selectProblemPage(int pageNum, int pageSize, String param) {
            QueryWrapper<Problem> queryWrapper = new QueryWrapper<>();
            if(StringUtils.isNotBlank(param)){
                queryWrapper.like("dname",param);
            }
            Page<Problem> page = new Page<>(pageNum,pageSize);
            return problemMapper.selectPage(page,queryWrapper);
        }
    
        /**
         * 新增一条问题药品信息
         *
         * @param problem
         */
        @Override
        public int addProblem(Problem problem) {
            return problemMapper.insert(problem);
        }
    
        /**
         * 修改一条问题药品信息
         *
         * @param problem
         */
        @Override
        public int editProblem(Problem problem) {
            return problemMapper.updateById(problem);
        }
    
        /**
         * 根据主键id查询一个问题药品对象
         *
         * @param id
         * @return
         */
        @Override
        public Problem queryProblemById(Integer id) {
            return problemMapper.selectById(id);
        }
    
        /**
         * 根据主键id删除一个问题药品对象
         *
         * @param id
         * @return
         */
        @Override
        public int delProblemById(Integer id) {
            return problemMapper.deleteById(id);
        }
    }
    

    5.4 创建controller控制层

    package com.dh.controller;
    
    import com.baomidou.mybatisplus.core.metadata.IPage;
    import com.dh.common.ResultMapUtil;
    import com.dh.pojo.Problem;
    import com.dh.service.ProblemService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import java.util.Date;
    
    /**
     * 问题药品相关的controller
     */
    @Controller
    @RequestMapping(value = "/problem")
    public class ProblemController {
    
        @Autowired
        private ProblemService problemService;
    
        /**
         * 转向问题药品页面
         */
        @RequestMapping
        public String problem(){
            return "/problem";
        }
    
        /**
         * 分页查询问题药品列表
         * value可以指定请求的参数
         * value = "/xxx",method = RequestMethod.POST
         * @param param 查询参数
         * @param pageNum 起始页数
         * @param pageSize 每页多少条数据
         * @return
         */
        @RequestMapping(value = "/problemQueryPage")
        @ResponseBody
        public Object problemQueryPage(String param, @RequestParam(defaultValue = "1")int pageNum,@RequestParam(defaultValue = "10")int pageSize){
            try{
                //查询对应的数据
                IPage<Problem> iPage = problemService.selectProblemPage(pageNum,pageSize,param);
                //获取mysql的分页查询结果
                return ResultMapUtil.getHashMapMysqlPage(iPage);
            } catch (Exception e){
                //如果出错,把异常信息返回给前端
                return ResultMapUtil.getHashMapException(e);
            }
        }
    
        /**
         * 转向问题药品新增页面
         *  @return 跳转problemPage.html
         */
        @RequestMapping(value = "/problemPage")
        public String problemPage(){
            return "/problemPage";
        }
    
        /**
         * 添加一个问题药品
         */
        @RequestMapping(value = "/problemAdd")
        @ResponseBody
        public Object problemAdd(Problem problem){
            try{
                //获取当前时间
                problem.setCreatetime(new Date());
                //新增一条出入库信息
                int i = problemService.addProblem(problem);
                //保存,并统一格式返回
                return ResultMapUtil.getHashMapSave(i);
            } catch (Exception e){
                //如果出错,把异常信息返回给前端
                return ResultMapUtil.getHashMapException(e);
            }
        }
    
        /**
         * 转向问题药品编辑页面
         * @param id 查询的id
         * @param model
         * @return
         */
        @RequestMapping(value = "/problemQueryById")
        public String problemQueryById(@RequestParam(name = "id",required = true)Integer id, Model model){
            //根据id查询药品
            Problem problem = problemService.queryProblemById(id);
            //model调用逻辑处理
            model.addAttribute("obj",problem);
            //跳转页problemPage.html
            return "/problemPage";
        }
    
        /**
         * 修改一个问题药品
         * @param problem 实体类
         * @return 返回修改的数据
         */
        @RequestMapping(value = "/problemEdit")
        @ResponseBody
        public Object problemEdit(Problem problem){
            try{
                //修改一条药品出入库信息
                int i = problemService.editProblem(problem);
                //保存,并统一格式返回
                return ResultMapUtil.getHashMapSave(i);
            } catch (Exception e){
                //如果出错,把异常信息返回给前端
                return ResultMapUtil.getHashMapException(e);
            }
        }
    
        /**
         * 删除一个问题药品
         * @param id 根据id删除
         * @return 返回删除的数据
         */
        @RequestMapping(value = "/problemDelById")
        @ResponseBody
        public Object problemDelById(Integer id){
            try{
                //根据id删除数据
                int i = problemService.delProblemById(id);
                //保存,并统一格式返回
                return ResultMapUtil.getHashMapDel(i);
            } catch (Exception e){
                //如果出错,把异常信息返回给前端
                return ResultMapUtil.getHashMapException(e);
            }
        }
    }
    

    六、问题管理后台页面

    6.1 编写问题页面

    problem.html

    <!DOCTYPE html>
    <html lang="zh_CN" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>问题药品信息管理</title>
        <link rel="stylesheet" th:href="@{/static/layui/css/layui.css}" media="all">
        <link rel="stylesheet" th:href="@{/static/admin/style.css}" media="all">
        <script type="text/html" id="indexTpl">
            {{d.LAY_TABLE_INDEX+1}}
        </script>
    </head>
    <body class="layui-layout-body">
    <div class="layui-fluid">
        <div class="layui-row layui-col-space15">
            <div class="layui-col-md12">
                <div class="layui-card">
                    <div class="layui-card-header">问题药品信息列表</div>
                    <div class="layui-card-body">
                        <table class="layui-hide" id="main-table" lay-filter="main-table"></table>
                        <script type="text/html" id="toolbarDemo">
                            <span class="layui-inline" lay-event="add"><i class="layui-icon">&#xe654;</i> </span>
                            <span class="layui-inline" style="width: 240px;">
                                    <input class="layui-input" name="param" id="param" placeholder="根据药品名称查询" autocomplete="off">
                                </span>
                            <span class="layui-btn layui-btn-sm layui-bg-red" lay-event="querySearch">
                                    <i class="layui-icon">&#xe615;</i>查询
                                </span>
                        </script>
                        <script type="text/html" id="barDemo">
                            <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
                            <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
                        </script>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <script th:src="@{/static/layui/layui.js}"></script>
    <script>
        layui.use(['table','form'],function () {
            var $ = layui.$;
            var table = layui.table;
            table.render({
                elem: '#main-table',
                height: 650,
                url: '/problem/problemQueryPage',
                method: 'POST',
                page: true,
                id: 'table-load',
                toolbar: '#toolbarDemo',
                cols: [
                    [
                        {title: '序号',templet: '#indexTpl',width: 60,align:'center'},
                        {field:'dname',title:'药品名称',algin:'center'},
                        {field:'dcount',title:'问题药品数量',algin:'center'},
                        {field:'dprice',title:'药品单价',algin:'center'},
                        {field:'createtime',title:'操作时间',algin:'center',
                            templet:"<div>{{layui.util.toDateString(d.createtime,'yyyy-MM-dd HH:mm:ss')}}</div>"},
                        {title:'操作',align:'center',toolbar:'#barDemo',fixed:'right'}
                    ]
                ]
            });
    
            //监听头工具栏事件
            table.on('toolbar(main-table)',function (obj) {
                switch (obj.event) {
                    case 'add':
                        layer.open({
                            type: 2,
                            title: '新增问题药品信息',
                            content: '/problem/problemPage',
                            shade:[0.8,'#393d49'],
                            area:['600px','530px'],
                            btn:['确定','取消'],
                            yes:function (index,layero) {
                                var iframeWindow = window['layui-layer-iframe'+index];
                                var submit = layero.find('iframe').contents().find("#LAY-front-submit");
                                //监听提交
                                iframeWindow.layui.form.on('submit(LAY-front-submit)',function (data) {
                                    var field = data.field;
                                    $.ajax({
                                        url: '/problem/problemAdd',
                                        data: field,
                                        async: false,
                                        cache: false,
                                        success: function (str) {
                                            if(str.code === 0){
                                                table.reload('table-load');
                                            }
                                            layer.msg(str.msg,{icon:str.icon,anim:str.anim});
                                        }
                                    });
                                    layer.close(index);     //关闭弹层
                                });
                                submit.trigger('click');
                            },
                            success:function (layero,index) {
    
                            }
                        });
                        break;
                    case 'querySearch':
                        var param = $('#param').val();
                        table.reload('table-load',{
                            where: {
                                param: param
                            }
                        });
                        $('#param').val(param);
                        break;
                }
            });
    
            //监听编辑、删除
            table.on('tool(main-table)',function (obj) {
                var data = obj.data;
                switch (obj.event) {
                    case 'edit':
                        layer.open({
                            type: 2,
                            title: '编辑问题药品信息',
                            content: '/problem/problemQueryById?id=' +data.id,
                            shade:[0.8,'#393d49'],
                            area:['600px','500px'],
                            btn:['确定','取消'],
                            yes:function (index,layero) {
                                var iframeWindow = window['layui-layer-iframe'+index];
                                var submit = layero.find('iframe').contents().find("#LAY-front-submit");
                                //监听提交
                                iframeWindow.layui.form.on('submit(LAY-front-submit)',function (data) {
                                    var field = data.field;
                                    $.ajax({
                                        url: '/problem/problemEdit',
                                        data: field,
                                        async: false,
                                        cache: false,
                                        success: function (str) {
                                            if(str.code === 0){
                                                table.reload('table-load');
                                            }
                                            layer.msg(str.msg,{icon:str.icon,anim:str.anim});
                                        }
                                    });
                                    layer.close(index);     //关闭弹层
                                });
                                submit.trigger('click');
                            },
                            success:function (layero,index) {
    
                            }
                        });
                        break;
                    case 'del':
                        layer.confirm('确认要删除吗?',function (index) {
                            $.ajax({
                                url: '/problem/problemDelById?id=' +data.id,
                                data: null,
                                async: false,
                                cache: false,
                                success: function (str) {
                                    table.reload('table-load');
                                    layer.msg(str.msg,{icon:str.icon,anim:str.anim});
                                }
                            });
                        })
                        break;
                }
            });
        });
    </script>
    </body>
    </html>
    

    6.2 编写问题编辑页面

    problemPage.html

    <!DOCTYPE html>
    <html lang="zh_CN" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>问题药品信息</title>
        <link rel="stylesheet" th:href="@{/static/layui/css/layui.css}" media="all">
        <link rel="stylesheet" th:href="@{/static/admin/style.css}" media="all">
    </head>
    <body>
    <div class="layui-fluid">
        <div class="layui-card">
            <div class="layui-card-body" style="padding: 15px;">
                <form class="layui-form layui-form-pane" action="">
                    <input name="id" th:value="${obj?.id}" class="layui-input layui-hide"/>
                    <div class="layui-form-item">
                        <label class="layui-form-label">药品名称</label>
                        <div class="layui-input-block">
                            <select name="dname" id="dname"></select>
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">药品数量</label>
                        <div class="layui-input-block">
                            <input type="text" name="dcount" th:value="${obj?.dcount}" lay-verify="required" placeholder="请输入数量" autocomplete="off" class="layui-input">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">药品单价</label>
                        <div class="layui-input-block">
                            <input type="text" name="dprice" th:value="${obj?.dprice}" lay-verify="required" placeholder="请输入药品单价" autocomplete="off" class="layui-input">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">问题原因</label>
                        <div class="layui-input-block">
                            <textarea name="reason" th:text="${obj?.reason}" lay-verify="required" placeholder="请输入问题原因" autocomplete="off" class="layui-textarea"></textarea>
                        </div>
                    </div>
                    <div class="layui-form-item layui-hide">
                        <input type="button" lay-submit lay-filter="LAY-front-submit" id="LAY-front-submit" value="确认">
                    </div>
                </form>
            </div>
        </div>
    </div>
    <script th:src="@{/static/layui/layui.js}"></script>
    <script>
        layui.use(['form'],function () {
            var $ = layui.$;
            var form = layui.form;
    
            //当前药品的值
            var currentDname = '[[${obj?.dname}]]';
            //获取供应商列表
            $.ajax({
                url: '/druginfo/druginfoList',
                dataType:'json',
                type:'post',
                cache:false,
                success:function (data) {
                    $('#dname').prepend("<option value=''>请选择</option>");
                    for(var i=0;i<data.data.length;i++){
                        if(data.data[i].name==currentDname){
                            $('#dname').append("<option selected value='"+data.data[i].name+"'>"+data.data[i].name+"</option>");
                        }else{
                            $('#dname').append("<option value='"+data.data[i].name+"'>"+data.data[i].name+"</option>");
                        }
                    }
                    form.render();          //下拉列表渲染,把内容加载进去
                }
            });
        });
    </script>
    </body>
    </html>
    

    6.3 运行测试

    在这里插入图片描述

    在这里插入图片描述

    七、药品保质期检查

    7.1 跳转药品保质期页面

    DruginfoController

       /**
         * 转向药品保质期检查页面
         */
        @RequestMapping(value = "/warranty")
        public String warranty(){
            return "/warranty";
        }
    

    7.2 编写药品保质期页面

    warranty.html

    <!DOCTYPE html>
    <html lang="zh_CN" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>药品保质期检查</title>
        <link rel="stylesheet" th:href="@{/static/layui/css/layui.css}" media="all">
        <link rel="stylesheet" th:href="@{/static/admin/style.css}" media="all">
        <script type="text/html" id="indexTpl">
            {{d.LAY_TABLE_INDEX+1}}
        </script>
    </head>
    <body class="layui-layout-body">
        <div class="layui-fluid">
            <div class="layui-row layui-col-space15">
                <div class="layui-col-md12">
                    <div class="layui-card">
                        <div class="layui-card-header">药品保质期检查</div>
                        <div class="layui-card-body">
                            <table class="layui-hide" id="main-table" lay-filter="main-table"></table>
                            <script type="text/html" id="toolbarDemo">
                                <span class="layui-inline" lay-event="add"><i class="layui-icon">&#xe654;</i> </span>
                                <span class="layui-inline" style="width: 240px;">
                                    <input class="layui-input" name="param" id="param" placeholder="根据药品名称查询" autocomplete="off">
                                </span>
                                <span class="layui-btn layui-btn-sm layui-bg-red" lay-event="querySearch">
                                    <i class="layui-icon">&#xe615;</i>查询
                                </span>
                            </script>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <script th:src="@{/static/layui/layui.js}"></script>
        <script>
            layui.use(['table','form'],function () {
                var $ = layui.$;
                var table = layui.table;
                table.render({
                    elem: '#main-table',
                    height: 650,
                    url: '/druginfo/druginfoQueryPage',
                    method: 'POST',
                    page: true,
                    id: 'table-load',
                    toolbar: '#toolbarDemo',
                    cols: [
                        [
                        {title: '序号',templet: '#indexTpl',width: 60,align:'center'},
                        {field:'name',title:'药品名称',algin:'center'},
                        {field:'warrenty',title:'保质期(月)',algin:'center'},
                        {field:'producttime',title:'生产时间',algin:'center',
                            templet:"<div>{{layui.util.toDateString(d.producttime,'yyyy-MM-dd')}}</div>"},
                        {field:'createtime',title:'当前时间',algin:'center',
                            templet:"<div>{{layui.util.toDateString(d.createtime,'yyyy-MM-dd')}}</div>"},
                        {title:'是否过期',align:'center',templet: isWarranty}
                        ]
                    ]
                });
    
                //监听头工具栏事件
                table.on('toolbar(main-table)',function (obj) {
                    switch (obj.event) {
                        case 'querySearch':
                            var param = $('#param').val();
                            table.reload('table-load',{
                                where: {
                                    param: param
                                }
                            });
                            $('#param').val(param);
                            break;
                    }
                });
    
                //计算药品是否过期
                function isWarranty(d) {
                    //生产日期
                    debugger
                    var p_time = d.producttime;
                    p_time = p_time.split('-');
                    p_time = parseInt(p_time[0])*12 + parseInt(p_time[1]);
                    //获取当前时间
                    var date = new Date();
                    var year = date.getFullYear();
                    var month = date.getMonth() + 1;
                    var now_year_month = year*12 + month;
                    var m = now_year_month - (p_time + parseInt(d.warrenty));
                    if(m>=1){
                        return "<span style='color:red'>已过期" + m +"个月</span>";
                    }else if(m==0){
                        return "<span style='color:#ffab00'>保质期不满一个月</span>";
                    }else{
                        return "<span style='color:green;'>未过期,剩余" + Math.abs(m) +"个月</span>";
                    }
                }
            });
        </script>
    </body>
    </html>
    

    7.3运行测试

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 医院药品管理系统演讲版本.doc
  • JSP医院药品管理系统,压缩包根目录下包含数据库及演示视频,属于本人独立完成。页面包括:登录验证、药品库存管理、添加药品(名称、分类、供应商、药品数量、药品单价、药品详情、入库日期、药品图像[此功能不完善...
  • 【Java web 项目】医院药品管理系统

    千次阅读 2021-11-17 11:37:15
    医院药品管理系统 项目简介 技术栈:spring boot + mybatis-plus + themeleaf 项目测试地址:http://121.41.53.88:9079/ 高级管理员账号为:100002,密码为:123456 或者可注册账号后登陆系统,根据系统通知进行操作...

    医院药品管理系统

    项目简介

    技术栈:spring boot + mybatis-plus + themeleaf

    项目测试地址:医院药品管理系统登录

    或者可注册账号后登陆系统,根据系统通知进行操作

    下载地址:医院管理系统下载

    1. 功能模块

    1.0 登录注册功能

    登陆、注册、重置密码

    1.1 药品入库功能

    开发技术完成药品入库单的增、删、改和保存功能并撰写实验报告;

    1.2 通知发布功能

    新增、修改、删除和发布通知;显示已发布但当前登录用户还没有浏览的通知列表,并提供查看功能;撰写实验报告;

    1.3 用户登录日志功能

    用户登录系统时,记录用户名、登录模块名、机器IP地址、登录时间等数据;用户退出系统时,记录用户退出系统时间(登录和退出系统时间应取服务器时间);查看当前在线用户;撰写实验报告;

    1.4 员工录入功能

    设计一个录入界面,支持录入姓名、出生日期、身份号码、籍贯等数据项;录入籍贯数据项时要显示行政区划列表,键入行政区划编码(如640104)或拼音助记符(如宁夏银川的拼音助记符是nxyc或NXYC)时提供逐渐提示功能;录入汉字姓名后要做数据合法性校验(可选)。撰写实验报告;

    1.5 大文本数据录入功能

    创建数据表,编写代码插入3条记录,每条记录包括姓名、出生日期、照片(二进制存储)、照片(Base 64字符存储)四项,按姓名查找某条记录,分别显示上述四项数据。撰写实验报告

    1.6 菜单授权功能

    实现菜单、角色、用户管理,可以为每个角色分配访问某些菜单的权限,并可以更新已赋予角色的权限,要求每个用户都属于某个角色,并继承此角色的权限

    序号身份菜单说明
    1系统高级管理员所有菜单系统高级管理员可以操作所有功能
    2用户用户信息管理->个人信息用户登陆后只能查看和修改个人信息
    3员工用户信息管理->个人信息员工登陆后只能查看和修改个人信息
    4人事管理员用户信息管理、员工信息管理管理用户和员工信息
    5通知管理员通知信息管理管理通知信息
    6大文本数据管理员大文本数据管理管理大文本信息
    7药品管理员药品管理管理药品信息
    8供应商管理员供应商管理管理供应商信息
    9入库单管理员入库单管理、供应商管理、药品管理管理入库单、供应商、药品信息
    10系统管理员所有菜单 - 角色授权系统管理员可以操作除角色授权以外所有功能

    2. 项目结构简介

    请添加图片描述

    3. 数据库

    数据库为: MySQL 8

    数据库名为:hospital_drug_management_system

    表间关系如下图所示:

    请添加图片描述

    创建好数据库后运行table.sql文件即可创建好项目所需数据库,并添加初始化管理员信息

    系统管理员 冷芝士鸭

    • 账号为:100000
    • 密码为:123546

    4. 运行截图

    4.1 登陆注册

    请添加图片描述

    4.2 入库单管理

    请添加图片描述

    4.3 供应商管理

    请添加图片描述

    4.4 药品管理

    请添加图片描述

    4.5 用户管理

    请添加图片描述

    4.6 通知管理

    查看所有通知

    请添加图片描述
    登陆后弹出通知
    请添加图片描述

    4.7 部门管理

    请添加图片描述

    4.8 员工管理

    请添加图片描述

    4.9 大文本管理

    请添加图片描述

    4.10 角色授权管理

    请添加图片描述

    展开全文
  • 功能描叙: 药品销售管理药品明晰管理,药片库存管理,登记出入 库信息,问题药品记录,药片保质期检查,销售记录,退 货记录,药品信息,供应商信息等等。 二、项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql...
  • 医院药品管理系统的设计与实现.doc
  • 医院药品管理系统课程设计,逻辑结构,物理结构,数据字典。
  • 医院药品管理系统的设计与实现毕业论文.doc
  • 武汉理工大学计算机能力拓展训练报告书 PAGE - 19 - 学 号 课 程 设 计 题 目 基于Java环境的医院 药品管理系统的设计 学 院 计算机科学与技术学院 专 业 计算机科学与技术专业 班 级 姓 名 指导教师 许 毅 2012 年 ...
  • C#课件:医院药品管理系统的设计与实现.ppt
  • 药品管理系统的设计应该满足医院药库、药房 的日常工作需要。 主要将药品管理系统的设计思路
  • 为了对药品档案的管理方便,因此开发了本软件。数据库在零售药店管理系统中占有极其重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。
  • 项目有演示视频(任选博主一篇文章,最下方),便于各位老板遴选
  • 基于Java环境的医院药品管理系统的设计(含源文件).doc

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,864
精华内容 1,945
关键字:

医院药品管理系统