欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

yycg项目第六天

程序员文章站 2024-03-16 13:55:58
...

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属性。

yycg项目第六天

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

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

页面提交业务数据如下:
yycg项目第六天

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

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

yycg项目第六天

 页面选中行的序号定义

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

yycg项目第六天
Indexs中存储逗号分隔的串,提交到action中自动解析成数组。(由<mvc:annotation-driven />支持)

页面上选中行的序号如何获得?
yycg项目第六天
yycg项目第六天

详细代码:

//定义一个数组,准备存放选中行的序号
		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
yycg项目第六天

1.2.2.3 action

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

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

yycg项目第六天

1.2.2.4 页面

用户点击“确认添加”,

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

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

yycg项目第六天

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

参考:
yycg项目第六天

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

1.2.3.1 失败原因展示问题:

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

yycg项目第六天
需要将action返回的submitResultinfo中添加details属性(存储失败原因)。

效果如下:

yycg项目第六天
注意:在service抛出异常信息时,尽量详细!!!

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

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

yycg项目第六天

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

yycg项目第六天
yycg项目第六天

1.3 供货商药品目录删除

1.3.1 需求:

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

yycg项目第六天

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

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

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 需求

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

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

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

yycg项目第六天
第二步:选择控制状态,提交控制状态

yycg项目第六天
提交控制状态:

根据供货商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 需求

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

操作流程:

第一步:填写采购单基本信息
yycg项目第六天

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

yycg项目第六天

 添加采购药品:

从本地区供货商药品目录中找采购的药品信息。
yycg项目第六天

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

确定 采购量:
yycg项目第六天

采购量确定后,采购金额自动计算出来:
yycg项目第六天

第三步:提交采购单
yycg项目第六天

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

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

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

yycg项目第六天

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

供货商对向自己下采购单的医院,受理采购单。
yycg项目第六天

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

yycg项目第六天

相关标签: 项目