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
1a951bc8
Commit
1a951bc8
authored
Apr 01, 2021
by
宁斌
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/dev' into dev
parents
59c51817
e716d712
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
53 changed files
with
1059 additions
and
131 deletions
+1059
-131
component-print/src/main/java/com/joe/print/mvp/print/EpsonPrint.java
+3
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/di/component/SnCodeListComponent.java
+42
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/di/module/SnCodeListModule.java
+31
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/bean/OrderWareHouseBean.java
+4
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/bean/PurchaseConsumeSnBean.java
+28
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/bean/PurchaseFoodBean.java
+7
-1
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/bean/PurchaseFoodEncodeSn.java
+69
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/bean/PurchaseOrderDetailsBean.java
+9
-1
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/bean/PurchaseWarehousingOrderDetailsVO.java
+41
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/bean/WareHouseListBean.java
+0
-28
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/bean/WarehouseDetailsBean.java
+5
-1
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/contract/SnCodeListContract.java
+29
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/contract/WareHouseListContract.java
+2
-1
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/contract/WarehouseDetailsContract.java
+28
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/model/OrderDetailsModel.java
+5
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/model/SnCodeListModel.java
+47
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/model/WarehouseDetailsModel.java
+6
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/presenter/NewFoodIngredientsPresenter.java
+8
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/presenter/OrderDetailsPresenter.java
+40
-10
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/presenter/SnCodeListPresenter.java
+53
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/presenter/WarehouseDetailsPresenter.java
+60
-12
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/server/SupplierServer.java
+8
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/activity/SupplyChainMainActivity.java
+1
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/adapter/InventoryRecordAdapter.java
+1
-1
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/adapter/SnCodesAdapter.java
+55
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/adapter/WareHousingDetailsAdapter.java
+1
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/adapter/WarehousingQueryAdapter.java
+4
-3
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/FunctionListFragment.java
+2
-2
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/order/OrderDetailsFragment.java
+0
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/supplier/SupplierListFragment.java
+3
-2
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/warehouse/SnCodeListFragment.java
+105
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/warehouse/WareHouseListFragment.java
+13
-1
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/warehouse/WarehouseDetailsFragment.java
+67
-15
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/warehouse/WarehousingInventoryFragment.java
+4
-7
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/widget/InventoryConsumptionView.java
+4
-0
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/widget/ScanSnPopup.java
+10
-6
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/widget/ScanSnView.java
+52
-11
component-supply-chain/src/main/res/layout/fragment_sn_code_list.xml
+74
-0
component-supply-chain/src/main/res/layout/fragment_ware_house_list.xml
+1
-0
component-supply-chain/src/main/res/layout/fragment_warehouse_details.xml
+37
-12
component-supply-chain/src/main/res/layout/include_sn_item.xml
+51
-0
component-supply-chain/src/main/res/layout/layout_scan_sn.xml
+4
-0
component-supply-chain/src/main/res/layout/recycler_view_item.xml
+3
-2
component-supply-chain/src/main/res/layout/supply_chain_top_bar.xml
+3
-3
component-supply-chain/src/main/res/values/strings.xml
+3
-1
component-supply-chain/src/main/res/values/styles.xml
+11
-1
library-base/src/main/java/com/jess/arms/utils/ArmsUtils.java
+1
-1
library-common/src/main/java/com/gingersoft/gsa/cloud/common/constans/HttpsConstans.java
+3
-1
library-common/src/main/java/com/gingersoft/gsa/cloud/common/core/restaurant/RestaurantInfoManager.java
+2
-2
library-common/src/main/res/drawable/shape_theme_eight_corners_bg.xml
+5
-3
library-common/src/main/res/drawable/shape_white_eight_corners_bg.xml
+5
-3
library-ui/src/main/res/layout/multi_input.xml
+1
-0
No files found.
component-print/src/main/java/com/joe/print/mvp/print/EpsonPrint.java
View file @
1a951bc8
...
...
@@ -11,6 +11,7 @@ import com.epson.epos2.printer.ReceiveListener;
import
com.gingersoft.gsa.cloud.common.logan.LoganManager
;
import
com.gingersoft.gsa.cloud.common.printer.plugins.PrinterFlowProxy
;
import
com.gingersoft.gsa.cloud.common.utils.log.LogUtil
;
import
com.gingersoft.gsa.cloud.common.utils.threadPool.ThreadPoolManager
;
import
com.gingersoft.gsa.cloud.print.PrintExecutor
;
import
com.gingersoft.gsa.cloud.print.PrintSocketHolder
;
import
com.gingersoft.gsa.cloud.print.impl.OnPrjPrintResultListener
;
...
...
@@ -72,6 +73,7 @@ public class EpsonPrint implements ReceiveListener {
if
(
mPrinter
==
null
)
{
return
;
}
ThreadPoolManager
.
getInstence
().
putExecutableTasks
(()
->
{
while
(
true
)
{
try
{
LoganManager
.
w_printer
(
TAG
,
"斷開連接"
);
...
...
@@ -91,6 +93,7 @@ public class EpsonPrint implements ReceiveListener {
}
}
}
});
}
/**
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/di/component/SnCodeListComponent.java
0 → 100644
View file @
1a951bc8
package
com
.
gingersoft
.
supply_chain
.
di
.
component
;
import
dagger.BindsInstance
;
import
dagger.Component
;
import
com.jess.arms.di.component.AppComponent
;
import
com.gingersoft.supply_chain.di.module.SnCodeListModule
;
import
com.gingersoft.supply_chain.mvp.contract.SnCodeListContract
;
import
com.jess.arms.di.scope.FragmentScope
;
import
com.gingersoft.supply_chain.mvp.ui.fragment.warehouse.SnCodeListFragment
;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/26/2021 19:26
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
@Component
(
modules
=
SnCodeListModule
.
class
,
dependencies
=
AppComponent
.
class
)
public
interface
SnCodeListComponent
{
void
inject
(
SnCodeListFragment
fragment
);
@Component
.
Builder
interface
Builder
{
@BindsInstance
SnCodeListComponent
.
Builder
view
(
SnCodeListContract
.
View
view
);
SnCodeListComponent
.
Builder
appComponent
(
AppComponent
appComponent
);
SnCodeListComponent
build
();
}
}
\ No newline at end of file
component-supply-chain/src/main/java/com/gingersoft/supply_chain/di/module/SnCodeListModule.java
0 → 100644
View file @
1a951bc8
package
com
.
gingersoft
.
supply_chain
.
di
.
module
;
import
com.jess.arms.di.scope.FragmentScope
;
import
dagger.Binds
;
import
dagger.Module
;
import
dagger.Provides
;
import
com.gingersoft.supply_chain.mvp.contract.SnCodeListContract
;
import
com.gingersoft.supply_chain.mvp.model.SnCodeListModel
;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/26/2021 19:26
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@Module
public
abstract
class
SnCodeListModule
{
@Binds
abstract
SnCodeListContract
.
Model
bindSnCodeListModel
(
SnCodeListModel
model
);
}
\ No newline at end of file
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/bean/OrderWareHouseBean.java
View file @
1a951bc8
...
...
@@ -51,5 +51,9 @@ public class OrderWareHouseBean {
* 副單位
*/
private
WareHousingUnitBean
purchaseWarehousingUnit
;
/**
* sn碼
*/
private
List
<
PurchaseFoodEncodeSn
>
purchaseFoodEncodeSn
;
}
}
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/bean/PurchaseConsumeSnBean.java
0 → 100644
View file @
1a951bc8
package
com
.
gingersoft
.
supply_chain
.
mvp
.
bean
;
import
java.util.List
;
/**
* @author 宇航.
* User: admin
* Date: 2021/3/26
* Time: 17:02
* Use:
*/
public
class
PurchaseConsumeSnBean
{
public
int
brandId
;
public
int
restaurantId
;
public
String
foodNo
;
public
int
consumeQuantity
;
public
int
purchaseConsumeReasonId
;
public
String
remarks
;
public
List
<
PurchaseFoodEncodeSn
>
purchaseFoodEncodeSn
;
public
static
class
PurchaseFoodEncodeSn
{
public
PurchaseFoodEncodeSn
(
String
encodeSnNo
)
{
this
.
encodeSnNo
=
encodeSnNo
;
}
public
String
encodeSnNo
;
}
}
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/bean/PurchaseFoodBean.java
View file @
1a951bc8
...
...
@@ -97,6 +97,12 @@ public class PurchaseFoodBean implements Serializable, QMUISection.Model<Purchas
private
int
minimumInventory
;
private
int
shelfLife
;
private
int
warningDays
;
/**
* 食材是否有sn碼
*/
private
int
foodMarkSn
;
public
static
final
int
NOT_HAS_SN
=
0
;
public
static
final
int
HAS_SN
=
1
;
/**
* 庫存預警 模塊
...
...
@@ -137,6 +143,7 @@ public class PurchaseFoodBean implements Serializable, QMUISection.Model<Purchas
/**
* 复制一個類
*
* @param old
* @return
*/
...
...
@@ -158,7 +165,6 @@ public class PurchaseFoodBean implements Serializable, QMUISection.Model<Purchas
}
@Override
public
PurchaseFoodBean
cloneForDiff
()
{
return
null
;
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/bean/PurchaseFoodEncodeSn.java
0 → 100644
View file @
1a951bc8
package
com
.
gingersoft
.
supply_chain
.
mvp
.
bean
;
import
java.io.Serializable
;
/**
* @author 宇航.
* User: admin
* Date: 2021/3/25
* Time: 18:20
* Use:
*/
public
class
PurchaseFoodEncodeSn
implements
Serializable
{
/**
* 食材編號
*/
private
String
encodeFoodNo
;
/**
* 採購訂單編號
*/
private
String
encodeOrderNo
;
/**
* sn編碼
*/
private
String
encodeSnNo
;
public
Integer
id
;
public
long
createTime
;
public
long
updateTime
;
public
int
createUid
;
public
int
updateUid
;
public
String
userName
;
/**
* 是否新增
*/
public
boolean
newAdd
=
false
;
public
PurchaseFoodEncodeSn
()
{
}
public
PurchaseFoodEncodeSn
(
String
encodeFoodNo
,
String
encodeOrderNo
,
String
encodeSnNo
)
{
this
.
encodeFoodNo
=
encodeFoodNo
;
this
.
encodeOrderNo
=
encodeOrderNo
;
this
.
encodeSnNo
=
encodeSnNo
;
}
public
String
getEncodeFoodNo
()
{
return
encodeFoodNo
;
}
public
void
setEncodeFoodNo
(
String
encodeFoodNo
)
{
this
.
encodeFoodNo
=
encodeFoodNo
;
}
public
String
getEncodeOrderNo
()
{
return
encodeOrderNo
;
}
public
void
setEncodeOrderNo
(
String
encodeOrderNo
)
{
this
.
encodeOrderNo
=
encodeOrderNo
;
}
public
String
getEncodeSnNo
()
{
return
encodeSnNo
;
}
public
void
setEncodeSnNo
(
String
encodeSnNo
)
{
this
.
encodeSnNo
=
encodeSnNo
;
}
}
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/bean/PurchaseOrderDetailsBean.java
View file @
1a951bc8
...
...
@@ -161,6 +161,14 @@ public class PurchaseOrderDetailsBean {
private
String
orderNo
;
private
DeputyUnitBean
showUnit
;
/**
* {@link PurchaseFoodBean.NOT_HAS_SN}
* {@link PurchaseFoodBean.HAS_SN}
*/
private
int
foodMarkSn
;
/**
* sn集合,掃描了sn之後,裝在這裡面
*/
private
List
<
PurchaseFoodEncodeSn
>
purchaseFoodEncodeSns
;
}
}
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/bean/PurchaseWarehousingOrderDetailsVO.java
0 → 100644
View file @
1a951bc8
package
com
.
gingersoft
.
supply_chain
.
mvp
.
bean
;
import
java.io.Serializable
;
import
lombok.Data
;
/**
* @author 宇航.
* User: admin
* Date: 2021/3/26
* Time: 12:19
* Use:
*/
@Data
public
class
PurchaseWarehousingOrderDetailsVO
implements
Serializable
{
/**
* id : 84
* name : 阿克苏苹果🍎
* cateName : 特级水果
* supplierName : 盒马生鲜
* basicUnitName : 1
* foodPrice : 89
* foodNum : 3
* foodAmount : 267
*/
private
int
id
;
private
String
foodNo
;
private
String
name
;
private
String
foodCategoryName
;
// private String supplierName;
private
String
unitName
;
private
double
foodPrice
;
private
int
foodNum
;
private
double
foodAmount
;
private
String
images
;
/**
* {@link PurchaseFoodBean.NOT_HAS_SN}
* {@link PurchaseFoodBean.HAS_SN}
*/
private
int
foodMarkSn
;
}
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/bean/WareHouseListBean.java
View file @
1a951bc8
...
...
@@ -67,33 +67,5 @@ public class WareHouseListBean {
*/
private
int
count
;
}
/**
* 食品信息
*/
@Data
public
static
class
PurchaseWarehousingOrderDetailsVO
implements
Serializable
{
/**
* id : 84
* name : 阿克苏苹果🍎
* cateName : 特级水果
* supplierName : 盒马生鲜
* basicUnitName : 1
* foodPrice : 89
* foodNum : 3
* foodAmount : 267
*/
private
int
id
;
private
String
foodNo
;
private
String
name
;
private
String
foodCategoryName
;
// private String supplierName;
private
String
unitName
;
private
double
foodPrice
;
private
int
foodNum
;
private
double
foodAmount
;
private
String
images
;
private
boolean
snFood
;
}
}
}
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/bean/WarehouseDetailsBean.java
View file @
1a951bc8
...
...
@@ -26,7 +26,7 @@ public class WarehouseDetailsBean {
private
String
name
;
private
String
purchase
;
private
String
orderNo
;
private
double
foodQuantity
;
private
int
foodQuantity
;
private
double
totalPrice
;
// private String createTime;
private
String
supplierName
;
...
...
@@ -55,6 +55,10 @@ public class WarehouseDetailsBean {
* 消耗狀態,1從未被消耗,2消耗了一部分,3完全消耗
*/
private
int
consumeStatus
;
/**
* 入庫詳情ids,逗號分隔
*/
private
String
warehousingOrderDetailsIds
;
public
final
static
int
WAREHOUSE_STATE_NEVER_CONSUMED
=
1
;
public
final
static
int
WAREHOUSE_STATE_PART_CONSUMED
=
2
;
public
final
static
int
WAREHOUSE_STATE_ALL_CONSUMED
=
3
;
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/contract/OrderDetailsContract.java
View file @
1a951bc8
...
...
@@ -33,6 +33,8 @@ public interface OrderDetailsContract {
void
uploadPicSuccess
(
String
imgUrl
);
void
buyAgain
();
void
querySnCodeSuccess
(
int
position
,
PurchaseOrderDetailsBean
.
PurchaseOrderDetailsInfoVosBean
infoVosBean
);
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
...
...
@@ -49,6 +51,12 @@ public interface OrderDetailsContract {
Observable
<
BaseResult
>
deleteOrder
(
int
orderId
);
/**
* 查詢食品sn碼
* @param encodeFoodNo 食品編號
* @param encodeOrderNo 訂單編號
*/
Observable
<
BaseResult
>
querySnCodes
(
String
encodeFoodNo
,
String
encodeOrderNo
);
/**
* 再來一單
* @param map
* @return
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/contract/SnCodeListContract.java
0 → 100644
View file @
1a951bc8
package
com
.
gingersoft
.
supply_chain
.
mvp
.
contract
;
import
com.jess.arms.mvp.IView
;
import
com.jess.arms.mvp.IModel
;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/26/2021 19:26
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public
interface
SnCodeListContract
{
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface
View
extends
IView
{
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface
Model
extends
IModel
{
}
}
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/contract/WareHouseListContract.java
View file @
1a951bc8
package
com
.
gingersoft
.
supply_chain
.
mvp
.
contract
;
import
com.gingersoft.gsa.cloud.common.bean.BaseResult
;
import
com.gingersoft.supply_chain.mvp.bean.PurchaseWarehousingOrderDetailsVO
;
import
com.gingersoft.supply_chain.mvp.bean.WareHouseListBean
;
import
com.jess.arms.mvp.IView
;
import
com.jess.arms.mvp.IModel
;
...
...
@@ -28,7 +29,7 @@ public interface WareHouseListContract {
interface
View
extends
IView
{
void
loadWarehousingInfo
(
WareHouseListBean
.
WareHousingDataBean
data
);
void
loadListInfo
(
List
<
WareHouseListBean
.
WareHousingDataBean
.
PurchaseWarehousingOrderDetailsVO
>
purchaseWarehousingOrderDetailsVos
);
void
loadListInfo
(
List
<
PurchaseWarehousingOrderDetailsVO
>
purchaseWarehousingOrderDetailsVos
);
void
finishLoad
();
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/contract/WarehouseDetailsContract.java
View file @
1a951bc8
...
...
@@ -2,6 +2,7 @@ package com.gingersoft.supply_chain.mvp.contract;
import
com.gingersoft.gsa.cloud.common.bean.BaseResult
;
import
com.gingersoft.supply_chain.mvp.bean.ConsumeReasonBean
;
import
com.gingersoft.supply_chain.mvp.bean.PurchaseFoodEncodeSn
;
import
com.gingersoft.supply_chain.mvp.bean.WareHouseListBean
;
import
com.gingersoft.supply_chain.mvp.bean.WarehouseDetailsBean
;
import
com.jess.arms.mvp.IView
;
...
...
@@ -52,6 +53,29 @@ public interface WarehouseDetailsContract {
* 修改庫存數量
*/
void
setWarehousingNum
(
int
num
);
/**
* 如果消耗成功了,需要移除消耗视图,显示流水
*
* @param visibility 是否显示流水
*/
void
showList
(
int
visibility
);
/**
* 打印消耗单
*
* @param consumeReasonDesc 消耗原因
* @param consumptionNum 消耗数量
*/
void
printConsumeOrder
(
String
consumeReasonDesc
,
int
consumptionNum
);
/**
* 跳转到sn码页面
*
* @param remark
* @param sns
*/
void
jumpSnList
(
int
foodQuantity
,
String
remark
,
List
<
PurchaseFoodEncodeSn
>
sns
);
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
...
...
@@ -75,6 +99,10 @@ public interface WarehouseDetailsContract {
*/
Observable
<
BaseResult
>
getWarehousingNum
(
Map
<
String
,
Object
>
map
);
/**
* 獲取Sn列表
*/
Observable
<
BaseResult
>
querySnCodeList
(
Map
<
String
,
Object
>
map
);
}
}
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/model/OrderDetailsModel.java
View file @
1a951bc8
...
...
@@ -74,6 +74,11 @@ public class OrderDetailsModel extends BaseModel implements OrderDetailsContract
}
@Override
public
Observable
<
BaseResult
>
querySnCodes
(
String
encodeFoodNo
,
String
encodeOrderNo
)
{
return
mRepositoryManager
.
obtainRetrofitService
(
SupplierServer
.
class
).
querySnCodes
(
encodeFoodNo
,
encodeOrderNo
);
}
@Override
public
Observable
<
BaseResult
>
buyAgainByFoodIds
(
Map
<
String
,
Object
>
map
)
{
return
mRepositoryManager
.
obtainRetrofitService
(
SupplierServer
.
class
).
buyAgainByFoodIds
(
map
);
}
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/model/SnCodeListModel.java
0 → 100644
View file @
1a951bc8
package
com
.
gingersoft
.
supply_chain
.
mvp
.
model
;
import
android.app.Application
;
import
com.google.gson.Gson
;
import
com.jess.arms.integration.IRepositoryManager
;
import
com.jess.arms.mvp.BaseModel
;
import
com.jess.arms.di.scope.FragmentScope
;
import
javax.inject.Inject
;
import
com.gingersoft.supply_chain.mvp.contract.SnCodeListContract
;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/26/2021 19:26
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
public
class
SnCodeListModel
extends
BaseModel
implements
SnCodeListContract
.
Model
{
@Inject
Gson
mGson
;
@Inject
Application
mApplication
;
@Inject
public
SnCodeListModel
(
IRepositoryManager
repositoryManager
)
{
super
(
repositoryManager
);
}
@Override
public
void
onDestroy
()
{
super
.
onDestroy
();
this
.
mGson
=
null
;
this
.
mApplication
=
null
;
}
}
\ No newline at end of file
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/model/WarehouseDetailsModel.java
View file @
1a951bc8
...
...
@@ -76,5 +76,10 @@ public class WarehouseDetailsModel extends BaseModel implements WarehouseDetails
return
mRepositoryManager
.
obtainRetrofitService
(
SupplierServer
.
class
).
getWarehousingNum
(
map
);
}
@Override
public
Observable
<
BaseResult
>
querySnCodeList
(
Map
<
String
,
Object
>
map
)
{
return
mRepositoryManager
.
obtainRetrofitService
(
SupplierServer
.
class
).
querySnCodeList
(
map
);
}
}
\ No newline at end of file
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/presenter/NewFoodIngredientsPresenter.java
View file @
1a951bc8
...
...
@@ -102,6 +102,10 @@ public class NewFoodIngredientsPresenter extends BasePresenter<NewFoodIngredient
*/
public
int
foodNoIndex
=
10
;
/**
* 食材sn碼下標
*/
public
int
foodSnIndex
=
11
;
/**
* 食材單價下標
*/
public
int
foodIngredientPriceIndex
=
12
;
...
...
@@ -240,6 +244,8 @@ public class NewFoodIngredientsPresenter extends BasePresenter<NewFoodIngredient
foodNoInputBean
.
setEdit
(
false
);
foodNoInputBean
.
setShowValue
(
purchaseFoodBean
.
getFoodNo
());
}
//sn食材
infoMultiBeans
.
get
(
foodSnIndex
).
setChecked
(
purchaseFoodBean
.
getFoodMarkSn
()
==
PurchaseFoodBean
.
HAS_SN
);
//單價
if
(
purchaseFoodBean
.
getUnitPrice
()
!=
null
)
{
infoMultiBeans
.
get
(
foodIngredientPriceIndex
).
setShowValue
(
purchaseFoodBean
.
getUnitPrice
()
+
""
);
...
...
@@ -474,6 +480,8 @@ public class NewFoodIngredientsPresenter extends BasePresenter<NewFoodIngredient
}
else
{
purchaseFoodBean
.
setFoodNo
(
null
);
}
//是否有sn碼
purchaseFoodBean
.
setFoodMarkSn
(
infoMultiBeans
.
get
(
foodSnIndex
).
isChecked
()
?
PurchaseFoodBean
.
HAS_SN
:
PurchaseFoodBean
.
NOT_HAS_SN
);
//單價
String
unitPriceStr
=
infoMultiBeans
.
get
(
foodIngredientPriceIndex
).
getShowValue
();
if
(
TextUtil
.
isNotEmptyOrNullOrUndefined
(
unitPriceStr
))
{
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/presenter/OrderDetailsPresenter.java
View file @
1a951bc8
...
...
@@ -11,6 +11,7 @@ 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.PurchaseFoodEncodeSn
;
import
com.gingersoft.supply_chain.mvp.bean.PurchaseOrderDetailsBean
;
import
com.gingersoft.supply_chain.mvp.bean.OrderWareHouseBean
;
import
com.gingersoft.supply_chain.mvp.bean.WareHousingUnitBean
;
...
...
@@ -361,22 +362,13 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
List
<
OrderWareHouseBean
.
PurchaseWarehousingOrderDetail
>
purchaseWarehousingOrderDetails
=
new
ArrayList
<>();
for
(
PurchaseOrderDetailsBean
.
PurchaseOrderDetailsInfoVosBean
purchaseOrderDetailsInfoVosBean
:
purchaseOrderDetailsInfoVosBeans
)
{
if
(
purchaseOrderDetailsInfoVosBean
.
getStatus
()
!=
PurchaseOrderDetailsBean
.
COMPLETE_RECEIVED
&&
purchaseOrderDetailsInfoVosBean
.
isChecked
())
{
//新的入庫類
OrderWareHouseBean
.
PurchaseWarehousingOrderDetail
purchaseWarehousingOrderDetail
=
new
OrderWareHouseBean
.
PurchaseWarehousingOrderDetail
();
purchaseWarehousingOrderDetail
.
setOrderDetailsId
(
purchaseOrderDetailsInfoVosBean
.
getId
());
purchaseWarehousingOrderDetail
.
setPurchaseFoodId
(
purchaseOrderDetailsInfoVosBean
.
getPurchaseFoodId
());
purchaseWarehousingOrderDetail
.
setFoodQuantity
(
purchaseOrderDetailsInfoVosBean
.
getFoodQuantity
());
purchaseWarehousingOrderDetail
.
setFoodPrice
(
purchaseOrderDetailsInfoVosBean
.
getFoodPrice
());
purchaseWarehousingOrderDetail
.
setTotalPrice
(
MoneyUtil
.
priceCalculation
(
purchaseOrderDetailsInfoVosBean
.
getFoodPrice
(),
purchaseOrderDetailsInfoVosBean
.
getFoodQuantity
()));
// List<DeputyUnitBean> deputyUnitBeans = purchaseOrderDetailsInfoVosBean.getFoodUnits();
//將副單位轉為入庫用的副單位
// if (deputyUnitBeans != null && deputyUnitBeans.size() > 1) {
// //主單位名稱
// purchaseWarehousingOrderDetail.setBasicUnitName(deputyUnitBeans.get(1).getDeputyUnit());
// //主單位數量
// purchaseWarehousingOrderDetail.setBasicUnitValue(deputyUnitBeans.get(1).getDeputyValue());
// //統計副單位
// List<WareHousingUnitBean> wareHousingUnitBeans = new ArrayList<>();
// for (int i = 0; i < deputyUnitBeans.size(); i++) {
DeputyUnitBean
deputyUnitBean
=
purchaseOrderDetailsInfoVosBean
.
getShowUnit
();
WareHousingUnitBean
wareHousingUnitBean
=
DeputyUnitBean
.
getWareHousingUnitByDeputyUnit
(
deputyUnitBean
);
if
(
purchaseOrderDetailsInfoVosBean
.
getStatus
()
!=
PurchaseOrderDetailsBean
.
WAIT_RECEIVED
&&
deputyUnitBean
.
getId
()
!=
null
)
{
...
...
@@ -386,6 +378,21 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
wareHousingUnitBean
.
setBrandId
(
RestaurantInfoManager
.
newInstance
().
getBrandId
());
wareHousingUnitBean
.
setRestaurantId
(
RestaurantInfoManager
.
newInstance
().
getRestaurantId
());
purchaseWarehousingOrderDetail
.
setPurchaseWarehousingUnit
(
wareHousingUnitBean
);
//sn碼
List
<
PurchaseFoodEncodeSn
>
snList
=
null
;
// StringBuilder snCode = new StringBuilder();
if
(
purchaseOrderDetailsInfoVosBean
.
getPurchaseFoodEncodeSns
()
!=
null
)
{
snList
=
new
ArrayList
<>();
//只遍歷出新增的
for
(
PurchaseFoodEncodeSn
purchaseFoodEncodeSn
:
purchaseOrderDetailsInfoVosBean
.
getPurchaseFoodEncodeSns
())
{
if
(
purchaseFoodEncodeSn
.
newAdd
)
{
snList
.
add
(
purchaseFoodEncodeSn
);
// snCode.append(purchaseFoodEncodeSn.getEncodeSnNo()).append(",");
}
}
// snCode.substring(0, snCode.length() - 1);
}
purchaseWarehousingOrderDetail
.
setPurchaseFoodEncodeSn
(
snList
);
purchaseWarehousingOrderDetails
.
add
(
purchaseWarehousingOrderDetail
);
}
}
...
...
@@ -419,6 +426,29 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
}
/**
* 查詢商品sn碼
*/
public
void
querySnCodes
(
int
position
,
PurchaseOrderDetailsBean
.
PurchaseOrderDetailsInfoVosBean
infoVosBean
)
{
mModel
.
querySnCodes
(
infoVosBean
.
getFoodNo
(),
infoVosBean
.
getOrderNo
())
.
subscribeOn
(
Schedulers
.
io
())
.
doOnSubscribe
(
disposable
->
mRootView
.
showLoading
(
Constant
.
QUERY_LOADING
))
.
subscribeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
doAfterTerminate
(()
->
mRootView
.
hideLoading
())
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mRootView
))
.
subscribe
(
new
ErrorHandleSubscriber
<
BaseResult
>(
mErrorHandler
)
{
@Override
public
void
onNext
(
@NonNull
BaseResult
info
)
{
if
(
info
.
isSuccess
())
{
List
<
PurchaseFoodEncodeSn
>
purchaseFoodEncodeSns
=
GsonUtils
.
jsonToList
(
info
.
getData
(),
PurchaseFoodEncodeSn
.
class
);
infoVosBean
.
setPurchaseFoodEncodeSns
(
purchaseFoodEncodeSns
);
mRootView
.
querySnCodeSuccess
(
position
,
infoVosBean
);
}
}
});
}
/**
* 上傳圖片
*
* @param filePath 圖片路徑
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/presenter/SnCodeListPresenter.java
0 → 100644
View file @
1a951bc8
package
com
.
gingersoft
.
supply_chain
.
mvp
.
presenter
;
import
android.app.Application
;
import
com.jess.arms.integration.AppManager
;
import
com.jess.arms.di.scope.FragmentScope
;
import
com.jess.arms.mvp.BasePresenter
;
import
com.jess.arms.http.imageloader.ImageLoader
;
import
me.jessyan.rxerrorhandler.core.RxErrorHandler
;
import
javax.inject.Inject
;
import
com.gingersoft.supply_chain.mvp.contract.SnCodeListContract
;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/26/2021 19:26
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
public
class
SnCodeListPresenter
extends
BasePresenter
<
SnCodeListContract
.
Model
,
SnCodeListContract
.
View
>
{
@Inject
RxErrorHandler
mErrorHandler
;
@Inject
Application
mApplication
;
@Inject
ImageLoader
mImageLoader
;
@Inject
AppManager
mAppManager
;
@Inject
public
SnCodeListPresenter
(
SnCodeListContract
.
Model
model
,
SnCodeListContract
.
View
rootView
)
{
super
(
model
,
rootView
);
}
@Override
public
void
onDestroy
()
{
super
.
onDestroy
();
this
.
mErrorHandler
=
null
;
this
.
mAppManager
=
null
;
this
.
mImageLoader
=
null
;
this
.
mApplication
=
null
;
}
}
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/presenter/WarehouseDetailsPresenter.java
View file @
1a951bc8
package
com
.
gingersoft
.
supply_chain
.
mvp
.
presenter
;
import
android.app.Application
;
import
android.view.View
;
import
com.gingersoft.gsa.cloud.common.bean.BaseResult
;
import
com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager
;
import
com.gingersoft.gsa.cloud.common.utils.JsonUtils
;
import
com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils
;
import
com.gingersoft.gsa.cloud.common.utils.other.TextUtil
;
import
com.gingersoft.supply_chain.mvp.bean.ConsumeReasonBean
;
import
com.gingersoft.supply_chain.mvp.bean.ConsumeWareHousingBean
;
import
com.gingersoft.supply_chain.mvp.bean.PurchaseConsumeSnBean
;
import
com.gingersoft.supply_chain.mvp.bean.PurchaseFoodEncodeSn
;
import
com.gingersoft.supply_chain.mvp.bean.PurchaseWarehousingOrderDetailsVO
;
import
com.gingersoft.supply_chain.mvp.bean.WareHouseListBean
;
import
com.gingersoft.supply_chain.mvp.bean.WarehouseDetailsBean
;
import
com.gingersoft.supply_chain.mvp.content.Constant
;
...
...
@@ -22,6 +27,7 @@ import io.reactivex.schedulers.Schedulers;
import
me.jessyan.rxerrorhandler.core.RxErrorHandler
;
import
me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber
;
import
okhttp3.FormBody
;
import
okhttp3.MediaType
;
import
okhttp3.RequestBody
;
import
javax.inject.Inject
;
...
...
@@ -29,9 +35,11 @@ import javax.inject.Inject;
import
com.gingersoft.supply_chain.mvp.contract.WarehouseDetailsContract
;
import
com.jess.arms.utils.RxLifecycleUtils
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -165,20 +173,30 @@ public class WarehouseDetailsPresenter extends BasePresenter<WarehouseDetailsCon
/**
* 庫存消耗
*
* @param
foodNo 食材編號
* @param
purchaseWarehousingOrderDetailsVO 食材信息
* @param consumeQuantity 消耗數量
* @param
purchaseConsumeReasonId 原因id
* @param
consumeReasonBean 消耗原因
* @param remarks 備註
*/
public
void
consumeWareHousing
(
String
foodNo
,
int
consumeQuantity
,
int
purchaseConsumeReasonId
,
String
remarks
)
{
FormBody
.
Builder
formBody
=
new
FormBody
.
Builder
()
.
add
(
"foodNo"
,
foodNo
)
.
add
(
"consumeQuantity"
,
String
.
valueOf
(
consumeQuantity
))
.
add
(
"purchaseConsumeReasonId"
,
String
.
valueOf
(
purchaseConsumeReasonId
))
.
add
(
"remarks"
,
remarks
);
Constant
.
addRestaurantId
(
formBody
);
Constant
.
addBrandId
(
formBody
);
mModel
.
consumeWareHousing
(
formBody
.
build
())
public
void
consumeWareHousing
(
PurchaseWarehousingOrderDetailsVO
purchaseWarehousingOrderDetailsVO
,
int
consumeQuantity
,
ConsumeReasonBean
consumeReasonBean
,
String
remarks
,
List
<
String
>
snCodes
,
boolean
whetherPrint
)
{
PurchaseConsumeSnBean
purchaseConsumeSnBean
=
new
PurchaseConsumeSnBean
();
purchaseConsumeSnBean
.
brandId
=
RestaurantInfoManager
.
newInstance
().
getBrandId
();
purchaseConsumeSnBean
.
restaurantId
=
RestaurantInfoManager
.
newInstance
().
getRestaurantId
();
purchaseConsumeSnBean
.
foodNo
=
purchaseWarehousingOrderDetailsVO
.
getFoodNo
();
purchaseConsumeSnBean
.
purchaseConsumeReasonId
=
consumeReasonBean
.
getId
();
purchaseConsumeSnBean
.
remarks
=
remarks
;
if
(
snCodes
!=
null
)
{
List
<
PurchaseConsumeSnBean
.
PurchaseFoodEncodeSn
>
snList
=
new
ArrayList
<>();
for
(
String
snCode
:
snCodes
)
{
snList
.
add
(
new
PurchaseConsumeSnBean
.
PurchaseFoodEncodeSn
(
snCode
));
}
purchaseConsumeSnBean
.
consumeQuantity
=
snList
.
size
();
purchaseConsumeSnBean
.
purchaseFoodEncodeSn
=
snList
;
}
else
{
purchaseConsumeSnBean
.
consumeQuantity
=
consumeQuantity
;
}
RequestBody
requestBody
=
RequestBody
.
create
(
MediaType
.
parse
(
"application/json"
),
GsonUtils
.
GsonString
(
purchaseConsumeSnBean
));
mModel
.
consumeWareHousing
(
requestBody
)
.
subscribeOn
(
Schedulers
.
io
())
.
doOnSubscribe
(
disposable
->
mRootView
.
showLoading
(
Constant
.
UPDATE_LOADING
))
.
subscribeOn
(
AndroidSchedulers
.
mainThread
())
...
...
@@ -189,10 +207,18 @@ public class WarehouseDetailsPresenter extends BasePresenter<WarehouseDetailsCon
@Override
public
void
onNext
(
BaseResult
baseResult
)
{
if
(
baseResult
!=
null
&&
baseResult
.
isSuccess
())
{
if
(
whetherPrint
)
{
mRootView
.
printConsumeOrder
(
consumeReasonBean
.
getDescription
(),
consumeQuantity
);
}
else
{
//如果需要打印,則是在打印完之後查詢,如果不需要打印,現在就查詢刷新頁面
//消耗完之後,刷新列表
mRootView
.
getPageInfo
();
//重新獲取庫存數量
getWarehousingNum
(
foodNo
);
getWarehousingNum
(
purchaseWarehousingOrderDetailsVO
.
getFoodNo
());
}
//不需要打印,現在就移除消耗视图,显示流水页面
//如果需要打印,則在打印完成後執行
mRootView
.
showList
(
View
.
VISIBLE
);
}
else
if
(
baseResult
!=
null
&&
TextUtil
.
isNotEmptyOrNullOrUndefined
(
baseResult
.
getErrMsg
()))
{
mRootView
.
showMessage
(
baseResult
.
getErrMsg
());
}
else
{
...
...
@@ -231,4 +257,26 @@ public class WarehouseDetailsPresenter extends BasePresenter<WarehouseDetailsCon
}
});
}
public
void
querySnCodeList
(
int
foodQuantity
,
String
remark
,
String
warehousingOrderDetailsIds
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"warehousingOrderDetailsIds"
,
warehousingOrderDetailsIds
);
mModel
.
querySnCodeList
(
map
)
.
subscribeOn
(
Schedulers
.
io
())
.
doOnSubscribe
(
disposable
->
mRootView
.
showLoading
(
Constant
.
QUERY_LOADING
))
.
subscribeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
doAfterTerminate
(()
->
mRootView
.
hideLoading
())
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mRootView
))
.
subscribe
(
new
ErrorHandleSubscriber
<
BaseResult
>(
mErrorHandler
)
{
@Override
public
void
onNext
(
BaseResult
baseResult
)
{
if
(
baseResult
!=
null
&&
baseResult
.
isSuccess
())
{
List
<
PurchaseFoodEncodeSn
>
purchaseFoodEncodeSns
=
GsonUtils
.
jsonToList
(
baseResult
.
getData
(),
PurchaseFoodEncodeSn
.
class
);
mRootView
.
jumpSnList
(
foodQuantity
,
remark
,
purchaseFoodEncodeSns
);
}
}
});
}
}
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/server/SupplierServer.java
View file @
1a951bc8
...
...
@@ -282,6 +282,11 @@ public interface SupplierServer {
@POST
(
"purchaseOrder/delete"
+
RetrofitUrlManager
.
IDENTIFICATION_PATH_SIZE
+
2
)
Observable
<
BaseResult
>
deleteOrder
(
@Field
(
"id"
)
int
orderId
);
@Headers
({
"Domain-Name: ricepon-purchase"
})
@GET
(
"purchaseFood/purchaseFoodSnlist"
+
RetrofitUrlManager
.
IDENTIFICATION_PATH_SIZE
+
2
)
Observable
<
BaseResult
>
querySnCodes
(
@Query
(
"encodeFoodNo"
)
String
encodeFoodNo
,
@Query
(
"encodeOrderNo"
)
String
encodeOrderNo
);
/**
* 再來一單,通過食材ids獲取詳細信息
*
...
...
@@ -448,6 +453,9 @@ public interface SupplierServer {
@GET
(
"purchaseConsume/get/remaining/quantity"
+
RetrofitUrlManager
.
IDENTIFICATION_PATH_SIZE
+
2
)
Observable
<
BaseResult
>
getWarehousingNum
(
@QueryMap
Map
<
String
,
Object
>
map
);
@Headers
({
"Domain-Name: ricepon-purchase"
})
@GET
(
"purchaseFood/purchaseFoodSnlist"
+
RetrofitUrlManager
.
IDENTIFICATION_PATH_SIZE
+
2
)
Observable
<
BaseResult
>
querySnCodeList
(
@QueryMap
Map
<
String
,
Object
>
map
);
/**
* 查詢庫存消耗記錄
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/activity/SupplyChainMainActivity.java
View file @
1a951bc8
...
...
@@ -11,6 +11,7 @@ import android.widget.EditText;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
androidx.core.app.ActivityCompat
;
import
com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog
;
import
com.gingersoft.supply_chain.R
;
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/adapter/InventoryRecordAdapter.java
View file @
1a951bc8
...
...
@@ -37,7 +37,7 @@ public class InventoryRecordAdapter extends BaseQuickAdapter<InventoryRecordBean
viewHolder
.
setText
(
R
.
id
.
tv_inventory_record_username
,
inventoryRecordBean
.
getUserName
());
viewHolder
.
setText
(
R
.
id
.
tv_inventory_record_number
,
String
.
valueOf
(
inventoryRecordBean
.
getRemainingQuantity
()));
viewHolder
.
setText
(
R
.
id
.
tv_inventory_record_difference
,
String
.
valueOf
(
inventoryRecordBean
.
getConsumeQuantity
()));
viewHolder
.
setText
(
R
.
id
.
tv_inventory_record_operating_data
,
TimeUtils
.
getTime
(
inventoryRecordBean
.
getCreateTime
(),
TimeUtils
.
DEFAULT_DATE_FORMAT
));
viewHolder
.
setText
(
R
.
id
.
tv_inventory_record_operating_data
,
TimeUtils
.
getTime
(
inventoryRecordBean
.
getCreateTime
(),
TimeUtils
.
DEFAULT_DATE_FORMAT
_YMDHM
));
viewHolder
.
setTextColor
(
R
.
id
.
tv_inventory_record_username
,
ContextCompat
.
getColor
(
getContext
(),
R
.
color
.
color_3c
));
viewHolder
.
setTextColor
(
R
.
id
.
tv_inventory_record_number
,
ContextCompat
.
getColor
(
getContext
(),
R
.
color
.
color_3c
));
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/adapter/SnCodesAdapter.java
0 → 100644
View file @
1a951bc8
package
com
.
gingersoft
.
supply_chain
.
mvp
.
ui
.
adapter
;
import
android.content.Context
;
import
androidx.core.content.ContextCompat
;
import
com.chad.library.adapter.base.BaseQuickAdapter
;
import
com.chad.library.adapter.base.viewholder.BaseViewHolder
;
import
com.gingersoft.gsa.cloud.common.utils.time.TimeUtils
;
import
com.gingersoft.supply_chain.R
;
import
com.gingersoft.supply_chain.mvp.bean.PurchaseFoodEncodeSn
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.annotations.Nullable
;
import
java.util.List
;
/**
* @author 宇航.
* User: admin
* Date: 2021/3/26
* Time: 19:53
* Use:
*/
public
class
SnCodesAdapter
extends
BaseQuickAdapter
<
PurchaseFoodEncodeSn
,
BaseViewHolder
>
{
private
int
[]
colors
=
new
int
[]{
R
.
color
.
color_f9
,
R
.
color
.
white
};
public
SnCodesAdapter
(
@Nullable
List
<
PurchaseFoodEncodeSn
>
data
)
{
super
(
R
.
layout
.
include_sn_item
,
data
);
}
@Override
protected
void
convert
(
@NotNull
BaseViewHolder
viewHolder
,
PurchaseFoodEncodeSn
purchaseFoodEncodeSn
)
{
int
colorRes
=
getColor
(
getContext
(),
colors
[
viewHolder
.
getAdapterPosition
()
%
2
]);
viewHolder
.
setBackgroundColor
(
R
.
id
.
layout_sn_item
,
colorRes
);
setTextColor
(
viewHolder
,
getColor
(
getContext
(),
R
.
color
.
color_3c
));
viewHolder
.
setText
(
R
.
id
.
tv_serial_number
,
String
.
valueOf
(
viewHolder
.
getAdapterPosition
()));
viewHolder
.
setText
(
R
.
id
.
tv_sn_code
,
String
.
valueOf
(
purchaseFoodEncodeSn
.
getEncodeSnNo
()));
viewHolder
.
setText
(
R
.
id
.
tv_operator
,
String
.
valueOf
(
purchaseFoodEncodeSn
.
userName
));
viewHolder
.
setText
(
R
.
id
.
tv_time
,
TimeUtils
.
getStringByFormat
(
purchaseFoodEncodeSn
.
updateTime
,
TimeUtils
.
DATE_FORMAT_DATE
));
}
private
void
setTextColor
(
@NotNull
BaseViewHolder
viewHolder
,
int
textColorRes
)
{
viewHolder
.
setTextColor
(
R
.
id
.
tv_serial_number
,
textColorRes
);
viewHolder
.
setTextColor
(
R
.
id
.
tv_sn_code
,
textColorRes
);
viewHolder
.
setTextColor
(
R
.
id
.
tv_operator
,
textColorRes
);
viewHolder
.
setTextColor
(
R
.
id
.
tv_time
,
textColorRes
);
}
private
int
getColor
(
Context
context
,
int
colorRes
)
{
return
ContextCompat
.
getColor
(
context
,
colorRes
);
}
}
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/adapter/WareHousingDetailsAdapter.java
View file @
1a951bc8
...
...
@@ -40,6 +40,7 @@ public class WareHousingDetailsAdapter extends BaseQuickAdapter<WarehouseDetails
public
WareHousingDetailsAdapter
(
@Nullable
List
<
WarehouseDetailsBean
>
data
,
int
type
)
{
super
(
R
.
layout
.
item_warehouse_details
,
data
);
this
.
type
=
type
;
addChildClickViewIds
(
R
.
id
.
tv_warehouse_details_food_num
);
}
@Override
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/adapter/WarehousingQueryAdapter.java
View file @
1a951bc8
...
...
@@ -7,6 +7,7 @@ import androidx.core.content.ContextCompat;
import
com.chad.library.adapter.base.BaseQuickAdapter
;
import
com.chad.library.adapter.base.viewholder.BaseViewHolder
;
import
com.gingersoft.supply_chain.R
;
import
com.gingersoft.supply_chain.mvp.bean.PurchaseWarehousingOrderDetailsVO
;
import
com.gingersoft.supply_chain.mvp.bean.WareHouseListBean
;
import
org.jetbrains.annotations.NotNull
;
...
...
@@ -20,19 +21,19 @@ import java.util.List;
* Time: 16:36
* Use:庫存查詢的訂單列表
*/
public
class
WarehousingQueryAdapter
extends
BaseQuickAdapter
<
WareHouseListBean
.
WareHousingDataBean
.
PurchaseWarehousingOrderDetailsVO
,
BaseViewHolder
>
{
public
class
WarehousingQueryAdapter
extends
BaseQuickAdapter
<
PurchaseWarehousingOrderDetailsVO
,
BaseViewHolder
>
{
private
Context
context
;
private
int
[]
colors
=
new
int
[]{
R
.
color
.
color_f9
,
R
.
color
.
white
};
public
WarehousingQueryAdapter
(
Context
context
,
List
<
WareHouseListBean
.
WareHousingDataBean
.
PurchaseWarehousingOrderDetailsVO
>
purchaseWarehousingOrderDetailsVosBeans
)
{
public
WarehousingQueryAdapter
(
Context
context
,
List
<
PurchaseWarehousingOrderDetailsVO
>
purchaseWarehousingOrderDetailsVosBeans
)
{
super
(
R
.
layout
.
item_warehousing_query
,
purchaseWarehousingOrderDetailsVosBeans
);
addChildClickViewIds
(
R
.
id
.
tv_warehouse_item_inventory_quantity
);
this
.
context
=
context
;
}
@Override
protected
void
convert
(
@NotNull
BaseViewHolder
viewHolder
,
WareHouseListBean
.
WareHousingDataBean
.
PurchaseWarehousingOrderDetailsVO
item
)
{
protected
void
convert
(
@NotNull
BaseViewHolder
viewHolder
,
PurchaseWarehousingOrderDetailsVO
item
)
{
viewHolder
.
setText
(
R
.
id
.
tv_warehouse_item_ingredients_name
,
item
.
getName
());
viewHolder
.
setText
(
R
.
id
.
tv_warehouse_item_ingredients_species
,
item
.
getFoodCategoryName
());
viewHolder
.
setText
(
R
.
id
.
tv_warehouse_item_unit
,
item
.
getUnitName
());
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/FunctionListFragment.java
View file @
1a951bc8
...
...
@@ -113,8 +113,8 @@ public class FunctionListFragment extends BaseSupplyChainFragment<FunctionListPr
start
(
SupplierListFragment
.
newInstance
(
false
,
null
));
break
;
case
"食材"
:
//
start(FoodIngredientsFragment.newInstance(FOOD_INGREDIENTS));
start
(
BuyIngredientsFragment
.
newInstance
());
start
(
FoodIngredientsFragment
.
newInstance
(
FOOD_INGREDIENTS
));
//
start(BuyIngredientsFragment.newInstance());
break
;
case
"種類"
:
start
(
CategoryFragment
.
newInstance
());
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/order/OrderDetailsFragment.java
View file @
1a951bc8
This diff is collapsed.
Click to expand it.
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/supplier/SupplierListFragment.java
View file @
1a951bc8
...
...
@@ -139,8 +139,9 @@ public class SupplierListFragment extends BaseSupplyChainFragment<SupplierListPr
private
void
initEditText
()
{
edSupplier
.
setOnEditorActionListener
((
v
,
actionId
,
event
)
->
{
if
(
event
!=
null
)
{
return
true
;
if
(
actionId
==
EditorInfo
.
IME_ACTION_SEARCH
)
{
hideSoftInput
();
getSupplierList
();
}
return
false
;
});
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/warehouse/SnCodeListFragment.java
0 → 100644
View file @
1a951bc8
package
com
.
gingersoft
.
supply_chain
.
mvp
.
ui
.
fragment
.
warehouse
;
import
android.os.Bundle
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.widget.TextView
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
androidx.recyclerview.widget.RecyclerView
;
import
com.gingersoft.supply_chain.R
;
import
com.gingersoft.supply_chain.R2
;
import
com.gingersoft.supply_chain.di.component.DaggerSnCodeListComponent
;
import
com.gingersoft.supply_chain.mvp.bean.PurchaseFoodEncodeSn
;
import
com.gingersoft.supply_chain.mvp.contract.SnCodeListContract
;
import
com.gingersoft.supply_chain.mvp.presenter.SnCodeListPresenter
;
import
com.gingersoft.supply_chain.mvp.ui.adapter.SnCodesAdapter
;
import
com.gingersoft.supply_chain.mvp.ui.fragment.BaseSupplyChainFragment
;
import
com.jess.arms.di.component.AppComponent
;
import
com.qmuiteam.qmui.widget.QMUITopBar
;
import
org.w3c.dom.Text
;
import
java.io.Serializable
;
import
java.util.List
;
import
butterknife.BindView
;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 03/26/2021 19:26
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public
class
SnCodeListFragment
extends
BaseSupplyChainFragment
<
SnCodeListPresenter
>
implements
SnCodeListContract
.
View
{
final
static
String
FOOD_NAME_KEY
=
"FoodNameKey"
;
final
static
String
REMARK_KEY
=
"RemarkKey"
;
final
static
String
SN_KEY
=
"snKey"
;
final
static
String
HOUSING_NUM_KEY
=
"housingNumKey"
;
@BindView
(
R2
.
id
.
supply_top_bar
)
QMUITopBar
supplyTopBar
;
@BindView
(
R2
.
id
.
tv_remark
)
TextView
tvRemark
;
@BindView
(
R2
.
id
.
rv_sn
)
RecyclerView
rvSn
;
@BindView
(
R2
.
id
.
tv_sn_housing_num
)
TextView
tvHousingNum
;
public
static
SnCodeListFragment
newInstance
(
String
foodName
,
String
remarks
,
int
housingNum
,
List
<
PurchaseFoodEncodeSn
>
sns
)
{
SnCodeListFragment
fragment
=
new
SnCodeListFragment
();
Bundle
bundle
=
new
Bundle
();
bundle
.
putString
(
FOOD_NAME_KEY
,
foodName
);
bundle
.
putSerializable
(
SN_KEY
,
(
Serializable
)
sns
);
bundle
.
putString
(
REMARK_KEY
,
remarks
);
bundle
.
putInt
(
HOUSING_NUM_KEY
,
housingNum
);
fragment
.
setArguments
(
bundle
);
return
fragment
;
}
@Override
public
void
setupFragmentComponent
(
@NonNull
AppComponent
appComponent
)
{
DaggerSnCodeListComponent
//如找不到该类,请编译一下项目
.
builder
()
.
appComponent
(
appComponent
)
.
view
(
this
)
.
build
()
.
inject
(
this
);
}
@Override
public
View
initView
(
@NonNull
LayoutInflater
inflater
,
@Nullable
ViewGroup
container
,
@Nullable
Bundle
savedInstanceState
)
{
return
inflater
.
inflate
(
R
.
layout
.
fragment_sn_code_list
,
container
,
false
);
}
@Override
public
void
initData
(
@Nullable
Bundle
savedInstanceState
)
{
Bundle
arguments
=
getArguments
();
if
(
arguments
!=
null
)
{
initTopBar
(
supplyTopBar
,
arguments
.
getString
(
FOOD_NAME_KEY
));
int
housingNum
=
arguments
.
getInt
(
HOUSING_NUM_KEY
,
0
);
if
(
housingNum
>
0
)
{
tvHousingNum
.
setText
(
"+"
+
housingNum
);
}
else
{
tvHousingNum
.
setText
(
String
.
valueOf
(
housingNum
));
}
tvRemark
.
setText
(
String
.
format
(
getString
(
R
.
string
.
str_format_remark
),
arguments
.
getString
(
REMARK_KEY
)));
List
<
PurchaseFoodEncodeSn
>
sns
=
(
List
<
PurchaseFoodEncodeSn
>)
arguments
.
getSerializable
(
SN_KEY
);
SnCodesAdapter
adapter
=
new
SnCodesAdapter
(
sns
);
rvSn
.
setAdapter
(
adapter
);
}
else
{
showMessage
(
"獲取數據失敗"
);
killMyself
();
}
}
}
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/warehouse/WareHouseListFragment.java
View file @
1a951bc8
...
...
@@ -5,6 +5,7 @@ import android.text.InputFilter;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.inputmethod.EditorInfo
;
import
android.widget.EditText
;
import
android.widget.ImageView
;
import
android.widget.TextView
;
...
...
@@ -20,6 +21,7 @@ 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
;
import
com.gingersoft.supply_chain.mvp.bean.PurchaseWarehousingOrderDetailsVO
;
import
com.gingersoft.supply_chain.mvp.bean.WareHouseListBean
;
import
com.gingersoft.supply_chain.mvp.contract.WareHouseListContract
;
import
com.gingersoft.supply_chain.mvp.presenter.WareHouseListPresenter
;
...
...
@@ -114,6 +116,16 @@ public class WareHouseListFragment extends BaseSupplyChainFragment<WareHouseList
});
getWarehousing
();
edWarehouseListSearch
.
setFilters
(
new
InputFilter
[]{
InputFilterUtils
.
getLengthFilter
(
mContext
,
16
),
InputFilterUtils
.
getChAndEnAndNumAndPtInputFilter
(
mContext
)});
edWarehouseListSearch
.
setOnEditorActionListener
((
v
,
actionId
,
event
)
->
{
if
(
actionId
==
EditorInfo
.
IME_ACTION_UNSPECIFIED
)
{
//響應回車按鈕
//隐藏软键盘
hideSoftInput
();
pageIndex
=
0
;
getWarehousing
();
}
return
false
;
});
}
private
void
getWarehousing
()
{
...
...
@@ -171,7 +183,7 @@ public class WareHouseListFragment extends BaseSupplyChainFragment<WareHouseList
}
@Override
public
void
loadListInfo
(
List
<
WareHouseListBean
.
WareHousingDataBean
.
PurchaseWarehousingOrderDetailsVO
>
purchaseWarehousingOrderDetailsVos
)
{
public
void
loadListInfo
(
List
<
PurchaseWarehousingOrderDetailsVO
>
purchaseWarehousingOrderDetailsVos
)
{
if
(
purchaseWarehousingOrderDetailsVos
==
null
||
purchaseWarehousingOrderDetailsVos
.
size
()
<=
0
)
{
loadService
.
showCallback
(
EmptyCallback
.
class
);
return
;
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/warehouse/WarehouseDetailsFragment.java
View file @
1a951bc8
This diff is collapsed.
Click to expand it.
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/fragment/warehouse/WarehousingInventoryFragment.java
View file @
1a951bc8
...
...
@@ -21,7 +21,7 @@ import com.gingersoft.supply_chain.R;
import
com.gingersoft.supply_chain.R2
;
import
com.gingersoft.supply_chain.di.component.DaggerWarehousingInventoryComponent
;
import
com.gingersoft.supply_chain.mvp.bean.InventoryRecordBean
;
import
com.gingersoft.supply_chain.mvp.bean.
WareHouseListBean
;
import
com.gingersoft.supply_chain.mvp.bean.
PurchaseWarehousingOrderDetailsVO
;
import
com.gingersoft.supply_chain.mvp.contract.WarehousingInventoryContract
;
import
com.gingersoft.supply_chain.mvp.presenter.WarehousingInventoryPresenter
;
import
com.gingersoft.supply_chain.mvp.ui.adapter.InventoryRecordAdapter
;
...
...
@@ -29,9 +29,6 @@ import com.gingersoft.supply_chain.mvp.ui.fragment.BaseSupplyChainFragment;
import
com.jess.arms.di.component.AppComponent
;
import
com.qmuiteam.qmui.widget.QMUITopBar
;
import
com.scwang.smartrefresh.layout.SmartRefreshLayout
;
import
com.scwang.smartrefresh.layout.api.RefreshLayout
;
import
com.scwang.smartrefresh.layout.listener.OnLoadMoreListener
;
import
com.scwang.smartrefresh.layout.listener.OnRefreshListener
;
import
java.util.List
;
...
...
@@ -60,9 +57,9 @@ public class WarehousingInventoryFragment extends BaseSupplyChainFragment<Wareho
SmartRefreshLayout
smartRefreshLayout
;
private
int
pageIndex
;
private
WareHouseListBean
.
WareHousingDataBean
.
PurchaseWarehousingOrderDetailsVO
purchaseWarehousingOrderDetailsVo
;
private
PurchaseWarehousingOrderDetailsVO
purchaseWarehousingOrderDetailsVo
;
public
static
WarehousingInventoryFragment
newInstance
(
WareHouseListBean
.
WareHousingDataBean
.
PurchaseWarehousingOrderDetailsVO
purchaseWarehousingOrderDetailsVo
)
{
public
static
WarehousingInventoryFragment
newInstance
(
PurchaseWarehousingOrderDetailsVO
purchaseWarehousingOrderDetailsVo
)
{
WarehousingInventoryFragment
fragment
=
new
WarehousingInventoryFragment
();
Bundle
bundle
=
new
Bundle
();
bundle
.
putSerializable
(
WarehouseDetailsFragment
.
FOOD_INFO_KEY
,
purchaseWarehousingOrderDetailsVo
);
...
...
@@ -89,7 +86,7 @@ public class WarehousingInventoryFragment extends BaseSupplyChainFragment<Wareho
public
void
initData
(
@Nullable
Bundle
savedInstanceState
)
{
Bundle
arguments
=
getArguments
();
if
(
arguments
!=
null
)
{
purchaseWarehousingOrderDetailsVo
=
(
WareHouseListBean
.
WareHousingDataBean
.
PurchaseWarehousingOrderDetailsVO
)
arguments
.
getSerializable
(
WarehouseDetailsFragment
.
FOOD_INFO_KEY
);
purchaseWarehousingOrderDetailsVo
=
(
PurchaseWarehousingOrderDetailsVO
)
arguments
.
getSerializable
(
WarehouseDetailsFragment
.
FOOD_INFO_KEY
);
//獲取庫存盤點記錄
getWarehousingRecord
();
//加載食品圖片
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/widget/InventoryConsumptionView.java
View file @
1a951bc8
...
...
@@ -178,6 +178,10 @@ public class InventoryConsumptionView extends FrameLayout {
}
}
public
void
setConsumptionNumber
(
int
consumptionNumber
)
{
edInput
.
setText
(
String
.
valueOf
(
consumptionNumber
));
}
public
interface
OnConfirmClickListener
{
/**
* 確認時,將消耗的庫存,原因,備註傳遞回去
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/widget/ScanSnPopup.java
View file @
1a951bc8
...
...
@@ -36,10 +36,9 @@ public class ScanSnPopup extends BottomPopupView {
TextView
tvFoodInboundQuantity
;
@BindView
(
R2
.
id
.
layout_scan_sn
)
LinearLayout
rootLayout
;
private
OnScanResultListener
onScanResultListener
;
public
ScanSnPopup
(
@NonNull
Fragment
fragment
,
String
foodName
,
List
<
String
>
snCodes
,
OnScanResultListener
onScanResultListener
)
{
public
ScanSnPopup
(
@NonNull
Fragment
fragment
,
String
foodName
,
List
<
String
>
snCodes
)
{
super
(
fragment
.
requireContext
());
if
(
snCodes
==
null
)
{
snCodes
=
new
ArrayList
<>();
...
...
@@ -47,10 +46,14 @@ public class ScanSnPopup extends BottomPopupView {
this
.
foodName
=
foodName
;
this
.
snCodes
=
snCodes
;
this
.
fragment
=
fragment
;
this
.
onScanResultListener
=
onScanResultListener
;
addInnerContent
();
}
public
ScanSnPopup
setOnScanResultListener
(
OnScanResultListener
onScanResultListener
)
{
this
.
onScanResultListener
=
onScanResultListener
;
return
this
;
}
@Override
protected
int
getImplLayoutId
()
{
return
R
.
layout
.
popup_scan_sn
;
...
...
@@ -63,7 +66,10 @@ public class ScanSnPopup extends BottomPopupView {
ButterKnife
.
bind
(
this
);
tvFoodIngredientsName
.
setText
(
foodName
);
tvFoodInboundQuantity
.
setText
(
String
.
valueOf
(
snCodes
.
size
()));
rootLayout
.
addView
(
new
ScanSnView
(
fragment
,
snCodes
,
onScanResultListener
).
setOnCancelListener
(()
->
dismiss
()));
rootLayout
.
addView
(
new
ScanSnView
(
fragment
,
snCodes
,
(
isAdd
,
snCode
,
currentSnCodeNumber
)
->
{
//每掃描出一個調用
tvFoodInboundQuantity
.
setText
(
String
.
valueOf
(
currentSnCodeNumber
));
},
onScanResultListener
).
setOnCancelListener
(
this
::
dismiss
),
new
LinearLayout
.
LayoutParams
(
LinearLayout
.
LayoutParams
.
MATCH_PARENT
,
LinearLayout
.
LayoutParams
.
MATCH_PARENT
));
}
@Override
...
...
@@ -84,6 +90,4 @@ public class ScanSnPopup extends BottomPopupView {
*/
void
onScanResult
(
List
<
String
>
scanResult
);
}
}
component-supply-chain/src/main/java/com/gingersoft/supply_chain/mvp/ui/widget/ScanSnView.java
View file @
1a951bc8
...
...
@@ -2,10 +2,13 @@ package com.gingersoft.supply_chain.mvp.ui.widget;
import
android.content.Context
;
import
android.util.AttributeSet
;
import
android.view.KeyEvent
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.inputmethod.EditorInfo
;
import
android.widget.EditText
;
import
android.widget.FrameLayout
;
import
android.widget.TextView
;
import
androidx.annotation.Nullable
;
import
androidx.core.content.ContextCompat
;
...
...
@@ -29,11 +32,14 @@ import com.qmuiteam.qmui.alpha.QMUIAlphaTextView;
import
org.jetbrains.annotations.NotNull
;
import
java.lang.reflect.Array
;
import
java.util.ArrayList
;
import
java.util.List
;
import
butterknife.BindView
;
import
butterknife.ButterKnife
;
import
cn.bingoogolapple.qrcode.core.BarcodeType
;
import
me.yokeyword.fragmentation.SupportHelper
;
/**
* @author 宇航.
...
...
@@ -56,18 +62,20 @@ public class ScanSnView extends FrameLayout {
@BindView
(
R2
.
id
.
ed_input_sn
)
EditText
edInputSn
;
@BindView
(
R2
.
id
.
iv_scan_sn
)
QMUIAlphaImageButton
btnScanS
N
;
QMUIAlphaImageButton
btnScanS
n
;
@BindView
(
R2
.
id
.
tv_submit_sn
)
QMUIAlphaTextView
tvSubmitS
N
;
QMUIAlphaTextView
tvSubmitS
n
;
private
Fragment
fragment
;
private
OnCancelListener
onCancelListener
;
private
OnSingerResultListener
onSingerResultListener
;
public
ScanSnView
(
Fragment
fragment
,
List
<
String
>
snCodes
,
ScanSnPopup
.
OnScanResultListener
onScanResultListener
)
{
public
ScanSnView
(
Fragment
fragment
,
List
<
String
>
snCodes
,
OnSingerResultListener
onSingerResultListener
,
ScanSnPopup
.
OnScanResultListener
onScanResultListener
)
{
super
(
fragment
.
requireContext
());
this
.
snCodes
=
snCodes
;
this
.
onScanResultListener
=
onScanResultListener
;
this
.
fragment
=
fragment
;
this
.
onSingerResultListener
=
onSingerResultListener
;
init
();
}
...
...
@@ -87,11 +95,12 @@ public class ScanSnView extends FrameLayout {
private
void
init
()
{
View
rootView
=
LayoutInflater
.
from
(
getContext
()).
inflate
(
R
.
layout
.
layout_scan_sn
,
this
,
false
);
ButterKnife
.
bind
(
this
,
rootView
);
//初始化adapter
SnCodeAdapter
adapter
=
new
SnCodeAdapter
(
R
.
layout
.
item_sn_code
,
snCodes
);
rvSnCode
.
setAdapter
(
adapter
);
//掃描sn媽
btnScanS
N
.
setOnClickListener
(
v
->
btnScanS
n
.
setOnClickListener
(
v
->
XPermissionUtils
.
launchCamera
(
fragment
,
(
allGranted
,
grantedList
,
deniedList
)
->
{
if
(
allGranted
)
{
//去掃碼頁面
...
...
@@ -104,22 +113,29 @@ public class ScanSnView extends FrameLayout {
if
(
qrCodeResult
!=
null
)
{
String
snCode
=
String
.
valueOf
(
qrCodeResult
);
if
(
adapter
.
getData
().
contains
(
snCode
))
{
ToastUtils
.
show
(
getContext
(),
"商品已存在"
);
ToastUtils
.
show
(
getContext
(),
"商品已存在
,不能重複添加
"
);
}
else
{
adapter
.
addData
(
String
.
valueOf
(
qrCodeResult
));
adapter
.
addData
(
snCode
);
onSingerResultListener
.
onScanValue
(
true
,
snCode
,
adapter
.
getItemCount
());
}
}
});
}
})
);
edInputSn
.
setOnEditorActionListener
((
v
,
actionId
,
event
)
->
{
if
(
actionId
==
EditorInfo
.
IME_ACTION_UNSPECIFIED
)
{
//響應回車按鈕
//隐藏软键盘
SupportHelper
.
hideSoftInput
(
v
);
commitSnCode
(
adapter
);
}
return
false
;
});
//提交按鈕
tvSubmitS
N
.
setOnClickListener
(
v
->
{
tvSubmitS
n
.
setOnClickListener
(
v
->
{
//提交輸入框中的sn碼
if
(
TextUtil
.
isNotEmptyOrNullOrUndefined
(
edInputSn
))
{
adapter
.
addData
(
edInputSn
.
getText
().
toString
());
edInputSn
.
setText
(
""
);
}
commitSnCode
(
adapter
);
});
btnFoodIngredientsConfirm
.
setOnClickListener
(
v
->
{
...
...
@@ -139,17 +155,42 @@ public class ScanSnView extends FrameLayout {
});
adapter
.
setOnItemChildClickListener
((
adapter1
,
view
,
position
)
->
{
if
(
view
.
getId
()
==
R
.
id
.
iv_sn_code_delete
)
{
onSingerResultListener
.
onScanValue
(
false
,
adapter
.
getItem
(
position
),
adapter
.
getItemCount
());
adapter1
.
removeAt
(
position
);
}
});
addView
(
rootView
);
}
private
void
commitSnCode
(
SnCodeAdapter
adapter
)
{
if
(
TextUtil
.
isNotEmptyOrNullOrUndefined
(
edInputSn
))
{
if
(
adapter
.
getData
().
contains
(
edInputSn
.
getText
().
toString
()))
{
ToastUtils
.
show
(
getContext
(),
"商品已存在,不能重複添加"
);
}
else
{
String
snCode
=
edInputSn
.
getText
().
toString
();
adapter
.
addData
(
snCode
);
edInputSn
.
setText
(
""
);
onSingerResultListener
.
onScanValue
(
true
,
snCode
,
adapter
.
getItemCount
());
}
}
else
{
ToastUtils
.
show
(
getContext
(),
"請輸入SN碼"
);
}
}
public
ScanSnView
setOnCancelListener
(
OnCancelListener
onCancelListener
)
{
this
.
onCancelListener
=
onCancelListener
;
return
this
;
}
public
interface
OnSingerResultListener
{
/**
* @param isAdd true為新增,false為刪除
* @param snCode sn碼
* @param currentSnCodeNumber 當前有多少個sn碼
*/
void
onScanValue
(
boolean
isAdd
,
String
snCode
,
int
currentSnCodeNumber
);
}
public
interface
OnCancelListener
{
void
onCancel
();
}
...
...
component-supply-chain/src/main/res/layout/fragment_sn_code_list.xml
0 → 100644
View file @
1a951bc8
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/supply_chain_bg_color"
android:orientation=
"vertical"
>
<com.google.android.material.appbar.AppBarLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/head_height"
android:background=
"@color/trans"
app:elevation=
"0dp"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"horizontal"
android:padding=
"@dimen/dp_10"
app:layout_scrollFlags=
"scroll"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"庫存:"
android:textColor=
"@color/theme_333_color"
android:textSize=
"@dimen/dp_16"
/>
<TextView
android:id=
"@+id/tv_sn_housing_num"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:textColor=
"@color/red"
android:textSize=
"@dimen/dp_18"
android:textStyle=
"bold"
tools:text=
"100"
/>
</LinearLayout>
<TextView
android:id=
"@+id/tv_remark"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/dp_10"
android:textColor=
"@color/theme_333_color"
android:textSize=
"@dimen/dp_16"
app:layout_scrollFlags=
"scroll|enterAlwaysCollapsed"
tools:text=
"備註:"
/>
<include
layout=
"@layout/include_sn_item"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/dp_10"
android:layout_marginTop=
"@dimen/dp_5"
android:layout_marginRight=
"@dimen/dp_10"
app:layout_scrollFlags=
"scroll|exitUntilCollapsed"
/>
</com.google.android.material.appbar.AppBarLayout>
<include
layout=
"@layout/supply_chain_top_bar"
/>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_sn"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_marginLeft=
"@dimen/dp_10"
android:layout_marginRight=
"@dimen/dp_10"
app:layoutManager=
"androidx.recyclerview.widget.LinearLayoutManager"
app:layout_behavior=
"@string/appbar_scrolling_view_behavior"
/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
component-supply-chain/src/main/res/layout/fragment_ware_house_list.xml
View file @
1a951bc8
...
...
@@ -37,6 +37,7 @@
android:layout_weight=
"1"
android:background=
"@null"
android:hint=
"@string/search_food_name_no"
android:imeOptions=
"actionSearch"
android:inputType=
"text"
android:maxLength=
"20"
android:maxLines=
"1"
/>
...
...
component-supply-chain/src/main/res/layout/fragment_warehouse_details.xml
View file @
1a951bc8
<?xml version="1.0" encoding="utf-8"?>
<
Linea
rLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<
androidx.coordinatorlayout.widget.Coordinato
rLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:id=
"@+id/layout_warehousing_root"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/supply_chain_bg_color"
android:orientation=
"vertical"
>
android:background=
"@color/supply_chain_bg_color"
>
<com.google.android.material.appbar.AppBarLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/trans"
>
<include
layout=
"@layout/supply_chain_top_bar"
/>
<include
layout=
"@layout/supply_chain_top_bar"
app:layout_scrollFlags=
"scroll|enterAlways"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_10"
android:layout_marginLeft=
"@dimen/dp_10"
android:layout_marginTop=
"@dimen/dp_10"
android:layout_marginRight=
"@dimen/dp_10"
android:background=
"@drawable/shape_white_eight_corners_bg"
android:orientation=
"horizontal"
android:paddingTop=
"@dimen/dp_10"
android:paddingBottom=
"@dimen/dp_10"
>
android:paddingBottom=
"@dimen/dp_10"
app:layout_scrollFlags=
"scroll|enterAlways"
>
<ImageView
android:id=
"@+id/iv_warehouse_img"
...
...
@@ -104,7 +110,8 @@
android:layout_marginLeft=
"@dimen/dp_10"
android:layout_marginTop=
"@dimen/dp_10"
android:layout_marginRight=
"@dimen/dp_10"
android:orientation=
"horizontal"
>
android:orientation=
"horizontal"
app:layout_scrollFlags=
"scroll|enterAlwaysCollapsed"
>
<TextView
android:id=
"@+id/tv_warehousing_record"
...
...
@@ -132,20 +139,39 @@
android:textColor=
"@color/color_3c"
android:textSize=
"@dimen/dp_17"
/>
</LinearLayout>
</com.google.android.material.appbar.AppBarLayout>
<com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id=
"@+id/srl_warehouse_details_list"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
app:layout_behavior=
"@string/appbar_scrolling_view_behavior"
app:srlAccentColor=
"@color/theme_333_color"
app:srlEnablePreviewInEditMode=
"true"
app:srlPrimaryColor=
"@color/trans"
>
<androidx.core.widget.NestedScrollView
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:fillViewport=
"true"
app:layout_behavior=
"@string/appbar_scrolling_view_behavior"
>
<!-- scrollview在代碼中要添加多個子view,所以多用一個LinearLayout包裹起來-->
<LinearLayout
android:id=
"@+id/layout_warehousing_root"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
app:layout_behavior=
"@string/appbar_scrolling_view_behavior"
>
<androidx.viewpager2.widget.ViewPager2
android:id=
"@+id/vp_warehouse_viewpager"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_marginTop=
"@dimen/dp_10"
/>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
android:layout_marginTop=
"@dimen/dp_10"
app:layout_behavior=
"@string/appbar_scrolling_view_behavior"
/>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
</androidx.core.widget.NestedScrollView>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
component-supply-chain/src/main/res/layout/include_sn_item.xml
0 → 100644
View file @
1a951bc8
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:id=
"@+id/layout_sn_item"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/theme_color"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
app:layout_scrollFlags=
"scroll|exitUntilCollapsed"
>
<TextView
android:id=
"@+id/tv_serial_number"
style=
"@style/TextStyle_Sn_warehousing_record"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:text=
"序號"
/>
<include
layout=
"@layout/include_vertical_color_e8_dividing_line"
/>
<TextView
android:id=
"@+id/tv_sn_code"
style=
"@style/TextStyle_Sn_warehousing_record"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"2.4"
android:text=
"SN碼"
/>
<include
layout=
"@layout/include_vertical_color_e8_dividing_line"
/>
<TextView
android:id=
"@+id/tv_operator"
style=
"@style/TextStyle_Sn_warehousing_record"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1.8"
android:text=
"操作人"
/>
<include
layout=
"@layout/include_vertical_color_e8_dividing_line"
/>
<TextView
android:id=
"@+id/tv_time"
style=
"@style/TextStyle_Sn_warehousing_record"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"2.1"
android:text=
"時間"
/>
</LinearLayout>
\ No newline at end of file
component-supply-chain/src/main/res/layout/layout_scan_sn.xml
View file @
1a951bc8
...
...
@@ -35,6 +35,7 @@
android:layout_marginRight=
"@dimen/dp_4"
android:layout_weight=
"1"
android:background=
"@null"
android:imeOptions=
"actionDone"
android:gravity=
"center_vertical"
android:hint=
"@string/str_please_input"
android:inputType=
"number"
...
...
@@ -77,6 +78,9 @@
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
app:layoutManager=
"androidx.recyclerview.widget.LinearLayoutManager"
/>
<View
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
</FrameLayout>
<LinearLayout
...
...
component-supply-chain/src/main/res/layout/recycler_view_item.xml
View file @
1a951bc8
...
...
@@ -4,4 +4,5 @@
android:id=
"@+id/rv_purchase_list_content"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
app:layoutManager=
"androidx.recyclerview.widget.LinearLayoutManager"
/>
\ No newline at end of file
app:layoutManager=
"androidx.recyclerview.widget.LinearLayoutManager"
app:layout_behavior=
"@string/appbar_scrolling_view_behavior"
/>
\ No newline at end of file
component-supply-chain/src/main/res/layout/supply_chain_top_bar.xml
View file @
1a951bc8
...
...
@@ -2,11 +2,11 @@
<com.qmuiteam.qmui.widget.QMUITopBar
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:id=
"@+id/supply_top_bar"
app:qmui_topbar_title_color=
"@color/theme_white_color"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/head_height"
app:qmui_topbar_text_btn_color_state_list=
"@color/white"
android:background=
"@color/theme_color"
android:fitsSystemWindows=
"true"
/>
android:fitsSystemWindows=
"true"
app:qmui_topbar_text_btn_color_state_list=
"@color/white"
app:qmui_topbar_title_color=
"@color/theme_white_color"
/>
component-supply-chain/src/main/res/values/strings.xml
View file @
1a951bc8
...
...
@@ -16,7 +16,7 @@
<string
name=
"str_format_purchase_no"
>
採購單號:%1$s
</string>
<string
name=
"str_format_warehouse_no"
>
入庫單號:%1$s
</string>
<string
name=
"str_format_remark"
>
備註:%1$
d
</string>
<string
name=
"str_format_remark"
>
備註:%1$
s
</string>
<string
name=
"str_format_positive"
>
+%1$s
</string>
<string
name=
"str_format_less"
>
-%1$s
</string>
<string
name=
"str_unit_price_colon"
>
單價:$%1$.2f
</string>
...
...
@@ -33,4 +33,5 @@
<string
name=
"str_no"
>
NO:%1$s
</string>
<string
name=
"str_prepared"
>
製單人:%1$s
</string>
<string
name=
"str_device_not_print"
>
您的設備不支持打印
</string>
</resources>
\ No newline at end of file
component-supply-chain/src/main/res/values/styles.xml
View file @
1a951bc8
...
...
@@ -48,7 +48,17 @@
<item
name=
"android:gravity"
>
center
</item>
<item
name=
"android:layout_marginRight"
>
@dimen/dp_1
</item>
</style>
<style
name=
"TextStyle_Sn_warehousing_record"
>
<item
name=
"android:textSize"
>
@dimen/dp_14
</item>
<item
name=
"android:textColor"
>
@color/white
</item>
<item
name=
"android:ellipsize"
>
end
</item>
<item
name=
"android:maxLines"
>
1
</item>
<item
name=
"android:paddingTop"
>
@dimen/dp_10
</item>
<item
name=
"android:paddingBottom"
>
@dimen/dp_10
</item>
<item
name=
"android:paddingLeft"
>
@dimen/dp_2
</item>
<item
name=
"android:paddingRight"
>
@dimen/dp_2
</item>
<item
name=
"android:gravity"
>
center
</item>
</style>
<style
name=
"WareHouse_Value_TextStyle"
>
<item
name=
"android:textSize"
>
@dimen/dp_14
</item>
<item
name=
"android:textStyle"
>
bold
</item>
...
...
library-base/src/main/java/com/jess/arms/utils/ArmsUtils.java
View file @
1a951bc8
...
...
@@ -215,7 +215,7 @@ public class ArmsUtils {
* @param string
*/
public
static
void
makeText
(
Context
context
,
String
string
)
{
if
(
mToast
!=
null
)
{
if
(
mToast
!=
null
)
{
mToast
.
cancel
();
mToast
=
null
;
}
...
...
library-common/src/main/java/com/gingersoft/gsa/cloud/common/constans/HttpsConstans.java
View file @
1a951bc8
package
com
.
gingersoft
.
gsa
.
cloud
.
common
.
constans
;
import
android.content.Context
;
import
android.util.Log
;
import
com.gingersoft.gsa.cloud.common.BuildConfig
;
import
com.gingersoft.gsa.cloud.common.utils.other.SPUtils
;
...
...
@@ -43,7 +44,8 @@ public class HttpsConstans {
public
static
String
RESTAURANT_API_PATH
=
"/ricepon-restaurant/api/"
;
//餐廳模塊路徑
public
static
String
PURCHASE_API_PATH
=
"/ricepon-purchase/api/"
;
//供應鏈路徑
public
static
String
ROOT_SERVER_YOU_CHANG_HK
=
"http://192.168.1.149:9015/api"
;
//友常本地
// public static String ROOT_SERVER_YOU_CHANG_HK = "http://192.168.1.149:9015/api"; //友常本地
public
static
String
ROOT_SERVER_YOU_CHANG_HK
=
"http://192.168.1.161:9016/api"
;
//溫浩本地
public
static
String
ROOT_SERVER_ZHI_WANG_HK
=
"http://192.168.1.169:9012/api"
;
//世維本地
public
static
String
ROOT_SERVER_SHI_SHU_HK
=
"http://192.168.1.154:9012/api"
;
//石书本地
...
...
library-common/src/main/java/com/gingersoft/gsa/cloud/common/core/restaurant/RestaurantInfoManager.java
View file @
1a951bc8
...
...
@@ -31,10 +31,10 @@ public class RestaurantInfoManager {
if
(
restaurantInfo
==
null
)
{
restaurantInfo
=
new
RestaurantInfo
();
}
brandInfo
.
setBrandId
((
Integer
)
SPUtils
.
get
(
UserConstans
.
brandId
,
1
));
brandInfo
.
setBrandId
((
Integer
)
SPUtils
.
get
(
UserConstans
.
brandId
,
-
1
));
brandInfo
.
setBrandName
((
String
)
SPUtils
.
get
(
UserConstans
.
brandName
,
""
));
restaurantInfo
.
setGsPosShopId
((
String
)
SPUtils
.
get
(
UserConstans
.
gsPosShopId
,
"-1"
));
restaurantInfo
.
setRestaurantId
((
Integer
)
SPUtils
.
get
(
UserConstans
.
restaurantId
,
26
));
restaurantInfo
.
setRestaurantId
((
Integer
)
SPUtils
.
get
(
UserConstans
.
restaurantId
,
-
1
));
restaurantInfo
.
setRestaurantName
((
String
)
SPUtils
.
get
(
UserConstans
.
restaurantName
,
""
));
}
...
...
library-common/src/main/res/drawable/shape_theme_eight_corners_bg.xml
View file @
1a951bc8
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<solid
android:color=
"@color/theme_color"
/>
<corners
android:radius=
"@dimen/dp_8"
/>
<!-- 填充背景色 -->
<solid
android:color=
"@color/theme_color"
/>
<!-- 圓角 -->
<corners
android:radius=
"@dimen/dp_8"
/>
</shape>
\ No newline at end of file
library-common/src/main/res/drawable/shape_white_eight_corners_bg.xml
View file @
1a951bc8
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<solid
android:color=
"@color/white"
/>
<corners
android:radius=
"@dimen/dp_8"
/>
<!-- 填充背景色 -->
<solid
android:color=
"@color/white"
/>
<!-- 圓角 -->
<corners
android:radius=
"@dimen/dp_8"
/>
</shape>
\ No newline at end of file
library-ui/src/main/res/layout/multi_input.xml
View file @
1a951bc8
...
...
@@ -13,6 +13,7 @@
style=
"@style/Multi_Input_editStyle"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:imeOptions=
"actionNext"
android:layout_marginLeft=
"@dimen/dp_5"
android:layout_weight=
"1"
android:drawablePadding=
"@dimen/dp_5"
...
...
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