Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
dc-java
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
bltdc
dc-java
Commits
aeedc5bc
Commit
aeedc5bc
authored
Sep 20, 2019
by
yinyong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
备货计算:JIT,广州-01仓-张莹霞,张莹霞1、广州-03仓,赵美聪
①日均*备货天数-在途库存-库存+缺货 ②日均*备货天数-在途库存-库存+缺货+备安全库存
parent
fc1b8dfb
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
33 additions
and
13 deletions
+33
-13
Constant.java
...src/main/java/com/bailuntec/domain/constant/Constant.java
+2
-0
AutoTurnoverJob.java
...over/src/main/java/com/bailuntec/job/AutoTurnoverJob.java
+31
-13
No files found.
data-show/show-auto-turnover/src/main/java/com/bailuntec/domain/constant/Constant.java
View file @
aeedc5bc
...
...
@@ -17,7 +17,9 @@ public interface Constant {
String
BUYER_JIT_2
=
"张莹霞1"
;
String
BUYER_JIT_3
=
"冯兆欣"
;
String
BUYER_JIT_4
=
"黄镜洁"
;
String
BUTER_JIT_5
=
"赵美聪"
;
String
WAREHOUSE_JIT
=
"GZBLWH"
;
String
WAREHOUSE_JIT1
=
"BLGZ03"
;
BigDecimal
BIGDECIMAL_THIRTY
=
BigDecimal
.
valueOf
(
30
);
BigDecimal
BIGDECIMAL_FOURTEEN
=
BigDecimal
.
valueOf
(
14
);
BigDecimal
BIGDECIMAL_SEVEN
=
BigDecimal
.
valueOf
(
7
);
...
...
data-show/show-auto-turnover/src/main/java/com/bailuntec/job/AutoTurnoverJob.java
View file @
aeedc5bc
...
...
@@ -513,7 +513,11 @@ public class AutoTurnoverJob extends PointJob {
dcAutoTurnover
.
setInventoryAvailableDays
(
inventoryAvailableDays
);
dcAutoTurnover
.
setSkuTitle
(
turnoverSku
.
getSkuTitleCn
());
dcAutoTurnover
.
setPromotions
(
promotionsBuilder
.
toString
());
dcAutoTurnover
.
setQuantityInitAdvise
(
forecastPurchaseAdvisedList
.
get
(
0
).
add
(
stockUpSales
));
if
((
warehouseCode
.
equals
(
Constant
.
WAREHOUSE_JIT
)
&&
(
turnoverSku
.
getBuyerName
().
equals
(
Constant
.
BUYER_JIT_1
)
||
turnoverSku
.
getBuyerName
().
equals
(
Constant
.
BUYER_JIT_2
)))
||
(
warehouseCode
.
equals
(
Constant
.
WAREHOUSE_JIT1
)
&&
(
turnoverSku
.
getBuyerName
().
equals
(
Constant
.
BUTER_JIT_5
))))
{
dcAutoTurnover
.
setQuantityInitAdvise
(
forecastPurchaseAdvisedList
.
get
(
0
));
}
else
{
dcAutoTurnover
.
setQuantityInitAdvise
(
forecastPurchaseAdvisedList
.
get
(
0
).
add
(
stockUpSales
));
}
//如果初始建议数 + 备货数 > moq建议数, 那么moq建议数 + 备货数, 否则, 还是取moq建议数
BigDecimal
subtract
=
dcAutoTurnover
.
getQuantityInitAdvise
().
subtract
(
moqPurchaseAdvisedList
.
get
(
0
));
dcAutoTurnover
.
setQuantityFinalAdvise
(
moqPurchaseAdvisedList
.
get
(
0
));
...
...
@@ -1166,7 +1170,7 @@ public class AutoTurnoverJob extends PointJob {
*/
DcAutoStockUpRangeMapper
dcAutoStockUpRangeMapper
=
SessionUtil
.
getSession
().
getMapper
(
DcAutoStockUpRangeMapper
.
class
);
DcAutoStockUpRange
dcAutoStockUpRange
=
dcAutoStockUpRangeMapper
.
selectOneByExample
(
DcAutoStockUpRangeExample
.
newAndCreateCriteria
().
andBailunSkuEqualTo
(
bailunSku
).
andWarehouseCodeEqualTo
(
warehouseCode
).
example
());
if
((
warehouseCode
.
equals
(
Constant
.
WAREHOUSE_JIT
)
&&
(
turnoverSku
.
getBuyerName
().
equals
(
Constant
.
BUYER_JIT_1
)
||
turnoverSku
.
getBuyerName
().
equals
(
Constant
.
BUYER_JIT_2
)
||
turnoverSku
.
getBuyerName
().
equals
(
Constant
.
BUYER_JIT_3
)))
||
dcAutoStockUpRange
!=
null
)
{
if
((
warehouseCode
.
equals
(
Constant
.
WAREHOUSE_JIT
)
&&
(
turnoverSku
.
getBuyerName
().
equals
(
Constant
.
BUYER_JIT_1
)
||
turnoverSku
.
getBuyerName
().
equals
(
Constant
.
BUYER_JIT_2
)
||
turnoverSku
.
getBuyerName
().
equals
(
Constant
.
BUYER_JIT_3
)))
||
dcAutoStockUpRange
!=
null
||
(
warehouseCode
.
equals
(
Constant
.
WAREHOUSE_JIT1
)
&&
(
turnoverSku
.
getBuyerName
().
equals
(
Constant
.
BUTER_JIT_5
)))
)
{
List
<
BigDecimal
>
historyThirtySalesList
=
JSON
.
parseObject
(
dcAutoSales
.
getHistorySalesDetails
(),
new
TypeReference
<
List
<
BigDecimal
>>()
{
});
BigDecimal
weightingAvgSales
=
caculateWeightingAvgSales
(
BigDecimal
.
valueOf
(
0.3
),
BigDecimal
.
valueOf
(
0.3
),
BigDecimal
.
valueOf
(
0.4
),
historyThirtySalesList
);
...
...
@@ -1428,7 +1432,7 @@ public class AutoTurnoverJob extends PointJob {
//库存 - 销量, 继续跑, 这是周转期最后一天和周转期外的
if
(
j
>=
turnoverDays
)
{
if
(
j
==
turnoverDays
)
{
//周转期内总销量
if
(
warehouseCode
.
equals
(
Constant
.
WAREHOUSE_JIT
)
&&
(
turnoverSku
.
getBuyerName
().
equals
(
Constant
.
BUYER_JIT_1
)
||
turnoverSku
.
getBuyerName
().
equals
(
Constant
.
BUYER_JIT_2
)))
{
if
(
(
warehouseCode
.
equals
(
Constant
.
WAREHOUSE_JIT
)
&&
(
turnoverSku
.
getBuyerName
().
equals
(
Constant
.
BUYER_JIT_1
)
||
turnoverSku
.
getBuyerName
().
equals
(
Constant
.
BUYER_JIT_2
)))
||
(
warehouseCode
.
equals
(
Constant
.
WAREHOUSE_JIT1
)
&&
(
turnoverSku
.
getBuyerName
().
equals
(
Constant
.
BUTER_JIT_5
)
)))
{
totalSales
=
dcAutoTurnover
.
getDailyWeightedSales
().
multiply
(
BigDecimal
.
valueOf
(
turnoverDays
));
totalSales
=
dcAutoTurnover
.
getDailyWeightedSales
().
multiply
(
BigDecimal
.
valueOf
(
turnoverDays
));
dcAutoTurnover
.
setTurnoverSales
(
totalSales
);
...
...
@@ -1532,25 +1536,40 @@ public class AutoTurnoverJob extends PointJob {
//库存 - 销量, 继续跑
if
(
j
>=
turnoverDays
)
{
BigDecimal
totalAdvised
=
BigDecimal
.
ZERO
;
Boolean
firstAdvice
=
true
;
if
(
j
==
turnoverDays
)
{
if
(
warehouseCode
.
equals
(
Constant
.
WAREHOUSE_JIT
)
&&
(
turnoverSku
.
getBuyerName
().
equals
(
Constant
.
BUYER_JIT_1
)
||
turnoverSku
.
getBuyerName
().
equals
(
Constant
.
BUYER_JIT_2
)))
{
if
(
warehouseCode
.
equals
(
Constant
.
WAREHOUSE_JIT
)
&&
(
turnoverSku
.
getBuyerName
().
equals
(
Constant
.
BUYER_JIT_1
)
||
turnoverSku
.
getBuyerName
().
equals
(
Constant
.
BUYER_JIT_2
))
||
(
warehouseCode
.
equals
(
Constant
.
WAREHOUSE_JIT1
)
&&
(
turnoverSku
.
getBuyerName
().
equals
(
Constant
.
BUTER_JIT_5
)))
)
{
BigDecimal
saveDays
=
saveDaysMap
.
get
(
"saveDays"
);
totalSales
=
dcAutoTurnover
.
getDailyWeightedSales
().
multiply
(
BigDecimal
.
valueOf
(
turnoverDays
));
dcAutoTurnover
.
setTurnoverSales
(
totalSales
);
BigDecimal
transNumber
=
BigDecimal
.
ZERO
;
BigDecimal
forecastInbound
=
BigDecimal
.
ZERO
;
if
(
saveDays
!=
null
)
{
for
(
int
trans
=
0
;
trans
<
autoForecastDay
;
trans
++)
{
forecastInbound
=
BigDecimal
.
valueOf
(
forecastInboundList
.
get
(
trans
));
transNumber
=
transNumber
.
add
(
forecastInbound
);
}
totalSales
=
dcAutoTurnover
.
getDailyWeightedSales
().
multiply
(
saveDays
);
totalAdvised
=
totalSales
.
subtract
(
BigDecimal
.
valueOf
(
transNumber
.
doubleValue
()))
//累计到货
.
subtract
(
outStock
>
0
?
BigDecimal
.
ZERO
:
BigDecimal
.
valueOf
(
realInventory
.
longValue
()))
//真实库存,如果缺货就不减
.
add
(
BigDecimal
.
valueOf
(
outStock
.
longValue
()));
//今天的实际缺货
firstAdvice
=
false
;
}
}
else
{
dcAutoTurnover
.
setTurnoverSales
(
totalSales
);
}
}
//采购建议 = 安全库存缺少值 + 今日的实际缺货 + 本次采购到货日期前一天的累计销量 - 本次采购到货日期累计到货数量 + 预计销量
BigDecimal
totalAdvised
=
totalSafeInventory
.
subtract
(
forecastInventoryList
.
get
(
j
>
0
?
j
-
1
:
0
))
//安全库存缺少值= 理论安全库存 - 预测库存
.
add
(
BigDecimal
.
valueOf
(
outStock
.
longValue
()))
//今天的实际缺货
.
add
(
totalSales
)
//累计销量
.
subtract
(
BigDecimal
.
valueOf
(
totalInbound
.
doubleValue
()))
//累计到货
.
subtract
(
outStock
>
0
?
BigDecimal
.
ZERO
:
BigDecimal
.
valueOf
(
realInventory
.
longValue
()))
//真实库存,如果缺货就不减
.
add
(
forecastSalesList
.
get
(
j
));
//预计销量
if
(
firstAdvice
){
//采购建议 = 安全库存缺少值 + 今日的实际缺货 + 本次采购到货日期前一天的累计销量 - 本次采购到货日期累计到货数量 + 预计销量
totalAdvised
=
totalSafeInventory
.
subtract
(
forecastInventoryList
.
get
(
j
>
0
?
j
-
1
:
0
))
//安全库存缺少值= 理论安全库存 - 预测库存
.
add
(
BigDecimal
.
valueOf
(
outStock
.
longValue
()))
//今天的实际缺货
.
add
(
totalSales
)
//累计销量
.
subtract
(
BigDecimal
.
valueOf
(
totalInbound
.
doubleValue
()))
//累计到货
.
subtract
(
outStock
>
0
?
BigDecimal
.
ZERO
:
BigDecimal
.
valueOf
(
realInventory
.
longValue
()))
//真实库存,如果缺货就不减
.
add
(
forecastSalesList
.
get
(
j
));
//预计销量
}
//采购建议数如果大于1的时候就向上取整。如果小于1就四舍五入
if
(
totalAdvised
.
compareTo
(
BigDecimal
.
ONE
)
==
1
)
{
totalAdvised
=
totalAdvised
.
setScale
(
0
,
RoundingMode
.
CEILING
);
...
...
@@ -1565,10 +1584,9 @@ public class AutoTurnoverJob extends PointJob {
}
else
{
moqPurchaseAdvisedList
.
add
(
moqDecimal
);
}
firstAdvice
=
true
;
}
totalSales
=
totalSales
.
add
(
forecastSalesList
.
get
(
j
));
}
return
inventoryAvailableDays
;
}
...
...
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