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/res/layout/item_box_new.xml                             |   26 +
 app/src/main/AndroidManifest.xml                                     |    1 
 app/src/main/java/com/lotaai/canguiayw/StartSaveActivity.java        |   84 ++-
 app/src/main/java/com/lotaai/canguiayw/CunOjbActivity.java           |   20 +
 app/src/main/java/com/lotaai/canguiayw/TakeActivity.java             |   77 ---
 app/src/main/java/com/lotaai/canguiayw/LoginActivity.java            |    9 
 app/src/main/res/layout/framgment_opendoor.xml                       |   20 
 app/release/cangui-1.0-2024-09-04.apk                                |    0 
 app/src/main/java/com/lotaai/canguiayw/view/TipDialog.java           |   28 +
 app/cangui.jks                                                       |    0 
 app/release/output.json                                              |    2 
 app/src/main/java/com/lotaai/canguiayw/common/HttpUrlDefine.java     |    6 
 app/src/main/res/layout/item_code.xml                                |   23 +
 app/src/main/java/com/lotaai/canguiayw/PickCodeListActivity.java     |  114 ++++++
 app/src/main/java/com/lotaai/canguiayw/view/GridTableAdapterNew.java |   76 ++++
 app/src/main/res/drawable/bg_oragne_line_6.xml                       |    6 
 app/src/main/res/layout/activity_code_list.xml                       |   39 ++
 app/src/main/java/com/lotaai/canguiayw/OpenDoorFragment.java         |  101 +++++
 app/src/main/res/drawable/bg_box.xml                                 |    6 
 app/build.gradle                                                     |   39 ++
 app/src/main/res/layout/activity_startsave.xml                       |  377 +++++++++++---------
 21 files changed, 769 insertions(+), 285 deletions(-)

diff --git a/app/build.gradle b/app/build.gradle
index cf39fb2..08c49ad 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,20 +1,55 @@
 apply plugin: 'com.android.application'
 
 android {
-    compileSdkVersion 32
+    compileSdkVersion 30
    /* buildToolsVersion "33.0.0"*/
     defaultConfig {
         applicationId "com.lotaai.canguiayw"
         minSdkVersion 22
-        targetSdkVersion 33
+        targetSdkVersion 30
         versionCode 1
         versionName "1.0"
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
     }
+
+    //签名
+    signingConfigs {
+        release {
+            storeFile file("cangui.jks")
+            storePassword "sinata"
+            keyAlias "cangui"
+            keyPassword "sinata"
+        }
+    }
+
+    compileOptions {
+        sourceCompatibility JavaVersion.VERSION_1_8
+        targetCompatibility JavaVersion.VERSION_1_8
+    }
+
     buildTypes {
         release {
             minifyEnabled false
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+
+            applicationVariants.all { variant ->
+                // 更新至Android Studio 3.3 gradle 4.10.1
+                variant.outputs.all {
+                    outputFileName = "cangui-${defaultConfig.versionName}-${new Date().format("yyyy-MM-dd" , TimeZone.getTimeZone("GMT+08")) }.apk"
+                }
+            }
+//            ndk {
+//                abiFilters "armeabi-v7a","arm64-v8a" // 保留这种架构的CPU
+//            }
+        }
+
+        debug {
+            minifyEnabled false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+            signingConfig signingConfigs.release
+//            ndk {
+//                abiFilters "armeabi-v7a" ,"arm64-v8a" // 保留这种架构的CPU
+//            }
         }
     }
 
diff --git a/app/cangui.jks b/app/cangui.jks
new file mode 100644
index 0000000..1b8a43c
--- /dev/null
+++ b/app/cangui.jks
Binary files differ
diff --git a/app/release/cangui-1.0-2024-09-04.apk b/app/release/cangui-1.0-2024-09-04.apk
new file mode 100644
index 0000000..f75d26a
--- /dev/null
+++ b/app/release/cangui-1.0-2024-09-04.apk
Binary files differ
diff --git a/app/release/output.json b/app/release/output.json
index 965521f..0e709bc 100644
--- a/app/release/output.json
+++ b/app/release/output.json
@@ -1 +1 @@
-[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":2,"versionName":"1.2","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
\ No newline at end of file
+[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0","enabled":true,"outputFile":"cangui-1.0-2024-09-04.apk","fullName":"release","baseName":"release","dirName":""},"path":"cangui-1.0-2024-09-04.apk","properties":{}}]
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 96635be..356a6dc 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -47,6 +47,7 @@
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
+        <activity android:name=".PickCodeListActivity" />
 
         <service
             android:name=".device.service.CanGuiService"
diff --git a/app/src/main/java/com/lotaai/canguiayw/CunOjbActivity.java b/app/src/main/java/com/lotaai/canguiayw/CunOjbActivity.java
index 37cbda9..9685dcd 100644
--- a/app/src/main/java/com/lotaai/canguiayw/CunOjbActivity.java
+++ b/app/src/main/java/com/lotaai/canguiayw/CunOjbActivity.java
@@ -1,6 +1,5 @@
 package com.lotaai.canguiayw;
 
-import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
@@ -24,6 +23,7 @@
 import com.lotaai.canguiayw.device.CanguiStatus;
 import com.lotaai.canguiayw.device.DeviceMessage;
 import com.lotaai.canguiayw.device.MessageType;
+import com.lotaai.canguiayw.view.TipDialog;
 import com.pranavpandey.android.dynamic.toasts.DynamicToast;
 
 import org.greenrobot.eventbus.EventBus;
@@ -41,11 +41,15 @@
 
 public class CunOjbActivity extends AppCompatActivity {
     OpenDoorFragment openDoorFragment;
+    public String pickupCode;
+    public int isHand;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_cunobj);
+        pickupCode = getIntent().getStringExtra("code");
+        isHand = getIntent().getIntExtra("isHand",0);
         openDoorFragment = new OpenDoorFragment();
         getSupportFragmentManager().beginTransaction().replace(R.id.mframe, openDoorFragment).commitAllowingStateLoss();
     }
@@ -58,4 +62,18 @@
 
     }
 
+
+    public void showResult(String msg){
+        TipDialog tipDialog = new TipDialog();
+        Bundle bundle = new Bundle();
+        bundle.putString("msg",msg);
+        tipDialog.setArguments(bundle);
+        tipDialog.show(getSupportFragmentManager(),"res");
+        tipDialog.callback = new TipDialog.ExitCallback() {
+            @Override
+            public void onExit() {
+                finish();
+            }
+        };
+    }
 }
