采购单提交

需求
用户创建完成采购单,不再修改,执行提交操作,提交后由监管单位审核。

约束条件:
采购单已添加采购药品,且采购量等信息已填写。方可提交采购单。
采购单在未提交或审核不通过时方可执行提交操作。
存在采购药品方可提交

数据库操作:
根据采购单号更新采购单状态,更新为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>

你可能感兴趣的:(采购单提交)