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
huluobin
dc-java
Commits
5bde6a66
Commit
5bde6a66
authored
Aug 06, 2019
by
yinyong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
周转修改7、14日均
parent
f7ca8051
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
41 additions
and
42 deletions
+41
-42
AutoTurnoverJob.java
...over/src/main/java/com/bailuntec/job/AutoTurnoverJob.java
+41
-42
No files found.
data-show/show-auto-turnover/src/main/java/com/bailuntec/job/AutoTurnoverJob.java
View file @
5bde6a66
...
...
@@ -319,30 +319,8 @@ public class AutoTurnoverJob extends PointJob {
//通过SKU和仓库拿到实际库存
Integer
realInventory
=
(
dcBaseStock
!=
null
&&
dcBaseStock
.
getUsableStock
()
!=
null
)
?
dcBaseStock
.
getUsableStock
()
:
0
;
/*
* 通过SKU拿到供应商Id,
* 再去dc_average_purchase拿到平均交期
* 平均交期 - 供应商交期 > 0 就是平均逾期天数
*
* 平均逾期天数 * 加权平均销量(去最大值最小值)
* 为安全库存--即防止逾期缓冲所需库存
* 可以支持配置
* 2019-04-22更新 不管逾期
*/
BigDecimal
totalSafeInventory
=
calculateSafeInventory
(
turnoverSku
,
bailunSku
,
warehouseCode
,
bailunFirstLevelCatagoryId
,
dcAutoSales
,
JSON
.
toJSONString
(
forecastSalesList
),
dcAutoTurnover
);
Integer
moq
=
turnoverSku
.
getMoq
();
/*
* 预测库存 = 前一日库存 - 前一日销量(没有考虑实际缺货)
*
* 采购建议为周转期后那一天的销量 + 安全库存 - 预测库存 + 累计断货
* 如果有库存, 优先抵消断货数, 再去跟销量对比
*/
//通过SKU和仓库取预测销量
Integer
inventoryAvailableDays
=
0
;
BigDecimal
totalSales
=
BigDecimal
.
ZERO
;
//周转期总销量
BigDecimal
totalInbound
=
BigDecimal
.
ZERO
;
//周转期总预计入库
BigDecimal
moqDecimal
=
BigDecimal
.
valueOf
(
moq
.
longValue
());
List
<
Integer
>
historySalesList
=
JSON
.
parseObject
(
dcAutoSales
.
getHistorySalesDetails
(),
new
TypeReference
<
List
<
Integer
>>()
{
});
...
...
@@ -374,6 +352,33 @@ public class AutoTurnoverJob extends PointJob {
BigDecimal
avgHistorySevendaySales
=
BigDecimal
.
valueOf
(
historySevenSales
.
longValue
()).
divide
(
Constant
.
BIGDECIMAL_SEVEN
,
3
,
RoundingMode
.
HALF_EVEN
);
BigDecimal
avgHistoryFourteendaySales
=
BigDecimal
.
valueOf
(
historyFourteenSales
.
longValue
()).
divide
(
Constant
.
BIGDECIMAL_FOURTEEN
,
3
,
RoundingMode
.
HALF_EVEN
);
BigDecimal
avgHistoryThirtydaySales
=
BigDecimal
.
valueOf
(
historyThirtySales
.
longValue
()).
divide
(
Constant
.
BIGDECIMAL_THIRTY
,
3
,
RoundingMode
.
HALF_EVEN
);
/*
* 通过SKU拿到供应商Id,
* 再去dc_average_purchase拿到平均交期
* 平均交期 - 供应商交期 > 0 就是平均逾期天数
*
* 平均逾期天数 * 加权平均销量(去最大值最小值)
* 为安全库存--即防止逾期缓冲所需库存
* 可以支持配置
* 2019-04-22更新 不管逾期
*/
BigDecimal
totalSafeInventory
=
calculateSafeInventory
(
avgHistorySevendaySales
,
avgHistoryFourteendaySales
,
turnoverSku
,
bailunSku
,
warehouseCode
,
bailunFirstLevelCatagoryId
,
dcAutoSales
,
JSON
.
toJSONString
(
forecastSalesList
),
dcAutoTurnover
);
Integer
moq
=
turnoverSku
.
getMoq
();
/*
* 预测库存 = 前一日库存 - 前一日销量(没有考虑实际缺货)
*
* 采购建议为周转期后那一天的销量 + 安全库存 - 预测库存 + 累计断货
* 如果有库存, 优先抵消断货数, 再去跟销量对比
*/
//通过SKU和仓库取预测销量
Integer
inventoryAvailableDays
=
0
;
BigDecimal
totalSales
=
BigDecimal
.
ZERO
;
//周转期总销量
BigDecimal
totalInbound
=
BigDecimal
.
ZERO
;
//周转期总预计入库
BigDecimal
moqDecimal
=
BigDecimal
.
valueOf
(
moq
.
longValue
());
/*
* forecastFluctuationList 用于存放预计缺货 实际缺货 预计冗余 实际冗余的数据
* dcAutoConfigSkuWarehouse 看是否监控状态
...
...
@@ -1077,7 +1082,7 @@ public class AutoTurnoverJob extends PointJob {
}
}
private
BigDecimal
calculateSafeInventory
(
DcBaseSku
turnoverSku
,
String
bailunSku
,
String
warehouseCode
,
Integer
private
BigDecimal
calculateSafeInventory
(
BigDecimal
avgHistorySevendaySales
,
BigDecimal
avgHistoryFourteendaySales
,
DcBaseSku
turnoverSku
,
String
bailunSku
,
String
warehouseCode
,
Integer
bailunFirstLevelCatagoryId
,
DcAutoSales
dcAutoSales
,
String
forecastSalesListJson
,
DcAutoTurnover
dcAutoTurnover
)
{
/*
* 先判断是否JIT 仓库是广州01 warehouse_code 且是那三个销售员 turnoversku
...
...
@@ -1090,41 +1095,35 @@ public class AutoTurnoverJob extends PointJob {
DcAutoJitTagMapper
dcAutoJitTagMapper
=
SessionUtil
.
getSession
().
getMapper
(
DcAutoJitTagMapper
.
class
);
List
<
DcAutoJitTag
>
dcAutoJitTags
=
dcAutoJitTagMapper
.
selectByExample
(
DcAutoJitTagExample
.
newAndCreateCriteria
().
example
());
BigDecimal
saveDays
=
BigDecimal
.
ZERO
;
if
(
dcAutoSales
.
getSevendaySales
()
<
1
)
{
System
.
out
.
println
(
dcAutoSales
.
getSevendaySales
());
}
if
(
dcAutoSales
.
getFourteendaySales
()
<
1
)
{
System
.
out
.
println
(
dcAutoSales
.
getFourteendaySales
());
}
for
(
DcAutoJitTag
dcAutoJitTag
:
dcAutoJitTags
)
{
if
(
dcAutoJitTag
.
getEnable7
()
==
1
)
{
switch
(
dcAutoJitTag
.
getIsGt7
()){
case
1
:
if
(
dcAutoSales
.
getSevendaySales
()
>
dcAutoJitTag
.
getQuantitySales7
().
intValue
()
)
{
if
(
avgHistorySevendaySales
.
compareTo
(
dcAutoJitTag
.
getQuantitySales7
())
==
1
)
{
break
;
}
else
{
continue
;
}
case
2
:
if
(
dcAutoSales
.
getSevendaySales
()
==
dcAutoJitTag
.
getQuantitySales7
().
intValue
()
)
{
if
(
avgHistorySevendaySales
.
compareTo
(
dcAutoJitTag
.
getQuantitySales7
())
==
0
)
{
break
;
}
else
{
continue
;
}
case
3
:
if
(
dcAutoSales
.
getSevendaySales
()
<
dcAutoJitTag
.
getQuantitySales7
().
intValue
()
)
{
if
(
avgHistorySevendaySales
.
compareTo
(
dcAutoJitTag
.
getQuantitySales7
())
==
-
1
)
{
break
;
}
else
{
continue
;
}
case
4
:
if
(
dcAutoSales
.
getSevendaySales
()
>=
dcAutoJitTag
.
getQuantitySales7
().
intValue
()
)
{
if
(
avgHistorySevendaySales
.
compareTo
(
dcAutoJitTag
.
getQuantitySales7
())
>
-
1
)
{
break
;
}
else
{
continue
;
}
case
5
:
if
(
dcAutoSales
.
getSevendaySales
()
<=
dcAutoJitTag
.
getQuantitySales7
().
intValue
()
)
{
if
(
avgHistorySevendaySales
.
compareTo
(
dcAutoJitTag
.
getQuantitySales7
())
<
1
)
{
break
;
}
else
{
continue
;
...
...
@@ -1136,31 +1135,31 @@ public class AutoTurnoverJob extends PointJob {
if
(
dcAutoJitTag
.
getEnable14
()
==
1
)
{
switch
(
dcAutoJitTag
.
getIsGt14
()){
case
1
:
if
(
dcAutoSales
.
getFourteendaySales
()
>
dcAutoJitTag
.
getQuantitySales14
().
intValue
()
)
{
if
(
avgHistoryFourteendaySales
.
compareTo
(
dcAutoJitTag
.
getQuantitySales14
())
==
1
)
{
break
;
}
else
{
continue
;
}
case
2
:
if
(
dcAutoSales
.
getFourteendaySales
()
==
dcAutoJitTag
.
getQuantitySales14
().
intValue
()
)
{
if
(
avgHistoryFourteendaySales
.
compareTo
(
dcAutoJitTag
.
getQuantitySales14
())
==
0
)
{
break
;
}
else
{
continue
;
}
case
3
:
if
(
dcAutoSales
.
getFourteendaySales
()
<
dcAutoJitTag
.
getQuantitySales14
().
intValue
()
)
{
if
(
avgHistoryFourteendaySales
.
compareTo
(
dcAutoJitTag
.
getQuantitySales14
())
==
-
1
)
{
break
;
}
else
{
continue
;
}
case
4
:
if
(
dcAutoSales
.
getFourteendaySales
()
>=
dcAutoJitTag
.
getQuantitySales14
().
intValue
()
)
{
if
(
avgHistoryFourteendaySales
.
compareTo
(
dcAutoJitTag
.
getQuantitySales14
())
>
-
1
)
{
break
;
}
else
{
continue
;
}
case
5
:
if
(
dcAutoSales
.
getFourteendaySales
()
<=
dcAutoJitTag
.
getQuantitySales14
().
intValue
()
)
{
if
(
avgHistoryFourteendaySales
.
compareTo
(
dcAutoJitTag
.
getQuantitySales14
())
<
1
)
{
break
;
}
else
{
continue
;
...
...
@@ -1174,8 +1173,8 @@ public class AutoTurnoverJob extends PointJob {
DcAutoJitTagLog
dcAutoJitTagLog
=
new
DcAutoJitTagLog
();
dcAutoJitTagLog
.
setBailunSku
(
bailunSku
);
dcAutoJitTagLog
.
setDate
(
LocalDate
.
now
());
dcAutoJitTagLog
.
setQuantitySales7
(
new
BigDecimal
(
dcAutoSales
.
getSevendaySales
())
);
dcAutoJitTagLog
.
setQuantitySales14
(
new
BigDecimal
(
dcAutoSales
.
getFourteendaySales
())
);
dcAutoJitTagLog
.
setQuantitySales7
(
avgHistorySevendaySales
);
dcAutoJitTagLog
.
setQuantitySales14
(
avgHistoryFourteendaySales
);
dcAutoJitTagLog
.
setTagId
(
dcAutoJitTag
.
getId
());
dcAutoJitTagLog
.
setTagJson
(
JSONObject
.
toJSONString
(
dcAutoJitTag
));
dcAutoJitTagLogMapper
.
upsertSelective
(
dcAutoJitTagLog
);
...
...
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