【客户下单】后台系统自动分单成功生成工单发送短信
自动分单成功,后台生成工单发送短信,否则进入人工分单流程。
生成工单,发送短信的方法抽取:
//抽取的方法:生成工单 发送短信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("已通知");}
}
如果觉得《【客户下单】后台系统自动分单成功生成工单发送短信》对你有帮助,请点赞、收藏,并留下你的观点哦!