yycg项目第六天

1. 供货商药品目录维护开发

1.1 供货商药品目录添加查询功能调试

测试目标:
1、 根据查询条件查询药品信息
2、 供货商药品目录的药品在添加查询页面应该查询不到
……

1.2 供货商药品目录添加提交

1.2.1 需求

用户在供货商药品目录添加查询页面,选择多个药品,确认添加。

前置条件(约束条件):
只允许添加供货商药品目录中没有的药品
药品的交易状态为暂停不允许添加

后置条件(数据库操作):
向供货商药品目录表gysypml插入一条记录
同时向供货商药品目录控制表gysypml_control插入一条记录

页面操作:
用户需要选择多个药品,进行批量添加。

1.2.1 批量添加技术测试

Service接口:完成添加操作
接收多条记录还是单条记录??

如果接收多条记录,处理多条记录,如果不在service接口进行异常处理,导致一条记录添加失败其它记录回滚。
批量添加失败,需要给用户提示失败原因(多个失败原因),给用户提示应该在action 实现。

采用方案:
Service接口只处理一条记录,在 action方法内通过循环调用service批量处理action就可以灵活组织给用户提示信息,在service接口开发,遇到异常只管抛出

问题在于:
Action接收多条数据?
需要采用springmvc让页面向action传递批量数据,action方法采用list接收

在包装对象中添加list属性。

在这里插入图片描述

页面定义:
 业务数据的定义:
List属性名[序号从0开始].属性(list中pojo的属性名)

本系统采用action方法使用list接收页面提交批量数据,list中是自定义的pojo

页面提交业务数据如下:
在这里插入图片描述

解决了:页面提交批量数据的问题,将所有Hidden传到action。

将页面上选中的行的序号传入action。

在这里插入图片描述

 页面选中行的序号定义

在页面form中定义选中行的序号存储的input

在这里插入图片描述
Indexs中存储逗号分隔的串,提交到action中自动解析成数组。(由<mvc:annotation-driven />支持)

页面上选中行的序号如何获得?
在这里插入图片描述
在这里插入图片描述

详细代码:

//定义一个数组,准备存放选中行的序号
		var indexs=[];
		//获取数据列表中所有选中的行(数组),要求datagrid属性idField设置正确
		var rows = dataGrid_obj.datagrid('getSelections');
		//便利所有选中的行
		for(var i=0;i<rows.length;i++){
			
			//alert(dataGrid_obj.datagrid('getRowIndex',rows[i]));
			//将返回的选中行的序号加到indexs数组中
			var index = dataGrid_obj.datagrid('getRowIndex',rows[i]);//选中行的下标
			//将选中行的序号设置到数组indexs中
			indexs.push(index);
			//alert(dataGrid_obj.datagrid('getRowIndex',rows[i]));
		}
		//判断如果存在选中的行,indexs数组里边有选中行的序号
		if(rows.length>0){//如果存在选中的行则将indexs数组中的序号格式化为逗号分隔的并赋给indexs控件
			
			$("#indexs").val(indexs.join(","));//将indexs数组的元素在中间加逗号拼接成一个字符串
		    //提交form,提交数据包括药品信息id(每条记录都 有),indexs(hidden)
			jquerySubByFId('gysypmladdqueryForm',gysypmladd_callback, null);
		}else{
			//如果没有选中行则提示
			alert_warn("请选择要添加的药品");
		}
1.2.2 实现

1.2.2.1 Dao:
使用逆向工程生成的代码完成记录插入。

1.2.2.2 service:

处理单条记录。

接口功能:向供货商药品目录添加一个药品
接口参数:供货商id、药品id
在这里插入图片描述

1.2.2.3 action

批量提交参数:
Usergysid:供货商id、(单个,从session中取)

Ypxxid:药品id(多个参数),提交到list中。

在这里插入图片描述

1.2.2.4 页面

用户点击“确认添加”,

1 调用datagrid的getSelections获得所有选中的行,将选中行的序号解析出来,以逗号拼接存入indexs的input中。

2 在datagrid的列定义中定义hidden,存储药品信息id值。

在这里插入图片描述

通过ajax的form提交
将indexs值(页面选中行的序号)提交到action。
将ypxxCustoms(提交的批量业务数据)提交到action

参考:
在这里插入图片描述

1.2.3 供货商药品目录添加调试

1.2.3.1 失败原因展示问题:

将提交回调方法中message_alert(data);改为:_alert(data)方法

在这里插入图片描述
需要将action返回的submitResultinfo中添加details属性(存储失败原因)。

效果如下:

在这里插入图片描述
注意:在service抛出异常信息时,尽量详细!!!

1.2.3.2 只允许提交当前页的数据

如果在上一页选中记录,再翻页,再选中,提交出现-1:

在这里插入图片描述

解决方法:
在翻页时,清除所有选中的行。

在这里插入图片描述
在这里插入图片描述

1.3 供货商药品目录删除

1.3.1 需求:

供货商登陆系统,进入供货商药品目录维护页面,选择要删除的药品,点击“确认删除”。

在这里插入图片描述

约束条件:
供货商药品目录存在此药品方可删除。

数据库操作:
从供货商药品目录表中删除记录。

1.3.2 实现:

参考供货商药品目录添加方法去实现。

1.3.2.1 Dao:
使用逆向工程,将供货商药品目录表记录删除。
1.3.2.2 Service:
接口功能:供货商药品目录删除
接口参数:供货商id和药品id
接口实现:
先校验约束条件:供货商药品目录存在此药品方可删除
执行删除:根据主键删除(先根据供货商id和药品id查询出主键)

