记得上下班打卡 | 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
9a399fde
Commit
9a399fde
authored
Nov 11, 2022
by
张国柄
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
~api:导入:模板/校验调整;
parent
21b819ad
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
177 additions
and
146 deletions
+177
-146
GoblinStoreMgtGoodsImportService.java
...service/impl/manage/GoblinStoreMgtGoodsImportService.java
+177
-146
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 @
9a399fde
...
@@ -54,107 +54,18 @@ public class GoblinStoreMgtGoodsImportService {
...
@@ -54,107 +54,18 @@ public class GoblinStoreMgtGoodsImportService {
* 批量导入SKU.SQL队列入库分批处理数量
* 批量导入SKU.SQL队列入库分批处理数量
*/
*/
private
static
final
int
BATCH_COUNT_SKU_SQL_TO_QUEUE
=
20
;
private
static
final
int
BATCH_COUNT_SKU_SQL_TO_QUEUE
=
20
;
/**
private
void
goodsInformationDataAnalysisProcessingValid
(
GoblinGoodsImportDto
dto
,
List
<
String
>
skuBarCodeTmpList
,
Integer
rowNum
)
{
* 缓存记录同一个SPU下SKU规格值
/* 商品编码校验|------------------------------------------------------------------------------ */
*/
if
(
StringUtils
.
isNotEmpty
(
dto
.
getSpuCode
())
&&
!
Pattern
.
matches
(
LnsRegex
.
Valid
.
ALPHABET_NUMBER_UNDER_50
,
dto
.
getSpuCode
()))
{
private
static
final
String
LAST_SKU_SPEC_VALUE_STR
=
"%#V1%#V2%#V3%#V4%#V5"
;
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行商品编码有误】"
,
rowNum
));
}
/* 商品名称校验|------------------------------------------------------------------------------ */
if
(
StringUtils
.
isEmpty
(
dto
.
getSpuName
())
||
dto
.
getSpuName
().
length
()
>
30
)
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行商品名称有误】"
,
rowNum
));
}
/* 商品图片校验|------------------------------------------------------------------------------ */
if
(
StringUtils
.
isNotEmpty
(
dto
.
getSpuImgs
()))
{
if
(
dto
.
getSpuImgs
().
startsWith
(
"【图片链接】"
))
{
String
[]
spuImgsArr
=
dto
.
getSpuImgs
().
replace
(
"【图片链接】"
,
""
).
replace
(
";"
,
";"
).
split
(
";"
);
if
(
spuImgsArr
.
length
>
9
)
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行商品图片最多支持15张】"
,
rowNum
));
}
ArrayList
<
String
>
spuImgList
=
CollectionUtil
.
arrayListString
();
for
(
String
spuImg
:
spuImgsArr
)
{
if
(
StringUtils
.
isNotBlank
(
spuImg
))
{
spuImgList
.
add
(
spuImg
);
}
}
if
(!
CollectionUtils
.
isEmpty
(
spuImgList
))
{
dto
.
setSpuImgList
(
spuImgList
);
}
}
else
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行商品图片格式有误】"
,
rowNum
));
}
}
/* 商品规格校验|------------------------------------------------------------------------------ */
if
(
StringUtils
.
isEmpty
(
dto
.
getSkuSpec
()))
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行商品规格信息缺失】"
,
rowNum
));
}
String
[]
skuSpecArr
=
dto
.
getSkuSpec
().
replace
(
":"
,
":"
).
replace
(
";"
,
";"
).
split
(
";"
);
List
<
GoblinGoodsSpecDto
>
skuSpecDtos
=
ObjectUtil
.
getGoblinGoodsSpecDtoArrayList
();
for
(
int
i
=
0
,
size
=
skuSpecArr
.
length
;
i
<
size
;
i
++)
{
String
skuSpec
=
skuSpecArr
[
i
];
if
(
StringUtils
.
isEmpty
(
skuSpec
))
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行商品规格信息有误】"
,
rowNum
));
}
String
[]
specArr
=
skuSpec
.
split
(
":"
);
if
(
ArrayUtils
.
isEmpty
(
specArr
)
||
specArr
.
length
!=
2
||
specArr
[
0
].
length
()
>
5
||
specArr
[
1
].
length
()
>
40
)
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行商品规格信息有误】"
,
rowNum
));
}
if
(
skuSpecDtos
.
size
()
>
5
)
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行商品规格项超出5个】"
,
rowNum
));
}
GoblinGoodsSpecDto
skuSpecDto
=
GoblinGoodsSpecDto
.
getNew
();
skuSpecDto
.
setSpecName
(
specArr
[
0
]);
skuSpecDto
.
setSpecVname
(
specArr
[
1
]);
skuSpecDtos
.
add
(
skuSpecDto
);
}
dto
.
setSkuSpecDtos
(
skuSpecDtos
);
/* 规格编码校验|------------------------------------------------------------------------------ */
if
(
StringUtils
.
isNotEmpty
(
dto
.
getSkuCode
())
&&
!
Pattern
.
matches
(
LnsRegex
.
Valid
.
ALPHABET_NUMBER_UNDER_50
,
dto
.
getSkuCode
()))
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行规格编码格式有误】"
,
rowNum
));
}
/* 价格校验|------------------------------------------------------------------------------ */
if
(
null
==
dto
.
getPrice
()
||
dto
.
getPrice
().
compareTo
(
BigDecimal
.
valueOf
(
0.01
))
<
0
||
dto
.
getPrice
().
compareTo
(
BigDecimal
.
valueOf
(
9999999
))
>
0
)
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行价格信息有误】"
,
rowNum
));
}
/* 库存校验|------------------------------------------------------------------------------ */
if
(
null
==
dto
.
getStock
()
||
dto
.
getStock
()
<
0
||
dto
.
getStock
()
>
9999999
)
{
// 数据不规范停止解析并提示用户
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行库存信息有误】"
,
rowNum
));
}
/* 规格图片校验|------------------------------------------------------------------------------ */
if
(
StringUtils
.
isNotEmpty
(
dto
.
getSkuImg
()))
{
if
(
dto
.
getSkuImg
().
startsWith
(
"【图片链接】"
))
{
String
[]
skuImgArr
=
dto
.
getSkuImg
().
replace
(
"【图片链接】"
,
""
).
replace
(
";"
,
";"
).
split
(
";"
);
if
(
skuImgArr
.
length
==
1
)
{
dto
.
setSkuImg
(
StringUtils
.
isNotBlank
(
skuImgArr
[
0
])
?
skuImgArr
[
0
]
:
null
);
}
else
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行规格图片仅支持1张】"
,
rowNum
));
}
}
else
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行规格图片格式有误】"
,
rowNum
));
}
}
/* 规格条码校验|------------------------------------------------------------------------------ */
if
(
StringUtils
.
isNotEmpty
(
dto
.
getSkuBarCode
()))
{
if
(
Pattern
.
matches
(
LnsRegex
.
Valid
.
ALPHABET_NUMBER_32
,
dto
.
getSkuBarCode
()))
{
// if (skuBarCodeTmpList.contains(dto.getSkuBarCode())) {
// throw new LiquidnetServiceException("-1", String.format("数据内容不规范【第%s行表格内规格条码重复】", rowNum));
// }
// skuBarCodeTmpList.add(dto.getSkuBarCode());
}
else
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行规格条码格式有误】"
,
rowNum
));
}
}
/* 校验|------------------------------------------------------------------------------ */
/* 校验|------------------------------------------------------------------------------ */
/* 校验|------------------------------------------------------------------------------ */
}
public
String
goodsInformationDataAnalysisProcessing
(
MultipartFile
file
,
String
uid
,
String
storeId
)
throws
IOException
{
public
String
goodsInformationDataAnalysisProcessing
(
MultipartFile
file
,
String
uid
,
String
storeId
)
throws
IOException
{
AnalysisEventListener
<
GoblinGoodsImportDto
>
analysisEventListener
=
new
AnalysisEventListener
<
GoblinGoodsImportDto
>()
{
AnalysisEventListener
<
GoblinGoodsImportDto
>
analysisEventListener
=
new
AnalysisEventListener
<
GoblinGoodsImportDto
>()
{
List
<
GoblinGoodsSkuInfoVo
>
goodsSkuInfoVos
;
List
<
GoblinGoodsSkuInfoVo
>
goodsSkuInfoVos
;
List
<
GoblinGoodsInfoVo
>
goodsInfoVos
;
List
<
GoblinGoodsInfoVo
>
goodsInfoVos
;
List
<
String
>
skuBarCodeTmpList
;
List
<
String
>
dtoSkuBarCodeTmpList
;
List
<
String
>
dtoSpuSpecNameTmpList
;
List
<
String
>
dtoSkuSpecValueTmpList
;
LocalDateTime
now
;
LocalDateTime
now
;
@Override
@Override
...
@@ -179,26 +90,40 @@ public class GoblinStoreMgtGoodsImportService {
...
@@ -179,26 +90,40 @@ public class GoblinStoreMgtGoodsImportService {
goodsSkuInfoVos
=
ObjectUtil
.
getGoblinGoodsSkuInfoVoArrayList
();
goodsSkuInfoVos
=
ObjectUtil
.
getGoblinGoodsSkuInfoVoArrayList
();
goodsInfoVos
=
ObjectUtil
.
goblinGoodsInfoVoArrayList
();
goodsInfoVos
=
ObjectUtil
.
goblinGoodsInfoVoArrayList
();
skuBarCodeTmpList
=
CollectionUtil
.
arrayListString
();
// skuBarCodeTmpList = CollectionUtil.arrayListString();
dtoSpuSpecNameTmpList
=
CollectionUtil
.
arrayListString
();
dtoSkuSpecValueTmpList
=
CollectionUtil
.
arrayListString
();
now
=
LocalDateTime
.
now
();
now
=
LocalDateTime
.
now
();
super
.
invokeHead
(
headMap
,
context
);
super
.
invokeHead
(
headMap
,
context
);
}
}
@Override
@Override
public
void
invoke
(
GoblinGoodsImportDto
dto
,
AnalysisContext
analysisContext
)
{
public
void
invoke
(
GoblinGoodsImportDto
dto
,
AnalysisContext
analysisContext
)
{
if
(
log
.
isDebugEnabled
())
{
log
.
debug
(
"dt1:{}"
,
dto
.
toString
());
}
Integer
rowIndex
=
analysisContext
.
readRowHolder
().
getRowIndex
();
Integer
rowIndex
=
analysisContext
.
readRowHolder
().
getRowIndex
();
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
,
now
,
goodsSkuInfoVos
);
boolean
tobeNextSpuFlg
=
null
==
lastGoodsInfoVo
||
!
lastGoodsInfoVo
.
getName
().
equals
(
dto
.
getSpuName
()
);
if
(
null
!=
goodsInfoVo
)
{
goodsInformationDataAnalysisProcessingValid
(
dto
,
rowIndex
+
1
,
tobeNextSpuFlg
,
dtoSpuSpecNameTmpList
,
dtoSkuSpecValueTmpList
,
dtoSkuBarCodeTmpList
);
if
(
tobeNextSpuFlg
)
{
lastGoodsInfoVo
=
goodsInformationDataAnalysisProcessingForSpu
(
dto
,
uid
,
storeId
,
now
);
if
(
log
.
isDebugEnabled
())
{
if
(
log
.
isDebugEnabled
())
{
log
.
debug
(
"dt2:{}"
,
g
oodsInfoVo
);
log
.
debug
(
"dt2:{}"
,
lastG
oodsInfoVo
);
}
}
goodsInfoVos
.
add
(
goodsInfoVo
);
goodsInfoVos
.
add
(
lastGoodsInfoVo
);
}
GoblinGoodsSkuInfoVo
lastGoodsSkuInfoVo
=
goodsInformationDataAnalysisProcessingForSku
(
dto
,
lastGoodsInfoVo
,
tobeNextSpuFlg
);
if
(
null
!=
lastGoodsSkuInfoVo
)
{
goodsSkuInfoVos
.
add
(
lastGoodsSkuInfoVo
);
}
else
{
log
.
warn
(
"DT-IN:[storeId={},uid={},fileName={},skipRow:{},rowContent:{}]"
,
uid
,
storeId
,
file
.
getOriginalFilename
(),
rowIndex
,
dto
);
}
}
dto
.
setSkuSpecDtos
(
null
);
dto
.
setSkuSpecDtos
(
null
);
dto
.
setSpuImgList
(
null
);
dto
.
setSpuImgList
(
null
);
}
}
...
@@ -301,56 +226,163 @@ public class GoblinStoreMgtGoodsImportService {
...
@@ -301,56 +226,163 @@ public class GoblinStoreMgtGoodsImportService {
return
analysisResultMsg
;
return
analysisResultMsg
;
}
}
private
GoblinGoodsInfoVo
goodsInformationDataAnalysisProcessingForSpu
(
GoblinGoodsImportDto
dt
,
GoblinGoodsInfoVo
lastGoodsInfoVo
,
String
uid
,
String
storeId
,
LocalDateTime
now
,
List
<
GoblinGoodsSkuInfoVo
>
goodsSkuInfoVos
)
{
private
void
goodsInformationDataAnalysisProcessingValid
(
GoblinGoodsImportDto
dto
,
Integer
rowNum
,
boolean
tobeNextSpuFlg
,
if
(
log
.
isDebugEnabled
())
{
List
<
String
>
dtoSpuSpecNameTmpList
,
List
<
String
>
dtoSkuSpecValueTmpList
,
List
<
String
>
dtoSkuBarCodeTmpList
)
{
log
.
debug
(
"dt1:{}"
,
dt
.
toString
());
/* 商品编码校验|------------------------------------------------------------------------------ */
if
(
StringUtils
.
isNotEmpty
(
dto
.
getSpuCode
())
&&
!
Pattern
.
matches
(
LnsRegex
.
Valid
.
ALPHABET_NUMBER_UNDER_50
,
dto
.
getSpuCode
()))
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行商品编码有误】"
,
rowNum
));
}
}
/* 商品名称校验|------------------------------------------------------------------------------ */
boolean
tobeNextSpuFlg
=
false
;
if
(
StringUtils
.
isEmpty
(
dto
.
getSpuName
())
||
dto
.
getSpuName
().
length
()
>
30
)
{
if
(
null
==
lastGoodsInfoVo
||
!
lastGoodsInfoVo
.
getName
().
equals
(
dt
.
getSpuName
()))
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行商品名称有误】"
,
rowNum
));
lastGoodsInfoVo
=
GoblinGoodsInfoVo
.
getNew
();
tobeNextSpuFlg
=
true
;
}
}
/* 商品图片校验|------------------------------------------------------------------------------ */
if
(
StringUtils
.
isNotEmpty
(
dto
.
getSpuImgs
()))
{
if
(
dto
.
getSpuImgs
().
startsWith
(
"【图片链接】"
))
{
String
[]
spuImgsArr
=
dto
.
getSpuImgs
().
replace
(
"【图片链接】"
,
""
).
replace
(
";"
,
";"
).
split
(
";"
);
if
(
spuImgsArr
.
length
>
9
)
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行商品图片最多支持15张】"
,
rowNum
));
}
ArrayList
<
String
>
spuImgList
=
CollectionUtil
.
arrayListString
();
for
(
String
spuImg
:
spuImgsArr
)
{
if
(
StringUtils
.
isNotBlank
(
spuImg
))
{
spuImgList
.
add
(
spuImg
);
}
}
if
(!
CollectionUtils
.
isEmpty
(
spuImgList
))
{
dto
.
setSpuImgList
(
spuImgList
);
}
}
else
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行商品图片格式有误】"
,
rowNum
));
}
}
/* 商品规格校验|------------------------------------------------------------------------------ */
if
(
StringUtils
.
isEmpty
(
dto
.
getSkuSpec
()))
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行商品规格信息缺失】"
,
rowNum
));
}
String
skuSpecStr
=
dto
.
getSkuSpec
().
replace
(
":"
,
":"
).
replace
(
";"
,
";"
);
if
(
tobeNextSpuFlg
)
{
if
(
tobeNextSpuFlg
)
{
lastGoodsInfoVo
.
setName
(
dt
.
getSpuName
());
//*
dtoSpuSpecNameTmpList
.
clear
();
lastGoodsInfoVo
.
setSpuId
(
IDGenerator
.
nextMilliId2
());
//*
dtoSkuSpecValueTmpList
.
clear
();
if
(
StringUtils
.
isNotEmpty
(
dt
.
getSpuCode
()))
{
}
lastGoodsInfoVo
.
setSpuNo
(
dt
.
getSpuCode
());
String
lastSkuSpecValueStr
=
LAST_SKU_SPEC_VALUE_STR
;
String
[]
lastSkuSpecStrArr
=
skuSpecStr
.
split
(
";"
);
if
(
lastSkuSpecStrArr
.
length
>
5
)
{
// 分割开的规格项数量超限
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行商品规格项超出5个】"
,
rowNum
));
}
List
<
GoblinGoodsSpecDto
>
skuSpecDtos
=
ObjectUtil
.
getGoblinGoodsSpecDtoArrayList
();
for
(
int
i
=
0
,
size
=
lastSkuSpecStrArr
.
length
;
i
<
size
;
i
++)
{
String
lastSkuSpecStr
=
lastSkuSpecStrArr
[
i
];
if
(
StringUtils
.
isEmpty
(
lastSkuSpecStr
))
{
// 分割出的规格信息为空
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行商品规格信息无效】"
,
rowNum
));
}
String
[]
lastSpecArr
=
lastSkuSpecStr
.
split
(
":"
);
if
(
ArrayUtils
.
isEmpty
(
lastSpecArr
)
||
lastSpecArr
.
length
!=
2
||
lastSpecArr
[
0
].
length
()
>
5
||
lastSpecArr
[
1
].
length
()
>
40
)
{
// 分割出的规格(项:值)内容不规范
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行商品规格信息有误】"
,
rowNum
));
}
if
(
tobeNextSpuFlg
)
{
dtoSpuSpecNameTmpList
.
add
(
lastSpecArr
[
0
]);
lastSkuSpecValueStr
=
lastSkuSpecValueStr
.
replace
(
"%#V"
+
(
i
+
1
),
lastSpecArr
[
1
]);
}
else
{
}
else
{
lastGoodsInfoVo
.
setSpuNo
(
lastGoodsInfoVo
.
getSpuId
());
if
(
lastSkuSpecStrArr
.
length
!=
dtoSpuSpecNameTmpList
.
size
())
{
// 规格数量与SPU规格数量不一致
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行商品规格数量不一致】"
,
rowNum
));
}
int
tempSpuSpecIdx
=
dtoSpuSpecNameTmpList
.
indexOf
(
lastSpecArr
[
0
]);
if
(
tempSpuSpecIdx
<
0
)
{
// 规格项在SPU中不存在
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行商品规格项不一致】"
,
rowNum
));
}
lastSkuSpecValueStr
=
lastSkuSpecValueStr
.
replace
(
"%#V"
+
(
tempSpuSpecIdx
+
1
),
lastSpecArr
[
1
]);
}
}
// if (StringUtils.isNotEmpty(dt.getSpuBarCode())) {
// lastGoodsInfoVo.setSpuBarCode(dt.getSpuBarCode());
GoblinGoodsSpecDto
skuSpecDto
=
GoblinGoodsSpecDto
.
getNew
();
// } else {
skuSpecDto
.
setSpecName
(
lastSpecArr
[
0
]);
// lastGoodsInfoVo.setSpuBarCode(lastGoodsInfoVo.getSpuId());
skuSpecDto
.
setSpecVname
(
lastSpecArr
[
1
]);
// }
skuSpecDtos
.
add
(
skuSpecDto
);
if
(!
CollectionUtils
.
isEmpty
(
dt
.
getSpuImgList
()))
{
}
lastGoodsInfoVo
.
setImageList
(
dt
.
getSpuImgList
());
if
(
tobeNextSpuFlg
||
!
dtoSkuSpecValueTmpList
.
contains
(
lastSkuSpecValueStr
))
{
lastGoodsInfoVo
.
setCoverPic
(
lastGoodsInfoVo
.
getImageList
().
get
(
0
));
dtoSkuSpecValueTmpList
.
add
(
lastSkuSpecValueStr
);
}
else
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行商品规格信息重复】"
,
rowNum
));
}
dto
.
setSkuSpecDtos
(
skuSpecDtos
);
/* 规格编码校验|------------------------------------------------------------------------------ */
if
(
StringUtils
.
isNotEmpty
(
dto
.
getSkuCode
())
&&
!
Pattern
.
matches
(
LnsRegex
.
Valid
.
ALPHABET_NUMBER_UNDER_50
,
dto
.
getSkuCode
()))
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行规格编码格式有误】"
,
rowNum
));
}
/* 价格校验|------------------------------------------------------------------------------ */
if
(
null
==
dto
.
getPrice
()
||
dto
.
getPrice
().
compareTo
(
BigDecimal
.
valueOf
(
0.01
))
<
0
||
dto
.
getPrice
().
compareTo
(
BigDecimal
.
valueOf
(
9999999
))
>
0
)
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行价格信息有误】"
,
rowNum
));
}
/* 库存校验|------------------------------------------------------------------------------ */
if
(
null
==
dto
.
getStock
()
||
dto
.
getStock
()
<
0
||
dto
.
getStock
()
>
9999999
)
{
// 数据不规范停止解析并提示用户
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行库存信息有误】"
,
rowNum
));
}
/* 规格图片校验|------------------------------------------------------------------------------ */
if
(
StringUtils
.
isNotEmpty
(
dto
.
getSkuImg
()))
{
if
(
dto
.
getSkuImg
().
startsWith
(
"【图片链接】"
))
{
String
[]
skuImgArr
=
dto
.
getSkuImg
().
replace
(
"【图片链接】"
,
""
).
replace
(
";"
,
";"
).
split
(
";"
);
if
(
skuImgArr
.
length
==
1
)
{
dto
.
setSkuImg
(
StringUtils
.
isNotBlank
(
skuImgArr
[
0
])
?
skuImgArr
[
0
]
:
null
);
}
else
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行规格图片仅支持1张】"
,
rowNum
));
}
}
else
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行规格图片格式有误】"
,
rowNum
));
}
}
/* 规格条码校验|------------------------------------------------------------------------------ */
if
(
StringUtils
.
isNotEmpty
(
dto
.
getSkuBarCode
()))
{
if
(
Pattern
.
matches
(
LnsRegex
.
Valid
.
ALPHABET_NUMBER_32
,
dto
.
getSkuBarCode
()))
{
// if (dtoSkuBarCodeTmpList.contains(dto.getSkuBarCode())) {
// throw new LiquidnetServiceException("-1", String.format("数据内容不规范【第%s行表格内规格条码重复】", rowNum));
// }
// dtoSkuBarCodeTmpList.add(dto.getSkuBarCode());
}
else
{
throw
new
LiquidnetServiceException
(
"-1"
,
String
.
format
(
"数据内容不规范【第%s行规格条码格式有误】"
,
rowNum
));
}
}
}
/* 校验|------------------------------------------------------------------------------ */
/* 校验|------------------------------------------------------------------------------ */
/* 校验|------------------------------------------------------------------------------ */
}
lastGoodsInfoVo
.
setDetails
(
lastGoodsInfoVo
.
getName
());
private
GoblinGoodsInfoVo
goodsInformationDataAnalysisProcessingForSpu
(
GoblinGoodsImportDto
dt
,
String
uid
,
String
storeId
,
LocalDateTime
now
)
{
lastGoodsInfoVo
.
setSpuType
(
0
);
//*
GoblinGoodsInfoVo
lastGoodsInfoVo
=
GoblinGoodsInfoVo
.
getNew
();
lastGoodsInfoVo
.
setSpecMode
(
"1"
);
//*
lastGoodsInfoVo
.
setName
(
dt
.
getSpuName
());
//*
lastGoodsInfoVo
.
setShelvesHandle
(
"1"
);
lastGoodsInfoVo
.
setSpuId
(
IDGenerator
.
nextMilliId2
());
//*
lastGoodsInfoVo
.
setVirtualFlg
(
"0"
);
if
(
StringUtils
.
isNotEmpty
(
dt
.
getSpuCode
()))
{
lastGoodsInfoVo
.
setStatus
(
"3"
);
lastGoodsInfoVo
.
setSpuNo
(
dt
.
getSpuCode
());
lastGoodsInfoVo
.
setShelvesStatus
(
"0"
);
}
else
{
lastGoodsInfoVo
.
setSpuAppear
(
"0"
);
//*
lastGoodsInfoVo
.
setSpuNo
(
lastGoodsInfoVo
.
getSpuId
());
lastGoodsInfoVo
.
setSpuCanbuy
(
"1"
);
lastGoodsInfoVo
.
setDelFlg
(
"0"
);
lastGoodsInfoVo
.
setCreatedAt
(
now
);
lastGoodsInfoVo
.
setCreatedBy
(
uid
);
//*
lastGoodsInfoVo
.
setStoreId
(
storeId
);
//*
}
}
GoblinGoodsSkuInfoVo
lastGoodsSkuInfoVo
=
this
.
goodsInformationDataAnalysisProcessingForSku
(
dt
,
lastGoodsInfoVo
,
uid
,
storeId
,
now
,
tobeNextSpuFlg
);
// if (StringUtils.isNotEmpty(dt.getSpuBarCode())) {
if
(
null
!=
lastGoodsSkuInfoVo
)
{
// lastGoodsInfoVo.setSpuBarCode(dt.getSpuBarCode());
goodsSkuInfoVos
.
add
(
lastGoodsSkuInfoVo
);
// } else {
// lastGoodsInfoVo.setSpuBarCode(lastGoodsInfoVo.getSpuId());
// }
if
(!
CollectionUtils
.
isEmpty
(
dt
.
getSpuImgList
()))
{
lastGoodsInfoVo
.
setImageList
(
dt
.
getSpuImgList
());
lastGoodsInfoVo
.
setCoverPic
(
lastGoodsInfoVo
.
getImageList
().
get
(
0
));
}
}
return
tobeNextSpuFlg
?
lastGoodsInfoVo
:
null
;
lastGoodsInfoVo
.
setDetails
(
lastGoodsInfoVo
.
getName
());
lastGoodsInfoVo
.
setSpuType
(
0
);
//*
lastGoodsInfoVo
.
setSpecMode
(
"1"
);
//*
lastGoodsInfoVo
.
setShelvesHandle
(
"1"
);
lastGoodsInfoVo
.
setVirtualFlg
(
"0"
);
lastGoodsInfoVo
.
setStatus
(
"3"
);
lastGoodsInfoVo
.
setShelvesStatus
(
"0"
);
lastGoodsInfoVo
.
setSpuAppear
(
"0"
);
//*
lastGoodsInfoVo
.
setSpuCanbuy
(
"1"
);
lastGoodsInfoVo
.
setDelFlg
(
"0"
);
lastGoodsInfoVo
.
setCreatedAt
(
now
);
lastGoodsInfoVo
.
setCreatedBy
(
uid
);
//*
lastGoodsInfoVo
.
setStoreId
(
storeId
);
//*
return
lastGoodsInfoVo
;
}
}
private
GoblinGoodsSkuInfoVo
goodsInformationDataAnalysisProcessingForSku
(
GoblinGoodsImportDto
dt
,
GoblinGoodsInfoVo
lastGoodsInfoVo
,
String
uid
,
String
storeId
,
LocalDateTime
now
,
boolean
tobeNextSpuFlg
)
{
private
GoblinGoodsSkuInfoVo
goodsInformationDataAnalysisProcessingForSku
(
GoblinGoodsImportDto
dt
,
GoblinGoodsInfoVo
lastGoodsInfoVo
,
boolean
tobeNextSpuFlg
)
{
GoblinGoodsSkuInfoVo
skuInfoVo
=
GoblinGoodsSkuInfoVo
.
getNew
();
GoblinGoodsSkuInfoVo
skuInfoVo
=
GoblinGoodsSkuInfoVo
.
getNew
();
skuInfoVo
.
setName
(
""
);
skuInfoVo
.
setName
(
""
);
...
@@ -375,7 +407,6 @@ public class GoblinStoreMgtGoodsImportService {
...
@@ -375,7 +407,6 @@ public class GoblinStoreMgtGoodsImportService {
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
(
GoblinGoodsSpecValueVo
.
getNew
().
setSpecVname
(
skuSpecDto
.
getSpecVname
()).
setSpecVsort
(
lastGoodsInfoVo
.
getSkuIdList
().
size
()
+
1
));
spuSpecValueVos
.
add
(
GoblinGoodsSpecValueVo
.
getNew
().
setSpecVname
(
skuSpecDto
.
getSpecVname
()).
setSpecVsort
(
lastGoodsInfoVo
.
getSkuIdList
().
size
()
+
1
));
spuSpecVo
.
setSpecValues
(
spuSpecValueVos
);
}
}
}
else
{
// 不匹配的规格直接跳过(默认只匹配商品第一行数据中的规格项)
}
else
{
// 不匹配的规格直接跳过(默认只匹配商品第一行数据中的规格项)
return
null
;
return
null
;
...
@@ -414,9 +445,9 @@ public class GoblinStoreMgtGoodsImportService {
...
@@ -414,9 +445,9 @@ public class GoblinStoreMgtGoodsImportService {
skuInfoVo
.
setSkuAppear
(
"0"
);
//*
skuInfoVo
.
setSkuAppear
(
"0"
);
//*
skuInfoVo
.
setSkuCanbuy
(
"1"
);
skuInfoVo
.
setSkuCanbuy
(
"1"
);
skuInfoVo
.
setDelFlg
(
"0"
);
skuInfoVo
.
setDelFlg
(
"0"
);
skuInfoVo
.
setCreatedAt
(
now
);
//*
skuInfoVo
.
setCreatedAt
(
lastGoodsInfoVo
.
getCreatedAt
()
);
//*
skuInfoVo
.
setCreatedBy
(
uid
);
//*
skuInfoVo
.
setCreatedBy
(
lastGoodsInfoVo
.
getCreatedBy
()
);
//*
skuInfoVo
.
setStoreId
(
storeId
);
skuInfoVo
.
setStoreId
(
lastGoodsInfoVo
.
getStoreId
()
);
skuInfoVo
.
setSkuSpecList
(
skuSpecDtos
);
skuInfoVo
.
setSkuSpecList
(
skuSpecDtos
);
if
(
tobeNextSpuFlg
)
{
if
(
tobeNextSpuFlg
)
{
...
...
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