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
170a7fba
Commit
170a7fba
authored
Aug 24, 2020
by
huluobin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
调拨在途 入库大于发货 取0
parent
15936fda
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
42 additions
and
91 deletions
+42
-91
DcBaseCostFirst.java
...ain/java/com/bailuntec/domain/entity/DcBaseCostFirst.java
+2
-0
DcMidTransitMapper.xml
...src/main/java/com/bailuntec/mapper/DcMidTransitMapper.xml
+1
-1
CalculateCostFirstJob.java
...rc/main/java/com/bailuntec/job/CalculateCostFirstJob.java
+39
-90
No files found.
data-common/src/main/java/com/bailuntec/domain/entity/DcBaseCostFirst.java
View file @
170a7fba
...
@@ -163,6 +163,8 @@ public class DcBaseCostFirst {
...
@@ -163,6 +163,8 @@ public class DcBaseCostFirst {
private
Optional
<
DcBaseSku
>
dcBaseSku
;
private
Optional
<
DcBaseSku
>
dcBaseSku
;
private
BigDecimal
skuWeightRatio
;
/**
/**
* This method was generated by MyBatis Generator.
* This method was generated by MyBatis Generator.
* This method corresponds to the database table dc_base_cost_first
* This method corresponds to the database table dc_base_cost_first
...
...
data-common/src/main/java/com/bailuntec/mapper/DcMidTransitMapper.xml
View file @
170a7fba
...
@@ -680,7 +680,7 @@
...
@@ -680,7 +680,7 @@
SELECT t1.targetwareno as warehouse_code,
SELECT t1.targetwareno as warehouse_code,
t2.sku as bailun_sku,
t2.sku as bailun_sku,
t1.transporttype as transport_type,
t1.transporttype as transport_type,
t2.deliverycount - t2.storagecount
as `count`,
if(t2.deliverycount - t2.storagecount
<
0 ,0,t2.deliverycount - t2.storagecount)
as `count`,
0 as countplan
0 as countplan
FROM dc_base_transfer_info t1
FROM dc_base_transfer_info t1
LEFT JOIN dc_base_transfer_info_skus t2 on t1.dataid = t2.dataid
LEFT JOIN dc_base_transfer_info_skus t2 on t1.dataid = t2.dataid
...
...
data-mid/mid-calculate-cost-first/src/main/java/com/bailuntec/job/CalculateCostFirstJob.java
View file @
170a7fba
package
com
.
bailuntec
.
job
;
package
com
.
bailuntec
.
job
;
import
com.bailuntec.domain.constant.Constant
;
import
com.bailuntec.domain.entity.DcBaseCostFirst
;
import
com.bailuntec.domain.entity.DcBaseCostFirst
;
import
com.bailuntec.domain.entity.DcBaseSku
;
import
com.bailuntec.domain.entity.DcBaseSku
;
import
com.bailuntec.domain.entity.DcMidCostFirstOrder
;
import
com.bailuntec.domain.entity.DcMidCostFirstOrder
;
...
@@ -34,46 +33,29 @@ public class CalculateCostFirstJob extends PointJob {
...
@@ -34,46 +33,29 @@ public class CalculateCostFirstJob extends PointJob {
DcBaseCostFirstMapper
dcBaseCostFirstMapper
=
sqlSession
.
getMapper
(
DcBaseCostFirstMapper
.
class
);
DcBaseCostFirstMapper
dcBaseCostFirstMapper
=
sqlSession
.
getMapper
(
DcBaseCostFirstMapper
.
class
);
DcMidCostFirstOrderMapper
dcMidCostFirstOrderMapper
=
sqlSession
.
getMapper
(
DcMidCostFirstOrderMapper
.
class
);
DcMidCostFirstOrderMapper
dcMidCostFirstOrderMapper
=
sqlSession
.
getMapper
(
DcMidCostFirstOrderMapper
.
class
);
// DcMidCostFirstMapper dcMidCostFirsMapper = sqlSession.getMapper(DcMidCostFirstMapper.class);
// DcBaseStockMapper dcBaseStockMapper = sqlSession.getMapper(DcBaseStockMapper.class);
DcBaseSkuMapper
dcBaseSkuMapper
=
SessionUtil
.
getSession
().
getMapper
(
DcBaseSkuMapper
.
class
);
DcBaseSkuMapper
dcBaseSkuMapper
=
SessionUtil
.
getSession
().
getMapper
(
DcBaseSkuMapper
.
class
);
countChannelOrder
=
dcBaseCostFirstMapper
.
countChannelOrder
();
countChannelOrder
=
dcBaseCostFirstMapper
.
countChannelOrder
();
int
totalPage
=
getChannelOrderPage
(
countChannelOrder
,
jobPointLog
);
int
totalPage
=
getChannelOrderPage
(
countChannelOrder
,
jobPointLog
);
do
{
do
{
log
.
info
(
"当前第:{}页"
,
jobPointLog
.
getPageIndex
());
log
.
info
(
"当前第:{}页"
,
jobPointLog
.
getPageIndex
());
log
.
info
(
"总共:{}页"
,
totalPage
);
log
.
info
(
"总共:{}页"
,
totalPage
);
Integer
pageStart
=
jobPointLog
.
getPageIndex
(
)
*
jobPointLog
.
getPageSize
();
Integer
pageStart
=
(
jobPointLog
.
getPageIndex
()
-
1
)
*
jobPointLog
.
getPageSize
();
Integer
pageOffset
=
jobPointLog
.
getPageSize
();
Integer
pageOffset
=
jobPointLog
.
getPageSize
();
List
<
DcBaseCostFirst
>
dcBaseCostFirstList
=
dcBaseCostFirstMapper
.
listUnCalc
(
pageStart
,
pageOffset
);
List
<
DcBaseCostFirst
>
dcBaseCostFirstList
=
dcBaseCostFirstMapper
.
listUnCalc
(
pageStart
,
pageOffset
);
if
(
ListUtil
.
isNotEmpty
(
dcBaseCostFirstList
))
{
if
(
ListUtil
.
isNotEmpty
(
dcBaseCostFirstList
))
{
//更新对应的DcBaseCostFirst状态已计算
// List<DcBaseCostFirst> dcBaseCostFirstList = costFirstOrderList
// .stream()
// .map(costFirstOrder ->
// dcBaseCostFirstMapper.selectByExample(DcBaseCostFirstExample.newAndCreateCriteria()
// .andChannelOrderIdEqualTo(costFirstOrder.getChannelOrderId())
// .andTransferOrderIdEqualTo(costFirstOrder.getTransferOrderId())
// .andBoxIdEqualTo(costFirstOrder.getBoxId())
// .andWarehouseCodeEqualTo(costFirstOrder.getWarehouseCode())
// .example())
// )
// .flatMap(List::stream)
// .collect(Collectors.toList());
// dcBaseCostFirstList.forEach(dcBaseCostFirst -> dcBaseCostFirst.setHasCalculation(true));
// dcBaseCostFirstMapper.upsertBatch(dcBaseCostFirstList);
List
<
DcBaseSku
>
dcBaseSkuList
=
dcBaseSkuMapper
.
selectByExample
(
DcBaseSkuExample
.
newAndCreateCriteria
()
List
<
DcBaseSku
>
dcBaseSkuList
=
dcBaseSkuMapper
.
selectByExample
(
DcBaseSkuExample
.
newAndCreateCriteria
()
.
andBailunSkuIn
(
dcBaseCostFirstList
.
stream
().
map
(
DcBaseCostFirst:
:
getBailunSku
).
collect
(
Collectors
.
toList
())).
example
());
.
andBailunSkuIn
(
dcBaseCostFirstList
.
stream
().
map
(
DcBaseCostFirst:
:
getBailunSku
).
collect
(
Collectors
.
toList
())).
example
());
//聚合base头程费sku信息
Map
<
String
,
DcBaseSku
>
dcBaseSkuMap
=
dcBaseSkuList
.
stream
().
collect
(
Collectors
.
toMap
(
DcBaseSku:
:
getBailunSku
,
dcBaseSku
->
dcBaseSku
));
Map
<
String
,
DcBaseSku
>
dcBaseSkuMap
=
dcBaseSkuList
.
stream
().
collect
(
Collectors
.
toMap
(
DcBaseSku:
:
getBailunSku
,
dcBaseSku
->
dcBaseSku
));
dcBaseCostFirstList
.
forEach
(
dcBaseCostFirst
->
dcBaseCostFirst
.
setDcBaseSku
(
Optional
.
ofNullable
(
dcBaseSkuMap
.
get
(
dcBaseCostFirst
.
getBailunSku
()))));
dcBaseCostFirstList
.
forEach
(
dcBaseCostFirst
->
dcBaseCostFirst
.
setDcBaseSku
(
Optional
.
ofNullable
(
dcBaseSkuMap
.
get
(
dcBaseCostFirst
.
getBailunSku
()))));
// List<DcBaseSku> dcBaseSkuList = dc
Map
<
String
,
List
<
DcBaseCostFirst
>>
dcBaseCostFirstMap
=
dcBaseCostFirstList
.
stream
().
collect
(
Map
<
String
,
List
<
DcBaseCostFirst
>>
dcBaseCostFirstMap
=
dcBaseCostFirstList
.
stream
().
collect
(
Collectors
.
groupingBy
(
val
->
val
.
getChannelOrderId
()
+
val
.
getTransferOrderId
()
+
val
.
getBoxId
()
+
val
.
getWarehouseCode
())
Collectors
.
groupingBy
(
val
->
val
.
getChannelOrderId
()
+
val
.
getTransferOrderId
()
+
val
.
getBoxId
()
+
val
.
getWarehouseCode
())
);
);
...
@@ -81,21 +63,50 @@ public class CalculateCostFirstJob extends PointJob {
...
@@ -81,21 +63,50 @@ public class CalculateCostFirstJob extends PointJob {
List
<
DcMidCostFirstOrder
>
dcMidCostFirstOrderList
=
dcBaseCostFirstMap
.
values
()
List
<
DcMidCostFirstOrder
>
dcMidCostFirstOrderList
=
dcBaseCostFirstMap
.
values
()
.
stream
()
.
stream
()
.
map
(
dcBaseCostFirstGroup
->
{
.
map
(
dcBaseCostFirstGroup
->
{
//总重量
//总重量
BigDecimal
totalWeight
=
dcBaseCostFirstGroup
.
stream
().
map
(
dcBaseCostFirst
->
dcBaseCostFirst
.
getDcBaseSku
().
map
(
DcBaseSku:
:
getWeight
).
orElse
(
BigDecimal
.
ZERO
)
BigDecimal
totalWeight
=
dcBaseCostFirstGroup
.
stream
().
map
(
dcBaseCostFirst
->
dcBaseCostFirst
.
getDcBaseSku
().
map
(
DcBaseSku:
:
getWeight
).
orElse
(
BigDecimal
.
ZERO
)
.
multiply
(
new
BigDecimal
(
dcBaseCostFirst
.
getQuantity
()
==
null
?
0
:
dcBaseCostFirst
.
getQuantity
())))
.
multiply
(
new
BigDecimal
(
dcBaseCostFirst
.
getQuantity
()
==
null
?
0
:
dcBaseCostFirst
.
getQuantity
())))
.
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
.
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
BigDecimal
leftRatio
=
BigDecimal
.
ONE
;
if
(
totalWeight
.
equals
(
BigDecimal
.
ZERO
))
{
for
(
int
i
=
0
;
i
<
dcBaseCostFirstGroup
.
size
();
i
++)
{
DcBaseCostFirst
dcBaseCostFirst
=
dcBaseCostFirstGroup
.
get
(
i
);
//最后一个元素用减法计算
if
(
dcBaseCostFirstGroup
.
size
()
-
1
==
i
)
{
dcBaseCostFirst
.
setSkuWeightRatio
(
leftRatio
);
}
//前面用除法计算
else
{
BigDecimal
skuWeightRatio
=
BigDecimal
.
ONE
.
divide
(
new
BigDecimal
(
dcBaseCostFirstGroup
.
size
()),
2
,
BigDecimal
.
ROUND_HALF_UP
);
dcBaseCostFirst
.
setSkuWeightRatio
(
skuWeightRatio
);
leftRatio
=
leftRatio
.
subtract
(
skuWeightRatio
);
}
}
}
else
{
for
(
int
i
=
0
;
i
<
dcBaseCostFirstGroup
.
size
();
i
++)
{
DcBaseCostFirst
dcBaseCostFirst
=
dcBaseCostFirstGroup
.
get
(
i
);
//最后一个元素用减法计算
if
(
dcBaseCostFirstGroup
.
size
()
-
1
==
i
)
{
dcBaseCostFirst
.
setSkuWeightRatio
(
leftRatio
);
}
//前面用除法计算
else
{
BigDecimal
skuWeightRatio
=
new
BigDecimal
(
dcBaseCostFirst
.
getQuantity
()).
multiply
(
dcBaseCostFirst
.
getDcBaseSku
().
map
(
DcBaseSku:
:
getWeight
).
orElse
(
BigDecimal
.
ZERO
))
.
divide
(
totalWeight
,
2
,
BigDecimal
.
ROUND_HALF_UP
);
dcBaseCostFirst
.
setSkuWeightRatio
(
skuWeightRatio
);
leftRatio
=
leftRatio
.
subtract
(
skuWeightRatio
);
}
}
}
List
<
DcMidCostFirstOrder
>
dcMidCostFirstOrderGroup
=
dcBaseCostFirstGroup
List
<
DcMidCostFirstOrder
>
dcMidCostFirstOrderGroup
=
dcBaseCostFirstGroup
.
stream
()
.
stream
()
.
map
(
dcBaseCostFirst
->
{
.
map
(
dcBaseCostFirst
->
{
// BigDecimal skuWeightRatio = dcBaseCostFirst.getDcBaseSku().map(DcBaseSku::getWeight).orElse(BigDecimal.ZERO)
// .multiply(new BigDecimal(dcBaseCostFirst.getQuantity())).divide(totalWeight, 3, RoundingMode.HALF_EVEN);
BigDecimal
skuWeightRatio
=
BigDecimal
.
ONE
.
divide
(
new
BigDecimal
(
dcBaseCostFirstGroup
.
size
()),
2
,
BigDecimal
.
ROUND_HALF_UP
);
BigDecimal
skuCostFirst
=
dcBaseCostFirst
.
getCostFirst
().
multiply
(
dcBaseCostFirst
.
getSkuWeightRatio
()).
setScale
(
3
,
RoundingMode
.
HALF_EVEN
);
BigDecimal
skuCostFirst
=
dcBaseCostFirst
.
getCostFirst
().
multiply
(
skuWeightRatio
).
setScale
(
3
,
RoundingMode
.
HALF_EVEN
);
DcMidCostFirstOrder
dcMidCostFirstOrder
=
new
DcMidCostFirstOrder
();
DcMidCostFirstOrder
dcMidCostFirstOrder
=
new
DcMidCostFirstOrder
();
dcMidCostFirstOrder
.
setBailunSku
(
dcBaseCostFirst
.
getBailunSku
());
dcMidCostFirstOrder
.
setBailunSku
(
dcBaseCostFirst
.
getBailunSku
());
...
@@ -104,7 +115,7 @@ public class CalculateCostFirstJob extends PointJob {
...
@@ -104,7 +115,7 @@ public class CalculateCostFirstJob extends PointJob {
dcMidCostFirstOrder
.
setTransferOrderId
(
dcBaseCostFirst
.
getTransferOrderId
());
dcMidCostFirstOrder
.
setTransferOrderId
(
dcBaseCostFirst
.
getTransferOrderId
());
dcMidCostFirstOrder
.
setQuantity
(
dcBaseCostFirst
.
getQuantity
());
dcMidCostFirstOrder
.
setQuantity
(
dcBaseCostFirst
.
getQuantity
());
dcMidCostFirstOrder
.
setBoxId
(
dcBaseCostFirst
.
getBoxId
());
dcMidCostFirstOrder
.
setBoxId
(
dcBaseCostFirst
.
getBoxId
());
dcMidCostFirstOrder
.
setWeightRatio
(
skuWeightRatio
);
dcMidCostFirstOrder
.
setWeightRatio
(
dcBaseCostFirst
.
getSkuWeightRatio
()
);
dcMidCostFirstOrder
.
setCostFirst
(
skuCostFirst
);
dcMidCostFirstOrder
.
setCostFirst
(
skuCostFirst
);
dcMidCostFirstOrder
.
setCompanyId
(
dcBaseCostFirst
.
getCompanyId
());
dcMidCostFirstOrder
.
setCompanyId
(
dcBaseCostFirst
.
getCompanyId
());
dcMidCostFirstOrder
.
setHasCalculation
(
false
);
dcMidCostFirstOrder
.
setHasCalculation
(
false
);
...
@@ -126,62 +137,6 @@ public class CalculateCostFirstJob extends PointJob {
...
@@ -126,62 +137,6 @@ public class CalculateCostFirstJob extends PointJob {
jobPointLog
.
setPageIndex
(
0
);
jobPointLog
.
setPageIndex
(
0
);
// int countSkuWarehouse = dcMidCostFirstOrderMapper.countSkuWarehouse();
// int skuWarehouseTotalPage = getSkuWarehouseTotalPage(countSkuWarehouse);
// int index = 0;
// do {
// List<MidCostFirst> midCostFirstList = dcMidCostFirstOrderMapper.listSkuWarehouse(index * Constant.PAGE_SIZE, Constant.PAGE_SIZE);
//
// if (midCostFirstList != null && midCostFirstList.size() > 0) {
// DcMidCostFirst dcMidCostFirst = new DcMidCostFirst();
// for (MidCostFirst midCostFirst : midCostFirstList) {
//
// DcBaseStock dcBaseStock = dcBaseStockMapper.selectOneByExample(DcBaseStockExample
// .newAndCreateCriteria()
// .andBailunSkuEqualTo(midCostFirst.getBailunSku())
// .andWarehouseCodeEqualTo(midCostFirst.getWarehouseCode())
// .example());
//
// DcMidCostFirst dcMidCostFirst1 = dcMidCostFirsMapper.selectOneByExample(DcMidCostFirstExample
// .newAndCreateCriteria()
// .andBailunSkuEqualTo(midCostFirst.getBailunSku())
// .andWarehouseCodeEqualTo(midCostFirst.getWarehouseCode()).example());
//
// dcMidCostFirst.setBailunSku(midCostFirst.getBailunSku());
// dcMidCostFirst.setWarehouseCode(midCostFirst.getWarehouseCode());
// BigDecimal costFirst;
//
// if (dcMidCostFirst1 != null) {
// costFirst = (midCostFirst.getTotalCostFirst()
// .add(dcMidCostFirst1.getCostFirst()
// .multiply(BigDecimal.valueOf(dcMidCostFirst1.getCostCount()))))
// .divide(BigDecimal.valueOf(midCostFirst.getTotalCount())
// .add(BigDecimal.valueOf(dcMidCostFirst1.getCostCount())), 3, RoundingMode.HALF_EVEN);
// } else {
// costFirst = midCostFirst.getTotalCostFirst().divide(BigDecimal.valueOf(midCostFirst.getTotalCount()), 3, RoundingMode.HALF_EVEN);
// }
// dcMidCostFirst.setCostFirst(costFirst);
//
// if (dcBaseStock != null) {
// dcMidCostFirst.setCostCount(dcBaseStock.getUsableStock() + dcBaseStock.getOccupyStock());
// } else {
// dcMidCostFirst.setCostCount(midCostFirst.getTotalCount());
// }
//
// int i = dcMidCostFirsMapper.updateByExampleSelective(dcMidCostFirst, DcMidCostFirstExample
// .newAndCreateCriteria()
// .andBailunSkuEqualTo(dcMidCostFirst.getBailunSku())
// .andWarehouseCodeEqualTo(dcMidCostFirst.getWarehouseCode()).example());
// if (i == 0) {
// dcMidCostFirsMapper.insertSelective(dcMidCostFirst);
// }
// dcMidCostFirstOrderMapper.updateHasCalculation(midCostFirst);
// }
// }
// index++;
// }
// while (index < skuWarehouseTotalPage);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
"任务失败"
,
e
);
throw
new
RuntimeException
(
"任务失败"
,
e
);
}
}
...
@@ -195,10 +150,4 @@ public class CalculateCostFirstJob extends PointJob {
...
@@ -195,10 +150,4 @@ public class CalculateCostFirstJob extends PointJob {
return
countChannelOrder
/
jobPointLog
.
getPageSize
()
+
1
;
return
countChannelOrder
/
jobPointLog
.
getPageSize
()
+
1
;
}
}
private
int
getSkuWarehouseTotalPage
(
int
countSkuWarehouse
)
{
if
(
countSkuWarehouse
%
Constant
.
PAGE_SIZE
==
0
)
{
return
countSkuWarehouse
/
Constant
.
PAGE_SIZE
;
}
return
countSkuWarehouse
/
Constant
.
PAGE_SIZE
+
1
;
}
}
}
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