BOS项目笔记 第6天
今天内容安排:
1、业务受理环节分析
2、创建业务受理环节对应的数据表(业务通知单、工单、工作单)
3、实现业务受理、自动分单
4、datagrid的编辑功能
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开启指定列的编辑功能
l 数据表格的方法:
插入一行:insertRow
删除一行:deleteRow
开启编辑状态:beginEdit
结束编辑状态:endEdit
获得选中行的索引:getRowIndex
获得选中的第一行:getSelected
l 数据表格的事件:
结束编辑状态时触发:onAfterEdit