| | |
| | | |
| | | 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; |
| | |
| | | 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(); |
| | |
| | | View.OnClickListener clickListener = new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | |
| | | int index = editText.getSelectionEnd(); |
| | | Editable editable = editText.getText(); |
| | | int key = v.getId(); |
| | |
| | | // 调用后台 |
| | | 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); |
| | |
| | | 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); |
| | |
| | | .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); |
| | | } |
| | | } |
| | | }); |