package com.serein.view;
import com.serein.domain.*;
import com.serein.service.BillService;
import com.serein.service.DiningTableService;
import com.serein.service.EmployeeService;
import com.serein.service.MenuService;
import com.serein.utils.Utility;
import java.util.List;
public class MHLView {
private boolean loop = true;//loop控制循环是否结束
private String key = "";
//以下创建对象,以便调用service的方法完成业务逻辑处理,体现了面向对象编程思想
private EmployeeService employeeService = new EmployeeService();
private DiningTableService diningTableService = new DiningTableService();
private MenuService menuService = new MenuService();
private BillService billService = new BillService();
//主方法,启动页面
public static void main(String[] args) {
new MHLView().mainMenu();
}
//结账服务
public void payBill(){
System.out.println("==========结账服务===========");
System.out.print("请选择要结账的餐桌编号(-1退出):");
int diningTableId = Utility.readInt();
if (diningTableId == -1){
System.out.println("==========取消结账===========");
return;
}
//根据餐桌号判断要结账的餐桌号是否存在
DiningTable diningTable = diningTableService.getDiningTableById(diningTableId);
if (diningTable == null){
System.out.println("==========结账的餐桌号不存在===========");
return;
}
//判断该餐桌上有没有没结账的菜品
if (!billService.hasPayBillByDiningTableId(diningTableId)){
System.out.println("==========该餐位没有未结账的账单===========");
return;
}
System.out.print("支付方式(支付宝/微信/现金)(回车退出):");
String payMode = Utility.readString(20, "");
//防止误操作,再给用户一次取消的机会
if ("".equals(payMode)){
System.out.println("==========取消结账===========");
return;
}
char key = Utility.readConfirmSelection();
if (key == 'Y'){
if (billService.payBill(diningTableId,payMode)){
System.out.println("==========完成结账===========");
}else {
System.out.println("==========结账失败===========");
}
}else {
System.out.println("==========取消结账===========");
}
}
//查看菜单
public void listBill(){
// List<Bill> bills = billService.list();
// System.out.println("\n编号\t\t菜品号\t\t菜品量\t\t金额\t\t桌号\t\t日期\t\t\t\t\t\t\t状态");
// for (Bill bill : bills) {
// System.out.println(bill);
// }
// System.out.println("=======显示完毕=======");
List<MultiTableBean> multiTableBeans = billService.list2();
System.out.println("\n编号\t\t菜品号\t\t菜品量\t\t金额\t\t桌号\t\t日期\t\t\t\t\t\t\t状态\t\t菜品名");
for (MultiTableBean bill : multiTableBeans) {
System.out.println(bill);
}
System.out.println("=======显示完毕=======");
}
//点餐
public void orderMenu(){
System.out.println("==========点餐服务===========");
System.out.print("请输入点餐的桌号(-1退出):");
int orderDiningTableId = Utility.readInt();
if (orderDiningTableId == -1){
System.out.println("==========取消点餐===========");
return;
}
System.out.print("请输入点餐的菜品号(-1退出):");
int orderMenuId = Utility.readInt();
if (orderMenuId == -1){
System.out.println("==========取消点餐===========");
return;
}
System.out.print("请输入点餐的菜品量(-1退出):");
int orderNums = Utility.readInt();
if (orderNums == -1){
System.out.println("==========取消点餐===========");
return;
}
//判断餐桌号是否存在
DiningTable diningTable = diningTableService.getDiningTableById(orderDiningTableId);
if (diningTable == null){
System.out.println("==========餐桌号不存在===========");
return;
}
//判断有没有这个菜
Menu menu = menuService.getMenuById(orderMenuId);
if (menu == null){
System.out.println("==========该菜品编号不存在===========");
return;
}
//调用点餐的方法,并完成该方法后,会返回一个boolean值。
if (billService.orderMenu(orderMenuId,orderNums,orderDiningTableId)){
System.out.println("==========点餐成功===========");
}else {
System.out.println("==========点餐失败===========");
}
}
//显示菜品
public void listMenu(){
List<Menu> list = menuService.list();
System.out.println("\n菜品编号\t\t菜品名\t\t菜品类别\t\t价格");
for (Menu menu : list) {
System.out.println(menu);
}
System.out.println("======显示菜品完毕======");
}
//订座
public void orderDiningTable(){
System.out.println("===========预定餐桌=============");
System.out.println("请输入要预定的餐桌编号(-1退出):");
int orderId = Utility.readInt();
if (orderId == -1){
System.out.println("===========取消预定=============");
return;
}
char key = Utility.readConfirmSelection();
if (key == 'Y'){
DiningTable diningTable = diningTableService.getDiningTableById(orderId);
if (diningTable == null){
System.out.println("===========预定餐桌不存在=============");
return;
}
if (!("空".equals(diningTable.getState()))){
System.out.println("===========预定餐桌已预订或正在就餐中=============");
return;
}
System.out.print("预订人的名字:");
String orderName = Utility.readString(50);
System.out.print("预订人的电话号码:");
String orderTel = Utility.readString(50);
//订座会调用专门的方法,该方法执行完后会返回一个boolean值
if (diningTableService.orderDiningTable(orderId,orderName,orderTel)){
System.out.println("===========预定餐桌成功=============");
}else {
System.out.println("===========预定餐桌失败=============");
}
}else {
System.out.println("===========取消预定=============");
}
}
//显示所有餐桌的状态,据此知道哪些是空桌
public void listDiningTable(){
List<DiningTable> list = diningTableService.list();
System.out.println("\n餐桌编号\t\t餐桌状态");
for (DiningTable diningTable : list) {
System.out.println(diningTable);
}
System.out.println("======显示完毕=======");
}
public void mainMenu(){
while (loop){
System.out.println("================满汉楼==================");
System.out.println("\t\t 1 登录满汉楼");
System.out.println("\t\t 2 退出满汉楼");
System.out.print("请输入你的选择:");
key = Utility.readString(1);
switch (key){
case "1":
System.out.print("请输入员工工号:");
String empId = Utility