Commit d54a9745 by Wyh

Merge remote-tracking branch 'origin/master'

parents 6587819a bb5e22ac
......@@ -212,9 +212,10 @@ public class DownloadPresenter extends BasePresenter<DownloadContract.Model, Dow
private void stopDownDisposable() {
for (int i = 0; i < mDownDisposable.size(); i++) {
if (mDownDisposable.get(i).isDisposed())
if (mDownDisposable.get(i) != null && mDownDisposable.get(i).isDisposed() == false)
mDownDisposable.get(i).dispose();
}
mDownDisposable.clear();
}
public void downFun(int downTag) {
......@@ -535,10 +536,12 @@ public class DownloadPresenter extends BasePresenter<DownloadContract.Model, Dow
}
private void endDownReturn() {
if(IActivity.getFromPage() == 1){
CC.obtainBuilder("Component.Main")
.setActionName("showMainActivity")
.build()
.call();
}
mRootView.killMyself();
}
......
......@@ -10,14 +10,19 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;
import com.billy.cc.core.component.CC;
import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.CCUtil;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.download.R;
import com.gingersoft.gsa.cloud.download.R2;
import com.gingersoft.gsa.cloud.download.di.component.DaggerDownloadComponent;
import com.gingersoft.gsa.cloud.download.mvp.contract.DownloadContract;
import com.gingersoft.gsa.cloud.download.mvp.presenter.DownloadPresenter;
import com.gingersoft.gsa.cloud.ui.utils.AndroidWorkaround;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.base.DefaultAdapter;
......@@ -51,14 +56,25 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
*/
public class DownloadActivity extends BaseActivity<DownloadPresenter> implements DownloadContract.View {
@BindView(R2.id.topbar)
QMUITopBar mTopBar;
@BindView(R2.id.btn_back)
ImageButton btn_back;
@BindView(R2.id.btn_refresh)
ImageButton btn_refresh;
@BindView(R2.id.tv_title)
TextView tv_title;
@BindView(R2.id.recycle_download)
RecyclerView recycle_download;
@BindView(R2.id.tv_progress)
TextView tv_progress;
/**
* 那個頁面跳轉下載
* 1#登錄頁選擇餐廳
* 2#其他
*/
private int fromPage =1;
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerDownloadComponent //如找不到该类,请编译一下项目
......@@ -88,28 +104,24 @@ public class DownloadActivity extends BaseActivity<DownloadPresenter> implements
@Override
public void initIntent() {
fromPage = CCUtil.getNavigateParam(this, "fromPage", 1);
}
@Override
public void initTopBar() {
QMUIAlphaImageButton leftButton = mTopBar.addLeftBackImageButton();
leftButton.setOnClickListener(new View.OnClickListener() {
tv_title.setText("數據下載");
btn_back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
killMyself();
}
});
QMUIAlphaImageButton rightButton = mTopBar.addRightImageButton(R.drawable.icon_refresh, R.id.btn_back);
rightButton.setOnClickListener(new View.OnClickListener() {
btn_refresh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mPresenter.downAllList();
}
});
mTopBar.setTitle("數據下載").setTextColor(ArmsUtils.getColor(this, R.color.theme_white_color));
}
@Override
......@@ -189,7 +201,7 @@ public class DownloadActivity extends BaseActivity<DownloadPresenter> implements
return;
}
transparentStatusBar(activity);
setRootView(activity);
// setRootView(activity);
}
/**
......@@ -223,4 +235,8 @@ public class DownloadActivity extends BaseActivity<DownloadPresenter> implements
}
}
}
public int getFromPage() {
return fromPage;
}
}
......@@ -5,17 +5,51 @@
android:layout_height="match_parent"
android:background="@mipmap/down_decoration">
<com.qmuiteam.qmui.widget.QMUITopBar
android:id="@+id/topbar"
<!-- <com.qmuiteam.qmui.widget.QMUITopBar-->
<!-- android:id="@+id/topbar"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="?attr/qmui_topbar_height"-->
<!-- android:layout_marginTop="@dimen/dp_20"-->
<!-- android:background="@color/trans" />-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="?attr/qmui_topbar_height"
android:layout_marginTop="@dimen/dp_20"
android:background="@color/trans" />
android:layout_height="@dimen/dp_50"
android:layout_marginTop="@dimen/dp_30"
android:background="@color/trans">
<com.qmuiteam.qmui.alpha.QMUIAlphaImageButton
android:id="@+id/btn_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:src="@drawable/qmui_icon_topbar_back"
android:layout_marginLeft="@dimen/dp_15"/>
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/theme_white_color"
android:text="數據下載"
android:layout_centerInParent="true"
android:textSize="@dimen/sp_16"/>
<com.qmuiteam.qmui.alpha.QMUIAlphaImageButton
android:id="@+id/btn_refresh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_refresh"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="@dimen/dp_15"/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_marginTop="@dimen/dp_80"
android:weightSum="2">
<FrameLayout
......@@ -40,7 +74,6 @@
android:textSize="@dimen/sp_24" />
</FrameLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle_download"
android:layout_width="match_parent"
......
package com.gingersoft.gsa.cloud.main.mvp.ui.activity;
import android.content.Intent;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.os.Bundle;
import android.os.Message;
......@@ -20,6 +22,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.JsonUtils;
import com.gingersoft.gsa.cloud.base.utils.RestaurantInfoUtils;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.database.bean.Function;
import com.gingersoft.gsa.cloud.main.BuildConfig;
......@@ -151,7 +154,6 @@ public class NewMainActivity extends BaseActivity<NewMainPresenter> implements N
}
refresh.setBackground(drawable);
});
}
/**
......@@ -278,6 +280,12 @@ public class NewMainActivity extends BaseActivity<NewMainPresenter> implements N
String restaurantName = GsaCloudApplication.getRestaurantName(this);
String memberName = GsaCloudApplication.getMemberName(this);
if (!TextUtils.isEmpty(restaurantName)) {
if (RestaurantInfoUtils.getRestaurantSize(this) > 1) {
//顯示下拉圖標
Drawable drawable = getResources().getDrawable(R.drawable.ic_dropdown_white);
drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
tvRestaurantName.setCompoundDrawables(null, null, drawable, null);
}
tvRestaurantName.setText(restaurantName);
}
if (!TextUtils.isEmpty(memberName)) {
......@@ -294,7 +302,7 @@ public class NewMainActivity extends BaseActivity<NewMainPresenter> implements N
.addBrandItems(brandsBeans)
.setOnItemClickListener((dialog, item, position) -> {
LoginBean.DataBean.UserBean.BrandsBean brandsBean = getBrandByRestaurantId(brandsBeans, item.getId());
LoginBean.DataBean.UserBean.BrandsBean brandsBean = RestaurantInfoUtils.getBrandByRestaurantId(brandsBeans, item.getId());
if (brandsBean != null) {
saveBrandAndRestaurantInfo(brandsBean.getBrandId(), brandsBean.getBrandName(), item.getId(), item.getText());
......@@ -306,6 +314,7 @@ public class NewMainActivity extends BaseActivity<NewMainPresenter> implements N
setTitleInfo();
CC.obtainBuilder("Component.Download")
.setActionName("showDownloadActivity")
.addParam("fromPage",2)
.build()
.call();
dialog.dismiss();
......@@ -323,18 +332,6 @@ public class NewMainActivity extends BaseActivity<NewMainPresenter> implements N
GsaCloudApplication.setRestaurantName(this, restaurantName);
}
private LoginBean.DataBean.UserBean.BrandsBean getBrandByRestaurantId(List<LoginBean.DataBean.UserBean.BrandsBean> brands, int restaurantId) {
for (int i = 0; i < brands.size(); i++) {
if (brands.get(i).getRestaurants() != null) {
for (int j = 0; j < brands.get(i).getRestaurants().size(); j++) {
if (brands.get(i).getRestaurants().get(j).getRestaurantId() == restaurantId) {
return brands.get(i);
}
}
}
}
return null;
}
@Override
public void initIntent() {
......
......@@ -8,7 +8,7 @@
<com.qmuiteam.qmui.widget.QMUITopBar
android:id="@+id/topbar"
android:layout_width="match_parent"
android:layout_height="?attr/qmui_topbar_height"/>
android:layout_height="?attr/qmui_topbar_height" />
<TextView
android:id="@+id/tv_settlement_time"
......
/build/
app.iml
proguard-rules.pro
apply from: rootProject.file('cc-settings.gradle')
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-android'
apply plugin: 'com.jakewharton.butterknife'
android {
compileSdkVersion rootProject.ext.android["compileSdkVersion"]
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
}
// 避免 lint 检测出错时停止构建
lintOptions {
abortOnError false
}
defaultConfig {
if (project.ext.runAsApp) {
applicationId "com.gingersoft.cloud.gsa.manager"
}
minSdkVersion rootProject.ext.android["minSdkVersion"]
targetSdkVersion rootProject.ext.android["targetSdkVersion"]
versionCode rootProject.ext.android["versionCode"]
versionName rootProject.ext.android["versionName"]
multiDexEnabled true
}
resourcePrefix "manager"
buildTypes {
debug {
buildConfigField "boolean", "LOG_DEBUG", "true"
buildConfigField "boolean", "USE_CANARY", "true"
minifyEnabled false
proguardFiles 'proguard.cfg'
}
release {
buildConfigField "boolean", "LOG_DEBUG", "false"
buildConfigField "boolean", "USE_CANARY", "false"
minifyEnabled false
shrinkResources false
zipAlignEnabled false
proguardFiles 'proguard.cfg'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
annotationProcessor rootProject.ext.dependencies["dagger2-compiler"]
debugImplementation rootProject.ext.dependencies["canary-debug"]
releaseImplementation rootProject.ext.dependencies["canary-release"]
testImplementation rootProject.ext.dependencies["canary-release"]
testImplementation rootProject.ext.dependencies["junit"]
implementation rootProject.ext.dependencies["BaseRecyclerViewAdapter"]
compile "androidx.core:core-ktx:+"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}
repositories {
mavenCentral()
}
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
package com.gingersoft.cloud.gsa;
import android.content.Context;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
/**
* Instrumented test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
assertEquals("com.gingersoft.cloud.gsa", appContext.getPackageName());
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.gingersoft.gsa.cloud.manager">
<uses-permission android:name="android.permission.INTERNET" />
<application>
<!-- arms配置 -->
<meta-data
android:name="com.gingersoft.gsa.cloud.globalconfig.GlobalConfiguration"
android:value="ConfigModule" />
</application>
</manifest>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.gingersoft.gsa.cloud.manager">
<application
android:name="com.gingersoft.gsa.cloud.base.application.GsaCloudApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:networkSecurityConfig="@xml/network_android"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<meta-data
android:name="com.gingersoft.gsa.cloud.globalconfig.GlobalConfiguration"
android:value="ConfigModule" />
<meta-data
android:name="design_width_in_dp"
android:value="360" />
<meta-data
android:name="design_height_in_dp"
android:value="540" />
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
</manifest>
package debug;
import com.billy.cc.core.component.CC;
import com.jess.arms.base.BaseApplication;
/**
* @author billy.qi
* @since 17/11/20 20:02
*/
public class MyApp extends BaseApplication {
@Override
public void onCreate() {
super.onCreate();
CC.enableVerboseLog(true);
CC.enableDebug(true);
CC.enableRemoteCC(true);
}
}
<resources>
<string name="main_app_name">Component_Main</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>
package com.gingersoft.gsa.cloud.table;
import com.billy.cc.core.component.CC;
import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.CCUtil;
import com.billy.cc.core.component.IComponent;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.orderManager.OrderCenterActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderPayActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity;
public class ComponentTable implements IComponent {
@Override
public String getName() {
//组件的名称,调用此组件的方式:
// CC.obtainBuilder("ComponentA")...build().callAsync()
return "Component.Manager";
}
/**
* 组件被调用时的入口
* 要确保每个逻辑分支都会调用到CC.sendCCResult,
* 包括try-catch,if-else,switch-case-default,startActivity
* @param cc 组件调用对象,可从此对象中获取相关信息
* @return true:将异步调用CC.sendCCResult(...),用于异步实现相关功能,例如:文件加载、网络请求等
* false:会同步调用CC.sendCCResult(...),即在onCall方法return之前调用,否则将被视为不合法的实现
*/
@Override
public boolean onCall(CC cc) {
String actionName = cc.getActionName();
switch (actionName) {
case "showOrderManagerActivity":
openOrderManagerActivity(cc);
break;
case "showTagManagerActivity":
openTagManagerActivity(cc);
break;
default:
//这个逻辑分支上没有调用CC.sendCCResult(...),是一种错误的示例
//并且方法的返回值为false,代表不会异步调用CC.sendCCResult(...)
//在LocalCCInterceptor中将会返回错误码为-10的CCResult
break;
}
return false;
}
private void openOrderManagerActivity(CC cc) {
// CCUtil.navigateTo(cc, TableActivity.class);
// CC.sendCCResult(cc.getCallId(), CCResult.success());
}
private void openTagManagerActivity(CC cc) {
// CCUtil.navigateTo(cc, OrderPayActivity.class);
// CC.sendCCResult(cc.getCallId(), CCResult.success());
}
}
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportHeight="108"
android:viewportWidth="108">
<path
android:fillType="evenOdd"
android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z"
android:strokeColor="#00000000"
android:strokeWidth="1">
<aapt:attr name="android:fillColor">
<gradient
android:endX="78.5885"
android:endY="90.9159"
android:startX="48.7653"
android:startY="61.0927"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M6.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z"
android:strokeColor="#00000000"
android:strokeWidth="1" />
</vector>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="main_colorPrimary">#008577</color>
<color name="main_colorPrimaryDark">#00574B</color>
<color name="main_colorAccent">#D81B60</color>
<!-- 報表虛線顏色-->
<color name="report_dotted_line_color">#8CA0B3</color>
<color name="report_left_scale">#018EF2</color>
<!-- 報表“昨日”線條顏色-->
<color name="today_line">#FFCC8F</color>
<color name="payment_method_color1">#FF3F4E</color>
<color name="payment_method_color2">#8FC31F</color>
<color name="payment_method_color3">#F19EC2</color>
<color name="payment_method_color4">#EB6100</color>
<color name="payment_method_color5">#AA89BD</color>
<color name="payment_method_color6">#00A0E9</color>
<color name="payment_method_color7">#EFE75E</color>
<color name="payment_method_color8">#5358F1</color>
<color name="payment_method_color9">#ff2d51</color>
<color name="payment_method_color10">#426666</color>
<color name="payment_method_color11">#bce672</color>
<color name="payment_method_color12">#44cef6</color>
<color name="payment_method_color13">#ffa631</color>
<color name="payment_method_color14">#a3d900</color>
<color name="payment_method_color15">#f00056</color>
<color name="payment_method_color16">#bf242a</color>
<color name="payment_method_color17">#a1afc9</color>
<color name="payment_method_color18">#c89c23</color>
<color name="payment_method_color19">#e4c6d0</color>
<color name="payment_method_color20">#103371</color>
</resources>
<resources>
<dimen name="main_fab_margin">16dp</dimen>
<dimen name="main_recyclerview_marginLeft">@dimen/dp_15</dimen>
<dimen name="main_recyclerview_marginRight">@dimen/dp_15</dimen>
<dimen name="main_page_radius">@dimen/dp_12</dimen>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="main_home_refresh" type="id"/>
<item name="main_home_msg" type="id"/>
</resources>
\ No newline at end of file
<resources>
<string name="main_app_name">GSA-Cloud</string>
<string name="main">首頁</string>
<string name="report">报表</string>
<string name="my">我的</string>
<string name="turnover_today">今日營業額($)</string>
<string name="cutoff">截止</string>
<string name="total_amount_of_project">項目總金額</string>
<string name="number_of_consumers">消費人數</string>
<string name="bill_number">賬單數</string>
<string name="main_action_settings">Settings</string>
<string name="configuration">配置</string>
<string name="home_page">首頁</string>
<string name="minqing">沽清</string>
<string name="data_down">數據下載</string>
<string name="function_table_service">餐檯服務</string>
<string name="function_report">報表</string>
<string name="function_manage">管理选项</string>
<string name="function_soldout_ctrl">沽清控制</string>
<string name="quit_system">退出系統</string>
<string name="format_one_point">%1$.1f</string>
</resources>
<resources>
<!-- Base application theme. -->
<style name="main_AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/main_colorPrimary</item>
<item name="colorPrimaryDark">@color/main_colorPrimaryDark</item>
<item name="colorAccent">@color/main_colorAccent</item>
</style>
</resources>
package com.gingersoft.cloud.gsa;
import org.junit.Test;
import java.math.BigDecimal;
import static org.junit.Assert.*;
/**
* Example local unit test, which will execute on the development machine (host).
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
public class ExampleUnitTest {
@Test
public void addition_isCorrect() {
assertEquals(4, 2 + 2);
BigDecimal bigDecimal = new BigDecimal(13.456);
// BigDecimal bigDecimal2 = new BigDecimal(1.56);
System.out.println("bigDecimal: "+bigDecimal.setScale(2, BigDecimal.ROUND_DOWN).doubleValue());
}
}
\ No newline at end of file
......@@ -17,6 +17,7 @@ import com.gingersoft.gsa.cloud.base.adapter.print.KitChenPrintFoodAdapter;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.BillingBean;
import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
import com.gingersoft.gsa.cloud.base.common.bean.PayMethod;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage;
......@@ -281,8 +282,9 @@ public class PrintUtils {
//總金額
mTvTotalAmount.setText(totalAmount + "");
List<PayMethod> payBillMoneys = MyOrderManage.getInstance().getBillMoney();
rvPayType.setLayoutManager(new LinearLayoutManager(context));
rvPayType.setAdapter(new BillTypeAdapter(MyOrderManage.getInstance().getBillMoney()));
rvPayType.setAdapter(new BillTypeAdapter(payBillMoneys));
//加载条形码
// ImageView ivBarCode = view.findViewById(R.id.iv_bar_code);
// ivBarCode.setImageBitmap(BitmapUtil.generateBitmap("12312112131", 2, 450, 150));
......
......@@ -24,6 +24,6 @@ public class BillTypeAdapter extends BaseQuickAdapter<PayMethod, BaseViewHolder>
@Override
protected void convert(BaseViewHolder helper, PayMethod item) {
helper.setText(R.id.tv_total_amount_text, item.getPayName());
helper.setText(R.id.tv_total_amount, item.getPayMoney() + "");
helper.setText(R.id.tv_total_amount, "$" + item.getPayMoney());
}
}
......@@ -68,7 +68,7 @@ public class CurrentAndroidSetting {
private boolean MemberLoginCover = true;
private String LanageName = "中文,粵語,英文";
private int DataLanguage = 2;
private int AutoQuitTime = 20;
private int AutoQuitTime = 600;
private int ModFunctionBarHeight = 60;
private int BottomBarHeight = 160;
private int ReportFontSize = 15;
......
......@@ -15,7 +15,7 @@ public class TableBean {
/**
* success : true
* sysTime : 1577590318253
* data : [{"id":25839,"tableName":"ceshitai1*","restaurantId":26,"qrCode":"d662883361ef0e815f12b7cf46763bba","seatCount":99,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1663.jpg","posTableId":1663,"serviceCharge":0,"memberId":0,"status":0},{"id":25838,"tableName":"51536","restaurantId":26,"qrCode":"cdd289dde16bb5998e42eab48e05d8d1","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1699.jpg","posTableId":1699,"serviceCharge":0,"memberId":0,"status":0},{"id":25837,"tableName":"51535","restaurantId":26,"qrCode":"07c059af8f307df3d118c5d6f814254e","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1698.jpg","posTableId":1698,"serviceCharge":0,"memberId":0,"status":0},{"id":25836,"tableName":"51534","restaurantId":26,"qrCode":"ff3d6a71472909a952071f9ea4493641","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1697.jpg","posTableId":1697,"serviceCharge":0,"memberId":0,"status":0},{"id":25835,"tableName":"51533","restaurantId":26,"qrCode":"0a86777963a81d0c5b1c04d5cc56ed19","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1696.jpg","posTableId":1696,"serviceCharge":0,"memberId":0,"status":0},{"id":25834,"tableName":"51532","restaurantId":26,"qrCode":"c72e1ac5b96b90c101ad48d9a9f6d128","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1695.jpg","posTableId":1695,"serviceCharge":0,"memberId":0,"status":0},{"id":25833,"tableName":"51520","restaurantId":26,"qrCode":"28fa54e6f9db9997462918ecdceedaa9","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1686.jpg","posTableId":1686,"serviceCharge":0,"memberId":0,"status":0},{"id":25832,"tableName":"51519","restaurantId":26,"qrCode":"7c63442d37b2de50b7ffd6f988ed5b26","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1685.jpg","posTableId":1685,"serviceCharge":0,"memberId":0,"status":0},{"id":25831,"tableName":"51518","restaurantId":26,"qrCode":"1c8302334e515f3e017308e388aef0e8","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1684.jpg","posTableId":1684,"serviceCharge":0,"memberId":0,"status":0},{"id":25830,"tableName":"51516","restaurantId":26,"qrCode":"317b62ad477623ba00086899749c0c32","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1682.jpg","posTableId":1682,"serviceCharge":0,"memberId":0,"status":0},{"id":25829,"tableName":"51515","restaurantId":26,"qrCode":"1ac62a7ec9a498443106c5e6e14357cc","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1681.jpg","posTableId":1681,"serviceCharge":0,"memberId":0,"status":0},{"id":25828,"tableName":"51514","restaurantId":26,"qrCode":"e85979cf15435ad5ea39caedaedfe4c2","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1680.jpg","posTableId":1680,"serviceCharge":0,"memberId":0,"status":0},{"id":25827,"tableName":"51513","restaurantId":26,"qrCode":"46dd4f5513cb190af0dbe9865fe9ea13","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1679.jpg","posTableId":1679,"serviceCharge":0,"memberId":0,"status":0},{"id":25826,"tableName":"51512","restaurantId":26,"qrCode":"05a3af3cfb3428a932228618d696790e","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1678.jpg","posTableId":1678,"serviceCharge":0,"memberId":0,"status":0},{"id":25825,"tableName":"514","restaurantId":26,"qrCode":"e13db03e5192dad8e348c7c733011c83","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1674.jpg","posTableId":1674,"serviceCharge":0,"memberId":0,"status":0},{"id":25824,"tableName":"513","restaurantId":26,"qrCode":"b2c385aa33d96f872e1a1fbf4c191e51","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1673.jpg","posTableId":1673,"serviceCharge":0,"memberId":0,"status":0},{"id":25823,"tableName":"512","restaurantId":26,"qrCode":"84d34c7eb5081888b13ce3f8efa9d36c","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1672.jpg","posTableId":1672,"serviceCharge":0,"memberId":0,"status":0},{"id":25822,"tableName":"511","restaurantId":26,"qrCode":"def509a2970db9dce10c82e79c059897","seatCount":9,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1671.jpg","posTableId":1671,"serviceCharge":0,"memberId":0,"status":0},{"id":25821,"tableName":"510","restaurantId":26,"qrCode":"8782277d116e681fe812755fd13720be","seatCount":8,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1670.jpg","posTableId":1670,"serviceCharge":0,"memberId":0,"status":0},{"id":25820,"tableName":"509","restaurantId":26,"qrCode":"53d4e469b32d21d4ed0954ff378598b2","seatCount":7,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1669.jpg","posTableId":1669,"serviceCharge":0,"memberId":0,"status":0},{"id":25819,"tableName":"508","restaurantId":26,"qrCode":"f2b7f0ed16baeff0deca837e829a67ba","seatCount":6,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1668.jpg","posTableId":1668,"serviceCharge":0,"memberId":0,"status":0},{"id":25818,"tableName":"507","restaurantId":26,"qrCode":"5ea6de6b46a2eafb9c1ce872195444e4","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1667.jpg","posTableId":1667,"serviceCharge":10,"memberId":0,"status":0},{"id":25817,"tableName":"506","restaurantId":26,"qrCode":"7e773dff7015152d69392494e02da713","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1666.jpg","posTableId":1666,"serviceCharge":10,"memberId":0,"status":0},{"id":25816,"tableName":"0505","restaurantId":26,"qrCode":"4c3f9b8d51fd7286dd54e8c11fd99eea","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1665.jpg","posTableId":1665,"serviceCharge":0,"memberId":0,"status":0},{"id":25815,"tableName":"108","restaurantId":26,"qrCode":"b85134d26852031a1ed005ffee68266a","seatCount":8,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1510.jpg","posTableId":1510,"serviceCharge":10,"memberId":0,"status":0},{"id":25814,"tableName":"107","restaurantId":26,"qrCode":"27655b6228307f6f5a6c501152d92b32","seatCount":7,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1509.jpg","posTableId":1509,"serviceCharge":10,"memberId":0,"status":0},{"id":25813,"tableName":"106","restaurantId":26,"qrCode":"e193af113f367968c1ad229e6399fffe","seatCount":4,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1508.jpg","posTableId":1508,"serviceCharge":10,"memberId":0,"status":0},{"id":25812,"tableName":"105","restaurantId":26,"qrCode":"71bf9351bdc53a4ea3c710cb43a55d30","seatCount":4,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1507.jpg","posTableId":1507,"serviceCharge":10,"memberId":0,"status":0},{"id":25811,"tableName":"104","restaurantId":26,"qrCode":"b0f5a3250f68429ecac3ce6a8a48de1f","seatCount":8,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1506.jpg","posTableId":1506,"serviceCharge":10,"memberId":0,"status":0},{"id":25810,"tableName":"103","restaurantId":26,"qrCode":"4b18e8ef46a68a2e8bfaa5d127cc71e3","seatCount":3,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1505.jpg","posTableId":1505,"serviceCharge":10,"memberId":0,"status":0},{"id":25809,"tableName":"102","restaurantId":26,"qrCode":"04b0d5ab1eb36039adf6cee2712e2529","seatCount":1,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1504.jpg","posTableId":1504,"serviceCharge":10,"memberId":0,"status":0},{"id":25808,"tableName":"101","restaurantId":26,"qrCode":"f8248fa4a62825654220fd21d2d2faa1","seatCount":18,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1503.jpg","posTableId":1503,"serviceCharge":10,"memberId":0,"status":0},{"id":25807,"tableName":"21","restaurantId":26,"qrCode":"3b701186636cfa8bf94eb7f0ff5f6469","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1694.jpg","posTableId":1694,"serviceCharge":0,"memberId":0,"status":0},{"id":25806,"tableName":"12","restaurantId":26,"qrCode":"57b2f1b1c232647bbcfb1cf97fedd96e","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1693.jpg","posTableId":1693,"serviceCharge":0,"memberId":0,"status":0},{"id":25805,"tableName":"11A","restaurantId":26,"qrCode":"a41bef856b07c4791353a6249ca4a5e4","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1529.jpg","posTableId":1529,"serviceCharge":10,"memberId":0,"status":0},{"id":25804,"tableName":"11","restaurantId":26,"qrCode":"1fdfbd0ee66f6411f3a0a469bc820722","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1528.jpg","posTableId":1528,"serviceCharge":10,"memberId":0,"status":0},{"id":25803,"tableName":"10A","restaurantId":26,"qrCode":"05c938dd07ab52077b9eb064a894f08a","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1527.jpg","posTableId":1527,"serviceCharge":10,"memberId":0,"status":0},{"id":25802,"tableName":"10","restaurantId":26,"qrCode":"4628a0c6d75b79f8e8b550b1df1bd49c","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1526.jpg","posTableId":1526,"serviceCharge":10,"memberId":0,"status":0},{"id":25801,"tableName":"9A","restaurantId":26,"qrCode":"4e28785bdcad7b3b3d8d65f22fdbee34","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1525.jpg","posTableId":1525,"serviceCharge":10,"memberId":0,"status":0},{"id":25800,"tableName":"9","restaurantId":26,"qrCode":"f445c20d94b6e1a58c7392bb5f8d7b27","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1524.jpg","posTableId":1524,"serviceCharge":10,"memberId":0,"status":0},{"id":25799,"tableName":"8A","restaurantId":26,"qrCode":"e68ca6134b36aef5237bd2d12a4e5c4e","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1523.jpg","posTableId":1523,"serviceCharge":10,"memberId":0,"status":0},{"id":25798,"tableName":"8","restaurantId":26,"qrCode":"74c88421a6d821d57d9775ed0613e38f","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1522.jpg","posTableId":1522,"serviceCharge":10,"memberId":0,"status":0},{"id":25797,"tableName":"7A","restaurantId":26,"qrCode":"38faea30358616dbc92f310411d70ff3","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1521.jpg","posTableId":1521,"serviceCharge":10,"memberId":0,"status":0},{"id":25796,"tableName":"7","restaurantId":26,"qrCode":"dce3a52917441087b753f7ab17493be2","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1520.jpg","posTableId":1520,"serviceCharge":10,"memberId":0,"status":0},{"id":25795,"tableName":"6","restaurantId":26,"qrCode":"d8c60dd1bc20eed80251c4cdfe98932b","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1519.jpg","posTableId":1519,"serviceCharge":10,"memberId":0,"status":0},{"id":25794,"tableName":"5","restaurantId":26,"qrCode":"254dcd36c73370096e87207ba5daae1a","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1518.jpg","posTableId":1518,"serviceCharge":10,"memberId":0,"status":0},{"id":25793,"tableName":"4A","restaurantId":26,"qrCode":"5bd3086eeed03e5468e0b025b3ed4f58","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1517.jpg","posTableId":1517,"serviceCharge":10,"memberId":0,"status":0},{"id":25792,"tableName":"4","restaurantId":26,"qrCode":"e51d2b29e0f25a5cd771631666e8e1e2","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1516.jpg","posTableId":1516,"serviceCharge":10,"memberId":0,"status":0},{"id":25791,"tableName":"3A","restaurantId":26,"qrCode":"6871c3888afa1e0a1f99330cb14eb77c","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1515.jpg","posTableId":1515,"serviceCharge":10,"memberId":0,"status":0},{"id":25790,"tableName":"3","restaurantId":26,"qrCode":"e2c097d8b5ff4bb11200a4116cf6ec8b","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1514.jpg","posTableId":1514,"serviceCharge":10,"memberId":0,"status":0},{"id":25789,"tableName":"2A","restaurantId":26,"qrCode":"6d915b7bbe74a3c14047b803c88af8bc","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1513.jpg","posTableId":1513,"serviceCharge":10,"memberId":0,"status":0},{"id":25788,"tableName":"2","restaurantId":26,"qrCode":"2b4ca912ac7ec5f5aff8edae64c8294d","seatCount":9,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1512.jpg","posTableId":1512,"serviceCharge":10,"memberId":0,"status":0},{"id":25787,"tableName":"1","restaurantId":26,"qrCode":"278106ae274f310ce18d59909e08c767","seatCount":9,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1511.jpg","posTableId":1511,"serviceCharge":10,"memberId":0,"status":0},{"id":25786,"tableName":"天字号","restaurantId":26,"qrCode":"0155edb9ceaf03ad6514ebae009d5895","seatCount":999,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1662.jpg","posTableId":1662,"serviceCharge":0,"memberId":0,"status":0},{"id":25785,"tableName":"测试餐桌","restaurantId":26,"qrCode":"c500e99c1bc91a9f85b09c86df4f6df2","seatCount":21,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1664.jpg","posTableId":1664,"serviceCharge":10,"memberId":0,"status":0}]
* data : [{"id":25839,"tableName":"ceshitai1*","restaurantId":26,"qrCode":"d662883361ef0e815f12b7cf46763bba","seatCount":99,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1663.jpg","posTableId":1663,"serviceCharge":0,"memberId":0,"status":0,"sort":0},{"id":25838,"tableName":"51536","restaurantId":26,"qrCode":"cdd289dde16bb5998e42eab48e05d8d1","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1699.jpg","posTableId":1699,"serviceCharge":0,"memberId":0,"status":0},{"id":25837,"tableName":"51535","restaurantId":26,"qrCode":"07c059af8f307df3d118c5d6f814254e","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1698.jpg","posTableId":1698,"serviceCharge":0,"memberId":0,"status":0},{"id":25836,"tableName":"51534","restaurantId":26,"qrCode":"ff3d6a71472909a952071f9ea4493641","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1697.jpg","posTableId":1697,"serviceCharge":0,"memberId":0,"status":0},{"id":25835,"tableName":"51533","restaurantId":26,"qrCode":"0a86777963a81d0c5b1c04d5cc56ed19","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1696.jpg","posTableId":1696,"serviceCharge":0,"memberId":0,"status":0},{"id":25834,"tableName":"51532","restaurantId":26,"qrCode":"c72e1ac5b96b90c101ad48d9a9f6d128","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1695.jpg","posTableId":1695,"serviceCharge":0,"memberId":0,"status":0},{"id":25833,"tableName":"51520","restaurantId":26,"qrCode":"28fa54e6f9db9997462918ecdceedaa9","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1686.jpg","posTableId":1686,"serviceCharge":0,"memberId":0,"status":0},{"id":25832,"tableName":"51519","restaurantId":26,"qrCode":"7c63442d37b2de50b7ffd6f988ed5b26","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1685.jpg","posTableId":1685,"serviceCharge":0,"memberId":0,"status":0},{"id":25831,"tableName":"51518","restaurantId":26,"qrCode":"1c8302334e515f3e017308e388aef0e8","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1684.jpg","posTableId":1684,"serviceCharge":0,"memberId":0,"status":0},{"id":25830,"tableName":"51516","restaurantId":26,"qrCode":"317b62ad477623ba00086899749c0c32","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1682.jpg","posTableId":1682,"serviceCharge":0,"memberId":0,"status":0},{"id":25829,"tableName":"51515","restaurantId":26,"qrCode":"1ac62a7ec9a498443106c5e6e14357cc","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1681.jpg","posTableId":1681,"serviceCharge":0,"memberId":0,"status":0},{"id":25828,"tableName":"51514","restaurantId":26,"qrCode":"e85979cf15435ad5ea39caedaedfe4c2","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1680.jpg","posTableId":1680,"serviceCharge":0,"memberId":0,"status":0},{"id":25827,"tableName":"51513","restaurantId":26,"qrCode":"46dd4f5513cb190af0dbe9865fe9ea13","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1679.jpg","posTableId":1679,"serviceCharge":0,"memberId":0,"status":0},{"id":25826,"tableName":"51512","restaurantId":26,"qrCode":"05a3af3cfb3428a932228618d696790e","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1678.jpg","posTableId":1678,"serviceCharge":0,"memberId":0,"status":0},{"id":25825,"tableName":"514","restaurantId":26,"qrCode":"e13db03e5192dad8e348c7c733011c83","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1674.jpg","posTableId":1674,"serviceCharge":0,"memberId":0,"status":0},{"id":25824,"tableName":"513","restaurantId":26,"qrCode":"b2c385aa33d96f872e1a1fbf4c191e51","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1673.jpg","posTableId":1673,"serviceCharge":0,"memberId":0,"status":0},{"id":25823,"tableName":"512","restaurantId":26,"qrCode":"84d34c7eb5081888b13ce3f8efa9d36c","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1672.jpg","posTableId":1672,"serviceCharge":0,"memberId":0,"status":0},{"id":25822,"tableName":"511","restaurantId":26,"qrCode":"def509a2970db9dce10c82e79c059897","seatCount":9,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1671.jpg","posTableId":1671,"serviceCharge":0,"memberId":0,"status":0},{"id":25821,"tableName":"510","restaurantId":26,"qrCode":"8782277d116e681fe812755fd13720be","seatCount":8,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1670.jpg","posTableId":1670,"serviceCharge":0,"memberId":0,"status":0},{"id":25820,"tableName":"509","restaurantId":26,"qrCode":"53d4e469b32d21d4ed0954ff378598b2","seatCount":7,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1669.jpg","posTableId":1669,"serviceCharge":0,"memberId":0,"status":0},{"id":25819,"tableName":"508","restaurantId":26,"qrCode":"f2b7f0ed16baeff0deca837e829a67ba","seatCount":6,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1668.jpg","posTableId":1668,"serviceCharge":0,"memberId":0,"status":0},{"id":25818,"tableName":"507","restaurantId":26,"qrCode":"5ea6de6b46a2eafb9c1ce872195444e4","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1667.jpg","posTableId":1667,"serviceCharge":10,"memberId":0,"status":0},{"id":25817,"tableName":"506","restaurantId":26,"qrCode":"7e773dff7015152d69392494e02da713","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1666.jpg","posTableId":1666,"serviceCharge":10,"memberId":0,"status":0},{"id":25816,"tableName":"0505","restaurantId":26,"qrCode":"4c3f9b8d51fd7286dd54e8c11fd99eea","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1665.jpg","posTableId":1665,"serviceCharge":0,"memberId":0,"status":0},{"id":25815,"tableName":"108","restaurantId":26,"qrCode":"b85134d26852031a1ed005ffee68266a","seatCount":8,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1510.jpg","posTableId":1510,"serviceCharge":10,"memberId":0,"status":0},{"id":25814,"tableName":"107","restaurantId":26,"qrCode":"27655b6228307f6f5a6c501152d92b32","seatCount":7,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1509.jpg","posTableId":1509,"serviceCharge":10,"memberId":0,"status":0},{"id":25813,"tableName":"106","restaurantId":26,"qrCode":"e193af113f367968c1ad229e6399fffe","seatCount":4,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1508.jpg","posTableId":1508,"serviceCharge":10,"memberId":0,"status":0},{"id":25812,"tableName":"105","restaurantId":26,"qrCode":"71bf9351bdc53a4ea3c710cb43a55d30","seatCount":4,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1507.jpg","posTableId":1507,"serviceCharge":10,"memberId":0,"status":0},{"id":25811,"tableName":"104","restaurantId":26,"qrCode":"b0f5a3250f68429ecac3ce6a8a48de1f","seatCount":8,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1506.jpg","posTableId":1506,"serviceCharge":10,"memberId":0,"status":0},{"id":25810,"tableName":"103","restaurantId":26,"qrCode":"4b18e8ef46a68a2e8bfaa5d127cc71e3","seatCount":3,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1505.jpg","posTableId":1505,"serviceCharge":10,"memberId":0,"status":0},{"id":25809,"tableName":"102","restaurantId":26,"qrCode":"04b0d5ab1eb36039adf6cee2712e2529","seatCount":1,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1504.jpg","posTableId":1504,"serviceCharge":10,"memberId":0,"status":0},{"id":25808,"tableName":"101","restaurantId":26,"qrCode":"f8248fa4a62825654220fd21d2d2faa1","seatCount":18,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1503.jpg","posTableId":1503,"serviceCharge":10,"memberId":0,"status":0},{"id":25807,"tableName":"21","restaurantId":26,"qrCode":"3b701186636cfa8bf94eb7f0ff5f6469","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1694.jpg","posTableId":1694,"serviceCharge":0,"memberId":0,"status":0},{"id":25806,"tableName":"12","restaurantId":26,"qrCode":"57b2f1b1c232647bbcfb1cf97fedd96e","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1693.jpg","posTableId":1693,"serviceCharge":0,"memberId":0,"status":0},{"id":25805,"tableName":"11A","restaurantId":26,"qrCode":"a41bef856b07c4791353a6249ca4a5e4","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1529.jpg","posTableId":1529,"serviceCharge":10,"memberId":0,"status":0},{"id":25804,"tableName":"11","restaurantId":26,"qrCode":"1fdfbd0ee66f6411f3a0a469bc820722","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1528.jpg","posTableId":1528,"serviceCharge":10,"memberId":0,"status":0},{"id":25803,"tableName":"10A","restaurantId":26,"qrCode":"05c938dd07ab52077b9eb064a894f08a","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1527.jpg","posTableId":1527,"serviceCharge":10,"memberId":0,"status":0},{"id":25802,"tableName":"10","restaurantId":26,"qrCode":"4628a0c6d75b79f8e8b550b1df1bd49c","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1526.jpg","posTableId":1526,"serviceCharge":10,"memberId":0,"status":0},{"id":25801,"tableName":"9A","restaurantId":26,"qrCode":"4e28785bdcad7b3b3d8d65f22fdbee34","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1525.jpg","posTableId":1525,"serviceCharge":10,"memberId":0,"status":0},{"id":25800,"tableName":"9","restaurantId":26,"qrCode":"f445c20d94b6e1a58c7392bb5f8d7b27","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1524.jpg","posTableId":1524,"serviceCharge":10,"memberId":0,"status":0},{"id":25799,"tableName":"8A","restaurantId":26,"qrCode":"e68ca6134b36aef5237bd2d12a4e5c4e","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1523.jpg","posTableId":1523,"serviceCharge":10,"memberId":0,"status":0},{"id":25798,"tableName":"8","restaurantId":26,"qrCode":"74c88421a6d821d57d9775ed0613e38f","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1522.jpg","posTableId":1522,"serviceCharge":10,"memberId":0,"status":0},{"id":25797,"tableName":"7A","restaurantId":26,"qrCode":"38faea30358616dbc92f310411d70ff3","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1521.jpg","posTableId":1521,"serviceCharge":10,"memberId":0,"status":0},{"id":25796,"tableName":"7","restaurantId":26,"qrCode":"dce3a52917441087b753f7ab17493be2","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1520.jpg","posTableId":1520,"serviceCharge":10,"memberId":0,"status":0},{"id":25795,"tableName":"6","restaurantId":26,"qrCode":"d8c60dd1bc20eed80251c4cdfe98932b","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1519.jpg","posTableId":1519,"serviceCharge":10,"memberId":0,"status":0},{"id":25794,"tableName":"5","restaurantId":26,"qrCode":"254dcd36c73370096e87207ba5daae1a","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1518.jpg","posTableId":1518,"serviceCharge":10,"memberId":0,"status":0},{"id":25793,"tableName":"4A","restaurantId":26,"qrCode":"5bd3086eeed03e5468e0b025b3ed4f58","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1517.jpg","posTableId":1517,"serviceCharge":10,"memberId":0,"status":0},{"id":25792,"tableName":"4","restaurantId":26,"qrCode":"e51d2b29e0f25a5cd771631666e8e1e2","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1516.jpg","posTableId":1516,"serviceCharge":10,"memberId":0,"status":0},{"id":25791,"tableName":"3A","restaurantId":26,"qrCode":"6871c3888afa1e0a1f99330cb14eb77c","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1515.jpg","posTableId":1515,"serviceCharge":10,"memberId":0,"status":0},{"id":25790,"tableName":"3","restaurantId":26,"qrCode":"e2c097d8b5ff4bb11200a4116cf6ec8b","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1514.jpg","posTableId":1514,"serviceCharge":10,"memberId":0,"status":0},{"id":25789,"tableName":"2A","restaurantId":26,"qrCode":"6d915b7bbe74a3c14047b803c88af8bc","seatCount":0,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1513.jpg","posTableId":1513,"serviceCharge":10,"memberId":0,"status":0},{"id":25788,"tableName":"2","restaurantId":26,"qrCode":"2b4ca912ac7ec5f5aff8edae64c8294d","seatCount":9,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1512.jpg","posTableId":1512,"serviceCharge":10,"memberId":0,"status":0},{"id":25787,"tableName":"1","restaurantId":26,"qrCode":"278106ae274f310ce18d59909e08c767","seatCount":9,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1511.jpg","posTableId":1511,"serviceCharge":10,"memberId":0,"status":0},{"id":25786,"tableName":"天字号","restaurantId":26,"qrCode":"0155edb9ceaf03ad6514ebae009d5895","seatCount":999,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1662.jpg","posTableId":1662,"serviceCharge":0,"memberId":0,"status":0},{"id":25785,"tableName":"测试餐桌","restaurantId":26,"qrCode":"c500e99c1bc91a9f85b09c86df4f6df2","seatCount":21,"createTime":"Dec 28, 2019 3:37:41 PM","createBy":"GSPOS","qrCodeImg":"http://localhost/qrcode/tableQrcode-26-1664.jpg","posTableId":1664,"serviceCharge":10,"memberId":0,"status":0}]
*/
private boolean success;
......@@ -71,6 +71,7 @@ public class TableBean {
* status : 0
* person : 2
* useStatus: 0
* sort : 0
*/
private int id;
......@@ -101,6 +102,11 @@ public class TableBean {
* 使用狀態
*/
private int useStatus;
/**
* 排序
*/
private int sort;
public DataBean() {
}
......@@ -120,6 +126,7 @@ public class TableBean {
this.status = dataBean.status;
this.person = dataBean.person;
this.useStatus = dataBean.useStatus;
this.sort = dataBean.sort;
}
public int getPerson() {
......@@ -138,7 +145,6 @@ public class TableBean {
this.useStatus = useStatus;
}
public int getId() {
return id;
}
......@@ -235,5 +241,12 @@ public class TableBean {
this.status = status;
}
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
}
}
......@@ -55,8 +55,8 @@ public class MyOrderManage {
/**本次支付方式,用於打印*/
private List<PayMethod> billMoney = new ArrayList<>();
/**是不是修改訂單操作*/
private boolean modifyOrder=false;
/**記錄修改訂單操作*/
private boolean modifyOrder = false;
public long getOrderId() {
if (orderBean != null) {
......
......@@ -19,8 +19,6 @@ public class OpenTableManage {
private TableBean.DataBean tableBean;
//使用狀態
private int useStatus;
//是否刷新數據
private boolean isRefresh = false;
//開台人數
private int peopleNumber = 0;
//是否分檯
......@@ -28,9 +26,6 @@ public class OpenTableManage {
//分檯編號
private String splitNo;
//訂單ID
// private int orderId ;
public static OpenTableManage getDefault() {
if (sDefaultOpenTableManage == null) {
sDefaultOpenTableManage = new OpenTableManage();
......@@ -39,7 +34,10 @@ public class OpenTableManage {
}
public void clear() {
tableBean = null;
peopleNumber = 0;
isSplite = false;
splitNo = "";
}
public TableBean.DataBean getTableBean() {
......@@ -58,14 +56,6 @@ public class OpenTableManage {
this.useStatus = useStatus;
}
public boolean isRefresh() {
return isRefresh;
}
public void setRefresh(boolean refresh) {
isRefresh = refresh;
}
public int getPeopleNumber() {
return peopleNumber;
}
......
package com.gingersoft.gsa.cloud.base.utils;
import android.content.Context;
import android.text.TextUtils;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.ui.bean.mode.LoginBean;
import java.util.ArrayList;
import java.util.List;
/**
......@@ -13,12 +18,21 @@ import java.util.List;
*/
public class RestaurantInfoUtils {
public static List<LoginBean.DataBean.UserBean.BrandsBean> getBrandList(Context context) {
String brandRestaurantInfos = GsaCloudApplication.getBrandRestaurantInfos(context);
if (!TextUtils.isEmpty(brandRestaurantInfos)) {
List<LoginBean.DataBean.UserBean.BrandsBean> brandsBeans = JsonUtils.parseArray(brandRestaurantInfos, LoginBean.DataBean.UserBean.BrandsBean.class);
return brandsBeans;
}
return new ArrayList<>();
}
public static int getRestaurantSize(List<LoginBean.DataBean.UserBean.BrandsBean> brands) {
public static int getRestaurantSize(Context context) {
int size = 0;
for (int i = 0; i < brands.size(); i++) {
if (brands.get(i).getRestaurants() != null)
size += brands.get(i).getRestaurants().size();
List<LoginBean.DataBean.UserBean.BrandsBean> brandsBeans = getBrandList(context);
for (int i = 0; i < getBrandList(context).size(); i++) {
if (brandsBeans.get(i).getRestaurants() != null)
size += brandsBeans.get(i).getRestaurants().size();
}
return size;
}
......
......@@ -24,10 +24,11 @@ import com.gingersoft.gsa.cloud.base.utils.constans.HttpsConstans;
import com.gingersoft.gsa.cloud.base.utils.file.FileUtils;
import com.gingersoft.gsa.cloud.base.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.base.utils.okhttpUtils.OkHttp3Utils;
import com.gingersoft.gsa.cloud.base.utils.other.AppUtils;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.jess.arms.utils.DeviceUtils;
import com.qmuiteam.qmui.util.QMUIDeviceHelper;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import java.io.File;
import java.io.FileInputStream;
......@@ -176,8 +177,8 @@ public class AppCrashHandler implements UncaughtExceptionHandler {
System.arraycopy(trace, 0, trace2, 0, trace.length);
trace2[trace.length + 0] = new StackTraceElement("Android", "MODEL", Build.MODEL, -1);
trace2[trace.length + 1] = new StackTraceElement("Android", "VERSION", Build.VERSION.RELEASE, -1);
trace2[trace.length + 2] = new StackTraceElement("Gsa-Could", "APP_VERSION_CODE", AppUtils.getVerCode(mContext) + "", -1);
trace2[trace.length + 3] = new StackTraceElement("Gsa-Could", "APP_VERSION_NAME", AppUtils.getVerName(mContext), -1);
trace2[trace.length + 2] = new StackTraceElement("Gsa-Could", "APP_VERSION_CODE", DeviceUtils.getVersionCode(mContext) + "", -1);
trace2[trace.length + 3] = new StackTraceElement("Gsa-Could", "APP_VERSION_NAME", DeviceUtils.getVersionName(mContext), -1);
trace2[trace.length + 4] = new StackTraceElement("Android", "FINGERPRINT", Build.FINGERPRINT, -1);
// 追加信息,因为后面会回调默认的处理方法
ex.setStackTrace(trace2);
......
package com.gingersoft.gsa.cloud.base.utils.mobile;
import android.content.Context;
import android.content.SharedPreferences;
import android.provider.Settings;
import android.telephony.TelephonyManager;
import java.io.UnsupportedEncodingException;
import java.util.UUID;
/**
* 生成手机设备唯一UUID
*/
public class DeviceUuidFactory {
protected static final String PREFS_FILE = "device_id.xml";
protected static final String PREFS_DEVICE_ID = "device_id";
protected static UUID uuid;
public DeviceUuidFactory(Context context) {
if (uuid == null) {
synchronized (DeviceUuidFactory.class) {
if (uuid == null) {
final SharedPreferences prefs = context.getSharedPreferences(PREFS_FILE, 0);
final String id = prefs.getString(PREFS_DEVICE_ID, null);
if (id != null) {
// Use the ids previously computed and stored in the prefs file
uuid = UUID.fromString(id);
} else {
final String androidId = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
// Use the Android ID unless it's broken, in which case fallback on deviceId,
// unless it's not available, then fallback on a random number which we store
// to a prefs file
try {
if (!"9774d56d682e549c".equals(androidId)) {
uuid = UUID.nameUUIDFromBytes(androidId.getBytes("utf8"));
} else {
final String deviceId = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();
uuid = deviceId != null ? UUID.nameUUIDFromBytes(deviceId.getBytes("utf8")) : UUID.randomUUID();
}
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
// Write the value out to the prefs file
prefs.edit().putString(PREFS_DEVICE_ID, uuid.toString()).commit();
}
}
}
}
}
/**
* 返回当前Android设备的唯一UUID。与所有UUID一样,这个独特的ID“非常可靠”
* 在所有Android设备上都是独一无二的。比ANDROID_ID好多了。
* UUID是通过使用ANDROID_ID作为基本密钥(如果适用)生成的
* TelephonyManager.getDeviceID()如果ANDROID_ID已知不正确,最后回落
* 在一个随机的UUID上,如果getDeviceID()不返回,那么它会持续到SharedPreferences
* 可用价值。
* 在极少数情况下,此ID可能会改变。特别是,如果设备出厂设置了新的设备ID
* 可能会生成。另外,如果用户从Android2.2的某些错误实施中升级他们的手机
* 到更新的,非bug的版本的Android,设备ID可能会改变。或者,如果用户卸载您的应用程序
* 没有适当的Android ID和设备ID的设备,此ID可能会在重新安装时更改。
* 请注意,如果代码使用TelephonyManager.getDeviceId()返回,则生成的ID不会
* 出厂复位后更换。需要注意的事项
* 在直接使用ANDROID_ID时,适用于许多设备的Android2.2中的错误。**
*
* @http ://code.google.com/p/android/issues/detail?id=10603
* @返回一个UUID ,可用于为大多数用途唯一标识您的设备。
**/
public UUID getDeviceUuid() {
return uuid;
}
}
package com.gingersoft.gsa.cloud.base.utils.mobile;
import android.content.Context;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.UUID;
/**
* 应用安装唯一ID
*这种方式的原理是在程序安装后第一次运行时生成一个ID,
*该方式和设备唯一标识不一样,不同的应用程序会产生不同的ID,
*同一个程序重新安装也会不同。所以这不是设备的唯一ID,
*但是可以保证每个用户的ID是不同的。
*可以说是用来标识每一份应用程序的唯一ID(即Installtion ID),
*可以用来跟踪应用的安装数量等
*/
public class Installation {
private static String sID = null;
private static final String INSTALLATION = "INSTALLATION";
public synchronized static String id(Context context) {
if (sID == null) {
File installation = new File(context.getFilesDir(), INSTALLATION);
try {
if (!installation.exists())
writeInstallationFile(installation);
sID = readInstallationFile(installation);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return sID;
}
private static String readInstallationFile(File installation) throws IOException {
RandomAccessFile f = new RandomAccessFile(installation, "r");
byte[] bytes = new byte[(int) f.length()];
f.readFully(bytes);
f.close();
return new String(bytes);
}
private static void writeInstallationFile(File installation) throws IOException {
FileOutputStream out = new FileOutputStream(installation);
String id = UUID.randomUUID().toString();
out.write(id.getBytes());
out.close();
}
}
......@@ -3,14 +3,13 @@ package com.gingersoft.gsa.cloud.base.utils.okhttpUtils;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.constans.AppConstans;
import com.gingersoft.gsa.cloud.base.utils.encryption.Aes;
import com.gingersoft.gsa.cloud.base.utils.other.AppUtils;
import com.jess.arms.utils.DeviceUtils;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
......@@ -248,7 +247,7 @@ public class OkHttp3Utils {
builder.set("mobileVersion", android.os.Build.VERSION.RELEASE);//set表示name1是唯一的,会覆盖掉已经存在的,add不会覆盖已经存在的头,可以存在多个
builder.set("mobielModel", android.os.Build.MODEL);
builder.set("apptype", AppConstans.APP_TYPE);
builder.set("appinfo", AppUtils.getVerName(GsaCloudApplication.getAppContext()));
builder.set("appinfo", DeviceUtils.getVersionName(GsaCloudApplication.getAppContext()));
builder.set("mobileId", "1");
if (GsaCloudApplication.isLogin)
builder.set("token", token);
......
package com.gingersoft.gsa.cloud.base.utils.other;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.text.TextUtils;
import com.gingersoft.gsa.cloud.base.utils.log.LogUtil;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* @ClassName: AppUtil
* @Description:TODO(App相关的辅助类)
*/
public class AppUtils {
/**
* 获取应用程序名称
*
* @param context
* @return
*/
public static String getAppName(Context context) {
try {
PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo(
context.getPackageName(), 0);
int labelRes = packageInfo.applicationInfo.labelRes;
return context.getResources().getString(labelRes);
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
/**
* 获取版本号
*
* @param context
* @return
*/
public static int getVerCode(Context context) {
int verCode = -1;
try {
verCode = context.getPackageManager().getPackageInfo(
context.getPackageName(), 0).versionCode;
} catch (NameNotFoundException e) {
e.printStackTrace();
LogUtil.e(e.getMessage());
}
return verCode;
}
/**
* 获取版本名称
*
* @param context
* @return
*/
public static String getVerName(Context context) {
String verName = "";
try {
verName = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName;
} catch (NameNotFoundException e) {
LogUtil.e(e.getMessage());
}
return verName;
}
/**
* 获取手机mac地址
*
* @param context
* @return
*/
public static String getLocalMacAddress(Context context) {
WifiManager wifi = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
return info.getMacAddress();
}
/**
* 启动到应用商店app详情界面
*
* @param appPkg 目标App的包名
* @param marketPkg 应用商店包名 ,如果为""则由系统弹出应用商店列表供用户选择,否则调转到目标市场的应用详情界面,某些应用商店可能会失败
*/
public static void launchAppDetail(Context mContext, String appPkg, String marketPkg) throws Exception {
if (TextUtils.isEmpty(appPkg)) return;
Uri uri = Uri.parse("market://details?id=" + appPkg);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
if (!TextUtils.isEmpty(marketPkg)) {
intent.setPackage(marketPkg);
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
}
/**
* 验证是否已安装应用并返回apk信息
*
* @param system//是否过滤掉系统app
* @param packageManager
* @param packageNames//需要验证的apk包名 mapsPackageName==null 返回手机所有已安装apk信息
* @return
*/
public static List<MyAppInfo> scanLocalInstallAppList(boolean system, PackageManager packageManager, ArrayList<String> packageNames) {
List<MyAppInfo> myAppInfos = new ArrayList<MyAppInfo>();
try {
List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);
for (int i = 0; i < packageInfos.size(); i++) {
PackageInfo packageInfo = packageInfos.get(i);
if (system) {
//过滤掉系统app
if ((ApplicationInfo.FLAG_SYSTEM & packageInfo.applicationInfo.flags) != 0) {
continue;
}
}
String packageName = packageInfo.packageName;
int index = i;
if (packageNames != null && packageNames.size() > 0) {
index = packageNames.indexOf(packageName);
if (index == -1) {
continue;
}
LogUtil.e("------------------------" + packageName);
}
MyAppInfo myAppInfo = new MyAppInfo();
myAppInfo.setSort(index);
myAppInfo.setPackageName(packageName);
String str_name = packageInfo.applicationInfo.loadLabel(packageManager).toString();
myAppInfo.setAppName(str_name);
if (packageInfo.applicationInfo.loadIcon(packageManager) == null) {
continue;
}
myAppInfo.setImage(packageInfo.applicationInfo.loadIcon(packageManager));
myAppInfos.add(myAppInfo);
}
} catch (Exception e) {
e.printStackTrace();
}
return myAppInfos;
}
public static class MyAppInfo implements Serializable {
private int sort;
private Drawable image;
private String appName;
private String packageName;
public MyAppInfo(int sort, Drawable image, String appName, String packageName) {
this.sort = sort;
this.image = image;
this.appName = appName;
this.packageName = packageName;
}
public MyAppInfo() {
}
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
public Drawable getImage() {
return image;
}
public void setImage(Drawable image) {
this.image = image;
}
public String getAppName() {
return appName;
}
public void setAppName(String appName) {
this.appName = appName;
}
public String getPackageName() {
return packageName;
}
public void setPackageName(String packageName) {
this.packageName = packageName;
}
}
}
package com.gingersoft.gsa.cloud.base.utils.request;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.constans.UserConstans;
import com.gingersoft.gsa.cloud.base.utils.encryption.MD5;
import com.gingersoft.gsa.cloud.base.utils.mobile.DeviceUuidFactory;
import com.gingersoft.gsa.cloud.base.utils.mobile.Installation;
import com.gingersoft.gsa.cloud.base.utils.other.SPUtils;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.util.UUID;
import static com.gingersoft.gsa.cloud.base.application.GsaCloudApplication.getLoginToken;
/**
* autour: ELEGANT_BIN
* date: 2018/4/9 18:56
* update: 2018/4/9 18:56
* description:
*/
public class RequestUtils {
/**
* @param dataMap
* @param times
* @return
* @Title: getSign
* @Description: TODO(获取签名)
*/
public static String getSign(Context context, Map<String, Object> dataMap, long times) {
String sign = "";
String token = GsaCloudApplication.getLoginToken(context);
if (!TextUtils.isEmpty(token)) {
MD5 md5 = new MD5();
Set<String> set = new TreeSet<>();
Set<String> keys = dataMap.keySet();
set.addAll(keys);
StringBuffer buffer = new StringBuffer();
for (String key : set) {
buffer.append(key);
buffer.append("=");
buffer.append(dataMap.get(key) + "");
}
buffer.append("token=" + token + "");
buffer.append("times=" + times + "");
sign = md5.GetMD5Code(buffer.toString());
Log.e("joe", "bufferStr=====> " + buffer.toString());
}
return sign;
}
private static String getuUid(Context context) {
DeviceUuidFactory deviceUuidFactory = new DeviceUuidFactory(context);
UUID deviceUuid = deviceUuidFactory.getDeviceUuid();
if (deviceUuid != null) {
return deviceUuid.toString();
} else {
return Installation.id(context);
}
}
}
/**
* @company: JOE工作室
* @Copyright: Copyright © 2013 - 2016 joe.All Rights Reserved.
* @Filename: ConvertDpAndPx.java
* @Description: TODO(用一句话描述该文件做什么)
* @Author: JOE
* @Date: 2016-9-2 下午6:16:29
**/
package com.gingersoft.gsa.cloud.base.utils.screen;
/**
* @company: JOE工作室
* @ClassName: ConvertDpAndPx
* @Description: TODO(这里用一句话描述这个类的作用)
* @Author: JOE
* @Date: 2016-9-2 下午6:16:29
*/
import android.content.Context;
public class ConvertDpAndPx {
/**
* dp转换成px,代码写的是像素,而XML中写的是单位密度
* @param context
* @param dp
* @return
*/
public static int Dp2Px(Context context, float dp) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dp * scale + 0.5f);
}
/**
* px转换成dp,代码写的是像素,而XML中(dp)写的是单位密度
* @param context
* @param px
* @return
*/
public static int Px2Dp(Context context, float px) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (px / scale + 0.5f);
}
}
......@@ -3,9 +3,8 @@ package com.gingersoft.gsa.cloud.globalconfig.applyOptions;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.constans.AppConstans;
import com.gingersoft.gsa.cloud.base.utils.encryption.Aes;
import com.gingersoft.gsa.cloud.base.utils.other.AppUtils;
import com.jess.arms.http.GlobalHttpHandler;
import com.jess.arms.utils.DeviceUtils;
import okhttp3.Headers;
import okhttp3.Interceptor;
import okhttp3.Request;
......@@ -41,7 +40,7 @@ public class MyGlobalHttpHandler implements GlobalHttpHandler {
builder.set("mobileVersion", android.os.Build.VERSION.RELEASE);//set表示name1是唯一的,会覆盖掉已经存在的,add不会覆盖已经存在的头,可以存在多个
builder.set("mobielModel", android.os.Build.MODEL);
builder.set("apptype", AppConstans.APP_TYPE);
builder.set("appinfo", AppUtils.getVerName(GsaCloudApplication.getAppContext()));
builder.set("appinfo", DeviceUtils.getVersionName(GsaCloudApplication.getAppContext()));
builder.set("mobileId", "1");
Headers headers = request.headers();
if (headers != null) {
......
......@@ -8,6 +8,8 @@ import android.text.TextUtils;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.base.R;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage;
import com.gingersoft.gsa.cloud.base.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.google.gson.JsonIOException;
......@@ -84,6 +86,11 @@ public class MyResponseErrorListener implements ResponseErrorListener {
dialogBuilder.setTitle("溫馨提示");
dialogBuilder.setMessage(msg);
dialogBuilder.addAction(0, "確認", QMUIDialogAction.ACTION_PROP_NEGATIVE, (dialog, index) -> {
//清空賬單數據
MyOrderManage.getInstance().clear();
//清空開檯數據
OpenTableManage.getDefault().clear();
//修改登錄狀態
GsaCloudApplication.isLogin = false;
CC.obtainBuilder("User.Component.Login")
.setActionName("showActivityA")
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
......@@ -11,7 +11,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="@dimen/dp_5"
android:text="微信" />
android:text="微信: " />
<TextView
android:id="@+id/tv_amount"
......
......@@ -91,7 +91,7 @@
android:layout_marginLeft="20dp"
android:layout_weight="2"
android:background="@drawable/shape_rect_fillet_white_5"
android:drawableRight="@drawable/black_dropdown"
android:drawableRight="@drawable/ic_dropdown_black"
android:gravity="center"
android:paddingLeft="@dimen/normal_space"
android:paddingRight="@dimen/normal_space"
......@@ -116,7 +116,7 @@
android:layout_height="match_parent"
android:layout_weight="2"
android:background="@drawable/shape_rect_fillet_white_5"
android:drawableRight="@drawable/black_dropdown"
android:drawableRight="@drawable/ic_dropdown_black"
android:gravity="center"
android:paddingLeft="@dimen/normal_space"
android:paddingRight="@dimen/normal_space"
......
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tv_name"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="@dimen/dp_15"
android:paddingBottom="@dimen/dp_15"
......
......@@ -10,11 +10,24 @@ package com.gingersoft.gsa.cloud.table.app;
public interface TableOperatTypeConstant {
/**
* 1、分台
* 2、上菜纸
* 3、重置
* 4、转台
* 5、sky_order
* 0#全部
* 1#可使用
* 2#已使用
* 3#已送單
* 4#已印單
*/
int table_status_0 = 0;
int table_status_1 = 1;
int table_status_2 = 2;
int table_status_3 = 3;
int table_status_4 = 4;
/**
* 1#分台
* 2#上菜纸
* 3#重置
* 4#转台
* 5#sky_order
*/
int splite_table_1 = 1;
int print_parper_2 = 2;
......
......@@ -21,6 +21,8 @@ public interface AllTableContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
void showEmptyView(boolean isSuccess, int size, Throwable t);
void setAllTableAdapter(DefaultAdapter adapter);
}
......
......@@ -27,8 +27,6 @@ public interface OrderCenterContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
void showEmptyView(boolean isSuccess, int size, Throwable t);
void returnOrderItemList(List<OrderDetailItem> orderItemList);
void setPageIndex(int index);
......@@ -38,7 +36,6 @@ public interface OrderCenterContract {
AllOrderFragment getCurrentOrderFragment();
int getPageSize();
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
......
......@@ -4,6 +4,8 @@ import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.BaseRespose;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.TableDetail;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.AllOrderFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.AllTableFragment;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel;
......@@ -32,6 +34,8 @@ public interface TableContract {
void returnTableList(List<TableBean.DataBean> dataBeanList);
AllTableFragment getCurrentTableFragment();
void clickTableItem(TableBean.DataBean dataBean);
void onStartRefreshTableData();
......@@ -48,9 +52,12 @@ public interface TableContract {
String getOperatContentText();
void setOperatTitle();
void canceOperat();
void startMealStandActivity();
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
......
......@@ -125,17 +125,6 @@ public class MealStandModel extends BaseModel implements MealStandContract.Model
public Observable<BaseRespose> deleteFood(RequestBody requestBody) {
Observable ob = mRepositoryManager.obtainRetrofitService(MealService.class)
.deleteFood(requestBody)
// .flatMap(new Function<BaseResult, Observable<BaseRespose>>() {
// @Override
// public Observable<BaseRespose> apply(BaseResult info) throws Exception {
// if (MyOrderManage.getInstance().isModifyOrder()) {
// if (info != null && info.isSuccess()) {
// return calculationPrice(MyOrderManage.getInstance().getOrderId());
// }
// }
// return null;
// }
// })
.flatMap(new Function<BaseResult, Observable<BaseRespose>>() {
@Override
public Observable<BaseRespose> apply(BaseResult info) throws Exception {
......
......@@ -33,11 +33,14 @@ public class OrderDetailItem implements Serializable {
* status : 0
* totalAmount : 10
* totalPoints : 0
* amount : 15
* createTime : Mar 14, 2020 1:24:12 PM
* endTime : Mar 14, 2020 1:24:12 PM
* person : 2
* payName : 支付寶
* orderPayType : 0
* tipsPrice : 5
* linePayType : 1
* orderDetails : [{"id":1639952,"orderId":47040,"parentId":0,"productName":"包子","productId":"14520","price":5,"lunchboxPrice":0,"number":1,"type":3,"createTime":"Mar 14, 2020 2:55:02 PM","status":0},{"id":1639953,"orderId":47040,"parentId":0,"productName":"燒麥","productId":"14522","price":5,"lunchboxPrice":0,"number":1,"type":3,"createTime":"Mar 14, 2020 2:55:02 PM","status":0}]
*/
private long id;
......@@ -45,10 +48,15 @@ public class OrderDetailItem implements Serializable {
private String orderNo;
private String tableName;
private int tableId;
/**總金額*/
private double totalAmount;
private int totalPoints;
/**支付金額*/
private double amount;
private String payName;
private String orderPayType;
private double tipsPrice;
private byte linePayType;
/**生成訂單時間*/
private String createTime;
/**結賬時間*/
......@@ -107,6 +115,22 @@ public class OrderDetailItem implements Serializable {
this.orderPayType = orderPayType;
}
public double getTipsPrice() {
return tipsPrice;
}
public void setTipsPrice(double tipsPrice) {
this.tipsPrice = tipsPrice;
}
public byte getLinePayType() {
return linePayType;
}
public void setLinePayType(byte linePayType) {
this.linePayType = linePayType;
}
public String getPayName() {
return payName;
}
......@@ -139,6 +163,14 @@ public class OrderDetailItem implements Serializable {
this.totalPoints = totalPoints;
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
public String getCreateTime() {
return createTime;
}
......
......@@ -21,6 +21,7 @@ import retrofit2.http.POST;
*/
public interface MealService {
@POST("order/send" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> createOrder(@Body RequestBody requestBody);
......
......@@ -22,7 +22,7 @@ public interface OrderPayService {
@POST("orderPay/update" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> updateOrderPay(@Body RequestBody requestBody);
@POST("order/Pay" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
@POST("orderPay/add" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> toOrderPay(@Body RequestBody requestBody);
@GET("restaurant/pay/get" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
......
......@@ -5,6 +5,7 @@ import android.content.Context;
import com.gingersoft.gsa.cloud.base.utils.VibratorUtils;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.table.app.TableOperatTypeConstant;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.TableAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.AllTableFragment;
......@@ -92,15 +93,6 @@ public class AllTablePresenter extends BasePresenter<AllTableContract.Model, All
});
}
public void updateAllTableData(Context context, List<TableBean.DataBean> tableList) {
if (tableList != null) {
mTableList.clear();
initTableByZoneId(tableList);
initTableAdapter(context);
mTableAdapter.notifyDataSetChanged();
}
}
private void initTableByZoneId(List<TableBean.DataBean> tableList) {
// int zoneId = GSAApplication.tableContract.getZoneid();
// if (zoneId == -1) {
......@@ -115,6 +107,135 @@ public class AllTablePresenter extends BasePresenter<AllTableContract.Model, All
// }
}
/**
* 更新全部頁餐檯數據
* @param context
* @param tableList
*/
public void updateAllTableData(Context context, List<TableBean.DataBean> tableList) {
if (tableList != null) {
mTableList.clear();
initTableByZoneId(tableList);
initTableAdapter(context);
mTableAdapter.notifyDataSetChanged();
}
}
/**
* 更新狀態頁餐檯數據
*
* @param context
* @param tableList
*/
public void updateStateTableData(Context context, List<TableBean.DataBean> tableList, int status) {
this.mActivity = (TableActivity) context;
if (tableList != null) {
//这里先清空
mTableList.clear();
if (status == TableOperatTypeConstant.table_status_0) {
//显示全部台号 按照狀態排序
initTableByStauts(tableList);
} else {
//根据状态只显示相应状态台号
filterTableByTableStatus(tableList, status);
}
initTableAdapter(context);
mTableAdapter.notifyDataSetChanged();
}
}
/**
* 根据餐台状态 过滤餐台
* 0#全部
* 1#可使用
* 2#已使用
* 3#已送單
* 4#已印單
* 5#已分檯
*/
public void filterTableByTableStatus(List<TableBean.DataBean> datasBeans, int status) {
if (datasBeans.size() == 0) {
return;
}
switch (status) {
case TableOperatTypeConstant.table_status_1:
for (int i = 0; i < datasBeans.size(); i++) {
if (datasBeans.get(i).getStatus() == 0 && datasBeans.get(i).getUseStatus() == 0) {
mTableList.add(datasBeans.get(i));
}
}
break;
case TableOperatTypeConstant.table_status_2:
for (int i = 0; i < datasBeans.size(); i++) {
if (datasBeans.get(i).getUseStatus() == 1) {
mTableList.add(datasBeans.get(i));
}
}
break;
case TableOperatTypeConstant.table_status_3:
for (int i = 0; i < datasBeans.size(); i++) {
if (datasBeans.get(i).getStatus() == 2 && datasBeans.get(i).getUseStatus() == 0) {
mTableList.add(datasBeans.get(i));
}
}
break;
case TableOperatTypeConstant.table_status_4:
for (int i = 0; i < datasBeans.size(); i++) {
if (datasBeans.get(i).getStatus() == 3 && datasBeans.get(i).getUseStatus() == 0) {
mTableList.add(datasBeans.get(i));
}
}
break;
default:
mTableList.addAll(datasBeans);
break;
}
}
private void initTableByStauts(List<TableBean.DataBean> tableList) {
List<TableBean.DataBean> tb_yellow = new ArrayList<>();
List<TableBean.DataBean> tb_green = new ArrayList<>();
List<TableBean.DataBean> tb_red = new ArrayList<>();
List<TableBean.DataBean> tb_white = new ArrayList<>();
List<TableBean.DataBean> tb_w6 = new ArrayList<>();
List<TableBean.DataBean> tb_unkown = new ArrayList<>();
//黃色=状态=3 , 綠色=2, 紅色=using=1, 白色=0
for (TableBean.DataBean datasBean : tableList) {
if (datasBean.getUseStatus() == 1) {
tb_red.add(datasBean);
} else {
switch (datasBean.getStatus()) {
case 0:
tb_white.add(datasBean);
break;
case 2:
tb_green.add(datasBean);
break;
case 3:
tb_yellow.add(datasBean);
break;
case 6:
tb_w6.add(datasBean);
break;
default:
tb_unkown.add(datasBean);
break;
}
}
}
mTableList.addAll(tb_yellow);
mTableList.addAll(tb_green);
mTableList.addAll(tb_red);
mTableList.addAll(tb_w6);
mTableList.addAll(tb_unkown);
mTableList.addAll(tb_white);
}
/**
* 更新状态以改变餐台
......@@ -122,11 +243,11 @@ public class AllTablePresenter extends BasePresenter<AllTableContract.Model, All
* @param newTableList
*/
public void updataTableItem(List<TableBean.DataBean> newTableList) {
for (int i = 0; i < newTableList.size(); i++) {
TableBean.DataBean newTableBean = newTableList.get(i);
for (int j = 0; j < mTableList.size(); j++) {
TableBean.DataBean tableBean = mTableList.get(j);
if (tableBean.getId() == newTableBean.getId()) {
// for (int i = 0; i < newTableList.size(); i++) {
// TableBean.DataBean newTableBean = newTableList.get(i);
// for (int j = 0; j < mTableList.size(); j++) {
// TableBean.DataBean tableBean = mTableList.get(j);
// if (tableBean.getTableno() == newTableBean.getTableno()) {
// tableBean.setOrderid(newTableBean.getOrderid());
// tableBean.setOrderid_1(newTableBean.getOrderid_1());
// tableBean.setStatus(newTableBean.getStatus());
......@@ -142,12 +263,10 @@ public class AllTablePresenter extends BasePresenter<AllTableContract.Model, All
// tableBean.setPax(newTableBean.getPax());
// tableBean.setQr_code(newTableBean.getQr_code());
// tableBean.setRiceponorderid(newTableBean.getRiceponorderid());
if (!TableActivity.isRefreshData) {
return;
}
mTableAdapter.notifyItemChanged(j);
}
}
}
//
// mTableAdapter.notifyItemChanged(j);
// }
// }
// }
}
}
......@@ -12,12 +12,14 @@ import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage;
import com.gingersoft.gsa.cloud.base.utils.other.SPUtils;
import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.contract.BaseOrderContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.BillOrderMoney;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.AddOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.CreateOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.model.constant.MealConstant;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderContentActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.OrderMoneyAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter;
......@@ -30,6 +32,9 @@ import com.jess.arms.utils.RxLifecycleUtils;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
import org.simple.eventbus.EventBus;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
......@@ -98,8 +103,8 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
private final String noFoodDeliveryTip = "賬單沒有食品,是否開台?";
void saveCreateTime(long createTime){
if(OpenTableManage.getDefault().getTableBean() == null){
void saveCreateTime(long createTime) {
if (OpenTableManage.getDefault().getTableBean() == null) {
OpenTableManage.getDefault().setTableBean(new TableBean.DataBean());
}
OpenTableManage.getDefault().getTableBean().setCreateTime(TimeUtils.getTime(createTime, TimeUtils.DEFAULT_DATE_FORMAT));
......@@ -161,12 +166,14 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
@Override
public void onItemClick(OrderDetail datasBean, int position) {
mRootView.recordOperat(true);
orderSelectPosition = position;
mSelectMealAdapter.setMyOrderManageSelectPosition();
}
@Override
public void onMealCountDelete(OrderDetail datasBean, int position) {
mRootView.recordOperat(true);
if (datasBean.getNumber() == 1) {
mSelectMealAdapter.removeFoodItem();
} else {
......@@ -181,6 +188,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
@Override
public void onMealCountAdd(OrderDetail datasBean, int position) {
mRootView.recordOperat(true);
changeNumber(datasBean.getNumber() + 1);
recalcOrderMoneyCount();
if (mOrderContentActivity != null) {
......@@ -194,6 +202,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
});
}
/**
* 修改訂單
*
......@@ -539,6 +548,17 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
return tablename;
}
// protected String replacer(String str) {
// String data = str;
// try {
// data = data.replaceAll("%(?![0-9a-fA-F]{2})", "%25").replaceAll("\\+", "%2B");
//// data = URLDecoder.decode(data);
// } catch (Exception e) {
// e.printStackTrace();
// }
// return data;
// }
protected void showTipDialog(Activity context, String msg) {
QMUIDialog.MessageDialogBuilder dialogBuilder = new QMUIDialog.MessageDialogBuilder(context);
dialogBuilder.setTitle("溫馨提示");
......
......@@ -29,6 +29,7 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FoodAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FoodGroupAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ModifierAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.CancelFoodDialog;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager;
......@@ -39,6 +40,7 @@ import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
import org.simple.eventbus.EventBus;
import org.simple.eventbus.Subscriber;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;
......@@ -153,9 +155,9 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
@Override
public void onItemClick(OrderDetail datasBean, int position) {
RvMealClicked = true;
mRootView.recordOperat(true);
RvMealClicked = true;
//设置当前操作的食品
mCurrentOrderDetailBean = datasBean;
......@@ -443,9 +445,11 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
if (TextUtils.isEmpty(ids)) {
return;
}
int type = myOrderManage.isModifyOrder() ? 2 : 1;
RequestBody requestBody = new FormBody.Builder()
.add("ids", ids)
.add("orderId", String.valueOf(MyOrderManage.getInstance().getOrderId()))
.add("type", String.valueOf(type))
.build();
mModel.deleteFood(requestBody)
......@@ -459,7 +463,12 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
@Override
public void onNext(@NonNull BaseRespose info) {
if (info != null && info.isSuccess()) {
if (info == null) {
mRootView.showMessage("刪除失敗");
return;
}
if (info.isSuccess()) {
mRootView.showMessage("刪除成功");
......@@ -485,13 +494,14 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
mRootView.showViewModeVisibility(MealConstant.food_group_ViewMode, MealConstant.food_ViewMode);
} else {
mRootView.showMessage("刪除失敗");
mRootView.showMessage("獲取訂單數據失敗");
}
}
});
}
private void deleteWithOrderedFoodById(OrderDetail deleteFood) {
// new CancelFoodDialog.Builder(IActivity).build().show();
QMUIDialog.MessageDialogBuilder dialogBuilder = new QMUIDialog.MessageDialogBuilder(IActivity);
dialogBuilder.setTitle("溫馨提示");
dialogBuilder.setMessage("是否確認刪除該食品?");
......@@ -591,7 +601,6 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
mRootView.showViewModeVisibility(MealConstant.food_ViewMode, MealConstant.food_group_ViewMode);
}
/**
* 按键入的食品号查找食品
* meal_uid:即可以是食品的fid也可以是PLU码。
......
......@@ -107,6 +107,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
@Override
public void onItemClick(View view, int viewType, Object data, int position) {
mRootView.recordOperat(true);
if (XClickUtil.isFastDoubleClick(view, 1000)) {
return;
}
......@@ -116,8 +117,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
sendOrder(false);
break;
case "印單":
if (getFoodCount() == 0) {
showTipDialog(IActivity, "沒有食品,不能印單");
if (!canPrint()) {
return;
}
if (hasNesOrderFoods()) {
......@@ -128,6 +128,9 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
}
break;
case "結賬":
if(!canPay()){
return;
}
mRootView.startActivityForResult(OrderContentActivity.BILL_CODE, OrderPayActivity.class, null);
break;
}
......@@ -338,6 +341,22 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
});
}
private boolean canPrint(){
if(getFoodCount() == 0){
mRootView.showMessage("沒有食品,不能印單");
return false;
}
return true;
}
private boolean canPay(){
if(getFoodCount() == 0){
mRootView.showMessage("沒有食品,不能結賬");
return false;
}
return true;
}
// private void printOrder() {
// CC.obtainBuilder("Component.Print")
// .setActionName("showPrintActivity")
......
......@@ -76,7 +76,14 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
* 1#貨到付款
* 2#在線支付
*/
private final int orderPayType =0;
private final int orderPayType = 0;
/**找零*/
public static final int LINE_PAY_TYPE_CHANGE = 1;
/**貼士*/
public static final int LINE_PAY_TYPE_TIPS = 2;
@Inject
public OrderPayPresenter(OrderPayContract.Model model, OrderPayContract.View rootView) {
......@@ -114,6 +121,9 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
mBillMethodAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
mRootView.recordOperat(true);
PayMethod method = (PayMethod) adapter.getItem(position);
// if (!isCashPayMethod(method)) {
// PayMethod N5PayMethod = getSelectN5PayMethod();
......@@ -144,12 +154,14 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
@Override
public void onItemClick(PayMethod datasBean, int position) {
mRootView.recordOperat(true);
mBillMoneyAdapter.setSelect_position(position);
mBillMoneyAdapter.notifyDataSetChanged();
}
@Override
public void onItemDeleteClick(PayMethod datasBean, int position) {
mRootView.recordOperat(true);
//刪除當前付款方式
mBillMoneyList.remove(position);
mBillMoneyAdapter.setSelect_position(mBillMoneyList.size() - 1);
......@@ -187,10 +199,12 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
*/
public void toOrderPay(boolean show) {
RequestBody requestBody = new FormBody.Builder()
.add("orderPayType",String.valueOf(orderPayType))
.add("orderPayType", String.valueOf(orderPayType))
.add("payType", String.valueOf(mBillMoneyList.get(0).getId()))
.add("orderId", String.valueOf(MyOrderManage.getInstance().getOrderId()))
.add("amount", String.valueOf(getTotalMoney()))
.add("amount", String.valueOf(getAmount()))
.add("linePayType", String.valueOf(getLinePayType()))
.add("tipsPrice", String.valueOf(getTipsPrice()))
.build();
mModel.toOrderPay(requestBody)
.subscribeOn(Schedulers.io())
......@@ -259,7 +273,7 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
if (info.getData() != null) {
setOrderId((Double) info.getData());
}
toOrderPayBefore(false);
toOrderPay(false);
} else {
mRootView.showMessage("結賬失敗!");
}
......@@ -291,7 +305,7 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
@Override
public void onNext(@NonNull BaseResult info) {
if (info != null && info.isSuccess()) {
toOrderPayBefore(false);
toOrderPay(false);
} else {
mRootView.showMessage("結賬失敗!");
}
......@@ -306,19 +320,6 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
}
/**
* 結賬
* @return
*/
private void toOrderPayBefore(boolean show){
if(myOrderManage.isModifyOrder()){
//修改訂單,更新支付方式即可
updateOrderPay();
}else {
toOrderPay(show);
}
}
/**
* 結賬前創建訂單或添加食品
*/
public void sendOrderBefore() {
......@@ -327,7 +328,7 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
sendOrder(false);
} else {
//去結賬
toOrderPayBefore(true);
toOrderPay(true);
}
}
......@@ -342,6 +343,7 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
/**
* 獲取當前選中的支付方式
*
* @return
*/
public PayMethod getSelectBillMoney() {
......@@ -382,21 +384,42 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
}
/**
* 貼士
* 獲取超出的金額為找零還是貼士: linePayType 1 tipsPrice 为找零 2 tipsPrice为贴上
* 現金,掃碼QR = 找零
* 信用卡 = 貼士
*
* @return 第一階段默認為找零
*/
public int getLinePayType() {
return LINE_PAY_TYPE_CHANGE;
}
/**
* 獲取找零或貼士金額
*
* @return
*/
private double getTips() {
public double getTipsPrice() {
double tips = 0.0;
double difference = getDifferenceMoney();
if (difference < 0) {
//貼士
tips = difference;
}
return Math.abs(tips);
}
/**
* 獲取食品總金額
* @return
*/
private double getAmount() {
//支付總額減去找零或貼士
// return getBillMoney() - getTipsPrice();
return getBillMoney();
}
/**
* 獲取支付差額
*
* @return
......@@ -407,7 +430,7 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
}
/**
* 獲取所選支付方式所付金
* 獲取支付總
*
* @return
*/
......
......@@ -5,6 +5,7 @@ import android.content.Context;
import com.gingersoft.gsa.cloud.base.utils.VibratorUtils;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.table.app.TableOperatTypeConstant;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.TableAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.StateTableFragment;
......@@ -91,7 +92,7 @@ public class StateTablePresenter extends BasePresenter<StateTableContract.Model,
if (tableList != null) {
//这里先清空
mTableList.clear();
if (status == 1) {
if (status == TableOperatTypeConstant.table_status_0) {
//显示全部台号 按照狀態排序
initTableByStauts(tableList);
} else {
......@@ -139,58 +140,69 @@ public class StateTablePresenter extends BasePresenter<StateTableContract.Model,
/**
* 根据餐台状态 过滤餐台
*
* @param status 0=可使用, 2=已送單,3=已印單, 4=已結帳(清檯), 5=分單(現已停用, 改為使用splitstatus), 6=連檯, 7=暫未使用
* 0#全部
* 1#可使用
* 2#已使用
* 3#已送單
* 4#已印單
* 5#已分檯
*/
public void filterTableByTableStatus(List<TableBean.DataBean> datasBeans, int status) {
if (datasBeans.size() == 0) {
return;
}
switch (status) {
case 0:
case TableOperatTypeConstant.table_status_1:
for (int i = 0; i < datasBeans.size(); i++) {
if (datasBeans.get(i).getStatus() > 0 && datasBeans.get(i).getStatus() < 4) {
if (datasBeans.get(i).getStatus() == 0 && datasBeans.get(i).getUseStatus() == 0) {
mTableList.add(datasBeans.get(i));
}
}
break;
// case 1:
// mTableList.addAll(datasBeans);
// break;
case 2:
case TableOperatTypeConstant.table_status_2:
for (int i = 0; i < datasBeans.size(); i++) {
if (datasBeans.get(i).getStatus() == 0) {
if (datasBeans.get(i).getUseStatus() == 1) {
mTableList.add(datasBeans.get(i));
}
}
break;
case 3:
case TableOperatTypeConstant.table_status_3:
for (int i = 0; i < datasBeans.size(); i++) {
if (datasBeans.get(i).getStatus() == 1) {
if (datasBeans.get(i).getStatus() == 2 && datasBeans.get(i).getUseStatus() == 0) {
mTableList.add(datasBeans.get(i));
}
}
break;
case 4:
case TableOperatTypeConstant.table_status_4:
for (int i = 0; i < datasBeans.size(); i++) {
if (datasBeans.get(i).getStatus() == 2 && datasBeans.get(i).getStatus() != 1) {
if (datasBeans.get(i).getStatus() == 3 && datasBeans.get(i).getUseStatus() == 0) {
mTableList.add(datasBeans.get(i));
}
}
break;
case 5:
for (int i = 0; i < datasBeans.size(); i++) {
if (datasBeans.get(i).getStatus() == 3) {
mTableList.add(datasBeans.get(i));
}
}
break;
case 6:
for (int i = 0; i < datasBeans.size(); i++) {
// if (datasBeans.get(i).getSplitStatus() == 1) {
mTableList.add(datasBeans.get(i));
// case 4:
// for (int i = 0; i < datasBeans.size(); i++) {
// if (datasBeans.get(i).getStatus() == 2 && datasBeans.get(i).getStatus() != 1) {
// mTableList.add(datasBeans.get(i));
// }
}
// }
// break;
// case 5:
// for (int i = 0; i < datasBeans.size(); i++) {
// if (datasBeans.get(i).getStatus() == 3) {
// mTableList.add(datasBeans.get(i));
// }
// }
// break;
// case 6:
// for (int i = 0; i < datasBeans.size(); i++) {
//// if (datasBeans.get(i).getSplitStatus() == 1) {
// mTableList.add(datasBeans.get(i));
//// }
// }
// break;
default:
mTableList.addAll(datasBeans);
break;
}
}
......@@ -201,18 +213,18 @@ public class StateTablePresenter extends BasePresenter<StateTableContract.Model,
List<TableBean.DataBean> tb_yellow = new ArrayList<>();
List<TableBean.DataBean> tb_green = new ArrayList<>();
List<TableBean.DataBean> tb_red = new ArrayList<>();
List<TableBean.DataBean> tb_blue = new ArrayList<>();
List<TableBean.DataBean> tb_white = new ArrayList<>();
List<TableBean.DataBean> tb_w6 = new ArrayList<>();
List<TableBean.DataBean> tb_unkown = new ArrayList<>();
//黃色=状态=3 , 綠色=2, 紅色=using=1, 色=0
//黃色=状态=3 , 綠色=2, 紅色=using=1, 色=0
for (TableBean.DataBean datasBean : tableList) {
if (datasBean.getStatus() == 1) {
if (datasBean.getUseStatus() == 1) {
tb_red.add(datasBean);
} else {
switch (datasBean.getStatus()) {
case 0:
tb_blue.add(datasBean);
tb_white.add(datasBean);
break;
case 2:
tb_green.add(datasBean);
......@@ -241,7 +253,7 @@ public class StateTablePresenter extends BasePresenter<StateTableContract.Model,
// mTableList.addAll(tb_yellow);
// }
mTableList.addAll(tb_unkown);
mTableList.addAll(tb_blue);
mTableList.addAll(tb_white);
}
private void initItemClickListener(Context context) {
......
......@@ -31,8 +31,12 @@ import com.jess.arms.utils.ArmsUtils;
import com.jess.arms.utils.RxLifecycleUtils;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.inject.Inject;
......@@ -164,18 +168,19 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
public void initBottomFunctionItem() {
mBottomFunctionList.add(new Function((long) 1, "重置檯號", ArmsUtils.getColor(IActivity, R.color.theme_black), ArmsUtils.getDimens(IActivity, R.dimen.sp_14), R.mipmap.table_init));
mBottomFunctionList.add(new Function((long) 2, "轉檯", ArmsUtils.getColor(IActivity, R.color.theme_black), ArmsUtils.getDimens(IActivity, R.dimen.sp_14), R.mipmap.table_move));
mBottomFunctionList.add(new Function((long) 3, "分檯", ArmsUtils.getColor(IActivity, R.color.theme_black), ArmsUtils.getDimens(IActivity, R.dimen.sp_14), R.mipmap.table_splite));
mBottomFunctionList.add(new Function((long) 4, "skyorder", ArmsUtils.getColor(IActivity, R.color.theme_black), ArmsUtils.getDimens(IActivity, R.dimen.sp_14), R.mipmap.table_skyorder));
// mBottomFunctionList.add(new Function((long) 3, "分檯", ArmsUtils.getColor(IActivity, R.color.theme_black), ArmsUtils.getDimens(IActivity, R.dimen.sp_14), R.mipmap.table_splite));
// mBottomFunctionList.add(new Function((long) 4, "skyorder", ArmsUtils.getColor(IActivity, R.color.theme_black), ArmsUtils.getDimens(IActivity, R.dimen.sp_14), R.mipmap.table_skyorder));
// mBottomFunctionList.add(new Function((long) 5, "上菜紙", ArmsUtils.getColor(IActivity,R.color.theme_black), ArmsUtils.getDimens(IActivity,R.dimen.sp_14), R.mipmap.table_paper));
}
public void getTables(boolean show) {
public void getTables(boolean show, RefreshLayout refreshLayout) {
int restaurantId = GsaCloudApplication.getRestaurantId(mApplication);
mModel.getTables(restaurantId)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> {
if (show)
if (show && refreshLayout == null) {
mRootView.showLoading(null);
}
})
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
......@@ -196,21 +201,59 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
}
if (tableBean.isSuccess()) {
List<TableBean.DataBean> tableBeanData = tableBean.getData();
if (tableBeanData != null) {
if (tableBeanData != null && tableBeanData.size() > 0) {
if (mTableList.size() > 0) {
mTableList.clear();
}
sortTableList(tableBeanData);
mTableList.addAll(tableBeanData);
mRootView.returnTableList(tableBeanData);
} else {
mRootView.getCurrentTableFragment().showEmptyView(true, 0, null);
}
} else {
if (show)
mRootView.showMessage(tableBean.getErrMsg());
if (show) {
mRootView.getCurrentTableFragment().showMessage(tableBean.getErrMsg());
}
mRootView.getCurrentTableFragment().showEmptyView(false, 0, null);
}
resetRefreshLayout();
}
@Override
public void onError(Throwable t) {
super.onError(t);
mRootView.getCurrentTableFragment().showEmptyView(false, 0, t);
resetRefreshLayout();
}
private void resetRefreshLayout() {
if (refreshLayout != null) {
refreshLayout.finishRefresh();
refreshLayout.resetNoMoreData();
}
}
private void sortTableList(List<TableBean.DataBean> dataBeanList) {
for (int i = 0; i < dataBeanList.size(); i++) {
if(i == 7){
dataBeanList.get(i).setSort(1);
}
}
Comparator c = new Comparator<TableBean.DataBean>() {
@Override
public int compare(TableBean.DataBean o1, TableBean.DataBean o2) {
Integer sort1 = o1.getSort();
Integer sort2 = o2.getSort();
return sort2.compareTo(sort1);
}
};
Collections.sort(dataBeanList, c);
}
});
}
public void openTable(int tableId) {
RequestBody requestBody = new FormBody.Builder()
.add("id", String.valueOf(tableId))
......@@ -227,6 +270,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
@Override
public void onNext(@NonNull BaseRespose respose) {
if (respose.isSuccess()) {
OpenTableManage.getDefault().setPeopleNumber(0);
//設置當前開台數據1584427984728 1584428017196 1584428086282
TableBean.DataBean dataBean = getTableById(tableId);
TableBean.DataBean openTableBean = null;
......@@ -253,9 +297,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
MyOrderManage.getInstance().setOrderBean(null);
MyOrderManage.getInstance().setOrderFoodList(new ArrayList<>());
}
if (openTableBean != null) {
OpenTableManage.getDefault().setTableBean(openTableBean);
}
mRootView.startMealStandActivity();
} else {
mRootView.showMessage(respose.getErrMsg());
......@@ -298,9 +340,9 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
targetTableName = tableBean.getTableName();
targetTableId = tableBean.getId();
if (tableBean.getStatus() == 2 || tableBean.getStatus() == 3) {
mRootView.setOperatContentText("由: " + originalTableName + " 合併 " + targetTableName + " 號檯");
mRootView.setOperatContentText("由: " + originalTableName + " 合併 " + targetTableName);
} else {
mRootView.setOperatContentText("由: " + originalTableName + " 轉到 " + targetTableName + " 號檯");
mRootView.setOperatContentText("由: " + originalTableName + " 轉到 " + targetTableName);
}
showOperatTipDialog(tableBean);
}
......@@ -337,7 +379,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
}
mRootView.canceOperat();
//立即獲取餐檯數據
getTables(false);
getTables(false, null);
} else {
mRootView.showMessage(respose.getErrMsg());
}
......@@ -374,7 +416,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
mRootView.canceOperat();
getTables(false);
getTables(false, null);
} else {
if (showMessage)
......@@ -392,7 +434,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
/**
* 根据操作类型过滤一遍餐台
*/
public void filterTableByOperatType(int status) {
public void filterTableByOperatType() {
if (mTableList.size() == 0) {
return;
}
......@@ -430,7 +472,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
filterTableBeanList.addAll(mTableList);
break;
}
IActivity.nofilyFragmentUpdateTableData(filterTableBeanList, status);
IActivity.nofilyFragmentUpdateTableData(filterTableBeanList);
}
public void showOperatTipDialog(TableBean.DataBean dataBean) {
......@@ -465,6 +507,9 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
dialogBuilder.addAction("取消", new QMUIDialogAction.ActionListener() {
@Override
public void onClick(QMUIDialog dialog, int index) {
//重置之前選的餐檯數據
initTableParameter();
mRootView.setOperatTitle();
dialog.dismiss();
}
});
......@@ -547,7 +592,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
@Override
public void onFinish() {// 计时完毕时触发
if (TableActivity.isRefreshData) {
getTables(false);
getTables(false, null);
}
this.start();
}
......@@ -600,4 +645,8 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
public void setTargetTableId(int targetTableId) {
this.targetTableId = targetTableId;
}
public List<TableBean.DataBean> getTableList() {
return mTableList;
}
}
package com.gingersoft.gsa.cloud.table.mvp.presenter;
package com.gingersoft.gsa.cloud.table.mvp.presenter.orderManager;
import android.app.Application;
import android.content.Context;
......@@ -184,6 +184,15 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
payMethod.setPayName(orderDetailItem.getPayName());
payMethod.setPayMoney(orderDetailItem.getTotalAmount());
payMethodList.add(payMethod);
if(orderDetailItem.getTipsPrice() != 0){
//打印添加找零或貼士行
String linePayType = orderDetailItem.getLinePayType() == 1?"找零":"貼士";
PayMethod payMethod2 = new PayMethod();
//這裡打印退一格
payMethod2.setPayName( " " + linePayType);
payMethod2.setPayMoney(orderDetailItem.getTipsPrice());
payMethodList.add(payMethod2);
}
return payMethodList;
}
......@@ -195,7 +204,7 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
}
}
public void addOrderData(List<OrderDetailItem> orderItemList) {
public void addOrderItem(List<OrderDetailItem> orderItemList) {
if (orderItemList != null) {
mOrderItemList.addAll(orderItemList);
mOrderCenterAdapter.notifyDataSetChanged();
......
package com.gingersoft.gsa.cloud.table.mvp.presenter;
package com.gingersoft.gsa.cloud.table.mvp.presenter.orderManager;
import android.app.Application;
import com.billy.cc.core.component.BaseForwardInterceptor;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.base.utils.JsonUtils;
import com.gingersoft.gsa.cloud.base.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.OrderDetailItem;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.orderManager.OrderCenterActivity;
import com.jess.arms.integration.AppManager;
......@@ -82,6 +84,10 @@ public class OrderCenterPresenter extends BasePresenter<OrderCenterContract.Mode
*/
public void loadOrderList(byte status, int pageIndex, int pageSize, RefreshLayout refreshLayout, boolean isLoadMore) {
int restaurantId = GsaCloudApplication.getRestaurantId(mApplication);
if (pageIndex != 0) {
//根據數據庫下標分頁
pageIndex = pageIndex * pageSize ;
}
mModel.loadOrderList(restaurantId, status, pageIndex, pageSize)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> {
......@@ -110,6 +116,13 @@ public class OrderCenterPresenter extends BasePresenter<OrderCenterContract.Mode
if (result.getData() != null) {
List<OrderDetailItem> orderItemList = JsonUtils.parseArray(result.getData(), OrderDetailItem.class);
if (orderItemList.size() > 0) {
for (int i = 0; i < orderItemList.size(); i++) {
long id = orderItemList.get(i).getId();
if (id == 48307) {
int j = 10;
LogUtil.d(TAG,"id="+id);
}
}
if (!noMoreData) {
mRootView.returnOrderItemList(orderItemList);
//每次更新完數據,頁碼+1
......@@ -122,13 +135,13 @@ public class OrderCenterPresenter extends BasePresenter<OrderCenterContract.Mode
noMoreData = false;
}
} else {
mRootView.showEmptyView(true, 0, null);
mRootView.getCurrentOrderFragment().showEmptyView(true, 0, null);
}
} else {
mRootView.showEmptyView(true, 0, null);
mRootView.getCurrentOrderFragment().showEmptyView(true, 0, null);
}
} else {
mRootView.showEmptyView(false, 0, null);
mRootView.getCurrentOrderFragment().showEmptyView(false, 0, null);
}
resetRefreshLayout(noMoreData);
}
......@@ -136,7 +149,7 @@ public class OrderCenterPresenter extends BasePresenter<OrderCenterContract.Mode
@Override
public void onError(Throwable t) {
super.onError(t);
mRootView.showEmptyView(false, 0, t);
mRootView.getCurrentOrderFragment().showEmptyView(false, 0, t);
resetRefreshLayout(false);
}
......@@ -183,20 +196,20 @@ public class OrderCenterPresenter extends BasePresenter<OrderCenterContract.Mode
//每次更新完數據,頁碼+1
mRootView.setPageIndex(mRootView.getPageIndex() + 1);
} else {
mRootView.showEmptyView(true, 0, null);
mRootView.getCurrentOrderFragment().showEmptyView(true, 0, null);
}
} else {
mRootView.showEmptyView(true, 0, null);
mRootView.getCurrentOrderFragment().showEmptyView(true, 0, null);
}
} else {
mRootView.showEmptyView(false, 0, null);
mRootView.getCurrentOrderFragment().showEmptyView(false, 0, null);
}
}
@Override
public void onError(Throwable t) {
super.onError(t);
mRootView.showEmptyView(false, 0, t);
mRootView.getCurrentOrderFragment().showEmptyView(false, 0, t);
}
});
}
......
package com.gingersoft.gsa.cloud.table.mvp.presenter;
package com.gingersoft.gsa.cloud.table.mvp.presenter.orderManager;
import android.app.Application;
......
......@@ -4,6 +4,7 @@ import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.os.SystemClock;
import android.text.TextUtils;
......@@ -286,6 +287,10 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
return;
mPresenter.toFindMeal(inputText);
});
if (!MyOrderManage.getInstance().isModifyOrder()) {
//根据倒计时时间自动退出当前页面
initAutoQuit();
}
initTableDetail();
}
......@@ -610,6 +615,29 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
killMyself();
}
private void initAutoQuit() {
if (chronometer != null) {
chronometer.setBase(SystemClock.elapsedRealtime());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
// 执行一下看看是否按下了home键的线程
// 如果开始计时到现在超过了autoQuitTime秒
if (SystemClock.elapsedRealtime() - chronometer.getBase() > GsaCloudApplication.androidSetting.getAutoQuitTime() * 1000) {
// 停止计时
chronometer.stop();
returnBeforeActivity(true);
}
}
});
}
//开启倒计时
chronometer.start();
}
}
@Override
public void recordOperat(boolean isPressButtonSound) {
if (isPressButtonSound)
......
......@@ -2,6 +2,7 @@ package com.gingersoft.gsa.cloud.table.mvp.ui.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
......@@ -19,16 +20,19 @@ import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage;
import com.gingersoft.gsa.cloud.base.utils.VibratorUtils;
import com.gingersoft.gsa.cloud.base.utils.other.SPUtils;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.di.component.DaggerOrderContentComponent;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderContentContract;
import com.gingersoft.gsa.cloud.table.mvp.model.constant.MealConstant;
import com.gingersoft.gsa.cloud.table.mvp.presenter.OrderContentPresenter;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.ChooseNumberDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.integration.AppManager;
import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaButton;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
......@@ -37,6 +41,8 @@ import org.simple.eventbus.EventBus;
import java.util.Date;
import javax.inject.Inject;
import butterknife.BindView;
import butterknife.OnClick;
......@@ -57,6 +63,9 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
*/
public class OrderContentActivity extends BaseActivity<OrderContentPresenter> implements OrderContentContract.View {
@Inject
AppManager mAppManager;
@BindView(R2.id.ctime)
Chronometer chronometer;
......@@ -110,6 +119,10 @@ public class OrderContentActivity extends BaseActivity<OrderContentPresenter> im
mPresenter.initTopFunctionData();
mPresenter.initAdapter();
mPresenter.initOrderTopFunctionListener();
if (!MyOrderManage.getInstance().isModifyOrder()) {
//根据倒计时时间自动退出当前页面
initAutoQuit();
}
}
public void initOrderDetail() {
......@@ -240,6 +253,29 @@ public class OrderContentActivity extends BaseActivity<OrderContentPresenter> im
chooseNumberDialog.show();
}
private void initAutoQuit() {
if (chronometer != null) {
chronometer.setBase(SystemClock.elapsedRealtime());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
// 执行一下看看是否按下了home键的线程
// 如果开始计时到现在超过了autoQuitTime秒
if (SystemClock.elapsedRealtime() - chronometer.getBase() > GsaCloudApplication.androidSetting.getAutoQuitTime() * 1000) {
// 停止计时
chronometer.stop();
returnTableActivity(true);
}
}
});
}
//开启倒计时
chronometer.start();
}
}
@Override
public void recordOperat(boolean isPressButtonSound) {
if (isPressButtonSound)
......@@ -255,6 +291,15 @@ public class OrderContentActivity extends BaseActivity<OrderContentPresenter> im
}
}
public void returnTableActivity(boolean initTable) {
if (initTable && OpenTableManage.getDefault().getTableBean() != null && !MyOrderManage.getInstance().isModifyOrder()) {
//通知更新餐台状态
EventBus.getDefault().post(OpenTableManage.getDefault().getTableBean().getId(), "initTable_status_event");
}
mAppManager.killActivity(MealStandActivity.class);
killMyself();
}
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
......
......@@ -55,6 +55,7 @@ import com.qmuiteam.qmui.widget.dialog.QMUITipDialog;
import org.simple.eventbus.EventBus;
import java.util.ArrayList;
import java.util.Date;
import javax.inject.Inject;
......@@ -233,8 +234,13 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
double difference = mPresenter.getDifferenceMoney();
if (difference < 0) {
//貼士
if (mPresenter.getLinePayType() == 1) {
tv_difference_name.setText("找零");
tv_difference_money.setTextColor(ArmsUtils.getColor(this, R.color.red));
} else {
tv_difference_name.setText("貼士");
tv_difference_money.setTextColor(ArmsUtils.getColor(this, R.color.Grass_green));
}
tv_difference_money.setText("$" + Math.abs(difference));
} else {
//尚欠
......@@ -247,38 +253,6 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
}
}
// public void initBillMethod() {
// rvPay.setLayoutManager(new GridLayoutManager(mContext, 4));
// //每一種結賬方式的金額
// //結賬方式
// List<BillMethodBean> data = new ArrayList<>();
// data.add(new BillMethodBean(1, "現金"));
// BillMethodAdapter adapter = new BillMethodAdapter(data);
// rvPay.setAdapter(adapter);
//
// billMoneyAdapter = new BillMoneyAdapter(billMoney);
// rvSelectedPay.setLayoutManager(new LinearLayoutManager(mContext));
// rvSelectedPay.setAdapter(billMoneyAdapter);
//
// adapter.setOnItemClickListener((adapter13, view, position) -> {
// if (!billMoney.containsAll(data)) {
// billMoney.add(data.get(position));
// billMoneyAdapter.notifyDataSetChanged();
// }
// });
//
// billMoneyAdapter.setOnItemChildClickListener((adapter12, view, position) -> {
// if (view.getId() == R.id.iv_bill_delete) {
// //刪除當前付款方式
// ownMoney = MoneyUtil.sum(ownMoney, billMoney.get(position).getMoney());//還原尚欠金額;
// billMoney.get(position).setMoney(0);
// billMoney.remove(position);
// billMoneyAdapter.notifyDataSetChanged();
// setOwnMoney(ownMoney);
// }
// });
// }
@OnClick({R2.id.btn_people_num, R2.id.btn_table, R2.id.btn_sure_pay, R2.id.btn_exact, R2.id.btn_keypad})
public void onClick(View v) {
......@@ -501,8 +475,8 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
@Override
public void paySuccess() {
//修改結賬方式數據
MyOrderManage.getInstance().setBillMoney(mPresenter.getBillMoneyList());
if (!MyOrderManage.getInstance().isModifyOrder() && OpenTableManage.getDefault() != null && OpenTableManage.getDefault().getTableBean()!=null) {
setBillMoney();
if (!MyOrderManage.getInstance().isModifyOrder() && OpenTableManage.getDefault() != null && OpenTableManage.getDefault().getTableBean() != null) {
//通知更新餐台状态
EventBus.getDefault().post(OpenTableManage.getDefault().getTableBean().getId(), "initTable_status_event");
}
......@@ -517,12 +491,29 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
// if (result.isSuccess()) {
// //打印成功
// }
//清空賬單數據
MyOrderManage.getInstance().clear();
//清空開檯數據
OpenTableManage.getDefault().clear();
setResult(Activity.RESULT_OK, null);
killMyself();
});
}
private void setBillMoney() {
ArrayList<PayMethod> billMoneyList = mPresenter.getBillMoneyList();
if (mPresenter.getTipsPrice() != 0) {
//打印添加找零或貼士行
String linePayType = tv_difference_name.getText().toString();
PayMethod payMethod = new PayMethod();
//這裡打印退一格
payMethod.setPayName(" " + linePayType);
payMethod.setPayMoney(mPresenter.getTipsPrice());
billMoneyList.add(payMethod);
}
MyOrderManage.getInstance().setBillMoney(billMoneyList);
}
public void setBillMethodAdapter(BaseQuickAdapter adapter) {
rv_bill_method.setAdapter(adapter);
rv_bill_method.addItemDecoration(new GridDividerItemDecoration(QMUIDisplayHelper.dpToPx(1), ArmsUtils.getColor(this, R.color.theme_hint_color)));
......@@ -616,14 +607,10 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
}
public void returnTableActivityBefore() {
// mPresenter.setTablesStatus(GSAApplication.tableContract.getTableTNID(), GSAApplication.tableContract.getIsSplite(), GSAApplication.tableContract.getTableno_split());
// GSAApplication.tableContract.init();
returnTableServiceAcivity(false);
}
public void returnTableServiceAcivity(boolean iskill) {
// GSAApplication.tableContract.setIsSplite(false);
// GSAApplication.tableContract.setTableno_split("");
if (iskill) {
killMyself();
}
......
package com.gingersoft.gsa.cloud.table.mvp.ui.activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Message;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.View;
import android.widget.AdapterView;
import android.widget.LinearLayout;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage;
import com.gingersoft.gsa.cloud.base.qmui.arch.QMUIFragmentPagerAdapter;
import com.gingersoft.gsa.cloud.base.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.table.R;
......@@ -21,13 +20,9 @@ import com.gingersoft.gsa.cloud.table.app.GoldConstants;
import com.gingersoft.gsa.cloud.table.app.TableOperatTypeConstant;
import com.gingersoft.gsa.cloud.table.di.component.DaggerTableComponent;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BaseFragmentAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.AllOrderFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.AllTableFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.InputTableFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.StateTableFragment;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.gingersoft.gsa.cloud.ui.view.PagerSlidingTabStrip;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.component.AppComponent;
......@@ -38,23 +33,25 @@ import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton;
import com.qmuiteam.qmui.layout.QMUIButton;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.widget.QMUITopBar;
import com.qmuiteam.qmui.widget.popup.QMUIPopup;
import com.qmuiteam.qmui.widget.popup.QMUIPopups;
import com.qmuiteam.qmui.widget.tab.QMUITab;
import com.qmuiteam.qmui.widget.tab.QMUITabBuilder;
import com.qmuiteam.qmui.widget.tab.QMUITabIndicator;
import com.qmuiteam.qmui.widget.tab.QMUITabSegment;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import org.simple.eventbus.Subscriber;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
......@@ -86,6 +83,8 @@ public class TableActivity extends BaseActivity<TablePresenter> implements Table
QMUITabSegment mTabSegment;
@BindView(R2.id.contentViewPager)
ViewPager mContentViewPager;
@BindView(R2.id.tv_show_Popup)
TextView tv_show_Popup;
@BindView(R2.id.rv_bottom_function)
RecyclerView rv_bottom_function;
......@@ -99,20 +98,32 @@ public class TableActivity extends BaseActivity<TablePresenter> implements Table
@BindView(R2.id.tv_operat_content)
TextView tv_operat_content;
/**
* 輪訓刷新餐檯數據
*/
public static boolean isRefreshData = true;
private boolean firstFlag = true;
public static final int FUNCTION_ALL_TABLE = 1;
public static final int FUNCTION_STATE_TABLE = 2;
private InputTableFragment inputTableFragment;
private AllTableFragment allTableFragment;
private StateTableFragment stateTableFragment;
private AllTableFragment allTableFragment, stateTableFragment;
private String[] tabTitles = {"編號", "全部", "狀態"};
private String[] tabTitles = {"編號", "全部", "狀態:全部"};
//當前顯示頁下標
/**
* 切換餐檯狀態下拉框
*/
private QMUIPopup mTableStatusPopup;
/**
* 當前顯示頁下標
*/
private int mCurrentPageIndex = 1;
/**
* 當前所顯示餐檯狀態(默認:全部)
*/
private int currentSelectTableStatus = TableOperatTypeConstant.table_status_0;
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
......@@ -131,9 +142,11 @@ public class TableActivity extends BaseActivity<TablePresenter> implements Table
@Override
public void initData(@Nullable Bundle savedInstanceState) {
tv_show_Popup.setWidth(ArmsUtils.getScreenWidth(this) / 3);
initTabAndPager();
mPresenter.initBottomFunction();
mPresenter.getTables(true);
getTables(true, null);
}
@Subscriber(tag = "initTable_status_event")
......@@ -161,7 +174,7 @@ public class TableActivity extends BaseActivity<TablePresenter> implements Table
@Override
public void onClick(View v) {
mPresenter.getTables(true);
getTables(true, null);
}
});
rightButton2.setOnClickListener(new View.OnClickListener() {
......@@ -169,6 +182,7 @@ public class TableActivity extends BaseActivity<TablePresenter> implements Table
public void onClick(View v) {
CC.obtainBuilder("Component.Download")
.setActionName("showDownloadActivity")
.addParam("fromPage",2)
.build()
.call();
}
......@@ -224,7 +238,17 @@ public class TableActivity extends BaseActivity<TablePresenter> implements Table
@Override
public void returnTableList(List<TableBean.DataBean> dataBeanList) {
if (dataBeanList != null && dataBeanList.size() > 0) {
mPresenter.filterTableByOperatType(1);
mPresenter.filterTableByOperatType();
}
}
@Override
public AllTableFragment getCurrentTableFragment() {
switch (mCurrentPageIndex) {
case FUNCTION_STATE_TABLE:
return stateTableFragment;
default:
return allTableFragment;
}
}
......@@ -266,7 +290,21 @@ public class TableActivity extends BaseActivity<TablePresenter> implements Table
@Override
public void setCurrentOperatType(int type) {
switch (type) {
mPresenter.setCurrentChooseOperatType(type);
btn_cancel_operat.setVisibility(View.VISIBLE);
ll_table_operat_content.setVisibility(View.VISIBLE);
rv_bottom_function.setVisibility(View.INVISIBLE);
//转台不需要过滤
if (mPresenter.getCurrentChooseOperatType() != TableOperatTypeConstant.move_table_4) {
//根据操作类型过滤一遍餐台
mPresenter.filterTableByOperatType();
}
setOperatTitle();
}
@Override
public void setOperatTitle() {
switch (mPresenter.getCurrentChooseOperatType()) {
case TableOperatTypeConstant.splite_table_1:
break;
......@@ -275,26 +313,18 @@ public class TableActivity extends BaseActivity<TablePresenter> implements Table
break;
case TableOperatTypeConstant.init_table_3:
tv_operat_hint.setText("請選擇需要重置的檯號");
tv_operat_content.setText("");
mTopBar.setTitle("重置檯號");
break;
case TableOperatTypeConstant.move_table_4:
tv_operat_hint.setText("請選擇檯號");
tv_operat_content.setText("");
mTopBar.setTitle("轉檯");
break;
case TableOperatTypeConstant.skyorder_mode_5:
break;
}
mPresenter.setCurrentChooseOperatType(type);
btn_cancel_operat.setVisibility(View.VISIBLE);
ll_table_operat_content.setVisibility(View.VISIBLE);
rv_bottom_function.setVisibility(View.INVISIBLE);
//转台不需要过滤
if (mPresenter.getCurrentChooseOperatType() != TableOperatTypeConstant.move_table_4) {
//根据操作类型过滤一遍餐台
mPresenter.filterTableByOperatType(2);
}
}
@Override
......@@ -309,7 +339,7 @@ public class TableActivity extends BaseActivity<TablePresenter> implements Table
mTopBar.setTitle("餐檯模式");
mPresenter.initTableParameter();
mPresenter.filterTableByOperatType(1);
mPresenter.filterTableByOperatType();
}
@Override
......@@ -331,7 +361,7 @@ public class TableActivity extends BaseActivity<TablePresenter> implements Table
public void onStartRefreshTableData() {
isRefreshData = true;
mPresenter.startTableTimer();
mPresenter.getTables(false);
getTables(false, null);
}
@Override
......@@ -357,38 +387,27 @@ public class TableActivity extends BaseActivity<TablePresenter> implements Table
rv_bottom_function.setItemAnimator(new DefaultItemAnimator());
}
public void nofilyFragmentUpdateTableData(List<TableBean.DataBean> dataBeanList, int status) {
Message message = Message.obtain();
message.what = 1;
message.obj = dataBeanList;
message.arg1 = status;
if (inputTableFragment != null) {
inputTableFragment.setData(message);
}
if (allTableFragment != null) {
allTableFragment.setData(message);
}
if (stateTableFragment != null) {
stateTableFragment.setData(message);
}
}
private void initTabAndPager() {
QMUIFragmentPagerAdapter pagerAdapter = new QMUIFragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment createFragment(int position) {
Bundle bundle = new Bundle();
switch (position) {
case 1:
if (allTableFragment != null) {
return allTableFragment;
}
allTableFragment = AllTableFragment.newInstance();
bundle.putInt("currentPageIndex", FUNCTION_ALL_TABLE);
allTableFragment.setArguments(bundle);
return allTableFragment;
case 2:
if (stateTableFragment != null) {
return stateTableFragment;
}
stateTableFragment = StateTableFragment.newInstance();
stateTableFragment = AllTableFragment.newInstance();
bundle.putInt("currentPageIndex", FUNCTION_STATE_TABLE);
stateTableFragment.setArguments(bundle);
return stateTableFragment;
default:
if (inputTableFragment != null) {
......@@ -422,7 +441,10 @@ public class TableActivity extends BaseActivity<TablePresenter> implements Table
.setIconPosition(QMUITab.ICON_POSITION_RIGHT)
.setText(tabTitles[2])
.build(mContext);
mTabSegment.addTab(tab1).addTab(tab2).addTab(tab3);
mTabSegment
.addTab(tab1)
.addTab(tab2)
.addTab(tab3);
mContentViewPager.setAdapter(pagerAdapter);
mContentViewPager.setCurrentItem(mCurrentPageIndex);
......@@ -431,21 +453,31 @@ public class TableActivity extends BaseActivity<TablePresenter> implements Table
mTabSegment.setDefaultTextSize(QMUIDisplayHelper.dp2px(this, 16), QMUIDisplayHelper.dp2px(this, 16));
mTabSegment.setPadding(space, 0, space, 0);
mTabSegment.setupWithViewPager(mContentViewPager, false);
mTabSegment.setOnTabClickListener(new QMUITabSegment.OnTabClickListener() {
@Override
public void onTabClick(int index) {
//彈出選擇狀態彈窗
if (mCurrentPageIndex == 2 && index == 2) {
showTableStatusListPopup(tv_show_Popup);
}
mCurrentPageIndex = index;
}
});
mTabSegment.addOnTabSelectedListener(new QMUITabSegment.OnTabSelectedListener() {
@Override
public void onTabSelected(int index) {
switch (index){
switch (index) {
case 0:
// setBottomFunctionVisibility(false);
//标号输入页面 暂停刷新餐台数据
onPauseRefreshTableData();
// onPauseRefreshTableData();
break;
case 1:
case 2:
// setBottomFunctionVisibility(true);
//页面切换完成区域,状态页面恢复获取餐台数据
onStartRefreshTableData();
// onStartRefreshTableData();
break;
}
mCurrentPageIndex = index;
......@@ -454,19 +486,91 @@ public class TableActivity extends BaseActivity<TablePresenter> implements Table
@Override
public void onTabUnselected(int index) {
//滑動過程中先 暫停刷新數據
onPauseRefreshTableData();
// onPauseRefreshTableData();
}
@Override
public void onTabReselected(int index) {
LogUtil.d(TAG, "onTabReselected " + index);
}
@Override
public void onDoubleTap(int index) {
LogUtil.d(TAG, "onDoubleTap " + index);
}
});
}
private void showTableStatusListPopup(View view) {
List<Map<String, Object>> lists = new ArrayList<>();
String[] statusTextList = new String[]{
"全部",
"可使用",
"已使用",
"已開檯",
"已印單",
};
int[] statusIconList = new int[]{
R.drawable.table_shape_status_all,
R.drawable.table_shape_status_be_usable,
R.drawable.table_shape_status_used,
R.drawable.table_shape_status_send,
R.drawable.table_shape_status_print,
};
for (int i = 0; i < statusTextList.length; i++) {
Map<String, Object> map = new HashMap<>();
map.put("text", statusTextList[i]);
map.put("image", statusIconList[i]);
lists.add(map);
}
SimpleAdapter adapter = new SimpleAdapter(this, lists, R.layout.table_item_popup_select_table_status
, new String[]{"text", "image"}
, new int[]{R.id.tv_status, R.id.iv_status});
mTableStatusPopup = QMUIPopups.listPopup(this, QMUIDisplayHelper.getScreenWidth(this) / 3, QMUIDisplayHelper.getScreenHeight(this), adapter, new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
mTableStatusPopup.dismiss();
mTabSegment.updateTabText(2, "狀態:" + statusTextList[position]);
//根据选择的餐台操作状态 显示相应的台号
filterTableByTableStatus(position);
}
}).dimAmount(0.6f).show(view);
}
/**
* 根据餐台状态 过滤餐台
*/
public void filterTableByTableStatus(int status) {
this.currentSelectTableStatus = status;
nofilyFragmentUpdateTableData(mPresenter.getTableList());
}
/**
* 更新相應頁面餐檯數據
*
* @param dataBeanList
*/
public void nofilyFragmentUpdateTableData(List<TableBean.DataBean> dataBeanList) {
Message message = Message.obtain();
message.what = 1;
message.obj = dataBeanList;
message.arg1 = currentSelectTableStatus;
if (inputTableFragment != null) {
inputTableFragment.setData(message);
}
if (allTableFragment != null) {
allTableFragment.setData(message);
}
if (stateTableFragment != null) {
stateTableFragment.setData(message);
}
}
public void getTables(boolean show,RefreshLayout refreshLayout) {
mPresenter.getTables(show, refreshLayout);
}
private void setBottomFunctionVisibility(boolean show) {
rv_bottom_function.setVisibility(show == true ? View.VISIBLE : View.GONE);
}
......@@ -483,6 +587,8 @@ public class TableActivity extends BaseActivity<TablePresenter> implements Table
onStartRefreshTableData();
//清空賬單數據
MyOrderManage.getInstance().clear();
//清空開檯數據
OpenTableManage.getDefault().clear();
}
@Override
......@@ -491,4 +597,12 @@ public class TableActivity extends BaseActivity<TablePresenter> implements Table
//停止刷新餐檯數據
onPauseRefreshTableData();
}
public int getCurrentSelectTableStatus() {
return currentSelectTableStatus;
}
public void setCurrentSelectTableStatus(int currentSelectTableStatus) {
this.currentSelectTableStatus = currentSelectTableStatus;
}
}
package com.gingersoft.gsa.cloud.table.mvp.ui.activity.orderManager;
import android.content.Intent;
import android.net.ParseException;
import android.os.Bundle;
import android.os.Message;
import android.view.View;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.qmui.arch.QMUIFragmentPagerAdapter;
import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.OrderDetailItem;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.AllOrderFragment;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.google.gson.JsonIOException;
import com.google.gson.JsonParseException;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.gingersoft.gsa.cloud.table.di.component.DaggerOrderCenterComponent;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderCenterContract;
import com.gingersoft.gsa.cloud.table.mvp.presenter.OrderCenterPresenter;
import com.gingersoft.gsa.cloud.table.mvp.presenter.orderManager.OrderCenterPresenter;
import com.gingersoft.gsa.cloud.table.R;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.widget.QMUIEmptyView;
import com.qmuiteam.qmui.widget.QMUITopBar;
import com.qmuiteam.qmui.widget.tab.QMUITabIndicator;
import com.qmuiteam.qmui.widget.tab.QMUITabSegment;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import org.json.JSONException;
import org.simple.eventbus.Subscriber;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import java.util.List;
import androidx.annotation.NonNull;
......@@ -263,11 +255,6 @@ public class OrderCenterActivity extends BaseActivity<OrderCenterPresenter> impl
}
@Override
public void showEmptyView(boolean isSuccess, int size, Throwable t) {
getCurrentOrderFragment().showEmptyView(isSuccess, size, t);
}
@Override
public void returnOrderItemList(List<OrderDetailItem> orderItemList) {
Message message = Message.obtain();
message.obj = orderItemList;
......
......@@ -30,7 +30,7 @@ import com.gingersoft.gsa.cloud.table.di.component.DaggerOrderDetailComponent;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderDetailContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.OrderDetailItem;
import com.gingersoft.gsa.cloud.table.mvp.model.utils.OrderAssemblyUtil;
import com.gingersoft.gsa.cloud.table.mvp.presenter.OrderDetailPresenter;
import com.gingersoft.gsa.cloud.table.mvp.presenter.orderManager.OrderDetailPresenter;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.OrderDetailItemAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.OrderDetailPayMethodAdapter;
......@@ -243,14 +243,22 @@ public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> impl
List<PayMethod> payMethodList = new ArrayList<>();
PayMethod payMethod = new PayMethod();
payMethod.setPayName(orderDetailItem.getPayName());
payMethod.setPayMoney(orderDetailItem.getTotalAmount());
payMethod.setPayMoney(orderDetailItem.getAmount());
payMethodList.add(payMethod);
if (orderDetailItem.getTipsPrice() != 0) {
//打印添加找零或貼士行
String linePayType = orderDetailItem.getLinePayType() == 1 ? "找零" : "貼士";
PayMethod payMethod2 = new PayMethod();
//這裡打印退一格
payMethod2.setPayName(" " + linePayType);
payMethod2.setPayMoney(orderDetailItem.getTipsPrice());
payMethodList.add(payMethod2);
}
return payMethodList;
}
@OnClick({R2.id.btn_print_order, R2.id.btn_cancel_order, R2.id.btn_modify_order})
public void onClick(View v) {
int id = v.getId();
if (id == R.id.btn_print_order) {
startPrintOrder(mOrderDetailItem, mOrderDetailList);
......
......@@ -6,6 +6,7 @@ import android.graphics.drawable.StateListDrawable;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
......@@ -90,8 +91,6 @@ public class TableAdapter extends DefaultAdapter<TableBean.DataBean> {
return R.layout.table_recycler_table;
}
private Date date;
class TableItemHolder extends BaseHolder<TableBean.DataBean> {
@BindView(R2.id.ll_container)
......@@ -132,6 +131,7 @@ public class TableAdapter extends DefaultAdapter<TableBean.DataBean> {
tv_people.setVisibility(View.VISIBLE);
tv_people.setText(item.getPerson() + "人");
String createDate = item.getCreateTime();
if(!TextUtils.isEmpty(createDate)) {
String createTime = TimeUtil.getStringByFormat(new Date(createDate), TimeUtil.dateFormatYMDHMS);
String currentTime = TimeUtil.getStringByFormat(System.currentTimeMillis(), TimeUtil.dateFormatYMDHMS);
long[] difference = TimeUtil.getDistanceTimes2(createTime, currentTime);
......@@ -142,6 +142,12 @@ public class TableAdapter extends DefaultAdapter<TableBean.DataBean> {
}
tv_open_duration.setVisibility(View.VISIBLE);
} else {
tv_open_duration.setVisibility(View.GONE);
}
btn_table.setMaxLines(1);
} else {
//未開檯空間足夠可換行顯示
btn_table.setMaxLines(2);
tv_people.setVisibility(View.GONE);
tv_open_duration.setVisibility(View.GONE);
}
......@@ -149,11 +155,6 @@ public class TableAdapter extends DefaultAdapter<TableBean.DataBean> {
private void initTableBackground(TableBean.DataBean item) {
// if (item.getClearstate() > 0) {
// setBackGroundWork(item, "Cleaning", R.drawable.tablebutton_splite, R.drawable.tablebutton_splite_new, R.color.black);
// return;
// }
// if (item.getSplitStatus() != 0) {
// setBackGroundWork(item, "888", R.drawable.tablebutton_splite, R.drawable.tablebutton_splite_new, R.color.black);
// } else {
......@@ -165,7 +166,7 @@ public class TableAdapter extends DefaultAdapter<TableBean.DataBean> {
setBackGroundWork(item, "0", R.drawable.table_shape_table_nomal, R.drawable.tablebutton_skyblue_new, R.color.black);
break;
case 1:
setBackGroundWork(item, "1", R.drawable.tablebutton_default, R.drawable.tablebutton_default_new, R.color.theme_white_color);
setBackGroundWork(item, "999", R.drawable.table_shape_table_use, R.drawable.tablebutton_red_new, R.color.theme_white_color);
break;
case 2:
setBackGroundWork(item, "2", R.drawable.table_shape_table_send, R.drawable.tablebutton_glassgreen_new, R.color.theme_white_color);
......@@ -219,7 +220,6 @@ public class TableAdapter extends DefaultAdapter<TableBean.DataBean> {
}
private void setBackGroundWork(TableBean.DataBean item, String workstatu, int defaultMainback, int defaultChildBack, int defaultFontColor) {
String tableName = item.getTableName();
if (defaultMainback != -1) {
ll_container.setBackground(mContext.getResources().getDrawable(defaultMainback));
}
......
......@@ -16,6 +16,7 @@ import com.jess.arms.base.BaseHolder;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.utils.ArmsUtils;
import com.jess.arms.utils.DeviceUtils;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import java.util.List;
......
package com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal;
import android.content.Context;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.FrameLayout;
import android.widget.GridLayout;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2;
import com.jess.arms.utils.ArmsUtils;
import com.jess.arms.utils.DeviceUtils;
import java.util.List;
import androidx.recyclerview.widget.GridLayoutManager;
import butterknife.BindView;
public class HorizontalGridViewAdpter extends BaseAdapter {
private Context mContext;
private List<Food> lists;//数据源
private int mIndex; // 页数下标,标示第几页,从0开始
private int mPargerSize;// 每页显示的最大的数量
private int mOrderNumberShowSize;
private int mOrderNumberFontSize;
private int FoodTypeFontSize;
private int mParentRowCount;
private int mParentColWidth;
private int mParentColHeight;
private int mLayoutQtyHeight;
private int currentSelectPosition;
public HorizontalGridViewAdpter(Context context, List<Food> lists, int mIndex, int mPargerSize) {
this.mContext = context;
this.lists = lists;
this.mIndex = mIndex;
this.mPargerSize = mPargerSize;
this.mOrderNumberShowSize = GsaCloudApplication.androidSetting.getOrderNumberShowSize();
this.mOrderNumberFontSize = GsaCloudApplication.androidSetting.getOrderNumberFontSize();
this.FoodTypeFontSize = GsaCloudApplication.androidSetting.getFoodTypeFontSize();
int foodCol = GsaCloudApplication.androidSetting.getFoodTypeCol();
this.mParentColWidth = (int) (DeviceUtils.getScreenWidth(context) / foodCol);
this.mParentColHeight = GsaCloudApplication.androidSetting.getLayoutFoodTypeHeight() / GsaCloudApplication.androidSetting.getFoodTypeRow();
this.mLayoutQtyHeight = GsaCloudApplication.androidSetting.getLayoutQtyHeight();
}
/**
* 先判断数据及的大小是否显示满本页lists.size() > (mIndex + 1)*mPagerSize
* 如果满足,则此页就显示最大数量lists的个数
* 如果不够显示每页的最大数量,那么剩下几个就显示几个
*/
@Override
public int getCount() {
return lists.size() > (mIndex + 1) * mPargerSize ?
mPargerSize : (lists.size() - mIndex * mPargerSize);
}
@Override
public Food getItem(int arg0) {
return lists.get(arg0 + mIndex * mPargerSize);
}
@Override
public long getItemId(int arg0) {
return arg0 + mIndex * mPargerSize;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//重新确定position因为拿到的总是数据源,数据源是分页加载到每页的GridView上的
final int pos = position + mIndex * mPargerSize;//假设mPageSiez
Food food = lists.get(pos);
final ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = View.inflate(mContext, R.layout.meal_item_food_group, null);
holder.tv_name = convertView.findViewById(R.id.tv_name);
holder.tv_number = convertView.findViewById(R.id.tv_number);
holder.tv_soldout = convertView.findViewById(R.id.tv_soldout);
holder.rl_container = convertView.findViewById(R.id.rl_container);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
setFoodGroup(holder, food);
setNumber(holder, food);
setSoldoutStatus(holder, food);
//假设mPagerSize=8,假如点击的是第二页(即mIndex=1)上的第二个位置item(position=1),那么这个item的实际位置就是pos=9
holder.tv_name.setText(lists.get(pos).getFoodName());
holder.tv_name.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Food food = lists.get(pos);
for (int i = 0; i < lists.size(); i++) {
lists.get(i).setSelected(false);
}
lists.get(pos).setSelected(true);
if (mOnItemClickListener != null)
mOnItemClickListener.onItemClick(food, pos);
notifyDataSetChanged();
}
});
return convertView;
}
public void setFoodGroup(ViewHolder holder, Food datasBean) {
// holder.tv_name.setMaxHeight(50);
// holder.tv_name.setMinHeight(50);
// holder.tv_name.setHeight(50);
//
// holder.tv_name.setMaxWidth(mParentColWidth);
// holder.tv_name.setMinWidth(mParentColWidth);
// holder.tv_name.setWidth(mParentColWidth);
holder.tv_name.setText(datasBean.getFoodName());
holder.tv_name.setTextSize(FoodTypeFontSize);
// holder.tv_name.setHeight(mParentColHeight);
holder.tv_name.setGravity(Gravity.CENTER);
holder.rl_container.setLayoutParams(new RelativeLayout.LayoutParams(
mParentColWidth,
mParentColHeight));
//后台没有设置颜色当前选中高亮色,没有选中默认使用绿色
if (datasBean.isSelected()) {
holder.tv_name.setBackgroundColor(ArmsUtils.getColor(mContext, R.color.orange_500));
holder.tv_name.setTextColor(ArmsUtils.getColor(mContext, R.color.theme_white_color));
} else {
holder.tv_name.setBackgroundColor(ArmsUtils.getColor(mContext, R.color.Grass_green));
holder.tv_name.setTextColor(ArmsUtils.getColor(mContext, R.color.theme_white_color));
}
}
public void setNumber(ViewHolder holder, Food datasBean) {
holder.tv_number.setTextSize(10);
holder.tv_number.setHeight(mLayoutQtyHeight);
ViewGroup.MarginLayoutParams mp = new ViewGroup.MarginLayoutParams(mOrderNumberShowSize, mOrderNumberShowSize); //item�Ŀ��
mp.setMargins(0, 0, 0, 0);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(mp);
lp.width = ArmsUtils.dip2px(mContext, 16);
lp.height = ArmsUtils.dip2px(mContext, 16);
holder.tv_number.setLayoutParams(lp);
if (datasBean.getNumber() == 0) {
holder.tv_number.setVisibility(View.INVISIBLE);
} else {
holder.tv_number.setVisibility(View.VISIBLE);
holder.tv_number.setText(datasBean.getNumber() + "");
}
}
public void setSoldoutStatus(ViewHolder holder, Food datasBean) {
holder.tv_soldout.setMaxHeight(mOrderNumberShowSize);
holder.tv_soldout.setMinHeight(mOrderNumberShowSize);
holder.tv_soldout.setTextSize(mOrderNumberFontSize);
// String qty = datasBean.getOR_Qty();
// if (TextUtils.isEmpty(qty)) {
// tv_soldout.setVisibility(View.INVISIBLE);
// } else {
// tv_soldout.setVisibility(View.VISIBLE);
// holder.tv_soldout.setText(datasBean.getNumber());
// }
}
static class ViewHolder {
private TextView tv_name, tv_number, tv_soldout;
private RelativeLayout rl_container;
}
private OnItemClickListener mOnItemClickListener;
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
mOnItemClickListener = onItemClickListener;
}
public interface OnItemClickListener {
void onItemClick(Food food, int position);
}
}
......@@ -20,7 +20,7 @@ import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.gingersoft.gsa.cloud.table.di.component.DaggerAllOrderComponent;
import com.gingersoft.gsa.cloud.table.mvp.contract.AllOrderContract;
import com.gingersoft.gsa.cloud.table.mvp.presenter.AllOrderPresenter;
import com.gingersoft.gsa.cloud.table.mvp.presenter.orderManager.AllOrderPresenter;
import com.gingersoft.gsa.cloud.table.R;
import com.qmuiteam.qmui.widget.QMUIEmptyView;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
......@@ -130,7 +130,7 @@ public class AllOrderFragment extends BaseFragment<AllOrderPresenter> implements
case 1:
List<OrderDetailItem> addDataItem = (List<OrderDetailItem>) ((Message) data).obj;
if (mPresenter != null) {
mPresenter.addOrderData(addDataItem);
mPresenter.addOrderItem(addDataItem);
}
mEmptyView.hide();
recycle_order.setVisibility(View.VISIBLE);
......
package com.gingersoft.gsa.cloud.table.mvp.ui.fragment;
import android.content.Intent;
import android.net.ParseException;
import android.os.Bundle;
import android.os.Message;
import android.view.LayoutInflater;
......@@ -17,6 +18,8 @@ import com.gingersoft.gsa.cloud.table.mvp.contract.AllTableContract;
import com.gingersoft.gsa.cloud.table.mvp.presenter.AllTablePresenter;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity;
import com.gingersoft.gsa.cloud.ui.recylcler.decorator.GridDividerItemDecoration;
import com.google.gson.JsonIOException;
import com.google.gson.JsonParseException;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.component.AppComponent;
......@@ -24,7 +27,16 @@ import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.layout.QMUIRelativeLayout;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.util.QMUIResHelper;
import com.qmuiteam.qmui.widget.QMUIEmptyView;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
import org.json.JSONException;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import java.util.List;
import androidx.annotation.NonNull;
......@@ -57,10 +69,21 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
public class AllTableFragment extends BaseFragment<AllTablePresenter> implements AllTableContract.View {
@BindView(R2.id.refreshLayout)
SmartRefreshLayout refreshLayout;
@BindView(R2.id.recycle_all_table)
RecyclerView recycle_all_table;
@BindView(R2.id.emptyView)
QMUIEmptyView mEmptyView;
private TableActivity mActivity;
/**
* 當前頁碼
* 0#全部
* 1#狀態
*/
private int currentPageIndex;
private List<TableBean.DataBean> datasBeans;
......@@ -86,11 +109,29 @@ public class AllTableFragment extends BaseFragment<AllTablePresenter> implements
@Override
public void initData(@Nullable Bundle savedInstanceState) {
currentPageIndex = getArguments().getInt("currentPageIndex", TableActivity.FUNCTION_ALL_TABLE);
mActivity = (TableActivity) getActivity();
initRefreshLayout();
initRecycleScrollListener();
}
private void initRefreshLayout() {
refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh(@NonNull final RefreshLayout refreshLayout) {
//刷新餐檯數據
mActivity.getTables(false, refreshLayout);
}
});
refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override
public void onLoadMore(@NonNull final RefreshLayout refreshLayout) {
}
});
refreshLayout.setEnableLoadMore(false);
}
private void initRecycleScrollListener() {
recycle_all_table.addOnScrollListener(new RecyclerView.OnScrollListener() {
......@@ -112,7 +153,7 @@ public class AllTableFragment extends BaseFragment<AllTablePresenter> implements
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action){
switch (action) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE: //用户滑动 先停止刷新餐台数据
mActivity.onPauseRefreshTableData();
......@@ -137,11 +178,20 @@ public class AllTableFragment extends BaseFragment<AllTablePresenter> implements
datasBeans = (List<TableBean.DataBean>) ((Message) data).obj;
if (mPresenter != null) {
//recycleView正在滑动
if (recycle_all_table.getScrollState() != 0) {
if (recycle_all_table != null && recycle_all_table.getScrollState() != 0) {
} else {
if (currentPageIndex == TableActivity.FUNCTION_ALL_TABLE) {
mPresenter.updateAllTableData(getActivity(), datasBeans);
} else {
int status = ((Message) data).arg1;
mPresenter.updateStateTableData(getActivity(), datasBeans, status);
}
}
}
if (mEmptyView != null)
mEmptyView.hide();
if (recycle_all_table != null)
recycle_all_table.setVisibility(View.VISIBLE);
break;
case 2://刷新状态已变数据
datasBeans = (List<TableBean.DataBean>) ((Message) data).obj;
......@@ -152,6 +202,10 @@ public class AllTableFragment extends BaseFragment<AllTablePresenter> implements
mPresenter.updataTableItem(datasBeans);
}
}
if (mEmptyView != null)
mEmptyView.hide();
if (recycle_all_table != null)
recycle_all_table.setVisibility(View.VISIBLE);
break;
default:
//do something
......@@ -189,6 +243,46 @@ public class AllTableFragment extends BaseFragment<AllTablePresenter> implements
}
private View.OnClickListener onRetryClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
mActivity.getTables(true, refreshLayout);
}
};
@Override
public void showEmptyView(boolean isSuccess, int size, Throwable t) {
if (t != null) {
if (t instanceof UnknownHostException) {
//沒有網絡
mEmptyView.show(false, getResources().getString(R.string.emptyView_mode_desc_fail_title), getResources().getString(R.string.emptyView_mode_desc_fail_desc), getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
} else if (t instanceof SocketTimeoutException) {
//請求超時
mEmptyView.show(false, getResources().getString(R.string.emptyView_mode_desc_fail_title), getResources().getString(R.string.emptyView_mode_desc_fail_desc), getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
} else if (t instanceof JsonParseException || t instanceof ParseException || t instanceof JSONException || t instanceof JsonIOException) {
//數據解析錯誤
mEmptyView.show(false, getResources().getString(R.string.response_error_data_parsing_error), null, getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
} else {
//其他error
mEmptyView.show(false, getResources().getString(R.string.emptyView_mode_desc_fail_title), null, getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
}
recycle_all_table.setVisibility(View.INVISIBLE);
return;
}
if (!isSuccess) {
mEmptyView.show(false, getResources().getString(R.string.emptyView_mode_desc_fail_title), null, getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
recycle_all_table.setVisibility(View.INVISIBLE);
return;
}
if (size == 0) {
mEmptyView.show(getResources().getString(R.string.emptyView_mode_desc_double), null);
recycle_all_table.setVisibility(View.INVISIBLE);
return;
}
mEmptyView.hide();
recycle_all_table.setVisibility(View.VISIBLE);
}
@Override
public void setAllTableAdapter(DefaultAdapter adapter) {
recycle_all_table.setAdapter(adapter);
......
......@@ -11,6 +11,7 @@ import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.base.utils.VibratorUtils;
......@@ -24,7 +25,10 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaButton;
import com.qmuiteam.qmui.alpha.QMUIAlphaTextView;
import com.qmuiteam.qmui.alpha.QMUIAlphaTextView;
import org.w3c.dom.Text;
import java.util.ArrayList;
import java.util.List;
......@@ -58,37 +62,37 @@ public class InputTableFragment extends BaseFragment<InputTablePresenter> implem
ImageView iv_clear_account;
@BindView(R2.id.btn_0)
QMUIAlphaButton btn_0;
QMUIAlphaTextView btn_0;
@BindView(R2.id.btn_1)
QMUIAlphaButton btn_1;
QMUIAlphaTextView btn_1;
@BindView(R2.id.btn_2)
QMUIAlphaButton btn_2;
QMUIAlphaTextView btn_2;
@BindView(R2.id.btn_3)
QMUIAlphaButton btn_3;
QMUIAlphaTextView btn_3;
@BindView(R2.id.btn_4)
QMUIAlphaButton btn_4;
QMUIAlphaTextView btn_4;
@BindView(R2.id.btn_5)
QMUIAlphaButton btn_5;
QMUIAlphaTextView btn_5;
@BindView(R2.id.btn_6)
QMUIAlphaButton btn_6;
QMUIAlphaTextView btn_6;
@BindView(R2.id.btn_7)
QMUIAlphaButton btn_7;
QMUIAlphaTextView btn_7;
@BindView(R2.id.btn_8)
QMUIAlphaButton btn_8;
QMUIAlphaTextView btn_8;
@BindView(R2.id.btn_9)
QMUIAlphaButton btn_9;
QMUIAlphaTextView btn_9;
@BindView(R2.id.btn_clear)
QMUIAlphaButton btn_clear;
QMUIAlphaTextView btn_clear;
@BindView(R2.id.btn_A)
QMUIAlphaButton btn_A;
QMUIAlphaTextView btn_A;
@BindView(R2.id.btn_B)
QMUIAlphaButton btn_B;
QMUIAlphaTextView btn_B;
@BindView(R2.id.btn_C)
QMUIAlphaButton btn_C;
QMUIAlphaTextView btn_C;
@BindView(R2.id.btn_more)
QMUIAlphaButton btn_more;
QMUIAlphaTextView btn_more;
@BindView(R2.id.btn_right)
QMUIAlphaButton btn_right;
QMUIAlphaTextView btn_right;
private TableActivity mActivity;
private List<TableBean.DataBean> mTableList = new ArrayList<>();
......@@ -130,7 +134,6 @@ public class InputTableFragment extends BaseFragment<InputTablePresenter> implem
mActivity = (TableActivity) getActivity();
ed_value.setOnFocusChangeListener(mOnFocusChangeListener);
ed_value.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
......@@ -151,6 +154,7 @@ public class InputTableFragment extends BaseFragment<InputTablePresenter> implem
}
});
// ed_value.setOnFocusChangeListener(mOnFocusChangeListener);
}
private View.OnFocusChangeListener mOnFocusChangeListener = new View.OnFocusChangeListener() {
......@@ -195,7 +199,6 @@ public class InputTableFragment extends BaseFragment<InputTablePresenter> implem
}
btn_more.setText("…");
ed_value.setText("");
t_name = "";
ed_value.setHint("please input table");
......@@ -216,9 +219,6 @@ public class InputTableFragment extends BaseFragment<InputTablePresenter> implem
VibratorUtils.pressButtonSound(getActivity());
// GSAApplication.tableContract.setIsSplite(false);
// GSAApplication.tableContract.setTableno_split("");
if (v.getId() == R.id.iv_clear_account) {
if (inputstr.length() > 0) {
String sr = inputstr.substring(inputstr.length() - 1, inputstr.length());
......@@ -245,9 +245,8 @@ public class InputTableFragment extends BaseFragment<InputTablePresenter> implem
}
} else {
int i = Integer.parseInt(v.getTag().toString());
Button btn = (Button) v;
String s = btn.getText().toString();
TextView textView = (TextView) v;
String s = textView.getText().toString();
switch (i) {
case 0:
case 1:
......@@ -283,8 +282,8 @@ public class InputTableFragment extends BaseFragment<InputTablePresenter> implem
t_splite = "";
Splitemodal = false;
}
if (((Button) v).getText() != " ") {
inputstr = inputstr + ((Button) v).getText();
if (((TextView) v).getText() != " ") {
inputstr = inputstr + ((TextView) v).getText();
ed_value.setText(inputstr);
if (Splitemodal) {
t_splite = t_splite + s;
......@@ -318,7 +317,6 @@ public class InputTableFragment extends BaseFragment<InputTablePresenter> implem
break;
}
}
}
private void goToMealStandBefore() {
......
package com.gingersoft.gsa.cloud.table.mvp.ui.widget;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewStub;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.ui.adapter.BasTextSectiontAdapter;
import com.gingersoft.gsa.cloud.ui.bean.mode.LoginBean;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionHeader;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem;
import com.gingersoft.gsa.cloud.ui.widget.dialog.ChooseRestaurantDialog;
import com.jess.arms.utils.AndroidWorkaround;
import com.qmuiteam.qmui.layout.QMUILinearLayout;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.widget.QMUITopBar;
import com.qmuiteam.qmui.widget.section.QMUISection;
import com.qmuiteam.qmui.widget.section.QMUIStickySectionAdapter;
import com.qmuiteam.qmui.widget.section.QMUIStickySectionLayout;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import butterknife.BindView;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-03-28
* 修订历史:2020-03-28
* 描述:
*/
public class CancelFoodDialog extends Dialog {
private static final String TAG = "CancelFoodDialog";
public CancelFoodDialog(@NonNull Context context) {
super(context, R.style.MyDialogTheme2);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// getWindow().getDecorView().setPadding(0, 0, 0, 0);
setCanceledOnTouchOutside(true);
}
@Override
public void show() {
super.show();
}
@Override
public void dismiss() {
super.dismiss();
}
public static class Builder implements View.OnClickListener {
private Context mContext;
private CancelFoodDialog mDialog;
/**
* 取消原因數據
*/
private List<LoginBean.DataBean.UserBean.BrandsBean> mItems;
private BasTextSectiontAdapter mAdapter;
/***
* 可取消最大數
*/
private int maxCancelNumber = 1;
private QMUILinearLayout ll_container;
private QMUITopBar mTopBar;
private EditText ed_number_value;
private ImageView iv_clear_account;
private RecyclerView recycle_cancel_info;
private ViewStub vs_keypad;
public Builder(Context context) {
mContext = context;
mItems = new ArrayList<>();
}
public int getMaxCancelNumber() {
return maxCancelNumber;
}
public void setMaxCancelNumber(int maxCancelNumber) {
this.maxCancelNumber = maxCancelNumber;
}
@Override
public void onClick(View v) {
}
public CancelFoodDialog build() {
if (mDialog != null) {
return mDialog;
}
mDialog = new CancelFoodDialog(mContext);
View contentView = buildViews();
mDialog.setContentView(contentView, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
AndroidWorkaround.assistActivity(contentView);
return mDialog;
}
private View buildViews() {
View view = View.inflate(mContext, getContentViewLayoutId(), null);
mTopBar = view.findViewById(R.id.topbar);
ed_number_value = view.findViewById(R.id.ed_number_value);
iv_clear_account = view.findViewById(R.id.iv_clear_account);
recycle_cancel_info = view.findViewById(R.id.recycle_cancel_info);
vs_keypad = view.findViewById(R.id.vs_keypad);
ed_number_value.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (v.getId() == R.id.ed_number_value && hasFocus) {
//賬號框獲得焦點
if (ed_number_value.getText() != null && ed_number_value.getText().toString().length() > 0) {
iv_clear_account.setVisibility(View.VISIBLE);
} else {
iv_clear_account.setVisibility(View.GONE);
}
}
showKeypadLayout();
}
});
ed_number_value.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (ed_number_value.getText().toString().equals("")) {
iv_clear_account.setVisibility(View.GONE);
} else {
iv_clear_account.setVisibility(View.VISIBLE);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
initTopbar();
initCancelInfoRecycleView();
return view;
}
private void initCancelInfoRecycleView() {
recycle_cancel_info.setLayoutManager(createLayoutManager());
}
private void showKeypadLayout() {
try {
View iv_vsContent = vs_keypad.inflate(); //inflate 方法只能被调用一次,
addKeypadListener(iv_vsContent.findViewById(R.id.btn_0), iv_vsContent.findViewById(R.id.btn_1), iv_vsContent.findViewById(R.id.btn_2), iv_vsContent.findViewById(R.id.btn_3),
iv_vsContent.findViewById(R.id.btn_4), iv_vsContent.findViewById(R.id.btn_5), iv_vsContent.findViewById(R.id.btn_6), iv_vsContent.findViewById(R.id.btn_7),
iv_vsContent.findViewById(R.id.btn_8), iv_vsContent.findViewById(R.id.btn_9), iv_vsContent.findViewById(R.id.btn_clear), iv_vsContent.findViewById(R.id.btn_all_number));
} catch (Exception e) {
vs_keypad.setVisibility(View.VISIBLE);
recycle_cancel_info.setVisibility(View.INVISIBLE);
} finally {
}
}
private void hideKeypadLayout() {
vs_keypad.setVisibility(View.INVISIBLE);
recycle_cancel_info.setVisibility(View.VISIBLE);
}
private void addKeypadListener(View... views) {
for (int i = 0; i < views.length; i++) {
views[i].setOnClickListener(v -> {
switch (v.getId()) {
case R2.id.btn_0:
case R2.id.btn_1:
case R2.id.btn_2:
case R2.id.btn_3:
case R2.id.btn_4:
case R2.id.btn_5:
case R2.id.btn_6:
case R2.id.btn_7:
case R2.id.btn_8:
case R2.id.btn_9:
int tag = (int) v.getTag();
ed_number_value.setText(String.valueOf(getInputNumber() + tag));
break;
case R2.id.btn_clear:
ed_number_value.setText("");
break;
case R2.id.btn_all_number:
ed_number_value.setText(String.valueOf(maxCancelNumber));
break;
}
});
}
}
private void initTopbar() {
mTopBar.setBackgroundColor(ContextCompat.getColor(mContext, com.gingersoft.gsa.cloud.base.R.color.theme_color));
mTopBar.addLeftBackImageButton().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(vs_keypad.getVisibility() == View.VISIBLE){
hideKeypadLayout();
}else {
mDialog.dismiss();
}
}
});
mTopBar.setTitle("取消原因");
}
private RecyclerView.LayoutManager createLayoutManager() {
return new LinearLayoutManager(mContext) {
@Override
public RecyclerView.LayoutParams generateDefaultLayoutParams() {
return new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
}
};
}
private int getInputNumber() {
return Integer.parseInt(ed_number_value.getText().toString());
}
protected int getContentViewLayoutId() {
return R.layout.table_dialog_cancel_food;
}
public interface OnItemClickListener {
void onItemClick(ChooseRestaurantDialog dialog, SectionTextItem item, int position);
}
}
}
package com.gingersoft.gsa.cloud.table.mvp.ui.widget.customstatus;
import android.animation.AnimatorSet;
import android.animation.ValueAnimator;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PathMeasure;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;
import com.gingersoft.gsa.cloud.table.R;
import androidx.core.content.ContextCompat;
/**
*
*/
public class CustomStatusView extends View {
private int progressColor; //进度颜色
private int loadSuccessColor; //成功的颜色
private int loadFailureColor; //失败的颜色
private float progressWidth; //进度宽度
private float progressRadius; //圆环半径
private Paint mPaint;
private StatusEnum mStatus; //状态
private int startAngle = -90;
private int minAngle = -90;
private int sweepAngle = 120;
private int curAngle = 0;
//追踪Path的坐标
private PathMeasure mPathMeasure;
//画圆的Path
private Path mPathCircle;
//截取PathMeasure中的path
private Path mPathCircleDst;
private Path successPath;
private Path failurePathLeft;
private Path failurePathRight;
private ValueAnimator circleAnimator;
private float circleValue;
private float successValue;
private float failValueRight;
private float failValueLeft;
public CustomStatusView(Context context) {
this(context, null);
}
public CustomStatusView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CustomStatusView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
TypedArray array = context.getTheme().obtainStyledAttributes(attrs, R.styleable.CustomStatusView, defStyleAttr, 0);
progressColor = array.getColor(R.styleable.CustomStatusView_progress_color, ContextCompat.getColor(context, R.color.colorPrimary));
loadSuccessColor = array.getColor(R.styleable.CustomStatusView_load_success_color, ContextCompat.getColor(context, R.color.pay_load_success));
loadFailureColor = array.getColor(R.styleable.CustomStatusView_load_failure_color, ContextCompat.getColor(context, R.color.pay_load_failure));
progressWidth = array.getDimension(R.styleable.CustomStatusView_progress_width, 6);
progressRadius = array.getDimension(R.styleable.CustomStatusView_progress_radius, 100);
array.recycle();
initPaint();
initPath();
initAnim();
}
private void initPaint() {
mPaint = new Paint();
mPaint.setColor(progressColor);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setDither(true);
mPaint.setAntiAlias(true);
mPaint.setStrokeWidth(progressWidth);
mPaint.setStrokeCap(Paint.Cap.ROUND); //设置画笔为圆角笔触
}
private void initPath() {
mPathCircle = new Path();
mPathMeasure = new PathMeasure();
mPathCircleDst = new Path();
successPath = new Path();
failurePathLeft = new Path();
failurePathRight = new Path();
}
private void initAnim() {
circleAnimator = ValueAnimator.ofFloat(0, 1);
circleAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
circleValue = (float) animation.getAnimatedValue();
invalidate();
}
});
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.translate(getPaddingLeft(), getPaddingTop()); //将当前画布的点移到getPaddingLeft,getPaddingTop,后面的操作都以该点作为参照点
if (mStatus == StatusEnum.Loading) { //正在加载
mPaint.setColor(progressColor);
if (startAngle == minAngle) {
sweepAngle += 6;
}
if (sweepAngle >= 300 || startAngle > minAngle) {
startAngle += 6;
if (sweepAngle > 20) {
sweepAngle -= 6;
}
}
if (startAngle > minAngle + 300) {
startAngle %= 360;
minAngle = startAngle;
sweepAngle = 20;
}
canvas.rotate(curAngle += 4, progressRadius, progressRadius); //旋转的弧长为4
canvas.drawArc(new RectF(0, 0, progressRadius * 2, progressRadius * 2), startAngle, sweepAngle, false, mPaint);
invalidate();
} else if (mStatus == StatusEnum.LoadSuccess) { //加载成功
mPaint.setColor(loadSuccessColor);
mPathCircle.addCircle(getWidth() / 2, getWidth() / 2, progressRadius, Path.Direction.CW);
mPathMeasure.setPath(mPathCircle, false);
mPathMeasure.getSegment(0, circleValue * mPathMeasure.getLength(), mPathCircleDst, true); //截取path并保存到mPathCircleDst中
canvas.drawPath(mPathCircleDst, mPaint);
if (circleValue == 1) { //表示圆画完了,可以钩了
successPath.moveTo(getWidth() / 8 * 3, getWidth() / 2);
successPath.lineTo(getWidth() / 2, getWidth() / 5 * 3);
successPath.lineTo(getWidth() / 3 * 2, getWidth() / 5 * 2);
mPathMeasure.nextContour();
mPathMeasure.setPath(successPath, false);
mPathMeasure.getSegment(0, successValue * mPathMeasure.getLength(), mPathCircleDst, true);
canvas.drawPath(mPathCircleDst, mPaint);
}
} else { //加载失败
mPaint.setColor(loadFailureColor);
mPathCircle.addCircle(getWidth() / 2, getWidth() / 2, progressRadius, Path.Direction.CW);
mPathMeasure.setPath(mPathCircle, false);
mPathMeasure.getSegment(0, circleValue * mPathMeasure.getLength(), mPathCircleDst, true);
canvas.drawPath(mPathCircleDst, mPaint);
if (circleValue == 1) { //表示圆画完了,可以画叉叉的右边部分
failurePathRight.moveTo(getWidth() / 3 * 2, getWidth() / 3);
failurePathRight.lineTo(getWidth() / 3, getWidth() / 3 * 2);
mPathMeasure.nextContour();
mPathMeasure.setPath(failurePathRight, false);
mPathMeasure.getSegment(0, failValueRight * mPathMeasure.getLength(), mPathCircleDst, true);
canvas.drawPath(mPathCircleDst, mPaint);
}
if (failValueRight == 1) { //表示叉叉的右边部分画完了,可以画叉叉的左边部分
failurePathLeft.moveTo(getWidth() / 3, getWidth() / 3);
failurePathLeft.lineTo(getWidth() / 3 * 2, getWidth() / 3 * 2);
mPathMeasure.nextContour();
mPathMeasure.setPath(failurePathLeft, false);
mPathMeasure.getSegment(0, failValueLeft * mPathMeasure.getLength(), mPathCircleDst, true);
canvas.drawPath(mPathCircleDst, mPaint);
}
}
}
//重制路径
private void resetPath() {
successValue = 0;
circleValue = 0;
failValueLeft = 0;
failValueRight = 0;
mPathCircle.reset();
mPathCircleDst.reset();
failurePathLeft.reset();
failurePathRight.reset();
successPath.reset();
}
private void setStatus(StatusEnum status) {
mStatus = status;
}
public void loadLoading() {
resetPath();
setStatus(StatusEnum.Loading);
invalidate();
}
public void loadSuccess() {
resetPath();
setStatus(StatusEnum.LoadSuccess);
startSuccessAnim();
}
public void loadFailure() {
resetPath();
setStatus(StatusEnum.LoadFailure);
startFailAnim();
}
private void startSuccessAnim() {
ValueAnimator success = ValueAnimator.ofFloat(0f, 1.0f);
success.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
successValue = (float) animation.getAnimatedValue();
invalidate();
}
});
//组合动画,一先一后执行
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.play(success).after(circleAnimator);
animatorSet.setDuration(500);
animatorSet.start();
}
private void startFailAnim() {
ValueAnimator failLeft = ValueAnimator.ofFloat(0f, 1.0f);
failLeft.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
failValueRight = (float) animation.getAnimatedValue();
invalidate();
}
});
ValueAnimator failRight = ValueAnimator.ofFloat(0f, 1.0f);
failRight.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
failValueLeft = (float) animation.getAnimatedValue();
invalidate();
}
});
//组合动画,一先一后执行
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.play(failLeft).after(circleAnimator).before(failRight);
animatorSet.setDuration(500);
animatorSet.start();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int width;
int height;
int mode = MeasureSpec.getMode(widthMeasureSpec);
int size = MeasureSpec.getSize(widthMeasureSpec);
if (mode == MeasureSpec.EXACTLY) {
width = size;
} else {
width = (int) (2 * progressRadius + progressWidth + getPaddingLeft() + getPaddingRight());
}
mode = MeasureSpec.getMode(heightMeasureSpec);
size = MeasureSpec.getSize(heightMeasureSpec);
if (mode == MeasureSpec.EXACTLY) {
height = size;
} else {
height = (int) (2 * progressRadius + progressWidth + getPaddingTop() + getPaddingBottom());
}
setMeasuredDimension(width, height);
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.table.mvp.ui.widget.customstatus;
/**
*
*/
public enum StatusEnum {
Loading,
LoadSuccess,
LoadFailure
}
\ No newline at end of file
......@@ -26,9 +26,9 @@
<item>
<shape>
<solid android:color="#BBDFBD" />
<solid android:color="#FFCAC7CA" />
<stroke android:width="0.8dp" android:color="#AC2E2D" />
<!-- <stroke android:width="0.8dp" android:color="#AC2E2D" />-->
<corners android:radius="5dp" />
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<gradient
android:centerColor="@color/theme_white_color"
android:endColor="@color/table_print"
android:startColor="@color/table_send"
android:type="linear"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/theme_white_color"/>
<stroke android:color="#7D000000" android:width="1px"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/table_print"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/table_send"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/table_use"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<com.qmuiteam.qmui.alpha.QMUIAlphaRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rl_container"
android:layout_width="match_parent"
android:layout_height="wrap_content">
......@@ -60,4 +60,4 @@
android:src="@drawable/sold"
android:text="sold" />
</RelativeLayout>
</com.qmuiteam.qmui.alpha.QMUIAlphaRelativeLayout>
......@@ -3,7 +3,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
<com.qmuiteam.qmui.alpha.QMUIAlphaRelativeLayout
android:id="@+id/rl_container"
android:layout_width="match_parent"
android:layout_height="wrap_content">
......@@ -56,5 +56,5 @@
android:layout_alignParentTop="true"
android:background="@color/theme_black" />
</RelativeLayout>
</com.qmuiteam.qmui.alpha.QMUIAlphaRelativeLayout>
</RelativeLayout>
......@@ -10,7 +10,6 @@
android:layout_height="0dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="131dp"
android:text="Chronometer" />
<LinearLayout
......@@ -45,7 +44,7 @@
android:id="@+id/btn_numberman"
android:layout_width="match_parent"
android:layout_height="25dp"
android:background="#99CC33"
android:background="#FF51A933"
android:text="人數:0"
android:textColor="@drawable/ui_selector_white_press" />
......@@ -192,6 +191,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="0.01"
android:layout_margin="@dimen/dp_1"
android:background="@drawable/meal_selector_number_keys"
android:tag="1"
android:text="@string/Key_1" />
......@@ -202,6 +202,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="0.01"
android:layout_margin="@dimen/dp_1"
android:background="@drawable/meal_selector_number_keys"
android:tag="2"
android:text="@string/Key_2" />
......@@ -212,6 +213,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="0.01"
android:layout_margin="@dimen/dp_1"
android:background="@drawable/meal_selector_number_keys"
android:tag="3"
android:text="@string/Key_3" />
......@@ -222,6 +224,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="0.01"
android:layout_margin="@dimen/dp_1"
android:background="@drawable/meal_selector_number_keys"
android:tag="4"
android:text="@string/Key_4" />
......@@ -232,6 +235,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="0.01"
android:layout_margin="@dimen/dp_1"
android:background="@drawable/meal_selector_number_keys"
android:tag="5"
android:text="@string/Key_5" />
......@@ -242,6 +246,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="0.00"
android:layout_margin="@dimen/dp_1"
android:background="@drawable/meal_selector_number_keys"
android:src="@mipmap/meal_number_key"
android:tag="99" />
......
......@@ -11,7 +11,6 @@
android:layout_height="0dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="131dp"
android:text="Chronometer" />
<LinearLayout
......
......@@ -12,7 +12,6 @@
android:layout_height="0dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="131dp"
android:text="Chronometer" />
<LinearLayout
......
......@@ -17,6 +17,13 @@
android:layout_marginTop="?attr/qmui_topbar_height"
android:background="#FFE8E8E8">
<TextView
android:id="@+id/tv_show_Popup"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_45"
android:text=""
android:layout_alignParentRight="true"/>
<com.qmuiteam.qmui.widget.tab.QMUITabSegment
android:id="@+id/tabSegment"
android:layout_width="match_parent"
......
<?xml version="1.0" encoding="utf-8"?>
<com.qmuiteam.qmui.layout.QMUILinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll_container"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:qmui_outerNormalColor="?attr/qmui_skin_support_color_background"
app:qmui_borderColor="?attr/qmui_skin_support_color_separator"
app:qmui_showBorderOnlyBeforeL="true">
<com.qmuiteam.qmui.widget.QMUITopBar
android:id="@+id/topbar"
android:layout_width="match_parent"
android:layout_height="?attr/qmui_topbar_height"
app:qmui_topbar_title_color="@color/theme_white_color" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dp_8">
<EditText
android:id="@+id/ed_number_value"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_45"
android:background="@drawable/table_shape_input_table_number_frame"
android:ems="10"
android:enabled="false"
android:hint="@string/please_input_cancel_number"
android:textSize="@dimen/sp_20"
android:paddingLeft="@dimen/dp_8"
android:paddingRight="@dimen/dp_40"
android:layout_centerInParent="true"
android:gravity="right|center_vertical"
android:inputType="numberDecimal"
android:singleLine="true"
android:textColor="@color/table_input_table_keypad"
android:textColorHint="@color/theme_hint_color"
android:textStyle="bold" />
<ImageView
android:id="@+id/iv_clear_account"
android:layout_width="@dimen/dp_30"
android:layout_height="@dimen/dp_30"
android:padding="@dimen/dp_2"
android:layout_marginRight="@dimen/dp_25"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:src="@mipmap/ic_clear_text"
android:visibility="gone" />
</RelativeLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle_cancel_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="4"/>
<ViewStub
android:id="@+id/vs_keypad"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout="@layout/table_stub_cancel_food_keypad"
android:background="@drawable/table_shape_input_table_number_frame"/>
</FrameLayout>
</com.qmuiteam.qmui.layout.QMUILinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id="@+id/refreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle_all_table"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:background="@color/theme_background_color"
android:overScrollMode="never" />
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
</androidx.recyclerview.widget.RecyclerView>
<com.qmuiteam.qmui.widget.QMUIEmptyView
android:id="@+id/emptyView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true" />
</FrameLayout>
......@@ -59,9 +59,8 @@
android:layout_height="wrap_content"
android:layout_weight="1">
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_A"
style="@style/ButtonBorderless"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
......@@ -75,14 +74,14 @@
android:textSize="40dp"
android:textStyle="bold" />
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_7"
style="@style/ButtonBorderless"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
android:layout_weight="1"
android:focusable="true"
android:gravity="center"
android:layerType="software"
android:tag="7"
android:text="@string/Key_7"
......@@ -90,29 +89,29 @@
android:textSize="40dp"
android:textStyle="bold" />
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_8"
style="@style/ButtonBorderless"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
android:layout_weight="1"
android:focusable="true"
android:layerType="software"
android:gravity="center"
android:tag="8"
android:text="@string/Key_8"
android:textColor="@color/table_input_table_keypad"
android:textSize="40dp"
android:textStyle="bold" />
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_9"
style="@style/ButtonBorderless"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:focusable="true"
android:layerType="software"
android:gravity="center"
android:tag="9"
android:text="@string/Key_9"
android:textColor="@color/table_input_table_keypad"
......@@ -126,9 +125,8 @@
android:layout_height="wrap_content"
android:layout_weight="1">
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_B"
style="@style/ButtonBorderless"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
......@@ -136,15 +134,15 @@
android:layout_weight="1"
android:focusable="true"
android:layerType="software"
android:gravity="center"
android:tag="56"
android:text="@string/Key_7"
android:text="B"
android:textColor="@color/table_input_table_keypad"
android:textSize="40dp"
android:textStyle="bold" />
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_4"
style="@style/ButtonBorderless"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
......@@ -152,15 +150,15 @@
android:layout_weight="1"
android:focusable="true"
android:layerType="software"
android:gravity="center"
android:tag="4"
android:text="@string/Key_4"
android:textColor="@color/table_input_table_keypad"
android:textSize="40dp"
android:textStyle="bold" />
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_5"
style="@style/ButtonBorderless"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
......@@ -168,21 +166,22 @@
android:layout_weight="1"
android:focusable="true"
android:layerType="software"
android:gravity="center"
android:tag="5"
android:text="@string/Key_5"
android:textColor="@color/table_input_table_keypad"
android:textSize="40dp"
android:textStyle="bold" />
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_6"
style="@style/ButtonBorderless"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginTop="1dp"
android:layout_weight="1"
android:focusable="true"
android:layerType="software"
android:gravity="center"
android:tag="6"
android:text="@string/Key_6"
android:textColor="@color/table_input_table_keypad"
......@@ -196,9 +195,8 @@
android:layout_height="wrap_content"
android:layout_weight="1">
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_C"
style="@style/ButtonBorderless"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
......@@ -206,15 +204,15 @@
android:layout_weight="1"
android:focusable="true"
android:layerType="software"
android:gravity="center"
android:tag="57"
android:text="@string/Key_7"
android:text="-"
android:textColor="@color/table_input_table_keypad"
android:textSize="40dp"
android:textStyle="bold" />
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_1"
style="@style/ButtonBorderless"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
......@@ -222,15 +220,15 @@
android:layout_weight="1"
android:focusable="true"
android:layerType="software"
android:gravity="center"
android:tag="1"
android:text="@string/Key_1"
android:textColor="@color/table_input_table_keypad"
android:textSize="40dp"
android:textStyle="bold" />
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_2"
style="@style/ButtonBorderless"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
......@@ -238,21 +236,22 @@
android:layout_weight="1"
android:focusable="true"
android:layerType="software"
android:gravity="center"
android:tag="2"
android:text="@string/Key_2"
android:textColor="@color/table_input_table_keypad"
android:textSize="40dp"
android:textStyle="bold" />
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_3"
style="@style/ButtonBorderless"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginTop="1dp"
android:layout_weight="1"
android:focusable="true"
android:layerType="software"
android:gravity="center"
android:tag="3"
android:text="@string/Key_3"
android:textColor="@color/table_input_table_keypad"
......@@ -267,9 +266,8 @@
android:layout_weight="0.2"
android:background="#FFDDEDFE">
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_more"
style="@style/ButtonBorderless"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
......@@ -284,9 +282,8 @@
android:textSize="40dp"
android:textStyle="bold" />
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_clear"
style="@style/ButtonBorderless"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
......@@ -302,9 +299,8 @@
android:textSize="30sp"
android:textStyle="bold" />
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_0"
style="@style/ButtonBorderless"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
......@@ -319,7 +315,7 @@
android:textSize="40dp"
android:textStyle="bold" />
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_right"
android:layout_width="1dip"
android:layout_height="fill_parent"
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id="@+id/refreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle_state_table"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:background="@color/theme_background_color"
android:overScrollMode="never" />
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
</androidx.recyclerview.widget.RecyclerView>
\ No newline at end of file
<com.qmuiteam.qmui.widget.QMUIEmptyView
android:id="@+id/emptyView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true" />
</FrameLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<com.qmuiteam.qmui.alpha.QMUIAlphaLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll_container"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_45"
android:background="@drawable/selector_item_background"
android:gravity="center">
<ImageView
android:id="@+id/iv_status"
android:layout_width="@dimen/dp_12"
android:layout_height="@dimen/dp_12"
android:src="@drawable/table_shape_status_send"/>
<TextView
android:id="@+id/tv_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/sp_16"
android:textColor="@color/black"
android:layout_marginLeft="@dimen/dp_8"
android:text="已開檯"/>
</com.qmuiteam.qmui.alpha.QMUIAlphaLinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LL_keys"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFF6F5F8"
android:stretchColumns="*">
<TableRow
android:id="@+id/tableRow1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_7"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
android:layout_weight="1"
android:focusable="true"
android:gravity="center"
android:layerType="software"
android:tag="7"
android:text="@string/Key_7"
android:textColor="@color/table_input_table_keypad"
android:textSize="@dimen/sp_30" />
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_8"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
android:layout_weight="1"
android:focusable="true"
android:gravity="center"
android:layerType="software"
android:tag="8"
android:text="@string/Key_8"
android:textColor="@color/table_input_table_keypad"
android:textSize="@dimen/sp_30"/>
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_9"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:focusable="true"
android:gravity="center"
android:layerType="software"
android:tag="9"
android:text="@string/Key_9"
android:textColor="@color/table_input_table_keypad"
android:textSize="@dimen/sp_30" />
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_4"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
android:layout_marginTop="1dp"
android:layout_weight="1"
android:gravity="center"
android:focusable="true"
android:layerType="software"
android:tag="4"
android:text="@string/Key_4"
android:textColor="@color/table_input_table_keypad"
android:textSize="@dimen/sp_30"/>
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_5"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
android:layout_marginTop="1dp"
android:layout_weight="1"
android:focusable="true"
android:gravity="center"
android:layerType="software"
android:tag="5"
android:text="@string/Key_5"
android:textColor="@color/table_input_table_keypad"
android:textSize="@dimen/sp_30"/>
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_6"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginTop="1dp"
android:layout_weight="1"
android:focusable="true"
android:layerType="software"
android:gravity="center"
android:tag="6"
android:text="@string/Key_6"
android:textColor="@color/table_input_table_keypad"
android:textSize="@dimen/sp_30"/>
</TableRow>
<TableRow
android:id="@+id/tableRow3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_1"
style="@style/ButtonBorderless"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
android:layout_marginTop="1dp"
android:layout_weight="1"
android:focusable="true"
android:layerType="software"
android:gravity="center"
android:tag="1"
android:text="@string/Key_1"
android:textColor="@color/table_input_table_keypad"
android:textSize="@dimen/sp_30" />
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_2"
style="@style/ButtonBorderless"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
android:layout_marginTop="1dp"
android:layout_weight="1"
android:focusable="true"
android:layerType="software"
android:gravity="center"
android:tag="2"
android:text="@string/Key_2"
android:textColor="@color/table_input_table_keypad"
android:textSize="@dimen/sp_30" />
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_3"
style="@style/ButtonBorderless"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginTop="1dp"
android:layout_weight="1"
android:focusable="true"
android:layerType="software"
android:gravity="center"
android:tag="3"
android:text="@string/Key_3"
android:textColor="@color/table_input_table_keypad"
android:textSize="@dimen/sp_30"/>
</TableRow>
<TableRow
android:id="@+id/tableRow4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.2"
android:background="#FFDDEDFE">
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_clear"
style="@style/ButtonBorderless"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
android:layout_marginTop="1dp"
android:layout_weight="1"
android:focusable="true"
android:layerType="software"
android:gravity="center"
android:longClickable="true"
android:tag="99"
android:text="@string/Key_clear"
android:textColor="@color/table_input_table_keypad"
android:textSize="@dimen/sp_25"/>
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_0"
style="@style/ButtonBorderless"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
android:layout_marginTop="1dp"
android:layout_weight="1"
android:focusable="true"
android:gravity="center"
android:layerType="software"
android:tag="0"
android:text="@string/Key_0"
android:textColor="@color/table_input_table_keypad"
android:textSize="@dimen/sp_30" />
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/btn_all_number"
android:layout_width="1dip"
android:layout_height="fill_parent"
android:layout_marginTop="1dp"
android:layout_weight="1"
android:background="@color/table_input_table_keypad"
android:focusable="true"
android:gravity="center"
android:layerType="software"
android:tag="98"
android:text="所有"
android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_20" />
</TableRow>
</TableLayout>
\ No newline at end of file
......@@ -86,6 +86,7 @@
<string name="malnumber">請選擇按鍵錄入數量</string>
<string name="input_pay_money">請輸入支付金額</string>
<string name="please_input_table_number">請輸入檯號</string>
<string name="please_input_cancel_number">請輸入取消數量</string>
<string name="waring">警告</string>
<string name="presssound">按鍵音量</string>
<string name="Vibration">震動強度</string>
......
......@@ -137,6 +137,7 @@ public abstract class LoginInterfaceImpl<P extends BaseLoginPresenter> extends B
private void jumpDownloadActivity() {
CC.obtainBuilder("Component.Download")
.setActionName("showDownloadActivity")
.addParam("fromPage",1)
.build()
.call();
killMyself();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment