医药采购系统第2天01:用户管理模块实体表之间的分析&实体间的管理关系&用户查询功能实现&mybatis逆向工程的使用&自定义扩展类和包装类&mapper动态代理的方式开发&datagrid的使用

如果想要获取相关的源码,笔记,和相关工具,增加需求,代码重构,关注我并私信!!!


一 用户管理模块的分析

1 用户模型分析

业务是什么?业务就是用户的所有需求

用户角色:卫生局、卫生院、卫生室、供货商

系统管理员属于后台.

用户:登陆系统进行业务操作

2 模型图

3 主要实体表关系的分析

3.1 系统用户表SYSUSER

该表记录了系统中所有的用户信息(模型图中的小人就表示用户),包括:卫生局,卫生院,卫生室(医院),供应商,系统管理员。

表中的主要字段包括:

1

id

主键,没有任何业务意义的主键。

2

USERID

账号.

3

USERNAME

名称.

4

GROUPID(重要)

用户类型字段,数值是:0,1,2,3,4. 其中:

0:系统管理员 , 1:卫生局  , 2:卫生院 , 3:卫生室 , 4:供应商.

可以根据GROUPID的值判断所对应的单位.

如果想要查询groupid所对应的类别名称,就需要查询数据字典中的字段(可以查看day03中的内容)!如下图:

5

USERSTATE

用户状态字段,数值是:0,1,这两个数值所对应的名称也要通过查询数据字典中的字段才可知(需查看day03   中的内容)!

6

SYSID(重要,非外键)

该字段很重要,表示用户所属的单位id。sysid字段关联监督表userjd的主键id,关联医院表userjj的主键id,关联供应商表usergys的主键id。但这种关联不是数据库级别的表与表之间的关联关系,而只是业务之间的关联关系!!!

注意:该字段并不是一个外键字段,因为如果有一个用户是系统管理员,而系统用户不属于任何一个单位,那么其值必定为null所以该字段不能也必须不是一个外键字段

3.2 监督单位表USERJD

JD是监督二字的首字母大写这也是一种命名规范,下同):

该表记录了市卫生局和其下属的所有卫生院的单位信息,这两个机构都属于监督机构,分别管理着不同的地区:

卫生局管理的是全市的多个卫生院,而卫生院管理的是下面的乡镇一级的多个卫生所(医院)。

表中的主要字段:

1) Id:主键,该主键是与SYSUER表中干的sysid相关联的,但这种关联关系是业务级别的,而不是数据库级别之间的关联关系!

2) MC(名称): 监督单位的名称mc.

3) DQ(地区):表示管理区域,记录了该监督单位所管理的下级的地区信息。

地区字段id,该字段是外键,关联于行政区域表BSS_SYS_AREA的主键AREAID字段,属于数据库级别的关联关系。如下图:

该字段的值的规则只有两种:XX.XX.或者XX.

这样的命名规则是为了方便管理其行政管理关系.

该字段命名为XX.:则表示是市(一级)卫生局,属于一级级行政单位(参考“行政管理关系”)。

该字段命名为XX.XX.:表示县/乡/镇卫生院(二级),属于二级行政单位(参考“行政管理关系”)

通过在监督单位表userjd和医院单位表useryy(下面会介绍到)中都添加的一个DQ字段来管理其行政管理关系(参考“行政区域表”)

例如下面介绍的医院单位表useryy中的DQ字段。

3.3 医院单位表USERYY

YY是医院两字的拼音大写,这是命名规范,下同

记录了本市所有的卫生室,卫生室就是医院单位,因为与市卫生局和卫生院不同,因此单独建立一张表,主要字段如下:

1) Id:主键,该主键是与SYSUER表中的sysid相关联的,但这种关联关系是业务级别的,不是数据库级别之间的关联关系!

2) MC: 医院单位的名称.

3) LB:医院所属的类别(类型)。该字段关联数据字典明细表dictinfo(在明天的文档中会讲到)的主键id字段。这种关

联关系不是数据库级别的关系,只是业务级别的关系!

4) DQ:所属区域id。该字段记录了该医院单位所属的上级的监督单位的地区信息,因为医院是最小的行政单位了。

该字段是外键,关联于BSS_SYS_AREA表的主键AREAID字段,属于数据库级别的关联关系。如下图:

该字段的值的规则:XX.XX.XX.  这样的规则是为了查询方便.

这样的命名规则表示村卫生所(医院),属于三级行政管理单位(参考“行政管理关系”)

例如:

--查询某个乡镇(崔庙镇)下所有的医院的单位信息

