当前位置: 首页 > news >正文

若依脚手架 创建一个系统 his医院信息管理系统

         

  〇、创建his-medicine模块

            0) 在创建好的若依后端项目中创建一个maven模块his-medicine

         1)his模块的整合步骤

                ①)his的依赖

                这个是若依项目所有系统模块都需要添加的依赖,domain和controller继承的类就在这里面。

 <!-- 通用工具--><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-common</artifactId></dependency>
                ②)安装his模块

               ③)  在ruoyi-admin模块中引入his模块

                        实质上在项目运行时,实际运行的是ruoyi-admin项目,所有其他模块的文件最终都放到此模块下。

       

 一、实现his的思路:

                          his医院信息管理系统的业务对象包括生产厂家、供应商、药品、订单、订单详情等等,要想完成一个his,首先需要把所有的业务对象的增删改查基础代码写出来,单表的增删改查过程虽然可以直接使用代码生成器,所以首先可以尝试自己手动写一个系统对象,熟悉若依的系统框架到底是怎么运行的;

                        然后再考虑复杂的业务场景。

                         整个业务流程如图:

                对应的业务需求:

二、生产厂家系统:

三、药品系统:

四、经销商系统:

五、采购商系统:

六、审核管理员  检验管理员  入库管理员系统:



二、生产厂家系统:

        1)数据库sql建表语句

