需求
用户创建完成采购单,不再修改,执行提交操作,提交后由监管单位审核。
约束条件:
采购单已添加采购药品,且采购量等信息已填写。方可提交采购单。
采购单在未提交或审核不通过时方可执行提交操作。
存在采购药品方可提交
数据库操作:
根据采购单号更新采购单状态,更新为2:已提交未审核
1.2 实现
1.2.1 dao
根据采购单号更新采购单状态,更新为2:已提交未审核
使用逆向工程mapper
1.2.2 service
接口功能:采购单提交
接口参数:采购单id
接口实现:
校验:
采购单已添加采购药品,且采购量等信息已填写。方可提交采购单。
方法:根据采购单id查询采购单明细,进行信息判断校验。
采购单在未提交或审核不通过时方可执行提交操作。
方法:得到采购单状态,进行校验。
操作:
根据采购单号更新采购单状态,更新为2:已提交未审核
// 采购单提交
@Override
public void saveYycgdSubmitStatus(String yycgdid) throws Exception {
// 采购单状态为未提交或审核不通过时方可提交
YycgdCustom yycgdCustom = this.findYycgdById(yycgdid);
if (yycgdCustom == null) {
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 501,
null));
}
// 采购单状态
String state = yycgdCustom.getZt();
if (!state.equals("1") && !state.equals("4")) { // 采购单只允许在未提交或审核不通过时方可提交
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 502,
null));
}
// 采购单必须包括采购药品明细方可提交
// 根据采购单id查询所有采购药品明细
List<YycgdmxCustom> yycgdmxlist = this.findYycgdmxListByYycgdid(
yycgdid, null);
if (yycgdmxlist == null || yycgdmxlist.size() <= 0) {
// 没有添加采购药品不允许提交
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 504,
null));
}
// 采购单的采购药品明细信息必须完整(采购量、采购金额必须指定)
for (YycgdmxCustom yycgdmxCustom : yycgdmxlist) {
Integer cgl = yycgdmxCustom.getCgl();
Float cgje = yycgdmxCustom.getCgje();
if (cgl == null || cgje == null) {
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE,
505, null));
}
}
// 创建并更新采购单状态及提交时间
Yycgd yycgd_update = new Yycgd();
yycgd_update.setId(yycgdid);
String year = yycgdid.substring(0, 4);
yycgd_update.setBusinessyear(year);
yycgd_update.setZt("2");
// 更新时间
yycgd_update.setTjtime(MyUtil.getNowDate());
// 只更新不为空的列
yycgdMapper.updateByPrimaryKeySelective(yycgd_update);
}
1.2.3 Action:
修改editcgd.jsp页面,增加“提交”js方法。
执行form提交,将采购单id传入action方法。
调用service提交 采购单。
// 采购单添加药品信息提交
@RequestMapping("/addyycgdmxsubmit")
public @ResponseBody
SubmitResultInfo addyycgdmxsubmit(String yycgdid, int[] indexs,
YycgdQueryVo yycgdQueryVo) throws Exception {
List<YycgdmxCustom> list = yycgdQueryVo.getYycgdmxCustoms();
// 处理数据的总数
int count = indexs.length;
// 处理成功的数量
int count_success = 0;
// 处理失败的数量
int count_error = 0;
// 处理失败的原因
List<ResultInfo> msgs_error = new ArrayList<ResultInfo>();
for (int i = 0; i < count; i++) {
// 定义异常信息
ResultInfo resultInfo = null;
// 根据选中行的序号获取要处理的业务数据(单个)
YycgdmxCustom yycgdmxCustom = list.get(indexs[i]);
String ypxxid = yycgdmxCustom.getYpxxid();// 页面中传入的参数
String usergysid = yycgdmxCustom.getUsergysid();
try {
cgdService.insertYycgdmx(yycgdid, ypxxid, usergysid);
} catch (Exception e) {
e.printStackTrace();
// 进行异常解析
if (e instanceof ExceptionResultInfo) {// 自定义异常
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 页面
提交成功后,刷新 本页面。
在“提交”按钮显示处添加if判断(如果采购单状态为未提交或审核不通过显示提交按钮)
采购单明细操作按钮:
添加if判断(如果采购单状态为未提交或审核不通过显示操作按钮)
//采购单提交
function yycgdsubmit(){
_confirm('提交后采购单将不允许修改,是否继续?',null,
function(){
$("#yycgdsaveForm").attr("action","${baseurl}cgd/submitYycgd.action");
jquerySubByFId('yycgdsaveForm', yycgdsubmit_callback, null);
}
);
}
//采购单提交回调
function yycgdsubmit_callback(data) {
var result = getCallbackData(data);
_alert(result);
//提交成功再刷新本页面,提交按钮就不显示
if(result.type==TYPE_RESULT_SUCCESS){
//重新再次跳转到修改页面,页面上的提交按钮、添加、删除的控制就不显示了。
window.location="${baseurl}cgd/editcgd.action?id=${yycgd.id}";
}
}
var toolbar=[];
//如果采购单未提交或审核不通过显示此下操作按钮
<c:if test="${yycgd.zt =='1' or yycgd.zt=='4'}">
toolbar = [{
id : 'yycgdmxaddshow',
text : '采购药品添加',
iconCls : 'icon-add',
handler : yycgdmxaddshow
}
,{
id : 'yycgdmxdelete',
text : '采购药品删除',
iconCls : 'icon-add',
handler : yycgdmxdelete
}
,{
id : 'yycgdmxsave',
text : '保存采购药品信息',
iconCls : 'icon-add',
handler : yycgdmxsave
}
];
</c:if>