From f4a6d4f0996238f9c85e4986deffe69a1c8256e6 Mon Sep 17 00:00:00 2001
From: lmw <125975490@qq.com>
Date: 星期三, 04 九月 2024 20:47:58 +0800
Subject: [PATCH] 员工流程

---
 app/src/main/java/com/lotaai/canguiayw/SelectFragment.java |  281 +++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 245 insertions(+), 36 deletions(-)

diff --git a/app/src/main/java/com/lotaai/canguiayw/SelectFragment.java b/app/src/main/java/com/lotaai/canguiayw/SelectFragment.java
index 21f4e75..4bbfaff 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,37 +9,79 @@
 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;
 
+import com.alibaba.fastjson.JSONObject;
 import com.bin.david.form.core.SmartTable;
+import com.bin.david.form.core.TableConfig;
+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;
 import com.bin.david.form.data.style.FontStyle;
 import com.bin.david.form.data.table.TableData;
+import com.blankj.utilcode.util.DeviceUtils;
+import com.blankj.utilcode.util.LogUtils;
 import com.blankj.utilcode.util.ScreenUtils;
+import com.lotaai.canguiayw.common.HttpLoggerInterceptor;
+import com.lotaai.canguiayw.common.HttpUrlDefine;
 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 com.pranavpandey.android.dynamic.toasts.DynamicToast;
 
 import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+import okhttp3.Call;
+import okhttp3.Callback;
+import okhttp3.FormBody;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.RequestBody;
+import okhttp3.Response;
 
 public class SelectFragment extends Fragment {
 
     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);
     }
 
@@ -48,44 +91,115 @@
     }
 
     @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);
+                    SqlliteDbManage.getInstance().deltetOrders(currentOrder.getOrderNo());
+                    // mHandler.sendEmptyMessage(1);
+                    initTableView();
+                    if (currentOrder.getGridNo() != null && !"".equals(currentOrder.getGridNo())) {
+                        SqlliteDbManage.getInstance().updateGridByStr(currentOrder.getGridNo(), 0);
+                        adminTakeOut(currentOrder.getOrderId());
+                    }
+                    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");
-        gridNo.setAutoCount(true);
-        Column<String> orderNo = new Column<>("订单号", "orderNo");
-        Column<String> putIntime = new Column<>("放入时间", "putInDate");
-        Column<String> takeCode = new Column<>("操作", "takeCode");
 
-        List<Order> lists = new ArrayList<>();
-        for (int i = 0;i < 3; i++) {
-            Order order = new Order();
-            order.setGridNo(Integer.toString(i));
-            order.setOrderNo("G202305016001-"+Integer.toString(i));
-            Date dd = new Date();
-            order.setPutInDate(dd.getTime());
-            order.setState(0);
-            order.setTakeCode("56897");
-            lists.add(order);
+    public void adminTakeOut(String orderId) {
+        HttpLoggerInterceptor loggingInterceptor = new HttpLoggerInterceptor(true);
+        OkHttpClient client = new OkHttpClient.Builder()
+                .connectTimeout(20, TimeUnit.SECONDS)//响应时间,读取时间
+                .readTimeout(20, TimeUnit.SECONDS)
+                .callTimeout(20, TimeUnit.SECONDS)
+                .addInterceptor(loggingInterceptor)//添加日志拦截器
+                .build();
+
+        LogUtils.i("取出",DeviceUtils.getUniqueDeviceId(),orderId);
+        RequestBody body = new FormBody.Builder()
+                .add("equipmentUid", DeviceUtils.getUniqueDeviceId())
+                .add("orderId", orderId).build();
+        final Request request = new Request.Builder()
+                .url(HttpUrlDefine.equipmentAndminTakeOut)
+                .addHeader("language", "zh-CN")
+                .post(body)
+                .build();
+        client.newCall(request).enqueue(new Callback() {
+            @Override
+            public void onFailure(Call call, IOException e) {
+                Message msg = new Message();
+                msg.what = 0;
+                msg.obj = "取餐失败!";
+                showHandler.sendMessage(msg);
+            }
+
+            @Override
+            public void onResponse(Call call, Response response) throws IOException {
+                String result = response.body().string();
+                LogUtils.i("获取到的数据:" + result);
+                JSONObject obj = JSONObject.parseObject(result);
+                if ("0".equals(obj.getString("code"))) {
+
+                } else {
+                    String string = obj.getString("msg");
+                    Message msg = new Message();
+                    msg.what = 0;
+                    msg.obj = "取餐同步失败:" + string;
+                    showHandler.sendMessage(msg);
+                }
+            }
+        });
+    }
+
+    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);
         }
-
-        TableData<Order> tableData = new TableData<Order>("测试表格名字",lists,gridNo, orderNo, putIntime, takeCode);
         //设置数据
         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
@@ -102,25 +216,120 @@
 
         // 设置表格主标题
         setTable.setTableData(tableData);
-
-        addHandler.sendEmptyMessageDelayed(0,10*1000);
+        clickDetail();
     }
 
-    private Handler addHandler = new Handler() {
+    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, 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 != row) {
+                                paint.setColor(Color.GRAY);
+                            } else {
+                                paint.setColor(getResources().getColor(R.color.cheng));
+                            }
+                            canvas.drawRect(rect, paint);
+                            mHandler.sendEmptyMessageDelayed(1, 200);
+                        }
+
+                        @Override
+                        public int getTextColor(CellInfo cellInfo) {
+                            return 0;
+                        }
+                    });
+                }
+            });
+        }
+    }
+
+    private final Handler mHandler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
-            List<Order> lists = new ArrayList<>();
-            for (int i = 9;i < 13; i++) {
-                Order order = new Order();
-                order.setGridNo(Integer.toString(i));
-                order.setOrderNo("G202305016001-"+Integer.toString(i));
-                Date dd = new Date();
-                order.setPutInDate(dd.getTime());
-                order.setState(0);
-                order.setTakeCode("56897");
-                lists.add(order);
+            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));
             }
-            setTable.addData(lists,true);
+        };
+        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);
+        }
+    }
+
+    private Handler showHandler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            if (msg.what == 0) {
+                DynamicToast.makeError(context, msg.obj.toString(), 3).show();
+            } else if (msg.what == 1) {
+                DynamicToast.makeSuccess(context, msg.obj.toString(), 3).show();
+            } else {
+                DynamicToast.makeWarning(context, msg.obj.toString(), 3).show();
+            }
         }
     };
 }

--
Gitblit v1.7.1