From d5f837a50f9874e4d08d786bfaeaed23dc7fe745 Mon Sep 17 00:00:00 2001
From: 陈力 <chenli@lotaai.com>
Date: 星期三, 14 六月 2023 15:32:44 +0800
Subject: [PATCH] 存餐、取餐、管理员取出

---
 app/src/main/java/com/lotaai/canguiayw/sqllitedb/SqlliteDbManage.java |   32 ++++++++++
 app/src/main/java/com/lotaai/canguiayw/SelectFragment.java            |   93 ++++++++++++++++++++++++++++--
 app/src/main/java/com/lotaai/canguiayw/common/HttpUrlDefine.java      |    1 
 app/src/main/java/com/lotaai/canguiayw/TakeActivity.java              |   12 +++
 app/src/main/java/com/lotaai/canguiayw/CunCanFragment.java            |   24 +++++++
 app/src/main/java/com/lotaai/canguiayw/mqtt/MyMQTTService.java        |    6 ++
 6 files changed, 156 insertions(+), 12 deletions(-)

diff --git a/app/src/main/java/com/lotaai/canguiayw/CunCanFragment.java b/app/src/main/java/com/lotaai/canguiayw/CunCanFragment.java
index e99d597..7f48b0e 100644
--- a/app/src/main/java/com/lotaai/canguiayw/CunCanFragment.java
+++ b/app/src/main/java/com/lotaai/canguiayw/CunCanFragment.java
@@ -6,6 +6,7 @@
 import android.graphics.Paint;
 import android.graphics.Rect;
 import android.os.Bundle;
+import android.os.Handler;
 import android.os.Message;
 import android.text.Editable;
 import android.text.InputType;
@@ -249,7 +250,10 @@
         client.newCall(request).enqueue(new Callback() {
             @Override
             public void onFailure(Call call, IOException e) {
-                DynamicToast.makeError(context, "存餐同步失败!", 3).show();
+               Message message = new Message();
+               message.what = 0;
+               message.obj = "存餐同步失败!";
+               showHandler.sendMessage(message);
             }
 
             @Override
@@ -261,9 +265,25 @@
 
                 } else {
                     String string = obj.getString("msg");
-                    DynamicToast.makeError(context, "存餐同步失败:" + string, 3).show();
+                    Message message = new Message();
+                    message.what = 0;
+                    message.obj = "存餐失败:" +string;
+                    showHandler.sendMessage(message);
                 }
             }
         });
     }
+
+    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();
+            }
+        }
+    };
 }
diff --git a/app/src/main/java/com/lotaai/canguiayw/SelectFragment.java b/app/src/main/java/com/lotaai/canguiayw/SelectFragment.java
index 8deb164..4bbfaff 100644
--- a/app/src/main/java/com/lotaai/canguiayw/SelectFragment.java
+++ b/app/src/main/java/com/lotaai/canguiayw/SelectFragment.java
@@ -19,6 +19,7 @@
 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;
@@ -30,8 +31,11 @@
 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;
@@ -39,14 +43,25 @@
 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 {
 
@@ -98,17 +113,21 @@
             @Override
             public void onClick(View view) {
                 //将格子释放  //将订单的格子号改为空
-                if (currentOrder!=null && !"".equals(currentOrder.getGridNo())) {
+                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);
+//                    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 {
+                } else {
                     LogUtils.i("没有订单");
                 }
                 if (detailTable != null) {
@@ -120,12 +139,58 @@
         return root;
     }
 
+
+    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 {
+        } else {
             tableData = new TableData<Order>("", new ArrayList<Order>(), gridNo, orderNo, putIntime, xuhao);
         }
         //设置数据
@@ -230,9 +295,8 @@
                 String orderNo = mssage.getMsgString();
                 //首先要判断订单里面是否已经有了
                 boolean isFind = false;
-                if (setTable.getTableData()!=null) {
+                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);
@@ -255,4 +319,17 @@
             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();
+            }
+        }
+    };
 }
