033 业务受理自动分单 - bos

一、在CRM中扩展方法:根据手机号查询客户信息以及根据客户的取件地址查询定区ID

1.实现代码如下

@Override
public Customer findCustomerByTelephone(String telephone) {
String sql = "select * from t_customer where telephone = ?";
List<Customer> customerList = jdbcTemplate.query(sql, new CustomerRowMapper(), telephone);
if(customerList != null && customerList.size() > 0){
return customerList.get(0);
}
return null;
}

@Override
public String findDecidedzoneIdByAddress(String address) {
String sql = "select decidedzone_id from t_customer where telephone = ?";
String decidedzoneId = jdbcTemplate.queryForObject(sql, String.class, address);
return decidedzoneId;
}

2.重新生成客户端调用类

wsimport -s . -p com.hao.crm.service http://localhost:8080/CRM/service/customer?wsdl

二、页面完善

1.为手机号输入框绑定失焦事件

$(function(){
//页面加载完成后为手机输入框绑定失焦事件
$("input[name=telephone]").blur(function(){
var telephone = this.value;
//发送ajax请求,在Action中调用crm服务获取客户信息,用于页面回显
$.ajax({
"url":"noticebillAction_findCustomerByTelephone.action",
"data":{"telephone":telephone},
"success":function(resp, textStatus, xmlHttp){
if(resp != null){
//查询到了客户信息,可以进行页面回显
var customerId = resp.id;
var customerName = resp.name;
var address = resp.address;
$("input[name=customerId]").val(customerId);
$("input[name=customerName]").val(customerName);
$("input[name=delegater]").val(customerName);
$("input[name=pickaddress]").val(address);
}else{
//没有查询到客户信息,清空已经回显的数据
$("input[name=customerId]").val("");
$("input[name=customerName]").val("");
$("input[name=delegater]").val("");
$("input[name=pickaddress]").val("");
}
},
"error":function(xmlHttp, testStatus, exception){
alert(textStatus);
}
});
});
});

2.创建NoticebillAction,注入crm代理对象,提供方法根据手机号查询客户

/**
* 调用crm根据电话查询客户信息
* @return
*/
public String findCustomerByTelephone(){
Customer customer = customerService.findCustomerByTelephone(model.getTelephone());
object2JsonAndWriteToResponse(customer);
return NONE;
}

三、服务端实现业务单受理以及自动分单功能

1.NoticebillAction.add实现

/**
* 添加新的业务通知单,并尝试自动分单
*/
public String add(){
noticebillService.save(model);
return LIST;
}

2.NoticebillService.save实现

/**
* 保存业务通知单并尝试自动分单
*/
@Override
public void save(Noticebill model) {
User user = BOSUtils.getLoginUser();
model.setUser(user);//设置当前登录的用户
noticebillDao.save(model);

//获取客户的取件地址
String pickaddress = model.getPickaddress();
//远程调用crm服务,根据取件地址查询定区ID
String decidedzoneId = customerService.findDecidedzoneIdByAddress(pickaddress);
if(decidedzoneId != null){
//匹配到了定区ID,可以进行自动分单
Decidedzone decidedzone = decidedzoneDao.findById(decidedzoneId);
Staff staff = decidedzone.getStaff();
model.setStaff(staff);// 业务通知关联取派员对象
//设置分单类型为自动分单
model.setOrdertype(Noticebill.ORDERTYPE_AUTO);
//为取派员产生一个工单
Workbill workbill = new Workbill();
workbill.setAttachbilltimes(0);
workbill.setBuildtime(new Timestamp(System.currentTimeMillis())); //创建时间,当前提供时间
workbill.setNoticebill(model); //工单关联业务通知单
workbill.setPickstate(Workbill.PICKSTATE_NO); //设置取件状态为未取件
workbill.setRemark(model.getRemark()); //备注信息
workbill.setStaff(staff);//工单关联取派员
workbill.setType(Workbill.TYPE_NEW); //新单

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

//保存后调用短信平台发送短信

}else{
//没有查询到定区ID,不能进行自动分单
model.setOrdertype(Noticebill.ORDERTYPE_MAN);
}
}

时间: 2024-11-07 06:27:40

033 业务受理自动分单 - bos的相关文章

BOS项目 第6天(业务受理、自动分单、工作单快速录入、datagrid行编辑)

BOS项目笔记 第6天 今天内容安排: 1.业务受理环节分析 2.创建业务受理环节对应的数据表(业务通知单.工单.工作单) 3.实现业务受理.自动分单 4.datagrid的编辑功能 5.基于datagrid编辑功能实现工作单快速录入功能 6.演示权限控制demo 1. 业务受理分析 受理环节,是宅急送业务的开始,作为服务前端,客户通过电话.网络等多种方式进行委托,业务受理员通过与客户交流,获取客户的服务需求和具体委托信息,将服务指令输入我司服务系统. 客户通过打电话的方式进行物流委托,一个客户