diff --git a/app/src/main/java/com/lotaai/canguiayw/LoginActivity.java b/app/src/main/java/com/lotaai/canguiayw/LoginActivity.java
index 37f3b53..fd48908 100644
--- a/app/src/main/java/com/lotaai/canguiayw/LoginActivity.java
+++ b/app/src/main/java/com/lotaai/canguiayw/LoginActivity.java
@@ -20,7 +20,6 @@
 import com.lotaai.canguiayw.common.HttpLoggerInterceptor;
 import com.lotaai.canguiayw.common.HttpUrlDefine;
 import com.lotaai.canguiayw.common.SettingConfig;
-import com.lotaai.canguiayw.device.service.CanGuiService;
 import com.pranavpandey.android.dynamic.toasts.DynamicToast;
 
 import java.io.IOException;
@@ -58,7 +57,9 @@
             intent.setClass(LoginActivity.this, TakeActivity.class);
             startActivity(intent);
         }else if (_side.equals("2")){
-
+            Intent intent = new Intent();
+            intent.setClass(LoginActivity.this, StartSaveActivity.class);
+            startActivity(intent);
         }
         LogUtils.i("VERSION.SDK_INT:" + VERSION.SDK_INT);
         context = LoginActivity.this;
@@ -181,7 +182,9 @@
                         intent.setClass(LoginActivity.this, TakeActivity.class);
                         startActivity(intent);
                     }else if (side.equals("2")){
-
+                        Intent intent = new Intent();
+                        intent.setClass(LoginActivity.this, StartSaveActivity.class);
+                        startActivity(intent);
                     }
                 } else {
                     Message msg = new Message();
diff --git a/app/src/main/java/com/lotaai/canguiayw/OpenDoorFragment.java b/app/src/main/java/com/lotaai/canguiayw/OpenDoorFragment.java
index 028d614..6ec4fde 100644
--- a/app/src/main/java/com/lotaai/canguiayw/OpenDoorFragment.java
+++ b/app/src/main/java/com/lotaai/canguiayw/OpenDoorFragment.java
@@ -12,28 +12,46 @@
 import android.widget.AdapterView;
 import android.widget.Button;
 import android.widget.GridView;
+import android.widget.TextView;
 import android.widget.ThemedSpinnerAdapter;
 
 import androidx.fragment.app.Fragment;
 
+import com.blankj.utilcode.util.CacheDiskUtils;
+import com.blankj.utilcode.util.GsonUtils;
 import com.blankj.utilcode.util.LogUtils;
 import com.liys.lswitch.BaseSwitch;
 import com.liys.lswitch.LSwitch;
+import com.lotaai.canguiayw.common.HttpLoggerInterceptor;
+import com.lotaai.canguiayw.common.HttpUrlDefine;
 import com.lotaai.canguiayw.common.SettingConfig;
+import com.lotaai.canguiayw.data.BaseDto;
 import com.lotaai.canguiayw.device.CanGuiCommand;
 import com.lotaai.canguiayw.device.CanguiStatus;
 import com.lotaai.canguiayw.device.DeviceMessage;
 import com.lotaai.canguiayw.device.DeviceType;
 import com.lotaai.canguiayw.device.MessageType;
 import com.lotaai.canguiayw.view.GridTableAdapter;
+import com.lotaai.canguiayw.view.GridTableAdapterNew;
+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.Collections;
 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 OpenDoorFragment extends Fragment {
 
@@ -53,6 +71,7 @@
     private Button fugui003;
     private Button fugui004;
     private Button fugui005;
+    private TextView tv_close;
     private int cureentSelectGui = 0;
     private boolean isCanRun = false;
 
@@ -119,6 +138,7 @@
         fugui003 = root.findViewById(R.id.gui003);
         fugui004 = root.findViewById(R.id.gui004);
         fugui005 = root.findViewById(R.id.gui005);
+        tv_close = root.findViewById(R.id.tv_close);
         for (int g = 0; g < SettingConfig.getInstance().statusList.size(); g++) {
             if (SettingConfig.getInstance().statusList.get(g).getGuiHao() == 0) {
                 if (zhugui.getVisibility() != View.VISIBLE) {
@@ -222,6 +242,13 @@
                 cureentSelectGui = 5;
 
                 initView();
+            }
+        });
+
+        tv_close.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                requireActivity().finish();
             }
         });
     }
@@ -352,15 +379,23 @@
             }
         }
         Collections.sort(gridStatusList);
