lmw
2024-09-04 f4a6d4f0996238f9c85e4986deffe69a1c8256e6
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();
            }
        }
    };
}