From cca5f79b3af36e5a908c5dfecbd30110febe3baa Mon Sep 17 00:00:00 2001 From: 陈力 <chenli@lotaai.com> Date: 星期五, 09 六月 2023 20:58:09 +0800 Subject: [PATCH] 增加mqtt --- app/src/main/java/com/lotaai/canguiayw/SelectFragment.java | 173 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 150 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/com/lotaai/canguiayw/SelectFragment.java b/app/src/main/java/com/lotaai/canguiayw/SelectFragment.java index 0076292..8deb164 100644 --- a/app/src/main/java/com/lotaai/canguiayw/SelectFragment.java +++ b/app/src/main/java/com/lotaai/canguiayw/SelectFragment.java @@ -1,5 +1,6 @@ package com.lotaai.canguiayw; +import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; @@ -8,9 +9,12 @@ import android.os.Bundle; import android.os.Handler; import android.os.Message; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Button; +import android.widget.ViewSwitcher; import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; @@ -20,6 +24,7 @@ import com.bin.david.form.data.CellInfo; import com.bin.david.form.data.column.Column; import com.bin.david.form.data.format.IFormat; +import com.bin.david.form.data.format.bg.BaseCellBackgroundFormat; import com.bin.david.form.data.format.bg.IBackgroundFormat; import com.bin.david.form.data.format.bg.ICellBackgroundFormat; import com.bin.david.form.data.format.selected.ISelectFormat; @@ -28,10 +33,16 @@ import com.blankj.utilcode.util.LogUtils; import com.blankj.utilcode.util.ScreenUtils; import com.lotaai.canguiayw.common.SettingConfig; +import com.lotaai.canguiayw.device.DeviceMessage; +import com.lotaai.canguiayw.device.MessageType; +import com.lotaai.canguiayw.sqllitedb.GridModel; import com.lotaai.canguiayw.sqllitedb.Order; +import com.lotaai.canguiayw.sqllitedb.OrderDetail; import com.lotaai.canguiayw.sqllitedb.SqlliteDbManage; import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; import java.util.ArrayList; import java.util.Date; @@ -42,9 +53,20 @@ private View root; private Context context; private SmartTable setTable; + private SmartTable detailTable; + private ViewSwitcher bottomDetail; + private Button closeBtn; + private Button takeOutBtn; + private Order currentOrder; + + Column<String> gridNo = new Column<>("格子", "gridNo"); + Column<String> orderNo = new Column<>("订单号", "orderNo"); + Column<String> putIntime = new Column<>("放入时间", "putInDate"); + Column<String> xuhao = new Column<>("序号", "xuHao"); @Override public void onCreate(Bundle savedInstanceState) { + EventBus.getDefault().register(this); super.onCreate(savedInstanceState); } @@ -54,33 +76,65 @@ } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, + public View onCreateView(LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) { if (root == null) { root = inflater.inflate(R.layout.framgment_selectorder, container, false); } context = container.getContext(); + bottomDetail = root.findViewById(R.id.bottom_detail); + detailTable = root.findViewById(R.id.detailtable); + closeBtn = root.findViewById(R.id.closeDetail); + takeOutBtn = root.findViewById(R.id.takeOut); + closeBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (detailTable != null) { + bottomDetail.setVisibility(View.GONE); + } + } + }); + takeOutBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //将格子释放 //将订单的格子号改为空 + if (currentOrder!=null && !"".equals(currentOrder.getGridNo())) { + GridModel model = SqlliteDbManage.getInstance().selectGridByGridNoStr(currentOrder.getGridNo()); + model.setState(0); + SqlliteDbManage.getInstance().addGrid(model); + currentOrder.setState(3); + SqlliteDbManage.getInstance().insertOrderInfo(currentOrder); + // mHandler.sendEmptyMessage(1); + initTableView(); + + LogUtils.i("订单:" + currentOrder.getOrderNo()); + }else { + LogUtils.i("没有订单"); + } + if (detailTable != null) { + bottomDetail.setVisibility(View.GONE); + } + } + }); initTableView(); return root; } - public void initTableView(){ - Column<String> gridNo = new Column<>("格子", "gridNo"); - Column<String> orderNo = new Column<>("订单号", "orderNo"); - Column<String> putIntime = new Column<>("放入时间", "putInDate"); - Column<String> takeCode = new Column<>("取餐码", "takeCode"); - - List<Order> lists = SqlliteDbManage.getInstance().selectOrtdersByState(0); - - TableData<Order> tableData = new TableData<Order>("测试表格名字",lists,gridNo, orderNo, putIntime, takeCode); + public void initTableView() { + List<Order> lists = SqlliteDbManage.getInstance().selectOrtdersInGui(); + TableData<Order> tableData = null; + if (lists != null) { + tableData = new TableData<Order>("", lists, gridNo, orderNo, putIntime, xuhao); + }else { + tableData = new TableData<Order>("", new ArrayList<Order>(), gridNo, orderNo, putIntime, xuhao); + } //设置数据 setTable = root.findViewById(R.id.table); setTable.getConfig().setShowTableTitle(false); // // 设置表格标题名称文字样式 -// setTable.getConfig().setTableTitleStyle(new FontStyle(30, Color.GREEN)); - setTable.getConfig().setMinTableWidth(ScreenUtils.getScreenWidth()-20); + setTable.getConfig().setMinTableWidth(ScreenUtils.getScreenWidth() - 20); // 设置表格标题文字样式 - setTable.getConfig().setColumnTitleStyle(new FontStyle(30,Color.WHITE)); + setTable.getConfig().setColumnTitleStyle(new FontStyle(30, Color.WHITE)); IBackgroundFormat backgroundFormat = new IBackgroundFormat() { @Override @@ -100,23 +154,24 @@ clickDetail(); } - public void clickDetail(){ - if (setTable!=null){ + public void clickDetail() { + if (setTable != null && setTable.getTableData() != null) { setTable.getTableData().setOnRowClickListener(new TableData.OnRowClickListener() { @Override - public void onClick(Column column, Object o, int col, int row) { - LogUtils.i("click row " + row); - final int rr = row; + public void onClick(Column column, Object o, int col, final int row) { + currentOrder = (Order) setTable.getTableData().getT().get(row); + showDetailTable(currentOrder); + LogUtils.i("click row:" + row + " col:" + col); setTable.getConfig().setContentCellBackgroundFormat(new ICellBackgroundFormat<CellInfo>() { @Override public void drawBackground(Canvas canvas, Rect rect, CellInfo cellInfo, Paint paint) { - if(cellInfo.row!=rr){ + if (cellInfo.row != row) { paint.setColor(Color.GRAY); + } else { + paint.setColor(getResources().getColor(R.color.cheng)); } - else{ - paint.setColor(Color.BLUE); - } - canvas.drawRect(rect,paint); + canvas.drawRect(rect, paint); + mHandler.sendEmptyMessageDelayed(1, 200); } @Override @@ -128,4 +183,76 @@ }); } } + + private final Handler mHandler = new Handler() { + @Override + public void handleMessage(Message msg) { + mHandler.removeMessages(1); + setTable.notifyDataChanged(); + super.handleMessage(msg); + } + }; + + + public void showDetailTable(Order order) { + bottomDetail.setVisibility(View.VISIBLE); + Column<String> itemName = new Column<>("餐品", "itemName"); + Column<Integer> num = new Column<>("数量", "num"); + + List<OrderDetail> lists = SqlliteDbManage.getInstance().selectOrtderDetails(order.getOrderNo()); + TableData<OrderDetail> detailTableData = new TableData<OrderDetail>("", lists, itemName, num); + detailTable.getConfig().setShowTableTitle(false); +// // 设置表格标题名称文字样式 +// setTable.getConfig().setTableTitleStyle(new FontStyle(30, Color.GREEN)); + detailTable.getConfig().setMinTableWidth(750); + // 设置表格标题文字样式 + detailTable.getConfig().setColumnTitleStyle(new FontStyle(30, Color.WHITE)); + IBackgroundFormat backgroundFormat = new IBackgroundFormat() { + @Override + public void drawBackground(Canvas canvas, Rect rect, Paint paint) { + canvas.drawColor(getResources().getColor(R.color.DarkGray)); + } + }; + detailTable.getConfig().setColumnTitleBackground(backgroundFormat); + // 设置表格主体内容文字样式 + detailTable.getConfig().setContentStyle(new FontStyle(30, Color.WHITE)); + detailTable.getConfig().setShowXSequence(false); //去掉表格顶部字母 + detailTable.getConfig().setShowYSequence(false); //去掉左侧数字 + // 设置表格主标题 + detailTable.setTableData(detailTableData); + } + + @Subscribe(threadMode = ThreadMode.ASYNC) + public void recvCommand(DeviceMessage mssage) { + try { + if (mssage.getMessageType() == MessageType.NEWORDER.ordinal()) { + LogUtils.i("有新的订单进来"); + String orderNo = mssage.getMsgString(); + //首先要判断订单里面是否已经有了 + boolean isFind = false; + if (setTable.getTableData()!=null) { + List<Order> oldOrders = setTable.getTableData().getT(); + + if (oldOrders != null && oldOrders.size() > 0) { + for (int p = 0; p < oldOrders.size(); p++) { + Order t = oldOrders.get(p); + if (t.getOrderNo().equals(orderNo)) { + isFind = true; + break; + } + } + } + } + if (isFind == false) { + //查询订单信息 + Order orderInfo = SqlliteDbManage.getInstance().selectOrtder(orderNo); + List<Order> pp = new ArrayList<>(); + pp.add(orderInfo); + setTable.addData(pp, true); + } + } + } catch (Exception e) { + LogUtils.e(e); + } + } } -- Gitblit v1.7.1