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