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
a2715edb
Commit
a2715edb
authored
Feb 04, 2021
by
Wyh
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1、彈窗關閉優化 2、預約單無法自動接單問題 3、供應鏈刪除單位、加運費、焦點遺失問題
parent
94e2feb7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
39 changed files
with
407 additions
and
171 deletions
+407
-171
component-coldchain/src/main/java/com/gingersoft/coldchain_module/mvp/ui/activity/ColdChainMainActivity.java
+0
-2
component-coldchain/src/main/java/com/gingersoft/coldchain_module/mvp/ui/activity/OrderDetailsActivity.java
+0
-2
component-delivery-pick/src/main/java/com/gingersoft/gsa/delivery_pick_mode/model/viewModel/PageViewModel.kt
+21
-23
component-delivery-pick/src/main/java/com/gingersoft/gsa/delivery_pick_mode/mvp/ui/activity/PrjQueryActivity.java
+0
-1
component-delivery-pick/src/main/java/com/gingersoft/gsa/delivery_pick_mode/ui/activity/OrderDetailsActivity.kt
+5
-11
component-print/src/main/java/com/joe/print/mvp/ui/fragment/IpPrintListActivityFragment.java
+0
-1
component-print/src/main/java/com/joe/print/mvp/ui/fragment/LocalPrintFragment.java
+0
-1
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/bean/ConfirmOrderBean.java
+1
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/contract/OrderDetailsContract.java
+8
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/model/OrderDetailsModel.java
+6
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/presenter/NewFoodIngredientsPresenter.java
+13
-7
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/presenter/NewSupplierPresenter.java
+1
-1
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/presenter/OrderDetailsPresenter.java
+48
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/presenter/ShoppingCatPresenter.java
+3
-1
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/server/SupplierServer.java
+10
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/activity/SupplyChainMainActivity.java
+26
-30
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/adapter/DeputyUnitAdapter.java
+6
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/adapter/ShoppingCartAdapter.java
+0
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/category/CategoryFragment.java
+0
-1
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/food/FoodIngredientsFragment.java
+0
-1
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/food/FoodUnitPageFragment.java
+15
-8
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/food/MeasurementUnitFragment.java
+0
-1
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/food/NewFoodUnitFragment.java
+1
-1
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/order/OrderDetailsFragment.java
+33
-26
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/order/PurchaseListFragment.java
+0
-1
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/order/ShoppingCatFragment.java
+0
-1
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/supplier/NewSupplierFragment.java
+4
-1
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/supplier/SupplierListFragment.java
+3
-1
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/warehouse/WareHouseListFragment.java
+5
-2
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/widget/EditTextPopup.java
+39
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/widget/InventoryConsumptionPopup.java
+4
-0
library-common/src/main/java/com/gingersoft/gsa/cloud/common/utils/inputFilter/InputFilterUtils.java
+75
-23
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/adapter/multi/InputProvider.java
+4
-5
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/utils/AppDialog.java
+18
-9
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/view/edittext/AmountEditText.java
+1
-2
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/view/edittext/ClearZeroEditText.java
+52
-0
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/view/edittext/NoSoftKeyboardEditText.java
+1
-1
library-ui/src/main/res/layout/item_multi_title_layout.xml
+2
-2
library-ui/src/main/res/layout/multi_input.xml
+2
-5
No files found.
component-coldchain/src/main/java/com/gingersoft/coldchain_module/mvp/ui/activity/ColdChainMainActivity.java
View file @
a2715edb
...
...
@@ -496,7 +496,6 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre
//提示補單
new
AppDialog
().
showWaringDialog
(
this
,
"是否暫停接單?"
,
(
view
,
dialog
)
->
{
mPresenter
.
updateRestOpenStatus
(
state
,
restaurantId
);
dialog
.
dismiss
();
});
}
restaurantPopup
.
dismiss
();
...
...
@@ -508,7 +507,6 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre
}
else
{
//提示補單
new
AppDialog
().
showWaringDialog
(
this
,
"不滿足送貨條件,是否需要補單?"
,
(
view
,
dialog
)
->
{
dialog
.
dismiss
();
jumpSupplementOrder
(
bean
);
});
}
...
...
component-coldchain/src/main/java/com/gingersoft/coldchain_module/mvp/ui/activity/OrderDetailsActivity.java
View file @
a2715edb
...
...
@@ -321,7 +321,6 @@ public class OrderDetailsActivity extends BaseActivity<OrderDetailsPresenter> im
}
else
if
(
btnBeans
.
get
(
position
).
getType
()
==
BtnBuilder
.
CancelBtn
)
{
//取消訂單
new
AppDialog
().
showWaringDialog
(
this
,
"確認取消訂單?"
,
(
v
,
dialog
)
->
{
dialog
.
dismiss
();
if
(
bean
.
isDelete
()
==
0
)
{
mPresenter
.
cancelOrderAndLogistics
(
orderId
);
}
else
{
...
...
@@ -331,7 +330,6 @@ public class OrderDetailsActivity extends BaseActivity<OrderDetailsPresenter> im
}
else
if
(
btnBeans
.
get
(
position
).
getType
()
==
BtnBuilder
.
LogisticsBtn
)
{
//取消物流
new
AppDialog
().
showWaringDialog
(
this
,
"確認取消物流?"
,
(
v
,
dialog
)
->
{
dialog
.
dismiss
();
mPresenter
.
cancelLogistics
(
bean
.
getID
(),
false
);
});
}
else
if
(
btnBeans
.
get
(
position
).
getType
()
==
BtnBuilder
.
PrintBtn
)
{
...
...
component-delivery-pick/src/main/java/com/gingersoft/gsa/delivery_pick_mode/model/viewModel/PageViewModel.kt
View file @
a2715edb
...
...
@@ -225,29 +225,6 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
confirmOrder
(
orderDetail
,
2
,
trafficType
,
restaurantId
,
isPrintPrj
=
true
,
isPrintBill
=
true
)
{
//確認之後,刷新列表
refreshState
.
postValue
(
0
)
launch
({
//獲取預約單
repository
.
requestOrderList
(
restaurantId
.
toString
(),
fragmentStatus
[
1
],
fragmentType
[
0
],
"1"
,
orderNo
,
phone
,
1
).
apply
{
if
(
isSuccess
())
{
val
data
=
getData
()
if
(
data
!=
null
)
{
val
dataList
=
data
.
data
//這裡判斷數量大於1,默認有一條配置數據,忽略掉
if
(
dataList
!=
null
&&
dataList
.
size
>
1
)
{
//確認訂單之前得先獲取訂單詳情
val
orderInfo
=
repository
.
getOrderInfo
(
dataList
[
0
].
Id
.
toString
())
if
(
orderInfo
.
data
!=
null
&&
orderInfo
.
data
!!
.
isNotEmpty
())
{
val
orderDetail
=
orderInfo
.
data
!!
[
0
]
if
(
verificationAmount
(
orderDetail
))
return
@launch
updateOrderAndPrint
(
restaurantId
,
orderDetail
,
8
,
false
)
{
refreshState
.
postValue
(
0
)
}
}
}
}
}
}
},
{})
}
}
}
...
...
@@ -261,6 +238,27 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
}
}
//獲取預約單
repository
.
requestOrderList
(
restaurantId
.
toString
(),
fragmentStatus
[
1
],
fragmentType
[
0
],
"1"
,
orderNo
,
phone
,
1
).
apply
{
if
(
isSuccess
())
{
val
data
=
getData
()
if
(
data
!=
null
)
{
val
dataList
=
data
.
data
//這裡判斷數量大於1,默認有一條配置數據,忽略掉
if
(
dataList
!=
null
&&
dataList
.
size
>
1
)
{
//確認訂單之前得先獲取訂單詳情
val
orderInfo
=
repository
.
getOrderInfo
(
dataList
[
0
].
Id
.
toString
())
if
(
orderInfo
.
data
!=
null
&&
orderInfo
.
data
!!
.
isNotEmpty
())
{
val
orderDetail
=
orderInfo
.
data
!!
[
0
]
if
(
verificationAmount
(
orderDetail
))
return
@launch
updateOrderAndPrint
(
restaurantId
,
orderDetail
,
8
,
false
)
{
refreshState
.
postValue
(
0
)
}
}
}
}
}
}
},
{
//報錯處理
})
...
...
component-delivery-pick/src/main/java/com/gingersoft/gsa/delivery_pick_mode/mvp/ui/activity/PrjQueryActivity.java
View file @
a2715edb
...
...
@@ -195,7 +195,6 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements
if
(
prjData
.
get
(
position
).
getPrinterType
()
==
3
)
{
//已打印的,提示是否重新打印
new
AppDialog
().
showWaringDialog
(
mContext
,
"食品已打印,確認重印?"
,
(
view1
,
dialog
)
->
{
dialog
.
dismiss
();
organizeData
(
position
,
prjData
);
});
}
else
{
...
...
component-delivery-pick/src/main/java/com/gingersoft/gsa/delivery_pick_mode/ui/activity/OrderDetailsActivity.kt
View file @
a2715edb
...
...
@@ -708,17 +708,11 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() {
*/
private
fun
PageViewModel
.
confirmCancelLogistics
(
orderId
:
String
,
reasonId
:
String
,
reasonDesc
:
String
)
{
AppDialog
().
showWaringDialog
(
this
@OrderDetailsActivity
,
"是否確認取消第三方派送?"
)
{
v
,
dialog
->
when
(
v
.
id
)
{
R
.
id
.
tv_dialog_confirm
->
{
dialog
.
dismiss
()
showLoading
()
cancelLogistics
(
restaurantId
,
orderId
,
reasonId
,
reasonDesc
)
{
cancelDialogForLoading
()
ToastUtils
.
show
(
this
@OrderDetailsActivity
,
it
)
finish
()
}
}
R
.
id
.
tv_dialog_cancel
->
dialog
.
dismiss
()
showLoading
()
cancelLogistics
(
restaurantId
,
orderId
,
reasonId
,
reasonDesc
)
{
cancelDialogForLoading
()
ToastUtils
.
show
(
this
@OrderDetailsActivity
,
it
)
finish
()
}
}
}
...
...
component-print/src/main/java/com/joe/print/mvp/ui/fragment/IpPrintListActivityFragment.java
View file @
a2715edb
...
...
@@ -265,7 +265,6 @@ public class IpPrintListActivityFragment extends BaseFragment<IpPrintListActivit
mPresenter
.
deletePrinter
(
devicess
.
get
(
position
).
getId
()
+
""
);
devicess
.
remove
(
position
);
printListAdapter
.
notifyItemRemoved
(
position
);
dialog
.
dismiss
();
if
(
devicess
==
null
||
devicess
.
size
()
==
0
)
{
mTvAddPrint
.
setVisibility
(
View
.
VISIBLE
);
}
else
{
...
...
component-print/src/main/java/com/joe/print/mvp/ui/fragment/LocalPrintFragment.java
View file @
a2715edb
...
...
@@ -187,7 +187,6 @@ public class LocalPrintFragment extends BaseFragment<LocalPrintPresenter> implem
printCurrencyBeans
.
remove
(
finalI1
);
loadView
(
printCurrencyBeans
);
}
dialog
.
dismiss
();
});
});
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/bean/ConfirmOrderBean.java
View file @
a2715edb
...
...
@@ -56,6 +56,7 @@ public class ConfirmOrderBean {
purchaseOrder
.
setRestaurantId
(
RestaurantInfoManager
.
newInstance
().
getRestaurantId
());
purchaseOrder
.
setRemarks
(
shoppingCartBean
.
getRemarks
());
purchaseOrder
.
setInitialShippingTime
(
shoppingCartBean
.
getInitialShippingTime
());
purchaseOrder
.
setShipping
(
shoppingCartBean
.
getShipping
());
purchaseOrder
.
setTotalAmount
(
totalAmount
);
purchaseOrder
.
setActualPayment
(
MoneyUtil
.
sum
(
totalAmount
,
shoppingCartBean
.
getShipping
()));
return
purchaseOrder
;
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/contract/OrderDetailsContract.java
View file @
a2715edb
...
...
@@ -31,6 +31,8 @@ public interface OrderDetailsContract {
void
loadOrderDetails
(
PurchaseOrderDetailsBean
orderDetailsBean
);
void
uploadPicSuccess
(
String
imgUrl
);
void
buyAgain
();
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
...
...
@@ -46,5 +48,11 @@ public interface OrderDetailsContract {
Observable
<
BaseResult
>
deleteOrder
(
int
orderId
);
/**
* 再來一單
* @param map
* @return
*/
Observable
<
BaseResult
>
buyAgainByFoodIds
(
Map
<
String
,
Object
>
map
);
}
}
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/model/OrderDetailsModel.java
View file @
a2715edb
...
...
@@ -72,4 +72,9 @@ public class OrderDetailsModel extends BaseModel implements OrderDetailsContract
public
Observable
<
BaseResult
>
deleteOrder
(
int
orderId
)
{
return
mRepositoryManager
.
obtainRetrofitService
(
SupplierServer
.
class
).
deleteOrder
(
orderId
);
}
@Override
public
Observable
<
BaseResult
>
buyAgainByFoodIds
(
Map
<
String
,
Object
>
map
)
{
return
mRepositoryManager
.
obtainRetrofitService
(
SupplierServer
.
class
).
buyAgainByFoodIds
(
map
);
}
}
\ No newline at end of file
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/presenter/NewFoodIngredientsPresenter.java
View file @
a2715edb
...
...
@@ -19,6 +19,7 @@ import com.gingersoft.gsa.cloud.ui.adapter.bean.InfoMultiBean;
import
com.gingersoft.gsa.cloud.ui.adapter.bean.MultiInputBean
;
import
com.gingersoft.gsa.cloud.ui.adapter.bean.MultiSelectBean
;
import
com.gingersoft.gsa.cloud.ui.adapter.bean.UploadPicMultiBean
;
import
com.gingersoft.gsa.cloud.ui.adapter.multi.RemarkProvider
;
import
com.gingersoft.gsa.cloud.ui.bean.SectionCheckItem
;
import
com.gingersoft.supply_chain.R
;
import
com.gingersoft.supply_chain.mvp.bean.DeputyUnitBean
;
...
...
@@ -201,21 +202,21 @@ public class NewFoodIngredientsPresenter extends BasePresenter<NewFoodIngredient
infoMultiBeans
.
add
(
new
InfoMultiBean
(
InfoMultiBean
.
ITEM_TYPE_LINE
));
infoMultiBeans
.
add
(
new
InfoMultiBean
(
InfoMultiBean
.
ITEM_TYPE_TITLE
,
"基本信息"
));
infoMultiBeans
.
add
(
new
MultiSelectBean
(
InfoMultiBean
.
EDIT_FOOD_ITEM_SELECT
,
"所屬供應商"
,
true
,
"請輸入/選擇供應商"
,
SELECT_SUPPLIER_RESULTCODE
,
true
,
new
InputFilter
[]{
InputFilterUtils
.
getLengthFilter
(
context
,
16
),
InputFilterUtils
.
getChAndEnAndNumInputFilter
(
context
)},
SupplierListFragment
.
class
));
infoMultiBeans
.
add
(
new
MultiInputBean
(
InfoMultiBean
.
ITEM_TYPE_INPUT
,
"食材名稱"
,
true
,
"請輸入名稱"
));
infoMultiBeans
.
add
(
new
MultiInputBean
(
InfoMultiBean
.
ITEM_TYPE_INPUT
,
"食材名稱"
,
true
,
"請輸入名稱"
,
new
InputFilter
[]{
InputFilterUtils
.
getLengthFilter
(
context
,
16
),
InputFilterUtils
.
getChAndEnAndNumInputFilter
(
context
)}
));
infoMultiBeans
.
add
(
new
MultiSelectBean
(
InfoMultiBean
.
EDIT_FOOD_ITEM_SELECT
,
"食材類別"
,
true
,
"請選擇食材類別"
,
SELECT_FOOD_CATEGORY_REQUEST_CODE
,
CategorySelectFragment
.
class
));
infoMultiBeans
.
add
(
new
MultiSelectBean
(
InfoMultiBean
.
EDIT_FOOD_ITEM_SELECT
,
"基本單位"
,
true
,
"請選擇食材單位"
,
SELECT_PACKAGE_SPECIFICATION_REQUEST_CODE
,
FoodUnitPageFragment
.
class
));
infoMultiBeans
.
add
(
new
MultiInputBean
(
InfoMultiBean
.
ITEM_TYPE_INPUT
,
"包裝說明"
,
false
,
"請輸入包裝說明"
,
new
InputFilter
[]{
new
InputFilter
.
LengthFilter
(
10
)}));
infoMultiBeans
.
add
(
new
MultiInputBean
(
InfoMultiBean
.
ITEM_TYPE_INPUT
,
"食材編號"
,
false
,
"請輸入食材編號"
));
infoMultiBeans
.
add
(
new
MultiInputBean
(
InfoMultiBean
.
ITEM_TYPE_INPUT
,
"包裝說明"
,
false
,
"請輸入包裝說明"
,
new
InputFilter
[]{
InputFilterUtils
.
getLengthFilter
(
context
,
10
),
InputFilterUtils
.
getTypeFilter
(
context
,
InputFilterUtils
.
chAndEnAndNumAndSlash
)}));
infoMultiBeans
.
add
(
new
MultiInputBean
(
InfoMultiBean
.
ITEM_TYPE_INPUT
,
"食材編號"
,
false
,
"請輸入食材編號"
,
new
InputFilter
[]{
InputFilterUtils
.
getLengthFilter
(
context
,
11
),
InputFilterUtils
.
getEnAndNumInputFilter
(
context
)}
));
infoMultiBeans
.
add
(
new
MultiInputBean
(
InfoMultiBean
.
ITEM_TYPE_INPUT
,
"單價($)"
,
false
,
"請輸入單價,保留2位小數"
,
new
InputFilter
[]{
InputFilterUtils
.
getLengthFilter
(
context
,
9
),
new
DecimalDigitsInputFilter
(
context
,
2
)},
InputType
.
TYPE_CLASS_NUMBER
|
InputType
.
TYPE_NUMBER_FLAG_DECIMAL
));
infoMultiBeans
.
add
(
new
InfoMultiBean
(
InfoMultiBean
.
ITEM_TYPE_LINE
));
infoMultiBeans
.
add
(
new
InfoMultiBean
(
InfoMultiBean
.
ITEM_TYPE_TITLE
,
"庫存預警"
));
infoMultiBeans
.
add
(
new
InfoMultiBean
(
InfoMultiBean
.
ITEM_MULTIPLE_BOOLEAN
,
"是否審核"
,
false
,
"請輸入單位"
));
infoMultiBeans
.
add
(
new
MultiInputBean
(
InfoMultiBean
.
ITEM_TYPE_INPUT
,
"最低庫存"
,
false
,
"請輸入最低庫存"
,
new
InputFilter
[]{
new
InputFilter
.
LengthFilter
(
5
)},
EditorInfo
.
TYPE_CLASS_NUMBER
));
infoMultiBeans
.
add
(
new
MultiInputBean
(
InfoMultiBean
.
ITEM_TYPE_INPUT
,
"保質期(天)"
,
false
,
"請輸入保質期"
,
new
InputFilter
[]{
new
InputFilter
.
LengthFilter
(
5
)},
EditorInfo
.
TYPE_CLASS_NUMBER
));
infoMultiBeans
.
add
(
new
MultiInputBean
(
InfoMultiBean
.
ITEM_TYPE_INPUT
,
"保質期預警(天)"
,
false
,
"請輸入預警天數"
,
new
InputFilter
[]{
new
InputFilter
.
LengthFilter
(
5
)},
EditorInfo
.
TYPE_CLASS_NUMBER
));
infoMultiBeans
.
add
(
new
MultiInputBean
(
InfoMultiBean
.
ITEM_TYPE_INPUT
,
"最低庫存"
,
false
,
"請輸入最低庫存"
,
new
InputFilter
[]{
InputFilterUtils
.
getLengthFilter
(
context
,
5
)},
EditorInfo
.
TYPE_CLASS_NUMBER
));
infoMultiBeans
.
add
(
new
MultiInputBean
(
InfoMultiBean
.
ITEM_TYPE_INPUT
,
"保質期(天)"
,
false
,
"請輸入保質期"
,
new
InputFilter
[]{
InputFilterUtils
.
getLengthFilter
(
context
,
5
)},
EditorInfo
.
TYPE_CLASS_NUMBER
));
infoMultiBeans
.
add
(
new
MultiInputBean
(
InfoMultiBean
.
ITEM_TYPE_INPUT
,
"保質期預警(天)"
,
false
,
"請輸入預警天數"
,
new
InputFilter
[]{
InputFilterUtils
.
getLengthFilter
(
context
,
5
)},
EditorInfo
.
TYPE_CLASS_NUMBER
));
infoMultiBeans
.
add
(
new
InfoMultiBean
(
InfoMultiBean
.
ITEM_TYPE_LINE
));
infoMultiBeans
.
add
(
new
InfoMultiBean
(
InfoMultiBean
.
ITEM_TYPE_TITLE
,
"備註"
));
infoMultiBeans
.
add
(
new
MultiInputBean
(
InfoMultiBean
.
ITEM_MULTIPLE_INPUT_REMARK
,
""
,
false
,
"請輸入備註"
));
infoMultiBeans
.
add
(
new
MultiInputBean
(
InfoMultiBean
.
ITEM_MULTIPLE_INPUT_REMARK
,
""
,
false
,
"請輸入備註"
,
new
InputFilter
[]{
InputFilterUtils
.
getLengthFilter
(
context
,
RemarkProvider
.
REMARK_TEXT_LENGTH
),
InputFilterUtils
.
getChAndEnAndNumAndPtInputFilter
(
context
)}
));
if
(
purchaseFoodBean
!=
null
)
{
//供應商名稱
infoMultiBeans
.
get
(
supplierIndex
).
setShowValue
(
purchaseFoodBean
.
getSupplierName
());
...
...
@@ -318,6 +319,11 @@ public class NewFoodIngredientsPresenter extends BasePresenter<NewFoodIngredient
categoryName
.
append
(
categoryTrees
.
getName
())
.
append
(
PurchaseFoodBean
.
CATEGORY_DIVIDER
);
}
if
(
purchaseFoodBean
!=
null
)
{
//食材信息不為空,設置分類id為最後一個分類的id
//例如:選擇了一個三級分類,下標0為父類,1為子類,2位當前分類
purchaseFoodBean
.
setFoodCategoryId
(
foodCategoryTrees
.
get
(
foodCategoryTrees
.
size
()
-
1
).
getId
());
}
categoryName
.
deleteCharAt
(
categoryName
.
lastIndexOf
(
PurchaseFoodBean
.
CATEGORY_DIVIDER
));
infoMultiBeans
.
get
(
foodIngredientCategoryIndex
).
setShowValue
(
categoryName
.
toString
());
mRootView
.
refreshAdapterByPosition
(
foodIngredientCategoryIndex
);
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/presenter/NewSupplierPresenter.java
View file @
a2715edb
...
...
@@ -164,7 +164,7 @@ public class NewSupplierPresenter extends BasePresenter<NewSupplierContract.Mode
infoMultiBeans
.
add
(
new
InfoMultiBean
(
InfoMultiBean
.
ITEM_TYPE_LINE
));
infoMultiBeans
.
add
(
new
InfoMultiBean
(
InfoMultiBean
.
ITEM_TYPE_TITLE
,
"備註"
));
MultiInputBean
remarkInputBean
=
new
MultiInputBean
(
InfoMultiBean
.
ITEM_MULTIPLE_INPUT_REMARK
,
null
,
false
,
"請輸入備註"
,
new
InputFilter
[]{
InputFilterUtils
.
get
MaxLengthFilterDisChAndEn
(
RemarkProvider
.
REMARK_TEXT_LENGTH
),
InputFilterUtils
.
getChAndEnAndNum
InputFilter
(
mContext
)});
MultiInputBean
remarkInputBean
=
new
MultiInputBean
(
InfoMultiBean
.
ITEM_MULTIPLE_INPUT_REMARK
,
null
,
false
,
"請輸入備註"
,
new
InputFilter
[]{
InputFilterUtils
.
get
LengthFilter
(
mContext
,
RemarkProvider
.
REMARK_TEXT_LENGTH
),
InputFilterUtils
.
getChAndEnAndNumAndPt
InputFilter
(
mContext
)});
remarkInputBean
.
setMaxLength
(
RemarkProvider
.
REMARK_TEXT_LENGTH
);
infoMultiBeans
.
add
(
remarkInputBean
);
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/presenter/OrderDetailsPresenter.java
View file @
a2715edb
...
...
@@ -10,10 +10,12 @@ import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import
com.gingersoft.gsa.cloud.common.utils.other.TextUtil
;
import
com.gingersoft.gsa.cloud.common.utils.view.BitmapUtil
;
import
com.gingersoft.supply_chain.mvp.bean.DeputyUnitBean
;
import
com.gingersoft.supply_chain.mvp.bean.PurchaseFoodBean
;
import
com.gingersoft.supply_chain.mvp.bean.PurchaseOrderDetailsBean
;
import
com.gingersoft.supply_chain.mvp.bean.OrderWareHouseBean
;
import
com.gingersoft.supply_chain.mvp.bean.WareHousingUnitBean
;
import
com.gingersoft.supply_chain.mvp.content.Constant
;
import
com.gingersoft.supply_chain.mvp.content.SupplyShoppingCart
;
import
com.jess.arms.integration.AppManager
;
import
com.jess.arms.di.scope.FragmentScope
;
import
com.jess.arms.mvp.BasePresenter
;
...
...
@@ -273,6 +275,52 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
}
/**
* 再來一單
*/
public
void
buyAgainByFoodIds
(
List
<
PurchaseOrderDetailsBean
.
PurchaseOrderDetailsInfoVosBean
>
data
)
{
if
(
data
==
null
||
data
.
size
()
<=
0
)
{
return
;
}
Map
<
String
,
Object
>
map
=
new
HashMap
<>(
3
);
Constant
.
addRestaurantId
(
map
);
Constant
.
addBrandId
(
map
);
StringBuilder
stringBuilder
=
new
StringBuilder
();
for
(
PurchaseOrderDetailsBean
.
PurchaseOrderDetailsInfoVosBean
item
:
data
)
{
stringBuilder
.
append
(
item
.
getPurchaseFoodId
()).
append
(
","
);
}
map
.
put
(
"ids"
,
stringBuilder
.
substring
(
0
,
stringBuilder
.
length
()
-
1
));
mModel
.
buyAgainByFoodIds
(
map
)
.
subscribeOn
(
Schedulers
.
io
())
.
doOnSubscribe
(
disposable
->
mRootView
.
showLoading
(
GET_INFO_LOADING
))
.
subscribeOn
(
AndroidSchedulers
.
mainThread
())
.
doAfterNext
(
disposable
->
mRootView
.
hideLoading
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mRootView
))
.
subscribe
(
new
ErrorHandleSubscriber
<
BaseResult
>(
mErrorHandler
)
{
@Override
public
void
onNext
(
BaseResult
baseResult
)
{
if
(
baseResult
.
isSuccess
())
{
List
<
PurchaseFoodBean
>
purchaseFoodBeans
=
GsonUtils
.
GsonToList
(
baseResult
.
getData
(),
PurchaseFoodBean
.
class
);
for
(
PurchaseFoodBean
purchaseFoodBean
:
purchaseFoodBeans
)
{
for
(
PurchaseOrderDetailsBean
.
PurchaseOrderDetailsInfoVosBean
item
:
data
)
{
if
(
purchaseFoodBean
.
getId
()
==
item
.
getPurchaseFoodId
())
{
purchaseFoodBean
.
setFoodQuantity
(
item
.
getFoodQuantity
());
break
;
}
}
}
SupplyShoppingCart
.
getInstance
().
clear
();
SupplyShoppingCart
.
getInstance
().
getCartFoods
().
addAll
(
purchaseFoodBeans
);
mRootView
.
buyAgain
();
}
else
{
mRootView
.
showMessage
(
GET_INFO_ERROR
);
}
}
});
}
/**
* 生成入庫對象
*/
private
OrderWareHouseBean
getWareHouseBean
(
int
state
,
String
remark
,
double
totalAmount
,
List
<
OrderWareHouseBean
.
PurchaseWarehousingOrderDetail
>
purchaseWarehousingOrderDetails
)
{
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/presenter/ShoppingCatPresenter.java
View file @
a2715edb
...
...
@@ -101,7 +101,9 @@ public class ShoppingCatPresenter extends BasePresenter<ShoppingCatContract.Mode
PurchaseFoodBean
food
=
foods
.
get
(
0
);
shoppingCartBean
.
setAddress
(
food
.
getAddress
());
shoppingCartBean
.
setMinimumAmount
(
food
.
getMinimumAmount
());
shoppingCartBean
.
setSupplierId
(
entry
.
getKey
());
if
(
entry
.
getKey
()
!=
null
)
{
shoppingCartBean
.
setSupplierId
(
entry
.
getKey
());
}
shoppingCartBean
.
setSupplierName
(
food
.
getSupplierName
());
//統計當前供應商所選中食品的總金額
double
supplierTotalAmount
=
0
;
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/server/SupplierServer.java
View file @
a2715edb
...
...
@@ -283,6 +283,16 @@ public interface SupplierServer {
Observable
<
BaseResult
>
deleteOrder
(
@Field
(
"id"
)
int
orderId
);
/**
* 再來一單,通過食材ids獲取詳細信息
*
* @param map
* @return
*/
@Headers
({
"Domain-Name: ricepon-purchase"
})
@GET
(
"purchaseFood/batch/list"
+
RetrofitUrlManager
.
IDENTIFICATION_PATH_SIZE
+
2
)
Observable
<
BaseResult
>
buyAgainByFoodIds
(
@QueryMap
Map
<
String
,
Object
>
map
);
/**
* 獲取下單頁面的分類結構
*
* @param map
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/activity/SupplyChainMainActivity.java
View file @
a2715edb
...
...
@@ -2,7 +2,6 @@ package com.gingersoft.supply_chain.mvp.ui.activity;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.view.MotionEvent
;
import
android.view.View
;
import
android.widget.EditText
;
...
...
@@ -10,7 +9,6 @@ import android.widget.EditText;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
com.gingersoft.gsa.cloud.ui.adapter.multi.InfoMultiAdapter
;
import
com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog
;
import
com.gingersoft.supply_chain.R
;
import
com.gingersoft.supply_chain.di.component.DaggerSupplyChainMainComponent
;
...
...
@@ -18,14 +16,10 @@ import com.gingersoft.supply_chain.mvp.content.SupplyShoppingCart;
import
com.gingersoft.supply_chain.mvp.contract.SupplyChainMainContract
;
import
com.gingersoft.supply_chain.mvp.presenter.SupplyChainMainPresenter
;
import
com.gingersoft.supply_chain.mvp.ui.fragment.FunctionListFragment
;
import
com.gingersoft.supply_chain.mvp.ui.fragment.food.FoodUnitPageFragment
;
import
com.gingersoft.supply_chain.mvp.utils.NotDispatchListener
;
import
com.gingersoft.supply_chain.mvp.utils.HideUtil
;
import
com.jess.arms.base.BaseFragmentActivity
;
import
com.jess.arms.di.component.AppComponent
;
import
com.jess.arms.utils.ArmsUtils
;
import
com.jess.arms.utils.DeviceUtils
;
import
com.xuexiang.rxutil2.rxjava.RxJavaUtils
;
import
static
com
.
jess
.
arms
.
utils
.
Preconditions
.
checkNotNull
;
...
...
@@ -51,30 +45,27 @@ public class SupplyChainMainActivity extends BaseFragmentActivity<SupplyChainMai
@Override
public
void
initData
(
@Nullable
Bundle
savedInstanceState
)
{
// HideUtil.init(this);
loadRootFragment
(
R
.
id
.
layout_supply_chain_content
,
FunctionListFragment
.
newInstance
());
}
@Override
public
boolean
dispatchTouchEvent
(
MotionEvent
ev
)
{
if
(
getTopFragment
()
instanceof
NotDispatchListener
)
{
return
super
.
dispatchTouchEvent
(
ev
);
}
if
(
ev
.
getAction
()
==
MotionEvent
.
ACTION_DOWN
)
{
// 获得当前得到焦点的View,一般情况下就是EditText(特殊情况就是轨迹求或者实体案件会移动焦点)
View
v
=
getCurrentFocus
();
if
(
v
!=
null
&&
v
.
getTag
()
!=
null
&&
v
.
getTag
()
==
InfoMultiAdapter
.
NOT_HIDE_KEYBOARD
){
return
super
.
dispatchTouchEvent
(
ev
);
}
if
(
isShouldHideInput
(
v
,
ev
))
{
if
(
v
instanceof
EditText
)
{
//不然不會觸發焦點監聽事件
v
.
clearFocus
();
}
DeviceUtils
.
hideSoftKeyboard
(
mContext
,
getWindow
().
getDecorView
());
}
}
return
super
.
dispatchTouchEvent
(
ev
);
}
// @Override
// public boolean dispatchTouchEvent(MotionEvent ev) {
// if (getTopFragment() instanceof NotDispatchListener) {
// return super.dispatchTouchEvent(ev);
// }
// if (ev.getAction() == MotionEvent.ACTION_DOWN) {
// // 获得当前得到焦点的View,一般情况下就是EditText(特殊情况就是轨迹求或者实体案件会移动焦点)
// View v = getCurrentFocus();
// if (v != null && v.getTag() != null && v.getTag() == InfoMultiAdapter.NOT_HIDE_KEYBOARD) {
// return super.dispatchTouchEvent(ev);
// }
// if (isShouldHideInput(v, ev)) {
// DeviceUtils.hideSoftKeyboard(mContext, v);
// }
// }
// return super.dispatchTouchEvent(ev);
// }
/**
* 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时没必要隐藏
...
...
@@ -90,8 +81,13 @@ public class SupplyChainMainActivity extends BaseFragmentActivity<SupplyChainMai
int
left
=
l
[
0
],
top
=
l
[
1
],
bottom
=
top
+
v
.
getHeight
(),
right
=
left
+
v
.
getWidth
();
// 点击EditText的事件,忽略它。
return
event
.
getX
()
<=
left
||
event
.
getX
()
>=
right
||
event
.
getY
()
<=
top
||
event
.
getY
()
>=
bottom
;
if
(
event
.
getX
()
>
left
&&
event
.
getX
()
<
right
&&
event
.
getY
()
>
top
&&
event
.
getY
()
<
bottom
)
{
// 点击的是输入框区域,保留点击EditText的事件
return
false
;
}
else
{
return
true
;
}
}
// 如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一个焦点不在EditView上,和用户用轨迹球选择其他的焦点
return
false
;
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/adapter/DeputyUnitAdapter.java
View file @
a2715edb
package
com
.
gingersoft
.
supply_chain
.
mvp
.
ui
.
adapter
;
import
android.text.Editable
;
import
android.text.InputFilter
;
import
android.text.TextWatcher
;
import
android.view.View
;
import
android.widget.EditText
;
import
com.chad.library.adapter.base.BaseQuickAdapter
;
import
com.chad.library.adapter.base.viewholder.BaseViewHolder
;
import
com.gingersoft.gsa.cloud.common.utils.inputFilter.InputFilterUtils
;
import
com.gingersoft.gsa.cloud.common.utils.other.TextUtil
;
import
com.gingersoft.supply_chain.R
;
import
com.gingersoft.supply_chain.mvp.bean.BasicUnitBean
;
...
...
@@ -38,6 +40,7 @@ public class DeputyUnitAdapter extends BaseQuickAdapter<DeputyUnitBean, BaseView
viewHolder
.
setText
(
R
.
id
.
tv_deputy_unit_title
,
"副單位"
+
(
viewHolder
.
getAdapterPosition
()
+
1
));
viewHolder
.
setText
(
R
.
id
.
ed_deputy_unit_name
,
item
.
getDeputyUnit
());
viewHolder
.
setText
(
R
.
id
.
ed_deputy_unit_conversion_multiple
,
item
.
getConversionMultiple
()
+
""
);
//副單位換算倍數
TextWatcher
deputyUnitNameWatcher
=
new
TextWatcher
()
{
@Override
public
void
beforeTextChanged
(
CharSequence
s
,
int
start
,
int
count
,
int
after
)
{
...
...
@@ -55,6 +58,8 @@ public class DeputyUnitAdapter extends BaseQuickAdapter<DeputyUnitBean, BaseView
deputyUnitBean
.
setDeputyUnit
(
s
+
""
);
}
};
//副單位名稱輸入框
edDeputyUnitName
.
setFilters
(
new
InputFilter
[]{
InputFilterUtils
.
getLengthFilter
(
getContext
(),
5
),
InputFilterUtils
.
getChAndEnAndNumInputFilter
(
getContext
())});
setFocusChangeListener
(
edDeputyUnitName
,
deputyUnitNameWatcher
);
TextWatcher
conversionMultipleWatcher
=
new
TextWatcher
()
{
@Override
...
...
@@ -75,6 +80,7 @@ public class DeputyUnitAdapter extends BaseQuickAdapter<DeputyUnitBean, BaseView
}
}
};
setFocusChangeListener
(
edConversionMultiple
,
conversionMultipleWatcher
);
if
(
TextUtil
.
isEmptyOrNullOrUndefined
(
item
.
getDeputyUnit
()))
{
edDeputyUnitName
.
requestFocus
();
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/adapter/ShoppingCartAdapter.java
View file @
a2715edb
This diff is collapsed.
Click to expand it.
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/category/CategoryFragment.java
View file @
a2715edb
...
...
@@ -154,7 +154,6 @@ public class CategoryFragment extends BaseSupplyChainFragment<CategoryPresenter>
//刪除分類
AppDialog
.
getInstance
().
showWaringDialog
(
mContext
,
String
.
format
(
getString
(
R
.
string
.
str_delete_category_tip
),
foodCategoryTrees
.
getName
()),
(
view
,
dialog
)
->
{
categoryPopup
.
dismiss
();
dialog
.
dismiss
();
mPresenter
.
deleteFoodCategory
(
foodCategoryTrees
,
currentLevel
,
position
);
});
});
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/food/FoodIngredientsFragment.java
View file @
a2715edb
...
...
@@ -401,7 +401,6 @@ public class FoodIngredientsFragment extends BaseSupplyChainFragment<FoodIngredi
purchaseFoodBean
.
setFoodCategoryName
(
getCurrentCategory
());
}
mPresenter
.
deleteFood
(
purchaseFoodBean
.
getId
(),
purchaseFoodBean
.
getSupplierId
(),
purchaseFoodBean
.
getFoodCategoryId
(),
position
);
dialog
.
dismiss
();
});
}
});
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/food/FoodUnitPageFragment.java
View file @
a2715edb
package
com
.
gingersoft
.
supply_chain
.
mvp
.
ui
.
fragment
.
food
;
import
android.os.Bundle
;
import
android.text.InputFilter
;
import
android.util.Log
;
import
android.view.LayoutInflater
;
import
android.view.View
;
...
...
@@ -16,6 +17,7 @@ import androidx.recyclerview.widget.RecyclerView;
import
com.chad.library.adapter.base.BaseQuickAdapter
;
import
com.chad.library.adapter.base.listener.OnItemChildClickListener
;
import
com.gingersoft.gsa.cloud.common.utils.inputFilter.InputFilterUtils
;
import
com.gingersoft.gsa.cloud.common.utils.other.TextUtil
;
import
com.gingersoft.gsa.cloud.ui.utils.AppDialog
;
import
com.gingersoft.supply_chain.R
;
...
...
@@ -28,8 +30,14 @@ import com.gingersoft.supply_chain.mvp.presenter.FoodUnitPagePresenter;
import
com.gingersoft.supply_chain.mvp.ui.adapter.BasicUnitAdapter
;
import
com.gingersoft.supply_chain.mvp.ui.adapter.DeputyUnitAdapter
;
import
com.gingersoft.supply_chain.mvp.ui.fragment.BaseSupplyChainFragment
;
import
com.gingersoft.supply_chain.mvp.ui.widget.EditTextPopup
;
import
com.gingersoft.supply_chain.mvp.utils.NotDispatchListener
;
import
com.jess.arms.di.component.AppComponent
;
import
com.lxj.xpopup.XPopup
;
import
com.lxj.xpopup.impl.ConfirmPopupView
;
import
com.lxj.xpopup.interfaces.OnCancelListener
;
import
com.lxj.xpopup.interfaces.OnConfirmListener
;
import
com.lxj.xpopup.interfaces.OnInputConfirmListener
;
import
com.qmuiteam.qmui.alpha.QMUIAlphaTextView
;
import
com.qmuiteam.qmui.widget.QMUITopBar
;
import
com.qmuiteam.qmui.widget.dialog.QMUIDialog
;
...
...
@@ -46,7 +54,7 @@ import butterknife.OnClick;
/**
* ================================================
* Description:
最新版
食品單位填寫頁面
* Description: 食品單位填寫頁面
*/
public
class
FoodUnitPageFragment
extends
BaseSupplyChainFragment
<
FoodUnitPagePresenter
>
implements
FoodUnitPageContract
.
View
,
NotDispatchListener
{
...
...
@@ -117,6 +125,7 @@ public class FoodUnitPageFragment extends BaseSupplyChainFragment<FoodUnitPagePr
@Override
public
void
initData
(
@Nullable
Bundle
savedInstanceState
)
{
mPresenter
.
initData
(
getArguments
());
edBasicUnit
.
setFilters
(
new
InputFilter
[]{
InputFilterUtils
.
getLengthFilter
(
requireContext
(),
5
),
InputFilterUtils
.
getChAndEnAndNumInputFilter
(
requireContext
())});
edBasicUnit
.
requestFocus
();
}
...
...
@@ -156,14 +165,12 @@ public class FoodUnitPageFragment extends BaseSupplyChainFragment<FoodUnitPagePr
basicUnitAdapter
.
setOnItemClickListener
((
adapter
,
view
,
position
)
->
{
if
(
position
==
basicUnitAdapter
.
getItemCount
()
-
1
)
{
//新增
AppDialog
.
getInstance
().
showEditDialog
(
mContext
,
"新增單位"
,
"單位名稱:"
,
""
,
""
,
new
AppDialog
.
OnInputConfirmListener
()
{
@Override
public
void
onConfirm
(
String
text
)
{
if
(
TextUtil
.
isNotEmptyOrNullOrUndefined
(
text
))
{
mPresenter
.
addBasicUnit
(
text
,
basicUnitAdapter
.
getData
());
}
EditTextPopup
popup
=
new
EditTextPopup
(
requireContext
(),
new
InputFilter
[]{
InputFilterUtils
.
getLengthFilter
(
mContext
,
4
),
InputFilterUtils
.
getChAndEnAndNumInputFilter
(
mContext
)});
popup
.
setListener
(
text
->
{
if
(
TextUtil
.
isNotEmptyOrNullOrUndefined
(
text
))
{
mPresenter
.
addBasicUnit
(
text
,
basicUnitAdapter
.
getData
());
}
});
}
,
null
);
}
else
{
//先獲取當前焦點在哪個輸入框上,然後再填充內容
FragmentActivity
activity
=
getActivity
();
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/food/MeasurementUnitFragment.java
View file @
a2715edb
...
...
@@ -177,7 +177,6 @@ public class MeasurementUnitFragment extends BaseSupplyChainFragment<Measurement
List
<
MeasurementUnitBean
.
DataBean
.
Unit
>
data
=
measurementUnitAdapter
.
getData
();
MeasurementUnitBean
.
DataBean
.
Unit
unit
=
data
.
get
(
position
);
new
AppDialog
().
showWaringDialog
(
mContext
,
"是否確認刪除?"
,
(
view1
,
dialog
)
->
{
dialog
.
dismiss
();
mPresenter
.
deleteMeasurementUnit
(
unit
,
position
);
});
});
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/food/NewFoodUnitFragment.java
View file @
a2715edb
...
...
@@ -98,7 +98,7 @@ public class NewFoodUnitFragment extends BaseSupplyChainFragment<NewFoodUnitPres
infoMultiBeans
.
add
(
unitType
);
infoMultiBeans
.
add
(
new
MultiInputBean
(
InfoMultiBean
.
ITEM_TYPE_INPUT
,
"計量單位"
,
false
,
"請輸入計量單位"
,
new
InputFilter
[]{
InputFilterUtils
.
getLengthFilter
(
mContext
,
4
),
InputFilterUtils
.
getChAndEnAndNumInputFilter
(
mContext
)}));
infoMultiBeans
.
add
(
new
MultiInputBean
(
InfoMultiBean
.
ITEM_MULTIPLE_INPUT_REMARK
,
"備註"
,
false
,
"請輸入備註"
,
new
InputFilter
[]{
InputFilterUtils
.
getChAndEnAndNumInputFilter
(
mContext
)}));
infoMultiBeans
.
add
(
new
MultiInputBean
(
InfoMultiBean
.
ITEM_MULTIPLE_INPUT_REMARK
,
"備註"
,
false
,
"請輸入備註"
,
new
InputFilter
[]{
InputFilterUtils
.
getChAndEnAndNum
AndPt
InputFilter
(
mContext
)}));
if
(
foodUnit
!=
null
){
units
.
get
(
foodUnit
.
getType
()).
setChecked
(
true
);
infoMultiBeans
.
get
(
1
).
setShowValue
(
foodUnit
.
getUnitContent
());
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/order/OrderDetailsFragment.java
View file @
a2715edb
package
com
.
gingersoft
.
supply_chain
.
mvp
.
ui
.
fragment
.
order
;
import
android.app.Dialog
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.graphics.Color
;
...
...
@@ -32,6 +33,7 @@ import com.gingersoft.gsa.cloud.common.utils.inputFilter.InputFilterUtils;
import
com.gingersoft.gsa.cloud.common.utils.other.TextUtil
;
import
com.gingersoft.gsa.cloud.common.utils.time.TimeUtils
;
import
com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils
;
import
com.gingersoft.gsa.cloud.ui.adapter.multi.RemarkProvider
;
import
com.gingersoft.gsa.cloud.ui.utils.AppDialog
;
import
com.gingersoft.supply_chain.R
;
import
com.gingersoft.supply_chain.R2
;
...
...
@@ -151,7 +153,7 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr
initTopBar
(
supplyTopBar
,
"入庫單"
);
supplyTopBar
.
addRightImageButton
(
R
.
drawable
.
ic_white_more
,
R
.
id
.
id_more
).
setOnClickListener
(
this
);
supplyTopBar
.
addRightImageButton
(
R
.
drawable
.
ic_take_pictures
,
R
.
id
.
id_take_pictures
).
setOnClickListener
(
this
);
edRemark
.
setFilters
(
new
InputFilter
[]{
InputFilterUtils
.
getLengthFilter
(
requireContext
(),
50
)});
edRemark
.
setFilters
(
new
InputFilter
[]{
InputFilterUtils
.
getLengthFilter
(
mContext
,
RemarkProvider
.
REMARK_TEXT_LENGTH
),
InputFilterUtils
.
getChAndEnAndNumAndPtInputFilter
(
mContext
)});
Bundle
arguments
=
getArguments
();
if
(
arguments
!=
null
)
{
int
orderId
=
arguments
.
getInt
(
ORDER_DETAILS_ORDER_ID
,
0
);
...
...
@@ -182,50 +184,50 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr
//更多:刪除。發送。再次購買
String
[]
functions
;
if
(
orderState
==
PurchaseOrderDetailsBean
.
COMPLETE_RECEIVED
)
{
functions
=
new
String
[]{
"删除"
};
functions
=
new
String
[]{
"
再來一單"
,
"
删除"
};
}
else
{
functions
=
new
String
[]{
"删除"
,
"部分收貨"
,
"收貨"
};
functions
=
new
String
[]{
"
再來一單"
,
"
删除"
,
"部分收貨"
,
"收貨"
};
}
new
XPopup
.
Builder
(
mContext
)
.
atView
(
v
)
.
hasShadowBg
(
false
)
.
popupPosition
(
PopupPosition
.
Left
)
.
asCustom
(
new
PurchaseListMorePopup
(
mContext
)
.
setStringData
(
functions
,
new
int
[]{
R
.
drawable
.
ic_purchase_delete
,
R
.
drawable
.
ic_small_partial_receipt
,
R
.
drawable
.
ic_receipt
})
.
setStringData
(
functions
,
new
int
[]{
R
.
drawable
.
ic_purchase_
buy_again
,
R
.
drawable
.
ic_purchase_
delete
,
R
.
drawable
.
ic_small_partial_receipt
,
R
.
drawable
.
ic_receipt
})
.
setOnSelectListener
(
mOnSelectListener
))
.
show
();
}
else
if
(
viewId
==
R
.
id
.
tv_order_details_partial_receipt
)
{
//部分收貨
mPresenter
.
addWarehouse
(
PurchaseOrderDetailsBean
.
PART_RECEIVED
,
edRemark
.
getText
()
+
""
,
totalAmount
,
orderDetailsFoodAdapter
.
getData
());
// setFragmentResult(RESULT_OK, null);
addWarehouse
(
PurchaseOrderDetailsBean
.
PART_RECEIVED
);
}
else
if
(
viewId
==
R
.
id
.
tv_order_details_receipt
)
{
//收貨
mPresenter
.
addWarehouse
(
PurchaseOrderDetailsBean
.
COMPLETE_RECEIVED
,
edRemark
.
getText
()
+
""
,
totalAmount
,
orderDetailsFoodAdapter
.
getData
());
// setFragmentResult(RESULT_OK, null);
addWarehouse
(
PurchaseOrderDetailsBean
.
COMPLETE_RECEIVED
);
}
else
if
(
viewId
==
R
.
id
.
layout_remarks
)
{
//備註,顯示備註輸入框
layoutEdRemark
.
setVisibility
(
layoutEdRemark
.
getVisibility
()
==
View
.
VISIBLE
?
View
.
GONE
:
View
.
VISIBLE
);
}
}
private
OnSelectListener
mOnSelectListener
=
new
OnSelectListener
()
{
@Override
public
void
onSelect
(
int
position
,
String
text
)
{
if
(
position
==
0
)
{
//刪除
AppDialog
.
getInstance
().
showWaringDialog
(
mContext
,
"是否刪除訂單"
,
(
view1
,
dialog
)
->
{
dialog
.
dismiss
();
mPresenter
.
deleteOrder
();
});
}
else
if
(
position
==
1
)
{
//部分收貨
mPresenter
.
addWarehouse
(
PurchaseOrderDetailsBean
.
PART_RECEIVED
,
edRemark
.
getText
()
+
""
,
totalAmount
,
orderDetailsFoodAdapter
.
getData
());
setFragmentResult
(
RESULT_OK
,
null
);
}
else
if
(
position
==
2
)
{
//收貨
mPresenter
.
addWarehouse
(
PurchaseOrderDetailsBean
.
COMPLETE_RECEIVED
,
edRemark
.
getText
()
+
""
,
totalAmount
,
orderDetailsFoodAdapter
.
getData
());
setFragmentResult
(
RESULT_OK
,
null
);
}
private
void
addWarehouse
(
int
state
)
{
AppDialog
.
getInstance
().
showWaringDialog
(
requireContext
(),
"是否確認收貨?"
,
(
view
,
dialog
)
->
{
mPresenter
.
addWarehouse
(
state
,
edRemark
.
getText
()
+
""
,
totalAmount
,
orderDetailsFoodAdapter
.
getData
());
setFragmentResult
(
RESULT_OK
,
null
);
});
}
private
OnSelectListener
mOnSelectListener
=
(
position
,
text
)
->
{
if
(
position
==
0
)
{
//再來一單
mPresenter
.
buyAgainByFoodIds
(
orderDetailsFoodAdapter
.
getData
());
}
else
if
(
position
==
1
)
{
//刪除訂單
AppDialog
.
getInstance
().
showWaringDialog
(
mContext
,
"是否刪除訂單"
,
(
view1
,
dialog
)
->
mPresenter
.
deleteOrder
());
}
else
if
(
position
==
2
)
{
//部分收貨
addWarehouse
(
PurchaseOrderDetailsBean
.
PART_RECEIVED
);
}
else
if
(
position
==
3
)
{
//收貨
addWarehouse
(
PurchaseOrderDetailsBean
.
COMPLETE_RECEIVED
);
}
};
...
...
@@ -313,6 +315,11 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr
imageAdapter
.
addData
(
imgUrl
);
}
@Override
public
void
buyAgain
()
{
startWithPop
(
ShoppingCatFragment
.
newInstance
());
}
public
static
class
ImageLoader
implements
XPopupImageLoader
{
@Override
public
void
loadImage
(
int
position
,
@NonNull
Object
url
,
@NonNull
ImageView
imageView
)
{
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/order/PurchaseListFragment.java
View file @
a2715edb
...
...
@@ -194,7 +194,6 @@ public class PurchaseListFragment extends BaseSupplyChainFragment<PurchaseListPr
if
(
popupPosition
==
0
)
{
//刪除
AppDialog
.
getInstance
().
showWaringDialog
(
mContext
,
"是否刪除訂單"
,
(
view1
,
dialog
)
->
{
dialog
.
dismiss
();
mPresenter
.
deleteOrder
(
position
,
purchaseOrderAdapter
.
getData
().
get
(
position
).
getId
());
});
}
else
if
(
popupPosition
==
1
)
{
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/order/ShoppingCatFragment.java
View file @
a2715edb
...
...
@@ -121,7 +121,6 @@ public class ShoppingCatFragment extends BaseSupplyChainFragment<ShoppingCatPres
//完成,篩選出選擇的食品
if
(
mPresenter
.
filterData
(
shoppingCartAdapter
.
getData
()))
{
AppDialog
.
getInstance
().
showWaringDialog
(
requireContext
(),
"確認創建訂單?"
,
(
view
,
dialog
)
->
{
dialog
.
dismiss
();
mPresenter
.
createOrder
(
shoppingCartAdapter
.
getData
());
});
}
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/supplier/NewSupplierFragment.java
View file @
a2715edb
...
...
@@ -2,8 +2,10 @@ package com.gingersoft.supply_chain.mvp.ui.fragment.supplier;
import
android.os.Bundle
;
import
android.view.LayoutInflater
;
import
android.view.MotionEvent
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.widget.EditText
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
...
...
@@ -20,6 +22,7 @@ import com.gingersoft.supply_chain.mvp.contract.NewSupplierContract;
import
com.gingersoft.supply_chain.mvp.presenter.NewSupplierPresenter
;
import
com.gingersoft.supply_chain.mvp.ui.fragment.BaseSupplyChainFragment
;
import
com.jess.arms.di.component.AppComponent
;
import
com.jess.arms.utils.DeviceUtils
;
import
com.qmuiteam.qmui.alpha.QMUIAlphaButton
;
import
com.qmuiteam.qmui.widget.QMUITopBar
;
...
...
@@ -31,6 +34,7 @@ import static com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecorat
/**
* Description:新增或編輯供應商
*
* @author yuhang
*/
public
class
NewSupplierFragment
extends
BaseSupplyChainFragment
<
NewSupplierPresenter
>
implements
NewSupplierContract
.
View
,
View
.
OnClickListener
{
...
...
@@ -104,7 +108,6 @@ public class NewSupplierFragment extends BaseSupplyChainFragment<NewSupplierPres
if
(
viewId
==
R
.
id
.
topbar_right_delete_button
)
{
//刪除供應商
new
AppDialog
().
showWaringDialog
(
mContext
,
"刪除供應商"
,
(
view1
,
dialog
)
->
{
dialog
.
dismiss
();
mPresenter
.
deleteSupplier
(
supplierBean
.
getId
());
});
}
else
if
(
viewId
==
R
.
id
.
btn_save_supplier
)
{
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/supplier/SupplierListFragment.java
View file @
a2715edb
package
com
.
gingersoft
.
supply_chain
.
mvp
.
ui
.
fragment
.
supplier
;
import
android.os.Bundle
;
import
android.text.InputFilter
;
import
android.util.Log
;
import
android.view.KeyEvent
;
import
android.view.LayoutInflater
;
...
...
@@ -16,6 +17,7 @@ import androidx.recyclerview.widget.RecyclerView;
import
com.gingersoft.gsa.cloud.common.loadsir.EmptyCallback
;
import
com.gingersoft.gsa.cloud.common.loadsir.ErrorCallback
;
import
com.gingersoft.gsa.cloud.common.utils.inputFilter.InputFilterUtils
;
import
com.gingersoft.gsa.cloud.ui.utils.AppDialog
;
import
com.gingersoft.supply_chain.R
;
import
com.gingersoft.supply_chain.R2
;
...
...
@@ -142,6 +144,7 @@ public class SupplierListFragment extends BaseSupplyChainFragment<SupplierListPr
}
return
false
;
});
edSupplier
.
setFilters
(
new
InputFilter
[]{
InputFilterUtils
.
getLengthFilter
(
mContext
,
16
),
InputFilterUtils
.
getChAndEnAndNumInputFilter
(
mContext
)});
}
private
void
getSupplierList
()
{
...
...
@@ -226,7 +229,6 @@ public class SupplierListFragment extends BaseSupplyChainFragment<SupplierListPr
supplierAdapter
.
setOnItemChildClickListener
((
adapter
,
view
,
position
)
->
{
if
(
view
.
getId
()
==
R
.
id
.
iv_supplier_delete
)
{
new
AppDialog
().
showWaringDialog
(
mContext
,
"刪除供應商"
,
(
view1
,
dialog
)
->
{
dialog
.
dismiss
();
List
<
SupplierInfoBean
>
data
=
supplierAdapter
.
getData
();
mPresenter
.
deleteSupplier
(
data
.
get
(
position
).
getId
(),
position
);
});
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/warehouse/WareHouseListFragment.java
View file @
a2715edb
package
com
.
gingersoft
.
supply_chain
.
mvp
.
ui
.
fragment
.
warehouse
;
import
android.os.Bundle
;
import
android.text.InputFilter
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
...
...
@@ -19,6 +20,7 @@ import com.chad.library.adapter.base.listener.OnItemChildClickListener;
import
com.chad.library.adapter.base.listener.OnItemClickListener
;
import
com.gingersoft.gsa.cloud.common.loadsir.EmptyCallback
;
import
com.gingersoft.gsa.cloud.common.loadsir.ErrorCallback
;
import
com.gingersoft.gsa.cloud.common.utils.inputFilter.InputFilterUtils
;
import
com.gingersoft.supply_chain.R
;
import
com.gingersoft.supply_chain.R2
;
import
com.gingersoft.supply_chain.di.component.DaggerWareHouseListComponent
;
...
...
@@ -120,6 +122,7 @@ public class WareHouseListFragment extends BaseSupplyChainFragment<WareHouseList
getWarehousing
();
});
getWarehousing
();
edWarehouseListSearch
.
setFilters
(
new
InputFilter
[]{
InputFilterUtils
.
getLengthFilter
(
mContext
,
16
),
InputFilterUtils
.
getChAndEnAndNumAndPtInputFilter
(
mContext
)});
}
private
void
getWarehousing
()
{
...
...
@@ -190,7 +193,7 @@ public class WareHouseListFragment extends BaseSupplyChainFragment<WareHouseList
rvWarehouseList
.
setAdapter
(
warehousingQueryAdapter
);
warehousingQueryAdapter
.
setOnItemChildClickListener
((
adapter
,
view
,
position
)
->
{
if
(
view
.
getId
()
==
R
.
id
.
tv_warehouse_item_inventory_quantity
)
{
if
(
view
.
getId
()
==
R
.
id
.
tv_warehouse_item_inventory_quantity
)
{
//點擊庫存數量,進入庫存盤點
startForResult
(
WarehousingInventoryFragment
.
newInstance
(
warehousingQueryAdapter
.
getItem
(
position
)),
UPDATE_KEY
);
}
...
...
@@ -207,7 +210,7 @@ public class WareHouseListFragment extends BaseSupplyChainFragment<WareHouseList
@Override
public
void
onFragmentResult
(
int
requestCode
,
int
resultCode
,
Bundle
data
)
{
super
.
onFragmentResult
(
requestCode
,
resultCode
,
data
);
if
(
requestCode
==
UPDATE_KEY
&&
resultCode
==
RESULT_OK
)
{
if
(
requestCode
==
UPDATE_KEY
&&
resultCode
==
RESULT_OK
)
{
getWarehousing
();
}
}
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/widget/EditTextPopup.java
0 → 100644
View file @
a2715edb
package
com
.
gingersoft
.
supply_chain
.
mvp
.
ui
.
widget
;
import
android.content.Context
;
import
android.text.InputFilter
;
import
androidx.annotation.NonNull
;
import
com.gingersoft.supply_chain.R
;
import
com.lxj.xpopup.impl.InputConfirmPopupView
;
/**
* @author 宇航.
* User: admin
* Date: 2021/2/4
* Time: 10:20
* Use:
*/
public
class
EditTextPopup
extends
InputConfirmPopupView
{
private
InputFilter
[]
inputFilters
;
/**
* @param context
*/
public
EditTextPopup
(
@NonNull
Context
context
)
{
super
(
context
,
R
.
layout
.
dialog_edit
);
}
/**
* @param context
*/
public
EditTextPopup
(
@NonNull
Context
context
,
InputFilter
[]
inputFilters
)
{
super
(
context
,
R
.
layout
.
dialog_edit
);
this
.
inputFilters
=
inputFilters
;
}
@Override
protected
void
onCreate
()
{
super
.
onCreate
();
getEditText
().
setFilters
(
inputFilters
);
}
}
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/widget/InventoryConsumptionPopup.java
View file @
a2715edb
...
...
@@ -2,6 +2,7 @@ package com.gingersoft.supply_chain.mvp.ui.widget;
import
android.content.Context
;
import
android.text.Editable
;
import
android.text.InputFilter
;
import
android.text.TextWatcher
;
import
android.view.View
;
import
android.widget.EditText
;
...
...
@@ -14,7 +15,9 @@ import androidx.recyclerview.widget.RecyclerView;
import
com.chad.library.adapter.base.BaseQuickAdapter
;
import
com.chad.library.adapter.base.listener.OnItemClickListener
;
import
com.chad.library.adapter.base.viewholder.BaseViewHolder
;
import
com.gingersoft.gsa.cloud.common.utils.inputFilter.InputFilterUtils
;
import
com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils
;
import
com.gingersoft.gsa.cloud.ui.adapter.multi.RemarkProvider
;
import
com.gingersoft.supply_chain.R
;
import
com.gingersoft.supply_chain.mvp.bean.ConsumeReasonBean
;
import
com.lxj.xpopup.impl.ConfirmPopupView
;
...
...
@@ -61,6 +64,7 @@ public class InventoryConsumptionPopup extends ConfirmPopupView {
protected
void
onCreate
()
{
super
.
onCreate
();
edRemarks
=
findViewById
(
R
.
id
.
ed_inventory_consumption_remark
);
edRemarks
.
setFilters
(
new
InputFilter
[]{
InputFilterUtils
.
getLengthFilter
(
getContext
(),
RemarkProvider
.
REMARK_TEXT_LENGTH
),
InputFilterUtils
.
getChAndEnAndNumAndPtInputFilter
(
getContext
())});
edInput
=
findViewById
(
R
.
id
.
et_input
);
rvConsumptionReason
=
findViewById
(
R
.
id
.
rv_inventory_consumption_reason
);
ConsumptionReasonAdapter
consumptionReasonAdapter
=
new
ConsumptionReasonAdapter
();
...
...
library-common/src/main/java/com/gingersoft/gsa/cloud/common/utils/inputFilter/InputFilterUtils.java
View file @
a2715edb
...
...
@@ -21,11 +21,21 @@ public class InputFilterUtils {
/**
* 只能輸入中英文和數字
*/
public
static
final
Pattern
ChAndEnAndNum
=
Pattern
.
compile
(
"[-
a-zA-Z0-9\u4E00-\u9FA5]+"
);
public
static
final
Pattern
chAndEnAndNum
=
Pattern
.
compile
(
"[
a-zA-Z0-9\u4E00-\u9FA5]+"
);
/**
* 只能輸入英文和數字
*/
public
static
final
Pattern
EnAndNum
=
Pattern
.
compile
(
"[-a-zA-Z0-9]+"
);
public
static
final
Pattern
enAndNum
=
Pattern
.
compile
(
"[a-zA-Z0-9]+"
);
/**
* 只能輸入中英文和數字還有一些標點符號
* Punctuation
*/
public
static
final
Pattern
chAndEnAndNumAndPt
=
Pattern
.
compile
(
"[-a-zA-Z0-9\u4E00-\u9FA5/,.;,。;!!??]+"
);
/**
* 只能輸入中英文和數字還有/
* Punctuation
*/
public
static
final
Pattern
chAndEnAndNumAndSlash
=
Pattern
.
compile
(
"[-a-zA-Z0-9\u4E00-\u9FA5/]+"
);
/**
* emoji过滤器
...
...
@@ -34,8 +44,20 @@ public class InputFilterUtils {
"[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]"
,
Pattern
.
UNICODE_CASE
|
Pattern
.
CASE_INSENSITIVE
);
public
static
InputFilter
getChAndEnAndNumAndPtInputFilter
(
Context
mContext
)
{
return
InputFilterUtils
.
getTypeFilter
(
mContext
,
"請輸入中英文和數字"
,
chAndEnAndNumAndPt
);
}
public
static
InputFilter
getTypeFilter
(
Context
mContext
,
Pattern
p
)
{
return
InputFilterUtils
.
getTypeFilter
(
mContext
,
"不支持輸入此內容"
,
p
);
}
public
static
InputFilter
getChAndEnAndNumInputFilter
(
Context
mContext
)
{
return
InputFilterUtils
.
getTypeFilter
(
mContext
,
"請輸入中英文和數字"
,
InputFilterUtils
.
ChAndEnAndNum
);
return
InputFilterUtils
.
getTypeFilter
(
mContext
,
"請輸入中英文和數字"
,
chAndEnAndNum
);
}
public
static
InputFilter
getEnAndNumInputFilter
(
Context
mContext
)
{
return
InputFilterUtils
.
getTypeFilter
(
mContext
,
"請輸入英文和數字"
,
enAndNum
);
}
public
static
InputFilter
getLengthFilter
(
Context
mContext
,
int
maxLength
)
{
...
...
@@ -53,7 +75,7 @@ public class InputFilterUtils {
* @param p
* @return
*/
p
ublic
static
InputFilter
getTypeFilter
(
Context
context
,
String
tipString
,
Pattern
p
)
{
p
rivate
static
InputFilter
getTypeFilter
(
Context
context
,
String
tipString
,
Pattern
p
)
{
return
(
source
,
start
,
end
,
dest
,
dstart
,
dend
)
->
{
Matcher
m
=
p
.
matcher
(
source
.
toString
());
if
(!
m
.
matches
())
{
...
...
@@ -67,7 +89,36 @@ public class InputFilterUtils {
};
}
public
static
InputFilter
getMaxLengthFilter
(
Context
context
,
String
tipString
,
int
maxLength
)
{
/**
* source 新输入的字符串
* start 新输入的字符串起始下标,一般为0
* end 新输入的字符串终点下标,一般为source长度-1
* dest 输入之前文本框内容
* dstart 原内容起始坐标,一般为0
* dend 原内容终点坐标,一般为dest长度-1
*
* @param p
* @return
*/
public
static
InputFilter
getTypeFilter
(
Pattern
p
)
{
return
(
source
,
start
,
end
,
dest
,
dstart
,
dend
)
->
{
Matcher
m
=
p
.
matcher
(
source
.
toString
());
if
(!
m
.
matches
())
{
return
""
;
}
return
null
;
};
}
/**
* 輸入最大長度限制
*
* @param context
* @param tipString 超過最大長度限制的提示
* @param maxLength 最大長度
* @return
*/
private
static
InputFilter
getMaxLengthFilter
(
Context
context
,
String
tipString
,
int
maxLength
)
{
return
(
source
,
start
,
end
,
dest
,
dstart
,
dend
)
->
{
int
keep
=
maxLength
-
(
dest
.
length
()
-
(
dend
-
dstart
));
if
(
keep
<=
0
)
{
...
...
@@ -93,28 +144,29 @@ public class InputFilterUtils {
};
}
public
static
InputFilter
getMaxLengthFilterDisChAndEn
(
int
maxLength
)
{
/**
* 輸入最大長度限制
*
* @param maxLength 最大長度
* @return
*/
private
static
InputFilter
getMaxLengthFilter
(
int
maxLength
)
{
return
(
source
,
start
,
end
,
dest
,
dstart
,
dend
)
->
{
if
(
dest
!=
null
)
{
int
beforeLength
=
dest
.
length
();
int
sourceLength
=
source
.
length
();
int
keep
=
maxLength
-
beforeLength
;
if
(
keep
<=
0
)
{
return
""
;
}
else
if
(
keep
>=
sourceLength
)
{
return
null
;
// keep original
}
else
{
keep
+=
start
;
if
(
Character
.
isHighSurrogate
(
source
.
charAt
(
keep
-
1
)))
{
--
keep
;
if
(
keep
==
sourceLength
)
{
return
""
;
}
int
keep
=
maxLength
-
(
dest
.
length
()
-
(
dend
-
dstart
));
if
(
keep
<=
0
)
{
return
""
;
}
else
if
(
keep
>=
end
-
start
)
{
return
null
;
// keep original
}
else
{
keep
+=
start
;
if
(
Character
.
isHighSurrogate
(
source
.
charAt
(
keep
-
1
)))
{
--
keep
;
if
(
keep
==
start
)
{
return
""
;
}
return
source
.
subSequence
(
start
,
keep
);
}
return
source
.
subSequence
(
start
,
keep
);
}
return
null
;
};
}
}
...
...
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/adapter/multi/InputProvider.java
View file @
a2715edb
...
...
@@ -56,7 +56,7 @@ public class InputProvider<T extends InfoMultiBean> extends MyBaseItemProvider<T
MultiInputBean
infoMultiBean
=
(
MultiInputBean
)
t
;
viewHolder
.
removeTextWatcher
();
TextInput
EditText
editText
=
baseViewHolder
.
getView
(
R
.
id
.
ed_multi_value
);
EditText
editText
=
baseViewHolder
.
getView
(
R
.
id
.
ed_multi_value
);
editText
.
setError
(
null
);
initEditFocusable
(
infoMultiBean
,
editText
);
//設置輸入限制
...
...
@@ -77,10 +77,9 @@ public class InputProvider<T extends InfoMultiBean> extends MyBaseItemProvider<T
}
}
});
}
private
void
initEditFocusable
(
MultiInputBean
infoMultiBean
,
TextInput
EditText
editText
)
{
private
void
initEditFocusable
(
MultiInputBean
infoMultiBean
,
EditText
editText
)
{
//是否可編輯
editText
.
setFocusable
(
infoMultiBean
.
isEdit
());
if
(
infoMultiBean
.
isEdit
())
{
...
...
@@ -96,7 +95,7 @@ public class InputProvider<T extends InfoMultiBean> extends MyBaseItemProvider<T
}
private
void
setFilters
(
EditText
editText
,
MultiInputBean
multiSelectBean
)
{
//先清空值
,再
//先清空值
.清空值之前需要去掉輸入監聽
editText
.
setText
(
""
);
//輸入攔截器
editText
.
setFilters
(
multiSelectBean
.
getInputFilters
());
...
...
@@ -107,7 +106,7 @@ public class InputProvider<T extends InfoMultiBean> extends MyBaseItemProvider<T
public
class
InputViewHolder
extends
BaseViewHolder
{
public
InputTextWatcher
inputTextWatcher
=
new
InputTextWatcher
();
private
TextInput
EditText
editText
;
private
EditText
editText
;
public
InputViewHolder
(
@NotNull
View
view
)
{
super
(
view
);
...
...
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/utils/AppDialog.java
View file @
a2715edb
...
...
@@ -32,15 +32,19 @@ public class AppDialog {
}
public
void
showWaringDialog
(
Context
context
,
String
title
,
DialogOnClickListenter
sureOnclickListen
t
er
)
{
showWaringDialog
(
context
,
title
,
null
,
null
,
sureOnclickListen
ter
,
null
);
public
void
showWaringDialog
(
Context
context
,
String
title
,
DialogOnClickListenter
sureOnclickListener
)
{
showWaringDialog
(
context
,
title
,
null
,
null
,
sureOnclickListen
er
,
null
,
true
);
}
public
void
showWaringDialog
(
Context
context
,
String
title
,
DialogOnClickListenter
sureOnclickListenter
,
DialogOnClickListenter
cancelOnclickListent
er
)
{
showWaringDialog
(
context
,
title
,
null
,
null
,
sureOnclickListen
ter
,
cancelOnclickListenter
);
public
void
showWaringDialog
(
Context
context
,
String
title
,
boolean
isDismiss
,
DialogOnClickListenter
sureOnclickListen
er
)
{
showWaringDialog
(
context
,
title
,
null
,
null
,
sureOnclickListen
er
,
null
,
isDismiss
);
}
private
void
showWaringDialog
(
Context
context
,
String
title
,
String
confimText
,
String
cancelText
,
DialogOnClickListenter
sureOnclickListenter
,
DialogOnClickListenter
cancelOnclickListenter
)
{
public
void
showWaringDialog
(
Context
context
,
String
title
,
boolean
isDismiss
,
DialogOnClickListenter
sureOnclickListener
,
DialogOnClickListenter
cancelOnclickListener
)
{
showWaringDialog
(
context
,
title
,
null
,
null
,
sureOnclickListener
,
cancelOnclickListener
,
isDismiss
);
}
private
void
showWaringDialog
(
Context
context
,
String
title
,
String
confimText
,
String
cancelText
,
DialogOnClickListenter
sureOnclickListener
,
DialogOnClickListenter
cancelOnclickListener
,
boolean
isDismiss
)
{
new
DialogUtils
(
context
,
R
.
layout
.
other_order_pause_orders
)
{
@Override
public
void
initLayout
(
ViewHepler
hepler
,
Dialog
dialog
)
{
...
...
@@ -50,14 +54,19 @@ public class AppDialog {
if
(
confimText
!=
null
)
{
hepler
.
setText
(
R
.
id
.
tv_dialog_confirm
,
confimText
);
}
if
(
sureOnclickListenter
!=
null
)
{
hepler
.
getView
(
R
.
id
.
tv_dialog_confirm
).
setOnClickListener
(
v
->
sureOnclickListenter
.
onclick
(
v
,
dialog
));
if
(
sureOnclickListener
!=
null
)
{
hepler
.
getView
(
R
.
id
.
tv_dialog_confirm
).
setOnClickListener
(
v
->
{
sureOnclickListener
.
onclick
(
v
,
dialog
);
if
(
isDismiss
)
{
dialog
.
dismiss
();
}
});
}
if
(
cancelText
!=
null
)
{
hepler
.
setText
(
R
.
id
.
tv_dialog_cancel
,
cancelText
);
}
if
(
cancelOnclickListen
t
er
!=
null
)
{
hepler
.
getView
(
R
.
id
.
tv_dialog_cancel
).
setOnClickListener
(
v
->
cancelOnclickListen
t
er
.
onclick
(
v
,
dialog
));
if
(
cancelOnclickListener
!=
null
)
{
hepler
.
getView
(
R
.
id
.
tv_dialog_cancel
).
setOnClickListener
(
v
->
cancelOnclickListener
.
onclick
(
v
,
dialog
));
}
else
{
hepler
.
getView
(
R
.
id
.
tv_dialog_cancel
).
setOnClickListener
(
v
->
dialog
.
dismiss
());
}
...
...
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/view/AmountEditText.java
→
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/view/
edittext/
AmountEditText.java
View file @
a2715edb
package
com
.
gingersoft
.
gsa
.
cloud
.
ui
.
view
;
package
com
.
gingersoft
.
gsa
.
cloud
.
ui
.
view
.
edittext
;
import
android.content.Context
;
import
android.util.AttributeSet
;
import
android.widget.EditText
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
...
...
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/view/edittext/ClearZeroEditText.java
0 → 100644
View file @
a2715edb
package
com
.
gingersoft
.
gsa
.
cloud
.
ui
.
view
.
edittext
;
import
android.content.Context
;
import
android.util.AttributeSet
;
import
android.view.View
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
com.google.android.material.textfield.TextInputEditText
;
/**
* @author 宇航.
* User: admin
* Date: 2021/2/4
* Time: 15:04
* Use: 獲取焦點時,內容為0,自動清除,
* 失去焦點時,沒有內容,內容默認為0
*/
public
class
ClearZeroEditText
extends
TextInputEditText
{
private
OnFocusChangeListener
l
;
public
ClearZeroEditText
(
@NonNull
Context
context
)
{
super
(
context
);
}
public
ClearZeroEditText
(
@NonNull
Context
context
,
@Nullable
AttributeSet
attrs
)
{
super
(
context
,
attrs
);
}
public
ClearZeroEditText
(
@NonNull
Context
context
,
@Nullable
AttributeSet
attrs
,
int
defStyleAttr
)
{
super
(
context
,
attrs
,
defStyleAttr
);
}
private
void
init
()
{
setOnFocusChangeListener
(
new
OnFocusChangeListener
()
{
@Override
public
void
onFocusChange
(
View
v
,
boolean
hasFocus
)
{
if
(
l
!=
null
)
{
l
.
onFocusChange
(
v
,
hasFocus
);
}
}
});
}
@Override
public
void
setOnFocusChangeListener
(
OnFocusChangeListener
l
)
{
this
.
l
=
l
;
}
}
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/view/NoSoftKeyboardEditText.java
→
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/view/
edittext/
NoSoftKeyboardEditText.java
View file @
a2715edb
package
com
.
gingersoft
.
gsa
.
cloud
.
ui
.
view
;
package
com
.
gingersoft
.
gsa
.
cloud
.
ui
.
view
.
edittext
;
import
android.content.Context
;
import
android.text.Editable
;
...
...
library-ui/src/main/res/layout/item_multi_title_layout.xml
View file @
a2715edb
...
...
@@ -2,8 +2,8 @@
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"wrap_content"
android:
gravity=
"center_vertical
"
android:
layout_height=
"match_parent
"
>
android:
layout_height=
"match_parent
"
android:
gravity=
"center_vertical
"
>
<TextView
android:id=
"@+id/multi_required"
...
...
library-ui/src/main/res/layout/multi_input.xml
View file @
a2715edb
...
...
@@ -8,17 +8,14 @@
<include
layout=
"@layout/item_multi_title_layout"
/>
<
com.google.android.material.textfield.TextInput
EditText
<EditText
android:id=
"@+id/ed_multi_value"
style=
"@style/Multi_Input_editStyle"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_marginLeft=
"@dimen/dp_5"
android:layout_weight=
"1"
android:focusableInTouchMode=
"true"
android:focusable=
"true"
android:background=
"@null"
android:inputType=
"none"
android:drawablePadding=
"@dimen/dp_5"
tools:hint=
"請輸入食品組名稱"
/>
<ImageView
...
...
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