Commit d1f85c82 by Wyh

Merge remote-tracking branch 'origin/dev' into dev

parents 2a495b3e 8d5d9976
/build
\ No newline at end of file
ext.mainApp = true //设置为true,表示此module为主app module,一直以application方式编译
apply from: rootProject.file("cc-settings.gradle")
apply plugin: 'com.jakewharton.butterknife'
apply plugin: 'com.didi.dokit'
android {
compileSdkVersion rootProject.ext.android["compileSdkVersion"]
buildToolsVersion rootProject.ext.android["buildToolsVersion"]
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
}
defaultConfig {
minSdkVersion rootProject.ext.android["minSdkVersion"]
targetSdkVersion rootProject.ext.android["targetSdkVersion"]
applicationId 'com.gingersoft.gsa.cloud'
versionCode rootProject.ext.android["versionCode"]
versionName rootProject.ext.android["versionName"]
multiDexEnabled true
// ndk{
// abiFilters "armeabi-v7a"
// }
}
resourcePrefix "app"
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
zipAlignEnabled false
proguardFiles 'proguard.cfg'
}
}
lintOptions {
abortOnError false
}
dataBinding {
enabled = true
}
//修改生成的apk名字
applicationVariants.all { variant ->
variant.outputs.all {
def fileName
def date = new Date()
def formattedDate = date.format('yyyy-MM-dd')
if (variant.buildType.name == 'release') {
fileName = "${formattedDate}_GSA-Cloud_${variant.mergedFlavor.versionName}_正式版_.apk"
} else if (variant.buildType.name == 'Test') {
fileName = "${formattedDate}_GSA-Cloud_${variant.mergedFlavor.versionName}_測試版_.apk"
} else if (variant.buildType.name == 'debug') {
fileName = "${formattedDate}_GSA-Cloud_${variant.mergedFlavor.versionName}_debug_.apk"
}
outputFileName = fileName
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
}
# 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
\ No newline at end of file
package com.example.gsa_cloud2;
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.example.gsa_cloud2", appContext.getPackageName());
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.gsa_cloud2">
<!-- <application-->
<!-- android:allowBackup="true"-->
<!-- android:icon="@mipmap/ic_launcher"-->
<!-- android:label="@string/app_name"-->
<!-- android:roundIcon="@mipmap/ic_launcher_round"-->
<!-- android:supportsRtl="true"-->
<!-- android:theme="@style/AppTheme">-->
<!-- <activity android:name=".MainActivity">-->
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.MAIN" />-->
<!-- <category android:name="android.intent.category.LAUNCHER" />-->
<!-- </intent-filter>-->
<!-- </activity>-->
<!-- </application>-->
</manifest>
\ No newline at end of file
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
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="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>
<?xml version="1.0" encoding="utf-8"?>
<LinerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</LinerLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#6200EE</color>
<color name="colorPrimaryDark">#3700B3</color>
<color name="colorAccent">#03DAC5</color>
</resources>
\ No newline at end of file
<resources>
<string name="app_name">GSA-Cloud2</string>
</resources>
\ No newline at end of file
<resources>
<!-- &lt;!&ndash; Base application theme. &ndash;&gt;-->
<!-- <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">-->
<!-- &lt;!&ndash; Customize your theme here. &ndash;&gt;-->
<!-- <item name="colorPrimary">@color/colorPrimary</item>-->
<!-- <item name="colorPrimaryDark">@color/colorPrimaryDark</item>-->
<!-- <item name="colorAccent">@color/colorAccent</item>-->
<!-- </style>-->
</resources>
\ No newline at end of file
package com.example.gsa_cloud2;
import org.junit.Test;
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);
}
}
\ No newline at end of file
...@@ -166,7 +166,7 @@ class ComponentManager { ...@@ -166,7 +166,7 @@ class ComponentManager {
//异步调用,放到线程池中运行 //异步调用,放到线程池中运行
if (cc.isAsync()) { if (cc.isAsync()) {
if (CC.VERBOSE_LOG) { if (CC.VERBOSE_LOG) {
CC.verboseLog(callId, "put into thread pool"); CC.verboseLog(callId, "put into thread po ol");
} }
CC_THREAD_POOL.submit(processor); CC_THREAD_POOL.submit(processor);
//异步调用时此方法返回null,CCResult通过callback回调 //异步调用时此方法返回null,CCResult通过callback回调
......
...@@ -123,7 +123,7 @@ dependencies { ...@@ -123,7 +123,7 @@ dependencies {
addComponent 'component-delivery-pick' addComponent 'component-delivery-pick'
addComponent 'component-manager' addComponent 'component-manager'
addComponent 'component-coldchain' addComponent 'component-coldchain'
addComponent 'component-supply-chain' // addComponent 'component-supply-chain'
addComponent 'component-webview' addComponent 'component-webview'
addComponent 'component-scan' addComponent 'component-scan'
addComponent 'component-pay' addComponent 'component-pay'
......
...@@ -3,23 +3,63 @@ ...@@ -3,23 +3,63 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
package="com.gingersoft.gsa.cloud.login"> package="com.gingersoft.gsa.cloud.login">
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:resizeable="true"
android:smallScreens="true" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" /> <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission
android:name="android.permission.ACCESS_MOCK_LOCATION"
tools:ignore="MockLocation" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<!--相机权限--> <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.VIBRATE" />
<!-- 使用照相机权限 -->
<uses-permission android:name="android.permission.REORDER_TASKS" />
<!-- 自动聚焦权限 -->
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" />
<!--相机权限-->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<!--获取Activity任务栈 权限-->
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-feature <uses-feature
android:name="android.hardware.camera" android:name="android.hardware.camera"
android:required="false" /> android:required="false" />
<uses-feature <uses-feature
android:name="android.hardware.camera.autofocus" android:name="android.hardware.camera.autofocus"
android:required="false" /> android:required="false" />
<application <application
android:name="com.gingersoft.gsa.cloud.app.GsaCloudApplication" android:name="com.gingersoft.gsa.cloud.app.GsaCloudApplication"
android:allowBackup="true" android:allowBackup="true"
...@@ -27,13 +67,24 @@ ...@@ -27,13 +67,24 @@
android:label="@string/user_login_name" android:label="@string/user_login_name"
android:maxAspectRatio="2.4" android:maxAspectRatio="2.4"
android:networkSecurityConfig="@xml/network_android" android:networkSecurityConfig="@xml/network_android"
android:requestLegacyExternalStorage="true"
android:resizeableActivity="true" android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme" android:theme="@style/AppTheme"
tools:replace="android:label"> tools:replace="android:label">
<!--适配android 7.0文件访问 -->
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.gingersoft.gsa.cloud.login"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
<activity <activity
android:name=".mvp.ui.activity.mvp.ui.activity.WelcomeActivity" android:name=".mvp.ui.activity.mvp.ui.activity.WelcomeActivity"
android:launchMode="singleTop" android:launchMode="singleTop"
...@@ -46,7 +97,7 @@ ...@@ -46,7 +97,7 @@
</intent-filter> </intent-filter>
</activity> </activity>
<!-- HywebPOS支付頁 --> <!-- HywebPOS支付頁 -->
<activity <activity
android:name="com.etps.aca.lib.activity.CommandActivity" android:name="com.etps.aca.lib.activity.CommandActivity"
android:exported="true" /> android:exported="true" />
...@@ -64,6 +115,7 @@ ...@@ -64,6 +115,7 @@
<activity <activity
android:name=".mvp.ui.activity.mvp.ui.activity.ChooseRestaurantActivity" android:name=".mvp.ui.activity.mvp.ui.activity.ChooseRestaurantActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<meta-data <meta-data
android:name="com.gingersoft.gsa.cloud.common.config.globalconfig.GlobalConfiguration" android:name="com.gingersoft.gsa.cloud.common.config.globalconfig.GlobalConfiguration"
android:value="ConfigModule" /> android:value="ConfigModule" />
...@@ -85,16 +137,6 @@ ...@@ -85,16 +137,6 @@
android:name="notch.config" android:name="notch.config"
android:value="portrait|landscape" /> android:value="portrait|landscape" />
<!--适配android 7.0文件访问 -->
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.gingersoft.gsa.cloud.login"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
</application> </application>
</manifest> </manifest>
...@@ -2,6 +2,13 @@ ...@@ -2,6 +2,13 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.gingersoft.gsa.cloud.login"> package="com.gingersoft.gsa.cloud.login">
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false" />
<application <application
android:name="com.gingersoft.gsa.cloud.app.GsaCloudApplication" android:name="com.gingersoft.gsa.cloud.app.GsaCloudApplication"
android:allowBackup="true" android:allowBackup="true"
...@@ -54,5 +61,7 @@ ...@@ -54,5 +61,7 @@
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" /> <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<!--获取Activity任务栈 权限-->
<uses-permission android:name="android.permission.GET_TASKS" />
</manifest> </manifest>
package com.gingersoft.gsa.cloud.login; package com.gingersoft.gsa.cloud.login;
import android.content.Intent;
import com.billy.cc.core.component.CC; import com.billy.cc.core.component.CC;
import com.billy.cc.core.component.CCResult; import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.CCUtil; import com.billy.cc.core.component.CCUtil;
import com.billy.cc.core.component.IComponent; import com.billy.cc.core.component.IComponent;
import com.etps.aca.lib.activity.CommandActivity; import com.etps.aca.lib.activity.CommandActivity;
import com.gingersoft.gsa.cloud.app.GsaCloudApplication;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.component.ComponentAction; import com.gingersoft.gsa.cloud.component.ComponentAction;
import com.gingersoft.gsa.cloud.component.ComponentName; import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.login.mvp.ui.activity.mvp.ui.activity.ChooseRestaurantActivity; import com.gingersoft.gsa.cloud.login.mvp.ui.activity.mvp.ui.activity.ChooseRestaurantActivity;
...@@ -42,6 +46,9 @@ public class ComponentLogin implements IComponent { ...@@ -42,6 +46,9 @@ public class ComponentLogin implements IComponent {
case ComponentAction.Login.OPEN_LOGIN: case ComponentAction.Login.OPEN_LOGIN:
openLoginActivity(cc); openLoginActivity(cc);
break; break;
case ComponentAction.Login.OPEN_INIT_HYWEB_PAGE:
hywebOpenActivity();
break;
case "getInfo": case "getInfo":
getInfo(cc); getInfo(cc);
break; break;
...@@ -82,4 +89,9 @@ public class ComponentLogin implements IComponent { ...@@ -82,4 +89,9 @@ public class ComponentLogin implements IComponent {
CC.sendCCResult(cc.getCallId(), CCResult.success()); CC.sendCCResult(cc.getCallId(), CCResult.success());
} }
private void hywebOpenActivity(){
Intent intent = new Intent(GsaCloudApplication.getAppContext(),LoginActivity.class);
GsaCloudApplication.getAppContext().startActivity(intent);
}
} }
package com.gingersoft.gsa.cloud.login.mvp.presenter; package com.gingersoft.gsa.cloud.login.mvp.presenter;
import android.app.Application; import android.app.Application;
import android.text.TextUtils;
import com.gingersoft.gsa.cloud.app.GsaCloudApplication;
import com.gingersoft.gsa.cloud.common.oaId.DeviceID;
import com.gingersoft.gsa.cloud.common.utils.LanguageUtils; import com.gingersoft.gsa.cloud.common.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.login.R; import com.gingersoft.gsa.cloud.login.R;
import com.gingersoft.gsa.cloud.login.mvp.contract.LoginContract; import com.gingersoft.gsa.cloud.login.mvp.contract.LoginContract;
...@@ -68,6 +71,10 @@ public class LoginPresenter extends BaseLoginPresenter<LoginContract.Model, Logi ...@@ -68,6 +71,10 @@ public class LoginPresenter extends BaseLoginPresenter<LoginContract.Model, Logi
PermissionUtil.externalStorage(new PermissionUtil.RequestPermission() { PermissionUtil.externalStorage(new PermissionUtil.RequestPermission() {
@Override @Override
public void onRequestPermissionSuccess() { public void onRequestPermissionSuccess() {
if (TextUtils.isEmpty(DeviceID.getDeviceId())) {
//獲取權限成功重新獲取deviceId
GsaCloudApplication.initDeviceId();
}
} }
@Override @Override
...@@ -78,6 +85,8 @@ public class LoginPresenter extends BaseLoginPresenter<LoginContract.Model, Logi ...@@ -78,6 +85,8 @@ public class LoginPresenter extends BaseLoginPresenter<LoginContract.Model, Logi
@Override @Override
public void onRequestPermissionFailureWithAskNeverAgain(List<String> permissions) { public void onRequestPermissionFailureWithAskNeverAgain(List<String> permissions) {
mRootView.showMessage(LanguageUtils.get_language_system(mApplication, "external.storage.permission.hint", ArmsUtils.getString(mApplication, R.string.queue_write_external_storage_permission_hint)));
mRootView.killMyself();
} }
}, new RxPermissions(IAcitivty), mErrorHandler); }, new RxPermissions(IAcitivty), mErrorHandler);
} }
......
...@@ -36,8 +36,10 @@ import com.gingersoft.gsa.cloud.login.mvp.ui.adapter.GuideAdapter; ...@@ -36,8 +36,10 @@ import com.gingersoft.gsa.cloud.login.mvp.ui.adapter.GuideAdapter;
import com.gingersoft.gsa.cloud.ui.widget.Indicator.UIndicator; import com.gingersoft.gsa.cloud.ui.widget.Indicator.UIndicator;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import butterknife.BindView; import butterknife.BindView;
import butterknife.OnClick; import butterknife.OnClick;
...@@ -80,6 +82,11 @@ public class WelcomeActivity extends LoginInterfaceImpl<WelcomePresenter> implem ...@@ -80,6 +82,11 @@ public class WelcomeActivity extends LoginInterfaceImpl<WelcomePresenter> implem
} }
@Override @Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
ScaleAnimation animation = new ScaleAnimation(1.0f, 1.06f, 1.0f, 1.06f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); ScaleAnimation animation = new ScaleAnimation(1.0f, 1.06f, 1.0f, 1.06f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
animation.setDuration(2000); animation.setDuration(2000);
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity <activity
android:name=".mvp.ui.activity.NewMainActivity" android:name=".mvp.ui.activity.NewMainActivity"
android:launchMode="singleTask" /> android:launchMode="singleTop" />
<activity <activity
android:name=".mvp.ui.activity.ExpandListActivity" android:name=".mvp.ui.activity.ExpandListActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
......
...@@ -18,7 +18,9 @@ ...@@ -18,7 +18,9 @@
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme"> android:theme="@style/AppTheme">
<activity android:name=".mvp.ui.activity.menu.ShellActivity" /> <activity android:name=".mvp.ui.activity.menu.ShellActivity" />
<activity android:name=".mvp.ui.activity.NewMainActivity" /> <activity
android:name=".mvp.ui.activity.NewMainActivity"
android:launchMode="singleTop" />
<activity android:name=".mvp.ui.activity.ExpandListActivity" /> <activity android:name=".mvp.ui.activity.ExpandListActivity" />
<activity android:name=".mvp.ui.activity.RestaurantQrCodeActivity" /> <activity android:name=".mvp.ui.activity.RestaurantQrCodeActivity" />
<activity android:name=".mvp.ui.activity.LanguageActivity" /> <activity android:name=".mvp.ui.activity.LanguageActivity" />
......
package com.gingersoft.gsa.cloud.main; package com.gingersoft.gsa.cloud.main;
import android.app.Activity;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import com.billy.cc.core.component.CC; import com.billy.cc.core.component.CC;
import com.billy.cc.core.component.CCResult; import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.IComponent; import com.billy.cc.core.component.IComponent;
import com.gingersoft.gsa.cloud.component.ComponentAction;
import com.gingersoft.gsa.cloud.component.ComponentName; import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.common.function.FModule; import com.gingersoft.gsa.cloud.common.function.FModule;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.NewMainActivity; import com.gingersoft.gsa.cloud.main.mvp.ui.activity.NewMainActivity;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.SettlementReportActivity;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.FoodMenuManageActivity; import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.FoodMenuManageActivity;
import com.jess.arms.integration.AppManager;
import com.jess.arms.utils.ArmsUtils;
public class ComponentMain implements IComponent { public class ComponentMain implements IComponent {
...@@ -33,10 +39,11 @@ public class ComponentMain implements IComponent { ...@@ -33,10 +39,11 @@ public class ComponentMain implements IComponent {
new FModule("main/manager/bill", R.drawable.ic_meals_menu_management, R.drawable.ic_meals_menu_management_close), new FModule("main/manager/bill", R.drawable.ic_meals_menu_management, R.drawable.ic_meals_menu_management_close),
new FModule("main/manager/table", R.drawable.ic_dining_table_management, R.drawable.ic_dining_table_management_close), new FModule("main/manager/table", R.drawable.ic_dining_table_management, R.drawable.ic_dining_table_management_close),
new FModule("main/manager/printer", R.drawable.ic_print_management, R.drawable.ic_print_management_close), new FModule("main/manager/printer", R.drawable.ic_print_management, R.drawable.ic_print_management_close),
new FModule("main/manager/printQuery", R.drawable.ic_kitchen_print_query, R.drawable.ic_kitchen_print_query),
new FModule("main/manager/pay", R.drawable.ic_pay_management, R.drawable.ic_pay_management_close), new FModule("main/manager/pay", R.drawable.ic_pay_management, R.drawable.ic_pay_management_close),
new FModule("main/manager/discout", R.drawable.ic_discount_management, R.drawable.ic_discount_management_close), new FModule("main/manager/discout", R.drawable.ic_discount_management, R.drawable.ic_discount_management_close),
new FModule("main/manager/soldoutCtr", R.drawable.ic_sell_off_manger, R.drawable.ic_sell_off_manger), new FModule("main/manager/soldoutCtr", R.drawable.ic_sell_off_manger, R.drawable.ic_sell_off_manger),
new FModule("main/manager/qrCode", R.drawable.ic_discount_management, R.drawable.ic_discount_management_close) new FModule("main/manager/qrCode", R.drawable.ic_qr_code, R.drawable.ic_qr_code)
}; };
/** /**
* 首頁- 員工管理 * 首頁- 員工管理
...@@ -67,6 +74,7 @@ public class ComponentMain implements IComponent { ...@@ -67,6 +74,7 @@ public class ComponentMain implements IComponent {
*/ */
@Override @Override
public boolean onCall(CC cc) { public boolean onCall(CC cc) {
Context context = cc.getContext();
String actionName = cc.getActionName(); String actionName = cc.getActionName();
switch (actionName) { switch (actionName) {
case "showMainActivity": case "showMainActivity":
......
...@@ -37,10 +37,11 @@ public class FunctionMain { ...@@ -37,10 +37,11 @@ public class FunctionMain {
new FModule(MANAGER_GROUP + "bill", R.drawable.ic_meals_menu_management, R.drawable.ic_meals_menu_management_close), new FModule(MANAGER_GROUP + "bill", R.drawable.ic_meals_menu_management, R.drawable.ic_meals_menu_management_close),
new FModule(MANAGER_GROUP + "table", R.drawable.ic_dining_table_management, R.drawable.ic_dining_table_management_close), new FModule(MANAGER_GROUP + "table", R.drawable.ic_dining_table_management, R.drawable.ic_dining_table_management_close),
new FModule(MANAGER_GROUP + "printer", R.drawable.ic_print_management, R.drawable.ic_print_management_close), new FModule(MANAGER_GROUP + "printer", R.drawable.ic_print_management, R.drawable.ic_print_management_close),
new FModule(MANAGER_GROUP + "printQuery", R.drawable.ic_kitchen_print_query, R.drawable.ic_kitchen_print_query),
new FModule(MANAGER_GROUP + "pay", R.drawable.ic_pay_management, R.drawable.ic_pay_management_close), new FModule(MANAGER_GROUP + "pay", R.drawable.ic_pay_management, R.drawable.ic_pay_management_close),
new FModule(MANAGER_GROUP + "discout", R.drawable.ic_discount_management, R.drawable.ic_discount_management_close), new FModule(MANAGER_GROUP + "discout", R.drawable.ic_discount_management, R.drawable.ic_discount_management_close),
new FModule(MANAGER_GROUP + "soldoutCtr", R.drawable.ic_sell_off_manger, R.drawable.ic_sell_off_manger), new FModule(MANAGER_GROUP + "soldoutCtr", R.drawable.ic_sell_off_manger, R.drawable.ic_sell_off_manger),
new FModule(MANAGER_GROUP + "qrCode", R.drawable.ic_discount_management, R.drawable.ic_discount_management_close) new FModule(MANAGER_GROUP + "qrCode", R.drawable.ic_qr_code, R.drawable.ic_qr_code)
}; };
/** /**
......
...@@ -42,5 +42,9 @@ public interface NewMainContract { ...@@ -42,5 +42,9 @@ public interface NewMainContract {
Observable<Object> clearHeartbeat(RequestBody requestBody); Observable<Object> clearHeartbeat(RequestBody requestBody);
Observable<BaseResult> addSettlementOperation();
Observable<BaseResult> updateSettlementOperation(RequestBody requestBody);
} }
} }
...@@ -73,4 +73,16 @@ public class NewMainModel extends BaseModel implements NewMainContract.Model { ...@@ -73,4 +73,16 @@ public class NewMainModel extends BaseModel implements NewMainContract.Model {
return mRepositoryManager.obtainRetrofitService(MainService.class) return mRepositoryManager.obtainRetrofitService(MainService.class)
.clearHeartbeat(requestBody); .clearHeartbeat(requestBody);
} }
@Override
public Observable<BaseResult> addSettlementOperation() {
return mRepositoryManager.obtainRetrofitService(MainService.class)
.addSettlementOperation();
}
@Override
public Observable<BaseResult> updateSettlementOperation(RequestBody requestBody) {
return mRepositoryManager.obtainRetrofitService(MainService.class)
.updateSettlementOperation(requestBody);
}
} }
\ No newline at end of file
...@@ -40,4 +40,14 @@ public interface MainService { ...@@ -40,4 +40,14 @@ public interface MainService {
@GET("restaurant/getUrlInfo" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2) @GET("restaurant/getUrlInfo" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<RestaurantQrBean> getRestaurantQrCode(@Query("restaurantId") String restaurantId); Observable<RestaurantQrBean> getRestaurantQrCode(@Query("restaurantId") String restaurantId);
@POST("SystemButtonLanguage/getLanguageByBrandId" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> getLanguageByBrandId(@Body RequestBody requestBody);
@POST("posPay/addOperation" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> addSettlementOperation();
@POST("posPay/updateOperation" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> updateSettlementOperation(@Body RequestBody requestBody);
} }
...@@ -8,11 +8,15 @@ import android.text.TextUtils; ...@@ -8,11 +8,15 @@ import android.text.TextUtils;
import com.billy.cc.core.component.CC; import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager; import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
import com.gingersoft.gsa.cloud.common.bean.BaseResult; import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.common.webview.WebviewHelper; import com.gingersoft.gsa.cloud.common.webview.WebviewHelper;
import com.gingersoft.gsa.cloud.component.ComponentName; import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.main.mvp.contract.NewMainContract; import com.gingersoft.gsa.cloud.main.mvp.contract.NewMainContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.CheckVersionRequest; import com.gingersoft.gsa.cloud.main.mvp.model.bean.CheckVersionRequest;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.NewMainActivity; import com.gingersoft.gsa.cloud.main.mvp.ui.activity.NewMainActivity;
import com.gingersoft.gsa.cloud.pay.pos.OnPosActionListener;
import com.gingersoft.gsa.cloud.pay.pos.PosPay;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.HywebPosResponse;
import com.jess.arms.di.scope.ActivityScope; import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader; import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager; import com.jess.arms.integration.AppManager;
...@@ -157,6 +161,95 @@ public class NewMainPresenter extends BasePresenter<NewMainContract.Model, NewMa ...@@ -157,6 +161,95 @@ public class NewMainPresenter extends BasePresenter<NewMainContract.Model, NewMa
}); });
} }
public void addSettlementOperation(int restaurantId) {
RequestBody requestBody = new FormBody.Builder()
.add("restaurantId",String.valueOf(restaurantId))
.build();
mModel.addSettlementOperation()
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading("調起POS清機中..."))
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<BaseResult>(mErrorHandler) {
@Override
public void onNext(@NonNull BaseResult info) {
if (info != null && info.isSuccess()) {
if (info.getData() != null) {
PosPay.settlement(IActivity, IActivity, new OnPosActionListener() {
@Override
public void onPosSuccess(HywebPosResponse response) {
mRootView.showMessage("清機成功!");
updateSettlementOperation(restaurantId, GsonUtils.GsonString(response),1);
}
@Override
public void onPosException(Exception e) {
mRootView.showMessage("清機Exception :"+e.getMessage());
updateSettlementOperation(restaurantId, e.getMessage(),0);
}
@Override
public void onPosInvalid(String e) {
mRootView.showMessage(e);
updateSettlementOperation(restaurantId, e,2);
}
@Override
public void onUpdateStatusSuccess(HywebPosResponse response) {
}
@Override
public void onUpdateStatusError(Throwable e) {
}
});
}
} else {
mRootView.showMessage("調起POS清機失敗");
}
}
@Override
public void onError(Throwable t) {
super.onError(t);
mRootView.showMessage("調起POS清機失敗: "+t.getMessage());
}
});
}
public void updateSettlementOperation(int restaurantId,String content,int status) {
RequestBody requestBody = new FormBody.Builder()
.add("restaurantId",String.valueOf(restaurantId))
.add("content",content)
.add("status",String.valueOf(status))
.build();
mModel.updateSettlementOperation(requestBody)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading(null))
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<BaseResult>(mErrorHandler) {
@Override
public void onNext(@NonNull BaseResult info) {
if (info != null && info.isSuccess()) {
mRootView.showMessage("更新清機狀態成功");
}else {
mRootView.showMessage("更新清機狀態無效");
}
}
@Override
public void onError(Throwable t) {
super.onError(t);
mRootView.showMessage("更新清機狀態失敗: "+t.getMessage());
}
});
}
public void clearHeartbeat(){ public void clearHeartbeat(){
RequestBody requestBody = new FormBody.Builder() RequestBody requestBody = new FormBody.Builder()
......
...@@ -7,6 +7,7 @@ import androidx.core.content.ContextCompat ...@@ -7,6 +7,7 @@ import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.chad.library.adapter.base.BaseQuickAdapter import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.gingersoft.gsa.cloud.common.config.LoganConfig
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager
import com.gingersoft.gsa.cloud.common.utils.FileUtils import com.gingersoft.gsa.cloud.common.utils.FileUtils
import com.gingersoft.gsa.cloud.main.R import com.gingersoft.gsa.cloud.main.R
...@@ -26,10 +27,14 @@ class LookLogActivity : AppCompatActivity() { ...@@ -26,10 +27,14 @@ class LookLogActivity : AppCompatActivity() {
log_top_bar.setBackgroundColor(ContextCompat.getColor(this, R.color.theme_color)) log_top_bar.setBackgroundColor(ContextCompat.getColor(this, R.color.theme_color))
val file = File(FileUtils.ERRORLOG_PATH) val file = File(FileUtils.ERRORLOG_PATH)
// val file = File((getExternalFilesDir(null)!!.absolutePath
// + File.separator + LoganConfig.FILE_NAME))
val files = file.listFiles() val files = file.listFiles()
files?.let { files?.let {
val ml = ArrayList<File>() val ml = ArrayList<File>()
for(i in files.size-1 downTo 0){ for (i in files.size - 1 downTo 0) {
ml.add(files[i]) ml.add(files[i])
} }
rv_log.layoutManager = LinearLayoutManager(this) rv_log.layoutManager = LinearLayoutManager(this)
......
...@@ -33,6 +33,7 @@ import com.gingersoft.gsa.cloud.common.core.user.UserContext; ...@@ -33,6 +33,7 @@ import com.gingersoft.gsa.cloud.common.core.user.UserContext;
import com.gingersoft.gsa.cloud.common.function.FunctionManager; import com.gingersoft.gsa.cloud.common.function.FunctionManager;
import com.gingersoft.gsa.cloud.common.function.jump.ActivityJumpBean; import com.gingersoft.gsa.cloud.common.function.jump.ActivityJumpBean;
import com.gingersoft.gsa.cloud.common.function.jump.ActivityJumpStrategy; import com.gingersoft.gsa.cloud.common.function.jump.ActivityJumpStrategy;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.utils.JsonUtils; import com.gingersoft.gsa.cloud.common.utils.JsonUtils;
import com.gingersoft.gsa.cloud.common.utils.encryption.Aes; import com.gingersoft.gsa.cloud.common.utils.encryption.Aes;
import com.gingersoft.gsa.cloud.common.utils.other.SPUtils; import com.gingersoft.gsa.cloud.common.utils.other.SPUtils;
...@@ -224,13 +225,14 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl ...@@ -224,13 +225,14 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "複製Token")); mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "複製Token"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "查看日誌")); // mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "查看日誌"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_mall_center, "商城中心")); mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_mall_center, "商城中心"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_about_us, "關於我們")); mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_about_us, "關於我們"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_password, "修改密碼")); mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_password, "修改密碼"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "設置")); mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "設置"));
} }
// mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "查看日誌")); mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "查看日誌"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "上傳日誌"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_settlement_report, "清機")); mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_settlement_report, "清機"));
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "切換環境")); mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "切換環境"));
...@@ -265,6 +267,9 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl ...@@ -265,6 +267,9 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
case "查看日誌": case "查看日誌":
launchActivity(new Intent(mContext, LookLogActivity.class)); launchActivity(new Intent(mContext, LookLogActivity.class));
break; break;
case "上傳日誌":
LoganManager.uploadLog(mContext, true);
break;
} }
}); });
} }
...@@ -284,11 +289,11 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl ...@@ -284,11 +289,11 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
} }
List<Function> managerFuncations = FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.manager, "manager"); List<Function> managerFuncations = FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.manager, "manager");
managerFuncations.add(new Function(171, 163, 5, "二維碼", R.drawable.ic_qr_code, 0)); managerFuncations.add(new Function(172, 163, 5, "N5清機", R.drawable.ic_expand_list, 0));
managerFuncations.add(new Function(171, 163, 5, "配置列表", R.drawable.ic_expand_list, 0)); managerFuncations.add(new Function(171, 163, 5, "配置列表", R.drawable.ic_expand_list, 0));
managerFuncations.add(new Function(171, 163, 5, "廚房打印查詢", R.drawable.ic_kitchen_print_query, 0)); // managerFuncations.add(new Function(171, 163, 5, "廚房打印查詢", R.drawable.ic_kitchen_print_query, 0));
managerFuncations.add(new Function(171, 163, 5, "餐牌管理", R.drawable.ic_food_menu_manger, 0)); // managerFuncations.add(new Function(171, 163, 5, "餐牌管理", R.drawable.ic_food_menu_manger, 0));
managerFuncations.add(new Function(171, 163, 5, "採購", R.drawable.ic_purchase, 0)); // managerFuncations.add(new Function(171, 163, 5, "採購", R.drawable.ic_purchase, 0));
if (managerFuncations.size() > 0) { if (managerFuncations.size() > 0) {
functions.addAll(managerFuncations); functions.addAll(managerFuncations);
...@@ -367,6 +372,9 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl ...@@ -367,6 +372,9 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
private void functionClick(String name, int status) { private void functionClick(String name, int status) {
switch (name) { switch (name) {
case "N5清機":
mPresenter.addSettlementOperation(RestaurantInfoManager.newInstance().getRestaurantId());
break;
case "餐檯模式": case "餐檯模式":
CC.obtainBuilder(ComponentName.COMPONENT_TABLE) CC.obtainBuilder(ComponentName.COMPONENT_TABLE)
.setActionName("showTableActivity") .setActionName("showTableActivity")
......
...@@ -3,7 +3,9 @@ ...@@ -3,7 +3,9 @@
package="com.gingersoft.gsa.cloud.pay"> package="com.gingersoft.gsa.cloud.pay">
<application> <application>
<activity android:name=".mvp.ui.activity.PayResultActivity" /> <activity
android:name=".mvp.ui.activity.PayResultActivity"
android:launchMode="singleTop"/>
</application> </application>
</manifest> </manifest>
\ No newline at end of file
...@@ -11,7 +11,9 @@ ...@@ -11,7 +11,9 @@
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme"> android:theme="@style/AppTheme">
<activity android:name=".mvp.ui.activity.PayResultActivity" /> <activity
android:name=".mvp.ui.activity.PayResultActivity"
android:launchMode="singleTop"/>
<meta-data <meta-data
android:name="com.gingersoft.gsa.cloud.common.config.globalconfig.GlobalConfiguration" android:name="com.gingersoft.gsa.cloud.common.config.globalconfig.GlobalConfiguration"
......
...@@ -7,6 +7,7 @@ import com.billy.cc.core.component.CCResult; ...@@ -7,6 +7,7 @@ import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.CCUtil; import com.billy.cc.core.component.CCUtil;
import com.billy.cc.core.component.IComponent; import com.billy.cc.core.component.IComponent;
import com.gingersoft.gsa.cloud.component.ComponentName; import com.gingersoft.gsa.cloud.component.ComponentName;
import com.jess.arms.utils.ArmsUtils;
import com.joe.print.mvp.print.service.PrjService; import com.joe.print.mvp.print.service.PrjService;
import com.joe.print.mvp.ui.activity.PrintActivity; import com.joe.print.mvp.ui.activity.PrintActivity;
import com.joe.print.mvp.ui.activity.PrinterListActivity; import com.joe.print.mvp.ui.activity.PrinterListActivity;
...@@ -35,6 +36,9 @@ public class PrintComponent implements IComponent { ...@@ -35,6 +36,9 @@ public class PrintComponent implements IComponent {
public boolean onCall(CC cc) { public boolean onCall(CC cc) {
String actionName = cc.getActionName(); String actionName = cc.getActionName();
switch (actionName) { switch (actionName) {
case "killPrintActivity":
break;
case "showPrintActivity": case "showPrintActivity":
openActivity(cc); openActivity(cc);
break; break;
......
...@@ -19,6 +19,7 @@ import com.gingersoft.gsa.cloud.order.commodity.OrderDetail; ...@@ -19,6 +19,7 @@ import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder; import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.print.bean.PrintBillContent; import com.gingersoft.gsa.cloud.print.bean.PrintBillContent;
import com.gingersoft.gsa.cloud.print.bean.base.PrintBillItem; import com.gingersoft.gsa.cloud.print.bean.base.PrintBillItem;
import com.gingersoft.gsa.cloud.print.bean.base.PrintFoodItem;
import com.joe.print.mvp.model.bean.BillingBean; import com.joe.print.mvp.model.bean.BillingBean;
import com.joe.print.mvp.model.bean.HtmlLable; import com.joe.print.mvp.model.bean.HtmlLable;
import com.joe.print.mvp.print.common.HtmlContract; import com.joe.print.mvp.print.common.HtmlContract;
...@@ -72,53 +73,6 @@ public class PrintBill extends PrinterRoot<PrintBillContent> { ...@@ -72,53 +73,6 @@ public class PrintBill extends PrinterRoot<PrintBillContent> {
pritContent[i] = stringBuilder; pritContent[i] = stringBuilder;
} }
return pritContent; return pritContent;
// DoshokuOrder doshokuOrder = DoshokuOrder.getInstance();
// ShoppingCart shoppingCart = doshokuOrder.getShoppingCart();
//
// List<OrderDetail> foodList = shoppingCart.getOrderCommodityList();
// TableBean.DataBean tableBean = doshokuOrder.getOpenTableInfo();
//
// StringBuilder payInfo = new StringBuilder();
// for (PayMethod payMethod : doshokuOrder.getBillMoney()) {
// payInfo.append(payMethod.getPayName() + " ").append(payMethod.getPayMoney());
// }
//
// StringBuilder memberIntegerInfo = new StringBuilder();
// OrderDetails.DataBean data = getOrderMemberInfo();
// if (data.getAddPoints() != 0 || data.getOldPoints() != 0 || data.getAddPoints() != 0) {
// memberIntegerInfo.append(getPLable("本次積分:" + data.getAddPoints(), HTML_PRINT_GRAVITY_LEFT))
// .append(getPLable("結餘積分:" + data.getNowPoints(), HTML_PRINT_GRAVITY_LEFT))
// .append(getPLable("上次積分:" + data.getOldPoints(), HTML_PRINT_GRAVITY_LEFT));
// //名稱中間替換為*號
// if (data.getMEMBER_NAME() != null && data.getMEMBER_NAME().length() > 0) {
// memberIntegerInfo.append(getPLable("會員名稱:" + getReplaceAfter(data.getMEMBER_NAME()), HTML_PRINT_GRAVITY_LEFT));
// }
// if (data.getPHONE() != null && data.getPHONE().length() > 0) {
// memberIntegerInfo.append(getPLable("會員電話:" + getReplaceAfter(data.getPHONE()), HTML_PRINT_GRAVITY_LEFT));
// }
// }
//
// String stringBuilder = "<html><body>" +
// getHtmlPrintHeadInfo() +
// getHtmlPrintHeadOrderInfo(tableBean) +
// generateHtmlFoodInfo(foodList) +
// getHtmlBillInfo() +
// getWholeLine() +
// getPLable(payInfo.toString(), HTML_PRINT_GRAVITY_LEFT) +
// getWholeLine() +
// getPLable(memberIntegerInfo.toString(), HTML_PRINT_GRAVITY_LEFT);
//
// String integralQrCode = doshokuOrder.getIntegralQrcode();
// if (!TextUtils.isEmpty(integralQrCode) && (boolean) RestaurantExpandInfoUtils.getValue(ExpandConstant.ToPrintQRCode, false)) {
// stringBuilder += getPLable("請掃描二維碼", HTML_PRINT_GRAVITY_CENTER) +
// getHtmlQrCode(doshokuOrder.getIntegralQrcode()) +
// getPLable("《追加積分到個人賬戶》", HTML_PRINT_GRAVITY_CENTER);
// }
// stringBuilder += "</body></html>";
// String[] pritContent = new String[1];
// pritContent[0] = stringBuilder;
// return pritContent;
} }
private String getHtmlContent(PrinterDeviceBean deviceBean) { private String getHtmlContent(PrinterDeviceBean deviceBean) {
...@@ -235,13 +189,6 @@ public class PrintBill extends PrinterRoot<PrintBillContent> { ...@@ -235,13 +189,6 @@ public class PrintBill extends PrinterRoot<PrintBillContent> {
private Bitmap getBitmap(Context mContext, PrinterDeviceBean deviceBean) { private Bitmap getBitmap(Context mContext, PrinterDeviceBean deviceBean) {
DoshokuOrder doshokuOrder = DoshokuOrder.getInstance();
ShoppingCart shoppingCart = doshokuOrder.getShoppingCart();
List<OrderDetail> foodList = shoppingCart.getOrderCommodityList();
TableBean.DataBean tableBean = doshokuOrder.getOpenTableInfo();
LinearLayout layout = new LinearLayout(mContext); LinearLayout layout = new LinearLayout(mContext);
layout.setOrientation(LinearLayout.VERTICAL); layout.setOrientation(LinearLayout.VERTICAL);
...@@ -250,28 +197,28 @@ public class PrintBill extends PrinterRoot<PrintBillContent> { ...@@ -250,28 +197,28 @@ public class PrintBill extends PrinterRoot<PrintBillContent> {
layout.addView(getLine(mContext)); layout.addView(getLine(mContext));
//訂單信息 //訂單信息
String tableName = "餐檯:" + tableBean.getTableName(); String tableName = "餐檯:" + mPrintBillContent.getTableName();
String peopleNum = "人數:" + doshokuOrder.getOpenTableInfo().getPerson(); String peopleNum = "人數:" + mPrintBillContent.getPerson();
String orderNum = "單號:"; String orderNum = "單號:";
if (TextUtil.isNotEmptyOrNullOrUndefined(doshokuOrder.getOrderNo())) { if (TextUtil.isNotEmptyOrNullOrUndefined(mPrintBillContent.getOrderNo())) {
orderNum = "單號:" + doshokuOrder.getOrderNo(); orderNum = "單號:" + mPrintBillContent.getOrderNo();
} }
String createTime = "日期:" + TimeUtils.parseTimeRepeat(tableBean.getCreateTime(), TimeUtils.DEFAULT_DATE_FORMAT); String createTime = "日期:" + TimeUtils.parseTimeRepeat(mPrintBillContent.getCreateTime(), TimeUtils.DEFAULT_DATE_FORMAT);
layout.addView(getDiningTableOrderInfo(mContext, tableName, peopleNum, orderNum, createTime)); layout.addView(getDiningTableOrderInfo(mContext, tableName, peopleNum, orderNum, createTime));
layout.addView(getLine(mContext)); layout.addView(getLine(mContext));
//食品信息 //食品信息
layout.addView(getDiningFoodList(mContext, foodList, deviceBean, 1, true)); layout.addView(getDiningFoodList(mContext, mPrintBillContent.getFoodItemList(), deviceBean, 1, true));
layout.addView(getHalfLine(mContext)); layout.addView(getHalfLine(mContext));
//訂單金額信息 //訂單金額信息
List<BillingBean> billingBeans = new ArrayList<>(); List<BillingBean> billingBeans = new ArrayList<>();
//添加合計項 //添加合計項
billingBeans.add(new BillingBean("合計", shoppingCart.getWholeAmount())); billingBeans.add(new BillingBean("合計", mPrintBillContent.getWholeAmount()));
//添加其他金額項 //添加其他金額項
if (shoppingCart.getBillItemList().size() > 0) { if (mPrintBillContent.getBillItemList().size() > 0) {
for (BillItem item : shoppingCart.getBillItemList()) { for (PrintBillItem item : mPrintBillContent.getBillItemList()) {
billingBeans.add(new BillingBean(item.getName(), item.getMoney())); billingBeans.add(new BillingBean(item.getBillName(), Double.parseDouble(item.getBillAmount())));
} }
} }
layout.addView(getDiningBillInfo(mContext, billingBeans)); layout.addView(getDiningBillInfo(mContext, billingBeans));
...@@ -281,12 +228,12 @@ public class PrintBill extends PrinterRoot<PrintBillContent> { ...@@ -281,12 +228,12 @@ public class PrintBill extends PrinterRoot<PrintBillContent> {
// for (OrderDetail OrderDetail : MyOrderManage.getInstance().getOrderFoodList()) { // for (OrderDetail OrderDetail : MyOrderManage.getInstance().getOrderFoodList()) {
// totalAmount = MoneyUtil.sum(totalAmount, OrderDetail.getPrice()); // totalAmount = MoneyUtil.sum(totalAmount, OrderDetail.getPrice());
// } // }
layout.addView(getAmountText(mContext, "總金額:" + shoppingCart.getTotalAmount())); layout.addView(getAmountText(mContext, "總金額:" + mPrintBillContent.getTotalAmount()));
layout.addView(getLine(mContext)); layout.addView(getLine(mContext));
layout.addView(getDiningBillPayMethod(mContext, doshokuOrder.getBillMoney())); layout.addView(getDiningBillPayMethod(mContext, mPrintBillContent.getPayMethodItemList()));
layout.addView(getLine(mContext)); layout.addView(getLine(mContext));
layout.addView(getTableMealMemberIntegerView(mContext, getOrderMemberInfo(), doshokuOrder.getIntegralQrcode())); layout.addView(getTableMealMemberIntegerView(mContext, getOrderMemberInfo(), mPrintBillContent.getIntegralQrCode()));
return zoomBitmap(deviceBean, viewToBitmap(mContext, layout)); return zoomBitmap(deviceBean, viewToBitmap(mContext, layout));
} }
......
...@@ -85,7 +85,7 @@ public class PrintOtherOrder extends PrinterRoot<PrintTakeawayFormContent> { ...@@ -85,7 +85,7 @@ public class PrintOtherOrder extends PrinterRoot<PrintTakeawayFormContent> {
layout.addView(getTakeawayOrderInfo(mContext, data)); layout.addView(getTakeawayOrderInfo(mContext, data));
//食品 //食品
layout.addView(getTextLine(mContext, "項目")); layout.addView(getTextLine(mContext, "項目"));
layout.addView(getDiningFoodList(mContext, OrderDetail.productMameBeanToOrderDetail(0, data.getPRODUCT_NAME()), deviceBean, 1, true)); layout.addView(getDiningFoodList(mContext, orderDetailCastPrintFoodItem(OrderDetail.productMameBeanToOrderDetail(0, data.getPRODUCT_NAME())), deviceBean, 1, true));
layout.addView(getLine(mContext)); layout.addView(getLine(mContext));
//訂單金額信息 //訂單金額信息
List<PrintBillItem> billData = new ArrayList<>(); List<PrintBillItem> billData = new ArrayList<>();
......
...@@ -216,7 +216,7 @@ public class PrintOtherOrderClosing extends PrinterRoot<PrintTakeawayCheckoutCon ...@@ -216,7 +216,7 @@ public class PrintOtherOrderClosing extends PrinterRoot<PrintTakeawayCheckoutCon
layout.addView(getTakeawayOrderInfo(mContext, data)); layout.addView(getTakeawayOrderInfo(mContext, data));
//食品 //食品
layout.addView(getTextLine(mContext, "項目")); layout.addView(getTextLine(mContext, "項目"));
layout.addView(getDiningFoodList(mContext, OrderDetail.productMameBeanToOrderDetail(1, data.getPRODUCT_NAME()), deviceBean, 1, true)); layout.addView(getDiningFoodList(mContext, orderDetailCastPrintFoodItem(OrderDetail.productMameBeanToOrderDetail(1, data.getPRODUCT_NAME())), deviceBean, 1, true));
layout.addView(getLine(mContext)); layout.addView(getLine(mContext));
//訂單金額信息 //訂單金額信息
List<PrintBillItem> billData = new ArrayList<>(); List<PrintBillItem> billData = new ArrayList<>();
......
...@@ -14,6 +14,10 @@ import com.joe.print.R; ...@@ -14,6 +14,10 @@ import com.joe.print.R;
import com.joe.print.mvp.model.bean.HtmlLable; import com.joe.print.mvp.model.bean.HtmlLable;
import com.joe.print.mvp.print.common.HtmlContract; import com.joe.print.mvp.print.common.HtmlContract;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -50,28 +54,18 @@ public class PrintQRCode extends PrinterRoot<PrintQRCodeContent> { ...@@ -50,28 +54,18 @@ public class PrintQRCode extends PrinterRoot<PrintQRCodeContent> {
if (mQRCodeBean == null) { if (mQRCodeBean == null) {
return new String[]{"<html><body></body></html>"}; return new String[]{"<html><body></body></html>"};
} }
//http://m.ricepon.com/member-web/qrcode/qrcode.html?WMP2&?arg={"type":2,"QR":"a7fbc0570c974287a5df7fc149348599"} String qrcode = null;
// String stringBuilder = "<html><body>" + try {
// getHtmlContent() + qrcode = URLEncoder.encode(mQRCodeBean.getPrintQrcode(),"UTF-8") ;
// "</body></html>"; } catch (UnsupportedEncodingException e) {
// int printCount = getPrintCount(mContext); e.printStackTrace();
// String[] pritContent = new String[printCount]; }
// for (int i = 0; i < printCount; i++) { String stringBuilder = "<html><body>" +
// pritContent[i] = stringBuilder; getHtmlContent(qrcode) +
"</body></html>";
// } int printCount = getPrintCount(mContext);
// baseContent = mQRCodeBean.getPrintQrcode(); String[] pritContent = new String[printCount];
return getPrintContent(baseContent + "http://m.ricepon.com/member-web/qrcode/qrcode.html?WMP2&arg={\"type\":2,\"QR\":\"a7fbc0570c974287a5df7fc149348599\"}"); for (int i = 0; i < printCount; i++) {
}
private String baseContent = "Thank you";
private String[] getPrintContent(String... qrcodes) {
String[] pritContent = new String[qrcodes.length];
for (int i = 0; i < qrcodes.length; i++) {
String stringBuilder = "<html><body>" +
getHtmlContent(qrcodes[i]) +
"</body></html>";
pritContent[i] = stringBuilder; pritContent[i] = stringBuilder;
} }
return pritContent; return pritContent;
......
...@@ -12,6 +12,7 @@ import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean; ...@@ -12,6 +12,7 @@ import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail; import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder; import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.print.bean.PrintServingPaperContent; import com.gingersoft.gsa.cloud.print.bean.PrintServingPaperContent;
import com.gingersoft.gsa.cloud.print.bean.base.PrintFoodItem;
import com.joe.print.R; import com.joe.print.R;
import com.joe.print.mvp.model.bean.HtmlLable; import com.joe.print.mvp.model.bean.HtmlLable;
import com.joe.print.mvp.print.common.HtmlContract; import com.joe.print.mvp.print.common.HtmlContract;
...@@ -131,11 +132,11 @@ public class PrintServe extends PrinterRoot<PrintServingPaperContent> { ...@@ -131,11 +132,11 @@ public class PrintServe extends PrinterRoot<PrintServingPaperContent> {
} }
private Bitmap getBitmap(Context mContext, PrinterDeviceBean printerDeviceBean) { private Bitmap getBitmap(Context mContext, PrinterDeviceBean printerDeviceBean) {
List<OrderDetail> foodList = DoshokuOrder.getInstance().getShoppingCart().getOrderCommodityList();
if (foodList == null || foodList.size() <= 0) { List<PrintFoodItem> foodItemList = mPrintServingPaperContent.getFoodItemList();
if (foodItemList == null || foodItemList.size() <= 0) {
return null; return null;
} }
TableBean.DataBean tableBean = DoshokuOrder.getInstance().getOpenTableInfo();
LinearLayout layout = new LinearLayout(mContext); LinearLayout layout = new LinearLayout(mContext);
layout.setOrientation(LinearLayout.VERTICAL); layout.setOrientation(LinearLayout.VERTICAL);
...@@ -144,14 +145,14 @@ public class PrintServe extends PrinterRoot<PrintServingPaperContent> { ...@@ -144,14 +145,14 @@ public class PrintServe extends PrinterRoot<PrintServingPaperContent> {
layout.addView(getHeader(mContext)); layout.addView(getHeader(mContext));
layout.addView(getLine(mContext)); layout.addView(getLine(mContext));
String orderNo = "單號:"; String orderNo = "單號:";
if (TextUtil.isNotEmptyOrNullOrUndefined(DoshokuOrder.getInstance().getOrderNo())) { if (TextUtil.isNotEmptyOrNullOrUndefined(mPrintServingPaperContent.getOrderNo())) {
orderNo = "單號:" + DoshokuOrder.getInstance().getOrderNo(); orderNo = "單號:" + mPrintServingPaperContent.getOrderNo();
} }
//訂單信息 //訂單信息
layout.addView(getDiningTableOrderInfo(mContext, "餐檯:" + tableBean.getTableName(), "人數:" + DoshokuOrder.getInstance().getOpenTableInfo().getPerson(), orderNo, "日期:" + TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT))); layout.addView(getDiningTableOrderInfo(mContext, "餐檯:" + mPrintServingPaperContent.getTableName(), "人數:" + mPrintServingPaperContent.getPerson(), orderNo, "日期:" + TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT)));
layout.addView(getLine(mContext)); layout.addView(getLine(mContext));
layout.addView(getDiningFoodList(mContext, foodList, printerDeviceBean, 0, false)); layout.addView(getDiningFoodList(mContext, foodItemList, printerDeviceBean, 0, false));
layout.addView(getLine(mContext)); layout.addView(getLine(mContext));
layout.addView(getTextView(mContext, "Thank you!", Gravity.CENTER_HORIZONTAL, getDimensionPixelSize(mContext, R.dimen.dp_8))); layout.addView(getTextView(mContext, "Thank you!", Gravity.CENTER_HORIZONTAL, getDimensionPixelSize(mContext, R.dimen.dp_8)));
layout.addView(getTextView(mContext, TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT), Gravity.CENTER_HORIZONTAL, getDimensionPixelSize(mContext, R.dimen.dp_8))); layout.addView(getTextView(mContext, TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT), Gravity.CENTER_HORIZONTAL, getDimensionPixelSize(mContext, R.dimen.dp_8)));
......
...@@ -17,6 +17,7 @@ import com.gingersoft.gsa.cloud.order.commodity.OrderDetail; ...@@ -17,6 +17,7 @@ import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder; import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.print.bean.PrintSlipContent; import com.gingersoft.gsa.cloud.print.bean.PrintSlipContent;
import com.gingersoft.gsa.cloud.print.bean.base.PrintBillItem; import com.gingersoft.gsa.cloud.print.bean.base.PrintBillItem;
import com.gingersoft.gsa.cloud.print.bean.base.PrintFoodItem;
import com.joe.print.R; import com.joe.print.R;
import com.joe.print.mvp.model.bean.BillingBean; import com.joe.print.mvp.model.bean.BillingBean;
import com.joe.print.mvp.model.bean.HtmlLable; import com.joe.print.mvp.model.bean.HtmlLable;
...@@ -66,10 +67,9 @@ public class PrintSlip extends PrinterRoot<PrintSlipContent> { ...@@ -66,10 +67,9 @@ public class PrintSlip extends PrinterRoot<PrintSlipContent> {
return new String[]{"<html><body></body></html>"}; return new String[]{"<html><body></body></html>"};
} }
List<OrderDetail> foodList = DoshokuOrder.getInstance().getShoppingCart().getOrderCommodityList(); List<PrintFoodItem> foodList = mPrintSlipContent.getFoodItemList();
TableBean.DataBean tableBean = DoshokuOrder.getInstance().getOpenTableInfo();
if (foodList.size() == 0 || tableBean == null) { if (foodList.size() == 0 ) {
return new String[]{"<html><body></body></html>"}; return new String[]{"<html><body></body></html>"};
} }
...@@ -109,8 +109,8 @@ public class PrintSlip extends PrinterRoot<PrintSlipContent> { ...@@ -109,8 +109,8 @@ public class PrintSlip extends PrinterRoot<PrintSlipContent> {
* 訂單 * 訂單
*/ */
String orderNum = "單號:"; String orderNum = "單號:";
if (TextUtil.isNotEmptyOrNullOrUndefined(DoshokuOrder.getInstance().getOrderNo())) { if (TextUtil.isNotEmptyOrNullOrUndefined(mPrintSlipContent.getOrderNo())) {
orderNum = "單號:" + DoshokuOrder.getInstance().getOrderNo(); orderNum = "單號:" + mPrintSlipContent.getOrderNo();
} }
htmlLables.addAll(getRowInformation(new HtmlLable[]{new HtmlLable(LABLE_COLUMN, "餐檯:" + mPrintSlipContent.getTableName())}, 24)); htmlLables.addAll(getRowInformation(new HtmlLable[]{new HtmlLable(LABLE_COLUMN, "餐檯:" + mPrintSlipContent.getTableName())}, 24));
htmlLables.addAll(getRowInformation(new HtmlLable[]{new HtmlLable(LABLE_COLUMN, "人數:" + mPrintSlipContent.getPerson())}, 24)); htmlLables.addAll(getRowInformation(new HtmlLable[]{new HtmlLable(LABLE_COLUMN, "人數:" + mPrintSlipContent.getPerson())}, 24));
...@@ -173,14 +173,10 @@ public class PrintSlip extends PrinterRoot<PrintSlipContent> { ...@@ -173,14 +173,10 @@ public class PrintSlip extends PrinterRoot<PrintSlipContent> {
private Bitmap getBitmap(Context mContext, PrinterDeviceBean printerDeviceBean) { private Bitmap getBitmap(Context mContext, PrinterDeviceBean printerDeviceBean) {
DoshokuOrder doshokuOrder = DoshokuOrder.getInstance(); List<PrintFoodItem> foodList = mPrintSlipContent.getFoodItemList();
ShoppingCart shoppingCart = doshokuOrder.getShoppingCart();
List<OrderDetail> foodList = shoppingCart.getOrderCommodityList();
if (foodList == null || foodList.size() <= 0) { if (foodList == null || foodList.size() <= 0) {
return null; return null;
} }
TableBean.DataBean tableBean = doshokuOrder.getOpenTableInfo();
LinearLayout layout = new LinearLayout(mContext); LinearLayout layout = new LinearLayout(mContext);
layout.setOrientation(LinearLayout.VERTICAL); layout.setOrientation(LinearLayout.VERTICAL);
...@@ -190,23 +186,23 @@ public class PrintSlip extends PrinterRoot<PrintSlipContent> { ...@@ -190,23 +186,23 @@ public class PrintSlip extends PrinterRoot<PrintSlipContent> {
layout.addView(getLine(mContext)); layout.addView(getLine(mContext));
//訂單信息 //訂單信息
layout.addView(getDiningTableOrderInfo(mContext, "餐檯:" + tableBean.getTableName(), "人數:" + doshokuOrder.getOpenTableInfo().getPerson(), "單號:" + doshokuOrder.getOrderNo(), "日期:" + TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT))); layout.addView(getDiningTableOrderInfo(mContext, "餐檯:" + mPrintSlipContent.getTableName(), "人數:" + mPrintSlipContent.getPerson(), "單號:" + mPrintSlipContent.getOrderNo(), "日期:" + TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT)));
layout.addView(getLine(mContext)); layout.addView(getLine(mContext));
layout.addView(getDiningFoodList(mContext, foodList, printerDeviceBean, 0, true)); layout.addView(getDiningFoodList(mContext, foodList, printerDeviceBean, 0, true));
layout.addView(getHalfLine(mContext)); layout.addView(getHalfLine(mContext));
List<BillingBean> billingBeans = new ArrayList<>(); List<BillingBean> billingBeans = new ArrayList<>();
//添加合計項 //添加合計項
billingBeans.add(new BillingBean("合計", shoppingCart.getWholeAmount())); billingBeans.add(new BillingBean("合計", mPrintSlipContent.getWholeAmount()));
//添加其他金額項 //添加其他金額項
if (shoppingCart.getBillItemList().size() > 0) { if (mPrintSlipContent.getBillItemList().size() > 0) {
for (BillItem item : shoppingCart.getBillItemList()) { for (PrintBillItem item : mPrintSlipContent.getBillItemList()) {
billingBeans.add(new BillingBean(item.getName(), item.getMoney())); billingBeans.add(new BillingBean(item.getBillName(), Double.parseDouble(item.getBillAmount())));
} }
} }
layout.addView(getDiningBillInfo(mContext, billingBeans)); layout.addView(getDiningBillInfo(mContext, billingBeans));
layout.addView(getHalfLine(mContext)); layout.addView(getHalfLine(mContext));
layout.addView(getAmountText(mContext, "總金額:" + shoppingCart.getTotalAmount())); layout.addView(getAmountText(mContext, "總金額:" + mPrintSlipContent.getTotalAmount()));
layout.addView(getLine(mContext)); layout.addView(getLine(mContext));
layout.addView(getTextView(mContext, "Thank you!", Gravity.CENTER_HORIZONTAL, getDimensionPixelSize(mContext, R.dimen.dp_8))); layout.addView(getTextView(mContext, "Thank you!", Gravity.CENTER_HORIZONTAL, getDimensionPixelSize(mContext, R.dimen.dp_8)));
layout.addView(getTextView(mContext, TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT), Gravity.CENTER_HORIZONTAL, getDimensionPixelSize(mContext, R.dimen.dp_8))); layout.addView(getTextView(mContext, TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT), Gravity.CENTER_HORIZONTAL, getDimensionPixelSize(mContext, R.dimen.dp_8)));
......
...@@ -10,6 +10,7 @@ import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails; ...@@ -10,6 +10,7 @@ import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails;
import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils; import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean; import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail; import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.print.bean.base.PrintFoodItem;
import com.joe.print.R; import com.joe.print.R;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
...@@ -77,22 +78,21 @@ public class PrintTest extends PrinterRoot { ...@@ -77,22 +78,21 @@ public class PrintTest extends PrinterRoot {
layout.addView(getTextView(mContext, "時間:" + TimeUtils.getCurrentDate(TimeUtils.DEFAULT_DATE_FORMAT), Gravity.LEFT, getDimensionPixelSize(mContext, R.dimen.dp_8))); layout.addView(getTextView(mContext, "時間:" + TimeUtils.getCurrentDate(TimeUtils.DEFAULT_DATE_FORMAT), Gravity.LEFT, getDimensionPixelSize(mContext, R.dimen.dp_8)));
layout.addView(getTextLine(mContext, "項目")); layout.addView(getTextLine(mContext, "項目"));
List<OrderDetails.DataBean.PRODUCTNAMEBean> productnameBeans = new ArrayList<>(); List<PrintFoodItem> printFoodItemList = new ArrayList<>();
OrderDetails.DataBean.PRODUCTNAMEBean productnameBean = new OrderDetails.DataBean.PRODUCTNAMEBean(); PrintFoodItem productnameBean = new PrintFoodItem();
productnameBean.setPRODUCT_NAME("測試食品"); productnameBean.setName("測試食品");
productnameBean.setNum("1"); productnameBean.setNum(1);
productnameBean.setPRICE("10.0"); productnameBean.setPrice(10.0);
List<OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX> childBeanXES = new ArrayList<>(); PrintFoodItem productnameBean2 = new PrintFoodItem();
OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX childBeanX = new OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX(); productnameBean.setName("測試食品2");
childBeanX.setPRODUCT_NAME("測試子食品"); productnameBean.setNum(2);
childBeanX.setNum("1"); productnameBean.setPrice(30.0);
childBeanX.setPRICE("10.0");
childBeanXES.add(childBeanX);
productnameBean.setChild(childBeanXES);
productnameBeans.add(productnameBean);
layout.addView(getDiningFoodList(mContext, OrderDetail.productMameBeanToOrderDetail(0, productnameBeans), deviceBean, 0, true)); printFoodItemList.add(productnameBean);
printFoodItemList.add(productnameBean2);
layout.addView(getDiningFoodList(mContext,printFoodItemList, deviceBean, 0, true));
layout.addView(getTextLine(mContext, "Powered by Gingersoft")); layout.addView(getTextLine(mContext, "Powered by Gingersoft"));
// layout.addView(getTextView(mContext, "(USB)", Gravity.CENTER_HORIZONTAL, getDimensionPixelSize(mContext, R.dimen.dp_8))); // layout.addView(getTextView(mContext, "(USB)", Gravity.CENTER_HORIZONTAL, getDimensionPixelSize(mContext, R.dimen.dp_8)));
......
...@@ -798,6 +798,17 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket ...@@ -798,6 +798,17 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
return view; return view;
} }
protected List<PrintFoodItem> orderDetailCastPrintFoodItem(List<OrderDetail> orderDetailList) {
List<PrintFoodItem> foodItemList = new ArrayList<>();
if (orderDetailList != null && orderDetailList.size() > 0) {
for (int i = 0; i < orderDetailList.size(); i++) {
OrderDetail orderDetail = orderDetailList.get(i);
foodItemList.add(new PrintFoodItem(orderDetail.getProductName(), orderDetail.getNumber(), orderDetail.getPrice(), orderDetail.getItemType()));
}
}
return foodItemList;
}
/** /**
* @param mContext * @param mContext
* @param foodList * @param foodList
...@@ -806,7 +817,7 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket ...@@ -806,7 +817,7 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
* @param showPrice 是否顯示價格 * @param showPrice 是否顯示價格
* @return * @return
*/ */
public View getDiningFoodList(Context mContext, List<OrderDetail> foodList, PrinterDeviceBean deviceBean, int type, boolean showPrice) { public View getDiningFoodList(Context mContext, List<PrintFoodItem> foodList, PrinterDeviceBean deviceBean, int type, boolean showPrice) {
// List<OrderDetail> newsFoodList = new ArrayList<>(); // List<OrderDetail> newsFoodList = new ArrayList<>();
// for (OrderDetail orderDetail : foodList) { // for (OrderDetail orderDetail : foodList) {
// //如果食品設置了0元不打印並且食品等於0元,或者設置了不打印到單,就不打印 // //如果食品設置了0元不打印並且食品等於0元,或者設置了不打印到單,就不打印
...@@ -818,13 +829,12 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket ...@@ -818,13 +829,12 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
return getVerticalRecyclerView(mContext, new FoodAdapter(foodList, deviceBean, showPrice)); return getVerticalRecyclerView(mContext, new FoodAdapter(foodList, deviceBean, showPrice));
} }
public View getDiningBillInfo(Context mContext, List<BillingBean> billingBeans) { public View getDiningBillInfo(Context mContext, List<BillingBean> billingBeans) {
return getVerticalRecyclerView(mContext, new BillAdapter(billingBeans)); return getVerticalRecyclerView(mContext, new BillAdapter(billingBeans));
} }
public View getDiningBillPayMethod(Context mContext, List<PayMethod> payBillMoneys) { public View getDiningBillPayMethod(Context mContext, List<PrintBillItem> payBillMoneys) {
return getVerticalRecyclerView(mContext, new BillTypeAdapter(payBillMoneys)); return getVerticalRecyclerView(mContext, new BillTypeAdapter(payBillMoneys));
} }
......
...@@ -27,6 +27,7 @@ import com.billy.cc.core.component.CCResult; ...@@ -27,6 +27,7 @@ import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.CCUtil; import com.billy.cc.core.component.CCUtil;
import com.gingersoft.gsa.cloud.app.GsaCloudApplication; import com.gingersoft.gsa.cloud.app.GsaCloudApplication;
import com.gingersoft.gsa.cloud.common.constans.PrintConstans; import com.gingersoft.gsa.cloud.common.constans.PrintConstans;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.print.PrintExecutor; import com.gingersoft.gsa.cloud.print.PrintExecutor;
import com.gingersoft.gsa.cloud.print.PrintSocketHolder; import com.gingersoft.gsa.cloud.print.PrintSocketHolder;
import com.gingersoft.gsa.cloud.print.bean.PrintContent; import com.gingersoft.gsa.cloud.print.bean.PrintContent;
...@@ -255,6 +256,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -255,6 +256,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
//開錢箱 //開錢箱
PrintExecutor executor = new PrintExecutor(defaultPrint); PrintExecutor executor = new PrintExecutor(defaultPrint);
executor.doPrinterRequestAsync(new OpenCashBoxMaker()); executor.doPrinterRequestAsync(new OpenCashBoxMaker());
CC.sendCCResult(callId, CCResult.success());
} else { } else {
if (isShowDialog) { if (isShowDialog) {
initDialog(); initDialog();
...@@ -466,6 +468,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -466,6 +468,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
printFailure("打印機缺紙"); printFailure("打印機缺紙");
break; break;
} }
LoganManager.w_printer(TAG,"printStateChanged state--->" + tip);
setLoadingText(tip); setLoadingText(tip);
} }
...@@ -474,6 +477,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -474,6 +477,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
*/ */
@Override @Override
public void printSuccess() { public void printSuccess() {
LoganManager.w_printer(TAG,"printFailure 打印成功");
// if (printCount <= 1) { // if (printCount <= 1) {
CC.sendCCResult(callId, CCResult.success()); CC.sendCCResult(callId, CCResult.success());
disLoadingDialog(); disLoadingDialog();
...@@ -486,10 +490,11 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -486,10 +490,11 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
@Override @Override
public void printFailure(String msg) { public void printFailure(String msg) {
LoganManager.w_printer(TAG,"printFailure 打印失敗--->" + msg);
if (!TextUtil.isEmptyOrNullOrUndefined(msg)) { if (!TextUtil.isEmptyOrNullOrUndefined(msg)) {
ToastUtils.show(GsaCloudApplication.getAppContext(), msg); ToastUtils.show(GsaCloudApplication.getAppContext(), msg);
CC.sendCCResult(callId, CCResult.error(msg)); CC.sendCCResult(callId, CCResult.error(msg));
}else { } else {
CC.sendCCResult(callId, CCResult.error("print error")); CC.sendCCResult(callId, CCResult.error("print error"));
} }
// if (printCount <= 1) { // if (printCount <= 1) {
......
...@@ -4,6 +4,7 @@ import androidx.annotation.Nullable; ...@@ -4,6 +4,7 @@ import androidx.annotation.Nullable;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder; import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.gingersoft.gsa.cloud.pay.bean.PayMethod; import com.gingersoft.gsa.cloud.pay.bean.PayMethod;
import com.gingersoft.gsa.cloud.print.bean.base.PrintBillItem;
import com.joe.print.R; import com.joe.print.R;
import java.util.List; import java.util.List;
...@@ -11,15 +12,15 @@ import java.util.List; ...@@ -11,15 +12,15 @@ import java.util.List;
* Created by Wyh on 2020/1/9. * Created by Wyh on 2020/1/9.
* 結賬方式 * 結賬方式
*/ */
public class BillTypeAdapter extends BaseQuickAdapter<PayMethod, BaseViewHolder> { public class BillTypeAdapter extends BaseQuickAdapter<PrintBillItem, BaseViewHolder> {
public BillTypeAdapter(@Nullable List<PayMethod> data) { public BillTypeAdapter(@Nullable List<PrintBillItem> data) {
super(R.layout.base_print_item_bill_type, data); super(R.layout.base_print_item_bill_type, data);
} }
@Override @Override
protected void convert(BaseViewHolder helper, PayMethod item) { protected void convert(BaseViewHolder helper, PrintBillItem item) {
helper.setText(R.id.tv_total_amount_text, item.getPayName()); helper.setText(R.id.tv_total_amount_text, item.getBillName());
helper.setText(R.id.tv_total_amount, "$" + item.getPayMoney()); helper.setText(R.id.tv_total_amount, "$" + item.getBillAmount());
} }
} }
...@@ -7,7 +7,7 @@ import androidx.annotation.Nullable; ...@@ -7,7 +7,7 @@ import androidx.annotation.Nullable;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder; import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean; import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail; import com.gingersoft.gsa.cloud.print.bean.base.PrintFoodItem;
import com.joe.print.R; import com.joe.print.R;
import java.util.List; import java.util.List;
...@@ -15,7 +15,7 @@ import java.util.List; ...@@ -15,7 +15,7 @@ import java.util.List;
/** /**
* Created by Wyh on 2020/1/9. * Created by Wyh on 2020/1/9.
*/ */
public class FoodAdapter extends BaseQuickAdapter<OrderDetail, BaseViewHolder> { public class FoodAdapter extends BaseQuickAdapter<PrintFoodItem, BaseViewHolder> {
private int foodFontSize = 24; private int foodFontSize = 24;
private int modifierFontSize = 24; private int modifierFontSize = 24;
...@@ -27,7 +27,7 @@ public class FoodAdapter extends BaseQuickAdapter<OrderDetail, BaseViewHolder> { ...@@ -27,7 +27,7 @@ public class FoodAdapter extends BaseQuickAdapter<OrderDetail, BaseViewHolder> {
private boolean showPrice = true; private boolean showPrice = true;
public FoodAdapter(@Nullable List<OrderDetail> data, PrinterDeviceBean deviceBean, boolean showPrice) { public FoodAdapter(@Nullable List<PrintFoodItem> data, PrinterDeviceBean deviceBean, boolean showPrice) {
super(R.layout.print_item_food, data); super(R.layout.print_item_food, data);
try { try {
this.foodFontSize = Integer.parseInt(deviceBean.getFoodFont()) * 2;//36 this.foodFontSize = Integer.parseInt(deviceBean.getFoodFont()) * 2;//36
...@@ -47,7 +47,7 @@ public class FoodAdapter extends BaseQuickAdapter<OrderDetail, BaseViewHolder> { ...@@ -47,7 +47,7 @@ public class FoodAdapter extends BaseQuickAdapter<OrderDetail, BaseViewHolder> {
* @param data * @param data
* @param deviceBean 打印機信息 * @param deviceBean 打印機信息
*/ */
public FoodAdapter(@Nullable List<OrderDetail> data, PrinterDeviceBean deviceBean) { public FoodAdapter(@Nullable List<PrintFoodItem> data, PrinterDeviceBean deviceBean) {
super(R.layout.print_item_food, data); super(R.layout.print_item_food, data);
try { try {
this.foodFontSize = Integer.parseInt(deviceBean.getFoodFont()) * 2; this.foodFontSize = Integer.parseInt(deviceBean.getFoodFont()) * 2;
...@@ -62,13 +62,13 @@ public class FoodAdapter extends BaseQuickAdapter<OrderDetail, BaseViewHolder> { ...@@ -62,13 +62,13 @@ public class FoodAdapter extends BaseQuickAdapter<OrderDetail, BaseViewHolder> {
this.numberIsFlip = deviceBean.getNumberIsFlip(); this.numberIsFlip = deviceBean.getNumberIsFlip();
} }
public FoodAdapter(@Nullable List<OrderDetail> data) { public FoodAdapter(@Nullable List<PrintFoodItem> data) {
super(R.layout.print_item_food, data); super(R.layout.print_item_food, data);
} }
@Override @Override
protected void convert(BaseViewHolder helper, OrderDetail item) { protected void convert(BaseViewHolder helper, PrintFoodItem item) {
TextView tvFoodName = helper.getView(R.id.tv_food_name); TextView tvFoodName = helper.getView(R.id.tv_food_name);
TextView tvNum = helper.getView(R.id.tv_food_quantity); TextView tvNum = helper.getView(R.id.tv_food_quantity);
TextView tvPrice = helper.getView(R.id.tv_food_price); TextView tvPrice = helper.getView(R.id.tv_food_price);
...@@ -80,7 +80,7 @@ public class FoodAdapter extends BaseQuickAdapter<OrderDetail, BaseViewHolder> { ...@@ -80,7 +80,7 @@ public class FoodAdapter extends BaseQuickAdapter<OrderDetail, BaseViewHolder> {
boolean isBold, isItalic; boolean isBold, isItalic;
if (item.getItemType() == 2) { if (item.getItemType() == 2) {
//細項,縮進 //細項,縮進
helper.setText(R.id.tv_food_name, "\u3000" + item.getProductName()); helper.setText(R.id.tv_food_name, "\u3000" + item.getName());
tvFoodName.setTextSize(modifierFontSize); tvFoodName.setTextSize(modifierFontSize);
tvNum.setTextSize(modifierFontSize); tvNum.setTextSize(modifierFontSize);
tvPrice.setTextSize(modifierFontSize); tvPrice.setTextSize(modifierFontSize);
...@@ -89,14 +89,14 @@ public class FoodAdapter extends BaseQuickAdapter<OrderDetail, BaseViewHolder> { ...@@ -89,14 +89,14 @@ public class FoodAdapter extends BaseQuickAdapter<OrderDetail, BaseViewHolder> {
isItalic = modifierIsItalic == 1; isItalic = modifierIsItalic == 1;
} else if (item.getItemType() == 3) { } else if (item.getItemType() == 3) {
//細項,縮進 //細項,縮進
helper.setText(R.id.tv_food_name, "\u3000\u3000" + item.getProductName()); helper.setText(R.id.tv_food_name, "\u3000\u3000" + item.getName());
tvFoodName.setTextSize(modifierFontSize); tvFoodName.setTextSize(modifierFontSize);
tvNum.setTextSize(modifierFontSize); tvNum.setTextSize(modifierFontSize);
tvPrice.setTextSize(modifierFontSize); tvPrice.setTextSize(modifierFontSize);
isBold = modifierIsBold == 1; isBold = modifierIsBold == 1;
isItalic = modifierIsItalic == 1; isItalic = modifierIsItalic == 1;
} else { } else {
helper.setText(R.id.tv_food_name, item.getProductName()); helper.setText(R.id.tv_food_name, item.getName());
tvFoodName.setTextSize(foodFontSize); tvFoodName.setTextSize(foodFontSize);
tvNum.setTextSize(foodFontSize); tvNum.setTextSize(foodFontSize);
tvPrice.setTextSize(foodFontSize); tvPrice.setTextSize(foodFontSize);
...@@ -125,7 +125,7 @@ public class FoodAdapter extends BaseQuickAdapter<OrderDetail, BaseViewHolder> { ...@@ -125,7 +125,7 @@ public class FoodAdapter extends BaseQuickAdapter<OrderDetail, BaseViewHolder> {
// tvFoodName.setTypeface(null, Typeface.BOLD); // tvFoodName.setTypeface(null, Typeface.BOLD);
// tvFoodName.setTypeface(null, Typeface.ITALIC); // tvFoodName.setTypeface(null, Typeface.ITALIC);
// tvFoodName.setTypeface(null, Typeface.NORMAL); // tvFoodName.setTypeface(null, Typeface.NORMAL);
tvNum.setText("X" + item.getNumber()); tvNum.setText("X" + item.getNum());
tvPrice.setText("$" + item.getPrice()); tvPrice.setText("$" + item.getPrice());
} }
} }
...@@ -20,10 +20,10 @@ ...@@ -20,10 +20,10 @@
android:name="design_height_in_dp" android:name="design_height_in_dp"
android:value="640" /> android:value="640" />
<activity <!-- <activity-->
android:name="com.yalantis.ucrop.UCropActivity" <!-- android:name="com.yalantis.ucrop.UCropActivity"-->
android:screenOrientation="portrait" <!-- android:screenOrientation="portrait"-->
android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> <!-- android:theme="@style/Theme.AppCompat.Light.NoActionBar" />-->
</application> </application>
</manifest> </manifest>
\ No newline at end of file
...@@ -15,22 +15,26 @@ ...@@ -15,22 +15,26 @@
<activity <activity
android:name=".mvp.ui.activity.TableActivity" android:name=".mvp.ui.activity.TableActivity"
android:launchMode="singleTop"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity <activity
android:name=".mvp.ui.activity.MealStandActivity" android:name=".mvp.ui.activity.MealStandActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity <activity
android:name=".mvp.ui.activity.OrderPayActivity"
android:screenOrientation="portrait" />
<activity
android:name=".mvp.ui.activity.OrderContentActivity" android:name=".mvp.ui.activity.OrderContentActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity <activity
android:name=".mvp.ui.activity.orderManager.OrderCenterActivity" android:name=".mvp.ui.activity.OrderPayActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait"
android:launchMode="singleTop"/>
<activity <activity
android:name=".mvp.ui.activity.orderManager.OrderDetailActivity" android:name=".mvp.ui.activity.orderManager.OrderDetailActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait"
android:launchMode="singleTop"/>
<activity
android:name=".mvp.ui.activity.orderManager.OrderCenterActivity"
android:screenOrientation="portrait"
android:launchMode="singleTop"/>
<activity <activity
android:name=".mvp.ui.activity.SoldoutCtrlActivity" android:name=".mvp.ui.activity.SoldoutCtrlActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
......
...@@ -10,10 +10,19 @@ ...@@ -10,10 +10,19 @@
android:supportsRtl="true" android:supportsRtl="true"
android:networkSecurityConfig="@xml/network_android" android:networkSecurityConfig="@xml/network_android"
android:theme="@style/AppTheme"> android:theme="@style/AppTheme">
<activity android:name="com.gingersoft.gsa.cloud.table.mvp.ui.activity.orderManager.OrderDetailActivity"/> <activity
<activity android:name="com.gingersoft.gsa.cloud.table.mvp.ui.activity.orderManager.OrderCenterActivity" /> android:name=".mvp.ui.activity.orderManager.OrderDetailActivity"
android:launchMode="singleTop"/>
<activity
android:name=".mvp.ui.activity.orderManager.OrderCenterActivity"
android:launchMode="singleTop"/>
<activity
android:name=".mvp.ui.activity.OrderPayActivity"
android:screenOrientation="portrait" />
<activity android:name="com.gingersoft.gsa.cloud.table.mvp.ui.activity.SoldoutCtrlActivity" /> <activity android:name="com.gingersoft.gsa.cloud.table.mvp.ui.activity.SoldoutCtrlActivity" />
<activity android:name="com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity">
<activity android:name="com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity"
android:launchMode="singleTop">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.VIEW" />
......
package com.gingersoft.gsa.cloud.table; package com.gingersoft.gsa.cloud.table;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import com.billy.cc.core.component.CC; import com.billy.cc.core.component.CC;
import com.billy.cc.core.component.CCResult; import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.CCUtil; import com.billy.cc.core.component.CCUtil;
import com.billy.cc.core.component.IComponent; import com.billy.cc.core.component.IComponent;
import com.etps.aca.lib.activity.CommandActivity;
import com.gingersoft.gsa.cloud.common.function.FModule; import com.gingersoft.gsa.cloud.common.function.FModule;
import com.gingersoft.gsa.cloud.component.ComponentAction; import com.gingersoft.gsa.cloud.component.ComponentAction;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.order.order.TakeawayOrder;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderContentActivity; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderContentActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderPayActivity; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderPayActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.SoldoutCtrlActivity; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.SoldoutCtrlActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.orderManager.OrderCenterActivity; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.orderManager.OrderCenterActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.orderManager.OrderDetailActivity;
import com.jess.arms.integration.AppManager; import com.jess.arms.integration.AppManager;
import com.jess.arms.utils.ArmsUtils;
import javax.inject.Inject;
public class ComponentTable implements IComponent { public class ComponentTable implements IComponent {
@Inject
AppManager mAppManager;
public static final class table { public static final class table {
/** /**
* 餐檯頁 * 餐檯頁
...@@ -57,7 +61,7 @@ public class ComponentTable implements IComponent { ...@@ -57,7 +61,7 @@ public class ComponentTable implements IComponent {
public String getName() { public String getName() {
//组件的名称,调用此组件的方式: //组件的名称,调用此组件的方式:
// CC.obtainBuilder("ComponentA")...build().callAsync() // CC.obtainBuilder("ComponentA")...build().callAsync()
return com.gingersoft.gsa.cloud.component.ComponentName.COMPONENT_TABLE ; return com.gingersoft.gsa.cloud.component.ComponentName.COMPONENT_TABLE;
} }
/** /**
...@@ -71,6 +75,7 @@ public class ComponentTable implements IComponent { ...@@ -71,6 +75,7 @@ public class ComponentTable implements IComponent {
*/ */
@Override @Override
public boolean onCall(CC cc) { public boolean onCall(CC cc) {
Context context = cc.getContext();
String actionName = cc.getActionName(); String actionName = cc.getActionName();
switch (actionName) { switch (actionName) {
case "showTableActivity": case "showTableActivity":
...@@ -98,11 +103,17 @@ public class ComponentTable implements IComponent { ...@@ -98,11 +103,17 @@ public class ComponentTable implements IComponent {
case "getInfo": case "getInfo":
getInfo(cc); getInfo(cc);
break; break;
case ComponentAction.Table.INT_ORDER:
//初始化堂食賬單類
DoshokuOrder.getInstance().initialization();
//初始化外賣賬單類
TakeawayOrder.getInstance().initialization();
break;
case ComponentAction.Table.KILL_MEAL_ORDER_PAY: case ComponentAction.Table.KILL_MEAL_ORDER_PAY:
mAppManager.findActivity(OrderPayActivity.class); AppManager appManager = ArmsUtils.obtainAppComponentFromContext(context).appManager();
mAppManager.findActivity(OrderContentActivity.class); appManager.killActivity(OrderPayActivity.class);
mAppManager.findActivity(MealStandActivity.class); appManager.killActivity(OrderContentActivity.class);
appManager.killActivity(MealStandActivity.class);
break; break;
default: default:
//这个逻辑分支上没有调用CC.sendCCResult(...),是一种错误的示例 //这个逻辑分支上没有调用CC.sendCCResult(...),是一种错误的示例
...@@ -114,6 +125,7 @@ public class ComponentTable implements IComponent { ...@@ -114,6 +125,7 @@ public class ComponentTable implements IComponent {
} }
private void lifecycleFragmentDoubleText(CC cc) { private void lifecycleFragmentDoubleText(CC cc) {
// LifecycleFragment lifecycleFragment = cc.getParamItem("fragment"); // LifecycleFragment lifecycleFragment = cc.getParamItem("fragment");
// if (lifecycleFragment != null) { // if (lifecycleFragment != null) {
......
package com.gingersoft.gsa.cloud.table.mvp.model.discount; package com.gingersoft.gsa.cloud.table.mvp.action.discount;
import android.app.Activity; import android.app.Activity;
import android.text.InputType; import android.text.InputType;
...@@ -76,6 +76,11 @@ public class BillDiscountAction implements Strategy<Discount> { ...@@ -76,6 +76,11 @@ public class BillDiscountAction implements Strategy<Discount> {
} }
} }
@Override
public void destroy() {
}
private void exclusiveDiscount(Discount discount) { private void exclusiveDiscount(Discount discount) {
if (mListener != null) { if (mListener != null) {
showExclusiveTipDialog(discount); showExclusiveTipDialog(discount);
......
package com.gingersoft.gsa.cloud.table.mvp.model.discount; package com.gingersoft.gsa.cloud.table.mvp.action.discount;
import android.app.Activity; import android.app.Activity;
import android.text.InputType; import android.text.InputType;
...@@ -93,6 +93,11 @@ public class MealDiscountAction implements Strategy<Discount> { ...@@ -93,6 +93,11 @@ public class MealDiscountAction implements Strategy<Discount> {
} }
} }
@Override
public void destroy() {
}
private void exclusiveDiscount(Discount discount) { private void exclusiveDiscount(Discount discount) {
if (mListener != null) { if (mListener != null) {
showExclusiveTipDialog(discount); showExclusiveTipDialog(discount);
......
package com.gingersoft.gsa.cloud.table.mvp.action.order;
import android.text.TextUtils;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.patterns.Strategy;
import com.gingersoft.gsa.cloud.pay.bean.PosActionStatusExceptionParam;
import com.gingersoft.gsa.cloud.pay.pos.OnPosActionListener;
import com.gingersoft.gsa.cloud.pay.pos.PosAction;
import com.gingersoft.gsa.cloud.pay.pos.PosPay;
import com.gingersoft.gsa.cloud.pay.pos.fragment.PosActionStatusExceptionFragment;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.bg.GetTxnIdRequest;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.pos.VoidRequest;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.VoidRespose;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.OrderManagerResponse;
import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.mvp.IView;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
/**
* @作者: bin
* @創建時間: 2021-01-15 15:19
* @更新時間: 2021-01-15 15:19
* @描述:取消订单
*/
public class CancelOrder implements Strategy<OrderManagerResponse> {
private final String TAG = "CancelOrder";
private BaseFragmentActivity mActivity;
private IView mRootView;
public CancelOrder(BaseFragmentActivity fragmentActivity, IView rootView){
this.mActivity = fragmentActivity;
this.mRootView = rootView;
}
@Override
public void action(OrderManagerResponse orderItem) {
showCancelDialog(orderItem);
}
@Override
public void destroy() {
}
private void showCancelDialog(OrderManagerResponse datasBean) {
QMUIDialog.MessageDialogBuilder dialogBuilder = new QMUIDialog.MessageDialogBuilder(mActivity);
dialogBuilder.setTitle("溫馨提示");
dialogBuilder.setTitleIcon(R.drawable.qmui_icon_dialog_doubt);
dialogBuilder.setMessage("是否取消訂單?");
dialogBuilder.addAction(0, "確認", QMUIDialogAction.ACTION_PROP_NEGATIVE, (dialog, index) -> {
dialog.dismiss();
if (datasBean.withHywebPay()) {
hywebOrderCancle(datasBean);
} else {
if(cancelListener != null){
cancelListener.cancel(datasBean.getId());
}
}
});
dialogBuilder.addAction("取消", (dialog, index) -> dialog.dismiss());
dialogBuilder.create(R.style.MyDialogTheme2).show();
}
private void hywebOrderCancle(OrderManagerResponse datasBean) {
GetTxnIdRequest txnIdRequest = new GetTxnIdRequest();
txnIdRequest.setOrderId(datasBean.getId());
if (!TextUtils.isEmpty(datasBean.getTableNumber())) {
txnIdRequest.setTableExtId(datasBean.getTableId());
} else {
txnIdRequest.setTableId(datasBean.getTableId());
}
txnIdRequest.setAmount(datasBean.getAmount());
VoidRequest voidRequest = new VoidRequest();
PosPay.voidO(mActivity, mRootView, voidRequest, txnIdRequest, new OnPosActionListener<VoidRespose>() {
@Override
public void onPosSuccess(VoidRespose response) {
LoganManager.w_code(TAG, "onPosSuccess: " + response.toString());
if(cancelListener != null){
cancelListener.refeshOrders();
}
}
@Override
public void onPosException(Exception e) {
LoganManager.w_code(TAG, "onPosException: " + e.getMessage());
if (mActivity.findFragment(PosActionStatusExceptionFragment.class) == null) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(datasBean.getPayTxnId());
statusExceptionParam.setAmount(datasBean.getAmount());
statusExceptionParam.setOrderId(datasBean.getId());
statusExceptionParam.setOrderNo(datasBean.getOrderNo());
statusExceptionParam.setPayMethodName("VISA測試");
statusExceptionParam.setPosAction(PosAction.VOID);
mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}
}
@Override
public void onPosInvalid(String e) {
LoganManager.w_code(TAG, "onPosInvalid: " + e);
}
@Override
public void onUpdateStatusSuccess(VoidRespose response) {
LoganManager.w_code(TAG, "onUpdateStatusSuccess: " + response.toString());
}
@Override
public void onUpdateStatusError(Throwable e) {
LoganManager.w_code(TAG, "onUpdateStatusError: " + e.getMessage());
if (mActivity.findFragment(PosActionStatusExceptionFragment.class) == null) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(datasBean.getPayTxnId());
statusExceptionParam.setAmount(datasBean.getAmount());
statusExceptionParam.setOrderId(datasBean.getId());
statusExceptionParam.setOrderNo(datasBean.getOrderNo());
statusExceptionParam.setPayMethodName("VISA測試");
statusExceptionParam.setPosAction(PosAction.VOID);
mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}
}
});
}
private OnCancelListener cancelListener;
public void setCancelListener(OnCancelListener cancelListener) {
this.cancelListener = cancelListener;
}
public interface OnCancelListener{
void cancel(long orderId);
void refeshOrders();
}
}
package com.gingersoft.gsa.cloud.table.mvp.action.order;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
import android.util.Log;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.common.constans.PrintConstans;
import com.gingersoft.gsa.cloud.common.core.table.TableBean;
import com.gingersoft.gsa.cloud.common.patterns.Strategy;
import com.gingersoft.gsa.cloud.common.utils.AppDevices;
import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.order.bean.response.OrderResponse;
import com.gingersoft.gsa.cloud.order.cart.ShoppingCart;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.pay.bean.PayMethod;
import com.gingersoft.gsa.cloud.pay.pos.OnPosActionListener;
import com.gingersoft.gsa.cloud.pay.pos.PosPay;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.HywebPosResponse;
import com.gingersoft.gsa.cloud.print.bean.PrintContent;
import com.gingersoft.gsa.cloud.print.bean.adapter.PrintContentAdapter;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.OrderManagerResponse;
import com.gingersoft.gsa.cloud.table.mvp.model.utils.OrderAssemblyUtil;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.orderManager.OrderCenterActivity;
import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.base.delegate.IActivity;
import com.jess.arms.mvp.IView;
import java.util.Date;
import java.util.List;
/**
* @作者: bin
* @創建時間: 2021-01-15 15:19
* @更新時間: 2021-01-15 15:19
* @描述:修改订单
*/
public class ModifyOrderAction implements Strategy<OrderManagerResponse> {
private final String TAG = "ModifyOrderAction";
private BaseFragmentActivity mActivity;
private IView mRootView;
public ModifyOrderAction(BaseFragmentActivity fragmentActivity, IView rootView){
this.mActivity = fragmentActivity;
this.mRootView = rootView;
}
@Override
public void action(OrderManagerResponse orderItem) {
DoshokuOrder doshokuOrder = DoshokuOrder.getInstance();
//設置為修改訂單操作
doshokuOrder.setModifyOrder(true);
/**
* 緩存訂單信息
*/
OrderResponse orderBean = new OrderResponse();
orderBean.setId(orderItem.getId());
orderBean.setStatus(orderItem.getStatus());
orderBean.setOrderNo(orderItem.getOrderNo());
orderBean.setPerson(orderItem.getPerson());
orderBean.setCreateTime(orderItem.getCreateTime());
if (orderItem.getDiscountDetails() != null) {
orderBean.setDiscountDetails(orderItem.getDiscountDetails());
}
doshokuOrder.setOrderId(orderItem.getId());
doshokuOrder.setOrderPlaced(orderBean);
TableBean.DataBean tableBean = new TableBean.DataBean(orderItem.getRestaurantTable());
if (!TextUtils.isEmpty(tableBean.getTableNumber())) {
tableBean.setTableName(tableBean.getTableName() + "-" + tableBean.getTableNumber());
} else {
tableBean.setTableName(tableBean.getTableName());
}
tableBean.setId(orderItem.getTableId());
tableBean.setPerson(orderItem.getPerson());
doshokuOrder.setOpenTableInfo(tableBean);
List<OrderResponse.OrderDetailsBean> orderDetailsBeans = orderItem.getOrderDetails();
List<OrderDetail> orderDetailList = OrderAssemblyUtil.assemblyOrder(OrderDetail.orderTransOrderDetails(orderDetailsBeans));
doshokuOrder.getShoppingCart().addCommodityList(orderDetailList);
if (orderItem.getMemberInfo() != null) {
doshokuOrder.setMemberInfo(orderItem.getMemberInfo());
}
Intent intent = new Intent(mActivity, MealStandActivity.class);
mActivity.startActivityForResult(intent, OrderCenterActivity.MODIFY_ORDER_RETURN_CODE);
}
@Override
public void destroy() {
}
}
package com.gingersoft.gsa.cloud.table.mvp.action.order;
import android.app.Activity;
import android.content.Context;
import android.text.TextUtils;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.patterns.Strategy;
import com.gingersoft.gsa.cloud.pay.bean.PosActionStatusExceptionParam;
import com.gingersoft.gsa.cloud.pay.pos.OnPosActionListener;
import com.gingersoft.gsa.cloud.pay.pos.PosAction;
import com.gingersoft.gsa.cloud.pay.pos.PosPay;
import com.gingersoft.gsa.cloud.pay.pos.fragment.PosActionStatusExceptionFragment;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.bg.GetTxnIdRequest;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.pos.RefundRequest;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.RefundRespose;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.OrderManagerResponse;
import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.mvp.IView;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
import java.util.List;
/**
* @作者: bin
* @創建時間: 2021-01-15 15:19
* @更新時間: 2021-01-15 15:19
* @描述:订单退款
*/
public class RefundOrder implements Strategy<OrderManagerResponse> {
private final String TAG = "RefundlOrder";
private BaseFragmentActivity mActivity;
private IView mRootView;
public RefundOrder(BaseFragmentActivity fragmentActivity, IView rootView){
this.mActivity = fragmentActivity;
this.mRootView = rootView;
}
@Override
public void action(OrderManagerResponse orderItem) {
showHywebRefundDialog(orderItem);
}
@Override
public void destroy() {
}
private void showHywebRefundDialog(OrderManagerResponse datasBean) {
QMUIDialog.MessageDialogBuilder dialogBuilder = new QMUIDialog.MessageDialogBuilder(mActivity);
dialogBuilder.setTitle("溫馨提示");
dialogBuilder.setTitleIcon(R.drawable.qmui_icon_dialog_doubt);
dialogBuilder.setMessage("是否退款?");
dialogBuilder.addAction(0, "確認", QMUIDialogAction.ACTION_PROP_NEGATIVE, (dialog, index) -> {
dialog.dismiss();
hywebRefund(datasBean);
});
dialogBuilder.addAction("取消", (dialog, index) -> dialog.dismiss());
dialogBuilder.create(R.style.MyDialogTheme2).show();
}
private void hywebRefund(OrderManagerResponse datasBean) {
GetTxnIdRequest txnIdRequest = new GetTxnIdRequest();
txnIdRequest.setOrderId(datasBean.getId());
if (!TextUtils.isEmpty(datasBean.getTableNumber())) {
txnIdRequest.setTableExtId(datasBean.getTableId());
} else {
txnIdRequest.setTableId(datasBean.getTableId());
}
txnIdRequest.setAmount(datasBean.getAmount());
RefundRequest refundRequest = new RefundRequest();
refundRequest.setPAYMENT_APP_ID(getPaymentAppIdByPays(datasBean.getOrderPays()));
refundRequest.setTXN_AMT(datasBean.getAmount());
PosPay.refund(mActivity, mRootView, refundRequest, txnIdRequest, new OnPosActionListener<RefundRespose>() {
@Override
public void onPosSuccess(RefundRespose response) {
LoganManager.w_code(TAG, "onPosSuccess: " + response.toString());
if(refundListener != null){
refundListener.refeshOrders();
}
}
@Override
public void onPosException(Exception e) {
LoganManager.w_code(TAG, "onPosException: " + e.getMessage());
if (mActivity.findFragment(PosActionStatusExceptionFragment.class) == null) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(datasBean.getPayTxnId());
statusExceptionParam.setAmount(datasBean.getAmount());
statusExceptionParam.setOrderId(datasBean.getId());
statusExceptionParam.setOrderNo(datasBean.getOrderNo());
statusExceptionParam.setPayMethodName("VISA測試");
statusExceptionParam.setPosAction(PosAction.REFUND);
mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}
}
@Override
public void onPosInvalid(String e) {
LoganManager.w_code(TAG, "onPosInvalid: " + e);
}
@Override
public void onUpdateStatusSuccess(RefundRespose response) {
LoganManager.w_code(TAG, "onUpdateStatusSuccess: " + response.toString());
}
@Override
public void onUpdateStatusError(Throwable e) {
LoganManager.w_code(TAG, "onUpdateStatusError: " + e.getMessage());
if (mActivity.findFragment(PosActionStatusExceptionFragment.class) == null) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(datasBean.getPayTxnId());
statusExceptionParam.setAmount(datasBean.getAmount());
statusExceptionParam.setOrderId(datasBean.getId());
statusExceptionParam.setOrderNo(datasBean.getOrderNo());
statusExceptionParam.setPayMethodName("VISA測試");
statusExceptionParam.setPosAction(PosAction.REFUND);
mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}
}
});
}
private String getPaymentAppIdByPays(List<OrderManagerResponse.OrderPayBean> orderPays) {
String hywebPayMethod = "";
for (OrderManagerResponse.OrderPayBean orderPayBean : orderPays) {
hywebPayMethod = orderPayBean.getHywebPayMethodByType();
}
return hywebPayMethod;
}
private RefundOrder.OnRefundListener refundListener;
public void setRefundListener(RefundOrder.OnRefundListener refundListener) {
this.refundListener = refundListener;
}
public interface OnRefundListener{
void refeshOrders();
}
}
package com.gingersoft.gsa.cloud.table.mvp.action.order;
import android.text.TextUtils;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.patterns.Strategy;
import com.gingersoft.gsa.cloud.common.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.pay.bean.PosActionStatusExceptionParam;
import com.gingersoft.gsa.cloud.pay.pos.OnPosActionListener;
import com.gingersoft.gsa.cloud.pay.pos.PosAction;
import com.gingersoft.gsa.cloud.pay.pos.PosPay;
import com.gingersoft.gsa.cloud.pay.pos.fragment.PosActionStatusExceptionFragment;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.bg.GetTxnIdRequest;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.pos.AdjustTipRequest;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.AdjustTipRespose;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.OrderManagerResponse;
import com.gingersoft.gsa.cloud.ui.widget.dialog.KeyboardDialog;
import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.mvp.IView;
/**
* @作者: bin
* @創建時間: 2021-01-15 15:19
* @更新時間: 2021-01-15 15:19
* @描述:補小費
*/
public class TipsOrder implements Strategy<OrderManagerResponse> {
private final String TAG = "TipsOrder";
private BaseFragmentActivity mActivity;
private IView mRootView;
public TipsOrder(BaseFragmentActivity fragmentActivity, IView rootView){
this.mActivity = fragmentActivity;
this.mRootView = rootView;
}
@Override
public void action(OrderManagerResponse orderItem) {
showKeyboardDialog(orderItem);
}
@Override
public void destroy() {
}
private void showKeyboardDialog(OrderManagerResponse datasBean) {
new KeyboardDialog(mActivity)
.build()
.setOnCallBackListener(new KeyboardDialog.OnCallBackListener() {
@Override
public void onSure(String number) {
if (!TextUtils.isEmpty(number)) {
GetTxnIdRequest txnIdRequest = new GetTxnIdRequest();
txnIdRequest.setOrderId(datasBean.getId());
if (!TextUtils.isEmpty(datasBean.getTableNumber())) {
txnIdRequest.setTableExtId(datasBean.getTableId());
} else {
txnIdRequest.setTableId(datasBean.getTableId());
}
txnIdRequest.setAmount(datasBean.getAmount());
PosPay.tip(mActivity, mRootView, txnIdRequest,
getTipsRequest(datasBean.getPayTxnId(), datasBean.getAmount(), Double.parseDouble(number)), new OnPosActionListener<AdjustTipRespose>() {
@Override
public void onPosSuccess(AdjustTipRespose response) {
LoganManager.w_code(TAG, "onPosSuccess: " + response.toString());
if(tipsListener != null){
tipsListener.refeshOrders();
}
}
@Override
public void onPosException(Exception e) {
LoganManager.w_code(TAG, "onPosException: " + e.getMessage());
if (mActivity.findFragment(PosActionStatusExceptionFragment.class) == null) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(datasBean.getPayTxnId());
statusExceptionParam.setAmount(datasBean.getAmount());
statusExceptionParam.setOrderId(datasBean.getId());
statusExceptionParam.setOrderNo(datasBean.getOrderNo());
statusExceptionParam.setPayMethodName("VISA測試");
statusExceptionParam.setPosAction(PosAction.TIP);
mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}
}
@Override
public void onPosInvalid(String e) {
LoganManager.w_code(TAG, "onPosInvalid: " + e.toString());
}
@Override
public void onUpdateStatusSuccess(AdjustTipRespose response) {
LoganManager.w_code(TAG, "onUpdateStatusSuccess: " + response.toString());
}
@Override
public void onUpdateStatusError(Throwable e) {
LoganManager.w_code(TAG, "onUpdateStatusError: " + e.getMessage());
if (mActivity.findFragment(PosActionStatusExceptionFragment.class) == null) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(datasBean.getPayTxnId());
statusExceptionParam.setAmount(datasBean.getAmount());
statusExceptionParam.setOrderId(datasBean.getId());
statusExceptionParam.setOrderNo(datasBean.getOrderNo());
statusExceptionParam.setPayMethodName("VISA測試");
statusExceptionParam.setPosAction(PosAction.TIP);
mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}
}
});
}
}
})
.show();
}
private AdjustTipRequest getTipsRequest(String txnId, double amount, double tips) {
AdjustTipRequest tipRequest = new AdjustTipRequest();
tipRequest.setTXN_ID(txnId);
tipRequest.setTOTAL_TXN_AMT(MoneyUtil.sum(amount, tips));
return tipRequest;
}
private TipsOrder.OnRefundListener tipsListener;
public void setTipsListener(TipsOrder.OnRefundListener tipsListener) {
this.tipsListener = tipsListener;
}
public interface OnRefundListener{
void refeshOrders();
}
}
package com.gingersoft.gsa.cloud.table.mvp.model.table.action; package com.gingersoft.gsa.cloud.table.mvp.action.table;
import android.app.Activity; import android.app.Activity;
......
package com.gingersoft.gsa.cloud.table.mvp.model.table.action; package com.gingersoft.gsa.cloud.table.mvp.action.table;
import android.app.Activity; import android.app.Activity;
...@@ -12,6 +12,7 @@ import com.gingersoft.gsa.cloud.order.order.DoshokuOrder; ...@@ -12,6 +12,7 @@ import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.print.bean.PrintContent; import com.gingersoft.gsa.cloud.print.bean.PrintContent;
import com.gingersoft.gsa.cloud.print.bean.adapter.PrintContentAdapter; import com.gingersoft.gsa.cloud.print.bean.adapter.PrintContentAdapter;
import com.gingersoft.gsa.cloud.table.R; import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.action.OnNetworkCallbackListener;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.BaseOrderResponse; import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.BaseOrderResponse;
import com.gingersoft.gsa.cloud.table.mvp.model.utils.OrderAssemblyUtil; import com.gingersoft.gsa.cloud.table.mvp.model.utils.OrderAssemblyUtil;
import com.gingersoft.gsa.cloud.table.mvp.presenter.TablePresenter; import com.gingersoft.gsa.cloud.table.mvp.presenter.TablePresenter;
...@@ -100,7 +101,7 @@ public class PrintServingPaperAction extends TableAction { ...@@ -100,7 +101,7 @@ public class PrintServingPaperAction extends TableAction {
} }
doshokuOrder.setOpenTableInfo(tableBean); doshokuOrder.setOpenTableInfo(tableBean);
printParper(); printParper(tableBean);
} else { } else {
CommonTipDialog.showSurpisedDialog(mContext, respose.getErrMsg(), null, null, null, null, null); CommonTipDialog.showSurpisedDialog(mContext, respose.getErrMsg(), null, null, null, null, null);
} }
...@@ -133,8 +134,8 @@ public class PrintServingPaperAction extends TableAction { ...@@ -133,8 +134,8 @@ public class PrintServingPaperAction extends TableAction {
/** /**
* 打印上菜紙 * 打印上菜紙
*/ */
private void printParper() { private void printParper(TableBean.DataBean tableBean) {
PrintContent printContent = new PrintContentAdapter().adaptationServingPaperContent(DoshokuOrder.getInstance()); PrintContent printContent = new PrintContentAdapter().adaptationServingPaperContent(DoshokuOrder.getInstance(),tableBean);
CC.obtainBuilder(ComponentName.COMPONENT_PRINT) CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.setActionName("printActivity") .setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_SERVE) .addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_SERVE)
......
package com.gingersoft.gsa.cloud.table.mvp.model.table.action; package com.gingersoft.gsa.cloud.table.mvp.action.table;
import android.app.Activity; import android.app.Activity;
import android.text.TextUtils; import android.text.TextUtils;
import com.billy.cc.core.component.CC; import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.app.GsaCloudApplication; import com.gingersoft.gsa.cloud.app.GsaCloudApplication;
import com.gingersoft.gsa.cloud.common.bean.BaseResult; import com.gingersoft.gsa.cloud.common.bean.BaseResult;
...@@ -14,6 +15,7 @@ import com.gingersoft.gsa.cloud.common.core.user.UserContext; ...@@ -14,6 +15,7 @@ import com.gingersoft.gsa.cloud.common.core.user.UserContext;
import com.gingersoft.gsa.cloud.common.utils.JsonUtils; import com.gingersoft.gsa.cloud.common.utils.JsonUtils;
import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils; import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.component.ComponentName; import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.table.mvp.action.OnNetworkCallbackListener;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.FoodSummary; import com.gingersoft.gsa.cloud.table.mvp.model.bean.FoodSummary;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.PrintQRCodeResponse; import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.PrintQRCodeResponse;
import com.gingersoft.gsa.cloud.table.mvp.presenter.TablePresenter; import com.gingersoft.gsa.cloud.table.mvp.presenter.TablePresenter;
...@@ -21,6 +23,7 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.widget.SkyOrderDialog; ...@@ -21,6 +23,7 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.widget.SkyOrderDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.BaseRetryDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.BaseRetryDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.DialogAnimationListener; import com.gingersoft.gsa.cloud.ui.widget.dialog.DialogAnimationListener;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -125,7 +128,11 @@ public class PrintSkyorderAction extends TableAction { ...@@ -125,7 +128,11 @@ public class PrintSkyorderAction extends TableAction {
if (result.isSuccess()) { if (result.isSuccess()) {
printSkyorderSuccess(); printSkyorderSuccess();
} else { } else {
ArmsUtils.makeText(mContext, "打印失敗"); if (!TextUtils.isEmpty(result.getErrorMessage())) {
ArmsUtils.makeText(mContext, result.getErrorMessage());
} else {
ArmsUtils.makeText(mContext, "打印失敗");
}
} }
mSkyOrderDialog.dismiss(); mSkyOrderDialog.dismiss();
}); });
......
package com.gingersoft.gsa.cloud.table.mvp.model.table.action; package com.gingersoft.gsa.cloud.table.mvp.action.table;
import android.app.Activity; import android.app.Activity;
......
package com.gingersoft.gsa.cloud.table.mvp.model.table.action; package com.gingersoft.gsa.cloud.table.mvp.action.table;
import android.app.Activity; import android.app.Activity;
......
package com.gingersoft.gsa.cloud.table.mvp.model.table.action; package com.gingersoft.gsa.cloud.table.mvp.action.table;
import android.app.Activity; import android.app.Activity;
......
package com.gingersoft.gsa.cloud.table.mvp.model.table.action; package com.gingersoft.gsa.cloud.table.mvp.action.table;
import android.app.Activity; import android.app.Activity;
...@@ -37,7 +37,7 @@ public abstract class TableAction implements Strategy<TableBean.DataBean> { ...@@ -37,7 +37,7 @@ public abstract class TableAction implements Strategy<TableBean.DataBean> {
*/ */
public abstract boolean filterTableCondition(TableBean.DataBean dataBean); public abstract boolean filterTableCondition(TableBean.DataBean dataBean);
public abstract void destroy(); // public abstract void destroy();
protected void setOperatContentText(String content) { protected void setOperatContentText(String content) {
if (actionListener != null) { if (actionListener != null) {
......
...@@ -26,6 +26,8 @@ public interface AllOrderContract { ...@@ -26,6 +26,8 @@ public interface AllOrderContract {
void setAllOrderAdapter(DefaultAdapter adapter); void setAllOrderAdapter(DefaultAdapter adapter);
String getOrderType(); String getOrderType();
String getStatusByFragmentIndex();
} }
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
......
package com.gingersoft.gsa.cloud.table.mvp.contract;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.mvp.IModel;
import com.jess.arms.mvp.IView;
import io.reactivex.Observable;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/13/2020 16:25
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public interface BaseOrderConterContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
}
}
...@@ -35,15 +35,19 @@ public interface OrderCenterContract { ...@@ -35,15 +35,19 @@ public interface OrderCenterContract {
AllOrderFragment getCurrentOrderFragment(); AllOrderFragment getCurrentOrderFragment();
int getCurrentFragmentIndex();
String getStatusByFragmentIndex();
int getPageSize(); int getPageSize();
} }
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel { interface Model extends IModel {
Observable<BaseResult> loadOrderList(int restaurantId, String orderType, int pageIndex, int pageSize); Observable<BaseResult> loadOrderList(int restaurantId, String orderType,String status, int pageIndex, int pageSize);
Observable<BaseResult> cancelOrder(long orderId, int restaurantId, String orderType); Observable<BaseResult> cancelOrder(long orderId, int restaurantId, String orderType,String status);
} }
} }
...@@ -23,6 +23,16 @@ public interface OrderDetailContract { ...@@ -23,6 +23,16 @@ public interface OrderDetailContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息 //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView { interface View extends IView {
void setWithSettlementLayoutVisible();
void setCurrPosDeviceLayoutVisible();
void setNotCurrPosDeviceLayoutVisible();
void setNomalDeviceLayoutVisible();
void setPublicLayoutVisible();
void returnOrderDetail(OrderManagerResponse orderDetailItem); void returnOrderDetail(OrderManagerResponse orderDetailItem);
} }
......
...@@ -3,7 +3,7 @@ package com.gingersoft.gsa.cloud.table.mvp.contract; ...@@ -3,7 +3,7 @@ package com.gingersoft.gsa.cloud.table.mvp.contract;
import com.gingersoft.gsa.cloud.common.bean.BaseResult; import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.core.table.TableBean; import com.gingersoft.gsa.cloud.common.core.table.TableBean;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.BaseOrderResponse; import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.BaseOrderResponse;
import com.gingersoft.gsa.cloud.table.mvp.model.table.action.TableAction; import com.gingersoft.gsa.cloud.table.mvp.action.table.TableAction;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.AllTableFragment; import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.AllTableFragment;
import com.gingersoft.gsa.cloud.database.bean.Food; import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.bean.Modifier; import com.gingersoft.gsa.cloud.database.bean.Modifier;
......
...@@ -50,20 +50,20 @@ public class OrderCenterModel extends BaseModel implements OrderCenterContract.M ...@@ -50,20 +50,20 @@ public class OrderCenterModel extends BaseModel implements OrderCenterContract.M
} }
@Override @Override
public Observable<BaseResult> loadOrderList(int restaurantId,String orderType, int pageIndex, int pageSize) { public Observable<BaseResult> loadOrderList(int restaurantId,String orderType,String status, int pageIndex, int pageSize) {
return mRepositoryManager.obtainRetrofitService(OrderService.class) return mRepositoryManager.obtainRetrofitService(OrderService.class)
.loadOrderList(restaurantId, orderType,pageIndex, pageSize); .loadOrderList(restaurantId, orderType,status,pageIndex, pageSize);
} }
@Override @Override
public Observable<BaseResult> cancelOrder(long orderId, int restaurantId,String orderType) { public Observable<BaseResult> cancelOrder(long orderId, int restaurantId,String orderType,String status) {
return mRepositoryManager.obtainRetrofitService(OrderService.class) return mRepositoryManager.obtainRetrofitService(OrderService.class)
.cancelOrder(orderId) .cancelOrder(orderId)
.flatMap(new Function<BaseResult, Observable<BaseResult>>() { .flatMap(new Function<BaseResult, Observable<BaseResult>>() {
@Override @Override
public Observable<BaseResult> apply(BaseResult info) throws Exception { public Observable<BaseResult> apply(BaseResult info) throws Exception {
if (info != null && info.isSuccess()) { if (info != null && info.isSuccess()) {
return loadOrderList(restaurantId, orderType,0, 10); return loadOrderList(restaurantId, orderType,status,0, 10);
} }
return Observable.just(info); return Observable.just(info);
} }
......
package com.gingersoft.gsa.cloud.table.mvp.model.bean.response; package com.gingersoft.gsa.cloud.table.mvp.model.bean.response;
import android.text.TextUtils;
import androidx.annotation.Nullable;
import com.gingersoft.gsa.cloud.common.core.member.MemberInfo; import com.gingersoft.gsa.cloud.common.core.member.MemberInfo;
import com.gingersoft.gsa.cloud.common.core.table.TableBean; import com.gingersoft.gsa.cloud.common.core.table.TableBean;
import com.gingersoft.gsa.cloud.common.oaId.DeviceID;
import com.gingersoft.gsa.cloud.common.utils.AppDevices;
import com.gingersoft.gsa.cloud.order.bean.response.OrderDiscountResponse; import com.gingersoft.gsa.cloud.order.bean.response.OrderDiscountResponse;
import com.gingersoft.gsa.cloud.order.bean.response.OrderResponse; import com.gingersoft.gsa.cloud.order.bean.response.OrderResponse;
import com.gingersoft.gsa.cloud.pay.bean.PayMethod;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.constant.PayMethodConstant;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;
...@@ -39,9 +47,13 @@ public class OrderManagerResponse implements Serializable { ...@@ -39,9 +47,13 @@ public class OrderManagerResponse implements Serializable {
* 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}] * 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; private long id;
/**
* 订单状态
*/
private int status; private int status;
private String orderNo; private String orderNo;
private String tableName; private String tableName;
private String tableNumber;
private int tableId; private int tableId;
private int person; private int person;
/** /**
...@@ -53,40 +65,103 @@ public class OrderManagerResponse implements Serializable { ...@@ -53,40 +65,103 @@ public class OrderManagerResponse implements Serializable {
* 7:自取 * 7:自取
*/ */
private int orderType; private int orderType;
/**總金額*/ /**
* 總金額
*/
private double totalAmount; private double totalAmount;
private int totalPoints; private int totalPoints;
/**支付金額*/ /**
* 支付金額
*/
private double amount; private double amount;
/**賬單小數*/ /**
* 賬單小數
*/
private Double rounding; private Double rounding;
/**服務費*/ /**
* 服務費
*/
private Double serviceAmount; private Double serviceAmount;
/**訂單碼*/ /**
* 訂單碼
*/
private String billNo; private String billNo;
/**取餐碼*/ /**
* 取餐碼
*/
private String takeFoodCode; private String takeFoodCode;
/**生成訂單時間*/ /**
* 生成訂單時間
*/
private String createTime; private String createTime;
/**結賬時間*/ /**
* 結賬時間
*/
private String endTime; private String endTime;
/**訂單食品詳情*/ /**
* 訂單食品詳情
*/
private List<OrderResponse.OrderDetailsBean> orderDetails; private List<OrderResponse.OrderDetailsBean> orderDetails;
/**折扣詳情*/ /**
* 折扣詳情
*/
private List<OrderDiscountResponse> discountDetails; private List<OrderDiscountResponse> discountDetails;
/**支付詳情*/ /**
* 支付詳情
*/
private List<OrderPayBean> orderPays; private List<OrderPayBean> orderPays;
/**餐檯信息*/ /**
* 餐檯信息
*/
private TableBean.DataBean restaurantTable; private TableBean.DataBean restaurantTable;
/**會員信息*/ /**
* 會員信息
*/
private MemberInfo memberInfo; private MemberInfo memberInfo;
/**會員積分碼*/ /**
* 會員積分碼
*/
private String verifyCode; private String verifyCode;
/**會員積分相关实体*/ /**
* 會員積分相关实体
*/
private OrderPayResponse integralInfo; private OrderPayResponse integralInfo;
/******************** N5相關**************************/
/**
* N5支付TXN_ID
*/
private String payTxnId;
/**
* 事項狀態 0:異常未處理,1: 成功
* 以下哪個參數不為Null說明有事项未消费,需要重试上传
*/
private int matterStatus = MATTER_STATUS_SUCCESS;
/**
* 取消事项ID
*/
private String cancelTxnId;
/**
* 退款事项ID
*/
private String refundTxnId;
/**
* 补小费事项ID
*/
private String tipTxnId;
/**
* 清機ID,已清機則不為null
*/
private Integer restaurantOperationId;
/**
* 設備ID,用來區分每台N5設備支付的訂單
*/
private String deviceId;
/** /**
* 訂單狀態:0:未支付;1:待確認(已支付, 待餐廳確認);2:制作中(餐厅确认);3:派送中;4:确认收货(完成);5:是否评论;6:取消; * 訂單狀態:0:未支付;1:待確認(已支付, 待餐廳確認);2:制作中(餐厅确认);3:派送中;4:确认收货(完成);5:是否评论;6:取消;
*/ */
...@@ -98,7 +173,6 @@ public class OrderManagerResponse implements Serializable { ...@@ -98,7 +173,6 @@ public class OrderManagerResponse implements Serializable {
public static final byte STATUS_COMMENT = 5; public static final byte STATUS_COMMENT = 5;
public static final byte STATUS_CANCEL = 6; public static final byte STATUS_CANCEL = 6;
/** /**
* 订单类型1:堂食2:外賣3:掃碼點餐5:預點餐7:自取 * 订单类型1:堂食2:外賣3:掃碼點餐5:預點餐7:自取
*/ */
...@@ -106,8 +180,19 @@ public class OrderManagerResponse implements Serializable { ...@@ -106,8 +180,19 @@ public class OrderManagerResponse implements Serializable {
public static final byte ORDER_TYPE_TAKEAWAY = 2; public static final byte ORDER_TYPE_TAKEAWAY = 2;
public static final byte ORDER_TYPE_SELFCOLLECTION = 7; public static final byte ORDER_TYPE_SELFCOLLECTION = 7;
/**
* 事項狀態 0:異常未處理,1: 成功
*/
public static final byte MATTER_STATUS_SUCCESS = 1;
public static final byte MATTER_STATUS_EXCEPTION = 0;
/**
* 是否選中
*/
private boolean checked = false;
@Data @Data
public static final class OrderPayBean implements Serializable{ public static final class OrderPayBean implements Serializable {
private long id; private long id;
private long lineOrderId; private long lineOrderId;
private int payType; private int payType;
...@@ -116,8 +201,93 @@ public class OrderManagerResponse implements Serializable { ...@@ -116,8 +201,93 @@ public class OrderManagerResponse implements Serializable {
private double tipsPrice; private double tipsPrice;
private int status; private int status;
private int linePayType; private int linePayType;
private double paySales; /**
* 0=非營業額(非收入)
* 1=營業額(收入)
* 2=非項目銷售(Non gross item, 獨佔的支付方式)
*/
private int paySales;
private String payName; private String payName;
public boolean withHywebPay() {
if (payType == PayMethod.HYWEB_POS_TYPE_CC || payType == PayMethod.HYWEB_POS_TYPE_QRC) {
return true;
}
return false;
}
public String getHywebPayMethodByType() {
if (payType == PayMethod.HYWEB_POS_TYPE_CC) {
return PayMethodConstant.PAY_TYPE_CC;
}
if (payType == PayMethod.HYWEB_POS_TYPE_QRC) {
return PayMethodConstant.PAY_TYPE_QRC;
}
return "";
}
}
public boolean withHywebPay() {
if (!TextUtils.isEmpty(payTxnId) || !TextUtils.isEmpty(cancelTxnId) || !TextUtils.isEmpty(refundTxnId)) {
return true;
}
return false;
}
/**
* 支付方式名稱拼接,已逗號分開
* @return
*/
public String getPayNames(){
StringBuilder sb = new StringBuilder();
for (int i = 0; i < orderPays.size(); i++) {
OrderPayBean orderPayBean = orderPays.get(i);
sb.append(orderPayBean.getPayName());
if(orderPays.size() > 1 && i != (orderPays.size() - 1)){
sb.append(",");
}
}
return sb.toString();
}
public String getExceptionReloadText() {
if(!TextUtils.isEmpty(tipTxnId)){
return "貼士狀態異常,輕觸重試";
}
if(!TextUtils.isEmpty(cancelTxnId)){
return "取消狀態異常,輕觸重試";
}
if(!TextUtils.isEmpty(refundTxnId)){
return "退款狀態異常,輕觸重試";
}
return "";
}
public String getMatterTxnId() {
if(!TextUtils.isEmpty(tipTxnId)){
return tipTxnId;
}
if(!TextUtils.isEmpty(cancelTxnId)){
return cancelTxnId;
}
if(!TextUtils.isEmpty(refundTxnId)){
return refundTxnId;
}
return "";
}
/**
* 是不是當前設備的訂單
* @return
*/
public boolean isCurrDeviceOrder(){
if(!AppDevices.isHywebPos() || !AppDevices.isBBPos()){
return true;
}
if(TextUtils.isEmpty(deviceId) && deviceId.equals(DeviceID.getDeviceId())){
return true;
}
return false;
} }
} }
package com.gingersoft.gsa.cloud.table.mvp.model.function;
import com.gingersoft.gsa.cloud.common.function.FModule;
import com.gingersoft.gsa.cloud.table.R;
/**
* @author : bin
* @create date: 2020-11-21
* @update date: 2020-11-21
* @description:
*/
public class TableFunctionFactory {
public static final String BottomGroup = "/bottom/";
public static final class Bottom {
}
/**
* 餐檯頁
*/
public static final FModule[] bottom = {
new FModule("init", R.mipmap.table_init, 0),
new FModule("initSkyorder", R.mipmap.table_paper, 0),
new FModule("move", R.mipmap.table_move, 0),
new FModule("skyorder", 0, 0),
new FModule("splite", R.mipmap.table_splite, 0),
new FModule("table/bottom/parper", R.mipmap.table_paper, 0),
};
}
...@@ -20,7 +20,7 @@ public interface OrderService { ...@@ -20,7 +20,7 @@ public interface OrderService {
@FormUrlEncoded @FormUrlEncoded
@POST("order/list" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2) @POST("order/list" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> loadOrderList(@Field("restaurantId") int restaurantId, @Field("orderType") String orderType, @Field("pageIndex") int pageIndex, @Field("pageSize") int pageSize); Observable<BaseResult> loadOrderList(@Field("restaurantId") int restaurantId, @Field("orderType") String orderType,@Field("status") String status ,@Field("pageIndex") int pageIndex, @Field("pageSize") int pageSize);
@GET("order/pay/success" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2) @GET("order/pay/success" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> getOrderDetail(@Query("orderId") long orderId); Observable<BaseResult> getOrderDetail(@Query("orderId") long orderId);
......
...@@ -15,7 +15,7 @@ import java.util.List; ...@@ -15,7 +15,7 @@ import java.util.List;
public class OrderAssemblyUtil { public class OrderAssemblyUtil {
/** /**
* 組裝食品結構 * 組裝食品位置和結構
* @param orderDetails * @param orderDetails
* @return * @return
*/ */
...@@ -28,7 +28,7 @@ public class OrderAssemblyUtil { ...@@ -28,7 +28,7 @@ public class OrderAssemblyUtil {
newOrderDetails.addAll(getOrdersItem2ByParentId(orderDetails, order.getId(),order.getProductId(), i)); newOrderDetails.addAll(getOrdersItem2ByParentId(orderDetails, order.getId(),order.getProductId(), i));
} }
} }
return newOrderDetails; return newOrderDetails;//10 + 7
} }
private static List<OrderDetail> getOrdersItem2ByParentId(List<OrderDetail> orderDetails, long id, long productId,int startIndex) { private static List<OrderDetail> getOrdersItem2ByParentId(List<OrderDetail> orderDetails, long id, long productId,int startIndex) {
......
...@@ -1099,7 +1099,7 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex ...@@ -1099,7 +1099,7 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
OrderDetail item = foodList.get(j); OrderDetail item = foodList.get(j);
boolean myIndex = item.getMyIndex() != parentItem.getMyIndex(); boolean myIndex = item.getMyIndex() != parentItem.getMyIndex();
boolean parentIndex = item.getParentIndex() != parentItem.getMyIndex(); boolean parentIndex = item.getParentIndex() != parentItem.getMyIndex();
if (myIndex && parentIndex) { if (myIndex && parentIndex && item.getType() != OrderDetail.MODIFIER_TYPE) {
//已經循環過當前套餐 退出循環 //已經循環過當前套餐 退出循環
break; break;
} }
......
...@@ -38,7 +38,7 @@ import com.gingersoft.gsa.cloud.table.mvp.model.bean.FoodReason; ...@@ -38,7 +38,7 @@ import com.gingersoft.gsa.cloud.table.mvp.model.bean.FoodReason;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood; import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.AddOrderRequest; 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.bean.request.CreateOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.model.discount.MealDiscountAction; import com.gingersoft.gsa.cloud.table.mvp.action.discount.MealDiscountAction;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ComboAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ComboAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.DiscountAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.DiscountAdapter;
...@@ -199,6 +199,9 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -199,6 +199,9 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
this.mAppManager = null; this.mAppManager = null;
this.mImageLoader = null; this.mImageLoader = null;
this.mApplication = null; this.mApplication = null;
if(mMealDiscountAction != null){
mMealDiscountAction.destroy();
}
} }
public void startScanActivity() { public void startScanActivity() {
...@@ -211,6 +214,9 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -211,6 +214,9 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
if (foodGroupList != null && foodGroupList.size() > 0) { if (foodGroupList != null && foodGroupList.size() > 0) {
// for (Food foodGroup: foodGroupList) {
// foodGroup.setColorBean(foodGroup.getColorBean());
// }
mFoodGroupList.addAll(foodGroupList); mFoodGroupList.addAll(foodGroupList);
Food defalutFoodGroup = getDefalutFoodGroup(mFoodGroupList); Food defalutFoodGroup = getDefalutFoodGroup(mFoodGroupList);
...@@ -884,7 +890,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -884,7 +890,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
mergeMainFoodNumber(mOrderMealList); mergeMainFoodNumber(mOrderMealList);
} }
PrintContent printContent = new PrintContentAdapter().adaptationServingPaperContent(DoshokuOrder.getInstance()); PrintContent printContent = new PrintContentAdapter().adaptationServingPaperContent(DoshokuOrder.getInstance(),mTableInfo);
CC.obtainBuilder(ComponentName.COMPONENT_PRINT) CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.setActionName("printActivity") .setActionName("printActivity")
......
...@@ -39,7 +39,7 @@ import com.gingersoft.gsa.cloud.table.mvp.contract.OrderContentContract; ...@@ -39,7 +39,7 @@ import com.gingersoft.gsa.cloud.table.mvp.contract.OrderContentContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.AddOrderRequest; 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.bean.request.CreateOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.BaseOrderResponse; import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.BaseOrderResponse;
import com.gingersoft.gsa.cloud.table.mvp.model.discount.BillDiscountAction; import com.gingersoft.gsa.cloud.table.mvp.action.discount.BillDiscountAction;
import com.gingersoft.gsa.cloud.table.mvp.model.utils.OrderAssemblyUtil; import com.gingersoft.gsa.cloud.table.mvp.model.utils.OrderAssemblyUtil;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderContentActivity; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderContentActivity;
...@@ -150,7 +150,9 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -150,7 +150,9 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
this.mAppManager = null; this.mAppManager = null;
this.mImageLoader = null; this.mImageLoader = null;
this.mApplication = null; this.mApplication = null;
if(mNomalDiscountAction != null){
mNomalDiscountAction.destroy();
}
stopTablePolling(); stopTablePolling();
} }
...@@ -198,7 +200,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -198,7 +200,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
// if (!canPay()) { // if (!canPay()) {
// return; // return;
// } // }
if (hasNesOrderFoods() || getNewDiscount() != null || mDoshokuOrder.needUpdateMemberInfo()) { if (hasNesOrderFoods() || getNewDiscount() != null || hasModifyFoods() || mDoshokuOrder.needUpdateMemberInfo()) {
Class[] parameterTypes = {boolean.class, Class.class}; Class[] parameterTypes = {boolean.class, Class.class};
Object[] parameters = {false, OrderPayActivity.class}; Object[] parameters = {false, OrderPayActivity.class};
CommonTipDialog.showDoubtDialog(IActivity, "賬單已變化,是否送單后去結賬", BaseOrderPresenter.class, mBaseOrderPresenter, CommonTipDialog.showDoubtDialog(IActivity, "賬單已變化,是否送單后去結賬", BaseOrderPresenter.class, mBaseOrderPresenter,
...@@ -383,7 +385,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -383,7 +385,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
mergeMainFoodNumber(mOrderMealList); mergeMainFoodNumber(mOrderMealList);
} }
PrintContent printContent = new PrintContentAdapter().adaptationServingPaperContent(DoshokuOrder.getInstance()); PrintContent printContent = new PrintContentAdapter().adaptationServingPaperContent(DoshokuOrder.getInstance(),mTableInfo);
CC.obtainBuilder(ComponentName.COMPONENT_PRINT) CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.setActionName("printActivity") .setActionName("printActivity")
...@@ -430,7 +432,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -430,7 +432,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
mergeMainFoodNumber(mOrderMealList); mergeMainFoodNumber(mOrderMealList);
} }
PrintContent printContent = new PrintContentAdapter().adaptationPrintSlipContent(DoshokuOrder.getInstance()); PrintContent printContent = new PrintContentAdapter().adaptationPrintSlipContent(DoshokuOrder.getInstance(),mTableInfo);
CC.obtainBuilder(ComponentName.COMPONENT_PRINT) CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_SLIP)//印單 .addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_SLIP)//印單
...@@ -814,6 +816,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -814,6 +816,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
//緩存訂單信息 //緩存訂單信息
mDoshokuOrder.setOrderPlaced(new OrderResponse(info.getData())); mDoshokuOrder.setOrderPlaced(new OrderResponse(info.getData()));
//緩存食品信息 //緩存食品信息
// List<OrderDetail> orderDetailList = OrderDetail.orderTransOrderDetails(info.getData().getOrderDetails());
List<OrderDetail> orderDetailList = OrderAssemblyUtil.assemblyOrder(OrderDetail.orderTransOrderDetails(info.getData().getOrderDetails())); List<OrderDetail> orderDetailList = OrderAssemblyUtil.assemblyOrder(OrderDetail.orderTransOrderDetails(info.getData().getOrderDetails()));
mOrderMealList.clear(); mOrderMealList.clear();
...@@ -883,6 +886,18 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -883,6 +886,18 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
} }
} }
/**
* 修改訂單包含修改或刪除過的的食品
* @return
*/
private boolean hasModifyFoods() {
for (OrderDetail orderDetail : getOrderFoodLists()) {
if(orderDetail.isModify()){
return true;
}
}
return false;
}
private boolean canPrint() { private boolean canPrint() {
if (getFoodCount() == 0) { if (getFoodCount() == 0) {
......
...@@ -180,6 +180,7 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model ...@@ -180,6 +180,7 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
} }
} }
} }
mRootView.showMessage("支付成功");
//結賬成功 //結賬成功
mRootView.paySuccess(); mRootView.paySuccess();
} else { } else {
......
...@@ -276,6 +276,7 @@ public class SoldoutCtrlPresenter extends BasePresenter<SoldoutCtrlContract.Mode ...@@ -276,6 +276,7 @@ public class SoldoutCtrlPresenter extends BasePresenter<SoldoutCtrlContract.Mode
public void initFoodData() { public void initFoodData() {
List<Food> foodGroupList = mModel.queryDB_FoodGroupList(); List<Food> foodGroupList = mModel.queryDB_FoodGroupList();
IActivity.initFoodGroupAdapter(foodGroupList);
if (foodGroupList != null && foodGroupList.size() > 0) { if (foodGroupList != null && foodGroupList.size() > 0) {
mFoodGroupList.addAll(foodGroupList); mFoodGroupList.addAll(foodGroupList);
//默認選中第一組 //默認選中第一組
......
...@@ -26,25 +26,30 @@ import com.gingersoft.gsa.cloud.order.bean.response.OrderResponse; ...@@ -26,25 +26,30 @@ import com.gingersoft.gsa.cloud.order.bean.response.OrderResponse;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail; import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.order.BaseOrder; import com.gingersoft.gsa.cloud.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder; import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.pay.bean.PosActionStatusExceptionParam;
import com.gingersoft.gsa.cloud.pay.pos.PosAction;
import com.gingersoft.gsa.cloud.pay.pos.fragment.PosActionStatusExceptionFragment;
import com.gingersoft.gsa.cloud.table.FunctionTable; import com.gingersoft.gsa.cloud.table.FunctionTable;
import com.gingersoft.gsa.cloud.table.R; import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.contract.TableContract; import com.gingersoft.gsa.cloud.table.mvp.contract.TableContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.FoodSummary; import com.gingersoft.gsa.cloud.table.mvp.model.bean.FoodSummary;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.BaseOrderResponse; import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.BaseOrderResponse;
import com.gingersoft.gsa.cloud.table.mvp.model.constant.SkyOrderConstant; import com.gingersoft.gsa.cloud.table.mvp.model.constant.SkyOrderConstant;
import com.gingersoft.gsa.cloud.table.mvp.model.table.action.MoveTableAction; import com.gingersoft.gsa.cloud.table.mvp.action.table.MoveTableAction;
import com.gingersoft.gsa.cloud.table.mvp.model.table.action.OnNetworkCallbackListener; import com.gingersoft.gsa.cloud.table.mvp.action.OnNetworkCallbackListener;
import com.gingersoft.gsa.cloud.table.mvp.model.table.action.PrintServingPaperAction; import com.gingersoft.gsa.cloud.table.mvp.action.table.PrintServingPaperAction;
import com.gingersoft.gsa.cloud.table.mvp.model.table.action.PrintSkyorderAction; import com.gingersoft.gsa.cloud.table.mvp.action.table.PrintSkyorderAction;
import com.gingersoft.gsa.cloud.table.mvp.model.table.action.ResetSkyorderAction; import com.gingersoft.gsa.cloud.table.mvp.action.table.ResetSkyorderAction;
import com.gingersoft.gsa.cloud.table.mvp.model.table.action.ResetTableAction; import com.gingersoft.gsa.cloud.table.mvp.action.table.ResetTableAction;
import com.gingersoft.gsa.cloud.table.mvp.model.table.action.SplitTableAction; import com.gingersoft.gsa.cloud.table.mvp.action.table.SplitTableAction;
import com.gingersoft.gsa.cloud.table.mvp.model.table.action.TableAction; import com.gingersoft.gsa.cloud.table.mvp.action.table.TableAction;
import com.gingersoft.gsa.cloud.table.mvp.model.utils.OrderAssemblyUtil;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BottomFunctionAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BottomFunctionAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.SplitTableDialog; import com.gingersoft.gsa.cloud.table.mvp.ui.widget.SplitTableDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.BaseRetryDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.BaseRetryDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
import com.google.android.material.internal.NavigationMenuItemView;
import com.jess.arms.base.DefaultAdapter; import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.scope.ActivityScope; import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader; import com.jess.arms.http.imageloader.ImageLoader;
...@@ -375,6 +380,22 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -375,6 +380,22 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
OrderResponse orderBean = respose.getData(); OrderResponse orderBean = respose.getData();
if (orderBean != null && respose.getData().getOrderDetails() != null) { if (orderBean != null && respose.getData().getOrderDetails() != null) {
if (!TextUtils.isEmpty(orderBean.getTxnId())) {
//有支付異常事項需要處理
if (IActivity.findFragment(PosActionStatusExceptionFragment.class) == null) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(orderBean.getTxnId());
statusExceptionParam.setAmount(orderBean.getTotalAmount());
statusExceptionParam.setOrderId(orderBean.getId());
statusExceptionParam.setOrderNo(orderBean.getOrderNo());
statusExceptionParam.setPayMethodName(orderBean.getPayName());
statusExceptionParam.setPosAction(PosAction.RETRIEVAL);
IActivity.loadRootFragment(R.id.fl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}
return;
}
if (respose.getData().getCreateTime() != null && openTableBean != null) { if (respose.getData().getCreateTime() != null && openTableBean != null) {
//將開台時間設置為訂單創建時間 //將開台時間設置為訂單創建時間
openTableBean.setCreateTime(respose.getData().getCreateTime()); openTableBean.setCreateTime(respose.getData().getCreateTime());
...@@ -392,7 +413,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -392,7 +413,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
doshokuOrder.setOrderId(orderBean.getId()); doshokuOrder.setOrderId(orderBean.getId());
doshokuOrder.setOrderNo(orderBean.getOrderNo()); doshokuOrder.setOrderNo(orderBean.getOrderNo());
doshokuOrder.setOrderPlaced(new OrderResponse(orderBean)); doshokuOrder.setOrderPlaced(new OrderResponse(orderBean));
doshokuOrder.getShoppingCart().addCommodityList(OrderDetail.orderTransOrderDetails(mealCommoditysBeans)); doshokuOrder.getShoppingCart().addCommodityList(OrderAssemblyUtil.assemblyOrder(OrderDetail.orderTransOrderDetails(mealCommoditysBeans)));
if (orderBean.getMemberInfo() != null) { if (orderBean.getMemberInfo() != null) {
//设置会员信息 //设置会员信息
doshokuOrder.setMemberInfo(orderBean.getMemberInfo()); doshokuOrder.setMemberInfo(orderBean.getMemberInfo());
......
package com.gingersoft.gsa.cloud.table.mvp.presenter.orderManager;
import android.app.Application;
import com.gingersoft.gsa.cloud.table.mvp.action.order.CancelOrder;
import com.gingersoft.gsa.cloud.table.mvp.action.order.ModifyOrderAction;
import com.gingersoft.gsa.cloud.table.mvp.action.order.PrintOrderAction;
import com.gingersoft.gsa.cloud.table.mvp.action.order.RefundOrder;
import com.gingersoft.gsa.cloud.table.mvp.action.order.TipsOrder;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.OrderManagerResponse;
import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.mvp.IModel;
import com.jess.arms.mvp.IView;
import javax.inject.Inject;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/13/2020 16:25
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
public class BaseOrderConterPresenter<M extends IModel,V extends IView> extends BasePresenter{
@Inject
RxErrorHandler mErrorHandler;
@Inject
Application mApplication;
@Inject
ImageLoader mImageLoader;
@Inject
AppManager mAppManager;
protected M mModel;
protected V mRootView;
@Inject
public BaseOrderConterPresenter(IModel model, IView rootView) {
super(model, rootView);
this.mModel = (M) model;
this.mRootView = (V) rootView;
}
@Override
public void onDestroy() {
super.onDestroy();
this.mErrorHandler = null;
this.mAppManager = null;
this.mImageLoader = null;
this.mApplication = null;
}
public void printOrder(BaseFragmentActivity activity,OrderManagerResponse orderItem){
new PrintOrderAction(activity,mRootView)
.action(orderItem);
}
public void modifyOrder(BaseFragmentActivity activity,OrderManagerResponse orderItem){
new ModifyOrderAction(activity,mRootView)
.action(orderItem);
}
public void orderTips(BaseFragmentActivity activity,OrderManagerResponse orderItem,TipsOrder.OnRefundListener listener){
TipsOrder tipsOrder = new TipsOrder(activity,mRootView);
tipsOrder.action(orderItem);
tipsOrder.setTipsListener(listener);
}
public void orderCancel(BaseFragmentActivity activity,OrderManagerResponse orderItem,CancelOrder.OnCancelListener listener){
CancelOrder cancelOrder = new CancelOrder(activity,mRootView);
cancelOrder.action(orderItem);
cancelOrder.setCancelListener(listener);
}
public void orderRefund(BaseFragmentActivity activity,OrderManagerResponse orderItem,RefundOrder.OnRefundListener listener){
RefundOrder refundOrder = new RefundOrder(activity,mRootView);
refundOrder.action(orderItem);
refundOrder.setRefundListener(listener);
}
}
...@@ -5,8 +5,11 @@ import android.app.Application; ...@@ -5,8 +5,11 @@ import android.app.Application;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager; import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
import com.gingersoft.gsa.cloud.common.bean.BaseResult; import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.utils.JsonUtils; import com.gingersoft.gsa.cloud.common.utils.JsonUtils;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.contract.OrderStatusContract;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderCenterContract; import com.gingersoft.gsa.cloud.table.mvp.contract.OrderCenterContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.OrderManagerResponse; import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.OrderManagerResponse;
import com.gingersoft.gsa.cloud.table.mvp.model.utils.OrderAssemblyUtil;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.orderManager.OrderCenterActivity; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.orderManager.OrderCenterActivity;
import com.jess.arms.di.scope.ActivityScope; import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader; import com.jess.arms.http.imageloader.ImageLoader;
...@@ -40,7 +43,7 @@ import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber; ...@@ -40,7 +43,7 @@ import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
* ================================================ * ================================================
*/ */
@ActivityScope @ActivityScope
public class OrderCenterPresenter extends BasePresenter<OrderCenterContract.Model, OrderCenterContract.View> { public class OrderCenterPresenter extends BaseOrderConterPresenter<OrderCenterContract.Model, OrderCenterContract.View> {
@Inject @Inject
RxErrorHandler mErrorHandler; RxErrorHandler mErrorHandler;
@Inject @Inject
...@@ -50,15 +53,12 @@ public class OrderCenterPresenter extends BasePresenter<OrderCenterContract.Mode ...@@ -50,15 +53,12 @@ public class OrderCenterPresenter extends BasePresenter<OrderCenterContract.Mode
@Inject @Inject
AppManager mAppManager; AppManager mAppManager;
private OrderCenterActivity IActivity;
//是否可以繼續上拉刷新 //是否可以繼續上拉刷新
private boolean noMoreData = false; private boolean noMoreData = false;
@Inject @Inject
public OrderCenterPresenter(OrderCenterContract.Model model, OrderCenterContract.View rootView) { public OrderCenterPresenter(OrderCenterContract.Model model, OrderCenterContract.View rootView) {
super(model, rootView); super(model, rootView);
this.IActivity = (OrderCenterActivity) rootView;
} }
...@@ -74,18 +74,19 @@ public class OrderCenterPresenter extends BasePresenter<OrderCenterContract.Mode ...@@ -74,18 +74,19 @@ public class OrderCenterPresenter extends BasePresenter<OrderCenterContract.Mode
/*** /***
* 獲取訂單列表 * 獲取訂單列表
* @param orderType * @param orderType
* @param status
* @param pageIndex * @param pageIndex
* @param pageSize * @param pageSize
* @param refreshLayout * @param refreshLayout
* @param isLoadMore * @param isLoadMore
*/ */
public void loadOrderList(String orderType, int pageIndex, int pageSize, RefreshLayout refreshLayout, boolean isLoadMore) { public void loadOrderList(String orderType,String status, int pageIndex, int pageSize, RefreshLayout refreshLayout, boolean isLoadMore) {
int restaurantId = RestaurantInfoManager.newInstance().getRestaurantId(); int restaurantId = RestaurantInfoManager.newInstance().getRestaurantId();
if (pageIndex != 0) { if (pageIndex != 0) {
//根據數據庫下標分頁 //根據數據庫下標分頁
pageIndex = pageIndex * pageSize; pageIndex = pageIndex * pageSize;
} }
mModel.loadOrderList(restaurantId, orderType, pageIndex, pageSize) mModel.loadOrderList(restaurantId, orderType,status, pageIndex, pageSize)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> { .doOnSubscribe(disposable -> {
if (refreshLayout == null) { if (refreshLayout == null) {
...@@ -114,6 +115,7 @@ public class OrderCenterPresenter extends BasePresenter<OrderCenterContract.Mode ...@@ -114,6 +115,7 @@ public class OrderCenterPresenter extends BasePresenter<OrderCenterContract.Mode
List<OrderManagerResponse> orderItemList = JsonUtils.parseArray(result.getData(), OrderManagerResponse.class); List<OrderManagerResponse> orderItemList = JsonUtils.parseArray(result.getData(), OrderManagerResponse.class);
if (orderItemList != null && orderItemList.size() > 0) { if (orderItemList != null && orderItemList.size() > 0) {
if (!noMoreData) { if (!noMoreData) {
// filterOrderItemsByStatus(orderItemList);
mRootView.returnOrderItemList(orderItemList); mRootView.returnOrderItemList(orderItemList);
//每次更新完數據,頁碼+1 //每次更新完數據,頁碼+1
mRootView.setPageIndex(mRootView.getPageIndex() + 1); mRootView.setPageIndex(mRootView.getPageIndex() + 1);
...@@ -166,9 +168,9 @@ public class OrderCenterPresenter extends BasePresenter<OrderCenterContract.Mode ...@@ -166,9 +168,9 @@ public class OrderCenterPresenter extends BasePresenter<OrderCenterContract.Mode
* *
* @param orderId * @param orderId
*/ */
public void cancelOrder(long orderId, String orderType) { public void cancelOrder(long orderId, String orderType,String status) {
int restaurantId = RestaurantInfoManager.newInstance().getRestaurantId(); int restaurantId = RestaurantInfoManager.newInstance().getRestaurantId();
mModel.cancelOrder(orderId, restaurantId, orderType) mModel.cancelOrder(orderId, restaurantId, orderType,status)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading(null)) .doOnSubscribe(disposable -> mRootView.showLoading(null))
.subscribeOn(AndroidSchedulers.mainThread()) .subscribeOn(AndroidSchedulers.mainThread())
...@@ -183,6 +185,7 @@ public class OrderCenterPresenter extends BasePresenter<OrderCenterContract.Mode ...@@ -183,6 +185,7 @@ public class OrderCenterPresenter extends BasePresenter<OrderCenterContract.Mode
if (result.getData() != null) { if (result.getData() != null) {
List<OrderManagerResponse> orderItemList = JsonUtils.parseArray(result.getData(), OrderManagerResponse.class); List<OrderManagerResponse> orderItemList = JsonUtils.parseArray(result.getData(), OrderManagerResponse.class);
if (orderItemList.size() > 0) { if (orderItemList.size() > 0) {
// filterOrderItemsByStatus(orderItemList);
mRootView.setPageIndex(0); mRootView.setPageIndex(0);
mRootView.returnOrderItemList(orderItemList); mRootView.returnOrderItemList(orderItemList);
//每次更新完數據,頁碼+1 //每次更新完數據,頁碼+1
...@@ -206,7 +209,6 @@ public class OrderCenterPresenter extends BasePresenter<OrderCenterContract.Mode ...@@ -206,7 +209,6 @@ public class OrderCenterPresenter extends BasePresenter<OrderCenterContract.Mode
}); });
} }
public boolean isNoMoreData() { public boolean isNoMoreData() {
return noMoreData; return noMoreData;
} }
......
...@@ -4,8 +4,15 @@ import android.app.Application; ...@@ -4,8 +4,15 @@ import android.app.Application;
import com.gingersoft.gsa.cloud.common.bean.BaseResult; import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.utils.JsonUtils; import com.gingersoft.gsa.cloud.common.utils.JsonUtils;
import com.gingersoft.gsa.cloud.common.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.order.bean.response.OrderDiscountResponse;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.pay.bean.PayMethod;
import com.gingersoft.gsa.cloud.pay.util.PayMethodUtils;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderDetailContract; import com.gingersoft.gsa.cloud.table.mvp.contract.OrderDetailContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.OrderManagerResponse; import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.OrderManagerResponse;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem3;
import com.jess.arms.di.scope.ActivityScope; import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader; import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager; import com.jess.arms.integration.AppManager;
...@@ -14,6 +21,9 @@ import com.jess.arms.utils.RxLifecycleUtils; ...@@ -14,6 +21,9 @@ import com.jess.arms.utils.RxLifecycleUtils;
import org.simple.eventbus.EventBus; import org.simple.eventbus.EventBus;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
...@@ -36,7 +46,7 @@ import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber; ...@@ -36,7 +46,7 @@ import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
* ================================================ * ================================================
*/ */
@ActivityScope @ActivityScope
public class OrderDetailPresenter extends BasePresenter<OrderDetailContract.Model, OrderDetailContract.View> { public class OrderDetailPresenter extends BaseOrderConterPresenter<OrderDetailContract.Model, OrderDetailContract.View> {
@Inject @Inject
RxErrorHandler mErrorHandler; RxErrorHandler mErrorHandler;
@Inject @Inject
...@@ -49,6 +59,7 @@ public class OrderDetailPresenter extends BasePresenter<OrderDetailContract.Mode ...@@ -49,6 +59,7 @@ public class OrderDetailPresenter extends BasePresenter<OrderDetailContract.Mode
@Inject @Inject
public OrderDetailPresenter(OrderDetailContract.Model model, OrderDetailContract.View rootView) { public OrderDetailPresenter(OrderDetailContract.Model model, OrderDetailContract.View rootView) {
super(model, rootView); super(model, rootView);
} }
@Override @Override
...@@ -115,4 +126,157 @@ public class OrderDetailPresenter extends BasePresenter<OrderDetailContract.Mode ...@@ -115,4 +126,157 @@ public class OrderDetailPresenter extends BasePresenter<OrderDetailContract.Mode
} }
}); });
} }
public boolean containCardPayment(List<OrderManagerResponse.OrderPayBean> orderPays){
if (orderPays != null && orderPays.size() > 0) {
List<PayMethod> payMethods = new ArrayList<>();
for (OrderManagerResponse.OrderPayBean orderPayBean : orderPays) {
PayMethod payMethod = new PayMethod();
payMethod.setPayType(orderPayBean.getPayType());
payMethod.setPayMoney(orderPayBean.getAmount());
payMethod.setTipsPrice(orderPayBean.getTipsPrice());
payMethods.add(payMethod);
}
PayMethod payMethod = PayMethodUtils.filterPaymentMethodById(payMethods, PayMethod.HYWEB_POS_TYPE_CC);
if (payMethod != null) {
//只有卡片支付才支持補小費
return true;
}
}
return false;
}
public List<SectionTextItem3> orderPayMethodTransSectionTextItem3(List<PayMethod> payMethodList) {
List<SectionTextItem3> sectionTextItem3List = new ArrayList<>();
for (PayMethod payMethod : payMethodList) {
SectionTextItem3 sectionTextItem3 = new SectionTextItem3();
sectionTextItem3.setLeftText(payMethod.getPayName());
sectionTextItem3.setCenterText(String.valueOf(0));
sectionTextItem3.setRightText(String.valueOf(payMethod.getPayMoney()));
sectionTextItem3.setLeftTextStyle(R.style.order_paymethod_text_style);
sectionTextItem3.setRightTextStyle(R.style.order_paymethod_text_style);
sectionTextItem3List.add(sectionTextItem3);
}
return sectionTextItem3List;
}
public List<SectionTextItem3> orderDetailTransSectionTextItem3(List<OrderDetail> orderDetailList) {
List<SectionTextItem3> sectionTextItem3List = new ArrayList<>();
for (OrderDetail orderDetail : orderDetailList) {
SectionTextItem3 sectionTextItem3 = new SectionTextItem3();
String foodName;
switch (orderDetail.getItemType()) {
case 2:
foodName = " " + orderDetail.getProductName();
break;
case 3:
foodName = " " + orderDetail.getProductName();
break;
default:
foodName = orderDetail.getProductName();
break;
}
sectionTextItem3.setLeftText(foodName);
sectionTextItem3.setCenterText(String.valueOf(orderDetail.getNumber()));
sectionTextItem3.setRightText(String.valueOf(orderDetail.getPrice()));
sectionTextItem3List.add(sectionTextItem3);
}
return sectionTextItem3List;
}
/**
* 獲取支付方式
*
* @param orderPays
* @return
*/
public List<PayMethod> getPayMethodList(List<OrderManagerResponse.OrderPayBean> orderPays) {
List<PayMethod> payMethodList = new ArrayList<>();
if (orderPays != null) {
for (OrderManagerResponse.OrderPayBean orderPayBean : orderPays) {
PayMethod payMethod = new PayMethod();
payMethod.setPayName(orderPayBean.getPayName());
payMethod.setPayMoney(orderPayBean.getAmount());
payMethodList.add(payMethod);
if (orderPayBean.getTipsPrice() != 0) {
//打印添加找零或貼士行
String linePayType = orderPayBean.getLinePayType() == 1 ? "找零" : "貼士";
PayMethod payMethod2 = new PayMethod();
//這裡打印退一格
payMethod2.setPayName(" " + linePayType);
payMethod2.setPayMoney(orderPayBean.getTipsPrice());
payMethodList.add(payMethod2);
}
}
}
return payMethodList;
}
/**
* 獲取賬單折扣列
*
* @param orderDetailItem
* @return
*/
public List<SectionTextItem3> getOrderDiscountSections(OrderManagerResponse orderDetailItem) {
List<SectionTextItem3> sectionTextItem3s = null;
if (orderDetailItem.getDiscountDetails() != null) {
sectionTextItem3s = new ArrayList<>();
//折扣
for (OrderDiscountResponse discount : orderDetailItem.getDiscountDetails()) {
sectionTextItem3s.add(discountTransSectionTextItem3(discount));
}
}
return sectionTextItem3s;
}
public SectionTextItem3 discountTransSectionTextItem3(OrderDiscountResponse discount) {
SectionTextItem3 sectionTextItem3 = new SectionTextItem3();
sectionTextItem3.setLeftText(discount.getRemark());
sectionTextItem3.setCenterText(String.valueOf(0));
sectionTextItem3.setRightText(String.valueOf(discount.getDiscountAmount()));
sectionTextItem3.setLeftTextStyle(com.gingersoft.gsa.cloud.common.R.style.order_paymethod_text_style);
sectionTextItem3.setRightTextStyle(com.gingersoft.gsa.cloud.common.R.style.order_paymethod_text_style);
return sectionTextItem3;
}
/**
* 獲取賬單小數列
*
* @param orderDetailItem
* @return
*/
public SectionTextItem3 getOrderRoudingSection(OrderManagerResponse orderDetailItem) {
if (orderDetailItem.getRounding() != null && orderDetailItem.getRounding() != 0) {
return SectionTextItem3.roundingTransSectionTextItem3(orderDetailItem.getRounding());
}
return null;
}
/**
* 获取服務費
*
* @param orderDetailItem
* @return
*/
public SectionTextItem3 getOrderServiceAmountSection(OrderManagerResponse orderDetailItem) {
if (orderDetailItem.getServiceAmount() != null && orderDetailItem.getServiceAmount() != 0) {
return SectionTextItem3.serviceAmountTransSectionTextItem3(orderDetailItem.getServiceAmount());
}
return null;
}
/**
* 返回合計金額
*
* @return
*/
public double getTotalMoney(List<SectionTextItem3> orderCenterDetailFoodList) {
double otherMoney = 0.0;
for (SectionTextItem3 item : orderCenterDetailFoodList) {
otherMoney = MoneyUtil.sum(otherMoney, Double.parseDouble(item.getRightText()));
}
return MoneyUtil.get_ItemDecimals_money(otherMoney);
}
} }
...@@ -380,7 +380,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter> ...@@ -380,7 +380,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
public void initFoodGroupView(List<Food> foodGroupList) { public void initFoodGroupView(List<Food> foodGroupList) {
//总的页数向上取整 //总的页数向上取整
totalPage = (int) Math.ceil(foodGroupList.size() * 1.0 / GoldConstants.foodGriupPageSize); totalPage = (int) Math.ceil(foodGroupList.size() * 1.0 / (foodGroupColumn * foodGroupRow));
int Rows = foodGroupRow; int Rows = foodGroupRow;
if (foodGroupList.size() <= foodGroupColumn) { if (foodGroupList.size() <= foodGroupColumn) {
...@@ -440,13 +440,11 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter> ...@@ -440,13 +440,11 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
} else { } else {
ivPoints[i].setImageResource(R.drawable.meal_food_group_point_unfocused); ivPoints[i].setImageResource(R.drawable.meal_food_group_point_unfocused);
} }
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ArmsUtils.dip2px(this,20),ArmsUtils.dip2px(this,12));
lp.leftMargin = ArmsUtils.dip2px(this,5);
ivPoints[i].setLayoutParams(lp);
ivPoints[i].setPadding(0, 0, 0, 0); ivPoints[i].setPadding(0, 0, 0, 0);
ll_food_group_point.addView(ivPoints[i]); ll_food_group_point.addView(ivPoints[i]);
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) ivPoints[i].getLayoutParams();
layoutParams.height = ll_food_group_point.getLayoutParams().height;
layoutParams.width = ArmsUtils.getScreenWidth(this) / totalPage;
ivPoints[i].setLayoutParams(layoutParams);
} }
if (foodGroupList.size() > (Rows * foodGroupColumn)) { if (foodGroupList.size() > (Rows * foodGroupColumn)) {
ll_food_group_point.setVisibility(View.VISIBLE); ll_food_group_point.setVisibility(View.VISIBLE);
......
This diff is collapsed. Click to expand it.
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