drop table if exists his_medicine_factory
CREATE TABLE `his_medicine_factory` (`factory_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '厂家ID',`factory_name` varchar(100) DEFAULT NULL COMMENT '厂家名称',`factory_code` varchar(50) NOT NULL COMMENT '厂家编码',`factory_person` varchar(50) NOT NULL COMMENT '厂家联系人',`factory_phone` char(11) DEFAULT '00' COMMENT '联系方式',`factory_keyword` varchar(50) DEFAULT '' COMMENT '厂家关键字',`factory_address` varchar(100) DEFAULT '' COMMENT '厂家地址',`status` char(1) DEFAULT '0' COMMENT '(0正常 1 禁用)',`create_by` varchar(64) DEFAULT '' COMMENT '创建者',`create_time` datetime DEFAULT NULL COMMENT '创建时间',`update_by` varchar(64) DEFAULT '' COMMENT '更新者',`update_time` datetime DEFAULT NULL COMMENT '更新时间',`remark` varchar(500) DEFAULT NULL COMMENT '备注',PRIMARY KEY (`factory_id`)) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8 COMMENT='生产厂家信息表';

   


    2)单表增删改查的实现

                        写一个生产厂家的管理系统可以对照写好的部门系统SysPost格式,从后端到前端不管是代码的格式还是界面elementplus标签 岗位系统是比较好的参考例子。


                〇)domain

                        通过若依写好的岗位管理系统发现所有实体类都继承了BaseEntity

                        BaseEntity主要用来存放一些公共的属性值,对应的也就是数据库中表中的公共字段

                        那根据数据库创建的实体类MedicineFactory也继承BaseEntity

package com.ruoyi.domain;import com.ruoyi.common.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;import java.sql.Date;/*** @author rk* @description: TODO* @date 2024/8/28 19:08*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MedicineFactory extends BaseEntity {private Long factoryId;private String factoryName;private String factoryCode;private String factoryPerson;private String factoryPhone;private String factoryKeyword;private String factoryAddress;private String status;private String createBy;private Date createTime;private String updateBy;private Date updateTime;private String remake;@DateTimeFormat(pattern = "yyyy-MM-dd")private Date startTime;@DateTimeFormat(pattern = "yyyy-MM-dd" )private Date endTime;
}
     


          ①mapper    没有影响 ,照写
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.ruoyi.mapper.HisMedicineFactoryMapper"><resultMap id="factory" type="com.ruoyi.domain.MedicineFactory"><id column="factory_id" property="factoryId"></id><result column="factory_name" property="factoryName"></result><result column="factory_code" property="factoryCode"></result><result column="factory_person" property="factoryPerson"></result><result column="factory_phone" property="factoryPhone"></result><result column="factory_keyword" property="factoryKeyword"></result><result column="factory_address" property="factoryAddress"></result><result column="create_by" property="createBy"></result><result column="create_time" property="createTime"></result><result column="update_by" property="updateBy"></result><result column="update_time" property="updateTime"></result><result column="remark" property="remark"></result>
<!--        <association property="" resultMap=""></association>--></resultMap><sql id="selectFactory">select factory_id,factory_name,factory_code,factory_person,factory_phone ,factory_keyword,factory_address,create_by,create_time,update_by,update_time,remark,statusfrom his_medicine_factory</sql><select id="selectFactoryList" resultMap="factory"><include refid="selectFactory"></include><where><if test="factoryName!=null and factoryName!=''">and factory_name like concat('%',#{factoryName},'%')</if><if test="factoryKeyword!=null and factoryKeyword!=''">and  factory_keyword = #{factoryKeyword}</if><if test="factoryPhone!=null and factoryPhone!=''">and factory_phone = #{factoryPhone}</if><if test="status!=null and status!=''">and  status = #{status}</if><if test="params.startTime!=null and params.startTime!=''">and  create_time  >= #{params.startTime}</if><if test="params.endTime!=null and params.endTime!=''">and  create_time  &lt;= #{params.endTime}</if></where></select><update id="updateFactory">update his_medicine_factory<set><if test="factoryCode != null and factoryCode != ''">factory_code = #{factoryCode},</if><if test="factoryPerson != null and factoryPerson != ''">factory_person = #{factoryPerson},</if><if test="factoryKeyword != null and factoryKeyword !=''">factory_keyword = #{factoryKeyword},</if><if test="factoryAddress != null and factoryAddress !=''">factory_address = #{factoryAddress},</if><if test="status != null and status != ''">status = #{status},</if><if test="remark != null">remark = #{remark},</if><if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>update_time = sysdate()</set>where factory_id = #{factoryId}</update><insert id="addFactory">insert into his_medicine_factoryvalues(0,#{factoryName},#{factoryCode},#{factoryPerson},#{factoryPhone},#{factoryKeyword},#{factoryAddress},#{status},#{createBy},sysdate(),0,NULL,#{remake})</insert><delete id="deleteFactoryById">delete from his_medicine_factorywhere factory_id = #{id}</delete><select id="selectFactoryById" resultMap="factory"><include refid="selectFactory"></include>where factory_id = #{id}</select></mapper>
package com.ruoyi.mapper;import com.ruoyi.domain.MedicineFactory;
import org.apache.ibatis.annotations.Mapper;import java.util.List;
@Mapper
public interface HisMedicineFactoryMapper {List<MedicineFactory> selectFactoryList(MedicineFactory medicineFactory);int updateFactory(MedicineFactory medicineFactory);int addFactory(MedicineFactory medicineFactory);int deleteFactoryById(Long  id);MedicineFactory selectFactoryById(Long id);
}
                ②service  没有影响 ,照写
package com.ruoyi.service;import com.ruoyi.domain.MedicineFactory;import java.util.List;public interface IHisMedicineFactory {List<MedicineFactory> selectFactoryList(MedicineFactory medicineFactory);int updateFactory(MedicineFactory medicineFactory);int addFactory(MedicineFactory medicineFactory);int deleteFactoryById(Long  id);MedicineFactory selectFactoryById(Long id);}
package com.ruoyi.service.impl;import com.ruoyi.mapper.HisMedicineFactoryMapper;
import com.ruoyi.service.IHisMedicineFactory;
import com.ruoyi.domain.MedicineFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;/*** @author rk* @description: TODO* @date 2024/8/28 20:26*/
@Service
public class HisMedicineFactoryImpl implements IHisMedicineFactory {@Autowiredprivate HisMedicineFactoryMapper hisMedicineFactoryMapper;@Overridepublic List<MedicineFactory> selectFactoryList(MedicineFactory medicineFactory) {return hisMedicineFactoryMapper.selectFactoryList(medicineFactory);}@Overridepublic int updateFactory(MedicineFactory medicineFactory) {return hisMedicineFactoryMapper.updateFactory(medicineFactory);}@Overridepublic int addFactory(MedicineFactory medicineFactory) {return hisMedicineFactoryMapper.addFactory(medicineFactory);}@Overridepublic int deleteFactoryById(Long id) {return hisMedicineFactoryMapper.deleteFactoryById(id);}@Overridepublic MedicineFactory selectFactoryById(Long id) {return hisMedicineFactoryMapper.selectFactoryById(id);}
}
         


      ③controller

                        controller类的代码放在ruoyi-admin目录下;

                        需要继承BaseController

                        每个单元方法上添加检验权限标识符的注解@PreAuthorize

package com.ruoyi.web.controller.medicine;import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.domain.MedicineFactory;
import com.ruoyi.service.IHisMedicineFactory;
import com.ruoyi.system.domain.SysPost;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;import java.util.List;/*** @author rk* @description: TODO* @date 2024/8/28 20:34*/
@RestController
@RequestMapping("medicine/factory")
public class MedicineController extends BaseController {@Autowiredprivate IHisMedicineFactory hisMedicineFactory;/****/@PreAuthorize("@ss.hasPermi('medicine:factory:list')")@GetMapping("/list")public TableDataInfo list(MedicineFactory medicineFactory){startPage();List<MedicineFactory> list = hisMedicineFactory.selectFactoryList(medicineFactory);return getDataTable(list);}/*** 根据岗位编号获取详细信息*/@PreAuthorize("@ss.hasPermi('medicine:factory:list')")@GetMapping(value = "/list/{id}")public AjaxResult getInfo(@PathVariable Long id){return success(hisMedicineFactory.selectFactoryById(id));}@PreAuthorize("@ss.hasPermi('medicine:factory:add')")@PostMappingpublic AjaxResult add(@Validated @RequestBody MedicineFactory medicineFactory){medicineFactory.setCreateBy(getUsername());return toAjax(hisMedicineFactory.addFactory(medicineFactory));}/*** 修改岗位*/@PreAuthorize("@ss.hasPermi('medicine:factory:edit')")@PutMappingpublic AjaxResult edit(@Validated @RequestBody MedicineFactory medicineFactory){medicineFactory.setUpdateBy(getUsername());return toAjax(hisMedicineFactory.updateFactory(medicineFactory));}/*** 删除岗位*/@PreAuthorize("@ss.hasPermi('medicine:factory:remove')")@DeleteMapping("/{id}")public AjaxResult remove(@PathVariable Long id){return toAjax(hisMedicineFactory.deleteFactoryById(id));}}

     


  3)对应的前端界面

                        〇)界面效果

                        ①)登录若依管理系统手动添加对应的路由地址和url

                     


                 ②) 前端代码

                                界面的elementplus标签和script内语法可以参照岗位系统的前端界面post.vue代码。



三、药品系统

     1) sql建表语句:

CREATE TABLE `his_medicine_drug` (`drug_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '药品ID',`drug_name` varchar(100) DEFAULT NULL COMMENT '药片名称',`drug_code` varchar(50) NOT NULL COMMENT '药品编码',`drug_keyword` varchar(50) NOT NULL COMMENT '药片关键字',`factory_id` bigint(20) NOT NULL COMMENT '生产厂家ID',`drug_type` char(1) NOT NULL COMMENT '药品类型',`drug_prescription` char(1) NOT NULL COMMENT '处方类型',`drug_unit` char(1) NOT NULL COMMENT '单位',`drug_price` double DEFAULT NULL COMMENT '销售价格--预留字段',`drug_num` int(11) NOT NULL COMMENT '库存数量',`drug_warn` int(11) NOT NULL COMMENT '预警值',`status` char(1) DEFAULT '0' COMMENT '(0正常 1 禁用)',`create_by` varchar(64) DEFAULT '' COMMENT '创建者',`create_time` datetime DEFAULT NULL COMMENT '创建时间',`update_by` varchar(64) DEFAULT '' COMMENT '更新者',`update_time` datetime DEFAULT NULL COMMENT '更新时间',`remark` varchar(500) DEFAULT NULL COMMENT '备注',PRIMARY KEY (`drug_id`)
) ENGINE=InnoDB AUTO_INCREMENT=103 DEFAULT CHARSET=utf8 COMMENT='药品信息表';



