实现思路:采用批量提交方式,页面上将药品信息id、组成yycgdmx对象,最终提交至action的List<yycgdmx> yycgdmxs对象中,方式同上边的采购药品添加提交。
1.1 需求
在提交采购单之间,医院如果不对某药品进行采购需要从采购单中删除此药品。
约束条件:
此药品必须在采购单明细中存在方可删除。
数据库操作:
删除采购单明细表(Yycgdmx)记录
删除需要的数据:
采购单id、药品信息id
1.1.1 dao
根据采购单id和药品id从采购单明细表删除记录。
1.1.2 service
接口功能:删除采购药品明细
接口参数:采购单id、药品id
接口实现:
校验:此药品必须在采购单明细中存在方可删除
操作:调用 mapper删除采购单明细记录。
// 采购单药品添加校验
// 通过采购单id 和药品信息id查询采购单明细表中是否存在
public Yycgdmx findYycgdmxByYycgdIdAndYpxxId(Stringyycgdid, String ypxxid)
throws Exception {
Stringyear = yycgdid.substring(0, 4);
YycgdmxExampleyycgdmxExample = newYycgdmxExample();
YycgdmxExample.Criteriacriteria = yycgdmxExample.createCriteria();
criteria.andYycgdidEqualTo(yycgdid);
criteria.andYpxxidEqualTo(ypxxid);
yycgdmxExample.setBusinessyear(year);
List<Yycgdmx>yycgdmx = yycgdmxMapper.selectByExample(yycgdmxExample);
if (yycgdmx != null &&yycgdmx.size() == 1) {
return yycgdmx.get(0);
}
return null;
}
// 删除医药采购单明细中的药品
@Override
public void deleteYycgdmx(Stringyycgdid, String ypxxid) throws Exception {
// 校验采购单信息是否存在
System.out.println(yycgdid + "yang" + ypxxid);
Stringbusinessyear = yycgdid.substring(0, 4);
Yycgdmxyycgdmx = this.findYycgdmxByYycgdIdAndYpxxId(yycgdid,ypxxid);
// yycgdmx.setBusinessyear(businessyear);
if (yycgdmx == null) {
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 501,
null));
}// 执行删除操作
else {
/*
* String id=yycgdmx.getId();System.out.println(id+"yang");
* 为什么不能用id 删除?
*/
YycgdmxExampleyycgdmxExample = newYycgdmxExample();
YycgdmxExample.Criteriacriteria = yycgdmxExample.createCriteria();
criteria.andYycgdidEqualTo(yycgdid);
criteria.andYpxxidEqualTo(ypxxid);
yycgdmxExample.setBusinessyear(businessyear);
yycgdmxMapper.deleteByExample(yycgdmxExample);
}
}
1.1.3 action
批量提交参数:
采购单id:单个参数(在form中定义hidden)
药品id:多个参数(在datagrid中定义hidden)
// 删除医药采购单明细中的药品
@RequestMapping("/yycgdmxdelsubmit")
public @ResponseBody
SubmitResultInfoyycgdmxdelsubmit(String id,// 采购单id
int[] indexs, YycgdQueryVoyycgdQueryVo) throwsException {
List<YycgdmxCustom>list =yycgdQueryVo.getYycgdmxCustoms();
// 记录错误信息
List<ResultInfo>message_error = newArrayList<ResultInfo>();
int count = indexs.length;
ResultInforesultInfo = null;
int success_count = 0;
int count_error = 0;
for (int i = 0; i < count;i++) {
YycgdmxCustomyycgdmxCustom = list.get(indexs[i]);
try {
cgdService.deleteYycgdmx(id,yycgdmxCustom.getYpxxid());
}catch(Exception e) {
if (e instanceofExceptionResultInfo) {
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.4 页面
需要修改:editcgd.jsp页面(要注意input 中的对象名)
//采购药品删除
function yycgdmxdelete(){
_confirm('您确定要删除选择的采购药品吗?',null,
function(){
var indexs = [];//选择记录的序号
var rows = $('#yycgdmxlist').datagrid('getSelections');
for(var i=0;i<rows.length;i++){
var index=$('#yycgdmxlist').datagrid('getRowIndex',rows[i]);
indexs.push(index);
}
if(rows.length>0){
$("#indexs").val(indexs.join(','));
//由于删除和保存对同一个form进行操作,所以这里给yycgdmxForm的action重新赋值
$("#yycgdmxForm").attr("action",'${baseurl}cgd/yycgdmxdelsubmit.action');
jquerySubByFId('yycgdmxForm',yycgdmxdelete_callback, null);
}else{
alert_warn("请选择要删除的采购药品");
}
}
)
}
function yycgdmxdelete_callback(data) {
var result = getCallbackData(data);
_alert(result);
yycgdmxquery();
}