首页 > 技术文章 > BOS项目 第6天(业务受理、自动分单、工作单快速录入、datagrid行编辑)

wujizun 2017-05-31 22:52 原文

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

推荐阅读