1.1 供货商药品目录删除
1.1.1 需求:
供货商登录系统,进入供货商药品目录维护页面,选择要删除的药品,点击“确认删除”。
约束条件:
供货商药品目录存在此药品方可删除。
数据库操作:
从供货商药品目录表中删除记录。
1.1.2 实现:
参考供货商药品目录添加方法去实现。
1.1.2.1 Dao:
使用逆向工程,将供货商药品目录表记录删除。
1.1.2.2 Service:
接口功能:供货商药品目录删除
接口参数:供货商id和药品id
接口实现:
先校验约束条件:供货商药品目录存在此药品方可删除
执行删除:根据主键删除(先根据供货商id和药品id查询出主键)
service部分代码:
// 供货商删除一条供应药品信息
@Override
public void deleteGysypml(String usergysid, String ypxxid) throws Exception {
// 供货商药品目录存在此药品方可删除。
Gysypml gysypml = this.findGysypmlByUsergysidAndYpxxid(usergysid,
ypxxid);
if (gysypml == null) {// 说明不存在 抛异常
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 316,
null));
} else {
String id = gysypml.getId();
// 存在则删除
gysypmlMapper.deleteByPrimaryKey(id);
}
}
// 抽取方法 通过usergysid和ypxxid来查询gysypml 是否存在 (添加一条药品用到)
public Gysypml findGysypmlByUsergysidAndYpxxid(String usergysid,
String ypxxid) throws Exception {
GysypmlExample gysypmlExample = new GysypmlExample();
GysypmlExample.Criteria criteria = gysypmlExample.createCriteria();
criteria.andUsergysidEqualTo(usergysid);
criteria.andYpxxidEqualTo(ypxxid);
List<Gysypml> list = gysypmlMapper.selectByExample(gysypmlExample);
if (list != null && list.size() == 1) {
return list.get(0);
}
return null;
}
1.1.2.3 Action:
传参数问题:
供货商id:单个参数
药品id:页面传多个参数(页面定义hidden,list[].XXX)
方法参考:供货商药品目录添加提交方法addgysypmlsubmit实现。
要注意action 中传递参数与页面的的名字一致
//药品目录批量删除
@RequestMapping("/deletegysypmlsubmit")
public @ResponseBody
SubmitResultInfo deletegysypmlsubmit(HttpSession session, int[] indexs,
GysypmlQueryVo gysypmlQueryVo) throws Exception {
// 获取当前供应商id
ActiveUser activeUser = (ActiveUser) session
.getAttribute(Config.ACTIVEUSER_KEY);
String usergysid = activeUser.getSysid();
// 获取当前药品id
List<YpxxCustom> list = gysypmlQueryVo.getYpxxCustoms();
System.out.println(list.get(0) + "yang11111111111111111111111");
// 删除总数
int count = indexs.length;
int success_count = 0;
int count_error = 0;
// 记录错误信息
List<ResultInfo> message_error = new ArrayList<ResultInfo>();
for (int i = 0; i < count; i++) {
ResultInfo resultInfo = null;
YpxxCustom ypxxCustom = list.get(indexs[i]);
String ypxxid = ypxxCustom.getId();// 页面中传入的参数
try {
ypmlService.deleteGysypml(usergysid, ypxxid);
} catch (Exception e) {
e.printStackTrace();
if (e instanceof ExceptionResultInfo) {// 自定义异常类
resultInfo = ((ExceptionResultInfo) e).getResultInfo();
} else {
// 构造未知错误
resultInfo = ResultUtil.createFail(Config.MESSAGE, 900,
null);
}
}
if (resultInfo == null) {
// 执行成功
success_count++;
} else {
count_error++;
// 记录失败原因
message_error.add(resultInfo);
}
}
return ResultUtil.createSubmitResult(
ResultUtil.createSuccess(Config.MESSAGE, 907, new Object[] {
success_count, count_error }), message_error);
}
1.1.2.4 页面
将药品id在datagrid列中定义hidden。
将页面选中序号、业务数据提交到action。
参考:供货商药品目录添加页面。
var gysypmldel = function(){
_confirm('您确定要执行删除选中的药品吗?',null,
function(){
var indexs = [];//定义一个数组准备存放删除记录的序号
//通过jquery easyui的datagrid的getSelections函数,得到当前所有选中的行(对象数组)
var rows = $('#gysypmllist').datagrid('getSelections');
//循环遍历选中行
for(var i=0;i<rows.length;i++){
//通过jquery easyui的datagrid的getRowIndex方法得行的序号
var index=$('#gysypmllist').datagrid('getRowIndex',rows[i]);
//将选中行的序号放入indexs数组
indexs.push(index);
}
//如果存在选中的行
if(rows.length>0){
//将选中的行通过indexs.join(','),将选中行的序号中间以逗号分隔组成一个字符串,调用$("#indexs").val方法,将这个字符串放入indexs对象
$("#indexs").val(indexs.join(","));
//执行ajax的form提交
jquerySubByFId('gysypmldeleteForm', gysypmldel_callback, null);
}else{
alert_warn("请选择要删除的药品");
}
}
)
};
function gysypmldel_callback(data) {
var result = getCallbackData(data);
_alert(result);//显示失败明细的
gysypmlquery();//删除完成刷新页面(重新执行查询方法)
}
//工具栏
var toolbar = [ {
id : 'gysypmladd',
text : '供应药品添加',
iconCls : 'icon-add',
handler : gysypmladd
},{
id : 'gysypmldel',
text : '供应药品删除',
iconCls : 'icon-remove',
handler : gysypmldel
}];
var frozenColumns;
var columns = [ [{
title : '选择',
checkbox : true//显示成checkbox
},{
field : 'id',
hidden : true,//该列隐藏
formatter: function(value,row,index){
//gysypmls对应action接收对象中list的名称,[]括号中是从0开始序号,id是list中对象属性
return '<input type="hidden" name="ypxxCustoms['+index+'].id" value="'+value+'" />';
}
}......