四、经销商系统

     1) sql建表语句:

CREATE TABLE `his_medicine_supplier` (`supplier_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '供应商ID',`supplier_name` varchar(100) DEFAULT NULL COMMENT '供应商名称',`supplier_person` varchar(50) NOT NULL COMMENT '供应商联系人',`supplier_phone` char(11) DEFAULT '00' COMMENT '供应商方式',`supplier_bank` varchar(50) DEFAULT '' COMMENT '银行卡号',`supplier_address` varchar(100) DEFAULT '' COMMENT '供应商地址',`status` char(1) DEFAULT '0' COMMENT '(0正常 1 禁用)',`create_by` varchar(64) DEFAULT '' COMMENT '创建者',`create_time` datetime DEFAULT NULL COMMENT '创建时间',`update_by` varchar(64) DEFAULT '' COMMENT '更新者',`update_time` datetime DEFAULT NULL COMMENT '更新时间',`remark` varchar(500) DEFAULT NULL COMMENT '备注',PRIMARY KEY (`supplier_id`)
) ENGINE=InnoDB AUTO_INCREMENT=103 DEFAULT CHARSET=utf8 COMMENT='供应商信息表';



五、采购商系统

     1) sql建表语句:核心业务 需要设计多张表

                ①订单表:
 drop table if EXISTS his_medicine_order ;
CREATE TABLE `his_medicine_order` (`order_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '订单ID',`order_num` varchar(100) DEFAULT NULL COMMENT '订单编号',`order_person` bigint(20) NOT NULL COMMENT '制单人',`supplier_id` bigint(20) NOT NULL COMMENT '供应商ID',`order_money` double  COMMENT '订单总金额',`order_status` char(2)  COMMENT '订单状态',`status` char(1) DEFAULT '0' COMMENT '(0正常 1 禁用)',`create_by` varchar(64) DEFAULT '' COMMENT '创建者',`create_time` datetime DEFAULT NULL COMMENT '创建时间',`update_by` varchar(64) DEFAULT '' COMMENT '更新者',`update_time` datetime DEFAULT NULL COMMENT '更新时间',`remark` varchar(500) DEFAULT NULL COMMENT '备注',PRIMARY KEY (`order_id`)
) ENGINE=InnoDB AUTO_INCREMENT=104 DEFAULT CHARSET=utf8 COMMENT='订单信息表';

                ②订单详情表:
