医药采购系统平台第6天02:供货商药品目录的控制功能实现&分配权限&提交控制状态&供货商药品目录模块中开发问题总结

如果想要获取相关的源码,笔记,和相关工具,对项目需求的二次开发,可以关注我并私信!!!


四 供货商药品目录的控制功能实现

1 需求

1.1 原型系统操作流程

第1步:必须要以监管单位卫生局)的身份登陆系统

第2步:监管单位(卫生局)查询所有要控制的供货商药品目录后台其实要从供货商药品目录控制表gysypml_control查询

第3步:选择控制状态,并输入意见,然后提交控制状态和意见,如下

根据昨天文档中的“供应商药品目录的数据模型的优化”一节中的内容可知:

控制表的添加已经被屏蔽,删除也没必要操作!因此,对于控制表的操作只需要更新即可,更新的字段就是control的提交状态!

根据供货商idusergysid和药品idypxxid)来更新供货商药品供货状态(1:正常,2:暂停)。

数据库中供货商药品目录控制表ghsypml_control的这两个字段如下图:

监管单位(卫生局)对所有的供货商供应药品进行控制,控制其允许供货商供货,或不允许供货商供货!

监管单位(卫生局)查询所有要控制的供货商药品目录信息,然后选择控制状态,最后提交控制状态。

因此,对于供货商药品目录的控制分为两个功能

  1. 对于控制记录的查询.
  2. 提交控制状态.

本系统对于这两个功能是在一个模块中来实现的,即:都是在供货商药品目录模块中来完成的!!

当然,对于控制的功能也可以单独提取出为一个模块!

1.2 约束条件

约束条件:

    根据药品id(ypxxid)和供货商id(usergysid)这两个字段来确定的唯一的一条记录必须在供货商药品目录控制表gysypml_control中存在,才可以进行更新操作!

因为这两个参数确定了唯一约束,如下图

如何保证更新的记录存在?

经过需求分析(参考day06的需求分析)可知:在向供货商药品目录gysypml插入记录的同时向供货商药品目录控制表gysypml_control中也插入一条记录,且不再删 除。

数据库操作:

插入和删除都不需要操作了(根据之前的分析所得出的结论),那么就剩下更新操作了。

根据药品id和供货商id更新供货商药品目录控制表gysypml_control控制状态字段control(1:正常 ,2:暂停).

2 查询所有供货商所供应的药品目录的信息

2.1 dao

2.1.1 sql语句

监管单位卫生局要查询出所有供货商所供应的药品目录的信息

需要自定义mapper查询所有的供货商药品目录的控制记录.

主查询表:供货商药品目录控制表gysypml_control.

关联查询表:药品信息表ypxx,供货商信息表usergys,数据字典表dictinfo。注意一定不要gysypml进行关联因为如果 gysypml中没有数据,监管单位将无法控制,

这是不允许的!

根据上面原型系统页面中的需求,需要查询如下的字段:

select gysypml_control.id gysypmlid,  --结果集的唯一约束

       usergys.id usergysid,

       usergys.mc usergysmc,

       gysypml_control.control,  --控制状态

       (select info

          from dictinfo

         where typecode = '008'

           and dictcode = gysypml_control.control) controlmc, --控制状态名称

       gysypml_control.advice,   --意见

       ypxx.id,

       ypxx.bm,

       ypxx.mc,

       ypxx.jx,

       ypxx.gg,

       ypxx.zhxs,

       ypxx.scqymc,

       ypxx.spmc,

       ypxx.zbjg,

       ypxx.jyzt,

       

       (select info

          from dictinfo

         where ypxx.jyzt = dictcode

           and typecode = '003') jyztmc

  from gysypml_control, ypxx, usergys

 where ypxx.id = gysypml_control.ypxxid

   and gysypml_control.usergysid = usergys.id

--没有数据范围的约束条件

2.1.2 自定义mapper映射文件

该自定义mapper映射文件的编写比较复杂,一定要参考视频:3供货商药品目录控制查询mapper.flv

该映射文件所在目录如下:

注意,在自定义mapper的GysypmlMapperCustom.xml映射文件中的数据结果集的输出映射类型resultType中所对应的扩展类GysypmlCustom中需要添加advice属性,因为映射文件中有该字段

对于自定查询条件中的“供货商名称”的查询(因为在需求的页面中包含供货商的查询输入框),如下图红框内的部分

建议在“用户模块”中的自定义mapper映射文件SysuserMapperCustom.xml中来定义sql片段(因为sql片段按

照单表定义的可重用性高),那么,需要在SysuserMapperCustom.xml中添加如下定义的sql片段:

同时,还要在在自定义mapper的GysypmlMapperCustom.xml映射文件中的数据结果集的输入映射类型parameterType中所对应的包装类GysypmlQueryVo中需要添加usergys属性,因为映射文件中有该字段,如下定义

2.1.3 自定义mapper接口

2.2 service

接口功能:监管单位卫生局查询出所有供货商药品目录的信息.

接口参数:查询条件(GysypmlQueryVo)。

接口实现:调用mapper查询数据

2.3 action

两个方法中有大量的模板方法,参考“供应商药品目录模块的维护”中action中的供应商添加药品目录查询方法!

方法1:查询页面

方法2:查询列表结果集

2.4 querygysypmlcontrol.jsp页面

老师并没有提供现成的页面,因此需要自己手动编写该页面,在querygysypmlcontrol.jsp页面中充满了大量的模板代码!!!

因此,该页面的编写可以参考:供货商药品目录添加页面queryaddgysypml.jsp和querygysypml.jsp页面的编写。

querygysypmlcontrol.jsp所在目录如下:

2.5 调试

使用监管单位荥阳市卫生局登录,如下:

