037医疗项目-模块四:采购单模块—采购单数据模型

Posted jim_shen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了037医疗项目-模块四:采购单模块—采购单数据模型相关的知识,希望对你有一定的参考价值。

上一篇文章我们知道了采购的需求。这篇文章我们就要看一下采购单模块的数据库怎么去建立。

我们设计时采用两张表:

 

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

 

以上是关于037医疗项目-模块四:采购单模块—采购单数据模型的主要内容,如果未能解决你的问题,请参考以下文章

044医疗项目-模块四:采购单模块—采购单保存(Dao,Service,Action三层)

046医疗项目-模块四:采购单模块—采购单审核(Dao,Service,Action三层)

048医疗项目-模块四:采购单模块—采购单受理(Dao,Service,Action三层)

042医疗项目-模块四:采购单模块—采购单明细添加查询,并且把数据添加到数据库中

040医疗项目-模块四:采购单模块—采购单创建好之后跳转到采购单修改页面(editcgd.action)

041医疗项目-模块四:采购单模块—采购单创建好之后跳转到采购单修改页面,然后实现修改采购单功能