需求
用户将药品添加到采购单中,首先确定药品的采购量。
操作方法:
进入采购单修改页面
输入药品的采购量
点击“保存采购药品信息”
约束条件:
指定采购单下的药品设置采购量
设置采购量必须是大于0的数
1、 采购单未提交或审核不通过方可添加药品
2、 交易价小于等中标价格
数据库操作:
更新采购单明细表(Yycgdmx)记录
更新需要的数据:
采购单id、药品信息id
更新内容:中标价格、交易价格、采购量、采购金额
*中标价格 就是当前药品信息的价格
*交易价格:不允许大于中标价格
*采购量:整数
*采购金额:交易价格*采购量
dao
根据采购单id和药品id更新采购单明细表中采购量、采购金额
使用自定义mapper
service
接口功能:根据采购单id和药品id更新采购单明细表中采购量、采购金额
接口参数:采购单id、药品id、采购量(将此字段封装到pojo对象中)
//修改医药采购单明细采购量信息
@Override
publicvoid updateYycgdmx(Stringyycgdid, String ypxxid, Integer cgl)
throws Exception {
Stringbusinessyear =yycgdid.substring(0, 4);
//根据采购单id和药品id获取采购单明细记录
Yycgdmxyycgdmx = this.findYycgdmxByYycgdIdAndYpxxId(yycgdid,ypxxid);
if (yycgdmx ==null) {
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 501,
null));
}
//校验采购量
if (cgl ==null || cgl <= 0) {
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 561,
null));
}
//计算采购金额
Floatjyjg = yycgdmx.getJyjg();
//采购金额
Floatcgje = jyjg * cgl;
//定义一个更新对象
Yycgdmxyycgdmx_update = newYycgdmx();
yycgdmx_update.setId(yycgdmx.getId());
yycgdmx_update.setCgl(cgl);
yycgdmx_update.setCgje(cgje);
//设置年份
yycgdmx_update.setBusinessyear(businessyear);
yycgdmxMapper.updateByPrimaryKeySelective(yycgdmx_update);
}
action
批量提交参数:
采购单id:单个(在form中定义hidden)
药品id:多个参数(datagird中定义hidden)
采购量:多个参数(datagird中定义hidden)
使用List<YycgdmxCustom> yycgdmxCustoms接收批量参数
// 采购单药品保存
@RequestMapping("/savecgl")
public@ResponseBody
SubmitResultInfosavecgl(String id,//采购单id
YycgdQueryVoyycgdQueryVo, int[]indexs // 页面选择序号
)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();//药品信息id
Integercgl = yycgdmxCustom.getCgl();//采购量
try {
cgdService.updateYycgdmx(id,ypxxid, cgl);
}catch(Exception e) {
e.printStackTrace();
// 进行异常解析
if (einstanceofExceptionResultInfo) {
resultInfo= ((ExceptionResultInfo) e).getResultInfo();
}else{
// 构造未知错误异常
resultInfo= ResultUtil.createFail(Config.MESSAGE, 900,
null);
}
}
if (resultInfo ==null) {
// 说明成功
count_success++;
}else{
count_error++;
// 记录失败原因
msgs_error.add(resultInfo);
}
}
页面