失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【客户下单】后台系统自动分单成功生成工单发送短信

【客户下单】后台系统自动分单成功生成工单发送短信

时间:2019-05-14 17:07:50

相关推荐

【客户下单】后台系统自动分单成功生成工单发送短信

【客户下单】后台系统自动分单成功生成工单发送短信

自动分单成功,后台生成工单发送短信,否则进入人工分单流程。

生成工单,发送短信的方法抽取:

//抽取的方法:生成工单 发送短信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<Order,Integer>{}public interface WorkBillRepository extends JpaRepository<WorkBill,Integet>{}

OrderServiceImpl完整代码:

@Service@Transactionalpublic class OrderServiceImpl implements OrderService{@Autowiredprivate FixedAreaRepository fixedAreaRepository;@Autowiredprivate OrderRepository orderRepository;@Autowiredprivate AreaRepository areaRepository;@Autowiredprivate WorkBillRepository workBillRepository;@Autowired@Qualifier("jmsQueueTemplate")private JmsTemplate jmsTemplate;//MQ发短信@Overridepublic 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<Courier> 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<Courier> 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("已通知");}

}

如果觉得《【客户下单】后台系统自动分单成功生成工单发送短信》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。