记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
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
董敬伟
liquidnet-bus-v1
Commits
3fc7d2f6
Commit
3fc7d2f6
authored
Nov 09, 2022
by
张国柄
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
~api:店铺商品管理:批量导入数据;
parent
8806e550
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
116 additions
and
84 deletions
+116
-84
GoblinStoreMgtGoodsImportService.java
...service/impl/manage/GoblinStoreMgtGoodsImportService.java
+116
-84
No files found.
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/goblin/service/impl/manage/GoblinStoreMgtGoodsImportService.java
View file @
3fc7d2f6
...
@@ -49,13 +49,22 @@ public class GoblinStoreMgtGoodsImportService {
...
@@ -49,13 +49,22 @@ public class GoblinStoreMgtGoodsImportService {
* 大小字母 || 数字
* 大小字母 || 数字
* 长度:0,50
* 长度:0,50
*/
*/
p
ublic
static
final
String
ALPHABET_NUMBER_UNDER_50
=
"^[a-zA-Z0-9]{0,50}$"
;
p
rivate
static
final
String
ALPHABET_NUMBER_UNDER_50
=
"^[a-zA-Z0-9]{0,50}$"
;
/**
/**
* 大小字母 || 数字
* 大小字母 || 数字
* 长度:0,32
* 长度:0,32
*/
*/
public
static
final
String
ALPHABET_NUMBER_32
=
"^[a-zA-Z0-9]{0,32}$"
;
private
static
final
String
ALPHABET_NUMBER_32
=
"^[a-zA-Z0-9]{0,32}$"
;
/**
* 批量导入SPU.SQL队列入库分批处理数量
*/
private
static
final
int
BATCH_COUNT_SPU_SQL_TO_QUEUE
=
10
;
/**
* 批量导入SKU.SQL队列入库分批处理数量
*/
private
static
final
int
BATCH_COUNT_SKU_SQL_TO_QUEUE
=
20
;
private
void
goodsInformationDataAnalysisProcessingValid
(
GoblinGoodsImportDto
dto
,
List
<
String
>
skuBarCodeTmpList
,
Integer
rowNum
)
{
private
void
goodsInformationDataAnalysisProcessingValid
(
GoblinGoodsImportDto
dto
,
List
<
String
>
skuBarCodeTmpList
,
Integer
rowNum
)
{
/* 商品编码校验|------------------------------------------------------------------------------ */
/* 商品编码校验|------------------------------------------------------------------------------ */
...
@@ -98,9 +107,7 @@ public class GoblinStoreMgtGoodsImportService {
...
@@ -98,9 +107,7 @@ public class GoblinStoreMgtGoodsImportService {
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行商品规格信息有误】"
,
rowNum
));
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行商品规格信息有误】"
,
rowNum
));
}
}
String
[]
specArr
=
skuSpec
.
split
(
":"
);
String
[]
specArr
=
skuSpec
.
split
(
":"
);
if
(
ArrayUtils
.
isEmpty
(
specArr
)
||
specArr
.
length
!=
2
if
(
ArrayUtils
.
isEmpty
(
specArr
)
||
specArr
.
length
!=
2
||
specArr
[
0
].
length
()
>
5
||
specArr
[
1
].
length
()
>
40
)
{
||
specArr
[
0
].
length
()
>
5
||
specArr
[
1
].
length
()
>
40
)
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行商品规格信息有误】"
,
rowNum
));
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行商品规格信息有误】"
,
rowNum
));
}
}
...
@@ -155,7 +162,6 @@ public class GoblinStoreMgtGoodsImportService {
...
@@ -155,7 +162,6 @@ public class GoblinStoreMgtGoodsImportService {
List
<
String
>
skuBarCodeTmpList
=
CollectionUtil
.
arrayListString
();
List
<
String
>
skuBarCodeTmpList
=
CollectionUtil
.
arrayListString
();
List
<
GoblinGoodsInfoVo
>
goodsInfoVos
=
ObjectUtil
.
goblinGoodsInfoVoArrayList
();
List
<
GoblinGoodsInfoVo
>
goodsInfoVos
=
ObjectUtil
.
goblinGoodsInfoVoArrayList
();
List
<
GoblinGoodsSkuInfoVo
>
goodsSkuInfoVos
=
ObjectUtil
.
getGoblinGoodsSkuInfoVoArrayList
();
List
<
GoblinGoodsSkuInfoVo
>
goodsSkuInfoVos
=
ObjectUtil
.
getGoblinGoodsSkuInfoVoArrayList
();
LinkedList
<
Object
[]>
initGoodsSkuObjs
=
CollectionUtil
.
linkedListObjectArr
();
EasyExcel
.
read
(
file
.
getInputStream
(),
GoblinGoodsImportDto
.
class
,
new
AnalysisEventListener
<
GoblinGoodsImportDto
>()
{
EasyExcel
.
read
(
file
.
getInputStream
(),
GoblinGoodsImportDto
.
class
,
new
AnalysisEventListener
<
GoblinGoodsImportDto
>()
{
...
@@ -186,8 +192,7 @@ public class GoblinStoreMgtGoodsImportService {
...
@@ -186,8 +192,7 @@ public class GoblinStoreMgtGoodsImportService {
goodsInformationDataAnalysisProcessingValid
(
dto
,
skuBarCodeTmpList
,
rowIndex
+
1
);
goodsInformationDataAnalysisProcessingValid
(
dto
,
skuBarCodeTmpList
,
rowIndex
+
1
);
GoblinGoodsInfoVo
lastGoodsInfoVo
=
CollectionUtils
.
isEmpty
(
goodsInfoVos
)
?
null
:
goodsInfoVos
.
get
(
goodsInfoVos
.
size
()
-
1
);
GoblinGoodsInfoVo
lastGoodsInfoVo
=
CollectionUtils
.
isEmpty
(
goodsInfoVos
)
?
null
:
goodsInfoVos
.
get
(
goodsInfoVos
.
size
()
-
1
);
GoblinGoodsInfoVo
goodsInfoVo
=
goodsInformationDataAnalysisProcessingForSpu
(
dto
,
lastGoodsInfoVo
,
uid
,
storeId
,
GoblinGoodsInfoVo
goodsInfoVo
=
goodsInformationDataAnalysisProcessingForSpu
(
dto
,
lastGoodsInfoVo
,
uid
,
storeId
,
LocalDateTime
.
now
(),
goodsSkuInfoVos
);
LocalDateTime
.
now
(),
goodsSkuInfoVos
,
initGoodsSkuObjs
);
if
(
null
!=
goodsInfoVo
)
{
if
(
null
!=
goodsInfoVo
)
{
log
.
debug
(
"dt2:{}"
,
goodsInfoVo
);
log
.
debug
(
"dt2:{}"
,
goodsInfoVo
);
...
@@ -208,32 +213,70 @@ public class GoblinStoreMgtGoodsImportService {
...
@@ -208,32 +213,70 @@ public class GoblinStoreMgtGoodsImportService {
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"规格条码与已添加商品条码重复,重复条码如下: %s"
,
StringUtils
.
join
(
existGoodsSkuNoList
,
","
)));
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"规格条码与已添加商品条码重复,重复条码如下: %s"
,
StringUtils
.
join
(
existGoodsSkuNoList
,
","
)));
}
}
// goblinMongoUtils.insertMgtGoodsInfoVos(goodsInfoVos);
goblinMongoUtils
.
insertMgtGoodsInfoVos
(
goodsInfoVos
);
// goblinMongoUtils.insertMgtGoodsSkuInfoVos(goodsSkuInfoVos);
goblinMongoUtils
.
insertMgtGoodsSkuInfoVos
(
goodsSkuInfoVos
);
// goodsSkuInfoVos.forEach(r -> goblinRedisUtils.setSkuStock(null, r.getSkuId(), r.getSkuStock()));
//
LinkedList
<
String
>
toMqSqls
=
CollectionUtil
.
linkedListString
();
// LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
toMqSqls
.
add
(
SqlMapping
.
get
(
"goblin_goods.insert"
));
// toMqSqls.add(SqlMapping.get("goblin_goods.insert"));
LinkedList
<
Object
[]>
initGoodsObjs
=
CollectionUtil
.
linkedListObjectArr
();
// LinkedList<Object[]> initGoodsObjs = CollectionUtil.linkedListObjectArr();
toMqSqls
.
add
(
SqlMapping
.
get
(
"goblin_goods_image.insert_byreplace"
));
// SPU图片
// goodsInfoVos.forEach(r -> initGoodsObjs.add(new Object[]{
LinkedList
<
Object
[]>
initGoodsImageObjs
=
CollectionUtil
.
linkedListObjectArr
();
// r.getSpuId(), r.getSpuNo(), r.getName(), r.getSubtitle(), r.getSellPrice(),
toMqSqls
.
add
(
SqlMapping
.
get
(
"goblin_goods_spu_spec_value.insert_byreplace"
));
// SPU规格信息
// r.getPriceGe(), r.getPriceLe(), r.getIntro(), r.getDetails(), r.getCoverPic(),
LinkedList
<
Object
[]>
initGoodsSpuSpecValueObjs
=
CollectionUtil
.
linkedListObjectArr
();
// r.getVideo(), r.getSpecMode(), r.getStoreId(), r.getCateFid(), r.getCateSid(),
for
(
int
i
=
0
,
size
=
goodsInfoVos
.
size
();
i
<
size
;
i
++)
{
// r.getCateTid(), r.getStoreCateFid(), r.getStoreCateSid(), r.getStoreCateTid(), r.getBrandId(),
GoblinGoodsInfoVo
goodsInfoVo
=
goodsInfoVos
.
get
(
i
);
// r.getShelvesHandle(), r.getShelvesTime(), r.getSpuValidity(), r.getVirtualFlg(), r.getStatus(),
initGoodsObjs
.
add
(
new
Object
[]{
goodsInfoVo
.
getSpuId
(),
goodsInfoVo
.
getSpuNo
(),
goodsInfoVo
.
getName
(),
goodsInfoVo
.
getSubtitle
(),
goodsInfoVo
.
getSellPrice
(),
goodsInfoVo
.
getPriceGe
(),
goodsInfoVo
.
getPriceLe
(),
goodsInfoVo
.
getIntro
(),
goodsInfoVo
.
getDetails
(),
goodsInfoVo
.
getCoverPic
(),
goodsInfoVo
.
getVideo
(),
goodsInfoVo
.
getSpecMode
(),
goodsInfoVo
.
getStoreId
(),
goodsInfoVo
.
getCateFid
(),
goodsInfoVo
.
getCateSid
(),
goodsInfoVo
.
getCateTid
(),
goodsInfoVo
.
getStoreCateFid
(),
goodsInfoVo
.
getStoreCateSid
(),
goodsInfoVo
.
getStoreCateTid
(),
goodsInfoVo
.
getBrandId
(),
goodsInfoVo
.
getShelvesHandle
(),
goodsInfoVo
.
getShelvesTime
(),
goodsInfoVo
.
getSpuValidity
(),
goodsInfoVo
.
getVirtualFlg
(),
goodsInfoVo
.
getStatus
(),
goodsInfoVo
.
getShelvesStatus
(),
goodsInfoVo
.
getSpuAppear
(),
goodsInfoVo
.
getShelvesAt
(),
goodsInfoVo
.
getCreatedBy
(),
goodsInfoVo
.
getCreatedAt
(),
goodsInfoVo
.
getLogisticsTemplate
()});
// r.getShelvesStatus(), r.getSpuAppear(), r.getShelvesAt(), r.getCreatedBy(), r.getCreatedAt(),
if
(!
CollectionUtils
.
isEmpty
(
goodsInfoVo
.
getImageList
()))
{
// r.getLogisticsTemplate()
goodsInfoVo
.
getImageList
().
forEach
(
imageUrl
->
initGoodsImageObjs
.
add
(
new
Object
[]{
goodsInfoVo
.
getSpuId
(),
imageUrl
}));
// }));
}
// toMqSqls.add(SqlMapping.get("goblin_goods_sku.insert"));
goodsInfoVo
.
getSpecVoList
().
forEach
(
specVo
->
{
// queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_GOODS.getKey(), SqlMapping.gets(toMqSqls, initGoodsObjs, initGoodsSkuObjs));
specVo
.
getSpecValues
().
forEach
(
specValues
->
{
}
initGoodsSpuSpecValueObjs
.
add
(
new
Object
[]{
goodsInfoVo
.
getSpuId
(),
specVo
.
getSpecName
(),
specValues
.
getSpecVname
(),
specValues
.
getSpecVsort
()});
}
});
).
sheet
(
0
).
doReadSync
();
});
}
if
(
initGoodsObjs
.
size
()
==
BATCH_COUNT_SPU_SQL_TO_QUEUE
)
{
queueUtils
.
sendMsgByRedis
(
MQConst
.
GoblinQueue
.
SQL_GOODS
.
getKey
(),
SqlMapping
.
gets
(
toMqSqls
,
initGoodsObjs
,
initGoodsImageObjs
,
initGoodsSpuSpecValueObjs
));
private
GoblinGoodsInfoVo
goodsInformationDataAnalysisProcessingForSpu
(
GoblinGoodsImportDto
dt
,
GoblinGoodsInfoVo
lastGoodsInfoVo
,
initGoodsObjs
.
clear
();
String
uid
,
String
storeId
,
LocalDateTime
now
,
initGoodsImageObjs
.
clear
();
List
<
GoblinGoodsSkuInfoVo
>
goodsSkuInfoVos
,
LinkedList
<
Object
[]>
initGoodsSkuObjs
)
{
initGoodsSpuSpecValueObjs
.
clear
();
}
}
if
(
initGoodsObjs
.
size
()
>
0
)
{
queueUtils
.
sendMsgByRedis
(
MQConst
.
GoblinQueue
.
SQL_GOODS
.
getKey
(),
SqlMapping
.
gets
(
toMqSqls
,
initGoodsObjs
,
initGoodsImageObjs
,
initGoodsSpuSpecValueObjs
));
}
toMqSqls
.
clear
();
toMqSqls
.
add
(
SqlMapping
.
get
(
"goblin_goods_sku.insert"
));
LinkedList
<
Object
[]>
initGoodsSkuObjs
=
CollectionUtil
.
linkedListObjectArr
();
toMqSqls
.
add
(
SqlMapping
.
get
(
"goblin_goods_sku_spec_value.insert_byreplace"
));
// SKU规格信息
LinkedList
<
Object
[]>
initGoodsSkuSpecValueObjs
=
CollectionUtil
.
linkedListObjectArr
();
goodsSkuInfoVos
.
forEach
(
goodsSkuInfoVo
->
{
goblinRedisUtils
.
setSkuStock
(
null
,
goodsSkuInfoVo
.
getSkuId
(),
goodsSkuInfoVo
.
getSkuStock
());
initGoodsSkuObjs
.
add
(
new
Object
[]{
goodsSkuInfoVo
.
getSkuId
(),
goodsSkuInfoVo
.
getSpuId
(),
goodsSkuInfoVo
.
getSkuNo
(),
goodsSkuInfoVo
.
getName
(),
goodsSkuInfoVo
.
getSubtitle
(),
goodsSkuInfoVo
.
getSellPrice
(),
goodsSkuInfoVo
.
getSkuPic
(),
goodsSkuInfoVo
.
getSkuIsbn
(),
goodsSkuInfoVo
.
getStock
(),
goodsSkuInfoVo
.
getSkuStock
(),
goodsSkuInfoVo
.
getWarningStock
(),
goodsSkuInfoVo
.
getPrice
(),
goodsSkuInfoVo
.
getPriceMember
(),
goodsSkuInfoVo
.
getWeight
(),
goodsSkuInfoVo
.
getBuyFactor
(),
goodsSkuInfoVo
.
getBuyRoster
(),
goodsSkuInfoVo
.
getBuyLimit
(),
goodsSkuInfoVo
.
getStoreId
(),
goodsSkuInfoVo
.
getSkuValidity
(),
goodsSkuInfoVo
.
getVirtualFlg
(),
goodsSkuInfoVo
.
getStatus
(),
goodsSkuInfoVo
.
getShelvesStatus
(),
goodsSkuInfoVo
.
getSkuAppear
(),
goodsSkuInfoVo
.
getShelvesAt
(),
uid
,
goodsSkuInfoVo
.
getCreatedAt
(),
goodsSkuInfoVo
.
getLogisticsTemplate
()
});
goodsSkuInfoVo
.
getSkuSpecList
().
forEach
(
skuSpecDto
->
initGoodsSkuSpecValueObjs
.
add
(
new
Object
[]{
goodsSkuInfoVo
.
getSpuId
(),
goodsSkuInfoVo
.
getSkuId
(),
skuSpecDto
.
getSpecName
(),
skuSpecDto
.
getSpecVname
()
}));
if
(
initGoodsSkuObjs
.
size
()
==
BATCH_COUNT_SKU_SQL_TO_QUEUE
)
{
queueUtils
.
sendMsgByRedis
(
MQConst
.
GoblinQueue
.
SQL_GOODS
.
getKey
(),
SqlMapping
.
gets
(
toMqSqls
,
initGoodsSkuObjs
,
initGoodsSkuSpecValueObjs
));
initGoodsSkuObjs
.
clear
();
initGoodsSkuSpecValueObjs
.
clear
();
}
});
if
(
initGoodsSkuObjs
.
size
()
>
0
)
{
queueUtils
.
sendMsgByRedis
(
MQConst
.
GoblinQueue
.
SQL_GOODS
.
getKey
(),
SqlMapping
.
gets
(
toMqSqls
,
initGoodsSkuObjs
,
initGoodsSkuSpecValueObjs
));
}
}
}).
sheet
(
0
).
doReadSync
();
}
private
GoblinGoodsInfoVo
goodsInformationDataAnalysisProcessingForSpu
(
GoblinGoodsImportDto
dt
,
GoblinGoodsInfoVo
lastGoodsInfoVo
,
String
uid
,
String
storeId
,
LocalDateTime
now
,
List
<
GoblinGoodsSkuInfoVo
>
goodsSkuInfoVos
)
{
log
.
debug
(
"dt1:{}"
,
dt
.
toString
());
log
.
debug
(
"dt1:{}"
,
dt
.
toString
());
boolean
tobeNextSpuFlg
=
false
;
boolean
tobeNextSpuFlg
=
false
;
...
@@ -275,20 +318,11 @@ public class GoblinStoreMgtGoodsImportService {
...
@@ -275,20 +318,11 @@ public class GoblinStoreMgtGoodsImportService {
GoblinGoodsSkuInfoVo
lastGoodsSkuInfoVo
=
this
.
goodsInformationDataAnalysisProcessingForSku
(
dt
,
lastGoodsInfoVo
,
uid
,
storeId
,
now
,
tobeNextSpuFlg
);
GoblinGoodsSkuInfoVo
lastGoodsSkuInfoVo
=
this
.
goodsInformationDataAnalysisProcessingForSku
(
dt
,
lastGoodsInfoVo
,
uid
,
storeId
,
now
,
tobeNextSpuFlg
);
if
(
null
!=
lastGoodsSkuInfoVo
)
{
if
(
null
!=
lastGoodsSkuInfoVo
)
{
goodsSkuInfoVos
.
add
(
lastGoodsSkuInfoVo
);
goodsSkuInfoVos
.
add
(
lastGoodsSkuInfoVo
);
initGoodsSkuObjs
.
add
(
new
Object
[]{
lastGoodsSkuInfoVo
.
getSkuId
(),
lastGoodsSkuInfoVo
.
getSpuId
(),
lastGoodsSkuInfoVo
.
getSkuNo
(),
lastGoodsSkuInfoVo
.
getName
(),
lastGoodsSkuInfoVo
.
getSubtitle
(),
lastGoodsSkuInfoVo
.
getSellPrice
(),
lastGoodsSkuInfoVo
.
getSkuPic
(),
lastGoodsSkuInfoVo
.
getSkuIsbn
(),
lastGoodsSkuInfoVo
.
getStock
(),
lastGoodsSkuInfoVo
.
getSkuStock
(),
lastGoodsSkuInfoVo
.
getWarningStock
(),
lastGoodsSkuInfoVo
.
getPrice
(),
lastGoodsSkuInfoVo
.
getPriceMember
(),
lastGoodsSkuInfoVo
.
getWeight
(),
lastGoodsSkuInfoVo
.
getBuyFactor
(),
lastGoodsSkuInfoVo
.
getBuyRoster
(),
lastGoodsSkuInfoVo
.
getBuyLimit
(),
lastGoodsSkuInfoVo
.
getStoreId
(),
lastGoodsSkuInfoVo
.
getSkuValidity
(),
lastGoodsSkuInfoVo
.
getVirtualFlg
(),
lastGoodsSkuInfoVo
.
getStatus
(),
lastGoodsSkuInfoVo
.
getShelvesStatus
(),
lastGoodsSkuInfoVo
.
getSkuAppear
(),
lastGoodsSkuInfoVo
.
getShelvesAt
(),
uid
,
now
,
lastGoodsSkuInfoVo
.
getLogisticsTemplate
()
});
}
}
return
tobeNextSpuFlg
?
lastGoodsInfoVo
:
null
;
return
tobeNextSpuFlg
?
lastGoodsInfoVo
:
null
;
}
}
private
GoblinGoodsSkuInfoVo
goodsInformationDataAnalysisProcessingForSku
(
GoblinGoodsImportDto
dt
,
GoblinGoodsInfoVo
lastGoodsInfoVo
,
private
GoblinGoodsSkuInfoVo
goodsInformationDataAnalysisProcessingForSku
(
GoblinGoodsImportDto
dt
,
GoblinGoodsInfoVo
lastGoodsInfoVo
,
String
uid
,
String
storeId
,
LocalDateTime
now
,
boolean
tobeNextSpuFlg
)
{
String
uid
,
String
storeId
,
LocalDateTime
now
,
boolean
tobeNextSpuFlg
)
{
GoblinGoodsSkuInfoVo
skuInfoVo
=
GoblinGoodsSkuInfoVo
.
getNew
();
GoblinGoodsSkuInfoVo
skuInfoVo
=
GoblinGoodsSkuInfoVo
.
getNew
();
skuInfoVo
.
setName
(
""
);
skuInfoVo
.
setName
(
""
);
...
@@ -312,9 +346,7 @@ public class GoblinStoreMgtGoodsImportService {
...
@@ -312,9 +346,7 @@ public class GoblinStoreMgtGoodsImportService {
List
<
GoblinGoodsSpecValueVo
>
spuSpecValueVos
=
spuSpecVo
.
getSpecValues
();
List
<
GoblinGoodsSpecValueVo
>
spuSpecValueVos
=
spuSpecVo
.
getSpecValues
();
Optional
<
GoblinGoodsSpecValueVo
>
any
=
spuSpecValueVos
.
stream
().
filter
(
r
->
r
.
getSpecVname
().
equals
(
skuSpecDto
.
getSpecVname
())).
findAny
();
Optional
<
GoblinGoodsSpecValueVo
>
any
=
spuSpecValueVos
.
stream
().
filter
(
r
->
r
.
getSpecVname
().
equals
(
skuSpecDto
.
getSpecVname
())).
findAny
();
if
(!
any
.
isPresent
())
{
if
(!
any
.
isPresent
())
{
spuSpecValueVos
.
add
(
spuSpecValueVos
.
add
(
GoblinGoodsSpecValueVo
.
getNew
().
setSpecVname
(
skuSpecDto
.
getSpecVname
()).
setSpecVsort
(
lastGoodsInfoVo
.
getSkuIdList
().
size
()
+
1
));
GoblinGoodsSpecValueVo
.
getNew
().
setSpecVname
(
skuSpecDto
.
getSpecVname
()).
setSpecVsort
(
lastGoodsInfoVo
.
getSkuIdList
().
size
()
+
1
)
);
spuSpecVo
.
setSpecValues
(
spuSpecValueVos
);
spuSpecVo
.
setSpecValues
(
spuSpecValueVos
);
}
}
}
else
{
// 不匹配的规格直接跳过(默认只匹配商品第一行数据中的规格项)
}
else
{
// 不匹配的规格直接跳过(默认只匹配商品第一行数据中的规格项)
...
...
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