1.3.2.3 Action:

传参数问题:
供货商id:单个参数
药品id:页面传多个参数(页面定义hidden,list[].XXX)

方法参考:供货商药品目录添加提交方法addgysypmlsubmit实现。

1.3.2.4 页面
将药品id在datagrid列中定义hidden。
将页面选中序号、业务数据提交到action。

参考:供货商药品目录添加页面。

1.4 供货商药品目录控制

1.4.1 需求

监管单位查询所有要控制的供货商药品目录信息,选择控制状态,提交控制状态。

以监管单位(卫生局)登陆:

第一步:查询所有要控制的供货商药品目录

在这里插入图片描述
第二步:选择控制状态,提交控制状态

在这里插入图片描述
提交控制状态:

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

1.4.2 实现

1.4.2.1 Dao:
1、监管单位查询所有供货商药品目录信息
Sql:
主查询表:供货商药品目录控制表
关联查询表:供货商信息、药品信息。
Sql:
。。。。。

。。
2、提交控制状态
根据供货商id和药品id更新供货商药品目录控制表状态(1:正常,2:暂停)

1.4.2.2 Service

1、监管单位查询所有供货商药品目录信息
接口功能:监管单位查询所有供货商药品目录信息
接口参数:查询条件(GysypmlQueryVo)
接口实现:调用mapper查询数据

3、 提交控制状态(只处理单个记录)
接口功能:根据供货商id和药品id更新控制状态(1:正常,2:暂停)
接口参数:供货商id和药品id、控制状态(1:正常,2:暂停)
接口实现:
校验:
供货商id和药品id在供货商药品目录控制表存在,不存在是无法更新的。
控制状态值合法性,不是1就是2(1:正常,2:暂停)
执行更新:
根据供货商id和药品id更新控制状态

1.4.2.3 Action
1、 监管单位控制供货商药品目录查询列表
按照通用代码模版写。

2、 提交供货商药品目录控制状态
参考供货商药品目录添加提交的方法。

方法参数:
int[] indexs页面选中行的序号
GysypmlQueryVo (页面提交的业务数据)

1.4.2.4 页面
参考:供货商药品目录添加提交的页面

2. 学生开发内容

将老师的工程导入到新创建的工作区中。

1、 供货商药品目录维护查询条件实现

2、 供货商药品目录添加查询页面查询条件实现

3、 供货商药品目录删除操作开发

4、 供货商药品目录控制功能开发。

2.1 开发问题总结

0、不同的功能一定对应的用户身份登陆

1、 供货商药品目录维护查询条件实现

例如:查询条件价格范围。
页面传入起始价格、结束价格、action—》servicedao
需要在包装类中接收起始价格、结束价格,在ypxxCustom添加起始价格、结束价格。(建议使用Float包装类型)

页面中采用对象 点 属性的方式命名。

修改GysypmlMapperCustom.xml
添加查询条件。
需要修改:

下边红色为新添加:

<!-- 药品目录 查询条件 -->
	<sql id="query_ypxx_where">
		<if test="ypxxCustom!=null">
			<if test="ypxxCustom.bm!=null and ypxxCustom.bm!=''">
				and ypxx.bm = #{ypxxCustom.bm}
			</if>
			<if test="ypxxCustom.mc!=null and ypxxCustom.mc!=''">
				and ypxx.mc = #{ypxxCustom.mc}
			</if>

			<if test="ypxxCustom.jyzt!=null and ypxxCustom.jyzt!=''">
				and ypxx.jyzt = #{ypxxCustom.jyzt}
			</if>
			<!-- 药品类别 -->
			<if test="ypxxCustom.lb!=null and ypxxCustom.lb!=''">
			  and ypxx.lb = #{ypxxCustom.lb}
			</if>
			<!-- 价格范围 -->
			<if test="ypxxCustom.price_start!=null">
			  and ypxx.price>=#{ypxxCustom.price_start}
			</if>
			<if test="ypxxCustom.price_end!=null">
			 <![CDATA[
			  and ypxx.price<=#{ypxxCustom.price_end}
			  ]]>
			</if>
			<!-- ...... -->
		</if>
	</sql>

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

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

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

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

3、整个业务的流程

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

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

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

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

3. 采购单模块

3.1 需求

医院在采购药品时,先创建一个采购单,采购单内容包括本次采购的药品信息(采购量、采购金额),采购单创建成功后,需要提交到监管单位,由监管单位进行审核。审核通过后由供货商按照采购单的内容进行发货,医院收到药品后执行入库操作。

操作流程:

第一步:填写采购单基本信息
在这里插入图片描述

第二步:填写采购单详细信息,本次采购的药品信息

在这里插入图片描述

 添加采购药品:

从本地区供货商药品目录中找采购的药品信息。
在这里插入图片描述

由于价格统一,为了避免供货商竞争,设置一个区域只有一个供货商进行供货

确定 采购量:
在这里插入图片描述

采购量确定后,采购金额自动计算出来:
在这里插入图片描述

第三步:提交采购单
在这里插入图片描述

在确定采购单完成创建,执行采购单提交。

第四步:提交采购单后由监管单位进行审核

本系统实际操作由卫生院对本区域医院下的采购单进行审核。
卫生院首先查询采购单内容,确定没有问题进行审核。

在这里插入图片描述

第五步:供货商进行采购单受理

供货商对向自己下采购单的医院,受理采购单。
在这里插入图片描述

第六步:医院执行入库操作

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值