1 采购单明细添加提交
1.1 需求 :
医院从本区域供货商药品目录中挑选要采购的药品,相同的药品在每个采购单中只允许挑选一次。
在数据库级别有一个唯一约束:
在采购单明细表中:采购单id+药品id是唯一的
1.2 实现
1.2.1 dao
向采购单明细表中插入记录。
使用自动生成的mapper.
1.2.2 service
接口功能:采购药品添加
接口参数:采购单id、药品id、供货商id
两个方法一个插入 一个校验查询
// 采购单药品添加校验
// 通过采购单id 和药品信息id查询采购单明细表中是否存在
public YycgdmxfindYycgdmxByYycgdIdAndYpxxId(String yycgdid, 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 insertYycgdmx(Stringyycgdid, String ypxxid, String usergysid)
throws Exception {
Stringyear = yycgdid.substring(0, 4);
Ypxxypxx = ypxxMapper.selectByPrimaryKey(ypxxid);
if (ypxx == null) {
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 326,
null));
}
Yycgdmxyycgdmx = newYycgdmx();
yycgdmx.setId(UUIDBuild.getUUID());
yycgdmx.setYycgdid(yycgdid);
yycgdmx.setYpxxid(ypxxid);
yycgdmx.setUsergysid(usergysid);
yycgdmx.setBusinessyear(year);
yycgdmx.setZbjg(ypxx.getZbjg());
yycgdmx.setJyjg(ypxx.getZbjg());
yycgdmx.setCgzt("1");// 未确认发货
// 校验
Yycgdmxyycgdmx2 = this.findYycgdmxByYycgdIdAndYpxxId(yycgdid,ypxxid);
if (yycgdmx2 != null) {
//该药品已存在
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 508,
null));
}
yycgdmxMapper.insert(yycgdmx);
}
1.2.3 action
批量添加采购药品的参数:
采购单id:单个参数(在form定义hidden)
药品id:多个参数(需要在datagrid的列中定义)
供货商id:多个参数(需要在datagrid的列中定义)
对于多个参数使用List<YycgdmxCustom> yycgdmxCustoms接收。
在包装对象中添加list属性接收页面的批量参数:
public classYycgdQueryVo {
// 接收页面批量参数
privateList<YycgdmxCustom> yycgdmxCustoms;
批量添加采购药品:
// 采购单添加药品信息提交
@RequestMapping("/addyycgdmxsubmit")
public @ResponseBody
SubmitResultInfoaddyycgdmxsubmit(String yycgdid, int[] indexs,
YycgdQueryVoyycgdQueryVo) throwsException {
List<YycgdmxCustom>list = yycgdQueryVo.getYycgdmxCustoms();
// 处理数据的总数
int count = indexs.length;
// 处理成功的数量
int count_success = 0;
// 处理失败的数量
int count_error = 0;
// 处理失败的原因
List<ResultInfo>msgs_error = newArrayList<ResultInfo>();
for (int i = 0; i < count;i++) {
// 定义异常信息
ResultInforesultInfo = null;
// 根据选中行的序号获取要处理的业务数据(单个)
YycgdmxCustomyycgdmxCustom = list.get(indexs[i]);
Stringypxxid = yycgdmxCustom.getYpxxid();// 页面中传入的参数
Stringusergysid = yycgdmxCustom.getUsergysid();
try {
cgdService.insertYycgdmx(yycgdid,ypxxid, usergysid);
}catch(Exception e) {
e.printStackTrace();
// 进行异常解析
if (e instanceofExceptionResultInfo) {// 自定义异常
resultInfo= ((ExceptionResultInfo) e).getResultInfo();
}else{
resultInfo= ResultUtil.createFail(Config.MESSAGE, 900,
null);
}
}
if (resultInfo == null) {// 执行成功
count_success++;
}else{
count_error++;
// 记录失败的原因
msgs_error.add(resultInfo);
}
}
// 提示用户成功数量、失败数量、失败原因
return ResultUtil.createSubmitResult(// 并返回详细信息
ResultUtil.createSuccess(Config.MESSAGE, 907, new Object[] {
count_success,count_error }), msgs_error);
}
1.2.4 页面
药品id:多个参数(需要在datagrid的列中定义)
供货商id:多个参数(需要在datagrid的列中定义)