【客户下单】后台系统自动分单成功生成工单发送短信
【客户下单】后台系统自动分单成功生成工单发送短信
自动分单成功,后台生成工单发送短信,否则进入人工分单流程。
生成工单,发送短信的方法抽取:
//抽取的方法:生成工单 发送短信
private void generateWorkBill(Order order){//生成工单WorkBill workBill = new WorkBill();workBill.setType("新");workBill.setPickstate("新单");//取件状态workBill.setBuildtime(new Date());workBill.setRemark(order.getRemark());String smsNumber = RandomStringUtils.randomNumeric(4);workBill.setSmaNumber(smsNumber);//短信序号workBill.setOrder(order);workBill.setCourier(order.getCourier());workBillRepository.save(workBill);//发送短信//调用MQ服务 发送一条消息给快递员jmsTemplate.send("bos_sms",new MessageCreator(){@Overridepublic Message createMessage(Session session) throws JMSException {MapMessage mapMessage = session.createMapMessage();mapMessage.setString("telephone",order.getCourier().getTelephone());mapMessage.setString("msg","短信序号:"+smsNumber+",取件地址:"+order.getSendAddress()+",联系人:"+order.getSendName()+",手机:"+order.getSendMobile()+",快递员捎话:"+order.getSendMobileMsg());return mapMessage;}});//修改工单状态workBill.setPickstate("已通知");
}
调用MQ发送消息:
@Autowired
@Qualifier("jmsQueueTemplate")
private JmsTemplate jmsTemplate;//MQ发短信
当自动分单的条件都 不满足时,需要进行人工分单:
//上述自动分单的情况都不是,将进行人工分单
order.setOrderType("2");//设置分单类型为人工分单
orderRepository.save(order);
dao层代码,因为只涉及到保存订单和工单的操作,因此只需要继承JpaRepository接口即可。
public interface OrderRepository extends JpaRepository{}public interface WorkBillRepository extends JpaRepository{}
OrderServiceImpl完整代码:
@Service
@Transactional
public class OrderServiceImpl implements OrderService{
@Autowired
private FixedAreaRepository fixedAreaRepository;
@Autowired
private OrderRepository orderRepository;
@Autowired
private AreaRepository areaRepository;
@Autowired
private WorkBillRepository workBillRepository;
@Autowired
@Qualifier("jmsQueueTemplate")
private JmsTemplate jmsTemplate;//MQ发短信
@Override
public void saveOrder(Order order){order.setOrderNum(UUID.randomUUID().toString());//设置订单号order.setOrderTime(new Date());//设置下单时间order.setStatus("1");//订单状态 1就是待取件 2运输中 3已签收 4异常//自动分单逻辑,基于CRM地址库完全匹配,获取定区,匹配快递员String fixedAreaId = WebClient.create(Constants.CRM_MANAGEMENT_URL+"/services/customerService/findFixedAreaIdByAddress?address="+order.getSendAddress()).accept(MediaType.APPLICATION_JSON).get(String.class);if(fixedAreaId!=null){FixedArea fixedArea = fixedAreaRepository.findOne(fixedAreaId);//获取定区Courier courier = fixedArea.getCouriers().iterator().next();if(courier!=null){//自动分单成功System.out.println("自动分单成功...");order.setCourier(courier);//将快递员关联到订单上//order.setOrderNum(UUID.randomUUID().toString());//生成订单号//设置分单类型为自动分单,1为自动分单,2为人工分单order.setOrderType("1");//保存订单orderRepository.save(order);//生成工单 发送短信generateWorkBill(order);return;}}//基于分区关键字匹配实现自动分单逻辑:通过省市区查询分区关键字,匹配地址,基于分区实现自动分单//寄件人省市区Area area = order.getSendArea();Area persistArea = areaRepository.findByProvinceAndCityAndDistrict(area.getProvince(),area.getCity(),area.getDistrict());for(SubArea subArea : persistArea.getSubareas()){//当前客户的下单地址是否包含分区关键字if(order.getSendAddress().contains(subArea.getKeyWords())){//找到分区,找到定区,找到快递员Iterator iterator = subArea.getFixedArea().getCouriers().iterator();if(iterator.hasNext()){Courier courier = iterator.next();if(courier!=null){//自动分单成功System.out.println("自动分单成功 ...");//将快递员关联到订单上order.setCourier(courier);//设置分单类型为自动分单,1为自动分单,2为人工分单order.setOrderType("1");//保存订单//order.setOrderNum(UUID.randomUUID().toString());//生成订单号orderRepository.save(order);//生成工单 发送短信generateWorkBill(order);return;}}}}for(SubArea subArea : persistArea.getSubareas()){//当前客户的下单地址是否包含分区辅助关键字if(order.getSendAddress().contains(subArea.getAssistKeyWords())){//找到分区,找到定区,找到快递员Iterator iterator = subArea.getFixedArea().getCouriers().iterator();if(iterator.hasNext()){Courier courier = iterator.next();if(courier!=null){//自动分单成功System.out.println("自动分单成功...");//将快递员关联到订单上order.setCourier(courier);//设置分单类型为自动分单,1为自动分单,2为人工分单order.setOrderType("1");//保存订单//order.setOrderNum(UUID.randomUUID().toString());//生成订单号orderRepository.save(order);//生成工单 发送短信generateWorkBill(order);return;}}}}//上述自动分单的情况都不是,将进行人工分单order.setOrderType("2");//设置分单类型为人工分单orderRepository.save(order);
}
//抽取的方法:生成工单 发送短信
private void generateWorkBill(Order order){//生成工单WorkBill workBill = new WorkBill();workBill.setType("新");workBill.setPickstate("新单");//取件状态workBill.setBuildtime(new Date());workBill.setRemark(order.getRemark());String smsNumber = RandomStringUtils.randomNumeric(4);workBill.setSmaNumber(smsNumber);//短信序号workBill.setOrder(order);workBill.setCourier(order.getCourier());workBillRepository.save(workBill);//发送短信//调用MQ服务 发送一条消息给快递员jmsTemplate.send("bos_sms",new MessageCreator(){@Overridepublic Message createMessage(Session session) throws JMSException {MapMessage mapMessage = session.createMapMessage();mapMessage.setString("telephone",order.getCourier().getTelephone());mapMessage.setString("msg","短信序号:"+smsNumber+",取件地址:"+order.getSendAddress()+",联系人:"+order.getSendName()+",手机:"+order.getSendMobile()+",快递员捎话:"+order.getSendMobileMsg());return mapMessage;}});//修改工单状态workBill.setPickstate("已通知");
}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