-        GridTableAdapter adapter = new GridTableAdapter(context, gridStatusList, R.layout.framgment_tablegrid_item);
+        if (gridStatusList.size() == 8){
+            CanguiStatus e = new CanguiStatus();
+            e.setGridNo(-1);
+            gridStatusList.add(4, e);
+        }
+        GridTableAdapterNew adapter = new GridTableAdapterNew(context, gridStatusList, R.layout.item_box_new);
         gridtable = root.findViewById(R.id.gridtable);
         gridtable.setAdapter(adapter);
         gridtable.setOnItemClickListener(new AdapterView.OnItemClickListener() {
             @Override
             public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                 CanguiStatus cangui = gridStatusList.get(i);
-                ((CunOjbActivity) getActivity()).setData(cangui);
-
+                if (cangui.getGridNo()!=-1){
+                    //存餐
+                    takeCheckCode(((CunOjbActivity) getActivity()).pickupCode,0,cangui.getGridNo(),((CunOjbActivity) getActivity()).isHand);
+                }
+//                ((CunOjbActivity) getActivity()).setData(cangui);
                /* View item = gridtable.getChildAt(i).findViewById(R.id.gridLineLayout);
                 if (checkIsSelectedAndOrRemove(cangui,true)) {
                     item.setBackgroundColor(Color.GRAY);
@@ -371,6 +406,66 @@
         });
     }
 
+    public void takeCheckCode(String code, final int guino, final int gridno, int isHand) {
+        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(CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code), code);
+        RequestBody body = new FormBody.Builder()
+                .build();
+
+        final Request request = new Request.Builder()
+                .url(HttpUrlDefine.checkStatus + "?pickNum=" + code + "&boxNum=" + guino + "&cartNum=" + gridno+ "&isHand=" + isHand+ "&sn=" + CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code))
+                /*  .addHeader("language", "zh-CN")*/
+                .post(body)
+                .build();
+        client.newCall(request).enqueue(new Callback() {
+            @Override
+            public void onFailure(Call call, IOException e) {
+                requireActivity().runOnUiThread(new Runnable() {
+                    @Override
+                    public void run() {
+                        DynamicToast.makeError(context, "Request error!", 3).show();
+                    }
+                });
+
+            }
+
+            @Override
+            public void onResponse(Call call, Response response) throws IOException {
+                String result = response.body().string();
+                LogUtils.i("获取到的数据:" + result);
+                final BaseDto baseDto = GsonUtils.fromJson(result, BaseDto.class);
+                requireActivity().runOnUiThread(new Runnable() {
+                    @Override
+                    public void run() {
+                        if (baseDto.getCode() == 200) {
+                           byte[] command = CanGuiCommand.getInstance().controlGridCommand(guino,
+                                    gridno, 1, 255, 0, 0, 0, 0);
+                            DeviceMessage message = new DeviceMessage();
+                            message.setMessageType(MessageType.SENDMESSAGE.ordinal());
+                            message.setDeviceType(DeviceType.CANGUI.ordinal());
+                            message.setMessageByte(command);
+                            EventBus.getDefault().post(message);
+                            // new Handler(Looper.getMainLooper()).postDelayed(() -> finish(), 3000);
+                            ((CunOjbActivity)requireActivity()).showResult("Place meal into the box.");
+                        } else {
+                            DynamicToast.makeError(context, baseDto.getMsg(), 3).show();
+                        }
+                    }
+                });
+
+
+            }
+        });
+    }
+
+
     /**
      * @param status
      * @param isControl 是否从控制删除和添加,选中变不选,不选变选
diff --git a/app/src/main/java/com/lotaai/canguiayw/PickCodeListActivity.java b/app/src/main/java/com/lotaai/canguiayw/PickCodeListActivity.java
new file mode 100644
index 0000000..e279859
--- /dev/null
+++ b/app/src/main/java/com/lotaai/canguiayw/PickCodeListActivity.java
@@ -0,0 +1,114 @@
+package com.lotaai.canguiayw;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.View;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.alibaba.fastjson.JSONObject;
+import com.blankj.utilcode.util.CacheDiskUtils;
+import com.blankj.utilcode.util.LogUtils;
+import com.lotaai.canguiayw.common.HttpLoggerInterceptor;
+import com.lotaai.canguiayw.common.HttpUrlDefine;
+import com.lotaai.canguiayw.common.SettingConfig;
+import com.pranavpandey.android.dynamic.toasts.DynamicToast;
+
+import java.io.IOException;
+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 PickCodeListActivity extends AppCompatActivity {
+    private LinearLayout llCode;
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_code_list);
+        findViewById(R.id.tv_close).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                finish();
+            }
+        });
+        llCode = findViewById(R.id.ll_code);
+        getCode();
+    }
+
+    public void getCode() {
+        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();
+
+        RequestBody body = new FormBody.Builder()
+                .build();
+        final Request request = new Request.Builder()
+                .url(HttpUrlDefine.list + "?sn=" + CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code))
+                .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 = "Request failed";
+                showHandler.sendMessage(msg);
+                LogUtils.e(e);
+            }
+
+            @Override
+            public void onResponse(Call call, Response response) throws IOException {
+                String result = response.body().string();
+                LogUtils.i("获取到的数据:" + result);
+                final JSONObject obj = JSONObject.parseObject(result);
+                if ("200".equals(obj.getString("code"))) {
+                    runOnUiThread(new Runnable() {
+                        @Override
+                        public void run() {
+                            String[] data = obj.getString("data").split(",");
+                            for (int i =0;i<data.length;i++){
+                                View view = getLayoutInflater().inflate(R.layout.item_code, llCode, false);
+                                ((TextView)view.findViewById(R.id.tv_code)).setText(data[i]);
+                                llCode.addView(view);
+                            }
+                        }
+                    });
+                } else {
+                    Message msg = new Message();
+                    msg.what = 0;
+                    msg.obj = obj.getString("msg");
+                    showHandler.sendMessage(msg);
+                }
+            }
+        });
+    }
+
+    private Handler showHandler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            if (msg.what == 0) {
+                DynamicToast.makeError(PickCodeListActivity.this, msg.obj.toString(), 3).show();
+            } else if (msg.what == 1) {
+                DynamicToast.makeSuccess(PickCodeListActivity.this, msg.obj.toString(), 3).show();
+            } else {
+                DynamicToast.makeWarning(PickCodeListActivity.this, msg.obj.toString(), 3).show();
+            }
+        }
+    };
+}
diff --git a/app/src/main/java/com/lotaai/canguiayw/StartSaveActivity.java b/app/src/main/java/com/lotaai/canguiayw/StartSaveActivity.java
index 454a29f..583418a 100644
--- a/app/src/main/java/com/lotaai/canguiayw/StartSaveActivity.java
+++ b/app/src/main/java/com/lotaai/canguiayw/StartSaveActivity.java
@@ -1,6 +1,7 @@
 package com.lotaai.canguiayw;
 
 import android.content.Context;
+import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
@@ -26,7 +27,9 @@
 import com.lotaai.canguiayw.device.DeviceMessage;
 import com.lotaai.canguiayw.device.DeviceType;
 import com.lotaai.canguiayw.device.MessageType;
+import com.lotaai.canguiayw.device.service.CanGuiService;
 import com.lotaai.canguiayw.device.service.CrontrolGridModel;
+import com.lotaai.canguiayw.view.TipDialog;
 import com.pranavpandey.android.dynamic.toasts.DynamicToast;
 
 import org.greenrobot.eventbus.EventBus;
@@ -45,20 +48,22 @@
 public class StartSaveActivity extends AppCompatActivity {
     private Context context;
     private EditText editText;
-    CanguiStatus canguidata;
-    private TextView titleinfo;
+    private TextView tv_see_code;
+//    CanguiStatus canguidata;
     String ss;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_startsave);
-        canguidata = (CanguiStatus) getIntent().getSerializableExtra("info");
         initView();
-        ss = CrontrolGridModel.getGridNoStr(canguidata.getGuiHao(), canguidata.getGridNo());
-        titleinfo.setText("选择的格子号:" + ss);
+//        canguidata = (CanguiStatus) getIntent().getSerializableExtra("info");
+//        ss = CrontrolGridModel.getGridNoStr(canguidata.getGuiHao(), canguidata.getGridNo());
         context = StartSaveActivity.this;
+        Intent startIntent = new Intent(context, CanGuiService.class);
+        startService(startIntent);
         editText = (EditText) findViewById(R.id.edt_borrow_case_number);
+        tv_see_code = (TextView) findViewById(R.id.tv_see_code);
         editText.setInputType(InputType.TYPE_NULL); // 屏蔽软键盘
         DynamicToast.Config.getInstance().setTextSize(30).apply();
         // 软键盘设置统一按钮监听方法,数字键直接将text内容填充到edittext中,删除和确认才设置事件
@@ -76,20 +81,31 @@
                     // 调用后台
                     String gridNo = editable.toString();
                     if (null == gridNo || "".equals(gridNo.trim())) {
-                        DynamicToast.makeError(context, "取餐码不能为空。", 3).show();
+                        showResult("Please enter pickup code.");
                         return;
                     } else {
                         if (gridNo.length() != 6) {
                             editText.setText("");
-                            DynamicToast.makeError(context, "取餐码输入错误,请重试。", 3).show();
+                            showResult("The pickup code input is incorrect,\nplease try again.");
                             return;
                         }
                         //调用判断是否可以取餐
                         editText.setText("");
-                        takeCheckCode(gridNo, canguidata.getGuiHao(), canguidata.getGridNo());
+//                        takeCheckCode(gridNo, canguidata.getGuiHao(), canguidata.getGridNo());
+                        checkCode(gridNo,0);
                     }
-
-
+                } else if (key == R.id.tv_by_hand) {
+                    // 调用后台
+                    String gridNo = editable.toString();
+                    if (null == gridNo || "".equals(gridNo.trim())) {
+                        showResult("Please enter pickup code.");
+                        return;
+                    } else {
+                        //调用判断是否可以取餐
+                        editText.setText("");
+//                        takeCheckCode(gridNo, canguidata.getGuiHao(), canguidata.getGridNo());
+                        checkCode(gridNo,1);
+                    }
                 } else {
                     Button button = (Button) v;
                     editable.insert(index, button.getText());
@@ -108,6 +124,7 @@
         View view0 = findViewById(R.id.borrow_bt0);
         View view11 = findViewById(R.id.borrow_bt_delete);
         View view12 = findViewById(R.id.borrow_bt_confirm);
+        View view13 = findViewById(R.id.tv_by_hand);
         view1.setOnClickListener(clickListener);
         view2.setOnClickListener(clickListener);
         view3.setOnClickListener(clickListener);
@@ -120,7 +137,15 @@
         view0.setOnClickListener(clickListener);
         view11.setOnClickListener(clickListener);
         view12.setOnClickListener(clickListener);
+        view13.setOnClickListener(clickListener);
 
+        tv_see_code.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                Intent intent = new Intent(StartSaveActivity.this, PickCodeListActivity.class);
+                startActivity(intent);
+            }
+        });
     }
 
     public void backMian(View view) {
@@ -130,7 +155,7 @@
         finish();
     }
 
-    public void takeCheckCode(String code, int guino, int gridno) {
+    public void checkCode(final String code, final int isHand) {
         HttpLoggerInterceptor loggingInterceptor = new HttpLoggerInterceptor(true);
         OkHttpClient client = new OkHttpClient.Builder()
                 .connectTimeout(20, TimeUnit.SECONDS)//响应时间,读取时间
@@ -138,13 +163,12 @@
                 .callTimeout(20, TimeUnit.SECONDS)
                 .addInterceptor(loggingInterceptor)//添加日志拦截器
                 .build();
-
-        LogUtils.i(CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code), code);
+        String sn = CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code);
         RequestBody body = new FormBody.Builder()
                 .build();
 
         final Request request = new Request.Builder()
-                .url(HttpUrlDefine.checkStatus + "?pickNum=" + code + "&boxNum=" + guino + "&cartNum=" + gridno)
+                .url(HttpUrlDefine.check + "?pickNum=" + code + "&sn=" + sn+ "&isHand=" + isHand)
                 /*  .addHeader("language", "zh-CN")*/
                 .post(body)
                 .build();
@@ -154,7 +178,7 @@
                 runOnUiThread(new Runnable() {
                     @Override
                     public void run() {
-                        DynamicToast.makeError(context, "请求失败!", 3).show();
+                        DynamicToast.makeError(context, "Request error!", 3).show();
                     }
                 });
 
@@ -169,25 +193,16 @@
                     @Override
                     public void run() {
                         if (baseDto.getCode() == 200) {
-                           /* byte[] command = CanGuiCommand.getInstance().controlGridCommand(guino,
-                                    gridno, 1, 255, 0, 0, 0, 0);
-                            DeviceMessage message = new DeviceMessage();
-                            message.setMessageType(MessageType.SENDMESSAGE.ordinal());
-                            message.setDeviceType(DeviceType.CANGUI.ordinal());
-                            message.setMessageByte(command);
-                            EventBus.getDefault().post(message);*/
-                            DynamicToast.makeSuccess(context, "订单已创建,请将餐食放入" + ss + "柜中", 3).show();
-                            // new Handler(Looper.getMainLooper()).postDelayed(() -> finish(), 3000);
-
-                            finish();
-
+                            //取餐码可用,去选柜子
+                            Intent intent = new Intent(StartSaveActivity.this, CunOjbActivity.class);
+                            intent.putExtra("code",code);
+                            intent.putExtra("isHand",isHand);
+                            startActivity(intent);
                         } else {
-                            DynamicToast.makeError(context, baseDto.getMsg(), 3).show();
+                            showResult(baseDto.getMsg());
                         }
                     }
                 });
