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
931d78d8
Commit
931d78d8
authored
Mar 27, 2021
by
Wyh
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1、Epson打印占主線程問題 2、供應鏈Sn食材代碼
parent
771adf38
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
54 changed files
with
1046 additions
and
143 deletions
+1046
-143
component-print/src/main/java/com/joe/print/mvp/print/EpsonPrint.java
+17
-14
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
+65
-17
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
+0
-0
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
config.gradle
+2
-2
library-base/src/main/java/com/jess/arms/utils/ArmsUtils.java
+4
-4
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 @
931d78d8
...
...
@@ -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,25 +73,27 @@ public class EpsonPrint implements ReceiveListener {
if
(
mPrinter
==
null
)
{
return
;
}
while
(
true
)
{
try
{
LoganManager
.
w_printer
(
TAG
,
"斷開連接"
);
mPrinter
.
disconnect
();
break
;
}
catch
(
final
Exception
e
)
{
LoganManager
.
w_printer
(
TAG
,
"斷開連接報錯:"
+
e
.
getMessage
());
if
(
e
instanceof
Epos2Exception
)
{
//Note: If printer is processing such as printing and so on, the disconnect API returns ERR_PROCESSING.
if
(((
Epos2Exception
)
e
).
getErrorStatus
()
==
Epos2Exception
.
ERR_PROCESSING
)
{
ThreadPoolManager
.
getInstence
().
putExecutableTasks
(()
->
{
while
(
true
)
{
try
{
LoganManager
.
w_printer
(
TAG
,
"斷開連接"
);
mPrinter
.
disconnect
();
break
;
}
catch
(
final
Exception
e
)
{
LoganManager
.
w_printer
(
TAG
,
"斷開連接報錯:"
+
e
.
getMessage
());
if
(
e
instanceof
Epos2Exception
)
{
//Note: If printer is processing such as printing and so on, the disconnect API returns ERR_PROCESSING.
if
(((
Epos2Exception
)
e
).
getErrorStatus
()
==
Epos2Exception
.
ERR_PROCESSING
)
{
}
else
{
break
;
}
}
else
{
break
;
}
}
else
{
break
;
}
}
}
}
);
}
/**
...
...
component-supply-chain/src/main/java/com/gingersoft/supply_chain/di/component/SnCodeListComponent.java
0 → 100644
View file @
931d78d8
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 @
931d78d8
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 @
931d78d8
...
...
@@ -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 @
931d78d8
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 @
931d78d8
...
...
@@ -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 @
931d78d8
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 @
931d78d8
...
...
@@ -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 @
931d78d8
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 @
931d78d8
...
...
@@ -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 @
931d78d8
...
...
@@ -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 @
931d78d8
...
...
@@ -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 @
931d78d8
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 @
931d78d8
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 @
931d78d8
...
...
@@ -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 @
931d78d8
...
...
@@ -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 @
931d78d8
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 @
931d78d8
...
...
@@ -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 @
931d78d8
...
...
@@ -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 @
931d78d8
...
...
@@ -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 @
931d78d8
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 @
931d78d8
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 consumeQuantity 消耗數量
* @param
purchaseConsumeReasonId 原因id
* @param remarks 備註
* @param
purchaseWarehousingOrderDetailsVO 食材信息
* @param consumeQuantity
消耗數量
* @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
())
{
//消耗完之後,刷新列表
mRootView
.
getPageInfo
();
//重新獲取庫存數量
getWarehousingNum
(
foodNo
);
if
(
whetherPrint
)
{
mRootView
.
printConsumeOrder
(
consumeReasonBean
.
getDescription
(),
consumeQuantity
);
}
else
{
//如果需要打印,則是在打印完之後查詢,如果不需要打印,現在就查詢刷新頁面
//消耗完之後,刷新列表
mRootView
.
getPageInfo
();
//重新獲取庫存數量
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 @
931d78d8
...
...
@@ -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 @
931d78d8
...
...
@@ -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 @
931d78d8
...
...
@@ -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 @
931d78d8
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 @
931d78d8
...
...
@@ -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 @
931d78d8
...
...
@@ -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 @
931d78d8
...
...
@@ -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 @
931d78d8
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 @
931d78d8
...
...
@@ -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 @
931d78d8
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 @
931d78d8
...
...
@@ -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 @
931d78d8
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 @
931d78d8
...
...
@@ -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 @
931d78d8
...
...
@@ -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 @
931d78d8
...
...
@@ -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 @
931d78d8
...
...
@@ -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 @
931d78d8
<?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 @
931d78d8
...
...
@@ -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 @
931d78d8
This diff is collapsed.
Click to expand it.
component-supply-chain/src/main/res/layout/include_sn_item.xml
0 → 100644
View file @
931d78d8
<?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 @
931d78d8
...
...
@@ -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 @
931d78d8
...
...
@@ -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 @
931d78d8
...
...
@@ -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 @
931d78d8
...
...
@@ -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 @
931d78d8
...
...
@@ -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>
...
...
config.gradle
View file @
931d78d8
...
...
@@ -7,8 +7,8 @@ ext {
targetSdkVersion
:
29
,
//正式版: 1.0.3 3
//內部測試版:1.2.0 20
versionCode
:
29
,
versionName
:
"1.
2.9
"
versionCode
:
30
,
versionName
:
"1.
3.0
"
]
version
=
[
...
...
library-base/src/main/java/com/jess/arms/utils/ArmsUtils.java
View file @
931d78d8
...
...
@@ -76,10 +76,10 @@ public class ArmsUtils {
res
));
// 新建一个属性对象,设置文字的大小
AbsoluteSizeSpan
ass
=
new
AbsoluteSizeSpan
(
size
,
true
);
// 附加属性到文本
// 附加属性到文本
ss
.
setSpan
(
ass
,
0
,
ss
.
length
(),
Spanned
.
SPAN_EXCLUSIVE_EXCLUSIVE
);
// 设置hint
// 设置hint
v
.
setHint
(
new
SpannedString
(
ss
));
// 一定要进行转换,否则属性会消失
}
...
...
@@ -215,9 +215,9 @@ public class ArmsUtils {
* @param string
*/
public
static
void
makeText
(
Context
context
,
String
string
)
{
if
(
mToast
!=
null
)
{
if
(
mToast
!=
null
)
{
mToast
.
cancel
();
mToast
=
null
;
mToast
=
null
;
}
mToast
=
Toast
.
makeText
(
context
.
getApplicationContext
(),
string
,
Toast
.
LENGTH_SHORT
);
mToast
.
setText
(
string
);
...
...
library-common/src/main/java/com/gingersoft/gsa/cloud/common/constans/HttpsConstans.java
View file @
931d78d8
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 @
931d78d8
...
...
@@ -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 @
931d78d8
<?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 @
931d78d8
<?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 @
931d78d8
...
...
@@ -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