【客户下单】后台系统自动分单成功生成工单发送短信
生活随笔
收集整理的這篇文章主要介紹了
【客户下单】后台系统自动分单成功生成工单发送短信
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【客戶下單】后臺系統自動分單成功生成工單發送短信
自動分單成功,后臺生成工單發送短信,否則進入人工分單流程。
生成工單,發送短信的方法抽取:
//抽取的方法:生成工單 發送短信 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 @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<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("已通知"); }}
總結
以上是生活随笔為你收集整理的【客户下单】后台系统自动分单成功生成工单发送短信的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【客户下单】后台系统匹配分区关键字实现自
- 下一篇: JavaSE、JavaEE与Spring