-
-
             }
         });
     }
@@ -258,6 +273,13 @@
     };
 
     private void initView() {
-        titleinfo = (TextView) findViewById(R.id.titleinfo);
+    }
+
+    public void showResult(String msg){
+        TipDialog tipDialog = new TipDialog();
+        Bundle bundle = new Bundle();
+        bundle.putString("msg",msg);
+        tipDialog.setArguments(bundle);
+        tipDialog.show(getSupportFragmentManager(),"res");
     }
 }
diff --git a/app/src/main/java/com/lotaai/canguiayw/TakeActivity.java b/app/src/main/java/com/lotaai/canguiayw/TakeActivity.java
index 9d1c59d..c69f33a 100644
--- a/app/src/main/java/com/lotaai/canguiayw/TakeActivity.java
+++ b/app/src/main/java/com/lotaai/canguiayw/TakeActivity.java
@@ -97,14 +97,14 @@
                     // 调用后台
                     String gridNo = editable.toString();
                     if (null == gridNo || "".equals(gridNo.trim())) {
-                        showResult("Please enter pickup code.");
+                        showResult("Please enter pickup code.",false);
                         return;
                     } else {
-                        if (gridNo.length() !=6) {
-                            editText.setText("");
-                            showResult("The pickup code input is incorrect,\nplease try again.");
-                            return;
-                        }
+//                        if (gridNo.length() !=6) {
+//                            editText.setText("");
+//                            showResult("The pickup code input is incorrect,\nplease try again.");
+//                            return;
+//                        }
                         //调用判断是否可以取餐
                         editText.setText("");
                         takeCheckCode(gridNo);
@@ -156,13 +156,11 @@
                 .callTimeout(20, TimeUnit.SECONDS)
                 .addInterceptor(loggingInterceptor)//添加日志拦截器
                 .build();
-
-        LogUtils.i(CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code), code);
+        String sn = CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code);
         RequestBody body = new FormBody.Builder()
                 .build();
-
         final Request request = new Request.Builder()