密码:111111

2.6 分配权限

1.admin登录系统

2.修改“供货目录控制”的url,如下:

3.修改“供货目录控制”下的“供货目录查询”和“供货目录查询结果集”两个链接的url,如下

4.为卫生局角色分配权限,如下:

3 提交控制状态

3.1 需求

监管单位选择供货商,填写意见,选择供货状态,进行提交。参考上节中的“需求”中的“操作流程”一节!

约束条件:确定供货商和药品信息进行控制.

数据库操作:根据供货商和药品信息更新供货商药品目录控制表gysypml_control中的控制字段及意见字段 (1:正常,2:暂停)

3.2 Dao

根据供货商id和药品信息id更新供货商药品目录控制表gysypml_contro的控制状态及意见!

因为是单表操作,所以可以使用逆向工程生成的代码!不必自定义mapper接口了!

3.3 Service

提交控制状态(只处理单个记录).

接口功能:根据供货商id和药品id更新控制状态.

接口参数:

供货商id、

药品id、

控制状态、

意见(1:正常,2:暂停).

接口实现:

校验1:供货商id和药品id在供货商药品目录控制表存在,不存在是无法更新的。

校验2:控制状态值合法性,不是1就是2(1:正常,2:暂停).

执行更新:根据供货商id和药品id更新控制状态.

YpmlService接口中添加方法:

YpmlServiceImpl实现类的方法:

3.4 Action

接收页面中批量提交控制状态及意见,然后调用updateGysypmlConrol()方法.

方法中的提交参数:

供货商id:从页面接收多个参数(因为需求中的页面中会有多个供货商).

药品信息id:从页面接收多个参数.

控制状态:从页面接收多个参数.

意见:从页面接收多个参数.

因为action方法中的参数需要使用 List<GysypmlControl> gysypmlControls接收上边批量提交的参数,因此需要在包装类GysypmlQueryVo中定义该属性,如下定义:

在YpmlAction中添加如下方法:(该方法是模板方法,参考上一节中的内容)

3.5 页面

修改供货商控制列表页面querygysypmlcontrol.jsp.该页面可以参考:供货商药品目录添加页面queryaddgysypml.jsp。

在datagrid的列定义中定义以下参数:

供货商id:多个参数(从页传递)

药品信息id:多个参数(从页传递)

控制状态:多个参数(从页传递)

意见:多个参数(从页传递)

3.6 调试

如果操作成功,那么“供货状态”会由暂停显示为正常,那么调试算是成功!

3.7 分配权限

第1步:修改“供货目录控制提交”的链接

第2步:为卫生局角色分配权限。

这一步在上面的“查询控制记录”的“分配权限”一节中已经完成了。

五 供货商药品目录模块中开发问题总结

1 不同的功能必须要以对应的用户身份登陆

因为目前为止还没有实现权限管理的功能所以,针对不同的功能必须要以对应的用户身份登陆.否则,逻辑就会混乱!

例如:如果是供货商的身份登录,那么会显示出供货商的药品目录。

如果是监督单位(卫生局)的身份登录,那么一定要会显示控制表中的药品目录

2 供货商药品目录维护的查询条件实现

需求如下

以查询条件中的“价格范围”为例!

第1步:页面传入起始价格--结束价格--->action—>serviceàdao。

虽然后台的action中使用的GysypmlQueryVo.java包装类来接收起始价格、结束价格的参数,但是建议在包装类中定义的属性ypxxCustom所对应的YpxxCustom扩展类中来定义 起始价格、结束价格。(建议使用Float包装类型), 定义如下

第2步:在页面中采用对象. 属性的方式命名,在querygysypml.jsp页面中的定义如图

第3步:在GysypmlMapperCustom.xml中的添加查询条件,查找到如下语句:

可知:该语句引用的是YpxxMapperCustom.xml文件中的sql片段的定义!所以真正需要修改的是 YpxxMapperCustom.xml 文件中的sql片段的定义,定义如下:

3 供货商药品目录控制功能开发

监管单位查询所有供货商药品目录控制列表:

该功能已经在上面实现了,这里再强调一点:

Sql:

主查询表:gysypml_control(注意一定不要gysypml进行链接因为如果 gysypml中没有数据,监管单位将无法控制,这是不允许的!!!!)

主要的sql语句如下:

select

gysypml_control.id gysypmlid,

gysypml_control.ypxxid,

gysypml_control.usergysid,

usergys.mc usergysmc,

gysypml_control.control,

(select info

from dictinfo

where typecode = '008'

and dictcode = gysypml_control.control) controlmc,

ypxx.id,

ypxx.bm,

ypxx.mc,

ypxx.jx,

ypxx.gg,

ypxx.zhxs,

ypxx.scqymc,

ypxx.spmc,

ypxx.zbjg,

ypxx.jyzt,

(select info

from dictinfo

where ypxx.jyzt = dictcode

and typecode = '003') jyztmc

from usergys, gysypml_control, ypxx

where gysypml_control.usergysid = usergys.id

and gysypml_control.ypxxid = ypxx.id

4 供货商药品目录模块的业务流程

第一步:供货商查询自己的药品目录内容

第二步:从药品目录总表中选择药品添加到自己的目录(正常使用时,供应商会将药品目录总表的内容全部添加到自己的目录)

第三步:如果供货商不再供货商就从供货商药品目录中删除(供货商平常使用不多

第四步:监管单位登陆对供货商药品目录进行控制,其对药品的控制状态不受供货商药品目录操作影响。

就是说,如果供货商删除了该药品的供货状态,不影响监管单位对该药品的控制!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

elastic_solr

可以对需求进行二次开发

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

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

打赏作者

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

抵扣说明:

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

余额充值