记得上下班打卡 | git大法好,push需谨慎

Commit 9a399fde authored by 张国柄's avatar 张国柄

~api:导入:模板/校验调整;

parent 21b819ad
......@@ -54,107 +54,18 @@ public class GoblinStoreMgtGoodsImportService {
* 批量导入SKU.SQL队列入库分批处理数量
*/
private static final int BATCH_COUNT_SKU_SQL_TO_QUEUE = 20;
private void goodsInformationDataAnalysisProcessingValid(GoblinGoodsImportDto dto, List<String> skuBarCodeTmpList, Integer rowNum) {
/* 商品编码校验|------------------------------------------------------------------------------ */
if (StringUtils.isNotEmpty(dto.getSpuCode()) && !Pattern.matches(LnsRegex.Valid.ALPHABET_NUMBER_UNDER_50, dto.getSpuCode())) {
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));
}
}
/* 校验|------------------------------------------------------------------------------ */
/* 校验|------------------------------------------------------------------------------ */
/* 校验|------------------------------------------------------------------------------ */
}
/**
* 缓存记录同一个SPU下SKU规格值
*/
private static final String LAST_SKU_SPEC_VALUE_STR = "%#V1%#V2%#V3%#V4%#V5";
public String goodsInformationDataAnalysisProcessing(MultipartFile file, String uid, String storeId) throws IOException {
AnalysisEventListener<GoblinGoodsImportDto> analysisEventListener = new AnalysisEventListener<GoblinGoodsImportDto>() {
List<GoblinGoodsSkuInfoVo> goodsSkuInfoVos;
List<GoblinGoodsInfoVo> goodsInfoVos;
List<String> skuBarCodeTmpList;
List<String> dtoSkuBarCodeTmpList;
List<String> dtoSpuSpecNameTmpList;
List<String> dtoSkuSpecValueTmpList;
LocalDateTime now;
@Override
......@@ -179,26 +90,40 @@ public class GoblinStoreMgtGoodsImportService {
goodsSkuInfoVos = ObjectUtil.getGoblinGoodsSkuInfoVoArrayList();
goodsInfoVos = ObjectUtil.goblinGoodsInfoVoArrayList();
skuBarCodeTmpList = CollectionUtil.arrayListString();
// skuBarCodeTmpList = CollectionUtil.arrayListString();
dtoSpuSpecNameTmpList = CollectionUtil.arrayListString();
dtoSkuSpecValueTmpList = CollectionUtil.arrayListString();
now = LocalDateTime.now();
super.invokeHead(headMap, context);
}
@Override
public void invoke(GoblinGoodsImportDto dto, AnalysisContext analysisContext) {
if (log.isDebugEnabled()) {
log.debug("dt1:{}", dto.toString());
}
Integer rowIndex = analysisContext.readRowHolder().getRowIndex();
goodsInformationDataAnalysisProcessingValid(dto, skuBarCodeTmpList, rowIndex + 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()) {
log.debug("dt2:{}", goodsInfoVo);
log.debug("dt2:{}", lastGoodsInfoVo);
}
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.setSpuImgList(null);
}
......@@ -301,56 +226,163 @@ public class GoblinStoreMgtGoodsImportService {
return analysisResultMsg;
}
private GoblinGoodsInfoVo goodsInformationDataAnalysisProcessingForSpu(GoblinGoodsImportDto dt, GoblinGoodsInfoVo lastGoodsInfoVo, String uid, String storeId, LocalDateTime now, List<GoblinGoodsSkuInfoVo> goodsSkuInfoVos) {
if (log.isDebugEnabled()) {
log.debug("dt1:{}", dt.toString());
private void goodsInformationDataAnalysisProcessingValid(GoblinGoodsImportDto dto, Integer rowNum, boolean tobeNextSpuFlg,
List<String> dtoSpuSpecNameTmpList, List<String> dtoSkuSpecValueTmpList, List<String> dtoSkuBarCodeTmpList) {
/* 商品编码校验|------------------------------------------------------------------------------ */
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 (null == lastGoodsInfoVo || !lastGoodsInfoVo.getName().equals(dt.getSpuName())) {
lastGoodsInfoVo = GoblinGoodsInfoVo.getNew();
tobeNextSpuFlg = true;
/* 商品名称校验|------------------------------------------------------------------------------ */
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 skuSpecStr = dto.getSkuSpec().replace(":", ":").replace(";", ";");
if (tobeNextSpuFlg) {
lastGoodsInfoVo.setName(dt.getSpuName());//*
lastGoodsInfoVo.setSpuId(IDGenerator.nextMilliId2());//*
if (StringUtils.isNotEmpty(dt.getSpuCode())) {
lastGoodsInfoVo.setSpuNo(dt.getSpuCode());
dtoSpuSpecNameTmpList.clear();
dtoSkuSpecValueTmpList.clear();
}
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 {
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());
// } else {
// lastGoodsInfoVo.setSpuBarCode(lastGoodsInfoVo.getSpuId());
// }
if (!CollectionUtils.isEmpty(dt.getSpuImgList())) {
lastGoodsInfoVo.setImageList(dt.getSpuImgList());
lastGoodsInfoVo.setCoverPic(lastGoodsInfoVo.getImageList().get(0));
GoblinGoodsSpecDto skuSpecDto = GoblinGoodsSpecDto.getNew();
skuSpecDto.setSpecName(lastSpecArr[0]);
skuSpecDto.setSpecVname(lastSpecArr[1]);
skuSpecDtos.add(skuSpecDto);
}
if (tobeNextSpuFlg || !dtoSkuSpecValueTmpList.contains(lastSkuSpecValueStr)) {
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());
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);//*
private GoblinGoodsInfoVo goodsInformationDataAnalysisProcessingForSpu(GoblinGoodsImportDto dt, String uid, String storeId, LocalDateTime now) {
GoblinGoodsInfoVo lastGoodsInfoVo = GoblinGoodsInfoVo.getNew();
lastGoodsInfoVo.setName(dt.getSpuName());//*
lastGoodsInfoVo.setSpuId(IDGenerator.nextMilliId2());//*
if (StringUtils.isNotEmpty(dt.getSpuCode())) {
lastGoodsInfoVo.setSpuNo(dt.getSpuCode());
} else {
lastGoodsInfoVo.setSpuNo(lastGoodsInfoVo.getSpuId());
}
GoblinGoodsSkuInfoVo lastGoodsSkuInfoVo = this.goodsInformationDataAnalysisProcessingForSku(dt, lastGoodsInfoVo, uid, storeId, now, tobeNextSpuFlg);
if (null != lastGoodsSkuInfoVo) {
goodsSkuInfoVos.add(lastGoodsSkuInfoVo);
// if (StringUtils.isNotEmpty(dt.getSpuBarCode())) {
// lastGoodsInfoVo.setSpuBarCode(dt.getSpuBarCode());
// } 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();
skuInfoVo.setName("");
......@@ -375,7 +407,6 @@ public class GoblinStoreMgtGoodsImportService {
Optional<GoblinGoodsSpecValueVo> any = spuSpecValueVos.stream().filter(r -> r.getSpecVname().equals(skuSpecDto.getSpecVname())).findAny();
if (!any.isPresent()) {
spuSpecValueVos.add(GoblinGoodsSpecValueVo.getNew().setSpecVname(skuSpecDto.getSpecVname()).setSpecVsort(lastGoodsInfoVo.getSkuIdList().size() + 1));
spuSpecVo.setSpecValues(spuSpecValueVos);
}
} else {// 不匹配的规格直接跳过(默认只匹配商品第一行数据中的规格项)
return null;
......@@ -414,9 +445,9 @@ public class GoblinStoreMgtGoodsImportService {
skuInfoVo.setSkuAppear("0");//*
skuInfoVo.setSkuCanbuy("1");
skuInfoVo.setDelFlg("0");
skuInfoVo.setCreatedAt(now);//*
skuInfoVo.setCreatedBy(uid);//*
skuInfoVo.setStoreId(storeId);
skuInfoVo.setCreatedAt(lastGoodsInfoVo.getCreatedAt());//*
skuInfoVo.setCreatedBy(lastGoodsInfoVo.getCreatedBy());//*
skuInfoVo.setStoreId(lastGoodsInfoVo.getStoreId());
skuInfoVo.setSkuSpecList(skuSpecDtos);
if (tobeNextSpuFlg) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment