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