-                .url(HttpUrlDefine.pickOrder+"?pickNum="+code)
+                .url(HttpUrlDefine.pickOrder+"?pickNum="+code+"&sn="+sn)
                 /*  .addHeader("language", "zh-CN")*/
                 .post(body)
                 .build();
@@ -196,9 +194,9 @@
                             message.setMessageByte(command);
                             EventBus.getDefault().post(message);
                             showResult("Door opened succcessfully! \n" +
-                                    "Please pickup your meal.");
+                                    "Please pickup your meal.",true);
                         }else{
-                            showResult(baseDto.getMsg());
+                            showResult(baseDto.getMsg(),false);
                         }
                     }
                 });
@@ -206,64 +204,13 @@
         });
     }
 
-    public void showResult(String msg){
+    public void showResult(String msg,boolean isCountdown){
         TipDialog tipDialog = new TipDialog();
         Bundle bundle = new Bundle();
         bundle.putString("msg",msg);
+        bundle.putBoolean("isCountdown",isCountdown);
         tipDialog.setArguments(bundle);
         tipDialog.show(getSupportFragmentManager(),"res");
-    }
-
-
-    public void pickOrder(String code) {
-        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(CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code), code);
-        RequestBody body = new FormBody.Builder()
-                .build();
-
-        final Request request = new Request.Builder()
-                .url(HttpUrlDefine.pickOrder+"?pickNum="+code)
-                /*  .addHeader("language", "zh-CN")*/
-                .post(body)
-                .build();
-        client.newCall(request).enqueue(new Callback() {
-            @Override
-            public void onFailure(Call call, IOException e) {
-                runOnUiThread(new Runnable() {
-                    @Override
-                    public void run() {
-                        DynamicToast.makeError(context, "请求失败!", 3).show();
-                    }
-                });
-
-            }
-
-            @Override
-            public void onResponse(Call call, Response response) throws IOException {
-                String result = response.body().string();
-                LogUtils.i("获取到的数据:" + result);
-                final BaseDto baseDto = GsonUtils.fromJson(result, BaseDto.class);
-                runOnUiThread(new Runnable() {
-                    @Override
-                    public void run() {
-                        if (baseDto.isData()) {
-                            DynamicToast.makeSuccess(context, "验证成功!", 3).show();
-                        }else{
-                            DynamicToast.makeError(context, "验证失败!", 3).show();
-                        }
-                    }
-                });
-
-
-            }
-        });
     }
 
 
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 f0ca8c3..955a38d 100644
--- a/app/src/main/java/com/lotaai/canguiayw/common/HttpUrlDefine.java
+++ b/app/src/main/java/com/lotaai/canguiayw/common/HttpUrlDefine.java
@@ -1,11 +1,11 @@
 package com.lotaai.canguiayw.common;
 
 public class HttpUrlDefine {
-    private static String rootHost = "http://192.168.110.111:8080/";
+//    private static String rootHost = "http://192.168.110.111:8080/";
     //private static String rootHost = "http://221.182.45.100:8081/";
    // private static String rootHost = " http://18.130.221.37:8080/";
 
-//    private static String rootHost = "http://13.42.24.196:8080/";
+    private static String rootHost = "http://13.42.24.196:8080/";
     public static String  equipmentBind = rootHost + "/lotaai-api/api/eq/equipmentBind";
     public static String  equipmentLogin = rootHost + "/lotaai-api/api/eq/equipmentLogin";
     public static String  equipmentCunCan = rootHost + "/lotaai-api/api/eq/putInFood";
@@ -20,5 +20,7 @@
 
     public static String  login = rootHost + "equipment/equipment/deviceBlind1";
     public static String  adver = rootHost + "order/order/get/adver";
+    public static String  check = rootHost + "order/order/check";
+    public static String  list = rootHost + "order/order/get/list";
 
 }
diff --git a/app/src/main/java/com/lotaai/canguiayw/view/GridTableAdapterNew.java b/app/src/main/java/com/lotaai/canguiayw/view/GridTableAdapterNew.java
new file mode 100644
index 0000000..410ab87
--- /dev/null
+++ b/app/src/main/java/com/lotaai/canguiayw/view/GridTableAdapterNew.java
@@ -0,0 +1,76 @@
+package com.lotaai.canguiayw.view;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import androidx.annotation.LayoutRes;
+
+import com.lotaai.canguiayw.R;
+import com.lotaai.canguiayw.device.CanguiStatus;
+import com.lotaai.canguiayw.device.service.CrontrolGridModel;
+
+import java.util.List;
+
+public class GridTableAdapterNew extends BaseAdapter {
+    private List<CanguiStatus> mData;
+    private int mResource;
+    private Context mContext;
+
+    public GridTableAdapterNew(Context context, List<CanguiStatus> data, @LayoutRes int resource ){
+            this.mContext = context;
+            this.mResource = resource;
+            this.mData = data;
+    }
+
+    @Override
+    public int getCount() {
+        return mData.size();
+    }
+
+    @Override
+    public Object getItem(int i) {
+        return mData.get(i);
+    }
+
+    @Override
+    public long getItemId(int i) {
+        return i;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        ViewHolder vh = null;
+        if (convertView == null) {
+            convertView = LayoutInflater.from(mContext).inflate(mResource, null);
+            vh = new ViewHolder();
+            vh.gridNo=  (TextView) convertView.findViewById(R.id.gridNo);
+            vh.gridLineLayout = (LinearLayout)convertView.findViewById(R.id.gridLineLayout);
+            convertView.setTag(vh);
+        }
+        vh = (ViewHolder) convertView.getTag();
+
+        if (mData != null && mData.size() > 0) {
+           CanguiStatus status  =   mData.get(position);
+           if (status.getGridNo() == -1){
+               vh.gridNo.setText("");
+               vh.gridLineLayout.setBackgroundResource(0);
+           }
+            String ss = CrontrolGridModel.getGridNoStr(status.getGuiHao(),status.getGridNo());
+            vh.gridNo.setText(ss);
+           // vh.gridNo.setText(Integer.toString(status.getGridNo()));
+        }
+        return convertView;
+    }
+
+    class ViewHolder {
+        TextView gridNo;
+        LinearLayout gridLineLayout;
+    }
+}
diff --git a/app/src/main/java/com/lotaai/canguiayw/view/TipDialog.java b/app/src/main/java/com/lotaai/canguiayw/view/TipDialog.java
index b728e89..12fd73b 100644
--- a/app/src/main/java/com/lotaai/canguiayw/view/TipDialog.java
+++ b/app/src/main/java/com/lotaai/canguiayw/view/TipDialog.java
@@ -1,6 +1,8 @@
 package com.lotaai.canguiayw.view;
 
+import android.content.DialogInterface;
 import android.os.Bundle;
