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

Commit 671ae42c authored by 张国柄's avatar 张国柄

~api:店铺商品管理:批量导入数据;

parent 067636dd
......@@ -24,6 +24,7 @@ import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
......@@ -54,11 +55,16 @@ public class GoblinStoreMgtGoodsImportService {
public static final String ALPHABET_NUMBER_32 = "^[a-zA-Z0-9]{0,32}$";
public void goodsInformationDataAnalysisProcessing(MultipartFile file, String uid, String storeId) throws IOException {
ArrayList<String> skuBarCodeTmpList = CollectionUtil.arrayListString();
ArrayList<GoblinGoodsInfoVo> goodsInfoVos = ObjectUtil.goblinGoodsInfoVoArrayList();
ArrayList<GoblinGoodsSkuInfoVo> goodsSkuInfoVos = ObjectUtil.getGoblinGoodsSkuInfoVoArrayList();
LinkedList<Object[]> initGoodsSkuObjs = CollectionUtil.linkedListObjectArr();
EasyExcel.read(file.getInputStream(), GoblinGoodsImportDto.class, new PageReadListener<GoblinGoodsImportDto>(dts -> {
if (CollectionUtils.isEmpty(dts)) {
throw new LiquidnetServiceException("-1", "无效操作,导入数据为空");
}
GoblinGoodsInfoVo lastGoodsInfoVo = null;
GoblinGoodsSkuInfoVo lastGoodsSkuInfoVo;
LocalDateTime now = LocalDateTime.now();
for (GoblinGoodsImportDto dt : dts) {
log.debug("dt1:{}", dt.toString());
......@@ -79,7 +85,7 @@ public class GoblinStoreMgtGoodsImportService {
if (tobeNextSpuFlg) {
lastGoodsInfoVo.setName(dt.getSpuName());//*
if (StringUtils.isNotEmpty(dt.getSpuCode())) {
if (Pattern.matches(ALPHABET_NUMBER_UNDER_50, dt.getSpuCode())) throw new LiquidnetServiceException("-1", "数据内容不规范【商品编码格式错误】");
if (!Pattern.matches(ALPHABET_NUMBER_UNDER_50, dt.getSpuCode())) throw new LiquidnetServiceException("-1", "数据内容不规范【商品编码格式错误】");
lastGoodsInfoVo.setSpuId(IDGenerator.nextMilliId2() + dt.getSpuCode());//*
} else {
lastGoodsInfoVo.setSpuId(IDGenerator.nextMilliId2());//*
......@@ -112,17 +118,24 @@ public class GoblinStoreMgtGoodsImportService {
lastGoodsInfoVo.setCreatedBy(uid);//*
lastGoodsInfoVo.setStoreId(storeId);//*
this.goodsInformationDataAnalysisProcessingForSku(dt, lastGoodsInfoVo, uid, storeId, now, true, goodsSkuInfoVos, initGoodsSkuObjs);
lastGoodsSkuInfoVo = this.goodsInformationDataAnalysisProcessingForSku(dt, lastGoodsInfoVo, uid, storeId, now, true, goodsSkuInfoVos, initGoodsSkuObjs);
goodsInfoVos.add(lastGoodsInfoVo);
} else {
this.goodsInformationDataAnalysisProcessingForSku(dt, lastGoodsInfoVo, uid, storeId, now, false, goodsSkuInfoVos, initGoodsSkuObjs);
lastGoodsSkuInfoVo = this.goodsInformationDataAnalysisProcessingForSku(dt, lastGoodsInfoVo, uid, storeId, now, false, goodsSkuInfoVos, initGoodsSkuObjs);
}
if (null != lastGoodsSkuInfoVo && skuBarCodeTmpList.contains(lastGoodsSkuInfoVo.getSkuNo())) {
throw new LiquidnetServiceException("-1", "数据内容不规范【表格内规格条码重复】");
}
log.debug("dt2:{}", lastGoodsInfoVo);
}
log.debug("dt3-1:{}", JsonUtils.toJson(goodsInfoVos));
log.debug("dt3-2:{}", JsonUtils.toJson(goodsSkuInfoVos));
if (goblinMongoUtils.countMgtGoodsSkuBySkuNoList(storeId, skuBarCodeTmpList) > 0) {
throw new LiquidnetServiceException("-1", "数据内容不规范【规格条码与已添加商品条码重复】");
}
goblinMongoUtils.insertMgtGoodsInfoVos(goodsInfoVos);
goblinMongoUtils.insertMgtGoodsSkuInfoVos(goodsSkuInfoVos);
goodsSkuInfoVos.forEach(r -> goblinRedisUtils.setSkuStock(null, r.getSkuId(), r.getSkuStock()));
......@@ -154,7 +167,7 @@ public class GoblinStoreMgtGoodsImportService {
}).sheet().doReadSync();
}
private void goodsInformationDataAnalysisProcessingForSku(GoblinGoodsImportDto dt, GoblinGoodsInfoVo lastGoodsInfoVo,
private GoblinGoodsSkuInfoVo goodsInformationDataAnalysisProcessingForSku(GoblinGoodsImportDto dt, GoblinGoodsInfoVo lastGoodsInfoVo,
String uid, String storeId, LocalDateTime now, boolean hasNextSpuFlg,
List<GoblinGoodsSkuInfoVo> goodsSkuInfoVos, LinkedList<Object[]> initGoodsSkuObjs) {
GoblinGoodsSkuInfoVo skuInfoVo = GoblinGoodsSkuInfoVo.getNew();
......@@ -201,7 +214,7 @@ public class GoblinStoreMgtGoodsImportService {
spuSpecVo.setSpecValues(spuSpecValueVos);
}
} else {// 不匹配的规格直接跳过(默认只匹配商品第一行数据中的规格项)
return;
return null;
}
}
}
......@@ -211,7 +224,7 @@ public class GoblinStoreMgtGoodsImportService {
skuInfoVo.setPrice(dt.getPrice());//*
skuInfoVo.setPriceMember(dt.getPrice());//*
if (StringUtils.isNotEmpty(dt.getSkuCode())) {
if (Pattern.matches(ALPHABET_NUMBER_UNDER_50, dt.getSkuCode())) throw new LiquidnetServiceException("-1", "数据内容不规范【规格编码格式错误】");
if (!Pattern.matches(ALPHABET_NUMBER_UNDER_50, dt.getSkuCode())) throw new LiquidnetServiceException("-1", "数据内容不规范【规格编码格式错误】");
skuInfoVo.setSkuId(lastGoodsInfoVo.getSpuId().concat(dt.getSkuCode()).concat(StringUtils.right(String.valueOf(System.nanoTime()), 5)));//*
} else {
skuInfoVo.setSkuId(lastGoodsInfoVo.getSpuId().concat(StringUtils.right(String.valueOf(System.nanoTime()), 5)));//*
......@@ -225,7 +238,7 @@ public class GoblinStoreMgtGoodsImportService {
// skuInfoVo.setSkuPic("");// 设置默认图片
}
if (StringUtils.isNotEmpty(dt.getSkuBarCode())) {
if (Pattern.matches(ALPHABET_NUMBER_32, dt.getSkuCode())) throw new LiquidnetServiceException("-1", "数据内容不规范【规格条码格式错误】");
if (!Pattern.matches(ALPHABET_NUMBER_32, dt.getSkuCode())) throw new LiquidnetServiceException("-1", "数据内容不规范【规格条码格式错误】");
skuInfoVo.setSkuNo(dt.getSkuBarCode());//*
} else {
skuInfoVo.setSkuNo(lastGoodsInfoVo.getSpuNo());//*
......@@ -275,5 +288,6 @@ public class GoblinStoreMgtGoodsImportService {
lastGoodsInfoVo.setPriceGe(skuInfoVo.getPrice().compareTo(priceGe) < 0 ? skuInfoVo.getPrice() : priceGe);
lastGoodsInfoVo.setPriceLe(priceLe.compareTo(skuInfoVo.getPrice()) < 0 ? skuInfoVo.getPrice() : priceLe);
}
return skuInfoVo;
}
}
......@@ -840,6 +840,12 @@ public class GoblinMongoUtils {
return pagedResult.setList(list).setTotal(count, pageSize);
}
// 根据sku条码获取sku总数
public long countMgtGoodsSkuBySkuNoList(String storeId, List<String> skuNoList) {
return mongoTemplate.count(Query.query(Criteria.where("delFlg").is("0").and("storeId").is(storeId).and("skuNo").in(skuNoList)),
GoblinMixDetailsVo.class, GoblinMixDetailsVo.class.getSimpleName());
}
// SKU信息
public GoblinGoodsSkuInfoVo getGoodsSkuInfoVo(String skuId) {
// return mongoTemplate.findOne(Query.query(Criteria.where("skuId").is(skuId).and("delFlg").is("0").and("shelvesStatus").is("3")),
......
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