【客户下单】后台系统自动分单成功生成工单发送短信
生活随笔
收集整理的這篇文章主要介紹了
【客户下单】后台系统自动分单成功生成工单发送短信
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
【客戶下單】后臺系統(tǒng)自動分單成功生成工單發(fā)送短信
自動分單成功,后臺生成工單發(fā)送短信,否則進(jìn)入人工分單流程。
生成工單,發(fā)送短信的方法抽取:
//抽取的方法:生成工單 發(fā)送短信 private void generateWorkBill(Order order){//生成工單WorkBill workBill = new WorkBill();workBill.setType("新");workBill.setPickstate("新單");//取件狀態(tài)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);//發(fā)送短信//調(diào)用MQ服務(wù) 發(fā)送一條消息給快遞員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()+",聯(lián)系人:"+order.getSendName()+",手機(jī):"+order.getSendMobile()+",快遞員捎話:"+order.getSendMobileMsg());return mapMessage;}});//修改工單狀態(tài)workBill.setPickstate("已通知"); }調(diào)用MQ發(fā)送消息:
@Autowired @Qualifier("jmsQueueTemplate") private JmsTemplate jmsTemplate;//MQ發(fā)短信當(dāng)自動分單的條件都 不滿足時,需要進(jìn)行人工分單:
//上述自動分單的情況都不是,將進(jìn)行人工分單 order.setOrderType("2");//設(shè)置分單類型為人工分單 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發(fā)短信 @Override public void saveOrder(Order order){order.setOrderNum(UUID.randomUUID().toString());//設(shè)置訂單號order.setOrderTime(new Date());//設(shè)置下單時間order.setStatus("1");//訂單狀態(tài) 1就是待取件 2運(yùn)輸中 3已簽收 4異常//自動分單邏輯,基于CRM地址庫完全匹配,獲取定區(qū),匹配快遞員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);//獲取定區(qū)Courier courier = fixedArea.getCouriers().iterator().next();if(courier!=null){//自動分單成功System.out.println("自動分單成功...");order.setCourier(courier);//將快遞員關(guān)聯(lián)到訂單上//order.setOrderNum(UUID.randomUUID().toString());//生成訂單號//設(shè)置分單類型為自動分單,1為自動分單,2為人工分單order.setOrderType("1");//保存訂單orderRepository.save(order);//生成工單 發(fā)送短信generateWorkBill(order);return;}}//基于分區(qū)關(guān)鍵字匹配實現(xiàn)自動分單邏輯:通過省市區(qū)查詢分區(qū)關(guān)鍵字,匹配地址,基于分區(qū)實現(xiàn)自動分單//寄件人省市區(qū)Area area = order.getSendArea();Area persistArea = areaRepository.findByProvinceAndCityAndDistrict(area.getProvince(),area.getCity(),area.getDistrict());for(SubArea subArea : persistArea.getSubareas()){//當(dāng)前客戶的下單地址是否包含分區(qū)關(guān)鍵字if(order.getSendAddress().contains(subArea.getKeyWords())){//找到分區(qū),找到定區(qū),找到快遞員Iterator<Courier> iterator = subArea.getFixedArea().getCouriers().iterator();if(iterator.hasNext()){Courier courier = iterator.next();if(courier!=null){//自動分單成功System.out.println("自動分單成功 ...");//將快遞員關(guān)聯(lián)到訂單上order.setCourier(courier);//設(shè)置分單類型為自動分單,1為自動分單,2為人工分單order.setOrderType("1");//保存訂單//order.setOrderNum(UUID.randomUUID().toString());//生成訂單號orderRepository.save(order);//生成工單 發(fā)送短信generateWorkBill(order);return;}}}}for(SubArea subArea : persistArea.getSubareas()){//當(dāng)前客戶的下單地址是否包含分區(qū)輔助關(guān)鍵字if(order.getSendAddress().contains(subArea.getAssistKeyWords())){//找到分區(qū),找到定區(qū),找到快遞員Iterator<Courier> iterator = subArea.getFixedArea().getCouriers().iterator();if(iterator.hasNext()){Courier courier = iterator.next();if(courier!=null){//自動分單成功System.out.println("自動分單成功...");//將快遞員關(guān)聯(lián)到訂單上order.setCourier(courier);//設(shè)置分單類型為自動分單,1為自動分單,2為人工分單order.setOrderType("1");//保存訂單//order.setOrderNum(UUID.randomUUID().toString());//生成訂單號orderRepository.save(order);//生成工單 發(fā)送短信generateWorkBill(order);return;}}}}//上述自動分單的情況都不是,將進(jìn)行人工分單order.setOrderType("2");//設(shè)置分單類型為人工分單orderRepository.save(order); } //抽取的方法:生成工單 發(fā)送短信 private void generateWorkBill(Order order){//生成工單WorkBill workBill = new WorkBill();workBill.setType("新");workBill.setPickstate("新單");//取件狀態(tài)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);//發(fā)送短信//調(diào)用MQ服務(wù) 發(fā)送一條消息給快遞員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()+",聯(lián)系人:"+order.getSendName()+",手機(jī):"+order.getSendMobile()+",快遞員捎話:"+order.getSendMobileMsg());return mapMessage;}});//修改工單狀態(tài)workBill.setPickstate("已通知"); }}
總結(jié)
以上是生活随笔為你收集整理的【客户下单】后台系统自动分单成功生成工单发送短信的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【客户下单】后台系统匹配分区关键字实现自
- 下一篇: Hadoop分布式文件系统hdfs的sh