商品同步excel导入
This commit is contained in:
parent
98e291dc3e
commit
d4833f235b
@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 思迅同步商品数据入口数据
|
||||
@ -18,19 +19,19 @@ public class SxGoosModelExcel {
|
||||
private String product_name;
|
||||
|
||||
@ApiModelProperty("商品货号")
|
||||
@ExcelProperty(value = "商品货号", index = 1)
|
||||
@ExcelIgnore
|
||||
private String product_number;
|
||||
|
||||
@ApiModelProperty("商品条形码")
|
||||
@ExcelProperty(value = "商品条形码", index = 2)
|
||||
@ExcelProperty(value = "商品条形码", index = 1)
|
||||
private String product_barcode;
|
||||
|
||||
@ApiModelProperty("所属分类")
|
||||
@ExcelProperty(value = "所属分类", index = 3)
|
||||
@ExcelProperty(value = "所属分类", index = 2)
|
||||
private String first_category_name;
|
||||
|
||||
@ApiModelProperty("零售价")
|
||||
@ExcelProperty(value = "零售价", index = 4)
|
||||
@ExcelProperty(value = "零售价", index = 3)
|
||||
private BigDecimal retail_price;
|
||||
|
||||
@ApiModelProperty("原价")
|
||||
@ -38,15 +39,28 @@ public class SxGoosModelExcel {
|
||||
private BigDecimal original_price=retail_price;
|
||||
|
||||
@ApiModelProperty("库存")
|
||||
@ExcelProperty(value = "库存", index = 5)
|
||||
@ExcelProperty(value = "库存", index = 4)
|
||||
private BigDecimal stock;
|
||||
|
||||
@ApiModelProperty("规格")
|
||||
@ExcelProperty(value = "规格", index = 5)
|
||||
private String shop_spec;
|
||||
|
||||
@ApiModelProperty("规格单位")
|
||||
@ExcelProperty(value = "规格单位", index = 6)
|
||||
private String unit;
|
||||
|
||||
@ApiModelProperty("最大购买商品量")
|
||||
@ExcelProperty(value = "最大购买商品量", index = 7)
|
||||
@ApiModelProperty("规格(JSON)-规格、规格值、goods_id 规格不需要全选就可以添加对应数据[")
|
||||
@ExcelIgnore
|
||||
private List<String> product_spec;
|
||||
|
||||
@ApiModelProperty("商品限购数量")
|
||||
@ExcelProperty(value = "商品限购数量", index = 7)
|
||||
private Integer buy_limit;
|
||||
|
||||
@ApiModelProperty("品牌名称")
|
||||
@ExcelProperty(value = "品牌名称", index = 8)
|
||||
private String brand_name;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -130,6 +130,7 @@ public abstract class SyncBaseThirdSxAbstract{
|
||||
String storeId){
|
||||
int count = 0;
|
||||
List<ShopBaseProductType> productTypeList = new ArrayList<>();
|
||||
Map<String,String> productTypeListMap=new HashMap<>();
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
String categoryName=list.get(i).getCategory_name();
|
||||
if(StringUtils.isNotEmpty(getForbidCategory(categoryName))){
|
||||
@ -143,7 +144,15 @@ public abstract class SyncBaseThirdSxAbstract{
|
||||
ShopBaseProductType productType=new ShopBaseProductType();
|
||||
productType.setType_is_draft(1);//发布
|
||||
productType.setStore_id(Integer.valueOf(storeId));
|
||||
String brandName=o.getStr("brandName","其他品牌");
|
||||
String brandName=o.getStr("brandName","其它品牌");
|
||||
QueryWrapper<ShopBaseProductBrand> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("store_id",Integer.valueOf(storeId));
|
||||
queryWrapper.in("brand_name",Arrays.asList(brandName.split(",")));
|
||||
// queryWrapper.eq("brand_name",brandName);
|
||||
List<ShopBaseProductBrand> shopBaseProductBrands=productBrandService.list(queryWrapper);
|
||||
String brandIds=shopBaseProductBrands.stream()
|
||||
.map(shopBaseProductBrand -> String.valueOf(shopBaseProductBrand.getBrand_id()))
|
||||
.collect(Collectors.joining(","));
|
||||
if (o != null) {
|
||||
// 重要:分类类型处理(强调共性)
|
||||
Integer typeId = 1001;
|
||||
@ -153,24 +162,20 @@ public abstract class SyncBaseThirdSxAbstract{
|
||||
if (productType != null) {
|
||||
typeId = productType.getType_id();
|
||||
} else {
|
||||
QueryWrapper<ShopBaseProductBrand> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("store_id",Integer.valueOf(storeId));
|
||||
queryWrapper.eq("brand_name",brandName);
|
||||
ShopBaseProductBrand shopBaseProductBrand=productBrandService.findOne(queryWrapper);
|
||||
// 新增一个类型
|
||||
ShopBaseProductType newProductType = new ShopBaseProductType();
|
||||
newProductType.setType_name(o.getStr("product_type"));
|
||||
newProductType.setType_buildin(0);
|
||||
newProductType.setType_is_draft(0);//发布
|
||||
newProductType.setStore_id(Integer.valueOf(storeId));
|
||||
if(null!=shopBaseProductBrand){
|
||||
newProductType.setType_brand_ids(String.valueOf(shopBaseProductBrand.getBrand_id()));
|
||||
}
|
||||
if (productTypeService.save(newProductType)) {
|
||||
typeId = newProductType.getType_id();
|
||||
}
|
||||
productType=newProductType;
|
||||
}
|
||||
if(StringUtils.isNotEmpty(brandIds)){
|
||||
productType.setType_brand_ids(brandIds);
|
||||
}
|
||||
list.get(i).setType_id(typeId);
|
||||
}
|
||||
|
||||
@ -186,16 +191,38 @@ public abstract class SyncBaseThirdSxAbstract{
|
||||
}
|
||||
// TODO storeId 不判断一下吗?
|
||||
ShopBaseProductCategory cate = productCategoryService.getCategoryByName(firstCategoryName,storeId);
|
||||
ShopBaseProductType first_category_name_type=productTypeService.getProductTypeByName(firstCategoryName,storeId);
|
||||
Integer firstTypeId = 1001;
|
||||
if(null!=first_category_name_type){
|
||||
firstTypeId = first_category_name_type.getType_id();
|
||||
}else {
|
||||
first_category_name_type=new ShopBaseProductType();
|
||||
first_category_name_type.setType_name(firstCategoryName);
|
||||
first_category_name_type.setType_buildin(0);
|
||||
first_category_name_type.setType_is_draft(0);//发布
|
||||
first_category_name_type.setStore_id(Integer.valueOf(storeId));
|
||||
if (productTypeService.save(first_category_name_type)) {
|
||||
firstTypeId = first_category_name_type.getType_id();
|
||||
}
|
||||
}
|
||||
|
||||
if(StringUtils.isNotEmpty(brandIds)){
|
||||
first_category_name_type.setType_brand_ids(brandIds);
|
||||
}
|
||||
|
||||
if (cate != null) {
|
||||
list.get(i).setCategory_parent_id(cate.getCategory_id());
|
||||
first_category_name_type.setType_category_id(cate.getCategory_id());
|
||||
firstParentId=cate.getCategory_id();
|
||||
} else{
|
||||
// 新增一个(第一级)父类
|
||||
ShopBaseProductCategory firstCate = new ShopBaseProductCategory();
|
||||
firstCate.setCategory_name(firstCategoryName);
|
||||
firstCate.setParent_id(0);
|
||||
firstCate.setStore_id(storeId);
|
||||
firstCate.setType_id(typeId);
|
||||
firstCate.setType_id(firstTypeId);
|
||||
firstCate.setData_source(2);
|
||||
firstCate.setCategory_image(list.get(i).getCategory_image());
|
||||
List<LibraryProductDTO> libraryProductDTOS=libraryProductService.matchLibraryProducts(null,firstCategoryName,new ArrayList<>());
|
||||
if(CollectionUtil.isNotEmpty(libraryProductDTOS)){
|
||||
firstCate.setCategory_image(libraryProductDTOS.get(0).getThumb());
|
||||
@ -206,6 +233,11 @@ public abstract class SyncBaseThirdSxAbstract{
|
||||
list.get(i).setCategory_parent_id(firstParentId);
|
||||
}
|
||||
}
|
||||
if(null==productTypeListMap.get(first_category_name_type.getType_name())){
|
||||
first_category_name_type.setType_category_id(firstParentId);
|
||||
productTypeList.add(first_category_name_type);
|
||||
productTypeListMap.put(first_category_name_type.getType_name(),first_category_name_type.getType_name());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -218,16 +250,35 @@ public abstract class SyncBaseThirdSxAbstract{
|
||||
}
|
||||
// TODO storeId 不判断一下吗?
|
||||
ShopBaseProductCategory cate = productCategoryService.getCategoryByName(secondCategoryName,storeId);
|
||||
ShopBaseProductType second_category_type=productTypeService.getProductTypeByName(secondCategoryName,storeId);
|
||||
Integer secondTypeId = 1001;
|
||||
if(null!=second_category_type){
|
||||
secondTypeId = second_category_type.getType_id();
|
||||
}else {
|
||||
second_category_type=new ShopBaseProductType();
|
||||
second_category_type.setType_name(secondCategoryName);
|
||||
second_category_type.setType_buildin(0);
|
||||
second_category_type.setType_is_draft(0);//发布
|
||||
second_category_type.setStore_id(Integer.valueOf(storeId));
|
||||
if (productTypeService.save(second_category_type)) {
|
||||
secondTypeId = second_category_type.getType_id();
|
||||
}
|
||||
}
|
||||
if(StringUtils.isNotEmpty(brandIds)){
|
||||
second_category_type.setType_brand_ids(brandIds);
|
||||
}
|
||||
if (cate != null) {
|
||||
list.get(i).setCategory_parent_id(cate.getCategory_id());
|
||||
second_category_type.setType_category_id(cate.getCategory_id());
|
||||
} else {
|
||||
// 新增一个(第二级)父类
|
||||
ShopBaseProductCategory secondCate = new ShopBaseProductCategory();
|
||||
secondCate.setCategory_name(secondCategoryName);
|
||||
secondCate.setCategory_parent_id(firstParentId);
|
||||
secondCate.setStore_id(storeId);
|
||||
secondCate.setType_id(typeId);
|
||||
secondCate.setType_id(secondTypeId);
|
||||
secondCate.setData_source(2);
|
||||
secondCate.setCategory_image(list.get(i).getCategory_image());
|
||||
List<LibraryProductDTO> libraryProductDTOS=libraryProductService.matchLibraryProducts(null,secondCategoryName,new ArrayList<>());
|
||||
if(CollectionUtil.isNotEmpty(libraryProductDTOS)){
|
||||
secondCate.setCategory_image(libraryProductDTOS.get(0).getThumb());
|
||||
@ -235,9 +286,15 @@ public abstract class SyncBaseThirdSxAbstract{
|
||||
if (productCategoryService.saveOrUpdate(secondCate)) {
|
||||
// 当前子分类的第二级父类id
|
||||
list.get(i).setCategory_parent_id(secondCate.getCategory_id());
|
||||
second_category_type.setType_category_id(secondCate.getCategory_id());
|
||||
}
|
||||
}
|
||||
if(null==productTypeListMap.get(second_category_type.getType_name())) {
|
||||
productTypeList.add(second_category_type);
|
||||
productTypeListMap.put(second_category_type.getType_name(), second_category_type.getType_name());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ShopBaseProductCategory productCategoryTemp = productCategoryService.getCategoryByName(list.get(i).getCategory_parent_id(), list.get(i).getCategory_name(), list.get(i).getStore_id());
|
||||
@ -262,7 +319,11 @@ public abstract class SyncBaseThirdSxAbstract{
|
||||
count++;
|
||||
}
|
||||
productType.setType_category_id(list.get(i).getCategory_id());
|
||||
productTypeList.add(productType);
|
||||
if(null==productTypeListMap.get(productType.getType_name())){
|
||||
productTypeList.add(productType);
|
||||
productTypeListMap.put(productType.getType_name(),productType.getType_name());
|
||||
}
|
||||
|
||||
}
|
||||
saveBatchShopProductProductSpec(storeId,productTypeList);
|
||||
return count;
|
||||
@ -749,7 +810,7 @@ public abstract class SyncBaseThirdSxAbstract{
|
||||
shopProductBase.setProduct_from(1005);// 商品来源(ENUM):1000-发布;1001-天猫;1002-淘宝;1003-阿里巴巴;1004-京东;1005-思迅;
|
||||
shopProductBase.setProduct_add_time(currentDate.getTime());
|
||||
shopProductBase.setProduct_unit_price(BigDecimal.valueOf(jsonObj.getDouble("retail_price")));
|
||||
String isSpecial=jsonObj.getStr("isSpecial");
|
||||
String isSpecial=jsonObj.getStr("isSpecial",DicEnum.YESORNO_0.getCode());
|
||||
if(ObjectUtil.equals(isSpecial,DicEnum.YESORNO_0.getCode())||ObjectUtil.equals(isSpecial,DicEnum.YESORNO_1.getCode())){
|
||||
shopProductBase.setIs_special(isSpecial);//是否特价商品 特价商品需要手动上架 todo 是否要开发定时上架功能
|
||||
}else {
|
||||
@ -867,7 +928,9 @@ public abstract class SyncBaseThirdSxAbstract{
|
||||
shopProductItem.setItem_advice_price(BigDecimal.valueOf(jsonObj.getDouble("retail_price")));
|
||||
shopProductItem.setItem_market_price(BigDecimal.valueOf(jsonObj.getDouble("original_price")));
|
||||
//积分价
|
||||
shopProductItem.setItem_unit_points(new BigDecimal(jsonObj.getInt("points")));
|
||||
if(null!=jsonObj.get("points")){
|
||||
shopProductItem.setItem_unit_points(new BigDecimal(jsonObj.getInt("points")));
|
||||
}
|
||||
shopProductItem.setItem_quantity(stock.intValue());
|
||||
//todo 特色商品切割
|
||||
//负数产品判断
|
||||
@ -944,7 +1007,7 @@ public abstract class SyncBaseThirdSxAbstract{
|
||||
* @param storeId
|
||||
*/
|
||||
private synchronized void saveBatchShopProductProductSpec(String storeId,List<ShopBaseProductType> shopBaseProductTypes){
|
||||
Map categoryMap= productCategoryService.getCategoryListByStoreId(storeId);
|
||||
Map categoryMap= productCategoryService.getCategoryListByStoreId(storeId);
|
||||
List<ShopBaseProductSpec> shopBaseProductSpecList=new ArrayList<>();
|
||||
Set<Map.Entry> categoryMapSet= categoryMap.entrySet();
|
||||
for(Map.Entry categoryMapEntry:categoryMapSet){
|
||||
@ -996,7 +1059,7 @@ public abstract class SyncBaseThirdSxAbstract{
|
||||
if(CollectionUtil.isNotEmpty(shopBaseProductTypes)){
|
||||
productTypeService.updateBatchById(shopBaseProductTypes,shopBaseProductTypes.size());
|
||||
}
|
||||
|
||||
productCategoryService.clearCategoryCache(storeId);
|
||||
}
|
||||
|
||||
|
||||
@ -1008,7 +1071,7 @@ public abstract class SyncBaseThirdSxAbstract{
|
||||
.map(ShopBaseProductSpec::getSpec_name)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
List<ShopBaseProductSpec> existing = batchGetByStoreAndShopBaseProductSpec(storeProductPairs);
|
||||
List<ShopBaseProductSpec> existing = batchGetByStoreAndShopBaseProductSpec(storeProductPairs,productSpecs.get(0).getStore_id());
|
||||
return existing.stream()
|
||||
.collect(Collectors.toMap(
|
||||
ShopBaseProductSpec::getSpec_name,
|
||||
@ -1019,14 +1082,14 @@ public abstract class SyncBaseThirdSxAbstract{
|
||||
/**
|
||||
* 批量根据店铺和货号查询商品
|
||||
*/
|
||||
private List<ShopBaseProductSpec> batchGetByStoreAndShopBaseProductSpec(List<String> ShopBaseProductSpecStr) {
|
||||
private List<ShopBaseProductSpec> batchGetByStoreAndShopBaseProductSpec(List<String> ShopBaseProductSpecStr,Integer storeId) {
|
||||
if (CollUtil.isEmpty(ShopBaseProductSpecStr)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
QueryWrapper<ShopBaseProductSpec> query = new QueryWrapper<>();
|
||||
query.select("spec_id", "spec_name");
|
||||
ShopBaseProductSpecStr.forEach(specName -> {
|
||||
query.or(q -> q.eq("spec_name", specName));
|
||||
query.or(q -> q.eq("spec_name", specName).eq("store_id",storeId));
|
||||
});
|
||||
|
||||
return shopBaseProductSpecService.list(query);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user