drop table if EXISTS his_medicine_order_detail ;
CREATE TABLE `his_medicine_order_detail` (`detail_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '详情ID',`drug_id` bigint(20) DEFAULT NULL COMMENT '药品ID',`detail_num` int NOT NULL COMMENT '数量',`detail_money` double NOT NULL COMMENT '药品单价',`detail_batch` varchar(50) DEFAULT '00' COMMENT '批次号',`order_id` bigint(20)  COMMENT '订单ID',`status` char(1) DEFAULT '0' COMMENT '(0正常 1 禁用)',`create_by` varchar(64) DEFAULT '' COMMENT '创建者',`create_time` datetime DEFAULT NULL COMMENT '创建时间',`update_by` varchar(64) DEFAULT '' COMMENT '更新者',`update_time` datetime DEFAULT NULL COMMENT '更新时间',`remark` varchar(500) DEFAULT NULL COMMENT '备注',PRIMARY KEY (`detail_id`)
) ENGINE=InnoDB AUTO_INCREMENT=104 DEFAULT CHARSET=utf8 COMMENT='订单详情信息表';

                ③购物车表: 
create  table his_medicine_cart(id bigint not null primary key auto_increment,user_id bigint not null,cart text,remark  varchar(500)	
)



六、审核管理员  检验管理员  入库管理员系统

     1) sql建表语句:

                ①审核表
drop table if EXISTS his_medicine_order_audit;
CREATE TABLE `his_medicine_order_audit` (`audit_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '审核ID',`audit_person` bigint(20) DEFAULT NULL COMMENT '审核人',`audit_content` varchar(50) NOT NULL COMMENT '审核意见',`audit_result` char(1) NOT NULL COMMENT '审核结果',`order_id` bigint(20)  COMMENT '订单ID',`status` char(1) DEFAULT '0' COMMENT '(0正常 1 禁用)',`create_by` varchar(64) DEFAULT '' COMMENT '创建者',`create_time` datetime DEFAULT NULL COMMENT '创建时间',`update_by` varchar(64) DEFAULT '' COMMENT '更新者',`update_time` datetime DEFAULT NULL COMMENT '更新时间',`remark` varchar(500) DEFAULT NULL COMMENT '备注',PRIMARY KEY (`audit_id`)
) ENGINE=InnoDB AUTO_INCREMENT=104 DEFAULT CHARSET=utf8 COMMENT='审核信息表';

                ②检验表
