zoukankan      html  css  js  c++  java
  • BOS项目 第6天(业务受理、自动分单、工作单快速录入、datagrid行编辑)

    BOS项目笔记 第6

    今天内容安排:

    1、业务受理环节分析

    2、创建业务受理环节对应的数据表(业务通知单、工单、工作单)

    3、实现业务受理、自动分单

    4datagrid的编辑功能

    5、基于datagrid编辑功能实现工作单快速录入功能

    6、演示权限控制demo

    1. 业务受理分析

    受理环节,是宅急送业务的开始,作为服务前端,客户通过电话、网络等多种方式进行委托,业务受理员通过与客户交流,获取客户的服务需求和具体委托信息,将服务指令输入我司服务系统。

    客户通过打电话的方式进行物流委托,一个客户的委托信息对应一个业务通知单。

    系统通过客户的取件地址,自动匹配到一个取派员,为取派员产生一个任务,这个任务就是一个工单。

    工作单,描述货物和物流信息的单据。

    2. 实现业务受理、自动分单

    2.1 crm中提供根据手机号查询客户信息方法

    CustomerService接口:

    CustomerServiceImpl实现类:

    2.2 bos中实现业务受理

    注意:需要将crm中接口扩展的方法复制到bos的接口中

    业务受理页面:WEB-INF/pages/qupai/noticebill_add.jsp

    第一步:为手机号输入框绑定离焦事件,发送ajax请求,提交输入的手机号到Action,在Action中调用crm的代理对象,访问crm服务,根据手机号查询客户信息,返回json

    第二步:创建NoticebillAction,提供findCustomerByTelephone方法

    第三步:完善页面中ajax方法的回调函数

    <input type="text" class="easyui-validatebox" name="telephone"

    required="true" />

    <script type="text/javascript">

    $(function(){

    $("input[name=telephone]").blur(function(){

    var telephone = this.value;

    //发送ajax请求,提交手机号

    var url = "${pageContext.request.contextPath}/noticebillAction_findCustomerByTelephone.action";

    $.post(url,{"telephone":telephone},function(data){

    if(data != null){

    //查到客户信息,可以回显

    var cid = data.id;

    var name = data.name;

    var address = data.address;

    $("input[name=customerId]").val(cid);

    $("input[name=customerName]").val(name);

    $("input[name=delegater]").val(name);

    $("input[name=pickaddress]").val(address);

    }else{

    //清理数据

    $("input[name=customerId]").val("");

    $("input[name=customerName]").val("");

    $("input[name=delegater]").val("");

    $("input[name=pickaddress]").val("");

    }

    },'json');

    });

    });

    </script>

    第四步:为“新单”按钮绑定事件

    第五步NoticebillAction中提供add方法,保存一个业务通知单数据,根据取件地址尝试自动分单

    第六步:在crm服务中扩展方法,根据取件地址获取定区id

    第七步:在NoticebillService中提供save方法

         /**

     * 保存业务通知单,尝试自动分单

     * @return

     */

    public void save(Noticebill model) {

    noticebillDao.save(model);//持久对象

    //获取取件地址

    String pickaddress = model.getPickaddress();

    //根据取件地址查询定区id---crm服务查询

    String dId = proxy.findDecidedzoneIdByPickaddress(pickaddress);

    if(dId != null){

    //查询到定区id,可以自动分单

    Decidedzone decidedzone = decidedzoneDao.findById(dId);

    Staff staff = decidedzone.getStaff();

    model.setStaff(staff);//业务通知单关联匹配到的取派员

    model.setOrdertype("自动");//分单类型

    //需要为取派员创建一个工单

    Workbill workbill = new Workbill();

    workbill.setAttachbilltimes(0);//追单次数

    workbill.setBuildtime(new Timestamp(System.currentTimeMillis()));//工单创建的时间

    workbill.setNoticebill(model);//工单关联业务通知单

    workbill.setPickstate("未取件");//取件状态

    workbill.setRemark(model.getRemark());//备注

    workbill.setStaff(staff);//工单关联取派员

    workbill.setType("新单");

    workbillDao.save(workbill);//保存工单

    //调用短信平台服务,给取派员发送短信

    }else{

    //没有查询到定区id,转为人工分单

    model.setOrdertype("人工");

    }

    }

    3. datagrid编辑功能使用

    数据表格的编辑功能是以列为单位的。

    通过数据表格的列属性editor开启指定列的编辑功能

    数据表格的方法:

    插入一行:insertRow

    删除一行:deleteRow

    开启编辑状态:beginEdit

    结束编辑状态:endEdit

    获得选中行的索引:getRowIndex

    获得选中的第一行:getSelected

    数据表格的事件:

    结束编辑状态时触发:onAfterEdit

  • 相关阅读:
    ADO.NET存取数据库数据
    2017-01-03
    re模块
    random模块(随机)
    sys模块
    os模块
    datetime模块
    time模块
    logging模块
    Python函数初识
  • 原文地址:https://www.cnblogs.com/wujizun/p/6926301.html
Copyright © 2011-2022 走看看