Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jiedao-api-boot-master
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
lanbaoming
jiedao-api-boot-master
Commits
7d446b75
Commit
7d446b75
authored
Aug 23, 2024
by
332784038@qq.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
复制价格业务再次重构调整
parent
61755259
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
248 additions
and
250 deletions
+248
-250
ProductPriceServiceImpl.java
...product/service/product/impl/ProductPriceServiceImpl.java
+248
-250
No files found.
yudao-module-product/yudao-module-product-core/src/main/java/cn/iocoder/yudao/module/product/service/product/impl/ProductPriceServiceImpl.java
View file @
7d446b75
...
@@ -3611,27 +3611,18 @@ public class ProductPriceServiceImpl extends AbstractService<ProductPriceMapper,
...
@@ -3611,27 +3611,18 @@ public class ProductPriceServiceImpl extends AbstractService<ProductPriceMapper,
}
}
private
void
copyClearAndSavePriceStepList
(
ProductPriceDO
productPriceDO
,
List
<
ProductPriceStepDO
>
stepList
,
String
transportType
,
boolean
batchUpdate
)
{
private
void
copyClearAndSavePriceStepList
(
ProductPriceDO
productPriceDO
,
List
<
ProductPriceStepDO
>
stepList
,
String
transportType
,
boolean
batchUpdate
)
{
if
(
stepList
==
null
)
stepList
=
new
ArrayList
<>();
if
(
productPriceDO
.
getStepPrice
()
==
1
)
{
if
(
stepList
==
null
)
stepList
=
new
ArrayList
<>();
stepList
=
stepList
.
stream
()
.
filter
(
t
->
t
.
getStartNum
()
!=
null
&&
t
.
getWeightUnit
()
!=
null
&&
t
.
getEndNum
()
!=
null
)
.
collect
(
Collectors
.
toList
());
if
(
CollectionUtil
.
isEmpty
(
stepList
))
return
;
stepList
=
stepList
.
stream
()
.
filter
(
t
->
t
.
getStartNum
()
!=
null
&&
t
.
getWeightUnit
()
!=
null
&&
t
.
getEndNum
()
!=
null
)
.
collect
(
Collectors
.
toList
());
}
if
(
productPriceDO
.
getStepPrice
()
==
1
&&
CollectionUtil
.
isEmpty
(
stepList
))
return
;
Collection
<
Integer
>
priceTypes
=
stepList
.
stream
()
.
map
(
ProductPriceStepDO:
:
getPriceType
)
.
collect
(
Collectors
.
toSet
());
priceTypes
.
add
(
PriceTypeEnum
.
FULL_PRICE
.
getPriceType
());
List
<
ProductPriceStepDO
>
dbStepList
=
productPriceStepMapper
.
selectList
(
new
LambdaQueryWrapper
<
ProductPriceStepDO
>()
.
eq
(
ProductPriceStepDO:
:
getProductPriceId
,
productPriceDO
.
getId
())
.
in
(
ProductPriceStepDO:
:
getPriceType
,
priceTypes
)
);
Map
<
Long
,
List
<
ProductPriceStepDO
>>
dbStepMap
=
dbStepList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
ProductPriceStepDO:
:
getProductPriceId
));
List
<
ProductPriceStepDO
>
insertList1
=
new
ArrayList
<>();
List
<
ProductPriceStepDO
>
insertList1
=
new
ArrayList
<>();
List
<
ProductPriceStepDO
>
updateList
=
new
ArrayList
<>();
List
<
ProductPriceStepDO
>
updateList
=
new
ArrayList
<>();
...
@@ -3639,7 +3630,240 @@ public class ProductPriceServiceImpl extends AbstractService<ProductPriceMapper,
...
@@ -3639,7 +3630,240 @@ public class ProductPriceServiceImpl extends AbstractService<ProductPriceMapper,
List
<
ProductPriceSpecialDO
>
priceSpecialUpdate
=
new
ArrayList
<>();
List
<
ProductPriceSpecialDO
>
priceSpecialUpdate
=
new
ArrayList
<>();
if
(
productPriceDO
.
getStepPrice
()
==
1
)
{
if
(
productPriceDO
.
getStepPrice
()
==
1
)
{
Collection
<
Integer
>
priceTypes
=
stepList
.
stream
()
.
map
(
ProductPriceStepDO:
:
getPriceType
)
.
collect
(
Collectors
.
toSet
());
priceTypes
.
add
(
PriceTypeEnum
.
FULL_PRICE
.
getPriceType
());
List
<
ProductPriceStepDO
>
dbStepList
=
productPriceStepMapper
.
selectList
(
new
LambdaQueryWrapper
<
ProductPriceStepDO
>()
.
eq
(
ProductPriceStepDO:
:
getProductPriceId
,
productPriceDO
.
getId
())
.
in
(
ProductPriceStepDO:
:
getPriceType
,
priceTypes
)
);
Map
<
Long
,
List
<
ProductPriceStepDO
>>
dbStepMap
=
dbStepList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
ProductPriceStepDO:
:
getProductPriceId
));
copyStepPrice
(
stepList
,
transportType
,
productPriceDO
,
dbStepMap
,
insertList1
,
productPricePackagingDOS
,
updateList
);
copyStepPrice
(
stepList
,
transportType
,
productPriceDO
,
dbStepMap
,
insertList1
,
productPricePackagingDOS
,
updateList
);
if
(
CollectionUtil
.
isNotEmpty
(
insertList1
))
{
productPriceStepMapper
.
insertBatchSomeColumn
(
insertList1
);
}
if
(
CollectionUtil
.
isNotEmpty
(
updateList
))
{
productPriceStepMapper
.
updateBatch
(
updateList
);
}
List
<
Long
>
dbStepIdList
=
dbStepList
.
stream
()
.
map
(
ProductPriceStepDO:
:
getId
)
.
collect
(
toList
());
if
(!
batchUpdate
)
{
List
<
Long
>
updateIdList
=
updateList
.
stream
()
.
map
(
ProductPriceStepDO:
:
getId
)
.
collect
(
toList
());
List
<
Long
>
dbIdList
=
new
ArrayList
<>(
dbStepIdList
);
dbIdList
.
removeAll
(
updateIdList
);
if
(
CollectionUtil
.
isNotEmpty
(
dbIdList
))
{
productPriceStepMapper
.
physicsDeleteById
(
Joiner
.
on
(
","
).
join
(
dbIdList
));
}
}
insertList1
.
addAll
(
updateList
);
List
<
ProductPriceStepSpecialDO
>
allUpdateStepSpecialList
=
insertList1
.
stream
()
.
filter
(
step
->
CollectionUtil
.
isNotEmpty
(
step
.
getSpecialList
()))
.
flatMap
(
step
->
step
.
getSpecialList
().
stream
())
.
filter
(
stepSpecialDO
->
stepSpecialDO
.
getTransportPrice
()
!=
null
||
stepSpecialDO
.
getClearancePrice
()
!=
null
||
stepSpecialDO
.
getAllPrice
()
!=
null
)
.
collect
(
Collectors
.
toList
());
Map
<
Long
,
List
<
ProductPriceStepSpecialDO
>>
stepSpecialGroupMap
=
new
HashMap
<>();
if
(
CollectionUtil
.
isNotEmpty
(
allUpdateStepSpecialList
))
{
//数据库查找所有阶梯特需数据
List
<
List
<
Long
>>
stepIdPartList
=
Lists
.
partition
(
dbStepIdList
,
1000
);
List
<
ProductPriceStepSpecialDO
>
allStepSpecialList
=
new
ArrayList
<>();
for
(
List
<
Long
>
stepIdLis
:
stepIdPartList
)
{
List
<
ProductPriceStepSpecialDO
>
itemStepSpecialList
=
productPriceStepSpecialMapper
.
selectList
(
new
LambdaQueryWrapper
<
ProductPriceStepSpecialDO
>()
.
in
(
ProductPriceStepSpecialDO:
:
getProductPriceStepId
,
stepIdLis
)
);
allStepSpecialList
.
addAll
(
itemStepSpecialList
);
}
stepSpecialGroupMap
=
allStepSpecialList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
ProductPriceStepSpecialDO:
:
getProductPriceStepId
));
}
List
<
ProductPriceStepSpecialDO
>
specialInsertList
=
new
ArrayList
<>();
List
<
ProductPriceStepSpecialDO
>
specialUpdateList
=
new
ArrayList
<>();
for
(
ProductPriceStepDO
stepDO
:
insertList1
)
{
List
<
ProductPriceStepSpecialDO
>
productPriceStepSpecialDOS
=
stepDO
.
getSpecialList
();
//过滤掉价格为空的数据
if
(
CollectionUtil
.
isNotEmpty
(
productPriceStepSpecialDOS
))
{
productPriceStepSpecialDOS
=
productPriceStepSpecialDOS
.
stream
()
.
filter
(
stepSpecialDO
->
stepSpecialDO
.
getTransportPrice
()
!=
null
||
stepSpecialDO
.
getClearancePrice
()
!=
null
||
stepSpecialDO
.
getAllPrice
()
!=
null
)
.
collect
(
toList
());
List
<
ProductPriceStepSpecialDO
>
dbStepSpecialList
=
stepSpecialGroupMap
.
get
(
stepDO
.
getId
());
Map
<
String
,
ProductPriceStepSpecialDO
>
stepSpecialMap
=
new
HashMap
<>();
if
(
CollectionUtil
.
isNotEmpty
(
dbStepSpecialList
))
{
stepSpecialMap
=
dbStepSpecialList
.
stream
()
.
collect
(
Collectors
.
toMap
(
ProductPriceStepSpecialDO:
:
getSpecialDictType
,
v
->
v
));
}
for
(
ProductPriceStepSpecialDO
stepSpecialDO
:
productPriceStepSpecialDOS
)
{
ProductPriceStepSpecialDO
dbStepSpecialDO
=
stepSpecialMap
.
get
(
stepSpecialDO
.
getSpecialDictType
());
if
(
dbStepSpecialDO
==
null
)
{
ProductPriceStepSpecialDO
dbItem
=
ObjectUtil
.
clone
(
stepSpecialDO
);
dbItem
.
setId
(
null
);
dbItem
.
setProductPriceId
(
stepDO
.
getProductPriceId
());
dbItem
.
setProductPriceStepId
(
stepDO
.
getId
());
initBasePrice
(
dbItem
,
transportType
);
specialInsertList
.
add
(
dbItem
);
}
else
{
if
(
stepSpecialDO
.
getTransportPrice
()
!=
null
)
{
dbStepSpecialDO
.
setTransportPrice
(
stepSpecialDO
.
getTransportPrice
());
}
if
(
stepSpecialDO
.
getTransportPriceUnit
()
!=
null
)
{
dbStepSpecialDO
.
setTransportPriceUnit
(
stepSpecialDO
.
getTransportPriceUnit
());
}
if
(
stepSpecialDO
.
getTransportVolumeUnit
()
!=
null
)
{
dbStepSpecialDO
.
setTransportVolumeUnit
(
stepSpecialDO
.
getTransportVolumeUnit
());
}
if
(
stepSpecialDO
.
getClearancePrice
()
!=
null
)
{
dbStepSpecialDO
.
setClearancePrice
(
stepSpecialDO
.
getClearancePrice
());
}
if
(
stepSpecialDO
.
getClearancePriceUnit
()
!=
null
)
{
dbStepSpecialDO
.
setClearancePriceUnit
(
stepSpecialDO
.
getClearancePriceUnit
());
}
if
(
stepSpecialDO
.
getClearanceVolumeUnit
()
!=
null
)
{
dbStepSpecialDO
.
setClearanceVolumeUnit
(
stepSpecialDO
.
getClearanceVolumeUnit
());
}
if
(
stepSpecialDO
.
getAllPrice
()
!=
null
)
{
dbStepSpecialDO
.
setAllPrice
(
stepSpecialDO
.
getAllPrice
());
}
if
(
stepSpecialDO
.
getAllPriceUnit
()
!=
null
)
{
dbStepSpecialDO
.
setAllPriceUnit
(
stepSpecialDO
.
getAllPriceUnit
());
}
if
(
stepSpecialDO
.
getAllVolumeUnit
()
!=
null
)
{
dbStepSpecialDO
.
setAllVolumeUnit
(
stepSpecialDO
.
getAllVolumeUnit
());
}
specialUpdateList
.
add
(
dbStepSpecialDO
);
}
}
}
}
if
(
CollectionUtil
.
isNotEmpty
(
specialInsertList
))
{
productPriceStepSpecialMapper
.
insertBatchSomeColumn
(
specialInsertList
);
}
if
(
CollectionUtil
.
isNotEmpty
(
specialUpdateList
))
{
productPriceStepSpecialMapper
.
updateBatch
(
specialUpdateList
);
}
List
<
ProductPriceStepPackagingDO
>
stepPackagingList
=
insertList1
.
stream
()
.
map
(
ProductPriceStepDO:
:
getPackagingList
)
.
filter
(
CollectionUtil:
:
isNotEmpty
)
.
flatMap
(
List:
:
stream
)
.
collect
(
Collectors
.
toList
());
Map
<
Long
,
List
<
ProductPriceStepPackagingDO
>>
stepPackagingGroupMap
=
new
HashMap
<>();
List
<
Long
>
dbPackingIdList
=
new
ArrayList
<>();
if
(
CollectionUtil
.
isNotEmpty
(
stepPackagingList
))
{
//数据库查找所有阶梯包装数据
List
<
List
<
Long
>>
stepIdPartList
=
Lists
.
partition
(
dbStepIdList
,
1000
);
List
<
ProductPriceStepPackagingDO
>
allStepPackagingList
=
new
ArrayList
<>();
for
(
List
<
Long
>
stepIdLis
:
stepIdPartList
)
{
List
<
ProductPriceStepPackagingDO
>
itemStepPackagingList
=
productPriceStepPackagingMapper
.
selectList
(
new
LambdaQueryWrapper
<
ProductPriceStepPackagingDO
>()
.
in
(
ProductPriceStepPackagingDO:
:
getProductPriceStepId
,
stepIdLis
)
);
allStepPackagingList
.
addAll
(
itemStepPackagingList
);
}
dbPackingIdList
=
allStepPackagingList
.
stream
()
.
map
(
BasePackagingPrice:
:
getId
)
.
collect
(
toList
());
stepPackagingGroupMap
=
allStepPackagingList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
ProductPriceStepPackagingDO:
:
getProductPriceStepId
));
}
List
<
ProductPriceStepPackagingDO
>
packagingInsertList
=
new
ArrayList
<>();
List
<
ProductPriceStepPackagingDO
>
packagingUpdateList
=
new
ArrayList
<>();
List
<
ProductPriceStepPackagingDO
>
packagingDeleteListList
=
new
ArrayList
<>();
for
(
ProductPriceStepDO
priceStepDO
:
insertList1
)
{
List
<
ProductPriceStepPackagingDO
>
productPriceStepPackagingDOS
=
priceStepDO
.
getPackagingList
();
if
(
CollectionUtil
.
isNotEmpty
(
productPriceStepPackagingDOS
))
{
productPriceStepPackagingDOS
=
productPriceStepPackagingDOS
.
stream
()
.
filter
(
t
->
t
.
getPackagingPrice
()
!=
null
)
.
collect
(
toList
());
}
if
(
CollectionUtil
.
isNotEmpty
(
productPriceStepPackagingDOS
))
{
List
<
ProductPriceStepPackagingDO
>
dbStepPackagingList
=
stepPackagingGroupMap
.
get
(
priceStepDO
.
getId
());
if
(
CollectionUtil
.
isEmpty
(
dbStepPackagingList
))
{
for
(
int
i
=
0
;
i
<
productPriceStepPackagingDOS
.
size
();
i
++)
{
ProductPriceStepPackagingDO
m
=
productPriceStepPackagingDOS
.
get
(
i
);
ProductPriceStepPackagingDO
dbItem
=
ObjectUtil
.
clone
(
m
);
dbItem
.
setId
(
null
);
dbItem
.
setProductPriceId
(
priceStepDO
.
getProductPriceId
());
dbItem
.
setProductPriceStepId
(
priceStepDO
.
getId
());
dbItem
.
setRankNum
(
i
+
1
);
dbItem
.
setDeleted
(
false
);
packagingInsertList
.
add
(
dbItem
);
}
}
else
{
for
(
int
i
=
0
;
i
<
productPriceStepPackagingDOS
.
size
();
i
++)
{
ProductPriceStepPackagingDO
item
=
productPriceStepPackagingDOS
.
get
(
i
);
String
addPricePackagingTypes
=
item
.
getPackagingTypes
();
if
(
StringUtils
.
isBlank
(
addPricePackagingTypes
))
continue
;
Long
addPricePackagingPriceUnit
=
item
.
getPackagingPriceUnit
();
if
(
addPricePackagingPriceUnit
==
null
)
continue
;
Long
addPricePackagingVolumeUnit
=
item
.
getPackagingVolumeUnit
();
if
(
addPricePackagingVolumeUnit
==
null
)
continue
;
Set
<
String
>
addPriceTypeSets
=
new
HashSet
<>(
Arrays
.
asList
(
addPricePackagingTypes
.
split
(
","
)));
//新增BC
ProductPriceStepPackagingDO
dbItem
=
ObjectUtil
.
clone
(
item
);
dbItem
.
setId
(
null
);
dbItem
.
setProductPriceId
(
priceStepDO
.
getProductPriceId
());
dbItem
.
setProductPriceStepId
(
priceStepDO
.
getId
());
dbItem
.
setRankNum
(
i
+
1
);
dbItem
.
setDeleted
(
false
);
packagingInsertList
.
add
(
dbItem
);
if
(!
batchUpdate
)
continue
;
for
(
ProductPriceStepPackagingDO
dbStepPacking
:
dbStepPackagingList
)
{
Set
<
String
>
dbPriceTypeSets
=
new
HashSet
<>(
Arrays
.
asList
(
dbStepPacking
.
getPackagingTypes
().
split
(
","
)));
dbPriceTypeSets
.
removeAll
(
addPriceTypeSets
);
if
(
dbPriceTypeSets
.
isEmpty
())
{
packagingDeleteListList
.
add
(
dbStepPacking
);
}
else
{
dbStepPacking
.
setPackagingTypes
(
Joiner
.
on
(
","
).
join
(
dbPriceTypeSets
));
dbStepPacking
.
setPackagingPriceUnit
(
item
.
getPackagingPriceUnit
());
dbStepPacking
.
setPackagingVolumeUnit
(
item
.
getPackagingVolumeUnit
());
packagingUpdateList
.
add
(
dbStepPacking
);
}
}
}
}
}
}
if
(
CollectionUtil
.
isNotEmpty
(
packagingInsertList
))
{
productPriceStepPackagingMapper
.
insertBatchSomeColumn
(
packagingInsertList
);
}
if
(
CollectionUtil
.
isNotEmpty
(
packagingUpdateList
))
{
productPriceStepPackagingMapper
.
updateBatch
(
packagingUpdateList
);
}
if
(
CollectionUtil
.
isNotEmpty
(
packagingDeleteListList
))
{
List
<
Long
>
dIdList
=
packagingDeleteListList
.
stream
()
.
map
(
BasePackagingPrice:
:
getId
)
.
collect
(
toList
());
productPriceStepPackagingMapper
.
deleteBatchIds
(
dIdList
);
}
if
(!
batchUpdate
)
{
List
<
Long
>
updateIdList
=
packagingUpdateList
.
stream
()
.
map
(
ProductPriceStepPackagingDO:
:
getId
)
.
collect
(
toList
());
dbPackingIdList
.
removeAll
(
updateIdList
);
if
(
CollectionUtil
.
isNotEmpty
(
dbPackingIdList
))
{
productPriceStepPackagingMapper
.
physicsDeleteById
(
Joiner
.
on
(
","
).
join
(
dbPackingIdList
));
}
}
}
else
{
}
else
{
if
(
CollectionUtil
.
isNotEmpty
(
productPriceDO
.
getSpecialDOList
()))
{
if
(
CollectionUtil
.
isNotEmpty
(
productPriceDO
.
getSpecialDOList
()))
{
for
(
ProductPriceSpecialDO
specialDO
:
productPriceDO
.
getSpecialDOList
())
{
for
(
ProductPriceSpecialDO
specialDO
:
productPriceDO
.
getSpecialDOList
())
{
...
@@ -3677,244 +3901,18 @@ public class ProductPriceServiceImpl extends AbstractService<ProductPriceMapper,
...
@@ -3677,244 +3901,18 @@ public class ProductPriceServiceImpl extends AbstractService<ProductPriceMapper,
productPricePackagingDOS
.
add
(
pricePackagingDO
);
productPricePackagingDOS
.
add
(
pricePackagingDO
);
}
}
}
}
}
if
(
CollectionUtil
.
isNotEmpty
(
priceSpecialUpdate
))
{
if
(
CollectionUtil
.
isNotEmpty
(
insertList1
))
{
productPriceSpecialMapper
.
physicsDelete
(
productPriceDO
.
getId
().
toString
());
productPriceStepMapper
.
insertBatchSomeColumn
(
insertList1
);
productPriceSpecialMapper
.
insertBatch
(
priceSpecialUpdate
);
}
if
(
CollectionUtil
.
isNotEmpty
(
updateList
))
{
productPriceStepMapper
.
updateBatch
(
updateList
);
}
List
<
Long
>
dbStepIdList
=
dbStepList
.
stream
()
.
map
(
ProductPriceStepDO:
:
getId
)
.
collect
(
toList
());
if
(!
batchUpdate
)
{
List
<
Long
>
updateIdList
=
updateList
.
stream
()
.
map
(
ProductPriceStepDO:
:
getId
)
.
collect
(
toList
());
List
<
Long
>
dbIdList
=
new
ArrayList
<>(
dbStepIdList
);
dbIdList
.
removeAll
(
updateIdList
);
if
(
CollectionUtil
.
isNotEmpty
(
dbIdList
))
{
productPriceStepMapper
.
physicsDeleteById
(
Joiner
.
on
(
","
).
join
(
dbIdList
));
}
}
insertList1
.
addAll
(
updateList
);
List
<
ProductPriceStepSpecialDO
>
allUpdateStepSpecialList
=
insertList1
.
stream
()
.
filter
(
step
->
CollectionUtil
.
isNotEmpty
(
step
.
getSpecialList
()))
.
flatMap
(
step
->
step
.
getSpecialList
().
stream
())
.
filter
(
stepSpecialDO
->
stepSpecialDO
.
getTransportPrice
()
!=
null
||
stepSpecialDO
.
getClearancePrice
()
!=
null
||
stepSpecialDO
.
getAllPrice
()
!=
null
)
.
collect
(
Collectors
.
toList
());
Map
<
Long
,
List
<
ProductPriceStepSpecialDO
>>
stepSpecialGroupMap
=
new
HashMap
<>();
if
(
CollectionUtil
.
isNotEmpty
(
allUpdateStepSpecialList
))
{
//数据库查找所有阶梯特需数据
List
<
List
<
Long
>>
stepIdPartList
=
Lists
.
partition
(
dbStepIdList
,
1000
);
List
<
ProductPriceStepSpecialDO
>
allStepSpecialList
=
new
ArrayList
<>();
for
(
List
<
Long
>
stepIdLis
:
stepIdPartList
)
{
List
<
ProductPriceStepSpecialDO
>
itemStepSpecialList
=
productPriceStepSpecialMapper
.
selectList
(
new
LambdaQueryWrapper
<
ProductPriceStepSpecialDO
>()
.
in
(
ProductPriceStepSpecialDO:
:
getProductPriceStepId
,
stepIdLis
)
);
allStepSpecialList
.
addAll
(
itemStepSpecialList
);
}
stepSpecialGroupMap
=
allStepSpecialList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
ProductPriceStepSpecialDO:
:
getProductPriceStepId
));
}
List
<
ProductPriceStepSpecialDO
>
specialInsertList
=
new
ArrayList
<>();
List
<
ProductPriceStepSpecialDO
>
specialUpdateList
=
new
ArrayList
<>();
for
(
ProductPriceStepDO
stepDO
:
insertList1
)
{
List
<
ProductPriceStepSpecialDO
>
productPriceStepSpecialDOS
=
stepDO
.
getSpecialList
();
//过滤掉价格为空的数据
if
(
CollectionUtil
.
isNotEmpty
(
productPriceStepSpecialDOS
))
{
productPriceStepSpecialDOS
=
productPriceStepSpecialDOS
.
stream
()
.
filter
(
stepSpecialDO
->
stepSpecialDO
.
getTransportPrice
()
!=
null
||
stepSpecialDO
.
getClearancePrice
()
!=
null
||
stepSpecialDO
.
getAllPrice
()
!=
null
)
.
collect
(
toList
());
List
<
ProductPriceStepSpecialDO
>
dbStepSpecialList
=
stepSpecialGroupMap
.
get
(
stepDO
.
getId
());
Map
<
String
,
ProductPriceStepSpecialDO
>
stepSpecialMap
=
new
HashMap
<>();
if
(
CollectionUtil
.
isNotEmpty
(
dbStepSpecialList
))
{
stepSpecialMap
=
dbStepSpecialList
.
stream
()
.
collect
(
Collectors
.
toMap
(
ProductPriceStepSpecialDO:
:
getSpecialDictType
,
v
->
v
));
}
for
(
ProductPriceStepSpecialDO
stepSpecialDO
:
productPriceStepSpecialDOS
)
{
ProductPriceStepSpecialDO
dbStepSpecialDO
=
stepSpecialMap
.
get
(
stepSpecialDO
.
getSpecialDictType
());
if
(
dbStepSpecialDO
==
null
)
{
ProductPriceStepSpecialDO
dbItem
=
ObjectUtil
.
clone
(
stepSpecialDO
);
dbItem
.
setId
(
null
);
dbItem
.
setProductPriceId
(
stepDO
.
getProductPriceId
());
dbItem
.
setProductPriceStepId
(
stepDO
.
getId
());
initBasePrice
(
dbItem
,
transportType
);
specialInsertList
.
add
(
dbItem
);
}
else
{
if
(
stepSpecialDO
.
getTransportPrice
()
!=
null
)
{
dbStepSpecialDO
.
setTransportPrice
(
stepSpecialDO
.
getTransportPrice
());
}
if
(
stepSpecialDO
.
getTransportPriceUnit
()
!=
null
)
{
dbStepSpecialDO
.
setTransportPriceUnit
(
stepSpecialDO
.
getTransportPriceUnit
());
}
if
(
stepSpecialDO
.
getTransportVolumeUnit
()
!=
null
)
{
dbStepSpecialDO
.
setTransportVolumeUnit
(
stepSpecialDO
.
getTransportVolumeUnit
());
}
if
(
stepSpecialDO
.
getClearancePrice
()
!=
null
)
{
dbStepSpecialDO
.
setClearancePrice
(
stepSpecialDO
.
getClearancePrice
());
}
if
(
stepSpecialDO
.
getClearancePriceUnit
()
!=
null
)
{
dbStepSpecialDO
.
setClearancePriceUnit
(
stepSpecialDO
.
getClearancePriceUnit
());
}
if
(
stepSpecialDO
.
getClearanceVolumeUnit
()
!=
null
)
{
dbStepSpecialDO
.
setClearanceVolumeUnit
(
stepSpecialDO
.
getClearanceVolumeUnit
());
}
if
(
stepSpecialDO
.
getAllPrice
()
!=
null
)
{
dbStepSpecialDO
.
setAllPrice
(
stepSpecialDO
.
getAllPrice
());
}
if
(
stepSpecialDO
.
getAllPriceUnit
()
!=
null
)
{
dbStepSpecialDO
.
setAllPriceUnit
(
stepSpecialDO
.
getAllPriceUnit
());
}
if
(
stepSpecialDO
.
getAllVolumeUnit
()
!=
null
)
{
dbStepSpecialDO
.
setAllVolumeUnit
(
stepSpecialDO
.
getAllVolumeUnit
());
}
specialUpdateList
.
add
(
dbStepSpecialDO
);
}
}
}
}
if
(
CollectionUtil
.
isNotEmpty
(
specialInsertList
))
{
productPriceStepSpecialMapper
.
insertBatchSomeColumn
(
specialInsertList
);
}
if
(
CollectionUtil
.
isNotEmpty
(
specialUpdateList
))
{
productPriceStepSpecialMapper
.
updateBatch
(
specialUpdateList
);
}
// if (CollectionUtil.isNotEmpty(priceSpecialInsert)) {
// productPriceSpecialMapper.insertBatch(priceSpecialInsert);
// }
if
(
CollectionUtil
.
isNotEmpty
(
priceSpecialUpdate
))
{
productPriceSpecialMapper
.
physicsDelete
(
productPriceDO
.
getId
().
toString
());
productPriceSpecialMapper
.
insertBatch
(
priceSpecialUpdate
);
}
if
(
CollectionUtil
.
isNotEmpty
(
productPricePackagingDOS
))
{
productPricePackagingMapper
.
physicsDelete
(
productPriceDO
.
getId
().
toString
());
productPricePackagingMapper
.
insertBatch
(
productPricePackagingDOS
);
}
List
<
ProductPriceStepPackagingDO
>
stepPackagingList
=
insertList1
.
stream
()
.
map
(
ProductPriceStepDO:
:
getPackagingList
)
.
filter
(
CollectionUtil:
:
isNotEmpty
)
.
flatMap
(
List:
:
stream
)
.
collect
(
Collectors
.
toList
());
Map
<
Long
,
List
<
ProductPriceStepPackagingDO
>>
stepPackagingGroupMap
=
new
HashMap
<>();
List
<
Long
>
dbPackingIdList
=
new
ArrayList
<>();
if
(
CollectionUtil
.
isNotEmpty
(
stepPackagingList
))
{
//数据库查找所有阶梯包装数据
List
<
List
<
Long
>>
stepIdPartList
=
Lists
.
partition
(
dbStepIdList
,
1000
);
List
<
ProductPriceStepPackagingDO
>
allStepPackagingList
=
new
ArrayList
<>();
for
(
List
<
Long
>
stepIdLis
:
stepIdPartList
)
{
List
<
ProductPriceStepPackagingDO
>
itemStepPackagingList
=
productPriceStepPackagingMapper
.
selectList
(
new
LambdaQueryWrapper
<
ProductPriceStepPackagingDO
>()
.
in
(
ProductPriceStepPackagingDO:
:
getProductPriceStepId
,
stepIdLis
)
);
allStepPackagingList
.
addAll
(
itemStepPackagingList
);
}
}
dbPackingIdList
=
allStepPackagingList
.
stream
()
.
map
(
BasePackagingPrice:
:
getId
)
.
collect
(
toList
());
stepPackagingGroupMap
=
allStepPackagingList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
ProductPriceStepPackagingDO:
:
getProductPriceStepId
));
}
List
<
ProductPriceStepPackagingDO
>
packagingInsertList
=
new
ArrayList
<>();
if
(
CollectionUtil
.
isNotEmpty
(
productPricePackagingDOS
))
{
List
<
ProductPriceStepPackagingDO
>
packagingUpdateList
=
new
ArrayList
<>();
productPricePackagingMapper
.
physicsDelete
(
productPriceDO
.
getId
().
toString
());
List
<
ProductPriceStepPackagingDO
>
packagingDeleteListList
=
new
ArrayList
<>();
productPricePackagingMapper
.
insertBatch
(
productPricePackagingDOS
);
for
(
ProductPriceStepDO
priceStepDO
:
insertList1
)
{
List
<
ProductPriceStepPackagingDO
>
productPriceStepPackagingDOS
=
priceStepDO
.
getPackagingList
();
if
(
CollectionUtil
.
isNotEmpty
(
productPriceStepPackagingDOS
))
{
productPriceStepPackagingDOS
=
productPriceStepPackagingDOS
.
stream
()
.
filter
(
t
->
t
.
getPackagingPrice
()
!=
null
)
.
collect
(
toList
());
}
}
if
(
CollectionUtil
.
isNotEmpty
(
productPriceStepPackagingDOS
))
{
List
<
ProductPriceStepPackagingDO
>
dbStepPackagingList
=
stepPackagingGroupMap
.
get
(
priceStepDO
.
getId
());
if
(
CollectionUtil
.
isEmpty
(
dbStepPackagingList
))
{
for
(
int
i
=
0
;
i
<
productPriceStepPackagingDOS
.
size
();
i
++)
{
ProductPriceStepPackagingDO
m
=
productPriceStepPackagingDOS
.
get
(
i
);
ProductPriceStepPackagingDO
dbItem
=
ObjectUtil
.
clone
(
m
);
dbItem
.
setId
(
null
);
dbItem
.
setProductPriceId
(
priceStepDO
.
getProductPriceId
());
dbItem
.
setProductPriceStepId
(
priceStepDO
.
getId
());
dbItem
.
setRankNum
(
i
+
1
);
dbItem
.
setDeleted
(
false
);
packagingInsertList
.
add
(
dbItem
);
}
}
else
{
for
(
int
i
=
0
;
i
<
productPriceStepPackagingDOS
.
size
();
i
++)
{
ProductPriceStepPackagingDO
item
=
productPriceStepPackagingDOS
.
get
(
i
);
String
addPricePackagingTypes
=
item
.
getPackagingTypes
();
if
(
StringUtils
.
isBlank
(
addPricePackagingTypes
))
continue
;
Long
addPricePackagingPriceUnit
=
item
.
getPackagingPriceUnit
();
if
(
addPricePackagingPriceUnit
==
null
)
continue
;
Long
addPricePackagingVolumeUnit
=
item
.
getPackagingVolumeUnit
();
if
(
addPricePackagingVolumeUnit
==
null
)
continue
;
Set
<
String
>
addPriceTypeSets
=
new
HashSet
<>(
Arrays
.
asList
(
addPricePackagingTypes
.
split
(
","
)));
//新增BC
ProductPriceStepPackagingDO
dbItem
=
ObjectUtil
.
clone
(
item
);
dbItem
.
setId
(
null
);
dbItem
.
setProductPriceId
(
priceStepDO
.
getProductPriceId
());
dbItem
.
setProductPriceStepId
(
priceStepDO
.
getId
());
dbItem
.
setRankNum
(
i
+
1
);
dbItem
.
setDeleted
(
false
);
packagingInsertList
.
add
(
dbItem
);
if
(!
batchUpdate
)
continue
;
for
(
ProductPriceStepPackagingDO
dbStepPacking
:
dbStepPackagingList
)
{
Set
<
String
>
dbPriceTypeSets
=
new
HashSet
<>(
Arrays
.
asList
(
dbStepPacking
.
getPackagingTypes
().
split
(
","
)));
dbPriceTypeSets
.
removeAll
(
addPriceTypeSets
);
if
(
dbPriceTypeSets
.
isEmpty
())
{
packagingDeleteListList
.
add
(
dbStepPacking
);
}
else
{
dbStepPacking
.
setPackagingTypes
(
Joiner
.
on
(
","
).
join
(
dbPriceTypeSets
));
dbStepPacking
.
setPackagingPriceUnit
(
item
.
getPackagingPriceUnit
());
dbStepPacking
.
setPackagingVolumeUnit
(
item
.
getPackagingVolumeUnit
());
packagingUpdateList
.
add
(
dbStepPacking
);
}
}
}
}
}
}
}
if
(
CollectionUtil
.
isNotEmpty
(
packagingInsertList
))
{
productPriceStepPackagingMapper
.
insertBatchSomeColumn
(
packagingInsertList
);
}
if
(
CollectionUtil
.
isNotEmpty
(
packagingUpdateList
))
{
productPriceStepPackagingMapper
.
updateBatch
(
packagingUpdateList
);
}
if
(
CollectionUtil
.
isNotEmpty
(
packagingDeleteListList
))
{
List
<
Long
>
dIdList
=
packagingDeleteListList
.
stream
()
.
map
(
BasePackagingPrice:
:
getId
)
.
collect
(
toList
());
productPriceStepPackagingMapper
.
deleteBatchIds
(
dIdList
);
}
if
(!
batchUpdate
)
{
List
<
Long
>
updateIdList
=
packagingUpdateList
.
stream
()
.
map
(
ProductPriceStepPackagingDO:
:
getId
)
.
collect
(
toList
());
dbPackingIdList
.
removeAll
(
updateIdList
);
if
(
CollectionUtil
.
isNotEmpty
(
dbPackingIdList
))
{
productPriceStepPackagingMapper
.
physicsDeleteById
(
Joiner
.
on
(
","
).
join
(
dbPackingIdList
));
}
}
}
}
private
void
copyStepPrice
(
List
<
ProductPriceStepDO
>
stepList
,
String
transportType
,
ProductPriceDO
productPriceDO
,
Map
<
Long
,
List
<
ProductPriceStepDO
>>
dbStepMap
,
List
<
ProductPriceStepDO
>
insertList1
,
List
<
ProductPricePackagingDO
>
productPricePackagingDOS
,
List
<
ProductPriceStepDO
>
updateList
)
{
private
void
copyStepPrice
(
List
<
ProductPriceStepDO
>
stepList
,
String
transportType
,
ProductPriceDO
productPriceDO
,
Map
<
Long
,
List
<
ProductPriceStepDO
>>
dbStepMap
,
List
<
ProductPriceStepDO
>
insertList1
,
List
<
ProductPricePackagingDO
>
productPricePackagingDOS
,
List
<
ProductPriceStepDO
>
updateList
)
{
...
...
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