lmw
2024-09-04 a3bc6aa4fa3bad787c9fc366d6904f60265eec3b
app/src/main/java/com/lotaai/canguiayw/TakeActivity.java
@@ -2,39 +2,44 @@
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.text.Editable;
import android.text.InputType;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.alibaba.fastjson.JSONObject;
import com.blankj.utilcode.util.CacheDiskUtils;
import com.blankj.utilcode.util.DeviceUtils;
import com.blankj.utilcode.util.GsonUtils;
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.lotaai.canguiayw.data.BaseDto;
import com.lotaai.canguiayw.data.BoxInfoDto;
import com.lotaai.canguiayw.device.CanGuiCommand;
import com.lotaai.canguiayw.device.DeviceMessage;
import com.lotaai.canguiayw.device.DeviceType;
import com.lotaai.canguiayw.device.MessageType;
import com.lotaai.canguiayw.mqtt.DeviceAction;
import com.lotaai.canguiayw.sqllitedb.Order;
import com.lotaai.canguiayw.sqllitedb.SqlliteDbManage;
import com.lotaai.canguiayw.device.service.CanGuiService;
import com.lotaai.canguiayw.view.AdBannerAdapter;
import com.lotaai.canguiayw.view.TipDialog;
import com.pranavpandey.android.dynamic.toasts.DynamicToast;
import com.youth.banner.Banner;
import com.youth.banner.indicator.CircleIndicator;
import org.greenrobot.eventbus.EventBus;
import java.io.IOException;
import java.util.ArrayList;
import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import okhttp3.Call;
import okhttp3.Callback;
@@ -47,12 +52,32 @@
public class TakeActivity extends AppCompatActivity {
    private Context context;
    private EditText editText;
    private Banner banner;
    private ArrayList<String> imgs = new ArrayList<String>();
    private AdBannerAdapter adapter;
    private Handler handler;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_take);
        handler = new Handler(Looper.getMainLooper()){
            @Override
            public void handleMessage(@NonNull Message msg) {
                super.handleMessage(msg);
                if (msg.what == 0){
                    adver();
                }
            }
        };
        context = TakeActivity.this;
        Intent startIntent = new Intent(context, CanGuiService.class);
        startService(startIntent);
        editText = (EditText)findViewById(R.id.edt_borrow_case_number);
        editText.setInputType(InputType.TYPE_NULL); // 屏蔽软键盘
        DynamicToast.Config.getInstance().setTextSize(30).apply();
@@ -60,6 +85,7 @@
        View.OnClickListener clickListener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int index = editText.getSelectionEnd();
                Editable editable = editText.getText();
                int key = v.getId();
@@ -71,24 +97,26 @@
                    // 调用后台
                    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);
                    }
                } else {
                    Button button = (Button) v;
                    editable.insert(index, button.getText());
                }
            }
        };
        banner = findViewById(R.id.banner);
        View view1 = findViewById(R.id.borrow_bt1);
        View view2 = findViewById(R.id.borrow_bt2);
        View view3 = findViewById(R.id.borrow_bt3);
@@ -113,14 +141,12 @@
        view0.setOnClickListener(clickListener);
        view11.setOnClickListener(clickListener);
        view12.setOnClickListener(clickListener);
        adapter = new AdBannerAdapter(this,imgs);
        banner.setAdapter(adapter);
        banner.setIndicator(new CircleIndicator(this));
        handler.sendEmptyMessage(0);
    }
    public void backMian(View view){
        DeviceMessage message = new DeviceMessage();
        message.setMessageType(MessageType.FANHUI.ordinal());
        EventBus.getDefault().post(message);
        finish();
    }
    public void takeCheckCode(String code) {
        HttpLoggerInterceptor loggingInterceptor = new HttpLoggerInterceptor(true);
@@ -131,52 +157,165 @@
                .addInterceptor(loggingInterceptor)//添加日志拦截器
                .build();
        LogUtils.i(CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code),code);
        LogUtils.i(CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code), code);
        RequestBody body = new FormBody.Builder()
                .add("equipmentCode", CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code))
                .add("takeCode", code).build();
                .build();
        final Request request = new Request.Builder()
                .url(HttpUrlDefine.equipmentTakeOut)
                .addHeader("language", "zh-CN")
                .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) {
                DynamicToast.makeError(context, "取餐失败!", 3).show();
                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);
                LogUtils.i("获取到的数据:" + result);
                final BoxInfoDto baseDto = GsonUtils.fromJson(result, BoxInfoDto.class);
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        if (baseDto.getCode()==200) {
                            byte[] command = CanGuiCommand.getInstance().controlGridCommand(baseDto.getData().getBoxNum(),
                                    baseDto.getData().getCartNum(), 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);
                            showResult("Door opened succcessfully! \n" +
                                    "Please pickup your meal.");
                        }else{
                            showResult(baseDto.getMsg());
                        }
                    }
                });
            }
        });
    }
    public void showResult(String msg){
        TipDialog tipDialog = new TipDialog();
        Bundle bundle = new Bundle();
        bundle.putString("msg",msg);
        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();
                        }
                    }
                });
            }
        });
    }
    public void adver() {
        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();
        String code = CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code);
        RequestBody body = new FormBody.Builder()
                .build();
        final Request request = new Request.Builder()
                .url(HttpUrlDefine.adver+"?sn="+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() {
                    }
                });
            }
            @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"))) {
                 String g = obj.getString("data");
                 //发送mqtt 进行开门
                    JSONObject json = new JSONObject();
                    json.put("action", DeviceAction.CONTROLDEVICE.name());
                    json.put(DeviceAction.doorIsOpen.name(), "1");
                    json.put(DeviceAction.xiaoDuIsOpen.name(), "0");
                    json.put(DeviceAction.jiareIsOpen.name(), "0");
                    json.put(DeviceAction.dengGuangIsOpen.name(), "0");
                    json.put("gridNo", g);
                    json.put("qucan","1");
                    DeviceMessage deviceMessage = new DeviceMessage();
                    deviceMessage.setMessageType(MessageType.MQTT.ordinal());
                    deviceMessage.setMsgString(json.toJSONString());
                    EventBus.getDefault().post(deviceMessage);
                    String string = obj.getString("msg");
                    Message msg = new Message();
                    msg.what = 1;
                    msg.obj = "取餐格口:" + g;
                    showHandler.sendMessage(msg);
                } else {
                    String string = obj.getString("msg");
                    Message msg = new Message();
                    msg.what = 0;
                    msg.obj = "取餐失败:" + string;
                    showHandler.sendMessage(msg);
                if ("200".equals(obj.getString("code"))) {
                    String imgs = obj.getString("data");
                    TakeActivity.this.imgs.clear();
                    String[] split = imgs.split(",");
                    for (int i = 0;i< split.length;i++){
                        if (!split[i].isEmpty()){
                            TakeActivity.this.imgs.add(split[i]);
                        }
                    }
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            adapter.notifyDataSetChanged();
                            banner.setCurrentItem(1);
                        }
                    });
                    handler.sendEmptyMessageDelayed(0,60000);
                }
            }
        });