給一個(gè)大概思路吧。java實(shí)現(xiàn)??梢陨晕⒖枷隆?pre>packagecom.ui;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.HashMap;importjava.util.HashSet;importjava.util.Iterator;importjava.util.List;importjava.util.Map;importjava.util.Set;publicclassOrderStatusService{/***映射關(guān)系列表*/publicstaticListmapperList=newArrayList();static{/***初始化判斷項(xiàng)、訂單動(dòng)作到狀態(tài)的映射,這里只為演示,實(shí)際中映射關(guān)系最好保存在配置文件中或者數(shù)據(jù)庫(kù)中,一般在應(yīng)用啟動(dòng)的時(shí)候,從配置文件或者數(shù)據(jù)庫(kù)加載,保存一份即可。**/OrderStatusMapperm1=newOrderStatusMapper();m1.addJudgementItems(1,2,4,6)//先吃后付and自動(dòng)接單and有打印機(jī)and打印成功.addAction2statusItem(1,6)//下單動(dòng)作:進(jìn)行中.addAction2statusItem(7,4);//結(jié)賬動(dòng)作:已完成OrderStatusMapperm2=newOrderStatusMapper();m2.addJudgementItems(3,5).addAction2statusItem(2,1).addAction2statusItem(4,3);mapperList.add(m1);mapperList.add(m2);}/***是否是相等的set*@paramsource*@paramdest*@return*/publicbooleanisEqualSet(Setsource,Setdest){if(null==source||null==dest){returnfalse;}if(source.size()!=dest.size()){returnfalse;}for(Iteratorit=source.iterator();it.hasNext();){if(!dest.contains(it.next())){returnfalse;}}returntrue;}publicstaticvoidmain(String[]args){Orderorder=newOrder();order.setOrderAction(1);//下單order.setJudgementItems(newHashSet(Arrays.asList(1,2,4,6)));//先吃后付and自動(dòng)接單and有打印機(jī)and打印成功//獲取訂單下一個(gè)狀態(tài)System.out.println(newOrderStatusService().getNextOrderStatus(order));//結(jié)果為6(進(jìn)行中)}/***獲取下一個(gè)訂單狀態(tài)*@paramcurOrder*@return*/publicIntegergetNextOrderStatus(OrdercurOrder){for(OrderStatusMappermapper:mapperList){if(isEqualSet(curOrder.getJudgementItems(),mapper.getJudgementItems())&&null!=curOrder.getOrderAction()){returnmapper.getAction2statusMap().get(curOrder.getOrderAction());}}returnnull;}}/***訂單類型,訂單動(dòng)作到狀態(tài)的映射。**/classOrderStatusMapper{/***判斷項(xiàng)*/privateSetjudgementItems=newHashSet();/***訂單動(dòng)作到狀態(tài)關(guān)系*/privateMapaction2statusMap=newHashMap();/***下一個(gè)訂單狀態(tài)*/privateIntegernextStatus;publicSetgetJudgementItems(){returnjudgementItems;}publicOrderStatusMapperaddJudgementItems(Integer...items){if(null==items||items.length<=0){returnthis;}for(Integercur:items){this.judgementItems.add(cur);}returnthis;}publicMapgetAction2statusMap(){returnaction2statusMap;}publicOrderStatusMapperaddAction2statusItem(Integeraction,Integerstatus){if(null==action||null==status){returnthis;}this.action2statusMap.put(action,status);returnthis;}publicIntegergetNextStatus(){returnnextStatus;}publicOrderStatusMappersetNextStatus(IntegernextStatus){this.nextStatus=nextStatus;returnthis;}}classOrder{/***判斷項(xiàng)目*1:商家開(kāi)啟先食后付;*2:自動(dòng)接單;*3:不自動(dòng)接單*4:有打印機(jī)*5:沒(méi)有打印機(jī)*6:打印成功*7:打印不成功*8:自動(dòng)清臺(tái)*9:不自動(dòng)清臺(tái)*/privateSetjudgementItems;/***訂單動(dòng)作*1:下單*2:接單*3:拒單*4:顧客取消單*5:顧客支付*6:清臺(tái)*7:結(jié)賬*/privateIntegerorderAction;/***訂單狀態(tài)*1:待確認(rèn)*2:待處理*3:拒絕*4:完成*5:取消*6:進(jìn)行中*7:超時(shí)*8:申請(qǐng)退款*/privateIntegerorderStatus;publicSetgetJudgementItems(){returnjudgementItems;}publicvoidsetJudgementItems(SetjudgementItems){this.judgementItems=judgementItems;}publicIntegergetOrderAction(){returnorderAction;}publicvoidsetOrderAction(IntegerorderAction){this.orderAction=orderAction;}publicIntegergetOrderStatus(){returnorderStatus;}publicvoidsetOrderStatus(IntegerorderStatus){this.orderStatus=orderStatus;}}