+import android.os.CountDownTimer;
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -14,6 +16,7 @@
 import com.lotaai.canguiayw.R;
 
 public class TipDialog extends DialogFragment {
+    private CountDownTimer timer;
     @Nullable
     @Override
     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
@@ -41,7 +44,8 @@
         super.onViewCreated(view, savedInstanceState);
         TextView tvMsg = view.findViewById(R.id.tv_msg);
         tvMsg.setText(getArguments().getString("msg"));
-        view.findViewById(R.id.tv_action).setOnClickListener(new View.OnClickListener() {
+        final TextView tvAction = view.findViewById(R.id.tv_action);
+        tvAction.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 if (callback!=null)
@@ -49,6 +53,28 @@
                 dismissAllowingStateLoss();
             }
         });
+        boolean isCountdown = getArguments().getBoolean("isCountdown", false);
+        if (isCountdown){
+            timer = new CountDownTimer(5000,1000){
+                @Override
+                public void onTick(long l) {
+                    tvAction.setText(((l/1000)+1)+"S");
+                }
+
+                @Override
+                public void onFinish() {
+                    dismissAllowingStateLoss();
+                }
+            };
+            timer.start();
+        }
+    }
+
+    @Override
+    public void onDismiss(@NonNull DialogInterface dialog) {
+        super.onDismiss(dialog);
+        if (timer!=null)
+            timer.cancel();
     }
 
     public interface ExitCallback {
diff --git a/app/src/main/res/drawable/bg_box.xml b/app/src/main/res/drawable/bg_box.xml
new file mode 100644
index 0000000..50dd6dd
--- /dev/null
+++ b/app/src/main/res/drawable/bg_box.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#29FFFFFF"/>
+    <corners android:radius="3dp"/>
+    <stroke android:color="@color/white" android:width="1dp"/>
+</shape>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_oragne_line_6.xml b/app/src/main/res/drawable/bg_oragne_line_6.xml
new file mode 100644
index 0000000..298ca24
--- /dev/null
+++ b/app/src/main/res/drawable/bg_oragne_line_6.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <corners android:radius="6dp"/>
+    <solid android:color="@color/white"/>
+    <stroke android:color="@color/colorPrimary" android:width="1dp"/>
+</shape>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_code_list.xml b/app/src/main/res/layout/activity_code_list.xml
new file mode 100644
index 0000000..60ad0ac
--- /dev/null
+++ b/app/src/main/res/layout/activity_code_list.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:background="@color/black">
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        android:background="@drawable/bg_white_3"
+        android:layout_marginHorizontal="90dp"
+        android:layout_marginVertical="70dp"
+        android:layout_height="match_parent">
+        <TextView
+            android:id="@+id/tv_close"
+            android:layout_width="120dp"
+            android:layout_height="40dp"
+            android:textSize="18sp"
+            android:gravity="center"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            android:textColor="@color/colorPrimary"
+            android:layout_marginBottom="28dp"
+            app:layout_constraintBottom_toBottomOf="parent"
+            android:textStyle="bold"
+            android:text="Close"
+            android:background="@drawable/bg_oragne_line_6"/>
+        <ScrollView
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toTopOf="@id/tv_close">
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:id="@+id/ll_code"
+                android:orientation="vertical"/>
+        </ScrollView>
+    </androidx.constraintlayout.widget.ConstraintLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_startsave.xml b/app/src/main/res/layout/activity_startsave.xml
index 0576fe7..072c81e 100644
--- a/app/src/main/res/layout/activity_startsave.xml
+++ b/app/src/main/res/layout/activity_startsave.xml
@@ -10,200 +10,231 @@
     android:orientation="vertical"
     tools:context=".TakeActivity">
 
-    <RelativeLayout
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:id="@+id/tv_see_code"
+        android:layout_gravity="end"
+        android:layout_marginTop="50dp"
+        android:layout_marginEnd="15dp"
+        android:text="Manual pickuo code"
+        android:textSize="13sp"
+        android:background="@drawable/bg_white_3"
+        android:padding="10dp"
+        />
+
+    <androidx.constraintlayout.widget.ConstraintLayout
         android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="5">
+        android:layout_height="match_parent">
 
-        <ImageButton
-            android:layout_width="80dp"
-            android:layout_height="80dp"
-            android:layout_alignParentRight="true"
-            android:layout_centerVertical="true"
-            android:layout_gravity="center"
-            android:alpha="1"
-            android:background="@drawable/back_go_button"
-            android:onClick="backMian"
-            android:scaleType="centerCrop"
-            android:src="@mipmap/fanhui" />
+        <TextView
+            android:id="@+id/titleinfo"
+            android:layout_width="wrap_content"
+            android:layout_height="0dp"
+            android:layout_marginTop="19dp"
+            android:background="@null"
+            android:gravity="center"
+            android:text="Please enter pickup code and place meal"
+            android:textAlignment="center"
+            android:textColor="@color/white"
+            android:textColorHint="@color/white"
+            android:textSize="25sp"
+            android:textStyle="bold"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toTopOf="parent"/>
 
+        <EditText
+            android:id="@+id/edt_borrow_case_number"
+            android:layout_width="0dp"
+            android:layout_height="65dp"
+            android:background="@drawable/bg_white_3"
+            android:layout_marginTop="29dp"
+            android:gravity="center"
+            android:inputType="number"
+            android:textAlignment="center"
+            android:textColor="@color/black"
+            android:textColorHint="@color/white"
+            android:textSize="24sp"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintStart_toStartOf="@id/keyboard"
+            app:layout_constraintEnd_toEndOf="@id/keyboard"
+            app:layout_constraintTop_toBottomOf="@id/titleinfo" />
 
-        <androidx.constraintlayout.widget.ConstraintLayout
-            android:layout_width="match_parent"
-            android:layout_height="match_parent">
+        <TableLayout
+            android:id="@+id/keyboard"
+            android:layout_width="390dp"
+            android:layout_height="219dp"
+            android:stretchColumns="*"
+            app:layout_constraintTop_toBottomOf="@id/edt_borrow_case_number"
+            android:layout_marginTop="15dp"
+            android:paddingVertical="6dp"
+            android:paddingHorizontal="4dp"
+            android:layout_marginHorizontal="29dp"
+            android:background="@drawable/bg_grey_6dp"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent">
 
-            <TextView
-                android:id="@+id/titleinfo"
-                android:layout_width="wrap_content"
-                android:layout_height="0dp"
-                android:layout_marginTop="16dp"
-                android:background="@null"
-                android:gravity="center"
-                android:text="选择的柜子号:"
-                android:textAlignment="center"
-                android:textColor="@color/white"
-                android:textColorHint="@color/white"
-                android:textSize="30dp"
-                app:layout_constraintLeft_toLeftOf="parent"
-                app:layout_constraintRight_toRightOf="parent"
-                app:layout_constraintTop_toTopOf="parent"
-                app:layout_constraintWidth_percent="0.5" />
-
-            <EditText
-                app:layout_constraintTop_toBottomOf="@+id/titleinfo"
-                android:id="@+id/edt_borrow_case_number"
+            <TableRow
                 android:layout_width="0dp"
-                app:layout_constraintWidth_percent="0.5"
                 android:layout_height="0dp"
-                android:background="@null"
-                android:layout_marginTop="10dp"
-                android:gravity="center"
-                android:hint="请输入取餐码"
-                android:inputType="number"
-                android:textAlignment="center"
-                android:textColor="@color/white"
-                android:textColorHint="@color/white"
-                android:textSize="30dp"
-                app:layout_constraintHeight_percent="0.15"
-                app:layout_constraintLeft_toLeftOf="parent"
-                app:layout_constraintRight_toRightOf="parent"
-                />
+                android:layout_weight="2">
 
-            <TableLayout
+                <Button
+                    android:id="@+id/borrow_bt1"
+                    android:layout_width="wrap_content"
+                    android:layout_height="match_parent"
+                    android:background="@drawable/number_button_left"
+                    android:text="1"
+                    android:textSize="24sp" />
+
+                <Button
+                    android:id="@+id/borrow_bt2"
+                    android:layout_width="wrap_content"
+                    android:layout_height="match_parent"
+                    android:layout_marginStart="8dp"
+                    android:background="@drawable/number_button_mid"
+                    android:text="2"
+                    android:textSize="24sp" />
+
+                <Button
+                    android:id="@+id/borrow_bt3"
+                    android:layout_width="wrap_content"
+                    android:layout_height="match_parent"
+                    android:layout_marginStart="8dp"
+                    android:background="@drawable/number_button_right"
+                    android:text="3"
+                    android:textSize="24sp" />
+            </TableRow>
+
+            <TableRow
                 android:layout_width="0dp"
-                app:layout_constraintDimensionRatio="2:1"
                 android:layout_height="0dp"
-                android:layout_alignParentBottom="true"
-                android:layout_centerHorizontal="true"
-                android:stretchColumns="*"
-                app:layout_constraintBottom_toBottomOf="parent"
-                app:layout_constraintHeight_percent="0.6"
-                app:layout_constraintLeft_toLeftOf="parent"
-                app:layout_constraintRight_toRightOf="parent">
+                android:layout_marginTop="6dp"
+                android:layout_weight="2">
 
-                <TableRow
-                    android:layout_width="0dp"
-                    android:layout_height="0dp"
-                    android:layout_weight="2">
+                <Button
+                    android:id="@+id/borrow_bt4"
+                    android:layout_width="wrap_content"
+                    android:layout_height="match_parent"
+                    android:background="@drawable/number_button_left"
+                    android:text="4"
+                    android:textSize="24sp" />
 
-                    <Button
-                        android:id="@+id/borrow_bt1"
-                        android:layout_width="wrap_content"
-                        android:layout_height="match_parent"
-                        android:background="@drawable/number_button_left"
-                        android:text="1"
-                        android:textSize="30sp" />
+                <Button
+                    android:id="@+id/borrow_bt5"
+                    android:layout_width="wrap_content"
+                    android:layout_height="match_parent"
+                    android:background="@drawable/number_button_mid"
+                    android:text="5"
+                    android:layout_marginStart="8dp"
+                    android:textSize="24sp" />
 
-                    <Button
-                        android:id="@+id/borrow_bt2"
-                        android:layout_width="wrap_content"
-                        android:layout_height="match_parent"
-                        android:background="@drawable/number_button_mid"
-                        android:text="2"
-                        android:textSize="30sp" />
+                <Button
+                    android:id="@+id/borrow_bt6"
+                    android:layout_width="wrap_content"
+                    android:layout_height="match_parent"
+                    android:background="@drawable/number_button_right"
+                    android:text="6"
+                    android:layout_marginStart="8dp"
+                    android:textSize="24sp" />
+            </TableRow>
 
-                    <Button
-                        android:id="@+id/borrow_bt3"
-                        android:layout_width="wrap_content"
-                        android:layout_height="match_parent"
-                        android:background="@drawable/number_button_right"
-                        android:text="3"
-                        android:textSize="30sp" />
-                </TableRow>
+            <TableRow
+                android:layout_width="0dp"
+                android:layout_height="0dp"
+                android:layout_marginTop="6dp"
+                android:layout_weight="2">
 
-                <TableRow
-                    android:layout_width="0dp"
-                    android:layout_height="0dp"
-                    android:layout_weight="2">
+                <Button
+                    android:id="@+id/borrow_bt7"
+                    android:layout_width="wrap_content"
+                    android:layout_height="match_parent"
+                    android:background="@drawable/number_button_left"
+                    android:text="7"
+                    android:textSize="24sp" />
 
-                    <Button
-                        android:id="@+id/borrow_bt4"
-                        android:layout_width="wrap_content"
-                        android:layout_height="match_parent"
-                        android:background="@drawable/number_button_left"
-                        android:text="4"
-                        android:textSize="30sp" />
+                <Button
+                    android:id="@+id/borrow_bt8"
+                    android:layout_width="wrap_content"
+                    android:layout_height="match_parent"
+                    android:background="@drawable/number_button_mid"
+                    android:text="8"
+                    android:layout_marginStart="8dp"
+                    android:textSize="24sp" />
 
-                    <Button
-                        android:id="@+id/borrow_bt5"
-                        android:layout_width="wrap_content"
-                        android:layout_height="match_parent"
-                        android:background="@drawable/number_button_mid"
-                        android:text="5"
-                        android:textSize="30sp" />
+                <Button
+                    android:id="@+id/borrow_bt9"
+                    android:layout_width="wrap_content"
+                    android:layout_height="match_parent"
+                    android:background="@drawable/number_button_right"
+                    android:text="9"
+                    android:layout_marginStart="8dp"
+                    android:textSize="24sp" />
+            </TableRow>
 
-                    <Button
-                        android:id="@+id/borrow_bt6"
-                        android:layout_width="wrap_content"
-                        android:layout_height="match_parent"
-                        android:background="@drawable/number_button_right"
-                        android:text="6"
-                        android:textSize="30sp" />
-                </TableRow>
+            <TableRow
+                android:layout_width="0dp"
+                android:layout_height="0dp"
+                android:layout_marginTop="6dp"
+                android:layout_weight="2">
 
-                <TableRow
-                    android:layout_width="0dp"
-                    android:layout_height="0dp"
-                    android:layout_weight="2">
+                <Button
+                    android:layout_width="wrap_content"
+                    android:layout_height="match_parent"
+                    android:background="@null"
+                    android:textSize="24sp" />
 
-                    <Button
-                        android:id="@+id/borrow_bt7"
-                        android:layout_width="wrap_content"
-                        android:layout_height="match_parent"
-                        android:background="@drawable/number_button_left"
-                        android:text="7"
-                        android:textSize="30sp" />
+                <Button
+                    android:id="@+id/borrow_bt0"
+                    android:layout_width="wrap_content"
+                    android:layout_height="match_parent"
+                    android:background="@drawable/number_button_mid"
+                    android:text="0"
+                    android:layout_marginStart="8dp"
+                    android:textSize="24sp" />
 
-                    <Button
-                        android:id="@+id/borrow_bt8"
-                        android:layout_width="wrap_content"
-                        android:layout_height="match_parent"
-                        android:background="@drawable/number_button_mid"
-                        android:text="8"
-                        android:textSize="30sp" />
+                <ImageView
+                    android:id="@+id/borrow_bt_delete"
+                    android:layout_width="wrap_content"
+                    android:layout_height="match_parent"
+                    android:gravity="center"
+                    android:src="@mipmap/delete"
+                    android:scaleType="center"
+                    android:layout_marginStart="8dp"
+                    android:textSize="24sp" />
+            </TableRow>
+        </TableLayout>
+        <TextView
+            android:id="@+id/borrow_bt_confirm"
+            android:layout_width="150dp"
+            android:layout_height="40dp"
+            app:layout_constraintTop_toBottomOf="@id/keyboard"
+            app:layout_constraintEnd_toEndOf="@id/keyboard"
+            android:textSize="18sp"
+            android:gravity="center"
+            android:layout_marginEnd="23dp"
+            android:layout_marginTop="30dp"
+            android:textColor="@color/white"
+            android:textStyle="bold"
+            android:text="Order setup"
+            android:background="@drawable/bg_oragne_6"/>
+        <TextView
+            android:id="@+id/tv_by_hand"
+            android:layout_width="150dp"
+            android:layout_height="40dp"
+            app:layout_constraintTop_toBottomOf="@id/keyboard"
+            app:layout_constraintStart_toStartOf="@id/keyboard"
+            android:textSize="18sp"
+            android:gravity="center"
+            android:layout_marginStart="23dp"
+            android:layout_marginTop="30dp"
+            android:textColor="@color/colorPrimary"
+            android:textStyle="bold"
+            android:text="Maual setup"
+            android:background="@drawable/bg_oragne_line_6"/>
+    </androidx.constraintlayout.widget.ConstraintLayout>
 
-                    <Button
-                        android:id="@+id/borrow_bt9"
-                        android:layout_width="wrap_content"
-                        android:layout_height="match_parent"
-                        android:background="@drawable/number_button_right"
-                        android:text="9"
-                        android:textSize="30sp" />
-                </TableRow>
-
-                <TableRow
-                    android:layout_width="0dp"
-                    android:layout_height="0dp"
-                    android:layout_weight="2">
-
-                    <Button
-                        android:id="@+id/borrow_bt_delete"
-                        android:layout_width="wrap_content"
-                        android:layout_height="match_parent"
-                        android:background="@drawable/number_button_left"
-                        android:text="DEL"
-                        android:textSize="30sp" />
-
-                    <Button
-                        android:id="@+id/borrow_bt0"
-                        android:layout_width="wrap_content"
-                        android:layout_height="match_parent"
-                        android:background="@drawable/number_button_mid"
-                        android:text="0"
-                        android:textSize="30sp" />
-
-                    <Button
-                        android:id="@+id/borrow_bt_confirm"
-                        android:layout_width="wrap_content"
-                        android:layout_height="match_parent"
-                        android:background="@drawable/number_button_right"
-                        android:gravity="center"
-                        android:text="OK"
-                        android:textSize="30sp" />
-                </TableRow>
-            </TableLayout>
-        </androidx.constraintlayout.widget.ConstraintLayout>
-
-    </RelativeLayout>
 
 </LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/framgment_opendoor.xml b/app/src/main/res/layout/framgment_opendoor.xml
index 4e25186..2d6b41a 100644
--- a/app/src/main/res/layout/framgment_opendoor.xml
+++ b/app/src/main/res/layout/framgment_opendoor.xml
@@ -16,6 +16,7 @@
             android:layout_width="0dp"
             android:layout_height="match_parent"
             android:layout_weight="1"
+            android:visibility="gone"
             android:orientation="vertical">
 
             <Button
@@ -93,10 +94,10 @@
                 android:id="@+id/gridtable"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:columnWidth="80dp"
-                android:horizontalSpacing="10dp"
+                android:columnWidth="130dp"
+                android:horizontalSpacing="18dp"
                 android:numColumns="3"
-                android:verticalSpacing="10dp"></GridView>
+                android:verticalSpacing="18dp"></GridView>
         </LinearLayout>
     </LinearLayout>
 
@@ -160,4 +161,17 @@
             app:track_color_off="@color/cheng"
             app:track_color_on="@color/DarkGray" />
     </LinearLayout>
+    <TextView
+        android:id="@+id/tv_close"
+        android:layout_width="120dp"
+        android:layout_height="40dp"
+        android:textSize="18sp"
+        android:gravity="center"
+        android:layout_gravity="center"
+        android:layout_marginTop="20dp"
+        android:textColor="@color/colorPrimary"
+        android:layout_marginBottom="28dp"
+        android:textStyle="bold"
+        android:text="Close"
+        android:background="@drawable/bg_oragne_line_6"/>
 </LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_box_new.xml b/app/src/main/res/layout/item_box_new.xml
new file mode 100644
index 0000000..541403c
--- /dev/null
+++ b/app/src/main/res/layout/item_box_new.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:gravity="center"
+    android:background="@color/black"
+    android:orientation="vertical">
+    <RelativeLayout
+        android:id="@+id/gridLineLayout"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@drawable/bg_box"
+        android:orientation="vertical">
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            android:id="@+id/gridNo"
+            android:textStyle="bold"
+            android:textColor="@color/white"
+            android:textSize="17sp"
+            android:text="A1"/>
+    </RelativeLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_code.xml b/app/src/main/res/layout/item_code.xml
new file mode 100644
index 0000000..2501914
--- /dev/null
+++ b/app/src/main/res/layout/item_code.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:id="@+id/tv_code"
+        android:paddingVertical="18dp"
+        android:paddingHorizontal="16dp"
+        android:text="Pickup code"
+        android:textSize="16sp"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        android:textStyle="bold"
+        android:textColor="@color/black"/>
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1px"
+        android:background="#F0F0F0"
+        app:layout_constraintTop_toBottomOf="@id/tv_code"/>
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file

--
Gitblit v1.7.1