drop table if EXISTS his_medicine_order_check;
CREATE TABLE `his_medicine_order_check` (`check_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '检验记录ID',`check_person` bigint(20) DEFAULT NULL COMMENT '检验人',`check_content` text NOT NULL COMMENT '检验意见',`check_result` varchar(50) NOT NULL COMMENT '检验结果',`order_id` bigint(20)  COMMENT '订单ID',`status` char(1) DEFAULT '0' COMMENT '(0正常 1 禁用)',`create_by` varchar(64) DEFAULT '' COMMENT '创建者',`create_time` datetime DEFAULT NULL COMMENT '创建时间',`update_by` varchar(64) DEFAULT '' COMMENT '更新者',`update_time` datetime DEFAULT NULL COMMENT '更新时间',`remark` varchar(500) DEFAULT NULL COMMENT '备注',PRIMARY KEY (`check_id`)
) ENGINE=InnoDB AUTO_INCREMENT=104 DEFAULT CHARSET=utf8 COMMENT='检验记录信息表';

                ③入库表
drop table if EXISTS his_medicine_order_rep ;
CREATE TABLE `his_medicine_order_rep` (`rep_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '入库记录ID',`rep_person` bigint(20) DEFAULT NULL COMMENT '入库人',`rep_content` text NOT NULL COMMENT '入库意见',`rep_result` char(1) NOT NULL COMMENT '入库结果',`order_id` bigint(20)  COMMENT '订单ID',`status` char(1) DEFAULT '0' COMMENT '(0正常 1 禁用)',`create_by` varchar(64) DEFAULT '' COMMENT '创建者',`create_time` datetime DEFAULT NULL COMMENT '创建时间',`update_by` varchar(64) DEFAULT '' COMMENT '更新者',`update_time` datetime DEFAULT NULL COMMENT '更新时间',`remark` varchar(500) DEFAULT NULL COMMENT '备注',PRIMARY KEY (`rep_id`)
) ENGINE=InnoDB AUTO_INCREMENT=104 DEFAULT CHARSET=utf8 COMMENT='入库记录信息表';


http://www.mrgr.cn/news/19049.html

相关文章:

  • Opencv实现提取卡号(数字识别)
  • leetcode 2816.翻倍以链表形式表示的数字
  • 在Vue中使用Element UI的表格组件时,通过点击表格的某一行来获取该行数据的id
  • AUTOSAR_EXP_ARAComAPI的5章笔记(2)
  • 登录-异步请求用户数据无法保存-bug
  • 后端MVC三层架构,Mybatis ,雪花算法生成唯一id
  • 计算机毕业设计Spark+PyTorch知识图谱中药推荐系统 中药数据分析可视化大屏 中药爬虫 机器学习 中药预测系统 中药情感分析 大数据毕业设计
  • Hyper-v 安装 centOS
  • Python青少年简明教程:模块
  • 记一次某中学系统越权漏洞
  • 【深入了解Java常用类】
  • LeetCode:2708. 一个小组的最大实力值(动态规划 Java)
  • 算法day20|669. 修剪二叉搜索树、将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
  • MySQL 锁机制详解
  • 跟我一起学FPGA (二) 语法讲解
  • 八股训练营感想
  • 多表查询_关联查询
  • 【win11】win11取消开机密码
  • 嵌入式Linux:常见信号的默认行为
  • 在vue项目中,有两个tab页,在其中一个页面调用另一个页面的方法