Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
supplier
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
王宇航
supplier
Commits
05c0b440
Commit
05c0b440
authored
Jun 10, 2020
by
Wyh
Committed by
宁斌
Jun 10, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
6.10 打印N張,歷史訂單查看已取消單
parent
7ef23438
Hide whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
623 additions
and
254 deletions
+623
-254
base-module/src/main/java/com/gingersoft/gsa/cloud/base/utils/time/TimePickerUtils.java
+42
-0
base-module/src/main/java/com/gingersoft/gsa/cloud/base/utils/time/TimeUtils.java
+18
-0
base-module/src/main/java/com/gingersoft/gsa/cloud/constans/ExpandConstant.java
+7
-0
base-module/src/main/java/com/gingersoft/gsa/cloud/ui/view/TriangleView.java
+8
-0
config.gradle
+2
-2
main-module/src/main/AndroidManifest.xml
+0
-1
main-module/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/activity/NewMainActivity.java
+6
-6
main-module/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/fragment/BusinessReportFragment.java
+81
-35
main-module/src/main/res/layout/fragment_business_report.xml
+10
-3
other_order_mode/src/main/java/com/gingersoft/gsa/other_order_mode/data/model/bean/HistoryOrderBean.kt
+5
-27
other_order_mode/src/main/java/com/gingersoft/gsa/other_order_mode/data/model/bean/MessageBean.kt
+2
-2
other_order_mode/src/main/java/com/gingersoft/gsa/other_order_mode/model/viewModel/HistoryOrderViewModel.kt
+19
-12
other_order_mode/src/main/java/com/gingersoft/gsa/other_order_mode/model/viewModel/PageViewModel.kt
+2
-1
other_order_mode/src/main/java/com/gingersoft/gsa/other_order_mode/ui/activity/HistoryOrderActivity.kt
+33
-77
other_order_mode/src/main/java/com/gingersoft/gsa/other_order_mode/ui/fragment/HistoryFragment.kt
+116
-0
other_order_mode/src/main/java/com/gingersoft/gsa/other_order_mode/ui/fragment/HistoryViewModel.kt
+7
-0
other_order_mode/src/main/res/layout/activity_history_order.xml
+30
-3
other_order_mode/src/main/res/layout/history_fragment.xml
+33
-0
other_order_mode/src/main/res/layout/update_delivery_fragment.xml
+8
-8
print-module/src/main/java/com/joe/print/mvp/print/IpPrintMaker.java
+7
-0
print-module/src/main/java/com/joe/print/mvp/print/PrintBill.java
+5
-0
print-module/src/main/java/com/joe/print/mvp/print/PrintCleanMachine.java
+5
-0
print-module/src/main/java/com/joe/print/mvp/print/PrintKitchen.java
+5
-0
print-module/src/main/java/com/joe/print/mvp/print/PrintOtherOrder.java
+15
-15
print-module/src/main/java/com/joe/print/mvp/print/PrintPrjKitchen.java
+5
-0
print-module/src/main/java/com/joe/print/mvp/print/PrintServe.java
+5
-0
print-module/src/main/java/com/joe/print/mvp/print/PrintSlip.java
+5
-0
print-module/src/main/java/com/joe/print/mvp/print/PrintTest.java
+5
-0
print-module/src/main/java/com/joe/print/mvp/print/PrinterRoot.java
+48
-52
print-module/src/main/java/com/joe/print/mvp/ui/activity/PrintActivity.java
+10
-10
print-module/src/main/res/layout/print_other_order_food_item.xml
+79
-0
No files found.
base-module/src/main/java/com/gingersoft/gsa/cloud/base/utils/time/TimePickerUtils.java
View file @
05c0b440
...
...
@@ -52,4 +52,46 @@ public class TimePickerUtils {
return
pvTime
;
}
/**
* @param mContext
* @param startTime 開始時間
* @param endTime 結束時間
* @param defaultTime 默認選中時間
* @param onTimeSelectListener 選中時間後點擊確認 回調
* @return
*/
public
static
TimePickerView
showReportTimePicker
(
Context
mContext
,
Calendar
startTime
,
Calendar
endTime
,
Calendar
defaultTime
,
TimePickerView
.
OnTimeSelectListener
onTimeSelectListener
)
{
//獲取今年第一天的日期
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
set
(
Calendar
.
DAY_OF_YEAR
,
cal
.
getActualMinimum
(
Calendar
.
DAY_OF_YEAR
));
//打開時間選擇器
TimePickerView
pvTime
=
new
TimePickerView
.
Builder
(
mContext
,
onTimeSelectListener
)
.
setType
(
TimePickerView
.
Type
.
YEAR_MONTH_DAY
)
//默认全部显示
.
setCancelText
(
"取消"
)
//取消按钮文字
.
setSubmitText
(
"確認"
)
//确认按钮文字
.
setContentSize
(
20
)
//滚轮文字大小
.
setTitleSize
(
20
)
//标题文字大小
// .setTitleText("请选择时间")//标题文字
.
setOutSideCancelable
(
true
)
//点击屏幕,点在控件外部范围时,是否取消显示
.
isCyclic
(
false
)
//是否循环滚动
.
setTextColorCenter
(
Color
.
BLACK
)
//设置选中项的颜色
.
setTitleColor
(
Color
.
BLACK
)
//标题文字颜色
.
setSubmitColor
(
Color
.
BLUE
)
//确定按钮文字颜色
.
setCancelColor
(
Color
.
BLUE
)
//取消按钮文字颜色
// .setTitleBgColor(0xFF666666)//标题背景颜色 Night mode
// .setBgColor(0xFF333333)//滚轮背景颜色 Night mode
.
setRange
(
Calendar
.
getInstance
().
get
(
Calendar
.
YEAR
),
Calendar
.
getInstance
().
get
(
Calendar
.
YEAR
))
// .setDate(selectedDate)// 如果不设置的话,默认是系统时间*/
.
setRangDate
(
startTime
,
endTime
)
//時間是今年第一天到今天
.
setLabel
(
""
,
""
,
""
,
""
,
""
,
""
)
.
isCenterLabel
(
false
)
//是否只显示中间选中项的label文字,false则每项item全部都带有label。
// .isDialog(true)//是否显示为对话框样式
.
build
();
//設置默認選中時間
pvTime
.
setDate
(
defaultTime
);
//注:根据需求来决定是否使用该方法(一般是精确到秒的情况),此项可以在弹出选择器的时候重新设置当前时间,避免在初始化之后由于时间已经设定,导致选中时间与当前时间不匹配的问题。
pvTime
.
show
();
return
pvTime
;
}
}
base-module/src/main/java/com/gingersoft/gsa/cloud/base/utils/time/TimeUtils.java
View file @
05c0b440
...
...
@@ -141,6 +141,24 @@ public class TimeUtils {
return
sf
.
format
(
endDate
);
}
/**@param beginTime 開始時間
* @param distance 差距: 昨天天傳負一,今天傳零,明天傳一
* @param type 類型: 1、天 Calendar.DATE 2、年Calendar.YEAR 3、月Calendar.MONTH
* @param sf {@link #DEFAULT_DATE_MD}
* @return 獲得從開始時間+distance(偏移時間的年月日)
*/
public
static
String
getBeginDistanceDate
(
Calendar
beginTime
,
int
distance
,
int
type
,
SimpleDateFormat
sf
)
{
beginTime
.
set
(
type
,
beginTime
.
get
(
type
)
+
distance
);
Date
endDate
=
null
;
try
{
endDate
=
sf
.
parse
(
sf
.
format
(
beginTime
.
getTime
()));
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
return
sf
.
format
(
endDate
);
}
/**
* 获取前n天日期、后n天日期
*
...
...
base-module/src/main/java/com/gingersoft/gsa/cloud/constans/ExpandConstant.java
0 → 100644
View file @
05c0b440
package
com
.
gingersoft
.
gsa
.
cloud
.
constans
;
public
class
ExpandConstant
{
public
final
static
String
DeliveryPrintCount
=
"DeliveryPrintCount"
;
}
base-module/src/main/java/com/gingersoft/gsa/cloud/ui/view/TriangleView.java
View file @
05c0b440
...
...
@@ -82,6 +82,14 @@ public class TriangleView extends QMUIAlphaImageButton {
canvas
.
drawPath
(
path
,
mPaint
);
}
public
boolean
isOpen
()
{
return
isOpen
;
}
public
void
setOpen
(
boolean
open
)
{
isOpen
=
open
;
}
public
void
toggle
(){
if
(
isOpen
){
startAnimation
(
AnimationUtils
.
loadAnimation
(
getContext
(),
R
.
anim
.
rotate_anticlockwise_anim
));
...
...
config.gradle
View file @
05c0b440
...
...
@@ -5,8 +5,8 @@ ext {
buildToolsVersion:
'28.0.3'
,
minSdkVersion
:
19
,
//N5收銀機應用安卓開發環境要求Android OS Version: 5.1Android SDK Min Version: 19
targetSdkVersion
:
28
,
versionCode
:
1
,
versionName
:
"1.0.
1
"
versionCode
:
2
,
versionName
:
"1.0.
2
"
]
version
=
[
...
...
main-module/src/main/AndroidManifest.xml
View file @
05c0b440
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
package=
"com.gingersoft.gsa.cloud.main"
>
<uses-permission
android:name=
"android.permission.INTERNET"
/>
...
...
main-module/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/activity/NewMainActivity.java
View file @
05c0b440
...
...
@@ -240,7 +240,7 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
// }
List
<
Function
>
functions
=
new
ArrayList
<>();
if
(!
BuildConfig
.
DEBUG
)
{
//
if (!BuildConfig.DEBUG) {
// functions.addAll(FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.order, "order"));
functions
.
add
(
new
Function
((
long
)
150
,
0
,
5
,
"點餐"
,
0
,
0
));
functions
.
add
(
new
Function
((
long
)
138
,
150
,
5
,
"餐檯模式"
,
R
.
drawable
.
ic_dining_table_mode
,
0
));
...
...
@@ -263,11 +263,11 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
functions
.
add
(
new
Function
((
long
)
147
,
152
,
5
,
"員工管理"
,
R
.
drawable
.
ic_staff_management_close
,
1
));
functions
.
add
(
new
Function
((
long
)
148
,
152
,
5
,
"權限管理"
,
R
.
drawable
.
ic_authority_management_close
,
1
));
functions
.
add
(
new
Function
((
long
)
149
,
152
,
5
,
"操作記錄"
,
R
.
drawable
.
ic_operation_record_close
,
1
));
}
else
{
functions
.
addAll
(
FunctionManager
.
getDefault
().
getFunctionByResModule
(
this
,
ComponentMain
.
main
.
class
,
ComponentMain
.
main
.
order
,
"order"
));
functions
.
addAll
(
FunctionManager
.
getDefault
().
getFunctionByResModule
(
this
,
ComponentMain
.
main
.
class
,
ComponentMain
.
main
.
manager
,
"manager"
));
functions
.
addAll
(
FunctionManager
.
getDefault
().
getFunctionByResModule
(
this
,
ComponentMain
.
main
.
class
,
ComponentMain
.
main
.
employee
,
"employee"
));
}
//
} else {
//
functions.addAll(FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.order, "order"));
//
functions.addAll(FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.manager, "manager"));
//
functions.addAll(FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.employee, "employee"));
//
}
//將功能列表數據分組
SparseArray
<
String
>
parents
=
new
SparseArray
<>();
...
...
main-module/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/fragment/BusinessReportFragment.java
View file @
05c0b440
...
...
@@ -77,12 +77,15 @@ public class BusinessReportFragment extends BaseFragment<BusinessReportPresenter
TextView
mTvStartTime
;
@BindView
(
R2
.
id
.
tv_end_time
)
TextView
mTvEndTime
;
@BindView
(
R2
.
id
.
iv_time_triangle
)
@BindView
(
R2
.
id
.
iv_
start_
time_triangle
)
TriangleView
triangleView
;
@BindView
(
R2
.
id
.
iv_end_time_triangle
)
TriangleView
endTimeTriangleView
;
private
BusinessInfoAdapter
businessInfoAdapter
;
//查詢多少天的數據
private
int
manyDay
=
2
;
private
int
manyDay
=
6
;
public
static
BusinessReportFragment
newInstance
()
{
BusinessReportFragment
fragment
=
new
BusinessReportFragment
();
...
...
@@ -114,6 +117,7 @@ public class BusinessReportFragment extends BaseFragment<BusinessReportPresenter
mRestaurantName
.
setText
(
GsaCloudApplication
.
getRestaurantName
(
mContext
));
mTvStartTime
.
setText
(
startTime
);
mTvEndTime
.
setText
(
TimeUtils
.
getOldDate
(
0
));
}
...
...
@@ -191,21 +195,33 @@ public class BusinessReportFragment extends BaseFragment<BusinessReportPresenter
*/
@Override
public
void
loadChart
(
List
<
MainBusinessBean
.
DataBean
>
data
)
{
Object
[]
chartData
=
new
Object
[
manyDay
+
1
];
manyDay
=
data
.
size
();
Object
[]
chartData
=
new
Object
[
manyDay
];
String
[]
xData
=
new
String
[
manyDay
+
1
];
for
(
int
i
=
0
;
i
<=
manyDay
;
i
++)
{
xData
[
i
]
=
TimeUtils
.
getDistanceDate
(-(
manyDay
-
i
),
Calendar
.
DATE
,
TimeUtils
.
DEFAULT_DATE_MD
);
String
[]
xData
=
new
String
[
manyDay
];
Calendar
cal
=
Calendar
.
getInstance
();
//設置默認時間為當前的起止時間
try
{
cal
.
setTime
(
TimeUtils
.
DATE_FORMAT_DATE
.
parse
(
mTvStartTime
.
getText
().
toString
()));
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
//將數據以 時間為key,數據為value存入map
for
(
int
i
=
0
;
i
<
manyDay
;
i
++)
{
xData
[
i
]
=
TimeUtils
.
getBeginDistanceDate
(
cal
,
1
,
Calendar
.
DATE
,
TimeUtils
.
DEFAULT_DATE_MD
);
}
//將數據以時間為key,數據為value存入map
Map
<
String
,
MainBusinessBean
.
DataBean
>
map
=
new
HashMap
<>();
for
(
int
i
=
0
;
i
<
data
.
size
();
i
++)
{
map
.
put
(
data
.
get
(
i
).
getStartingTime
(),
data
.
get
(
i
));
}
//y軸 數據間隔
double
yAxisTickInterval
=
0
;
//第一條線
for
(
int
i
=
0
;
i
<
=
manyDay
;
i
++)
{
for
(
int
i
=
0
;
i
<
manyDay
;
i
++)
{
//通過今年年份+月份+日期,獲取對應的對象
MainBusinessBean
.
DataBean
bean
=
map
.
get
(
TimeUtils
.
getDistanceDate
(
0
,
Calendar
.
YEAR
,
DEFAULT_DATE_Y
)
+
xData
[
i
]);
if
(
bean
!=
null
)
{
...
...
@@ -286,45 +302,75 @@ public class BusinessReportFragment extends BaseFragment<BusinessReportPresenter
}
}
@OnClick
({
R2
.
id
.
tv_start_time
,
R2
.
id
.
iv_time_triangle
})
@OnClick
({
R2
.
id
.
tv_start_time
,
R2
.
id
.
iv_
start_time_triangle
,
R2
.
id
.
tv_end_time
,
R2
.
id
.
iv_end_
time_triangle
})
@Override
public
void
onClick
(
View
v
)
{
if
(
v
.
getId
()
==
R
.
id
.
tv_start_time
||
v
.
getId
()
==
R
.
id
.
iv_time_triangle
)
{
triangleView
.
toggle
();
int
viewId
=
v
.
getId
();
try
{
String
time
=
null
;
Calendar
startTime
=
Calendar
.
getInstance
();
startTime
.
set
(
Calendar
.
DAY_OF_YEAR
,
startTime
.
getActualMinimum
(
Calendar
.
DAY_OF_YEAR
));
//今年第一天
Calendar
endTime
=
Calendar
.
getInstance
();
if
(
viewId
==
R
.
id
.
tv_start_time
||
viewId
==
R
.
id
.
iv_start_time_triangle
)
{
triangleView
.
toggle
();
time
=
mTvStartTime
.
getText
().
toString
();
endTime
.
setTime
(
TimeUtils
.
DATE_FORMAT_DATE
.
parse
(
mTvEndTime
.
getText
().
toString
()));
}
else
if
(
viewId
==
R
.
id
.
tv_end_time
||
viewId
==
R
.
id
.
iv_end_time_triangle
)
{
endTimeTriangleView
.
toggle
();
time
=
mTvEndTime
.
getText
().
toString
();
startTime
.
setTime
(
TimeUtils
.
DATE_FORMAT_DATE
.
parse
(
mTvStartTime
.
getText
().
toString
()));
}
Calendar
cal
=
Calendar
.
getInstance
();
try
{
//設置默認時間為當前的起止時間
cal
.
setTime
(
TimeUtils
.
DATE_FORMAT_DATE
.
parse
(
mTvStartTime
.
getText
().
toString
()
));
cal
.
setTime
(
TimeUtils
.
DATE_FORMAT_DATE
.
parse
(
time
));
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
//打開時間選擇器
TimePickerUtils
.
showReportTimePicker
(
mContext
,
cal
,
(
date
,
v1
)
->
TimePickerUtils
.
showReportTimePicker
(
mContext
,
startTime
,
endTime
,
cal
,
(
date
,
v1
)
->
{
mTvStartTime
.
setText
(
TimeUtils
.
DATE_FORMAT_DATE
.
format
(
date
));
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
date
);
int
month
=
calendar
.
get
(
Calendar
.
MONTH
);
int
day
=
calendar
.
get
(
Calendar
.
DAY_OF_MONTH
);
calendar
.
setTime
(
new
Date
());
//如果不是當前月份,那麼報表最多顯示最近七天
if
(
month
!=
calendar
.
get
(
Calendar
.
MONTH
))
{
manyDay
=
7
;
if
(
viewId
==
R
.
id
.
tv_start_time
||
viewId
==
R
.
id
.
iv_start_time_triangle
)
{
mTvStartTime
.
setText
(
TimeUtils
.
DATE_FORMAT_DATE
.
format
(
date
));
}
else
{
//如果選中的是當前月份,判斷天數是否大於7
if
(
calendar
.
get
(
Calendar
.
DAY_OF_MONTH
)
-
day
>
7
)
{
manyDay
=
7
;
}
else
{
manyDay
=
calendar
.
get
(
Calendar
.
DAY_OF_MONTH
)
-
day
;
if
(
manyDay
<
0
)
{
manyDay
=
0
;
}
}
mTvEndTime
.
setText
(
TimeUtils
.
DATE_FORMAT_DATE
.
format
(
date
));
}
mPresenter
.
getRestaurantAmount
(
GsaCloudApplication
.
getRestaurantId
(
mContext
)
+
""
,
mTvStartTime
.
getText
().
toString
(),
TimeUtils
.
getOldDate
(
1
));
mPresenter
.
getRestaurantBusinessInfo
(
GsaCloudApplication
.
getRestaurantId
(
mContext
)
+
""
,
mTvStartTime
.
getText
().
toString
(),
TimeUtils
.
getOldDate
(
1
));
}).
setOnDismissListener
(
o
->
triangleView
.
toggle
());
// Calendar calendar = Calendar.getInstance();
// calendar.setTime(date);
// int month = calendar.get(Calendar.MONTH);
// int day = calendar.get(Calendar.DAY_OF_MONTH);
// calendar.setTime(new Date());
// //如果不是當前月份,那麼報表最多顯示最近七天
// if (month != calendar.get(Calendar.MONTH)) {
// manyDay = 7;
// } else {
// //如果選中的是當前月份,判斷天數是否大於7
// if (calendar.get(Calendar.DAY_OF_MONTH) - day > 7) {
// manyDay = 7;
// } else {
// manyDay = calendar.get(Calendar.DAY_OF_MONTH) - day;
// if (manyDay < 0) {
// manyDay = 0;
// }
// }
// }
mPresenter
.
getRestaurantAmount
(
GsaCloudApplication
.
getRestaurantId
(
mContext
)
+
""
,
mTvStartTime
.
getText
().
toString
(),
mTvEndTime
.
getText
().
toString
());
mPresenter
.
getRestaurantBusinessInfo
(
GsaCloudApplication
.
getRestaurantId
(
mContext
)
+
""
,
mTvStartTime
.
getText
().
toString
(),
mTvEndTime
.
getText
().
toString
());
}).
setOnDismissListener
(
o
->
{
if
(
triangleView
.
isOpen
())
{
triangleView
.
toggle
();
}
else
if
(
endTimeTriangleView
.
isOpen
())
{
endTimeTriangleView
.
toggle
();
}
});
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
}
}
main-module/src/main/res/layout/fragment_business_report.xml
View file @
05c0b440
...
...
@@ -56,9 +56,9 @@
android:textSize=
"@dimen/sp_10"
/>
<com.gingersoft.gsa.cloud.ui.view.TriangleView
android:id=
"@+id/iv_time_triangle"
android:
layout_margin
Left=
"@dimen/dp_2"
android:layout_width=
"@dimen/dp_
8
"
android:id=
"@+id/iv_
start_
time_triangle"
android:
padding
Left=
"@dimen/dp_2"
android:layout_width=
"@dimen/dp_
10
"
app:trv_direction=
"bottom"
android:layout_height=
"@dimen/dp_5"
/>
...
...
@@ -78,6 +78,13 @@
android:text=
"2020-02-14"
android:textColor=
"#181818"
android:textSize=
"@dimen/sp_10"
/>
<com.gingersoft.gsa.cloud.ui.view.TriangleView
android:id=
"@+id/iv_end_time_triangle"
android:layout_marginLeft=
"@dimen/dp_2"
android:layout_width=
"@dimen/dp_8"
app:trv_direction=
"bottom"
android:layout_height=
"@dimen/dp_5"
/>
</LinearLayout>
<com.gingersoft.gsa.cloud.ui.AAChartCore.AAChartCoreLib.AAChartConfiger.AAChartView
...
...
other_order_mode/src/main/java/com/gingersoft/gsa/other_order_mode/data/model/bean/HistoryOrderBean.kt
View file @
05c0b440
package
com.gingersoft.gsa.other_order_mode.data.model.bean
import
androidx.lifecycle.LiveData
class
HistoryOrderBean
{
/**
* success : true
* sysTime : 1587026350363
* data : [{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)15:30~16:00","PHONE":"18995813316","orderPayType":1,"ORDER_NO":"26201551325454427","STATUS":4,"PAY_AMOUNT":60,"Id":4350992,"CREATE_TIME":"Mar 27, 2020 3:23:45 PM","takeFoodCode":"0036","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)立即","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26200681304157037","STATUS":4,"PAY_AMOUNT":60,"Id":4348789,"CREATE_TIME":"Mar 27, 2020 12:27:21 PM","takeFoodCode":"0035","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)立即","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26200221368356841","STATUS":4,"PAY_AMOUNT":46,"Id":4348785,"CREATE_TIME":"Mar 27, 2020 12:27:07 PM","takeFoodCode":"0034","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:30~13:00","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26201371328853396","STATUS":4,"PAY_AMOUNT":44.9,"Id":4348780,"CREATE_TIME":"Mar 27, 2020 12:26:44 PM","takeFoodCode":"0033","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26203051303752129","STATUS":4,"PAY_AMOUNT":44.9,"Id":4348467,"CREATE_TIME":"Mar 27, 2020 11:47:59 AM","takeFoodCode":"0032","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"嘟嘟嘟1","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"15073379600","orderPayType":1,"ORDER_NO":"26201611370358516","STATUS":4,"PAY_AMOUNT":9999,"Id":4348434,"CREATE_TIME":"Mar 27, 2020 11:42:35 AM","takeFoodCode":"0031","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26201341375950995","STATUS":4,"PAY_AMOUNT":44.9,"Id":4348392,"CREATE_TIME":"Mar 27, 2020 11:35:35 AM","takeFoodCode":"0030","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"嘟嘟嘟1","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"15073379600","orderPayType":1,"ORDER_NO":"26200871312851078","STATUS":4,"PAY_AMOUNT":9999,"Id":4348287,"CREATE_TIME":"Mar 27, 2020 11:18:44 AM","takeFoodCode":"0029","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"嘟嘟嘟1","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"15073379600","orderPayType":1,"ORDER_NO":"26202231360959188","STATUS":4,"PAY_AMOUNT":9999,"Id":4348114,"CREATE_TIME":"Mar 27, 2020 10:43:53 AM","takeFoodCode":"0028","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26200591367856595","STATUS":4,"PAY_AMOUNT":46,"Id":4347838,"CREATE_TIME":"Mar 27, 2020 9:51:13 AM","takeFoodCode":"0027","order_type":7,"RECEIVER":""},{"sumnum":1827}]
*/
private
var
success
:
Boolean
=
false
private
var
sysTime
:
Long
=
0
private
var
data
:
ArrayList
<
DataBean
>?
=
null
fun
isSuccess
():
Boolean
{
return
success
}
fun
setSuccess
(
success
:
Boolean
)
{
this
.
success
=
success
}
fun
getSysTime
():
Long
{
return
sysTime
}
fun
setSysTime
(
sysTime
:
Long
)
{
this
.
sysTime
=
sysTime
}
fun
getData
():
ArrayList
<
DataBean
>?
{
return
data
}
fun
setData
(
data
:
ArrayList
<
DataBean
>)
{
this
.
data
=
data
}
var
success
:
Boolean
=
false
var
sysTime
:
Long
=
0
var
data
:
ArrayList
<
DataBean
>?
=
null
class
DataBean
{
/**
...
...
other_order_mode/src/main/java/com/gingersoft/gsa/other_order_mode/data/model/bean/MessageBean.kt
View file @
05c0b440
package
com.gingersoft.gsa.other_order_mode.data.model.bean
data class
MessageBean
(
val
code
:
String
,
val
errorMsg
:
String
,
val
success
:
Boolean
=
false
,
val
sysTime
:
Long
=
0
,
val
data
:
String
?
=
null
)
\ No newline at end of file
data class
MessageBean
(
val
code
:
String
,
val
errorMsg
:
String
,
val
success
:
Boolean
=
false
,
val
sysTime
:
Long
=
0
,
val
data
:
Any
?
=
null
)
\ No newline at end of file
other_order_mode/src/main/java/com/gingersoft/gsa/other_order_mode/model/viewModel/HistoryOrderViewModel.kt
View file @
05c0b440
...
...
@@ -2,12 +2,14 @@ package com.gingersoft.gsa.other_order_mode.model.viewModel
import
android.content.Context
import
android.util.Log
import
androidx.lifecycle.LiveData
import
androidx.lifecycle.MutableLiveData
import
androidx.lifecycle.ViewModel
import
androidx.lifecycle.viewModelScope
import
com.billy.cc.core.component.CC
import
com.gingersoft.gsa.cloud.base.application.GsaCloudApplication
import
com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage
import
com.gingersoft.gsa.cloud.base.utils.time.TimeUtils
import
com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils
import
com.gingersoft.gsa.cloud.constans.PrintConstans
import
com.gingersoft.gsa.cloud.print.bean.OrderDetails
...
...
@@ -18,8 +20,13 @@ import kotlinx.coroutines.launch
class
HistoryOrderViewModel
(
private
val
historyOrderRepository
:
HistoryOrderRepository
)
:
ViewModel
()
{
var
data
=
MutableLiveData
<
HistoryOrderBean
>()
fun
getHistoryOrderList
(
context
:
Context
,
pageIndex
:
String
,
orderNum
:
String
=
""
,
startDate
:
String
,
endDate
:
String
,
listener
:
(
HistoryOrderBean
?)
->
Unit
)
{
var
historyData
=
MutableLiveData
<
HistoryOrderBean
>()
var
historyTime
=
MutableLiveData
<
String
>(
TimeUtils
.
getOldDate
(
0
))
//按時間查詢
var
status
=
MutableLiveData
(
"4"
)
//按類型查詢
var
searchValue
=
MutableLiveData
(
""
)
//按搜索內容查詢
fun
getHistoryOrderList
(
context
:
Context
,
pageIndex
:
String
,
orderNum
:
String
=
""
,
startDate
:
String
,
endDate
:
String
,
status
:
String
)
{
launch
({
var
phone
=
""
var
orderNumber
=
""
...
...
@@ -29,25 +36,25 @@ class HistoryOrderViewModel(private val historyOrderRepository: HistoryOrderRepo
orderNumber
=
orderNum
}
historyOrderRepository
.
getHistoryOrderList
(
GsaCloudApplication
.
getRestaurantId
(
context
).
toString
(),
"4"
,
startDate
,
endDate
,
pageIndex
,
"10"
,
orderNumber
,
phone
).
apply
{
this
.
getData
()
?.
let
{
historyOrderRepository
.
getHistoryOrderList
(
GsaCloudApplication
.
getRestaurantId
(
context
).
toString
(),
status
,
startDate
,
endDate
,
pageIndex
,
"10"
,
orderNumber
,
phone
).
apply
{
this
.
data
?.
let
{
if
(
it
.
size
>
0
)
{
it
.
removeAt
(
it
.
size
-
1
)
//移除最後一個,最後一個是顯示總條數的
}
if
(
pageIndex
!=
"1"
)
{
data
.
value
!!
.
getData
()
!!
.
addAll
(
it
)
data
.
value
!!
.
setSuccess
(
true
)
if
(
pageIndex
==
"1"
)
{
historyData
.
postValue
(
this
)
}
else
{
historyData
.
value
!!
.
data
!!
.
addAll
(
it
)
historyData
.
postValue
(
historyData
.
value
)
historyData
.
value
!!
.
success
=
true
}
}
if
(
pageIndex
==
"1"
)
{
data
.
value
=
this
}
listener
.
invoke
(
data
.
value
)
}
},
{
//出錯
it
.
printStackTrace
()
listener
.
invok
e
(
null
)
historyData
.
postValu
e
(
null
)
})
}
...
...
other_order_mode/src/main/java/com/gingersoft/gsa/other_order_mode/model/viewModel/PageViewModel.kt
View file @
05c0b440
...
...
@@ -194,7 +194,8 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
dialog
.
dismiss
()
}
},
{
ToastUtils
.
show
(
context
,
"修改失敗"
)
dialog
.
dismiss
()
})
}
hepler
.
getView
<
TextView
>(
R
.
id
.
tv_dialog_cancel
).
setOnClickListener
{
...
...
other_order_mode/src/main/java/com/gingersoft/gsa/other_order_mode/ui/activity/HistoryOrderActivity.kt
View file @
05c0b440
package
com.gingersoft.gsa.other_order_mode.ui.activity
import
android.os.Bundle
import
android.util.Log
import
android.view.View
import
android.widget.TableLayout
import
androidx.lifecycle.ViewModelProvider
import
androidx.recyclerview.widget.LinearLayoutManager
import
androidx.recyclerview.widget.RecyclerView
...
...
@@ -14,9 +16,12 @@ import com.gingersoft.gsa.other_order_mode.R2
import
com.gingersoft.gsa.other_order_mode.model.viewModel.HistoryOrderViewModel
import
com.gingersoft.gsa.other_order_mode.ui.adapter.HistoryOrderAdapter
import
com.gingersoft.gsa.other_order_mode.ui.base.BaseActivity
import
com.gingersoft.gsa.other_order_mode.ui.fragment.HistoryFragment
import
com.gingersoft.gsa.other_order_mode.util.InjectorUtil
import
com.gingersoft.gsa.other_order_mode.util.OtherOrderUtils
import
com.gingersoft.gsa.other_order_mode.util.setState
import
com.google.android.material.tabs.TabLayout
import
com.google.android.material.tabs.TabLayoutMediator
import
com.scwang.smartrefresh.layout.SmartRefreshLayout
import
kotlinx.android.synthetic.main.activity_history_order.*
import
java.text.ParseException
...
...
@@ -25,109 +30,59 @@ import java.util.*
class
HistoryOrderActivity
:
BaseActivity
()
{
private
lateinit
var
mViewModel
:
HistoryOrderViewModel
private
var
mHistoryOrderAdapter
:
HistoryOrderAdapter
?
=
null
private
var
pageIndex
=
1
lateinit
var
refreshLayout
:
SmartRefreshLayout
lateinit
var
rvOrderList
:
RecyclerView
lateinit
var
layoutNoData
:
View
lateinit
var
time
:
String
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
setContentView
(
R
.
layout
.
activity_history_order
)
refreshLayout
=
findViewById
(
R
.
id
.
refresh_layout
)
rvOrderList
=
findViewById
(
R
.
id
.
rv_other_order
)
layoutNoData
=
findViewById
(
R
.
id
.
layout_nodata
)
tv_start_time
.
text
=
TimeUtils
.
getOldDate
(
0
)
tv_end_time
.
text
=
TimeUtils
.
getOldDate
(
0
)
time
=
TimeUtils
.
getOldDate
(
0
)
initAppTop
()
rvOrderList
.
layoutManager
=
LinearLayoutManager
(
this
)
initViewModel
()
getHistoryInfo
()
initSearch
()
initRefresh
()
}
history_tabs
.
addOnTabSelectedListener
(
object
:
TabLayout
.
OnTabSelectedListener
{
override
fun
onTabUnselected
(
tab
:
TabLayout
.
Tab
?)
{
private
fun
getHistoryInfo
(
page
:
Int
=
pageIndex
,
orderNum
:
String
=
""
)
{
showLoading
()
mViewModel
.
getHistoryOrderList
(
this
,
page
.
toString
(),
orderNum
,
time
,
time
)
{
it
->
cancelDialogForLoading
()
it
?.
let
{
it
->
refreshLayout
.
setEnableLoadMore
(
it
.
getData
()
!=
null
)
refreshLayout
.
finishRefresh
()
refreshLayout
.
finishLoadMore
()
if
(
mHistoryOrderAdapter
==
null
)
{
mHistoryOrderAdapter
=
it
.
getData
()
?.
let
{
it1
->
HistoryOrderAdapter
(
this
@HistoryOrderActivity
,
it1
)
}
rvOrderList
.
adapter
=
mHistoryOrderAdapter
mHistoryOrderAdapter
!!
.
setOnItemClickListenter
{
it
->
showLoading
()
mViewModel
.
getOrderInfo
(
it
.
Id
.
toString
())
{
it2
->
cancelDialogForLoading
()
if
(
it2
.
data
!=
null
&&
it2
.
data
!!
.
isNotEmpty
())
{
//顯示彈窗
OtherOrderUtils
.
showOrderDetailsDialog
(
this
@HistoryOrderActivity
,
it2
,
it
.
STATUS
,
it
.
order_type
,
true
)
{
view
,
_
,
_
->
//重印
showLoading
()
mViewModel
.
printOrder
(
this
@HistoryOrderActivity
,
it
){
cancelDialogForLoading
()
if
(
it
){
ToastUtils
.
show
(
this
@HistoryOrderActivity
,
"打印成功"
)
}
else
{
ToastUtils
.
show
(
this
@HistoryOrderActivity
,
"打印失敗"
)
}
}
}
}
else
{
ToastUtils
.
show
(
this
,
"未查詢到訂單信息"
)
}
}
}
}
else
{
mHistoryOrderAdapter
!!
.
data
=
it
.
getData
()
mHistoryOrderAdapter
!!
.
notifyDataSetChanged
()
}
override
fun
onTabSelected
(
tab
:
TabLayout
.
Tab
?)
{
tab
?.
let
{
it
->
mViewModel
.
status
.
postValue
(
when
(
it
.
position
)
{
0
->
"4"
1
->
"6"
else
->
"4"
})
}
}
layoutNoData
.
setState
(
it
?.
getData
()
==
null
||
it
.
getData
()
!!
.
size
<=
0
)
}
override
fun
onTabReselected
(
tab
:
TabLayout
.
Tab
?)
{
}
})
supportFragmentManager
.
beginTransaction
().
add
(
R
.
id
.
content_layout
,
HistoryFragment
.
newInstance
()).
commit
()
}
private
fun
initViewModel
()
{
mViewModel
=
ViewModelProvider
(
this
,
InjectorUtil
.
getHistoryModelFactory
())[
HistoryOrderViewModel
::
class
.
java
]
mViewModel
=
ViewModelProvider
(
this
,
InjectorUtil
.
getHistoryModelFactory
())[
HistoryOrderViewModel
::
class
.
java
].
apply
{
historyTime
.
observe
(
this
@HistoryOrderActivity
,
androidx
.
lifecycle
.
Observer
{
tv_start_time
.
text
=
it
})
}
}
private
fun
initSearch
()
{
iv_search_order
.
setOnClickListener
{
time
=
""
//搜索
if
(
ed_order_num_search
.
text
!=
null
&&
ed_order_num_search
.
text
.
isNotEmpty
())
{
getHistoryInfo
(
1
,
ed_order_num_search
.
text
.
toString
())
mViewModel
.
searchValue
.
postValue
(
ed_order_num_search
.
text
.
toString
())
}
else
{
ToastUtils
.
show
(
this
@HistoryOrderActivity
,
"請輸入手機號或訂單號"
)
}
}
}
private
fun
initRefresh
()
{
//设置 Header 顏色
refreshLayout
.
setPrimaryColorsId
(
R
.
color
.
color_f0
,
R
.
color
.
color_66
)
//下拉刷新,加載更多
refreshLayout
.
setOnRefreshListener
{
pageIndex
=
1
getHistoryInfo
()
}
refreshLayout
.
setOnLoadMoreListener
{
pageIndex
++
getHistoryInfo
()
}
}
private
fun
initAppTop
()
{
qm_other_order_bar
.
setTitle
(
R
.
string
.
history_order
)
qm_other_order_bar
.
addLeftImageButton
(
R
.
drawable
.
icon_return
,
R
.
id
.
iv_left_back
).
setOnClickListener
{
finish
()
}
...
...
@@ -146,10 +101,11 @@ class HistoryOrderActivity : BaseActivity() {
e
.
printStackTrace
()
}
TimePickerUtils
.
showReportTimePicker
(
this
@HistoryOrderActivity
,
cal
)
{
date
,
v
->
tv_start_time
.
text
=
TimeUtils
.
DATE_FORMAT_DATE
.
format
(
date
)
time
=
TimeUtils
.
DATE_FORMAT_DATE
.
format
(
date
)
pageIndex
=
1
getHistoryInfo
()
// tv_start_time.text = TimeUtils.DATE_FORMAT_DATE.format(date)
// time = TimeUtils.DATE_FORMAT_DATE.format(date)
mViewModel
.
historyTime
.
postValue
(
TimeUtils
.
DATE_FORMAT_DATE
.
format
(
date
))
// pageIndex = 1
// getHistoryInfo()
}.
setOnDismissListener
{
iv_start_time_triangle
.
toggle
()
}
...
...
other_order_mode/src/main/java/com/gingersoft/gsa/other_order_mode/ui/fragment/HistoryFragment.kt
0 → 100644
View file @
05c0b440
package
com.gingersoft.gsa.other_order_mode.ui.fragment
import
android.os.Bundle
import
android.util.Log
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
androidx.lifecycle.Observer
import
androidx.lifecycle.ViewModelProvider
import
androidx.recyclerview.widget.LinearLayoutManager
import
com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils
import
com.gingersoft.gsa.other_order_mode.R
import
com.gingersoft.gsa.other_order_mode.model.viewModel.HistoryOrderViewModel
import
com.gingersoft.gsa.other_order_mode.ui.adapter.HistoryOrderAdapter
import
com.gingersoft.gsa.other_order_mode.ui.base.BaseFragment
import
com.gingersoft.gsa.other_order_mode.util.InjectorUtil
import
com.gingersoft.gsa.other_order_mode.util.OtherOrderUtils
import
com.gingersoft.gsa.other_order_mode.util.setState
import
kotlinx.android.synthetic.main.fragment_other_order.*
class
HistoryFragment
:
BaseFragment
()
{
companion
object
{
fun
newInstance
()
=
HistoryFragment
()
}
private
lateinit
var
viewModel
:
HistoryOrderViewModel
private
var
mHistoryOrderAdapter
:
HistoryOrderAdapter
?
=
null
private
var
pageIndex
=
1
override
fun
onCreateView
(
inflater
:
LayoutInflater
,
container
:
ViewGroup
?,
savedInstanceState
:
Bundle
?):
View
?
{
return
inflater
.
inflate
(
R
.
layout
.
fragment_other_order
,
container
,
false
)
}
override
fun
onActivityCreated
(
savedInstanceState
:
Bundle
?)
{
super
.
onActivityCreated
(
savedInstanceState
)
viewModel
=
ViewModelProvider
(
activity
!!
.
viewModelStore
,
InjectorUtil
.
getHistoryModelFactory
())[
HistoryOrderViewModel
::
class
.
java
].
apply
{
historyData
.
observe
(
viewLifecycleOwner
,
Observer
{
it
->
cancelDialogForLoading
()
refresh_layout
.
finishRefresh
()
refresh_layout
.
finishLoadMore
()
it
?.
let
{
_
->
refresh_layout
.
setEnableLoadMore
((
it
.
data
!=
null
&&
it
.
data
!!
.
size
>
0
))
if
(
mHistoryOrderAdapter
==
null
)
{
mHistoryOrderAdapter
=
it
.
data
.
let
{
it1
->
context
?.
let
{
it2
->
HistoryOrderAdapter
(
it2
,
it1
)
}
}
rv_other_order
.
layoutManager
=
LinearLayoutManager
(
context
)
rv_other_order
.
adapter
=
mHistoryOrderAdapter
mHistoryOrderAdapter
!!
.
setOnItemClickListenter
{
it
->
showLoading
()
viewModel
.
getOrderInfo
(
it
.
Id
.
toString
())
{
it2
->
cancelDialogForLoading
()
if
(
it2
.
data
!=
null
&&
it2
.
data
!!
.
isNotEmpty
())
{
//顯示彈窗
context
?.
let
{
context
->
OtherOrderUtils
.
showOrderDetailsDialog
(
context
,
it2
,
it
.
STATUS
,
it
.
order_type
,
true
)
{
view
,
_
,
_
->
//重印
showLoading
()
viewModel
.
printOrder
(
context
,
it
)
{
cancelDialogForLoading
()
if
(
it
)
{
ToastUtils
.
show
(
context
,
"打印成功"
)
}
else
{
ToastUtils
.
show
(
context
,
"打印失敗"
)
}
}
}
}
}
else
{
ToastUtils
.
show
(
context
,
"未查詢到訂單信息"
)
}
}
}
}
else
{
mHistoryOrderAdapter
!!
.
data
=
it
.
data
mHistoryOrderAdapter
!!
.
notifyDataSetChanged
()
}
}
layout_nodata
.
setState
(
it
?.
data
==
null
||
it
.
data
!!
.
size
<=
0
)
})
historyTime
.
observe
(
viewLifecycleOwner
,
Observer
{
//當時間發生變化,請求數據
pageIndex
=
1
getHistoryInfo
()
})
status
.
observe
(
viewLifecycleOwner
,
Observer
{
//用戶切換到已取消頁面或切換到已完成頁面
pageIndex
=
1
getHistoryInfo
()
})
searchValue
.
observe
(
viewLifecycleOwner
,
Observer
{
pageIndex
=
1
getHistoryInfo
()
})
}
refresh_layout
.
setPrimaryColorsId
(
R
.
color
.
color_f0
,
R
.
color
.
color_66
)
refresh_layout
.
setEnableRefresh
(
false
)
refresh_layout
.
setOnLoadMoreListener
{
pageIndex
++
getHistoryInfo
()
}
}
private
fun
getHistoryInfo
(
page
:
Int
=
pageIndex
)
{
viewModel
.
getHistoryOrderList
(
activity
!!
,
page
.
toString
(),
viewModel
.
searchValue
.
value
!!
,
viewModel
.
historyTime
.
value
!!
,
viewModel
.
historyTime
.
value
!!
,
viewModel
.
status
.
value
!!
)
}
}
other_order_mode/src/main/java/com/gingersoft/gsa/other_order_mode/ui/fragment/HistoryViewModel.kt
0 → 100644
View file @
05c0b440
package
com.gingersoft.gsa.other_order_mode.ui.fragment
import
androidx.lifecycle.ViewModel
class
HistoryViewModel
:
ViewModel
()
{
// TODO: Implement the ViewModel
}
other_order_mode/src/main/res/layout/activity_history_order.xml
View file @
05c0b440
...
...
@@ -85,9 +85,9 @@
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/dp_10"
android:text=
"至"
android:visibility=
"gone"
android:textColor=
"@color/theme_333_color"
android:textSize=
"@dimen/dp_14"
android:visibility=
"gone"
app:layout_constraintBottom_toBottomOf=
"@id/iv_start_time_triangle"
app:layout_constraintLeft_toRightOf=
"@id/iv_start_time_triangle"
app:layout_constraintTop_toTopOf=
"@id/iv_start_time_triangle"
/>
...
...
@@ -100,8 +100,8 @@
android:layout_marginLeft=
"@dimen/dp_10"
android:onClick=
"onClickListener"
android:textColor=
"@color/theme_333_color"
android:visibility=
"gone"
android:textSize=
"@dimen/dp_14"
android:visibility=
"gone"
app:layout_constraintBottom_toBottomOf=
"@id/tv_to"
app:layout_constraintLeft_toRightOf=
"@id/tv_to"
app:layout_constraintTop_toTopOf=
"@id/tv_to"
/>
...
...
@@ -119,7 +119,33 @@
app:trv_direction=
"bottom"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
<com.google.android.material.tabs.TabLayout
android:id=
"@+id/history_tabs"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/white"
app:tabPaddingEnd=
"-1dp"
app:tabPaddingStart=
"-1dp"
>
<com.google.android.material.tabs.TabItem
android:id=
"@+id/tabItem_completed"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"已完成"
/>
<com.google.android.material.tabs.TabItem
android:id=
"@+id/tabItem_cancelled"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"已取消"
/>
</com.google.android.material.tabs.TabLayout>
</com.google.android.material.appbar.AppBarLayout>
<include
layout=
"@layout/fragment_other_order"
/>
<FrameLayout
android:id=
"@+id/content_layout"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
</LinearLayout>
\ No newline at end of file
other_order_mode/src/main/res/layout/history_fragment.xml
0 → 100644
View file @
05c0b440
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/color_f0"
android:orientation=
"vertical"
tools:context=
".ui.activity.HistoryOrderActivity"
>
<!-- <include layout="@layout/fragment_other_order" />-->
<com.scwang.smartrefresh.layout.SmartRefreshLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:id=
"@+id/refresh_layout"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_other_order"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
<include
android:id=
"@+id/layout_nodata"
layout=
"@layout/layout_no_data"
/>
</FrameLayout>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
</LinearLayout>
\ No newline at end of file
other_order_mode/src/main/res/layout/update_delivery_fragment.xml
View file @
05c0b440
...
...
@@ -38,8 +38,8 @@
style=
"@style/otherOrderInfoDialogTextStyle"
android:layout_width=
"wrap_content"
android:layout_height=
"@dimen/dp_30"
android:minWidth=
"@dimen/dp_
5
0"
android:background=
"@drawable/shape_
black_border
"
android:minWidth=
"@dimen/dp_
8
0"
android:background=
"@drawable/shape_
white_search_bg
"
android:gravity=
"right|center_vertical"
android:paddingLeft=
"@dimen/dp_10"
android:paddingRight=
"@dimen/dp_10"
...
...
@@ -50,20 +50,18 @@
style=
"@style/otherOrderInfoDialogTextStyle"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/dp_10"
android:layout_marginRight=
"@dimen/dp_10"
android:text=
"——"
/>
<EditText
android:id=
"@+id/et_max_delivery_fee"
style=
"@style/otherOrderInfoDialogTextStyle"
android:layout_width=
"wrap_content"
android:minWidth=
"@dimen/dp_
5
0"
android:minWidth=
"@dimen/dp_
8
0"
android:layout_height=
"@dimen/dp_30"
android:layout_marginRight=
"@dimen/dp_20"
android:paddingLeft=
"@dimen/dp_10"
android:paddingRight=
"@dimen/dp_10"
android:background=
"@drawable/shape_
black_border
"
android:background=
"@drawable/shape_
white_search_bg
"
android:gravity=
"right|center_vertical"
android:inputType=
"numberDecimal"
android:maxLines=
"1"
/>
...
...
@@ -217,8 +215,9 @@
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"
@dimen/dp_50
"
android:layout_height=
"
wrap_content
"
android:layout_marginTop=
"@dimen/dp_10"
android:minHeight=
"@dimen/dp_50"
android:background=
"@color/white"
android:gravity=
"center_vertical"
android:paddingLeft=
"@dimen/dp_10"
>
...
...
@@ -233,7 +232,8 @@
android:id=
"@+id/ed_desc"
style=
"@style/otherOrderInfoDialogTextStyle"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/dp_30"
android:layout_height=
"wrap_content"
android:minHeight=
"@dimen/dp_30"
android:background=
"@color/trans"
android:gravity=
"right|center_vertical"
android:paddingRight=
"@dimen/dp_20"
/>
...
...
print-module/src/main/java/com/joe/print/mvp/print/IpPrintMaker.java
View file @
05c0b440
...
...
@@ -32,6 +32,13 @@ public class IpPrintMaker implements PrintDataMaker {
this
.
width
=
width
;
this
.
bitmaps
=
bitmaps
;
}
public
IpPrintMaker
(
Context
context
,
int
width
,
Bitmap
bitmap
)
{
this
.
mContext
=
context
;
this
.
width
=
width
;
this
.
bitmaps
=
new
ArrayList
<>();
this
.
bitmaps
.
add
(
bitmap
);
}
@Override
public
List
<
byte
[]>
getPrintData
(
int
type
)
{
...
...
print-module/src/main/java/com/joe/print/mvp/print/PrintBill.java
View file @
05c0b440
...
...
@@ -42,6 +42,11 @@ public class PrintBill extends PrinterRoot {
return
bitmapMaps
;
}
@Override
public
int
getPrintCount
(
Context
context
)
{
return
1
;
}
/**
* 獲取"結賬單"圖片
...
...
print-module/src/main/java/com/joe/print/mvp/print/PrintCleanMachine.java
View file @
05c0b440
...
...
@@ -25,6 +25,11 @@ public class PrintCleanMachine extends PrinterRoot {
return
bitmapMaps
;
}
@Override
public
int
getPrintCount
(
Context
context
)
{
return
1
;
}
/**
* 獲取"清機報表"圖片
...
...
print-module/src/main/java/com/joe/print/mvp/print/PrintKitchen.java
View file @
05c0b440
...
...
@@ -125,6 +125,11 @@ public class PrintKitchen extends PrinterRoot {
return
bitmapMaps
;
}
@Override
public
int
getPrintCount
(
Context
context
)
{
return
1
;
}
private
void
addToMap
(
Map
<
String
,
List
<
OrderDetail
>>
foodMaps
,
OrderDetail
food
)
{
if
(
foodMaps
.
get
(
food
.
getPrintseting
())
!=
null
)
{
Objects
.
requireNonNull
(
foodMaps
.
get
(
food
.
getPrintseting
())).
add
(
food
);
...
...
print-module/src/main/java/com/joe/print/mvp/print/PrintOtherOrder.java
View file @
05c0b440
...
...
@@ -27,7 +27,6 @@ import com.joe.print.R;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
...
...
@@ -38,19 +37,6 @@ public class PrintOtherOrder extends PrinterRoot {
@Override
public
Map
<
String
,
List
<
Bitmap
>>
getPrintBitmap
(
Context
mContext
)
{
OrderDetails
.
DataBean
dataBean
=
MyOrderManage
.
getDataBean
();
ExpandInfoDaoUtils
expandInfoDaoUtils
=
new
ExpandInfoDaoUtils
(
mContext
);
List
<
ExpandInfo
>
expandInfos
=
expandInfoDaoUtils
.
queryAllExpandInfo
();
int
printCount
=
1
;
if
(
expandInfos
!=
null
)
{
for
(
ExpandInfo
expandInfo
:
expandInfos
)
{
if
(
expandInfo
.
getSettingName
().
equals
(
ExpandConstant
.
DeliveryPrintCount
))
{
printCount
=
expandInfo
.
getValueInt
();
}
}
}
if
(
dataBean
!=
null
)
{
Map
<
String
,
List
<
Bitmap
>>
bitmapMaps
=
new
HashMap
<>();
//廚房單,可能會有多個IP打印
...
...
@@ -145,13 +131,27 @@ public class PrintOtherOrder extends PrinterRoot {
List
<
Bitmap
>
bitmaps
=
new
ArrayList
<>();
Bitmap
bitmap
=
initPrintView
(
mContext
,
dataBean
);
bitmaps
.
add
(
bitmap
);
merge2ResultMap
(
bitmapMaps
,
""
,
bitmaps
);
return
bitmapMaps
;
}
return
null
;
}
@Override
public
int
getPrintCount
(
Context
context
)
{
ExpandInfoDaoUtils
expandInfoDaoUtils
=
new
ExpandInfoDaoUtils
(
context
);
List
<
ExpandInfo
>
expandInfos
=
expandInfoDaoUtils
.
queryAllExpandInfo
();
int
printCount
=
1
;
if
(
expandInfos
!=
null
)
{
for
(
ExpandInfo
expandInfo
:
expandInfos
)
{
if
(
expandInfo
.
getSettingName
().
equals
(
ExpandConstant
.
DeliveryPrintCount
))
{
printCount
=
expandInfo
.
getValueInt
();
}
}
}
return
printCount
;
}
private
void
addCountBitmap
(
List
<
Bitmap
>
bitmaps
,
int
count
,
Bitmap
bitmap
)
{
for
(
int
i
=
0
;
i
<
count
;
i
++)
{
bitmaps
.
add
(
bitmap
);
...
...
print-module/src/main/java/com/joe/print/mvp/print/PrintPrjKitchen.java
View file @
05c0b440
...
...
@@ -55,6 +55,11 @@ public class PrintPrjKitchen extends PrinterRoot {
return
bitmapMaps
;
}
@Override
public
int
getPrintCount
(
Context
context
)
{
return
1
;
}
/**
* 獲取"廚房單"圖片
*
...
...
print-module/src/main/java/com/joe/print/mvp/print/PrintServe.java
View file @
05c0b440
...
...
@@ -40,6 +40,11 @@ public class PrintServe extends PrinterRoot {
return
bitmapMaps
;
}
@Override
public
int
getPrintCount
(
Context
context
)
{
return
1
;
}
/**
* 獲取"印單"圖片
...
...
print-module/src/main/java/com/joe/print/mvp/print/PrintSlip.java
View file @
05c0b440
...
...
@@ -50,6 +50,11 @@ public class PrintSlip extends PrinterRoot {
return
bitmapMaps
;
}
@Override
public
int
getPrintCount
(
Context
context
)
{
return
1
;
}
/**
* 獲取"印單"圖片
*
...
...
print-module/src/main/java/com/joe/print/mvp/print/PrintTest.java
View file @
05c0b440
...
...
@@ -27,6 +27,11 @@ public class PrintTest extends PrinterRoot {
return
bitmapMaps
;
}
@Override
public
int
getPrintCount
(
Context
context
)
{
return
1
;
}
/**
* 獲取測試打印bitmap
...
...
print-module/src/main/java/com/joe/print/mvp/print/PrinterRoot.java
View file @
05c0b440
...
...
@@ -69,6 +69,8 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
private
PrintListener
printListener
;
private
Map
<
String
,
List
<
Bitmap
>>
listMap
;
private
int
printCount
=
1
;
public
static
PrinterRoot
getPrinterByType
(
int
type
)
{
if
(
type
==
PRINT_TEST
)
{
return
new
PrintTest
();
...
...
@@ -117,58 +119,24 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
resultMap
.
put
(
key2
,
value
);
}
}
if
(
resultMap
.
size
()
==
0
)
{
//
resultMap.put(key2, value);
if
(
resultMap
.
size
()
==
0
)
{
resultMap
.
put
(
key2
,
value
);
}
return
resultMap
;
}
public
static
<
E
,
T
>
Map
<
E
,
T
>
deepCopy
(
Map
<
E
,
T
>
src
)
{
try
{
ByteArrayOutputStream
byteOut
=
new
ByteArrayOutputStream
();
ObjectOutputStream
out
=
new
ObjectOutputStream
(
byteOut
);
out
.
writeObject
(
src
);
ByteArrayInputStream
byteIn
=
new
ByteArrayInputStream
(
byteOut
.
toByteArray
());
ObjectInputStream
in
=
new
ObjectInputStream
(
byteIn
);
@SuppressWarnings
(
"unchecked"
)
Map
<
E
,
T
>
dest
=
(
Map
<
E
,
T
>
)
in
.
readObject
();
return
dest
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
new
HashMap
<
E
,
T
>();
}
}
@SuppressWarnings
(
"unchecked"
)
public
static
<
E
,
T
>
Map
<
E
,
T
>
deepClone
(
Map
<
E
,
T
>
obj
){
T
clonedObj
=
null
;
try
{
ByteArrayOutputStream
baos
=
new
ByteArrayOutputStream
();
ObjectOutputStream
oos
=
new
ObjectOutputStream
(
baos
);
oos
.
writeObject
(
obj
);
oos
.
close
();
ByteArrayInputStream
bais
=
new
ByteArrayInputStream
(
baos
.
toByteArray
());
ObjectInputStream
ois
=
new
ObjectInputStream
(
bais
);
clonedObj
=
(
T
)
ois
.
readObject
();
ois
.
close
();
}
catch
(
Exception
e
){
e
.
printStackTrace
();
}
return
(
Map
)
clonedObj
;
}
/**
* @param mContext
* @return key為打印位置,值為圖片集合的map
*/
public
abstract
Map
<
String
,
List
<
Bitmap
>>
getPrintBitmap
(
Context
mContext
);
public
abstract
int
getPrintCount
(
Context
context
);
public
void
print
(
List
<
PrinterDeviceBean
>
deviceBeans
)
{
listMap
=
getPrintBitmap
(
mContext
);
printSize
=
listMap
.
size
();
printCount
=
getPrintCount
(
mContext
);
if
(
printSize
<=
0
)
{
printListener
.
printFile
();
return
;
...
...
@@ -206,14 +174,16 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
return
;
}
String
model
=
Build
.
MODEL
;
if
(
GsaCloudApplication
.
mV2
.
contains
(
model
))
{
sunmiPrint
(
bitmaps
,
listener
);
}
else
if
(
GsaCloudApplication
.
mN5
.
contains
(
model
))
{
//N5打印
n5Print
(
bitmaps
,
listener
);
}
else
{
ToastUtils
.
show
(
mContext
,
"暫不支持本機型打印"
);
listener
.
printFile
();
for
(
int
i
=
0
;
i
<
printCount
;
i
++)
{
if
(
GsaCloudApplication
.
mV2
.
contains
(
model
))
{
sunmiPrint
(
bitmaps
,
listener
);
}
else
if
(
GsaCloudApplication
.
mN5
.
contains
(
model
))
{
//N5打印
n5Print
(
bitmaps
,
listener
);
}
else
{
ToastUtils
.
show
(
mContext
,
"暫不支持本機型打印"
);
listener
.
printFile
();
}
}
}
...
...
@@ -507,14 +477,18 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
PrintExecutor
executor
=
new
PrintExecutor
(
printerDeviceBean
,
paperType
);
executor
.
setOnStateChangedListener
(
stateChangedListener
);
executor
.
setOnPrintResultListener
(
resultListener
);
List
<
Bitmap
>
zoomBitmaps
=
new
ArrayList
<>();
//
List<Bitmap> zoomBitmaps = new ArrayList<>();
if
(
bitmaps
!=
null
)
{
for
(
int
i
=
0
;
i
<
bitmaps
.
size
();
i
++)
{
zoomBitmaps
.
add
(
ImageUtils
.
zoomDrawable
(
bitmaps
.
get
(
i
),
printWidth
));
for
(
int
j
=
0
;
j
<
printCount
;
j
++)
{
for
(
int
i
=
0
;
i
<
bitmaps
.
size
();
i
++)
{
// zoomBitmaps.add(ImageUtils.zoomDrawable(bitmaps.get(i), printWidth));
IpPrintMaker
maker
=
new
IpPrintMaker
(
mContext
,
printWidth
,
ImageUtils
.
zoomDrawable
(
bitmaps
.
get
(
i
),
printWidth
));
executor
.
doPrinterRequestAsync
(
maker
);
}
}
}
IpPrintMaker
maker
=
new
IpPrintMaker
(
mContext
,
printWidth
,
zoomBitmaps
);
executor
.
doPrinterRequestAsync
(
maker
);
//
IpPrintMaker maker = new IpPrintMaker(mContext, printWidth, zoomBitmaps);
//
executor.doPrinterRequestAsync(maker);
}
/**
...
...
@@ -537,18 +511,24 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
public
void
onResult
(
int
errorCode
,
PrinterDeviceBean
printerDeviceBean
)
{
switch
(
errorCode
)
{
case
PrintSocketHolder
.
ERROR_0
:
Log
.
e
(
"eee"
,
"打印成功"
);
cutPrintSize
();
break
;
case
PrintSocketHolder
.
ERROR_1
:
Log
.
e
(
"eee"
,
"生成測試頁面數據失敗"
);
break
;
case
PrintSocketHolder
.
ERROR_2
:
Log
.
e
(
"eee"
,
"連接打印機失敗"
);
case
PrintSocketHolder
.
ERROR_3
:
Log
.
e
(
"eee"
,
"獲取輸出流失敗"
);
printerFileDevices
.
add
(
printerDeviceBean
);
cutPrintSize
();
break
;
case
PrintSocketHolder
.
ERROR_4
:
Log
.
e
(
"eee"
,
"寫入測試頁面數據失敗"
);
break
;
case
PrintSocketHolder
.
ERROR_5
:
Log
.
e
(
"eee"
,
"必要的參數不能為空"
);
break
;
}
setPrintState
(
errorCode
);
...
...
@@ -563,6 +543,22 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
if
(
printListener
!=
null
)
{
printListener
.
printStateChanged
(
state
);
}
switch
(
state
)
{
case
PrintSocketHolder
.
STATE_0
:
Log
.
e
(
"eee"
,
"生成測試頁數據"
);
case
PrintSocketHolder
.
STATE_1
:
Log
.
e
(
"eee"
,
"開始創建連接"
);
break
;
case
PrintSocketHolder
.
STATE_2
:
Log
.
e
(
"eee"
,
"創建連接成功,開始發送數據"
);
break
;
case
PrintSocketHolder
.
STATE_3
:
Log
.
e
(
"eee"
,
"開始寫入數據"
);
break
;
case
PrintSocketHolder
.
STATE_4
:
Log
.
e
(
"eee"
,
"關閉中"
);
break
;
}
}
private
void
cutPrintSize
()
{
...
...
print-module/src/main/java/com/joe/print/mvp/ui/activity/PrintActivity.java
View file @
05c0b440
...
...
@@ -185,43 +185,43 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
String
tip
=
"加載中..."
;
switch
(
state
)
{
case
PrintSocketHolder
.
ERROR_0
:
//
Log.e("eee", "打印成功");
Log
.
e
(
"eee"
,
"打印成功"
);
tip
=
"打印成功"
;
break
;
case
PrintSocketHolder
.
ERROR_1
:
//
Log.e("eee", "生成測試頁面數據失敗");
Log
.
e
(
"eee"
,
"生成測試頁面數據失敗"
);
tip
=
"生成打印數據失敗"
;
break
;
case
PrintSocketHolder
.
ERROR_2
:
// Log.e("eee", "連接打印機失敗" + System.currentTimeMillis()
);
Log
.
e
(
"eee"
,
"連接打印機失敗"
);
case
PrintSocketHolder
.
ERROR_3
:
//
Log.e("eee", "獲取輸出流失敗");
Log
.
e
(
"eee"
,
"獲取輸出流失敗"
);
tip
=
"連接打印機失敗"
;
break
;
case
PrintSocketHolder
.
ERROR_4
:
//
Log.e("eee", "寫入測試頁面數據失敗");
Log
.
e
(
"eee"
,
"寫入測試頁面數據失敗"
);
tip
=
"寫入測試頁面數據失敗"
;
break
;
case
PrintSocketHolder
.
ERROR_5
:
//
Log.e("eee", "必要的參數不能為空");
Log
.
e
(
"eee"
,
"必要的參數不能為空"
);
tip
=
"必要的參數不能為空"
;
break
;
case
PrintSocketHolder
.
STATE_0
:
//
Log.e("eee", "生成測試頁數據");
Log
.
e
(
"eee"
,
"生成測試頁數據"
);
case
PrintSocketHolder
.
STATE_1
:
// Log.e("eee", "開始創建連接");
tip
=
"開始創建連接"
;
break
;
case
PrintSocketHolder
.
STATE_2
:
//
Log.e("eee", "創建連接成功,開始發送數據");
Log
.
e
(
"eee"
,
"創建連接成功,開始發送數據"
);
tip
=
"創建連接成功,開始發送數據"
;
break
;
case
PrintSocketHolder
.
STATE_3
:
//
Log.e("eee", "開始寫入數據");
Log
.
e
(
"eee"
,
"開始寫入數據"
);
tip
=
"開始寫入數據"
;
break
;
case
PrintSocketHolder
.
STATE_4
:
//
Log.e("eee", "關閉中");
Log
.
e
(
"eee"
,
"關閉中"
);
tip
=
"關閉中"
;
break
;
case
DIMISS_LOADING:
...
...
print-module/src/main/res/layout/print_other_order_food_item.xml
0 → 100644
View file @
05c0b440
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
android:paddingTop=
"@dimen/dp_6"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/layout_food_name"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:orientation=
"horizontal"
app:layout_constraintHorizontal_weight=
"0.5"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintRight_toLeftOf=
"@id/tv_food_number"
app:layout_constraintTop_toTopOf=
"parent"
>
<ImageView
android:id=
"@+id/iv_food_item_next"
android:layout_width=
"wrap_content"
android:layout_height=
"0dp"
android:src=
"@drawable/item_next"
android:visibility=
"gone"
app:layout_constraintBottom_toBottomOf=
"@id/tv_food_name"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintTop_toTopOf=
"@id/tv_food_name"
/>
<TextView
android:id=
"@+id/tv_food_name"
style=
"@style/print_other_order_food_style"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
app:layout_constraintLeft_toRightOf=
"@id/iv_food_item_next"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id=
"@+id/tv_food_number"
style=
"@style/print_other_order_food_style"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/dp_10"
android:gravity=
"right"
app:layout_constraintHorizontal_weight=
"0.2"
app:layout_constraintLeft_toRightOf=
"@id/layout_food_name"
app:layout_constraintRight_toLeftOf=
"@id/tv_food_price"
app:layout_constraintTop_toTopOf=
"@id/layout_food_name"
/>
<TextView
android:id=
"@+id/tv_food_price"
style=
"@style/print_other_order_food_style"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/dp_10"
android:gravity=
"right"
android:visibility=
"invisible"
app:layout_constraintHorizontal_weight=
"0.3"
app:layout_constraintLeft_toRightOf=
"@id/tv_food_number"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintTop_toTopOf=
"@id/layout_food_name"
/>
<androidx.constraintlayout.widget.Barrier
android:id=
"@+id/barrier"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
app:barrierDirection=
"bottom"
android:orientation=
"horizontal"
app:constraint_referenced_ids=
"layout_food_name,tv_food_number,tv_food_price"
/>
<LinearLayout
android:id=
"@+id/layout_food_content"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
app:layout_constraintTop_toBottomOf=
"@id/barrier"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment