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
31f65a09
Commit
31f65a09
authored
Feb 26, 2021
by
Wyh
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1、打印prj帶*號問題 2、處理打印結果回調BUG 3、優化PRJ查詢 4、優化PrjBean
parent
d315d8ac
Show whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
530 additions
and
267 deletions
+530
-267
component-delivery-pick/src/main/AndroidManifest.xml
+0
-1
component-delivery-pick/src/main/java/com/gingersoft/gsa/delivery_pick_mode/mvp/bean/PrjQueryBean.java
+1
-1
component-delivery-pick/src/main/java/com/gingersoft/gsa/delivery_pick_mode/mvp/ui/activity/PrjQueryActivity.java
+16
-13
component-delivery-pick/src/main/java/com/gingersoft/gsa/delivery_pick_mode/mvp/ui/adapter/PrjStateAdapter.java
+21
-12
component-delivery-pick/src/main/java/com/gingersoft/gsa/delivery_pick_mode/ui/activity/OrderDetailsActivity.kt
+5
-5
component-delivery-pick/src/main/res/layout/activity_order_details.xml
+9
-5
component-delivery-pick/src/main/res/layout/activity_prj_query.xml
+1
-2
component-delivery-pick/src/main/res/layout/item_prj_state.xml
+32
-18
component-print/src/main/java/com/joe/print/mvp/model/bean/PrintInfoBean.java
+4
-34
component-print/src/main/java/com/joe/print/mvp/print/EpsonPrint.java
+63
-39
component-print/src/main/java/com/joe/print/mvp/print/PrintPrjKitchen.java
+22
-22
component-print/src/main/java/com/joe/print/mvp/print/PrinterRoot.java
+15
-3
component-print/src/main/java/com/joe/print/mvp/print/maker/PrjPrintMaker.java
+3
-2
component-print/src/main/java/com/joe/print/mvp/print/service/PrjService.java
+267
-59
component-print/src/main/java/com/joe/print/mvp/ui/activity/PrintActivity.java
+21
-7
component-print/src/main/java/com/joe/print/mvp/ui/adapter/KitChenPrjPrintFoodAdapter.java
+3
-3
component-print/src/main/java/com/joe/print/mvp/ui/view/KitChenPrjFoodView.java
+5
-5
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/presenter/OrderDetailsPresenter.java
+3
-2
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/order/OrderDetailsFragment.java
+1
-1
library-common/src/main/java/com/gingersoft/gsa/cloud/app/GsaCloudApplication.java
+0
-8
library-print/src/main/java/com/gingersoft/gsa/cloud/print/PrintExecutor.java
+2
-7
library-print/src/main/java/com/gingersoft/gsa/cloud/print/bean/PrjBean.java
+17
-18
library-print/src/main/java/com/gingersoft/gsa/cloud/print/impl/OnPrjPrintResultListener.java
+19
-0
No files found.
component-delivery-pick/src/main/AndroidManifest.xml
View file @
31f65a09
...
...
@@ -36,7 +36,6 @@
<activity
android:name=
".mvp.ui.activity.SendOrderActivity"
android:screenOrientation=
"portrait"
/>
<meta-data
android:name=
"com.gingersoft.gsa.cloud.common.config.globalconfig.GlobalConfiguration"
android:value=
"ConfigModule"
/>
...
...
component-delivery-pick/src/main/java/com/gingersoft/gsa/delivery_pick_mode/mvp/bean/PrjQueryBean.java
View file @
31f65a09
...
...
@@ -16,5 +16,5 @@ public class PrjQueryBean {
private
boolean
success
;
private
long
sysTime
;
private
String
errMsg
;
private
List
<
PrjBean
.
DataBean
.
Bean
>
data
;
private
List
<
PrjBean
>
data
;
}
component-delivery-pick/src/main/java/com/gingersoft/gsa/delivery_pick_mode/mvp/ui/activity/PrjQueryActivity.java
View file @
31f65a09
...
...
@@ -19,6 +19,7 @@ import androidx.recyclerview.widget.RecyclerView;
import
com.billy.cc.core.component.CC
;
import
com.gingersoft.gsa.cloud.common.constans.AppConstans
;
import
com.gingersoft.gsa.cloud.common.constans.PrintConstans
;
import
com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils
;
import
com.gingersoft.gsa.cloud.print.bean.PrjBean
;
import
com.gingersoft.gsa.cloud.print.bean.UpdateBean
;
import
com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils
;
...
...
@@ -68,6 +69,8 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements
TextView
tvPrjRecordOrderId
;
@BindView
(
R2
.
id
.
rv_prj_record_list
)
RecyclerView
rvPrjRecordList
;
private
PrjStateAdapter
prjStateAdapter
;
@BindView
(
R2
.
id
.
layout_edit_prj_order_number
)
ConstraintLayout
editLayout
;
...
...
@@ -100,8 +103,9 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements
public
void
initData
(
@Nullable
Bundle
savedInstanceState
)
{
String
orderId
=
getIntent
().
getStringExtra
(
ORDERID_EXTRA_NAME
);
if
(
TextUtil
.
isNotEmptyOrNullOrUndefined
(
orderId
))
{
layoutPrjOrderNumber
.
setVisibility
(
View
.
VISIBLE
);
tvPrjRecordOrderId
.
setText
(
orderId
);
// layoutPrjOrderNumber.setVisibility(View.VISIBLE);
// tvPrjRecordOrderId.setText(orderId);
edOrderNumber
.
setText
(
orderId
);
getKitchenPrintRecord
();
}
else
{
editLayout
.
setVisibility
(
View
.
VISIBLE
);
...
...
@@ -192,7 +196,6 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements
}
}
private
PrjStateAdapter
prjStateAdapter
;
@Override
public
void
loadPrjInfo
(
PrjQueryBean
prjQueryBean
)
{
...
...
@@ -203,7 +206,7 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements
prjStateAdapter
.
setOnItemChildClickListener
((
adapter
,
view
,
position
)
->
{
if
(
view
.
getId
()
==
R
.
id
.
tv_prj_record_print_operation
)
{
//重印
List
<
PrjBean
.
DataBean
.
Bean
>
prjData
=
prjQueryBean
.
getData
();
List
<
PrjBean
>
prjData
=
prjQueryBean
.
getData
();
if
(
prjData
.
get
(
position
).
getPrinterType
()
==
3
)
{
//已打印的,提示是否重新打印
new
AppDialog
().
showWaringDialog
(
mContext
,
"食品已打印,確認重印?"
,
(
view1
,
dialog
)
->
{
...
...
@@ -220,18 +223,18 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements
}
}
private
void
organizeData
(
int
position
,
List
<
PrjBean
.
DataBean
.
Bean
>
prjData
)
{
private
void
organizeData
(
int
position
,
List
<
PrjBean
>
prjData
)
{
if
(
prjData
.
get
(
position
).
getParentId
()
==
0
)
{
//是主食品,判斷有沒有子食品,如果沒有子食品,直接打印主食品
if
(
position
+
1
>=
prjData
.
size
())
{
//沒有子食品
//直接打印
List
<
PrjBean
.
DataBean
.
Bean
>
printDatas
=
new
ArrayList
<>();
List
<
PrjBean
>
printDatas
=
new
ArrayList
<>();
printDatas
.
add
(
prjData
.
get
(
position
));
printPrj
(
printDatas
);
}
else
if
(
prjData
.
get
(
position
).
getProductId
().
equals
(
prjData
.
get
(
position
+
1
).
getParentId
()
+
""
))
{
//有子食品
List
<
PrjBean
.
DataBean
.
Bean
>
printDatas
=
new
ArrayList
<>();
List
<
PrjBean
>
printDatas
=
new
ArrayList
<>();
printDatas
.
add
(
prjData
.
get
(
position
));
for
(
int
i
=
position
;
i
<
prjData
.
size
();
i
++)
{
if
(
prjData
.
get
(
position
).
getProductId
().
equals
(
prjData
.
get
(
i
).
getParentId
()
+
""
))
{
...
...
@@ -244,26 +247,26 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements
}
else
{
//沒有子食品
//直接打印
List
<
PrjBean
.
DataBean
.
Bean
>
printDatas
=
new
ArrayList
<>();
List
<
PrjBean
>
printDatas
=
new
ArrayList
<>();
printDatas
.
add
(
prjData
.
get
(
position
));
printPrj
(
printDatas
);
}
}
else
{
//是主食品,直接打印子食品
List
<
PrjBean
.
DataBean
.
Bean
>
printDatas
=
new
ArrayList
<>();
List
<
PrjBean
>
printDatas
=
new
ArrayList
<>();
printDatas
.
add
(
prjData
.
get
(
position
));
printPrj
(
printDatas
);
}
}
private
void
printPrj
(
List
<
PrjBean
.
DataBean
.
Bean
>
printDatas
)
{
private
void
printPrj
(
List
<
PrjBean
>
printDatas
)
{
String
orderNo
=
""
;
StringBuilder
ids
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
printDatas
.
size
();
i
++)
{
PrjBean
.
DataBean
.
Bean
prjBean
=
printDatas
.
get
(
i
);
PrjBean
prjBean
=
printDatas
.
get
(
i
);
orderNo
=
prjBean
.
getOrderNo
();
prjBean
.
setTotalPrj
(
printDatas
.
size
());
prjBean
.
setCurrentIndex
(
i
);
prjBean
.
setCurrentIndex
(
i
+
1
);
ids
.
append
(
prjBean
.
getId
());
}
//添加重印的報警推送
...
...
@@ -272,7 +275,7 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements
CC
.
obtainBuilder
(
ComponentName
.
COMPONENT_PRINT
)
.
addParam
(
PrintConstans
.
PRINT_TYPE
,
PrintConstans
.
PRINT_KITCHEN
)
.
addParam
(
PrintConstans
.
PRINT_ORDER_NO
,
orderNo
)
.
addParam
(
"prjBeans"
,
printDatas
)
.
addParam
(
"prjBeans"
,
GsonUtils
.
GsonString
(
printDatas
)
)
.
setActionName
(
"printActivity"
)
.
build
()
.
callAsyncCallbackOnMainThread
((
cc
,
result
)
->
{
...
...
component-delivery-pick/src/main/java/com/gingersoft/gsa/delivery_pick_mode/mvp/ui/adapter/PrjStateAdapter.java
View file @
31f65a09
...
...
@@ -20,7 +20,7 @@ import org.jetbrains.annotations.Nullable;
import
java.math.BigDecimal
;
import
java.util.List
;
public
class
PrjStateAdapter
extends
BaseQuickAdapter
<
PrjBean
.
DataBean
.
Bean
,
BaseViewHolder
>
{
public
class
PrjStateAdapter
extends
BaseQuickAdapter
<
PrjBean
,
BaseViewHolder
>
{
private
Context
context
;
private
int
indentation
;
...
...
@@ -29,7 +29,7 @@ public class PrjStateAdapter extends BaseQuickAdapter<PrjBean.DataBean.Bean, Bas
*/
private
int
successColor
,
failColor
,
flyFailColor
;
public
PrjStateAdapter
(
Context
context
,
@Nullable
List
<
PrjBean
.
DataBean
.
Bean
>
data
)
{
public
PrjStateAdapter
(
Context
context
,
@Nullable
List
<
PrjBean
>
data
)
{
super
(
R
.
layout
.
item_prj_state
,
data
);
this
.
context
=
context
;
addChildClickViewIds
(
R
.
id
.
tv_prj_record_print_operation
);
...
...
@@ -39,7 +39,7 @@ public class PrjStateAdapter extends BaseQuickAdapter<PrjBean.DataBean.Bean, Bas
}
@Override
protected
void
convert
(
@NotNull
BaseViewHolder
baseViewHolder
,
PrjBean
.
DataBean
.
Bean
dataBean
)
{
protected
void
convert
(
@NotNull
BaseViewHolder
baseViewHolder
,
PrjBean
dataBean
)
{
//食品組名稱
baseViewHolder
.
setText
(
R
.
id
.
tv_prj_record_food_group_name
,
dataBean
.
getFoodGroupName
());
//食品名稱
...
...
@@ -56,15 +56,19 @@ public class PrjStateAdapter extends BaseQuickAdapter<PrjBean.DataBean.Bean, Bas
tvFailReason
.
setText
(
""
);
}
else
if
(
dataBean
.
getPrinterType
()
==
UpdateBean
.
FAILED_PRINT
)
{
//打印失敗
if
(
dataBean
.
getPresence
()
==
PrjBean
.
DataBean
.
Bean
.
NOT_GENERATED_PRJ
)
{
if
(
dataBean
.
getPresence
()
==
PrjBean
.
NOT_GENERATED_PRJ
)
{
//未生成PRJ記錄
baseViewHolder
.
setBackgroundColor
(
R
.
id
.
tv_prj_record_food_name
,
failColor
);
tvFailReason
.
setText
(
"未生成打印記錄"
);
}
else
if
(
dataBean
.
getPrinterDeviceId
()
==
-
1
)
{
//打印機id為-1
baseViewHolder
.
setBackgroundColor
(
R
.
id
.
tv_prj_record_food_name
,
failColor
);
tvFailReason
.
setText
(
"未找到對應的打印機"
);
}
else
if
(
TextUtil
.
isEmptyOrNullOrUndefined
(
dataBean
.
getPrintPosition
()))
{
//沒有打印位置
baseViewHolder
.
setBackgroundColor
(
R
.
id
.
tv_prj_record_food_name
,
failColor
);
tvFailReason
.
setText
(
"未配置打印位置"
);
}
else
if
(
TextUtil
.
isNotEmptyOrNullOrUndefined
(
dataBean
.
getFlyingSinglePosition
())
&&
dataBean
.
getRequests
()
>
PrjBean
.
DataBean
.
Bean
.
REQUEST_COUNT_FLY
)
{
}
else
if
(
TextUtil
.
isNotEmptyOrNullOrUndefined
(
dataBean
.
getFlyingSinglePosition
())
&&
dataBean
.
getRequests
()
>
PrjBean
.
REQUEST_COUNT_FLY
)
{
//飛單位置不為空並且請求次數大於5此,說明飛單打印失敗
baseViewHolder
.
setBackgroundColor
(
R
.
id
.
tv_prj_record_food_name
,
flyFailColor
);
}
...
...
@@ -80,24 +84,29 @@ public class PrjStateAdapter extends BaseQuickAdapter<PrjBean.DataBean.Bean, Bas
//只第一次測量一下
indentation
=
new
BigDecimal
(
foodName
.
getPaint
().
measureText
(
"哈"
)).
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
).
intValue
();
}
LinearLayout
foodNameLayout
=
baseViewHolder
.
getView
(
R
.
id
.
layout_print_stat
e
);
TextView
tvFoodName
=
baseViewHolder
.
getView
(
R
.
id
.
tv_prj_record_food_nam
e
);
if
(
dataBean
.
getParentId
()
!=
0
)
{
foodNameLayout
.
setPadding
(
indentation
,
foodNameLayout
.
getPaddingTop
(),
foodNameLayout
.
getPaddingRight
(),
foodNameLayout
.
getPaddingBottom
());
tvFoodName
.
setPadding
(
indentation
,
tvFoodName
.
getPaddingTop
(),
tvFoodName
.
getPaddingRight
(),
tvFoodName
.
getPaddingBottom
());
}
else
{
foodNameLayout
.
setPadding
(
0
,
foodNameLayout
.
getPaddingTop
(),
foodNameLayout
.
getPaddingRight
(),
foodNameLayout
.
getPaddingBottom
());
tvFoodName
.
setPadding
(
0
,
tvFoodName
.
getPaddingTop
(),
tvFoodName
.
getPaddingRight
(),
tvFoodName
.
getPaddingBottom
());
}
}
private
void
setPrintPosition
(
@NotNull
BaseViewHolder
baseViewHolder
,
PrjBean
.
DataBean
.
Bean
dataBean
)
{
private
void
setPrintPosition
(
@NotNull
BaseViewHolder
baseViewHolder
,
PrjBean
dataBean
)
{
TextView
tvPrintPosition
=
baseViewHolder
.
getView
(
R
.
id
.
tv_prj_record_print_position
);
if
(
TextUtil
.
isNotEmptyOrNullOrUndefined
(
dataBean
.
getPrintPosition
()))
{
//打印位置
baseViewHolder
.
setText
(
R
.
id
.
tv_prj_record_print_position
,
dataBean
.
getPrintPosition
());
if
(
dataBean
.
getStatus
()
==
PrjBean
.
PRJ_STATUS_CUT_PAPER
)
{
tvPrintPosition
.
setText
(
dataBean
.
getPrintPosition
()
+
"*"
);
}
else
{
tvPrintPosition
.
setText
(
dataBean
.
getPrintPosition
());
}
if
(
TextUtil
.
isNotEmptyOrNullOrUndefined
(
dataBean
.
getFlyingSinglePosition
()))
{
//打印位置+飛單位置
baseViewHolder
.
setText
(
R
.
id
.
tv_prj_record_print_position
,
dataBean
.
getPrintPosition
()
+
"/"
+
dataBean
.
getFlyingSinglePosition
());
tvPrintPosition
.
setText
(
tvPrintPosition
.
getText
()
+
"/"
+
dataBean
.
getFlyingSinglePosition
());
}
}
else
{
baseViewHolder
.
setText
(
R
.
id
.
tv_prj_record_print_position
,
""
);
tvPrintPosition
.
setText
(
""
);
}
}
}
component-delivery-pick/src/main/java/com/gingersoft/gsa/delivery_pick_mode/ui/activity/OrderDetailsActivity.kt
View file @
31f65a09
...
...
@@ -111,11 +111,6 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() {
getOrderDetails
(
orderId
,
binding
)
}
initTopBar
(
qm_order_details_bar
)
//訂單編號點擊事件
findViewById
<
TextView
>(
R
.
id
.
tv_order_no
).
setOnClickListener
{
ClipboardUtils
.
copyText
(
tv_order_no
.
text
)
showMessage
(
"複製成功"
)
}
}
private
fun
initTopBar
(
topbar
:
QMUITopBar
)
{
...
...
@@ -133,6 +128,11 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() {
//初始化頁面佈局
val
orderDetails
=
it
.
data
!!
[
0
]
orderNo
=
orderDetails
.
ORDER_NO
.
toString
()
//訂單編號點擊事件
tv_order_details_order_no
.
setOnClickListener
{
ClipboardUtils
.
copyText
(
orderNo
)
showMessage
(
"複製成功"
)
}
qm_order_details_bar
.
addRightImageButton
(
R
.
drawable
.
ic_print
,
R
.
id
.
iv_prj_history
).
setOnClickListener
{
PrjQueryActivity
.
startPrjQueryActivity
(
this
@OrderDetailsActivity
,
orderNo
)
}
...
...
component-delivery-pick/src/main/res/layout/activity_order_details.xml
View file @
31f65a09
...
...
@@ -17,6 +17,7 @@
<variable
name=
"total"
type=
"Double"
/>
<variable
name=
"data"
type=
"com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails.DataBean"
/>
...
...
@@ -114,12 +115,15 @@
<!-- 訂單編號-->
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id=
"@+id/tv_order_no"
android:id=
"@+id/tv_order_
details_order_
no"
style=
"@style/otherOrder_details_twelve_text_Style"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_margin=
"@dimen/other_order_info_dialog_content_marginLeft"
android:layout_marginTop=
"@dimen/dp_10"
android:clickable=
"true"
android:focusable=
"true"
android:focusableInTouchMode=
"true"
android:text=
"@{@string/order_no + data.oRDER_NO}"
/>
<TextView
...
...
@@ -536,11 +540,11 @@
<LinearLayout
android:id=
"@+id/layout_takeaway_discount"
android:orientation=
"vertical"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
android:paddingLeft=
"@dimen/other_order_info_dialog_content_marginLeft"
android:paddingRight=
"@dimen/other_order_info_dialog_content_marginLeft"
/>
android:paddingRight=
"@dimen/other_order_info_dialog_content_marginLeft"
/>
<RelativeLayout
android:layout_width=
"match_parent"
...
...
@@ -647,9 +651,9 @@
android:id=
"@+id/rv_third_expenses"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_marginTop=
"@dimen/dp_10"
android:layout_marginLeft=
"@dimen/dp_10"
android:layout_marginRight=
"@dimen/dp_10"
/>
android:layout_marginTop=
"@dimen/dp_10"
android:layout_marginRight=
"@dimen/dp_10"
/>
</LinearLayout>
</LinearLayout>
...
...
component-delivery-pick/src/main/res/layout/activity_prj_query.xml
View file @
31f65a09
...
...
@@ -22,8 +22,7 @@
android:layout_marginRight=
"@dimen/dp_10"
android:orientation=
"horizontal"
android:paddingTop=
"@dimen/dp_20"
android:paddingBottom=
"@dimen/dp_20"
android:visibility=
"gone"
>
android:paddingBottom=
"@dimen/dp_20"
>
<EditText
android:id=
"@+id/ed_input_order_number"
...
...
component-delivery-pick/src/main/res/layout/item_prj_state.xml
View file @
31f65a09
...
...
@@ -16,42 +16,41 @@
android:textColor=
"@color/theme_333_color"
android:textSize=
"@dimen/dp_16"
tools:text=
"食品組名稱"
/>
<include
layout=
"@layout/include_vertical_color_ccc_dividing_line"
/>
<LinearLayout
android:id=
"@+id/layout_print_state"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"0.2"
android:orientation=
"vertical"
android:paddingLeft=
"@dimen/dp_5"
android:paddingTop=
"@dimen/dp_5"
android:paddingRight=
"@dimen/dp_5"
>
android:layout_weight=
"0.8"
android:paddingTop=
"@dimen/dp_2"
android:paddingBottom=
"@dimen/dp_2"
android:gravity=
"center_vertical"
android:orientation=
"vertical"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"horizontal"
>
<TextView
android:id=
"@+id/tv_prj_record_food_name"
style=
"@style/PrjQueryItemStyle"
android:layout_width=
"wrap_content
"
android:layout_width=
"0dp
"
android:layout_height=
"wrap_content"
android:layout_weight=
"0.2"
android:paddingLeft=
"@dimen/dp_5"
android:paddingTop=
"@dimen/dp_5"
android:paddingRight=
"@dimen/dp_5"
tools:text=
"食品名稱一"
/>
<TextView
android:id=
"@+id/tv_prj_record_fail_reason"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_2"
android:textColor=
"@color/required_color"
android:textSize=
"@dimen/dp_10"
tools:text=
"失敗原因"
/>
</LinearLayout>
<TextView
android:id=
"@+id/tv_prj_record_print_position"
style=
"@style/PrjQueryItemStyle"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"0.26"
tools:text=
"打印位置/飛單位
置"
/>
tools:text=
"打印位置/飛單
置"
/>
<TextView
android:id=
"@+id/tv_prj_record_print_count"
...
...
@@ -83,5 +82,19 @@
android:textSize=
"@dimen/dp_16"
/>
</LinearLayout>
</LinearLayout>
<TextView
android:id=
"@+id/tv_prj_record_fail_reason"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_2"
android:paddingLeft=
"@dimen/dp_5"
android:paddingRight=
"@dimen/dp_5"
android:textColor=
"@color/required_color"
android:textSize=
"@dimen/dp_10"
tools:text=
"失敗原因"
/>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
component-print/src/main/java/com/joe/print/mvp/model/bean/PrintInfoBean.java
View file @
31f65a09
...
...
@@ -181,36 +181,6 @@ public class PrintInfoBean {
}
/**
* 將prj數據轉為打印類
*
* @param datas prj數據
* @param printLocation 廚房位置
* @param deviceBean 打印機信息
* @return 打印類集合
*/
public
static
List
<
List
<
PrintInfoBean
>>
transPrjBean
(
List
<
PrjBean
.
DataBean
.
Bean
>
datas
,
String
printLocation
,
PrinterDeviceBean
deviceBean
)
{
List
<
List
<
PrintInfoBean
>>
prjPrintBeans
=
new
ArrayList
<>();
//通過打印位置生成多張用於打印的bitmap
List
<
PrjBean
.
DataBean
.
Bean
>
noCut
=
new
ArrayList
<>();
for
(
PrjBean
.
DataBean
.
Bean
prjbean
:
datas
)
{
//遍歷當前打印位置所有的食品
if
(
prjbean
.
getStatus
()
==
2
)
{
//切紙,單獨生成一條prj數據
List
<
PrjBean
.
DataBean
.
Bean
>
beans
=
new
ArrayList
<>();
beans
.
add
(
prjbean
);
prjPrintBeans
.
add
(
getPrjPrintInfoBean
(
printLocation
,
beans
,
deviceBean
));
}
else
{
//不切紙,保存到單獨的集合里,之後生成一組數據
noCut
.
add
(
prjbean
);
}
}
if
(
noCut
.
size
()
>
0
)
{
prjPrintBeans
.
add
(
getPrjPrintInfoBean
(
printLocation
,
noCut
,
deviceBean
));
}
return
prjPrintBeans
;
}
private
static
boolean
foodIsBold
=
false
;
//食品是否加粗
private
static
boolean
foodItemIsBold
=
false
;
//細項是否加粗
private
static
boolean
foodIsItalic
=
false
;
//食品是否斜體
...
...
@@ -231,13 +201,13 @@ public class PrintInfoBean {
*
* @return
*/
private
static
List
<
PrintInfoBean
>
getPrjPrintInfoBean
(
String
key
,
List
<
PrjBean
.
DataBean
.
Bean
>
prjBeans
,
PrinterDeviceBean
deviceBean
)
{
private
static
List
<
PrintInfoBean
>
getPrjPrintInfoBean
(
String
key
,
List
<
PrjBean
>
prjBeans
,
PrinterDeviceBean
deviceBean
)
{
List
<
PrintInfoBean
>
printInfoBeans
=
new
ArrayList
<>();
initPrintConfig
(
deviceBean
);
if
(
prjBeans
==
null
||
prjBeans
.
size
()
<=
0
)
{
return
null
;
}
PrjBean
.
DataBean
.
Bean
prjBean
=
prjBeans
.
get
(
0
);
PrjBean
prjBean
=
prjBeans
.
get
(
0
);
if
(
prjBean
==
null
)
{
return
null
;
}
...
...
@@ -275,7 +245,7 @@ public class PrintInfoBean {
printInfoBeans
.
add
(
new
PrintInfoBean
(
new
String
[]{
"人數:"
+
prjBean
.
getPerson
(),
UserContext
.
newInstance
().
getMemberName
()},
new
Double
[]{
1
d
},
0
));
}
printInfoBeans
.
add
(
new
PrintInfoBean
(
new
String
[]{
getLineBorder
(
""
,
1
,
paperWidth
)},
0
));
for
(
PrjBean
.
DataBean
.
Bean
bean
:
prjBeans
)
{
for
(
PrjBean
bean
:
prjBeans
)
{
if
(
bean
.
getParentId
()
==
0
)
{
//沒有父級id,則是第一級食品
bean
.
setItemType
(
1
);
...
...
@@ -284,7 +254,7 @@ public class PrintInfoBean {
if
(
bean
.
getParentId
()
!=
0
)
{
bean
.
setItemType
(
2
);
//先設置為細項,再通過下面的遍歷確定是否是第三級細項
//循環遍歷查找父級食品
for
(
PrjBean
.
DataBean
.
Bean
itembean
:
prjBeans
)
{
for
(
PrjBean
itembean
:
prjBeans
)
{
if
(
bean
.
getParentId
()
==
itembean
.
getOrderDetailsId
())
{
//如果父級是細項,則當前食品就是二級細項
bean
.
setItemType
(
bean
.
getItemType
()
+
1
);
...
...
component-print/src/main/java/com/joe/print/mvp/print/EpsonPrint.java
View file @
31f65a09
...
...
@@ -12,10 +12,10 @@ import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import
com.gingersoft.gsa.cloud.common.printer.plugins.PrinterPlugins
;
import
com.gingersoft.gsa.cloud.print.PrintExecutor
;
import
com.gingersoft.gsa.cloud.print.PrintSocketHolder
;
import
com.gingersoft.gsa.cloud.print.impl.OnPrjPrintResultListener
;
import
com.joe.print.mvp.model.bean.PrintInfoBean
;
import
com.joe.print.mvp.print.utils.MyPrintUtils
;
import
java.net.ConnectException
;
import
java.util.ArrayList
;
import
java.util.List
;
...
...
@@ -25,7 +25,7 @@ public class EpsonPrint implements ReceiveListener {
private
Printer
mPrinter
=
null
;
private
ReceiveListener
receiveListener
;
private
PrintExecutor
.
OnPrintResultListener
r
esultListener
;
private
OnPrjPrintResultListener
onPrjPrintR
esultListener
;
private
static
EpsonPrint
epsonPrint
;
...
...
@@ -45,9 +45,9 @@ public class EpsonPrint implements ReceiveListener {
*
* @return
*/
public
boolean
initializeObject
(
Context
context
,
ReceiveListener
receiveListener
,
PrintExecutor
.
OnPrintResultListener
r
esultListener
)
{
public
boolean
initializeObject
(
Context
context
,
ReceiveListener
receiveListener
,
OnPrjPrintResultListener
onPrjPrintR
esultListener
)
{
try
{
this
.
resultListener
=
r
esultListener
;
this
.
onPrjPrintResultListener
=
onPrjPrintR
esultListener
;
this
.
receiveListener
=
receiveListener
;
//第一個參數是機型,第二個參數是語言,因為是打印圖片,語言沒有影響
mPrinter
=
new
Printer
(
Printer
.
TM_U220
,
Printer
.
MODEL_TAIWAN
,
context
);
...
...
@@ -143,7 +143,7 @@ public class EpsonPrint implements ReceiveListener {
/**
* 打印的食品id隊列
*/
private
List
<
String
>
i
ds
=
new
ArrayList
<>();
private
List
<
String
>
prjI
ds
=
new
ArrayList
<>();
public
void
putPrintString
(
String
ip
,
int
paperWidth
,
List
<
PrintInfoBean
>
printInfoBeans
)
{
if
(
mPrinter
==
null
)
{
...
...
@@ -276,68 +276,72 @@ public class EpsonPrint implements ReceiveListener {
isPrint
=
false
;
}
bitmaps
.
add
(
bitmap
);
i
ds
.
add
(
foodId
);
prjI
ds
.
add
(
foodId
);
if
(
isPrint
)
{
Log
.
d
(
"eee"
,
"針式打印機隊列中,前面還有"
+
bitmaps
.
size
()
+
"個任務"
);
Log
.
d
(
"eee"
,
"
prj
針式打印機隊列中,前面還有"
+
bitmaps
.
size
()
+
"個任務"
);
PrinterPlugins
.
getOnPrinterFlowHandler
().
connectionBefore
(
"針式打印機隊列中,前面還有"
+
bitmaps
.
size
()
+
"個任務"
,
ip
,
0
,
0
,
0
);
return
;
}
isPrint
=
true
;
printData
(
ip
,
bitmap
);
printData
(
ip
,
foodId
,
bitmap
);
}
private
void
printData
(
String
ip
,
Bitmap
bitmap
)
{
private
void
printData
(
String
ip
,
String
ids
,
Bitmap
bitmap
)
{
PrinterPlugins
.
getOnPrinterFlowHandler
().
onPrinterDataBefore
(
0
,
0
,
"針式打印機"
,
ip
);
mPrinter
.
clearCommandBuffer
();
Log
.
d
(
"eee"
,
"針式打印機創建數據中,任務數:"
+
bitmaps
.
size
());
Log
.
d
(
"eee"
,
"
prj
針式打印機創建數據中,任務數:"
+
bitmaps
.
size
());
if
(!
createPrintData
(
bitmap
))
{
Log
.
d
(
"eee"
,
"針式打印機創建數據失敗"
);
Log
.
d
(
"eee"
,
"
prj
針式打印機創建數據失敗"
);
//如果是創建數據失敗,說明這個數據有問題,移除掉
bitmaps
.
remove
(
bitmap
);
PrinterPlugins
.
getOnPrinterFlowHandler
().
connectionError
(
new
Exception
(
"針式打印機添加數據失敗"
+
ip
));
updatePrintState
(
PrintSocketHolder
.
ERROR_6
);
isPrint
=
false
;
printErrorProcess
(
ids
,
bitmap
,
new
Exception
(
"針式打印機添加數據失敗"
+
ip
),
PrintSocketHolder
.
ERROR_6
);
return
;
}
//連接打印機
connectByIp
(
ip
,
mPrinter
.
getStatus
());
//獲取打印機狀態
PrinterStatusInfo
statusInfo
=
mPrinter
.
getStatus
();
Log
.
d
(
"eee"
,
"針式打印機:"
+
"紙張狀態:"
+
statusInfo
.
getPaper
()
+
"連接狀態:"
+
statusInfo
.
getConnection
()
+
",任務數:"
+
bitmaps
.
size
());
Log
.
d
(
"eee"
,
"
prj
針式打印機:"
+
"紙張狀態:"
+
statusInfo
.
getPaper
()
+
"連接狀態:"
+
statusInfo
.
getConnection
()
+
",任務數:"
+
bitmaps
.
size
());
if
(
statusInfo
.
getConnection
()
!=
1
)
{
//未連接到打印機
updatePrintState
(
PrintSocketHolder
.
ERROR_7
);
PrinterPlugins
.
getOnPrinterFlowHandler
().
connectionError
(
new
ConnectException
(
"針式打印機連接失敗"
+
ip
));
isPrint
=
false
;
Log
.
d
(
"eee"
,
"prj針式打印機連接失敗:"
+
ids
);
printErrorProcess
(
ids
,
bitmap
,
new
Exception
(
"針式打印機連接失敗"
+
ip
),
PrintSocketHolder
.
ERROR_7
);
return
;
}
else
if
(
statusInfo
.
getPaper
()
!=
0
)
{
//紙張不正常
if
(
statusInfo
.
getPaper
()
==
2
)
{
//沒紙了
updatePrintState
(
PrintSocketHolder
.
ERROR_11
);
PrinterPlugins
.
getOnPrinterFlowHandler
().
connectionError
(
new
Exception
(
"針式打印機缺紙,打印失敗"
+
ip
));
printErrorProcess
(
ids
,
bitmap
,
new
Exception
(
"針式打印機缺紙,打印失敗"
+
ip
),
PrintSocketHolder
.
ERROR_11
);
}
else
{
//紙張狀態異常
updatePrintState
(
PrintSocketHolder
.
ERROR_11
);
PrinterPlugins
.
getOnPrinterFlowHandler
().
connectionError
(
new
Exception
(
"針式打印機紙張異常,請重啟打印機"
+
ip
));
printErrorProcess
(
ids
,
bitmap
,
new
Exception
(
"針式打印機紙張異常,請重啟打印機"
+
ip
),
PrintSocketHolder
.
ERROR_11
);
}
isPrint
=
false
;
return
;
}
try
{
mPrinter
.
sendData
(
Printer
.
PARAM_DEFAULT
);
PrinterPlugins
.
getOnPrinterFlowHandler
().
onPrintSuccess
();
Log
.
d
(
"eee"
,
"針式打印機打印成功"
+
",任務數:"
+
bitmaps
.
size
());
Log
.
d
(
"eee"
,
"
prj
針式打印機打印成功"
+
",任務數:"
+
bitmaps
.
size
());
}
catch
(
Exception
e
)
{
Log
.
d
(
"eee"
,
"針式打印機打印失敗"
+
",任務數:"
+
bitmaps
.
size
()
+
e
.
getMessage
());
updatePrintState
(
PrintSocketHolder
.
ERROR_10
);
PrinterPlugins
.
getOnPrinterFlowHandler
().
connectionError
(
new
Exception
(
"針式打印機打印報錯"
+
ip
));
Log
.
d
(
"eee"
,
"prj針式打印機打印失敗"
+
",任務數:"
+
bitmaps
.
size
()
+
e
.
getMessage
());
printErrorProcess
(
ids
,
bitmap
,
new
Exception
(
"針式打印機打印報錯"
+
ip
),
PrintSocketHolder
.
ERROR_10
);
mPrinter
.
clearCommandBuffer
();
disconnectPrinter
();
isPrint
=
false
;
}
}
/**
* 打印異常處理
* @param ids
* @param bitmap
*/
private
void
printErrorProcess
(
String
ids
,
Bitmap
bitmap
,
Exception
e
,
int
errorCode
)
{
bitmaps
.
remove
(
bitmap
);
prjIds
.
remove
(
ids
);
PrinterPlugins
.
getOnPrinterFlowHandler
().
connectionError
(
e
);
updatePrintState
(
ids
,
errorCode
);
isPrint
=
false
;
isExecutionNextTask
();
}
private
void
connectByIp
(
String
ip
,
PrinterStatusInfo
statusInfo
)
{
if
(
statusInfo
!=
null
)
{
LoganManager
.
w_printer
(
TAG
,
"連接狀態1111:"
+
statusInfo
.
getConnection
());
...
...
@@ -361,8 +365,10 @@ public class EpsonPrint implements ReceiveListener {
ipAddress
=
ip
;
}
}
if
(
statusInfo
!=
null
)
{
LoganManager
.
w_printer
(
TAG
,
"連接狀態222:"
+
statusInfo
.
getConnection
());
}
}
private
void
loginfo
(
PrinterStatusInfo
statusInfo
)
{
int
connection
=
statusInfo
.
getConnection
();
...
...
@@ -388,7 +394,7 @@ public class EpsonPrint implements ReceiveListener {
try
{
mPrinter
.
connect
(
"TCP:"
+
ip
,
Printer
.
PARAM_DEFAULT
);
}
catch
(
Exception
e
)
{
Log
.
e
(
TAG
,
"連接打印機報錯"
+
e
.
getMessage
()
+
e
.
getClass
().
getName
());
Log
.
e
(
TAG
,
"
prj
連接打印機報錯"
+
e
.
getMessage
()
+
e
.
getClass
().
getName
());
e
.
printStackTrace
();
LoganManager
.
w_printer
(
TAG
,
"連接打印機報錯:"
+
e
.
getMessage
());
disconnectPrinter
();
...
...
@@ -400,33 +406,51 @@ public class EpsonPrint implements ReceiveListener {
return
true
;
}
private
void
updatePrintState
(
int
code
)
{
if
(
r
esultListener
!=
null
)
{
resultListener
.
onResult
(
code
);
private
void
updatePrintState
(
String
ids
,
int
code
)
{
if
(
onPrjPrintR
esultListener
!=
null
)
{
onPrjPrintResultListener
.
onResult
(
code
,
ids
);
}
}
/**
* 打印結果回調
*
* @param printer 打印類
* @param i 打印結果
* @param printerStatusInfo 打印機狀態
* @param s
* @param s
沒值
*/
@Override
public
void
onPtrReceive
(
Printer
printer
,
int
i
,
PrinterStatusInfo
printerStatusInfo
,
String
s
)
{
this
.
mPrinter
=
printer
;
mPrinter
.
clearCommandBuffer
();
executionNextTask
(
printer
,
i
,
printerStatusInfo
);
}
/**
* 執行下一個打印任務
* @param printer
* @param i
* @param printerStatusInfo
*/
private
void
executionNextTask
(
Printer
printer
,
int
i
,
PrinterStatusInfo
printerStatusInfo
)
{
if
(
bitmaps
.
size
()
>
0
)
{
if
(
receiveListener
!=
null
)
{
receiveListener
.
onPtrReceive
(
printer
,
i
,
printerStatusInfo
,
i
ds
.
get
(
0
));
receiveListener
.
onPtrReceive
(
printer
,
i
,
printerStatusInfo
,
prjI
ds
.
get
(
0
));
}
Log
.
d
(
"eee"
,
"
移除前:onPtrReceive"
+
i
ds
.
get
(
0
)
+
",任務數:"
+
bitmaps
.
size
());
Log
.
d
(
"eee"
,
"
prj移除前:onPtrReceive"
+
prjI
ds
.
get
(
0
)
+
",任務數:"
+
bitmaps
.
size
());
bitmaps
.
remove
(
0
);
ids
.
remove
(
0
);
prjIds
.
remove
(
0
);
}
isExecutionNextTask
();
}
/**
* 是否繼續執行下一個任務
*/
private
void
isExecutionNextTask
()
{
if
(
bitmaps
.
size
()
>
0
)
{
printData
(
ipAddress
,
bitmaps
.
get
(
0
));
printData
(
ipAddress
,
prjIds
.
get
(
0
),
bitmaps
.
get
(
0
));
}
else
{
isPrint
=
false
;
disconnectPrinter
();
...
...
component-print/src/main/java/com/joe/print/mvp/print/PrintPrjKitchen.java
View file @
31f65a09
...
...
@@ -66,21 +66,21 @@ public class PrintPrjKitchen extends PrinterRoot {
private
int
modifierIsItalic
;
private
String
[]
languageTypes
;
private
static
Map
<
String
,
List
<
PrjBean
.
DataBean
.
Bean
>>
prjMap
;
private
static
Map
<
String
,
List
<
PrjBean
>>
prjMap
;
@Override
public
Map
<
String
,
List
<
Bitmap
>>
getPrintBitmap
(
Context
mContext
,
PrinterDeviceBean
deviceBean
)
{
Map
<
String
,
List
<
Bitmap
>>
bitmapMaps
=
new
HashMap
<>();
//通過打印位置生成多張用於打印的bitmap
for
(
Map
.
Entry
<
String
,
List
<
PrjBean
.
DataBean
.
Bean
>>
entry
:
getPrjMap
().
entrySet
())
{
for
(
Map
.
Entry
<
String
,
List
<
PrjBean
>>
entry
:
getPrjMap
().
entrySet
())
{
String
key
=
entry
.
getKey
();
List
<
Bitmap
>
bitmaps
=
new
ArrayList
<>();
List
<
PrjBean
.
DataBean
.
Bean
>
noCut
=
new
ArrayList
<>();
List
<
PrjBean
>
noCut
=
new
ArrayList
<>();
//不帶*號,所有同樣廚房位置的食品都在一張紙上
for
(
PrjBean
.
DataBean
.
Bean
bean
:
entry
.
getValue
())
{
for
(
PrjBean
bean
:
entry
.
getValue
())
{
if
(
bean
.
getStatus
()
==
2
)
{
List
<
PrjBean
.
DataBean
.
Bean
>
beans
=
new
ArrayList
<>();
List
<
PrjBean
>
beans
=
new
ArrayList
<>();
beans
.
add
(
bean
);
Bitmap
bitmap
=
getKitChenPrintBitmap
(
mContext
,
key
,
beans
,
deviceBean
);
bitmaps
.
add
(
bitmap
);
...
...
@@ -120,16 +120,16 @@ public class PrintPrjKitchen extends PrinterRoot {
this
.
languageTypes
=
deviceBean
.
getLanguageType
().
split
(
","
);
List
<
String
>
pritContents
=
new
ArrayList
<>();
for
(
Map
.
Entry
<
String
,
List
<
PrjBean
.
DataBean
.
Bean
>>
entry
:
getPrjMap
().
entrySet
())
{
for
(
Map
.
Entry
<
String
,
List
<
PrjBean
>>
entry
:
getPrjMap
().
entrySet
())
{
//不帶*號,所有同樣廚房位置的食品都在一張紙上
// for (PrjBean
.DataBean.Bean
bean : entry.getValue()) {
// for (PrjBean bean : entry.getValue()) {
pritContents
.
add
(
getBBPosPrintData
(
entry
.
getKey
(),
entry
.
getValue
(),
entry
.
getValue
().
get
(
0
)));
// }
}
return
(
String
[])
pritContents
.
toArray
();
}
private
String
getBBPosPrintData
(
String
key
,
List
<
PrjBean
.
DataBean
.
Bean
>
prjBeans
,
PrjBean
.
DataBean
.
Bean
prjBean
)
{
private
String
getBBPosPrintData
(
String
key
,
List
<
PrjBean
>
prjBeans
,
Prj
Bean
prjBean
)
{
String
stringBuilder
=
"<html><body>"
+
getHtmlHeadInfo
(
key
,
prjBean
)
+
getHtmlKitchenFood
(
prjBeans
)
+
...
...
@@ -138,7 +138,7 @@ public class PrintPrjKitchen extends PrinterRoot {
return
stringBuilder
;
}
private
String
getHtmlHeadInfo
(
String
key
,
PrjBean
.
DataBean
.
Bean
prjBean
)
{
private
String
getHtmlHeadInfo
(
String
key
,
PrjBean
prjBean
)
{
List
<
HtmlLable
>
htmlLables
=
new
ArrayList
<>();
...
...
@@ -200,13 +200,13 @@ public class PrintPrjKitchen extends PrinterRoot {
return
getHtmlLables
(
htmlLables
.
toArray
(
new
HtmlLable
[
htmlLables
.
size
()]));
}
private
String
getHtmlKitchenFood
(
List
<
PrjBean
.
DataBean
.
Bean
>
prjBeans
)
{
private
String
getHtmlKitchenFood
(
List
<
PrjBean
>
prjBeans
)
{
setFoodItemType
(
prjBeans
);
List
<
HtmlLable
>
htmlLables
=
new
ArrayList
<>();
for
(
PrjBean
.
DataBean
.
Bean
prjBean
:
prjBeans
)
{
for
(
PrjBean
prjBean
:
prjBeans
)
{
}
...
...
@@ -215,7 +215,7 @@ public class PrintPrjKitchen extends PrinterRoot {
return
getHtmlLables
(
htmlLables
.
toArray
(
new
HtmlLable
[
htmlLables
.
size
()]));
}
private
String
getHtmlEndInfo
(
PrjBean
.
DataBean
.
Bean
prjBean
)
{
private
String
getHtmlEndInfo
(
PrjBean
prjBean
)
{
List
<
HtmlLable
>
htmlLables
=
new
ArrayList
<>();
//台號
htmlLables
.
add
(
new
HtmlLable
(
HtmlContract
.
LABLE_P
,
getTableName
(
prjBean
),
new
HtmlLable
.
Attributes
(
HtmlContract
.
ATTRIBUTES_FONT_SIZE
,
font_size_kitchen_print_table_number2
)));
...
...
@@ -233,8 +233,8 @@ public class PrintPrjKitchen extends PrinterRoot {
return
1
;
}
public
Bitmap
getKitChenPrintBitmap
(
Context
context
,
String
key
,
PrjBean
.
DataBean
.
Bean
data
,
PrinterDeviceBean
printerDeviceBean
)
{
List
<
PrjBean
.
DataBean
.
Bean
>
beans
=
new
ArrayList
<>();
public
Bitmap
getKitChenPrintBitmap
(
Context
context
,
String
key
,
PrjBean
data
,
PrinterDeviceBean
printerDeviceBean
)
{
List
<
PrjBean
>
beans
=
new
ArrayList
<>();
beans
.
add
(
data
);
return
getKitChenPrintBitmap
(
context
,
key
,
beans
,
printerDeviceBean
);
}
...
...
@@ -245,11 +245,11 @@ public class PrintPrjKitchen extends PrinterRoot {
* @param context
* @return
*/
public
Bitmap
getKitChenPrintBitmap
(
Context
context
,
String
key
,
List
<
PrjBean
.
DataBean
.
Bean
>
data
,
PrinterDeviceBean
printerDeviceBean
)
{
public
Bitmap
getKitChenPrintBitmap
(
Context
context
,
String
key
,
List
<
PrjBean
>
data
,
PrinterDeviceBean
printerDeviceBean
)
{
if
(
data
==
null
||
data
.
size
()
<=
0
)
{
return
null
;
}
PrjBean
.
DataBean
.
Bean
prjBean
=
data
.
get
(
0
);
PrjBean
prjBean
=
data
.
get
(
0
);
if
(
prjBean
==
null
)
{
return
null
;
}
...
...
@@ -433,8 +433,8 @@ public class PrintPrjKitchen extends PrinterRoot {
}
private
void
setFoodItemType
(
List
<
PrjBean
.
DataBean
.
Bean
>
data
)
{
for
(
PrjBean
.
DataBean
.
Bean
bean
:
data
)
{
private
void
setFoodItemType
(
List
<
PrjBean
>
data
)
{
for
(
PrjBean
bean
:
data
)
{
if
(
bean
.
getParentId
()
==
0
)
{
//沒有父級id,則是第一級食品
bean
.
setItemType
(
1
);
...
...
@@ -443,7 +443,7 @@ public class PrintPrjKitchen extends PrinterRoot {
if
(
bean
.
getParentId
()
!=
0
)
{
bean
.
setItemType
(
2
);
//先設置為細項,再通過下面的遍歷確定是否是第三級細項
//循環遍歷查找父級食品
for
(
PrjBean
.
DataBean
.
Bean
itembean
:
data
)
{
for
(
PrjBean
itembean
:
data
)
{
if
(
bean
.
getParentId
()
==
itembean
.
getOrderDetailsId
())
{
//如果父級是細項,則當前食品就是二級細項
bean
.
setItemType
(
bean
.
getItemType
()
+
1
);
...
...
@@ -454,7 +454,7 @@ public class PrintPrjKitchen extends PrinterRoot {
}
}
private
String
getTableName
(
PrjBean
.
DataBean
.
Bean
prjBean
)
{
private
String
getTableName
(
PrjBean
prjBean
)
{
if
(
TextUtil
.
isEmptyOrNullOrUndefined
(
prjBean
.
getTableName
()))
{
switch
(
prjBean
.
getOrderType
())
{
case
1
:
...
...
@@ -470,7 +470,7 @@ public class PrintPrjKitchen extends PrinterRoot {
}
}
// private String getProductNameByLanguageType(PrjBean
.DataBean.Bean
prjBean) {
// private String getProductNameByLanguageType(PrjBean prjBean) {
// for (String type : languageTypes) {
// String languageType = type;
// if (languageType.contains(".")) {
...
...
@@ -495,7 +495,7 @@ public class PrintPrjKitchen extends PrinterRoot {
// }
// }
public
static
Map
<
String
,
List
<
PrjBean
.
DataBean
.
Bean
>>
getPrjMap
()
{
public
static
Map
<
String
,
List
<
PrjBean
>>
getPrjMap
()
{
if
(
prjMap
==
null
)
{
prjMap
=
new
HashMap
<>();
}
...
...
component-print/src/main/java/com/joe/print/mvp/print/PrinterRoot.java
View file @
31f65a09
...
...
@@ -37,7 +37,6 @@ import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import
com.gingersoft.gsa.cloud.common.printer.AidlUtil
;
import
com.gingersoft.gsa.cloud.common.printer.plugins.PrinterPlugins
;
import
com.gingersoft.gsa.cloud.common.utils.other.TextUtil
;
import
com.gingersoft.gsa.cloud.common.utils.threadPool.ThreadPoolManager
;
import
com.gingersoft.gsa.cloud.common.utils.time.TimeUtils
;
import
com.gingersoft.gsa.cloud.common.utils.view.ImageUtils
;
import
com.gingersoft.gsa.cloud.common.utils.view.LayoutToBitmapUtils
;
...
...
@@ -53,6 +52,7 @@ import com.gingersoft.gsa.cloud.print.bean.PrintTakeawayFormContent;
import
com.gingersoft.gsa.cloud.print.bean.base.PrintBillItem
;
import
com.gingersoft.gsa.cloud.print.bean.base.PrintFoodItem
;
import
com.gingersoft.gsa.cloud.print.bean.base.PrintPayTypeItem
;
import
com.gingersoft.gsa.cloud.print.impl.OnPrjPrintResultListener
;
import
com.google.zxing.WriterException
;
import
com.hyweb.n5.lib.constant.PrinterConstant
;
import
com.hyweb.n5.lib.util.PrinterUtil
;
...
...
@@ -326,6 +326,7 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
}
private
PrintExecutor
executor
;
private
EpsonPrint
mPrinter
;
/**
* ip設備打印
...
...
@@ -339,8 +340,13 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
RxJavaUtils
.
doInIOThread
(
new
RxIOTask
<
Object
>(
0
)
{
@Override
public
Void
doInIOThread
(
Object
o
)
{
EpsonPrint
mPrinter
=
new
EpsonPrint
();
mPrinter
.
initializeObject
(
GsaCloudApplication
.
getAppContext
(),
PrinterRoot
.
this
,
PrinterRoot
.
this
);
mPrinter
=
new
EpsonPrint
();
mPrinter
.
initializeObject
(
GsaCloudApplication
.
getAppContext
(),
PrinterRoot
.
this
,
new
OnPrjPrintResultListener
()
{
@Override
public
void
onResult
(
int
errorCode
,
String
prjIds
)
{
PrinterRoot
.
this
.
onResult
(
errorCode
);
}
});
for
(
int
j
=
0
;
j
<
bitmaps
.
size
();
j
++)
{
mPrinter
.
putPrintData
(
printerDeviceBean
.
getIp
(),
bitmaps
.
get
(
j
),
""
);
}
...
...
@@ -354,6 +360,12 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
ipPrint
(
printerDeviceBean
,
bitmaps
,
this
,
this
);
}
public
void
disconnectEpson
()
{
if
(
mPrinter
!=
null
)
{
mPrinter
.
disconnectPrinter
();
}
}
private
void
ipPrint
(
PrinterDeviceBean
printerDeviceBean
,
List
<
Bitmap
>
bitmaps
,
PrintSocketHolder
.
OnStateChangedListener
stateChangedListener
,
PrintExecutor
.
OnPrintResultListener
resultListener
)
{
if
(
executor
==
null
)
{
executor
=
new
PrintExecutor
()
...
...
component-print/src/main/java/com/joe/print/mvp/print/maker/PrjPrintMaker.java
View file @
31f65a09
...
...
@@ -6,6 +6,7 @@ import com.gingersoft.gsa.cloud.print.PrintDataMaker;
import
com.gingersoft.gsa.cloud.print.PrintExecutor
;
import
com.gingersoft.gsa.cloud.print.PrinterWriter
;
import
com.gingersoft.gsa.cloud.print.PrinterWriterExecutor
;
import
com.gingersoft.gsa.cloud.print.impl.OnPrjPrintResultListener
;
import
java.util.ArrayList
;
import
java.util.List
;
...
...
@@ -21,9 +22,9 @@ public class PrjPrintMaker implements PrintDataMaker {
private
String
ip
;
private
int
port
;
private
PrintExecutor
.
OnPrjPrintResultListener
onPrjPrintResultListener
;
private
OnPrjPrintResultListener
onPrjPrintResultListener
;
public
PrintExecutor
.
OnPrjPrintResultListener
getOnPrjPrintResultListener
()
{
public
OnPrjPrintResultListener
getOnPrjPrintResultListener
()
{
return
onPrjPrintResultListener
;
}
...
...
component-print/src/main/java/com/joe/print/mvp/print/service/PrjService.java
View file @
31f65a09
...
...
@@ -15,6 +15,7 @@ import androidx.annotation.Nullable;
import
com.epson.epos2.printer.Printer
;
import
com.epson.epos2.printer.PrinterStatusInfo
;
import
com.epson.epos2.printer.ReceiveListener
;
import
com.gingersoft.gsa.cloud.common.bean.BaseResult
;
import
com.gingersoft.gsa.cloud.common.constans.HttpsConstans
;
import
com.gingersoft.gsa.cloud.common.constans.PrintConstans
;
import
com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager
;
...
...
@@ -53,6 +54,7 @@ import com.joe.print.mvp.print.utils.MyPrintUtils;
import
com.sunmi.peripheral.printer.InnerResultCallbcak
;
import
com.xuexiang.rxutil2.rxjava.RxJavaUtils
;
import
org.jetbrains.annotations.NotNull
;
import
org.json.JSONArray
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
...
...
@@ -219,15 +221,13 @@ public class PrjService extends Service implements ReceiveListener {
}
}
private
int
totalPrj
;
private
int
currentIndex
;
private
String
prjJson
=
"{\"success\":true,\"sysTime\":1613789540248,\"data\":{\"K1\":[{\"id\":71387,\"printerDeviceId\":186,\"status\":2,\"tableName\":\"堂食1\",\"orderNo\":\"0013\",\"orderTime\":2021,\"person\":1,\"number\":1,\"orderDetailsTime\":\"Feb 23, 2021 1:52:06 PM\",\"orderDetailsId\":372,\"productName\":\"N1. Mr.Arita華盛丼>得獎和牛使用定食\",\"productName2\":\"\",\"productName3\":\"\",\"parentId\":0,\"type\":3,\"createTime\":1614059526281,\"productId\":61256,\"requests\":1,\"actualPrinterDeviceId\":186,\"orderType\":1,\"isFirstSendOrder\":1,\"quantity\":21,\"memberName\":\"96761128\"}]}}"
;
private
void
newPrint
(
String
json
)
{
Map
<
String
,
List
<
PrjBean
.
DataBean
.
Bean
>>
listMap
=
new
HashMap
<>();
currentIndex
=
0
;
totalPrj
=
0
;
PrjBean
prjBean
=
JsonUtils
.
parseObject
(
json
,
PrjBean
.
class
);
Map
<
String
,
List
<
PrjBean
>>
listMap
=
new
HashMap
<>();
int
totalPrj
=
0
;
BaseResult
prjBean
=
JsonUtils
.
parseObject
(
json
,
BaseResult
.
class
);
if
(
prjBean
==
null
||
prjBean
.
getData
()
==
null
)
{
LoganManager
.
w_printer
(
TAG
,
"newPrint prjBean == null || prjBean.getData() == null "
);
return
;
...
...
@@ -236,7 +236,7 @@ public class PrjService extends Service implements ReceiveListener {
cancel
(
pollDisposable
);
//第一步:解析PRJ數據,格式為 Map<廚房位置,需要打印的數據>
try
{
JSONObject
jsonObject
=
new
JSONObject
(
prjBean
.
getData
(
));
JSONObject
jsonObject
=
new
JSONObject
(
GsonUtils
.
GsonString
(
prjBean
.
getData
()
));
//通过迭代器获取这段json当中所有的key值
Iterator
keys
=
jsonObject
.
keys
();
//然后通过一个循环取出所有的key值
...
...
@@ -244,45 +244,71 @@ public class PrjService extends Service implements ReceiveListener {
String
key
=
String
.
valueOf
(
keys
.
next
());
//最后就可以通过刚刚得到的key值去解析后面的json了
JSONArray
dataJson
=
(
JSONArray
)
jsonObject
.
get
(
key
);
List
<
PrjBean
.
DataBean
.
Bean
>
datas
=
JsonUtils
.
parseArray
(
dataJson
.
toString
(),
PrjBean
.
DataBean
.
Bean
.
class
);
//解析出prj集合
List
<
PrjBean
>
datas
=
JsonUtils
.
parseArray
(
dataJson
.
toString
(),
PrjBean
.
class
);
if
(
datas
!=
null
&&
datas
.
size
()
>
0
)
{
//打印位置和需要打印的數據
listMap
.
put
(
key
,
datas
);
//計算prj總數
totalPrj
=
calculationPrjQuantity
(
datas
);
}
}
}
catch
(
JSONException
e
)
{
e
.
printStackTrace
();
LoganManager
.
w_printer
(
TAG
,
"newPrint JSONException: "
+
e
.
getMessage
());
}
//設置每張prj的頁數
setPrjIndex
(
listMap
,
totalPrj
);
//配置對應打印機
foreachPrint
(
listMap
,
getPrinterDevices
());
}
/**
* 計算出prj總數
*
* @param prjBeans prj數據
*/
private
int
calculationPrjQuantity
(
List
<
PrjBean
>
prjBeans
)
{
int
totalPrj
=
0
;
//計算本次打印的prj總張數有沒有不需要切紙的
boolean
isHasNoCut
=
false
;
for
(
PrjBean
.
DataBean
.
Bean
bean
:
data
s
)
{
for
(
PrjBean
bean
:
prjBean
s
)
{
if
(
bean
.
getStatus
()
==
2
)
{
//
需要切紙,prj總數就+1
//
需要切紙,prj總數就+1
totalPrj
++;
}
else
{
}
else
if
(
bean
.
getStatus
()
!=
PrjBean
.
PRJ_STATUS_FOLLOW_PARENT
)
{
// 不切紙,並且不跟主項,在遍歷結束後,需要總數+1
isHasNoCut
=
true
;
}
}
if
(
isHasNoCut
)
{
//有不需要切紙的食物,prj總數+1
// 有不需要切紙的食物,prj總數+1
// +1的原因是,如果全是不切紙的,在遍歷時是不加1的,總數就為0,所以在遍歷結束後+1
totalPrj
++;
}
}
}
}
catch
(
JSONException
e
)
{
e
.
printStackTrace
();
LoganManager
.
w_printer
(
TAG
,
"newPrint JSONException: "
+
e
.
getMessage
());
}
setPrjIndex
(
listMap
,
totalPrj
);
foreachPrint
(
listMap
,
getPrinterDevices
());
return
totalPrj
;
}
private
Map
<
String
,
List
<
PrjBean
.
DataBean
.
Bean
>>
setPrjIndex
(
Map
<
String
,
List
<
PrjBean
.
DataBean
.
Bean
>>
listMap
,
int
totalPrj
)
{
for
(
Map
.
Entry
<
String
,
List
<
PrjBean
.
DataBean
.
Bean
>>
prjMap
:
listMap
.
entrySet
())
{
/**
* 設置prj的頁數
*
* @param listMap key為打印位置
* @param totalPrj prj總數
* @return 排好頁數的prj數據
*/
private
Map
<
String
,
List
<
PrjBean
>>
setPrjIndex
(
Map
<
String
,
List
<
PrjBean
>>
listMap
,
int
totalPrj
)
{
int
currentIndex
=
0
;
for
(
Map
.
Entry
<
String
,
List
<
PrjBean
>>
prjMap
:
listMap
.
entrySet
())
{
//上一個對象是否切紙
boolean
lastIsCute
=
false
;
for
(
PrjBean
.
DataBean
.
Bean
bean
:
prjMap
.
getValue
())
{
for
(
PrjBean
bean
:
prjMap
.
getValue
())
{
bean
.
setTotalPrj
(
totalPrj
);
if
(
bean
.
getStatus
()
==
2
)
{
if
(
bean
.
getStatus
()
==
PrjBean
.
PRJ_STATUS_CUT_PAPER
)
{
//要切紙,紙張數+1
currentIndex
++;
lastIsCute
=
true
;
}
else
{
}
else
if
(
bean
.
getStatus
()
!=
PrjBean
.
PRJ_STATUS_FOLLOW_PARENT
)
{
// 不跟主項的
if
(
currentIndex
==
0
)
{
currentIndex
=
1
;
}
else
if
(
lastIsCute
)
{
...
...
@@ -298,10 +324,10 @@ public class PrjService extends Service implements ReceiveListener {
return
listMap
;
}
private
void
foreachPrint
(
Map
<
String
,
List
<
PrjBean
.
DataBean
.
Bean
>>
listMap
,
List
<
PrinterDeviceBean
>
printerDeviceBeans
)
{
private
void
foreachPrint
(
Map
<
String
,
List
<
PrjBean
>>
listMap
,
List
<
PrinterDeviceBean
>
printerDeviceBeans
)
{
//雙重遍歷可以以後優化
//第二步:遍歷 Map<廚房位置,需要打印的數據>,通過廚房位置找到對應的打印機,並且通過數據拿到對應的通用配置
for
(
Map
.
Entry
<
String
,
List
<
PrjBean
.
DataBean
.
Bean
>>
prjMap
:
listMap
.
entrySet
())
{
for
(
Map
.
Entry
<
String
,
List
<
PrjBean
>>
prjMap
:
listMap
.
entrySet
())
{
boolean
isFindDevice
=
false
;
for
(
PrinterDeviceBean
deviceBean
:
printerDeviceBeans
)
{
//遍歷得到當前打印機,如果沒找到打印機,就不打印
...
...
@@ -344,7 +370,7 @@ public class PrjService extends Service implements ReceiveListener {
* @param beans prj數據
* @return 通用配置
*/
private
PrintCurrencyBean
getPrintCurrencyBean
(
List
<
PrjBean
.
DataBean
.
Bean
>
beans
)
{
private
PrintCurrencyBean
getPrintCurrencyBean
(
List
<
PrjBean
>
beans
)
{
PrintCurrencyBean
printCurrencyBean
=
null
;
if
(
beans
!=
null
&&
beans
.
size
()
>
0
)
{
if
(
beans
.
get
(
0
).
getOrderType
()
==
1
||
beans
.
get
(
0
).
getOrderType
()
==
3
)
{
...
...
@@ -361,7 +387,7 @@ public class PrjService extends Service implements ReceiveListener {
/**
* 生成用於打印的prj的Bitmap
*/
private
void
generatePrintData
(
String
key
,
List
<
PrjBean
.
DataBean
.
Bean
>
beans
,
PrinterDeviceBean
printerDeviceBean
)
{
private
void
generatePrintData
(
String
key
,
List
<
PrjBean
>
beans
,
PrinterDeviceBean
printerDeviceBean
)
{
int
orderType
=
1
;
if
(
beans
!=
null
&&
beans
.
size
()
>
0
)
{
...
...
@@ -407,12 +433,12 @@ public class PrjService extends Service implements ReceiveListener {
* @param beans prj數據
* @param printerDeviceBean 打印設備
*/
private
void
prjToPc
(
List
<
PrjBean
.
DataBean
.
Bean
>
beans
,
PrinterDeviceBean
printerDeviceBean
)
{
private
void
prjToPc
(
List
<
PrjBean
>
beans
,
PrinterDeviceBean
printerDeviceBean
)
{
//PRJ模式,生成PRJ文件到共享的電腦上
ThreadPoolManager
.
getInstence
().
putExecutableTasks
(()
->
{
List
<
PrjBean
.
DataBean
.
Bean
>
noCutList
=
new
ArrayList
<>();
List
<
PrjBean
.
DataBean
.
Bean
>
cutList
=
new
ArrayList
<>();
for
(
PrjBean
.
DataBean
.
Bean
bean
:
beans
)
{
List
<
PrjBean
>
noCutList
=
new
ArrayList
<>();
List
<
PrjBean
>
cutList
=
new
ArrayList
<>();
for
(
PrjBean
bean
:
beans
)
{
if
(
bean
.
getStatus
()
==
2
)
{
//需要切紙
cutList
.
add
(
bean
);
...
...
@@ -454,7 +480,7 @@ public class PrjService extends Service implements ReceiveListener {
createFile
.
createNewFile
();
if
(
createFile
.
exists
())
{
PrintStream
ps
=
new
PrintStream
(
new
SmbFileOutputStream
(
createFile
));
PrjBean
.
DataBean
.
Bean
bean
=
noCutList
.
get
(
0
);
PrjBean
bean
=
noCutList
.
get
(
0
);
String
tableName
=
""
;
if
(
TextUtil
.
isEmptyOrNullOrUndefined
(
bean
.
getTableName
()))
{
...
...
@@ -507,16 +533,17 @@ public class PrjService extends Service implements ReceiveListener {
* @param beans prj數據
* @param printerDeviceBean 打印機
*/
private
void
stylusPrinting
(
String
key
,
List
<
PrjBean
.
DataBean
.
Bean
>
beans
,
PrinterDeviceBean
printerDeviceBean
)
{
private
void
stylusPrinting
(
String
key
,
List
<
PrjBean
>
beans
,
PrinterDeviceBean
printerDeviceBean
)
{
//針式打印機並且打印機類型為IP打印,生成獨特的格式
List
<
Map
<
String
,
Bitmap
>>
bitmapMaps
=
generatePrintMaps
(
key
,
beans
,
printerDeviceBean
);
//將打印的圖片保存到手機中
hookPrinterBitmap
(
bitmapMaps
,
beans
);
EpsonPrint
mPrinter
=
EpsonPrint
.
getInstance
();
boolean
initResult
=
EpsonPrint
.
getInstance
().
initializeObject
(
this
,
this
,
errorCode
->
updatePrjState
(
errorCode
,
getPrintIds
(
bitmapMaps
))
);
boolean
initResult
=
EpsonPrint
.
getInstance
().
initializeObject
(
this
,
this
,
this
::
updatePrjState
);
if
(!
initResult
)
{
//初始化打印機失敗
Log
.
e
(
"eee"
,
"prj初始化打印失敗"
+
getPrintIds
(
bitmapMaps
));
updatePrjState
(
UpdateBean
.
FAIL_EPSON_INIT
,
getPrintIds
(
bitmapMaps
));
return
;
}
...
...
@@ -618,9 +645,9 @@ public class PrjService extends Service implements ReceiveListener {
*
* @return prj的id集合
*/
private
String
getPrintIdsByPrjData
(
List
<
PrjBean
.
DataBean
.
Bean
>
prjBeans
)
{
private
String
getPrintIdsByPrjData
(
List
<
PrjBean
>
prjBeans
)
{
StringBuilder
stringBuilder
=
new
StringBuilder
();
for
(
PrjBean
.
DataBean
.
Bean
prjBean
:
prjBeans
)
{
for
(
PrjBean
prjBean
:
prjBeans
)
{
stringBuilder
.
append
(
prjBean
.
getId
());
if
(
stringBuilder
.
toString
().
lastIndexOf
(
","
)
!=
stringBuilder
.
length
()
-
1
)
{
//如果最後一位不是逗號,才添加
...
...
@@ -768,44 +795,224 @@ public class PrjService extends Service implements ReceiveListener {
* @param key 打印位置
* @param beans 打印的食品和其他的一些信息
*/
private
List
<
Map
<
String
,
Bitmap
>>
generatePrintMaps
(
String
key
,
List
<
PrjBean
.
DataBean
.
Bean
>
beans
,
PrinterDeviceBean
printerDeviceBean
)
{
private
List
<
Map
<
String
,
Bitmap
>>
generatePrintMaps
(
String
key
,
List
<
PrjBean
>
beans
,
PrinterDeviceBean
printerDeviceBean
)
{
//當前所有食品都是同一個打印位置,例如:K1
PrintPrjKitchen
printPrjKitchen
=
new
PrintPrjKitchen
();
//這個Map的key是這張PRJ的所有PRJ記錄的id,然後會同時打印多張,所以是一個List集合
List
<
Map
<
String
,
Bitmap
>>
bitmapMaps
=
new
ArrayList
<>();
List
<
PrjBean
.
DataBean
.
Bean
>
noCut
=
new
ArrayList
<>();
//不帶*號,所有同樣廚房位置的食品都在一張紙上
for
(
PrjBean
.
DataBean
.
Bean
bean
:
beans
)
{
if
(
bean
.
getStatus
()
==
2
)
{
List
<
PrjBean
>
notCutData
=
new
ArrayList
<>();
List
<
PrjBean
>
cutPrjData
=
new
ArrayList
<>();
int
prjSize
=
beans
.
size
();
for
(
int
i
=
0
;
i
<
prjSize
;
i
++)
{
PrjBean
bean
=
beans
.
get
(
i
);
//如果是跟隨主項,那就放入不切紙,因為要切紙的,都已經全部遍歷完了
//如果是要切紙的
if
(
bean
.
getStatus
()
==
PrjBean
.
PRJ_STATUS_CUT_PAPER
)
{
//裝進切紙集合
cutPrjData
.
add
(
bean
);
//遍歷後面的prj,一直到不是他子項為止
i
=
getFollow
(
i
,
beans
,
cutPrjData
,
notCutData
,
key
,
printerDeviceBean
,
printPrjKitchen
,
bitmapMaps
);
}
else
{
//不切紙的,都放在這裡
notCutData
.
add
(
bean
);
}
}
//將所有不切紙的轉為打印數據
PrjDataTransToPrintData
(
key
,
printerDeviceBean
,
printPrjKitchen
,
bitmapMaps
,
notCutData
);
hookPrinterBitmap
(
bitmapMaps
,
beans
);
return
bitmapMaps
;
}
/**
* 將prjData數據轉為打印數據
*
* @param key 打印位置
* @param printerDeviceBean 打印設備信息
* @param printPrjKitchen 打印類
* @param bitmapMaps 裝本次打印數據的map,key為打印數據的所有prj的id
* @param prjData prj數據
*/
private
void
PrjDataTransToPrintData
(
String
key
,
PrinterDeviceBean
printerDeviceBean
,
PrintPrjKitchen
printPrjKitchen
,
List
<
Map
<
String
,
Bitmap
>>
bitmapMaps
,
List
<
PrjBean
>
prjData
)
{
if
(
prjData
.
size
()
>
0
)
{
Map
<
String
,
Bitmap
>
map
=
new
HashMap
<>();
//帶*,需要切紙的,單獨放一張紙
map
.
put
(
bean
.
getId
()
+
""
,
printPrjKitchen
.
getKitChenPrintBitmap
(
mContext
,
key
,
bean
,
printerDeviceBean
));
map
.
put
(
getPrjIds
(
prjData
),
printPrjKitchen
.
getKitChenPrintBitmap
(
mContext
,
key
,
prjData
,
printerDeviceBean
));
bitmapMaps
.
add
(
map
);
prjData
.
clear
();
}
}
/**
* @param i 當前食品下標
* @param beans 所有prj數據集合
* @param cutPrjData 切紙的集合
* @param notCutData 不切紙的集合
* @param key 打印位置
* @param printerDeviceBean 打印設備
* @param printPrjKitchen 打印類
* @param bitmapMaps 裝打印數據的map
* @return 返回本次遍歷到的食品位置
*/
public
int
getFollow
(
int
i
,
List
<
PrjBean
>
beans
,
List
<
PrjBean
>
cutPrjData
,
List
<
PrjBean
>
notCutData
,
String
key
,
PrinterDeviceBean
printerDeviceBean
,
PrintPrjKitchen
printPrjKitchen
,
List
<
Map
<
String
,
Bitmap
>>
bitmapMaps
)
{
//遍歷後面所有的prj
for
(
int
j
=
i
+
1
;
j
<
beans
.
size
();
j
++)
{
PrjBean
itemPrjBean
=
beans
.
get
(
j
);
if
(
itemPrjBean
.
getType
()
==
PrjBean
.
FOOD_TYPE
)
{
//如果是食品,可能是套餐
if
(
itemPrjBean
.
getParentId
()
!=
0
)
{
//用來判斷是不是這個食品的細項,如果遍歷完所有的食品,還沒找到他的父類,說明就不是當前要切紙對象的細項
boolean
isThisFoodItem
=
false
;
//這裡之所以需要遍歷切紙集合,因為當前食品可能是三級,他的父類id不一定是第一級那個bean的id,可能是二級食品的子類
for
(
int
k
=
0
;
k
<
cutPrjData
.
size
();
k
++)
{
if
(
itemPrjBean
.
getParentId
()
==
cutPrjData
.
get
(
k
).
getOrderDetailsId
())
{
isThisFoodItem
=
true
;
//是這個食品的細項,判斷是不是跟隨主項
if
(
itemPrjBean
.
getStatus
()
==
PrjBean
.
PRJ_STATUS_FOLLOW_PARENT
)
{
//跟隨主項
cutPrjData
.
add
(
itemPrjBean
);
}
else
if
(
itemPrjBean
.
getStatus
()
==
PrjBean
.
PRJ_STATUS_CUT_PAPER
)
{
//不跟隨主項,要切紙
//要切紙的,又要判斷下一個是不是當前細項的細項,因為有可能下一個細項也是要跟隨主項的
List
<
PrjBean
>
itemCutPrjData
=
new
ArrayList
<>();
itemCutPrjData
.
add
(
itemPrjBean
);
//遍歷之後所有的食品,一直到不是當前子項的子項為止
j
=
getFollow
(
j
,
beans
,
itemCutPrjData
,
notCutData
,
key
,
printerDeviceBean
,
printPrjKitchen
,
bitmapMaps
);
}
else
{
noCut
.
add
(
bean
);
//不跟隨主項,不切紙
//下一個食品可能是這個不切紙食品的細項
//遍歷之後的食品,直到不是這個食品的細項為止
j
=
getNotCutFoodItem
(
j
,
beans
,
itemPrjBean
,
notCutData
,
key
,
printerDeviceBean
,
printPrjKitchen
,
bitmapMaps
);
}
break
;
}
if
(
noCut
.
size
()
>
0
)
{
Map
<
String
,
Bitmap
>
map
=
new
HashMap
<>();
//遍歷拿到這張紙所有的PRJ記錄ID
}
if
(!
isThisFoodItem
)
{
//不是這個食品的細項,說明這個食品的所有細項都已經遍歷完了
//將這個食品的數據轉為打印數據
PrjDataTransToPrintData
(
key
,
printerDeviceBean
,
printPrjKitchen
,
bitmapMaps
,
cutPrjData
);
//跳出循環
return
j
-
1
;
}
}
else
{
//如果是食品,並且沒有父類,說明之前的食品所有細項都已經遍歷完了
//將這個食品的數據轉為打印數據
PrjDataTransToPrintData
(
key
,
printerDeviceBean
,
printPrjKitchen
,
bitmapMaps
,
cutPrjData
);
//就跳出循環
return
j
-
1
;
}
}
else
{
boolean
isThisFoodItem
=
false
;
//如果是細項,先判斷是不是這個食品的細項,再判斷是不是跟隨主項
//這裡之所以需要遍歷切紙集合,因為當前細項可能是三級細項,他的父類id不一定是第一級那個bean的id,可能是二級細項的子類
for
(
int
k
=
0
;
k
<
cutPrjData
.
size
();
k
++)
{
if
(
itemPrjBean
.
getParentId
()
==
cutPrjData
.
get
(
k
).
getOrderDetailsId
())
{
isThisFoodItem
=
true
;
//是這個食品的細項,判斷是不是跟隨主項
if
(
itemPrjBean
.
getStatus
()
==
PrjBean
.
PRJ_STATUS_FOLLOW_PARENT
)
{
//跟隨主項
cutPrjData
.
add
(
itemPrjBean
);
}
else
if
(
itemPrjBean
.
getStatus
()
==
PrjBean
.
PRJ_STATUS_CUT_PAPER
)
{
//不跟隨主項,要切紙
//要切紙的,又要判斷下一個是不是當前細項的細項,因為有可能下一個細項也是要跟隨主項的
List
<
PrjBean
>
itemCutPrjData
=
new
ArrayList
<>();
itemCutPrjData
.
add
(
itemPrjBean
);
//遍歷之後所有的食品,一直到不是當前子項的子項為止
j
=
getFollow
(
j
,
beans
,
itemCutPrjData
,
notCutData
,
key
,
printerDeviceBean
,
printPrjKitchen
,
bitmapMaps
);
}
else
{
//不跟隨主項,不切紙
//下一個食品可能是這個不切紙食品的細項
//遍歷之後的食品,直到不是這個食品的細項為止
j
=
getNotCutFoodItem
(
j
,
beans
,
itemPrjBean
,
notCutData
,
key
,
printerDeviceBean
,
printPrjKitchen
,
bitmapMaps
);
}
break
;
}
}
if
(!
isThisFoodItem
)
{
//不是這個食品的細項,說明這個食品的所有細項都已經遍歷完了
//將這個食品的數據轉為打印數據
PrjDataTransToPrintData
(
key
,
printerDeviceBean
,
printPrjKitchen
,
bitmapMaps
,
cutPrjData
);
//跳出循環
return
j
-
1
;
}
}
}
PrjDataTransToPrintData
(
key
,
printerDeviceBean
,
printPrjKitchen
,
bitmapMaps
,
cutPrjData
);
return
beans
.
size
();
}
/**
* 獲取不切紙的後續的食品細項
*
* @param j
* @param beans
* @param cutPrjData
* @param notCutData
* @param key
* @param printerDeviceBean
* @param printPrjKitchen
* @param bitmapMaps
* @return
*/
private
int
getNotCutFoodItem
(
int
j
,
List
<
PrjBean
>
beans
,
PrjBean
parentPrjBean
,
List
<
PrjBean
>
notCutData
,
String
key
,
PrinterDeviceBean
printerDeviceBean
,
PrintPrjKitchen
printPrjKitchen
,
List
<
Map
<
String
,
Bitmap
>>
bitmapMaps
)
{
//遍歷不切紙的後續的prj
//當前食品的後續的不切紙的細項
List
<
PrjBean
>
currentNotCutPrjBeans
=
new
ArrayList
<>();
currentNotCutPrjBeans
.
add
(
parentPrjBean
);
for
(
int
i
=
j
+
1
;
i
<
beans
.
size
();
i
++)
{
PrjBean
itemPrjBean
=
beans
.
get
(
i
);
boolean
isThisFoodItem
=
false
;
//如果這個食品是不是食品的子類
//這裡之所以遍歷,是因為可能存在,一級-二級-三級,如果只用一級去和三級判斷父類關係,三級判斷通不過
for
(
int
k
=
0
;
k
<
currentNotCutPrjBeans
.
size
();
k
++)
{
if
(
itemPrjBean
.
getParentId
()
==
currentNotCutPrjBeans
.
get
(
k
).
getOrderDetailsId
())
{
isThisFoodItem
=
true
;
//判斷是否切紙
if
(
itemPrjBean
.
getStatus
()
==
PrjBean
.
PRJ_STATUS_CUT_PAPER
)
{
//要切紙的,又要判斷下一個是不是當前細項的細項,因為有可能下一個細項也是要跟隨主項的
List
<
PrjBean
>
itemCutPrjData
=
new
ArrayList
<>();
itemCutPrjData
.
add
(
itemPrjBean
);
//遍歷之後所有的食品,一直到不是當前子項的子項為止
i
=
getFollow
(
i
,
beans
,
itemCutPrjData
,
notCutData
,
key
,
printerDeviceBean
,
printPrjKitchen
,
bitmapMaps
);
}
else
{
//不切紙或
//跟隨主項,就加入不切紙的集合中
currentNotCutPrjBeans
.
add
(
itemPrjBean
);
}
break
;
}
}
if
(!
isThisFoodItem
)
{
//不是這個食品的細項
notCutData
.
addAll
(
currentNotCutPrjBeans
);
return
i
-
1
;
}
}
notCutData
.
addAll
(
currentNotCutPrjBeans
);
return
beans
.
size
();
}
@NotNull
private
String
getPrjIds
(
List
<
PrjBean
>
noCut
)
{
StringBuilder
stringBuffer
=
new
StringBuilder
();
for
(
PrjBean
.
DataBean
.
Bean
noCutData
:
noCut
)
{
for
(
Prj
Bean
noCutData
:
noCut
)
{
stringBuffer
.
append
(
noCutData
.
getId
());
stringBuffer
.
append
(
","
);
}
Bitmap
prjBitmap
=
printPrjKitchen
.
getKitChenPrintBitmap
(
mContext
,
key
,
noCut
,
printerDeviceBean
);
map
.
put
(
stringBuffer
.
toString
(),
prjBitmap
);
bitmapMaps
.
add
(
map
);
if
(
stringBuffer
.
length
()
<=
0
)
{
return
""
;
}
hookPrinterBitmap
(
bitmapMaps
,
beans
);
return
bitmapMaps
;
//最後一位是逗號,去掉
return
stringBuffer
.
substring
(
0
,
stringBuffer
.
length
()
-
1
)
;
}
private
void
hookPrinterBitmap
(
List
<
Map
<
String
,
Bitmap
>>
bitmapMaps
,
List
<
PrjBean
.
DataBean
.
Bean
>
beans
)
{
private
void
hookPrinterBitmap
(
List
<
Map
<
String
,
Bitmap
>>
bitmapMaps
,
List
<
PrjBean
>
beans
)
{
if
(
bitmapMaps
.
size
()
>
0
)
{
String
prjName
=
String
.
valueOf
(
System
.
currentTimeMillis
());
int
orderType
=
1
;
if
(
beans
.
size
()
>
0
)
{
PrjBean
.
DataBean
.
Bean
prjBean
=
beans
.
get
(
0
);
PrjBean
prjBean
=
beans
.
get
(
0
);
if
(
prjBean
!=
null
)
{
if
(!
TextUtils
.
isEmpty
(
prjBean
.
getBillNo
()))
{
prjName
=
prjBean
.
getBillNo
();
...
...
@@ -897,7 +1104,9 @@ public class PrjService extends Service implements ReceiveListener {
}
@Override
public
void
onPtrReceive
(
Printer
printer
,
int
i
,
PrinterStatusInfo
printerStatusInfo
,
String
s
)
{
public
void
onPtrReceive
(
Printer
printer
,
int
i
,
PrinterStatusInfo
printerStatusInfo
,
String
s
)
{
Log
.
e
(
"eee"
,
"prj針式打印結果"
+
i
);
//針式打印回調
if
(
i
==
0
)
{
PrinterPlugins
.
getOnPrinterFlowHandler
().
onPrintSuccess
();
...
...
@@ -908,6 +1117,5 @@ public class PrjService extends Service implements ReceiveListener {
//打印失敗
updatePrjFailure
(
s
);
}
startGetPrjInfo
();
}
}
component-print/src/main/java/com/joe/print/mvp/ui/activity/PrintActivity.java
View file @
31f65a09
...
...
@@ -5,6 +5,7 @@ import android.content.Intent;
import
android.graphics.Bitmap
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.view.MotionEvent
;
import
android.view.WindowManager
;
...
...
@@ -35,7 +36,6 @@ import com.jess.arms.utils.ArmsUtils;
import
com.joe.print.di.component.DaggerPrintComponent
;
import
com.joe.print.mvp.contract.PrintContract
;
import
com.joe.print.mvp.presenter.PrintPresenter
;
import
com.joe.print.mvp.print.EpsonPrint
;
import
com.joe.print.mvp.print.PrintInstruction
;
import
com.joe.print.mvp.print.PrintListener
;
import
com.joe.print.mvp.print.PrintPrjKitchen
;
...
...
@@ -45,6 +45,8 @@ import com.joe.print.mvp.print.utils.MyPrintUtils;
import
com.joe.print.mvp.ui.view.PrinterLoadingDialog
;
import
com.joe.print.mvp.ui.view.SelectPrintDevicePopup
;
import
com.lxj.xpopup.XPopup
;
import
com.xuexiang.rxutil2.rxjava.RxJavaUtils
;
import
com.xuexiang.rxutil2.rxjava.task.RxUITask
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -256,10 +258,13 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
* @return 如果prj有指定打印機,並且找到了,就返回
*/
private
PrinterDeviceBean
setKitChenPrj
(
PrinterDeviceBean
defaultPrint
)
{
List
<
PrjBean
.
DataBean
.
Bean
>
printDatas
=
CCUtil
.
getNavigateParam
(
this
,
"prjBeans"
,
null
);
Map
<
String
,
List
<
PrjBean
.
DataBean
.
Bean
>>
prjMap
=
PrintPrjKitchen
.
getPrjMap
();
String
prjJson
=
CCUtil
.
getNavigateParam
(
this
,
"prjBeans"
,
null
);
List
<
PrjBean
>
printDatas
=
GsonUtils
.
jsonToList
(
prjJson
,
PrjBean
.
class
);
// List<PrjBean> printDatas = CCUtil.getNavigateParam(this, "prjBeans", null);
Map
<
String
,
List
<
PrjBean
>>
prjMap
=
PrintPrjKitchen
.
getPrjMap
();
String
printLocation
=
null
;
for
(
PrjBean
.
DataBean
.
Bean
prjBean
:
printDatas
)
{
prjMap
.
put
(
""
,
printDatas
);
for
(
PrjBean
prjBean
:
printDatas
)
{
if
(
printLocation
==
null
)
{
if
(
TextUtil
.
isNotEmptyOrNullOrUndefined
(
prjBean
.
getPrintPosition
()))
{
printLocation
=
prjBean
.
getPrintPosition
();
...
...
@@ -275,7 +280,6 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
prjBean
.
setPrintPosition
(
printLocation
);
prjBean
.
setCurrentIndex
(
1
);
}
prjMap
.
put
(
""
,
printDatas
);
return
null
;
}
...
...
@@ -312,6 +316,8 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
PrintExecutor
executor
=
new
PrintExecutor
();
executor
.
doPrinterRequestAsync
(
new
OpenCashBoxMaker
(
defaultPrint
.
getIp
(),
defaultPrint
.
getPort
()));
CC
.
sendCCResult
(
callId
,
CCResult
.
success
());
PrinterPlugins
.
getOnPrinterFlowHandler
().
onPrintSuccess
();
killMyself
();
}
else
{
Map
<
String
,
List
<
Bitmap
>>
listMap
;
List
<
Bitmap
>
zoomBitmaps
=
null
;
...
...
@@ -367,8 +373,13 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
}
private
void
addPrintProgress
(
String
printState
)
{
RxJavaUtils
.
doInUIThread
(
new
RxUITask
<
Object
>(
0
)
{
@Override
public
void
doInUIThread
(
Object
o
)
{
printerLoadingDialog
.
setTitle
(
printState
);
}
});
}
@Override
public
boolean
dispatchTouchEvent
(
MotionEvent
ev
)
{
...
...
@@ -379,6 +390,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
@Override
public
void
printStateChanged
(
int
state
)
{
Log
.
e
(
"eee"
,
"printStateChanged:"
+
state
);
String
tip
=
"加載中..."
;
switch
(
state
)
{
case
PrintSocketHolder
.
ERROR_0
:
...
...
@@ -544,8 +556,10 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
//關閉ip打印連接
PrintSocketHolder
.
getInstance
().
closeSocket
();
//關閉針式打印連接
EpsonPrint
.
getInstance
().
disconnectPrinter
();
EpsonPrint
.
getInstance
().
finalizeObject
();
if
(
printerInIt
!=
null
)
{
printerInIt
.
disconnectEpson
();
}
printerLoadingDialog
.
dismiss
();
}
...
...
component-print/src/main/java/com/joe/print/mvp/ui/adapter/KitChenPrjPrintFoodAdapter.java
View file @
31f65a09
...
...
@@ -17,7 +17,7 @@ import java.util.List;
/**
* Created by Wyh on 2020/2/20.
*/
public
class
KitChenPrjPrintFoodAdapter
extends
BaseQuickAdapter
<
PrjBean
.
DataBean
.
Bean
,
BaseViewHolder
>
{
public
class
KitChenPrjPrintFoodAdapter
extends
BaseQuickAdapter
<
PrjBean
,
BaseViewHolder
>
{
private
int
indentation
=
0
;
...
...
@@ -29,7 +29,7 @@ public class KitChenPrjPrintFoodAdapter extends BaseQuickAdapter<PrjBean.DataBea
private
int
modifierIsItalic
;
private
String
[]
languageTypes
;
public
KitChenPrjPrintFoodAdapter
(
@Nullable
List
<
PrjBean
.
DataBean
.
Bean
>
data
,
PrinterDeviceBean
printerDeviceBean
)
{
public
KitChenPrjPrintFoodAdapter
(
@Nullable
List
<
PrjBean
>
data
,
PrinterDeviceBean
printerDeviceBean
)
{
super
(
R
.
layout
.
print_kitchen_item_parent
,
data
);
try
{
this
.
foodFontSize
=
Integer
.
parseInt
(
printerDeviceBean
.
getFoodFont
())
*
2
;
...
...
@@ -45,7 +45,7 @@ public class KitChenPrjPrintFoodAdapter extends BaseQuickAdapter<PrjBean.DataBea
}
@Override
protected
void
convert
(
BaseViewHolder
helper
,
PrjBean
.
DataBean
.
Bean
item
)
{
protected
void
convert
(
BaseViewHolder
helper
,
PrjBean
item
)
{
LinearLayout
layout
=
helper
.
getView
(
R
.
id
.
layout_print_kitchen_parent
);
for
(
String
type
:
languageTypes
)
{
String
languageType
=
type
;
...
...
component-print/src/main/java/com/joe/print/mvp/ui/view/KitChenPrjFoodView.java
View file @
31f65a09
...
...
@@ -35,9 +35,9 @@ public class KitChenPrjFoodView extends LinearLayout {
private
int
foodIsItalic
;
private
int
modifierIsItalic
;
private
String
[]
languageTypes
;
private
List
<
PrjBean
.
DataBean
.
Bean
>
data
;
private
List
<
PrjBean
>
data
;
public
KitChenPrjFoodView
(
Context
context
,
@Nullable
List
<
PrjBean
.
DataBean
.
Bean
>
data
,
PrinterDeviceBean
printerDeviceBean
)
{
public
KitChenPrjFoodView
(
Context
context
,
@Nullable
List
<
PrjBean
>
data
,
PrinterDeviceBean
printerDeviceBean
)
{
super
(
context
);
try
{
this
.
foodFontSize
=
Integer
.
parseInt
(
printerDeviceBean
.
getFoodFont
())
*
2
;
...
...
@@ -56,7 +56,7 @@ public class KitChenPrjFoodView extends LinearLayout {
private
void
init
()
{
setOrientation
(
LinearLayout
.
VERTICAL
);
for
(
PrjBean
.
DataBean
.
Bean
item
:
data
)
{
for
(
PrjBean
item
:
data
)
{
// View view = View.inflate(getContext(), R.layout.print_kitchen_item_parent, null);
// LinearLayout layout = view.findViewById(R.id.layout_print_kitchen_parent);
for
(
String
type
:
languageTypes
)
{
...
...
@@ -95,7 +95,7 @@ public class KitChenPrjFoodView extends LinearLayout {
}
boolean
isBold
,
isItalic
;
int
paddingLeft
;
if
(
itemType
==
PrjBean
.
DataBean
.
Bean
.
FOOD_SECONDARY
)
{
if
(
itemType
==
PrjBean
.
FOOD_SECONDARY
)
{
//細項,縮進
paddingLeft
=
indentation
;
tvFoodName
.
setTextSize
(
modifierFontSize
);
...
...
@@ -103,7 +103,7 @@ public class KitChenPrjFoodView extends LinearLayout {
isBold
=
modifierIsBold
==
1
;
isItalic
=
modifierIsItalic
==
1
;
}
else
if
(
itemType
==
PrjBean
.
DataBean
.
Bean
.
FOOD_THREE_LEVEL
)
{
}
else
if
(
itemType
==
PrjBean
.
FOOD_THREE_LEVEL
)
{
//細項,縮進
paddingLeft
=
indentation
*
2
;
tvFoodName
.
setTextSize
(
modifierFontSize
);
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/presenter/OrderDetailsPresenter.java
View file @
31f65a09
...
...
@@ -172,8 +172,6 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
}
//添加主單位到副單位列表,用戶可手動切換
DeputyUnitBean
deputyUnitBean
=
new
DeputyUnitBean
(
purchaseOrderDetailsInfoVO
.
getBasicUnitName
(),
purchaseOrderDetailsInfoVO
.
getFoodQuantity
());
deputyUnitBean
.
setDeputyValue
(
purchaseOrderDetailsInfoVO
.
getFoodQuantity
());
deputyUnitBean
.
setUnitPrice
(
purchaseOrderDetailsInfoVO
.
getFoodPrice
());
deputyUnitBeans
.
add
(
0
,
deputyUnitBean
);
//设置显示的单位,如果大於1,則顯示第一個,因為第一個是副單位,默認顯示副單位
if
(
deputyUnitBeans
.
size
()
>
1
)
{
...
...
@@ -182,6 +180,9 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
//只有一個單位,顯示主單位
purchaseOrderDetailsInfoVO
.
setShowUnit
(
deputyUnitBeans
.
get
(
0
));
}
//設置默認顯示數量和價格
purchaseOrderDetailsInfoVO
.
getShowUnit
().
setDeputyValue
(
purchaseOrderDetailsInfoVO
.
getFoodQuantity
());
purchaseOrderDetailsInfoVO
.
getShowUnit
().
setUnitPrice
(
purchaseOrderDetailsInfoVO
.
getFoodPrice
());
//設置單位集合
purchaseOrderDetailsInfoVO
.
setFoodUnits
(
deputyUnitBeans
);
}
else
{
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/order/OrderDetailsFragment.java
View file @
31f65a09
...
...
@@ -74,7 +74,7 @@ import static com.yalantis.ucrop.UCrop.REQUEST_CROP;
/**
* ================================================
* Description: 訂單詳情
* Description: 訂單詳情
,收貨操作頁面
*/
public
class
OrderDetailsFragment
extends
BaseSupplyChainFragment
<
OrderDetailsPresenter
>
implements
OrderDetailsContract
.
View
,
View
.
OnClickListener
{
...
...
library-common/src/main/java/com/gingersoft/gsa/cloud/app/GsaCloudApplication.java
View file @
31f65a09
...
...
@@ -55,29 +55,21 @@ import com.gingersoft.gsa.cloud.common.utils.FileUtils;
import
com.gingersoft.gsa.cloud.common.utils.crash.AppCrashHandler
;
import
com.gingersoft.gsa.cloud.common.utils.log.LogUtil
;
import
com.gingersoft.gsa.cloud.common.utils.other.SPUtils
;
import
com.gingersoft.gsa.cloud.common.utils.view.BitmapUtil
;
import
com.gingersoft.gsa.cloud.common.utils.xlog.MyBackupStrategy
;
import
com.gingersoft.gsa.cloud.component.ComponentAction
;
import
com.gingersoft.gsa.cloud.component.ComponentName
;
import
com.gingersoft.gsa.cloud.database.DaoManager
;
import
com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean
;
import
com.hyweb.n5.lib.exception.NoInitPrinterException
;
import
com.hyweb.n5.lib.util.PrinterUtil
;
import
com.jess.arms.base.BaseApplication
;
import
com.kingja.loadsir.core.LoadSir
;
import
com.qmuiteam.qmui.arch.QMUISwipeBackActivityManager
;
import
com.scwang.smartrefresh.layout.SmartRefreshLayout
;
import
com.scwang.smartrefresh.layout.footer.ClassicsFooter
;
import
com.scwang.smartrefresh.layout.header.ClassicsHeader
;
import
com.xuexiang.rxutil2.rxjava.RxJavaUtils
;
import
com.xuexiang.rxutil2.rxjava.task.RxIOTask
;
import
java.io.File
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Locale
;
import
java.util.Map
;
import
java.util.Set
;
import
io.reactivex.functions.Consumer
;
import
io.reactivex.plugins.RxJavaPlugins
;
...
...
library-print/src/main/java/com/gingersoft/gsa/cloud/print/PrintExecutor.java
View file @
31f65a09
...
...
@@ -4,6 +4,7 @@ import android.os.AsyncTask;
import
android.util.Log
;
import
com.gingersoft.gsa.cloud.common.logan.LoganManager
;
import
com.gingersoft.gsa.cloud.print.impl.OnPrjPrintResultListener
;
import
com.xuexiang.rxutil2.rxjava.RxJavaUtils
;
import
java.util.ArrayList
;
...
...
@@ -20,6 +21,7 @@ public class PrintExecutor {
protected
final
String
TAG
=
this
.
getClass
().
getSimpleName
();
private
static
PrintExecutor
printExecutor
;
public
static
PrintExecutor
getInstance
()
{
if
(
printExecutor
==
null
)
{
printExecutor
=
new
PrintExecutor
();
...
...
@@ -219,13 +221,6 @@ public class PrintExecutor {
void
onResult
(
int
errorCode
);
}
public
interface
OnPrjPrintResultListener
{
/**
* PRJ打印結果回調,prj service用
*/
void
onResult
(
int
errorCode
,
String
ids
);
}
public
PrintExecutor
setOnPrjPrintResultListener
(
OnPrjPrintResultListener
onPrjPrintResultListener
)
{
this
.
onPrjPrintResultListener
=
onPrjPrintResultListener
;
return
this
;
...
...
library-print/src/main/java/com/gingersoft/gsa/cloud/print/bean/PrjBean.java
View file @
31f65a09
...
...
@@ -6,25 +6,23 @@ import java.util.Map;
import
lombok.Data
;
/**
* @author admin
*/
@Data
public
class
PrjBean
{
public
class
PrjBean
implements
Serializable
{
/**
* success : true
* sysTime : 1589177793623
* data : {"-1":[{"id":1,"printerDeviceId":-1,"status":1,"tableName":"51536","orderNo":"gs201351936242891","orderTime":2020,"person":2,"orderDetailsTime":"May 7, 2020 6:47:16 PM","orderDetailsId":48827589,"productName":"炸鸡翅","parentId":0,"type":3},{"id":2,"printerDeviceId":-1,"status":1,"tableName":"51536","orderNo":"gs201351936242891","orderTime":2020,"person":2,"orderDetailsTime":"May 7, 2020 6:47:16 PM","orderDetailsId":48827590,"productName":"鮮茄汁藍青口","parentId":0,"type":3}],"k1":[{"id":77,"printerDeviceId":1,"status":1,"tableName":"51536","orderNo":"gs201351936242891","orderTime":2020,"person":2,"orderDetailsTime":"May 11, 2020 11:41:41 AM","orderDetailsId":48828004,"productName":"走青檸測試","parentId":48827589,"type":4},{"id":78,"printerDeviceId":1,"status":1,"tableName":"51536","orderNo":"gs201351936242891","orderTime":2020,"person":2,"orderDetailsTime":"May 11, 2020 11:41:41 AM","orderDetailsId":48828005,"productName":"走豆測試","parentId":48827590,"type":4},{"id":79,"printerDeviceId":1,"status":1,"tableName":"51536","orderNo":"gs201351936242891","orderTime":2020,"person":2,"orderDetailsTime":"May 11, 2020 11:41:41 AM","orderDetailsId":48828006,"productName":"精選牛肉","parentId":0,"type":3},{"id":80,"printerDeviceId":1,"status":1,"tableName":"51536","orderNo":"gs201351936242891","orderTime":2020,"person":2,"orderDetailsTime":"May 11, 2020 11:41:41 AM","orderDetailsId":48828007,"productName":"走豆測試","parentId":48828006,"type":4},{"id":81,"printerDeviceId":1,"status":1,"tableName":"51536","orderNo":"gs201351936242891","orderTime":2020,"person":2,"orderDetailsTime":"May 11, 2020 11:41:41 AM","orderDetailsId":48828008,"productName":"雞飯(四客)","parentId":48828006,"type":3},{"id":82,"printerDeviceId":1,"status":1,"tableName":"51536","orderNo":"gs201351936242891","orderTime":2020,"person":2,"orderDetailsTime":"May 11, 2020 11:41:41 AM","orderDetailsId":48828009,"productName":"精選牛肉","parentId":48828006,"type":3}]}
* prj狀態為不切紙
*/
private
boolean
success
;
private
long
sysTime
;
private
String
data
;
@Data
public
static
class
DataBean
{
public
Map
<
String
,
List
<
Bean
>>
prjMap
;
@Data
public
static
class
Bean
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
3210457151279539745L
;
public
static
final
int
PRJ_STATUS_NOT_CUT_PAPER
=
1
;
/**
* prj狀態為切紙
*/
public
static
final
int
PRJ_STATUS_CUT_PAPER
=
2
;
/**
* prj狀態為跟隨主項
*/
public
static
final
int
PRJ_STATUS_FOLLOW_PARENT
=
3
;
/**
* id : 77
* printerDeviceId : 1
...
...
@@ -58,6 +56,9 @@ public class PrjBean {
* 食品类型#3:食品;4:细项;
*/
private
int
type
;
public
static
final
int
FOOD_TYPE
=
3
;
public
static
final
int
FOOD_ITEM_TYPE
=
4
;
/**
* 打印狀態
*/
...
...
@@ -115,6 +116,4 @@ public class PrjBean {
private
String
printPosition
;
//廚房位置
private
String
foodGroupName
;
//食品組
private
String
flyingSinglePosition
;
//飛單位置
}
}
}
library-print/src/main/java/com/gingersoft/gsa/cloud/print/impl/OnPrjPrintResultListener.java
0 → 100644
View file @
31f65a09
package
com
.
gingersoft
.
gsa
.
cloud
.
print
.
impl
;
/**
* @author 宇航.
* User: admin
* Date: 2021/2/26
* Time: 10:49
* prj 打印結果回調
* Use:
*/
public
interface
OnPrjPrintResultListener
{
/**
* prj 打印結果回調
*
* @param prjIds 本次打印的prj集合的id
* @param errorCode 錯誤碼
*/
void
onResult
(
int
errorCode
,
String
prjIds
);
}
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