032 业务受理模块需求分析和数据库设计 - bos

一.业务受理模块需求分析 整个BOS项目分为基础设置.取派.中转.路由.报表等几大部分. 受理环节,是物流公司业务的开始,作为服务前端,客户通过电话.网络等多种方式进行委托,业务受理员通过与客户交流,获取客户的服务需求和具体委托信息,将服务指令输入我司服务系统. 客户通过打电话方式进行物流委托,物流公司的客服人员需要将委托信息录入到BOS系统中,这个录入的信息称为业务通知单. 当客服人员将业务通知单信息录入到系统后,系统会根据客户的住址自动匹配到一个取派员,并为这个取派员产生一个任务,这个任务就

业务受理需求 客户下单 根据前台页面所选的省市区 关联定区去生成订单

1 业务受理需求 注要:通过客户提交信息自动找到快递员上门取件.   1.客户通过打电话,网络(前台系统)提交物流委托信息(寄件人地址,电话)到后台管理系统,后台管理系统会将客户物流委托信息保存到数据库中,这个物流委托信息称为:订单 Order   2.后台管理保存完订单数据后,系统根据取件地址自动匹配到快递员,系统会给快递员产生取件任务,系统会给快递员发送一条短信..这个取件任务称为:工单 WorkBill.   3.快递员根据短信中取件信息上门取件,快递员会给客户提供纸质单据(快递单),填写

前端自动分环境打包(vue和ant design)

现实中的问题:有时候版本上线的时候,打包时忘记切换环境,将测试包推上正式服务器,那你就会被批了. 期望:在写打包的命令行的时候就觉得自己在打包正式版本,避免推包时候的,不确信自己的包是否正确. 既然有了期望,那么就要开始百度如何去实现呢. 下面先开始介绍ant design的方法: ant design的打包工具是roadhog,那么从roadhog下手. 在roadhog文档中,发现define的配置可以传递给代码. 在ant design pro的issue中搜索中,发现环境变量的配置. 我

新大陆互助自动排单系统开发

新大陆互助自动排单系统开发多少钱.新大陆互助投资理财系统开发定制费用.新大陆互助静态动态收益模式系统开发×××.找庄生:18565189719微/电云班客-互联网+金融系统缔造者,致力于将互联网金融+电商+O2O+互联网移动策划+数字化营销+金融基础设施建设整合为一体.?特别提示:本公司是软件开发公司,非平台方,玩家勿扰[基础介绍]Tnw币10元/个.开户需消耗10个Tnw币每排单1000需1个Tnw币.[会员等级及奖励说明]-----------------"L1":激活排单后即可,

NPOI 导出excel数据超65535自动分表

工作上遇到的问题,网上找了一些资料 整理了一个比较可行的解决方案. NPOI 大数据量分多个sheet导出 代码段 /// <summary> /// DataTable转换成Excel文档流,并输出到客户端 /// </summary> /// <param name="table"></param> /// <param name="response"></param> /// <pa

Android Studio 设置自动生成单例代码

AS中有可以自己设置代码模板,使用起来简单方便.同样的,单例类的代码样式统一,除了类名外全部一致.所以使用模板更加方便. 在设置中的Editor-Live Template中新建模板,然后把单例的模板代码粘贴上去. 其中的属于自定义字段,给它赋予一个值即可.步骤如下:  然后给这个模板定义一个快捷模式即可. 到了这一步,快捷模板即可使用,但还有一个步骤,没有这个步骤,即便设置了模板,还是无法使用. - 要给模板设置应用范围,应用为java代码即可. 文章出自:http://blog.csdn.n

postgresql10以上的自动分区分表功能

一.列分表 1.首先创建主分区表: create table fenbiao(id int,year varchar) partition by list(year)这里设置的是根据year列进行数据分表;创建后使用navicat是看不到的; 2.创建分表: create table fenbiao_2017 partition of fenbiao for values in ('2017')create table fenbiao_2018 partition of fenbiao for

android发送短信,超过70个中文,自动分拆短信内容

1.短信发送代码 SmsManager smg = SmsManager.getDefault(); //短信有字数限制的.70个汉字.做判断. ArrayList<String> list = smg.divideMessage("短信内容"); //分条发送 for (String text:list) { smg.sendTextMessage("5556", null, text, null, //得到发送的状态 null//对方是否收到短信的状