038医疗项目-模块四:采购单模块—采购单数据模型
上一篇文章我们知道了采购的需求。这篇文章我们就要看一下采购单模块的数据库怎么去建立。
我们设计时采用两张表:
1:采购单基本信息表(YYCGD):
也就是对应的页面上的:
当然我们设计数据库的时候不可能只有上面这些字段。我们看一下真实数据库中是怎么设计的:
我们来看一下这些字段的意义:
采购单号:相当于订单号,方便管理需要
采购单名称:对采购单简短说明,名称
医院id:创建采购单单位的id(记录单位id而不是用户的id) (外键)
联系人:联系人和建单人可能不是一个人
联系电话:联系人的电话
建单人:创建采购单用户id
建单时间:创建采购单时间,(建议不要在数据库中设置默认值,对业务字段的维护统一在service)
提交时间:采购单创建完毕,提交采购单时记录时间
备注:采购单备注信息
采购单状态:(业务代码存储数据字典:1:未提交、2:已提交未审核、3:审核通过、4:审核不通过)
审核意见:监管单位对采购单审核时意见
审核时间:监管单位对采购单审核时间
对于审核,注意:如果审核业务功能复杂、需求变更可能性大,建议单独 创建一个张审核表记录审核信息。
2:采购单明细信息表(YYCGDMX):
这张表对应的是:
各字段如下:
记录了采购单所采购的药品信息。
采购单id:明细所属的采购单,(外键)
药品信息id:采购单所包含药品,(外键)
供货企业id:采购药品的供货商,创建采购单时就确定了,(外键)
中标价:药品目录中的中标价,一种冗余存储的方法,避免药品目录表中价格变化,日后查询当时购买时定价
交易价:本系统默认中标价和交易价是相同的,通常订单表中包括两个价格:定价、交易价
采购量:对药品购买的数量。
采购金额:等于交易价 * 采购量
采购状态:该药品当前采购状态 1、未确认送货 2、已发货、3、已入库、4无法供货
表之间的结构如下:
上面两张表就是我们设计的表结构。但是因为数据量很大的问题,我们采用分表存储的方式。如下:
具体的实现方法是:
我们的系统采用的分表规格是:
用户按照年份进行采购信息统计、查询,本系统定为按年来创建采购单表。
动态表命名规则:
采购单基本信息表:Yycgd+4位年份
采购单明细表:yycgdmx+4位年份
接下里讲怎么去实现动态表呢:
其实所谓动态表就是两部分:1:是存在数据库里面的表。2:是Mapper文件接口。
1:
存在数据库里面的表的生成方式:
我们不是自己去创建表,而是采用动态创建表的方式:写一个存储过程。由存储过程自动创建表,及表相关的对象(触发器,相关序列,索引,外键),存储过程的调用由定时任务来调用。
存储过程如下:
2:
我们的Mapper接口文件都是用Mybais的逆向工程来生成的。Yycgd+4位年份这样是很难实现的,因为我们总不能在逆向工程里面直接把表格的名字写死吧。
我们采取的方案:
在数据库中建立 一张模版表(本文前面讲的两张表就是模板表),模版表结构和动态表结构一样。在逆向工程中生成模版表的mapper文件,生成之后修改生成的mapper文件中表名的组织方式,修改为表名+4位年份,4位年份通过变量传入。
4位年份变量名:businessyear
考虑businessyear变量传入问题?
在parameterType中添加businessyear属性,操作方法:将所有parameterType指定 的类型都继承BusinessBasePo
这些类都是要继承businessyear属性的。
逆向工程生成的mapper接口调用时一定传入businessyear,注意生成mapper接口中参数是简单类型的无法使用!!!!
Sql语句中如果有动态表,需要在动态表名后边加${businessyear},注意自定义的mapper的parameterType指定的类型中要businessyear属性。
比如:
Select * from yycgd${businessyear} yycgd,yycgdmx${businessyear} yycgdmx
where yycgd.id = yycgdmx.yycgdid
038医疗项目-模块四:采购单模块—采购单数据模型相关推荐
- python五大模块_python-5-常用模块
什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码(.p ...
- 医药采购之采购单模块需求
1 采购单模块需求 医院在采购药品时,先创建一个采购单,采购单内容包括本次采购的药品信息(采购量.采购金额),采购单创建成功后,需要提交到监管单位,由监管单位进行审核.审核通过后由供货商按照 ...
- 050医疗项目-模块五:权限设置-第三方系统的接入
我们先演示要实现的功能: 单击: 我们看着有三个子模块: 点击模块管理: 在模块管理中,我们可以设置一共有几个模块,每个模块里面有哪些具体的操作等. 角色管理: 给角色分配权限. 好,我们接下来看具体 ...
- webpack打开项目命令_webpack前端模块打包工具基本使用的详细记录(一)
webpack简介 我们都知道,Webpack 是当下最热门的前端资源模块化管理和打包工具.它可以将许多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源.还可以将按需加载的模块进行代码分隔,等 ...
- 【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(7.2) 模块管理,模块的添加、修改、删除...
索引 [无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目 目录索引 简述 今天我们来做模块管理的 添加.修改.删除 项目准备 我们用的工具是:VS 2013 + SqlSer ...
- 企业级项目分享:购物车模块(一)2021-06-08
购物车模块 目录 购物车模块 前言 1.搭建购物车服务 1.1步骤一:创建changgou4-service-cart 项目 1.2步骤二:修改pom.xml文件,添加坐标 1.3步骤三:创建yml文 ...
- 像麦肯锡咨询师一样做商业分析_课程笔记 模块四:企业研究
模块四:企业研究 文章目录 模块四:企业研究 如何做一份麦肯锡也认可的行研报告 对于MBB ,行业研究的目的何在? 针对这两类诉求,我们关注点的"相同"和"不同" ...
- Spring Boot电商项目59:订单模块八:【后台:订单列表】接口;
说明: (1)本篇博客的主要内容是开发[后台:订单列表]接口: (2)本篇博客没什么难点:只需要注意:[前台:订单列表]接口是查询当前登录用户的订单数据:[后台:订单列表]接口是查询所有用户的订单数 ...
- 【校招VIP】“推推”产品项目课程:列表模块原型图
本课程涉及的官方版原型图,可关注[校招VIP]公众号,回复[9503],可自行下载 VIP的服务不一样的校招.大家好,我是校招VIP的大刘老师.今天我们来看一下[推推]课程的第三节:小说列表模块的产品 ...
最新文章
- Opencv中除了cv2.cvtColor彩色图转灰度图之外的其他6种方法
- 2019年1月计算机书籍JavaScript新书
- 搭建hue遇到的错误 Couldn't find log associated with operation handle: OperationHandle
- mysql锁3.常见问题
- POJ 3228 二分最大流
- 2 Docker安装及使用
- 多合一图床源码 - QQ图床/搜狗图床/头条图床
- cesium three性能比较_硬金和千足金都是黄金,哪个比较好?为什么80%人都说硬金不好?...
- 对string类型字符串操作
- 洛谷1966 火柴排队
- app具体介绍界面-01
- 序列二次规划——SQP
- [Android实例] 【eoeAndroid社区索引】图形图像之动画
- 基于PHP+Web+Mysql的在线问卷调查系统
- adxl345取出值怎么算角度_ADXL345测量倾斜角度数据跳动
- 合群是堕落的开始,优秀是开始的独行!(孤独的自白)
- 获取当前时间精确到毫秒
- 智力题:13 个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球?
- 数据库MySQL错误2058_SQLyog连接MySQL8.0报2058错误的完美解决方法
- Asp.net WebApi跨域_se7en3_新浪博客