select * from useryy where dq like '1.1.%'

--查询卫生局下的所有医院的单位信息

select * from useryy where dq like '1.%'

3.4 供应商单位表USERGYS

1) ID供应商单位主键该主键是与SYSUER表中干的sysid相关联的,这种关联关系是业务级别的,不是数据库级别之间的关联关系!

2) MC:供应商的单位名称!

3.5 供应商供货区域表USERGYSAREA

记录了供应商所供货的二级(二级就是乡镇一级,参考下面的行政区域表)区域的信息。

因为是医药行业,有很强的行业性:即必须由卫生局来指定供货商所供货的二级区域(即县//镇,关于区域的划分参考下面的行政区域表bss_sys_area。简单说:一个供货商只能供应一个区域!

主要有以下两个重要字段:

1) USERGYSID:供货商id,该字段不仅是主键,也是该表的外键,该外键指向供应商单位表usergysid主键。属于数据库级别 的关联关 系!!

2) AREAID区域(地区)的id,是该表的外键,指向了行政区域表BSS_SYS_AREAAREAID主键.属于数据库级别的关联关系!!

如图:

因此,这两个字段字段都是数据库级别的关联关系!

3.6 行政区域表BSS_SYS_AREA

行政区域表BSS_SYS_AREA也称为基础表,记录了系统中用到的所有的行政区域。

该表的区域划分为3级(当然也可以划分更多的级):市(一级)卫生局县/乡/镇卫生院(二级)村卫生所(级)

该表是一个树型结构,如下图:

表中主要字段:

1) AREAID:主键,表示区域id,该字段是该表的主键字段,关联于USERGYSAREA供应商供货区表中的外键AREAID。该字段的值的规

则是:

XX.表示市(一级)卫生局。例如,上图中1.就表示荥阳市卫生局,其中parentid字段就是它的上级,parentid为0 表示它  的上级是区域根目录。

XX.XX: 表示县/乡/镇卫生院(二级)。例如,上图中1.1.表示崔庙镇,其中parentid字段的上级为1.,说明它的上级 是荥 阳市卫生 局。

XX.XX.XX :表示村卫生所(三级)。以此类推.......

这样的规则是为了查询方便。

2) AREALEVEL:行政区域的等级,有3个可选值,分别是:1(市),2(县/乡/镇),3(村),分别对应于3个行政区域等级.

3) Parentid:所属上级的区域。

例如,需求是:查询崔庙镇下的所有村的区域信息:

因为村的等级arealevel的等级是3,sql语句如下:

select * from BSS_SYS_AREA t where areaid like '1.1.%' and t.arealevel='3'

4 实体间的管理关系

4.1行政管理关系

根据行政区域来划分管理关系,可以参考“行政区域表BSS_SYS_AREA”!

市卫生局管理本市所有的卫生院。卫生院管理本辖区的所有的卫生室.

通过在监督单位(即卫生局和卫生院的总称)USERJD表中和医院单位USERYY表添加DQ(地区)字段从而实现行政管理关系,并在行政区域表BSS_SYS_AREA中记录了这两者之间的关系!

比如:查询某镇(崔庙镇)下的所有的医院,SQL语句如下:

select * from USERYY t where t.dq like '1.1.%'

4.2 供货管理关系

由卫生局来指定供货商所供货的区域(一个或者多个供货的区域).可以参考“供应商供货区域表USERGYSAREA”!

注意:比如某个医院的用户登录该系统下了一个采购单表(也可以称为业务表),那么就要和医院单位USERYY表进行关联,用

来记录某单位所采购的药品,而不是记录某个用户所采购的药品,因为用户会变化的。

用户登陆系统如何找到用户所属的单位?

根据用户账号查询用户表SYSUSER,得到sysid(单位id)

5 用户管理模型总结(重点

在经过了用户模型分析之后,再对其表结构进一步的分析和总结,如图:

二 用户查询功能实现

1. 用户查询列表的功能实现需要按照前后顺序完成两个功能:

1个:先在页面中查询出符合条件的所有用户的列表。(也是本章所要实现的功能)

2个:然后在其基础之上再实现分页!!!(参考下节--->“用户查询列表的分页实现”)

2. 关于用户查询页面的原型:

美工主要做CSS(样式),美工某一类页面做成一个样式页面(静态html页面),再由程序员在开发表现层时将html(静态页面)改为动态的jsp。

也就是说,美工不会给你做所有的页面原型,他只是做某一类的页面!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

elastic_solr

可以对需求进行二次开发

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

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

打赏作者

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

抵扣说明:

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

余额充值