diff --git a/app/src/main/java/com/lotaai/canguiayw/TakeActivity.java b/app/src/main/java/com/lotaai/canguiayw/TakeActivity.java
index a0c56b2..8dfae03 100644
--- a/app/src/main/java/com/lotaai/canguiayw/TakeActivity.java
+++ b/app/src/main/java/com/lotaai/canguiayw/TakeActivity.java
@@ -71,14 +71,16 @@
                     // 调用后台
                     String gridNo = editable.toString();
                     if (null == gridNo || "".equals(gridNo.trim())) {
-                        Toast.makeText(context, "取餐码不能为空。", Toast.LENGTH_SHORT).show();
+                        DynamicToast.makeError(context, "取餐码不能为空。", 3).show();
                         return;
                     } else {
                         if (gridNo.length() !=6) {
-                            Toast.makeText(context, "取餐码输入错误,请重试。", Toast.LENGTH_SHORT).show();
+                            editText.setText("");
+                            DynamicToast.makeError(context, "取餐码输入错误,请重试。", 3).show();
                             return;
                         }
                         //调用判断是否可以取餐
+                        editText.setText("");
                         takeCheckCode(gridNo);
                     }
                 } else {
@@ -159,10 +161,16 @@
                     json.put(DeviceAction.jiareIsOpen.name(), "0");
                     json.put(DeviceAction.dengGuangIsOpen.name(), "0");
                     json.put("gridNo", g);
+                    json.put("qucan","1");
                     DeviceMessage deviceMessage = new DeviceMessage();
                     deviceMessage.setMessageType(MessageType.MQTT.ordinal());
                     deviceMessage.setMsgString(json.toJSONString());
                     EventBus.getDefault().post(deviceMessage);
+                    String string = obj.getString("msg");
+                    Message msg = new Message();
+                    msg.what = 1;
+                    msg.obj = "取餐格口:" + g;
+                    showHandler.sendMessage(msg);
                 } else {
                     String string = obj.getString("msg");
                     Message msg = new Message();
diff --git a/app/src/main/java/com/lotaai/canguiayw/common/HttpUrlDefine.java b/app/src/main/java/com/lotaai/canguiayw/common/HttpUrlDefine.java
index 4af522c..933b815 100644
--- a/app/src/main/java/com/lotaai/canguiayw/common/HttpUrlDefine.java
+++ b/app/src/main/java/com/lotaai/canguiayw/common/HttpUrlDefine.java
@@ -7,4 +7,5 @@
     public static String  equipmentLogin = rootHost + "/lotaai-api/api/eq/equipmentLogin";
     public static String  equipmentCunCan = rootHost + "/lotaai-api/api/eq/putInFood";
     public static String  equipmentTakeOut = rootHost + "/lotaai-api/api/eq/takeFood";
+    public static String  equipmentAndminTakeOut = rootHost + "/lotaai-api/api/eq/takeOut";
 }
diff --git a/app/src/main/java/com/lotaai/canguiayw/mqtt/MyMQTTService.java b/app/src/main/java/com/lotaai/canguiayw/mqtt/MyMQTTService.java
index 65da2ac..4d8c0b2 100644
--- a/app/src/main/java/com/lotaai/canguiayw/mqtt/MyMQTTService.java
+++ b/app/src/main/java/com/lotaai/canguiayw/mqtt/MyMQTTService.java
@@ -273,6 +273,12 @@
                     dvmessage.setDeviceType(DeviceType.CANGUI.ordinal());
                     dvmessage.setMessageByte(command);
                     EventBus.getDefault().post(dvmessage);
+                    //判断是否是取餐的,如果是取餐的,需要将这个订单从本地删除掉
+                    String qucan = json.getString("qucan");
+                    if (qucan!=null && "1".equals(qucan)){
+                        SqlliteDbManage.getInstance().deleteFromOrderByGridNo(grid);
+                        SqlliteDbManage.getInstance().updateGridByStr(grid,0);
+                    }
                 }
             }
         }
diff --git a/app/src/main/java/com/lotaai/canguiayw/sqllitedb/SqlliteDbManage.java b/app/src/main/java/com/lotaai/canguiayw/sqllitedb/SqlliteDbManage.java
index bb414a6..904058d 100644
--- a/app/src/main/java/com/lotaai/canguiayw/sqllitedb/SqlliteDbManage.java
+++ b/app/src/main/java/com/lotaai/canguiayw/sqllitedb/SqlliteDbManage.java
@@ -37,6 +37,21 @@
         daoSession.insertOrReplace(model);
     }
 
+    public void deleteFromOrderByGridNo(String gridNo){
+        DaoSession daoSession = getDaoSession();
+        QueryBuilder<Order> qb = daoSession.queryBuilder(Order.class);
+        QueryBuilder<Order> queryBuilder
+                = qb.where(OrderDao.Properties.GridNo.eq(gridNo)).orderAsc(OrderDao.Properties.TakeCode);
+
+        List<Order> ordersList = queryBuilder.list();
+        if (ordersList!=null && ordersList.size()>0){
+            for (int i = 0; i < ordersList.size(); i++){
+                Order order = ordersList.get(i);
+                daoSession.delete(order);
+            }
+        }
+    }
+
     /**
      * 添加订单明细信息信息
      *
@@ -225,6 +240,23 @@
         return gridModels;
     }
 
+    public void updateGridByStr(String gridNo,int state){
+        CrontrolGridModel model = new CrontrolGridModel();
+        model.ChangeGrid(gridNo);
+        DaoSession daoSession = getDaoSession();
+        QueryBuilder<GridModel> qb = daoSession.queryBuilder(GridModel.class);
+        QueryBuilder<GridModel> queryBuilder
+                = qb.where(GridModelDao.Properties.GridNo.eq(model.getGridNo()),GridModelDao.Properties.GuiHao.eq(model.getGuiNo())).orderAsc(GridModelDao.Properties.GuiHao);
+        List<GridModel> gridModels = queryBuilder.list();
+        if (gridModels != null || gridModels.size() > 0) {
+             for (int i = 0; i < gridModels.size();i++){
+                 GridModel mm = gridModels.get(i);
+                 mm.setState(state);
+                 daoSession.update(mm);
+             }
+        }
+    }
+
     public GridModel  selectFreeGrid(){
         DaoSession daoSession = getDaoSession();
         QueryBuilder<GridModel> qb = daoSession.queryBuilder(GridModel.class);

--
Gitblit v1.7.1