Compare commits

..

No commits in common. "6235112c4b0f15136d78d97c94041887b003d6b4" and "5a913ce465a9c236e50a3f74ddc665873d8256d0" have entirely different histories.

6 changed files with 36 additions and 68 deletions

View File

@ -34,7 +34,6 @@ public class ShopProductItem implements Serializable {
private Long item_id; private Long item_id;
@ApiModelProperty(value = "副标题(DOT):SKU名称") @ApiModelProperty(value = "副标题(DOT):SKU名称")
@TableField(updateStrategy=NOT_EMPTY)
private String item_name; private String item_name;
@ApiModelProperty(value = "产品编号") @ApiModelProperty(value = "产品编号")

View File

@ -57,9 +57,9 @@ public class ShopBatchSubmitListener extends AnalysisEventListener<SxGoosModelEx
this.syncThirdDataService = syncThirdDataService; this.syncThirdDataService = syncThirdDataService;
this.syncStoreSpecsService = syncStoreSpecsService; this.syncStoreSpecsService = syncStoreSpecsService;
// 创建线程池根据CPU核心数优化 // 创建线程池根据CPU核心数优化
// int corePoolSize = Runtime.getRuntime().availableProcessors(); int corePoolSize = Runtime.getRuntime().availableProcessors();
// log.info("核心线程数量{}", corePoolSize); // log.info("核心线程数量{}", corePoolSize);
this.executorService = Executors.newFixedThreadPool(6); this.executorService = Executors.newFixedThreadPool(corePoolSize);
this.futures = new ArrayList<>(); this.futures = new ArrayList<>();
this.success = new AtomicInteger(); this.success = new AtomicInteger();
this.fails = new AtomicInteger(); this.fails = new AtomicInteger();

View File

@ -990,10 +990,7 @@ public abstract class SyncBaseThirdSxAbstract{
QueryWrapper<ShopProductItem> itemQuery=new QueryWrapper<>(); QueryWrapper<ShopProductItem> itemQuery=new QueryWrapper<>();
itemQuery.select("MAX(item_id) as item_id"); itemQuery.select("MAX(item_id) as item_id");
ShopProductItem shopProductItem= shopProductItemService.getOne(itemQuery); ShopProductItem shopProductItem= shopProductItemService.getOne(itemQuery);
Long itemtId=1L; Long itemtId= shopProductItem.getItem_id();
if(null!=shopProductItem){
itemtId= shopProductItem.getItem_id();
}
// QueryWrapper<ShopNumberSeq> itemWrapper=new QueryWrapper(); // QueryWrapper<ShopNumberSeq> itemWrapper=new QueryWrapper();
//itemWrapper.eq("prefix", "item_id"); //itemWrapper.eq("prefix", "item_id");
ShopNumberSeq shopNumberSeqItem= new ShopNumberSeq(); ShopNumberSeq shopNumberSeqItem= new ShopNumberSeq();

View File

@ -14,8 +14,6 @@ import com.suisung.mall.common.modules.base.ShopBaseProductType;
import com.suisung.mall.common.modules.product.*; import com.suisung.mall.common.modules.product.*;
import com.suisung.mall.common.modules.sync.SyncStoreSpecs; import com.suisung.mall.common.modules.sync.SyncStoreSpecs;
import com.suisung.mall.common.utils.StringUtils; import com.suisung.mall.common.utils.StringUtils;
import com.suisung.mall.core.consts.ConstantRedis;
import com.suisung.mall.core.web.service.RedisService;
import com.suisung.mall.shop.base.service.ShopBaseProductSpecService; import com.suisung.mall.shop.base.service.ShopBaseProductSpecService;
import com.suisung.mall.shop.base.service.ShopBaseProductTypeService; import com.suisung.mall.shop.base.service.ShopBaseProductTypeService;
import com.suisung.mall.shop.number.service.ShopNumberSeqService; import com.suisung.mall.shop.number.service.ShopNumberSeqService;
@ -72,8 +70,6 @@ public class SyncStoreSpecsServiceImpl extends ServiceImpl<SyncStoreSpecsMapper,
private SyncStoreSpecsMapper syncStoreSpecsMapper; private SyncStoreSpecsMapper syncStoreSpecsMapper;
@Autowired
private RedisService redisService;
@Autowired @Autowired
private PlatformTransactionManager transactionManager; private PlatformTransactionManager transactionManager;
@ -276,7 +272,6 @@ public class SyncStoreSpecsServiceImpl extends ServiceImpl<SyncStoreSpecsMapper,
// shopProductSpecItemService.updateBatchById(updateSpecItemList,updateSpecItemList.size()); // shopProductSpecItemService.updateBatchById(updateSpecItemList,updateSpecItemList.size());
// } // }
//3新增规格类型 //3新增规格类型
List<String> shopBaseProductTypeReidisKeyList=new ArrayList<>();
List<ShopBaseProductType> shopBaseProductTypes= getShopBaseProductTypeList(syncStoreSpecsList,storeId); List<ShopBaseProductType> shopBaseProductTypes= getShopBaseProductTypeList(syncStoreSpecsList,storeId);
for(ShopBaseProductType shopBaseProductType:shopBaseProductTypes){ for(ShopBaseProductType shopBaseProductType:shopBaseProductTypes){
List<Integer> specIdList=new ArrayList<>(); List<Integer> specIdList=new ArrayList<>();
@ -295,11 +290,9 @@ public class SyncStoreSpecsServiceImpl extends ServiceImpl<SyncStoreSpecsMapper,
shopBaseProductType.setType_spec_ids(typeSpecIds); shopBaseProductType.setType_spec_ids(typeSpecIds);
} }
} }
shopBaseProductTypeReidisKeyList.add(ConstantRedis.Cache_NameSpace + "shop_base_product_type:" +shopBaseProductType.getType_id());
} }
if(!shopBaseProductTypes.isEmpty()){//更新规格类型 if(!shopBaseProductTypes.isEmpty()){//更新规格类型
shopBaseProductTypeService.updateBatchById(shopBaseProductTypes,shopBaseProductTypes.size()); shopBaseProductTypeService.updateBatchById(shopBaseProductTypes,shopBaseProductTypes.size());
redisService.del(shopBaseProductTypeReidisKeyList);
} }
//4新增shopItem //4新增shopItem
List<ShopProductItem> addShopProductItemList=new ArrayList<>(); List<ShopProductItem> addShopProductItemList=new ArrayList<>();
@ -336,10 +329,8 @@ public class SyncStoreSpecsServiceImpl extends ServiceImpl<SyncStoreSpecsMapper,
item.setItem_title(""); item.setItem_title("");
item.setItem_freetime(0); item.setItem_freetime(0);
item.setCategory_id(specCateGoryMap.get(item.getItem_barcode())); item.setCategory_id(specCateGoryMap.get(item.getItem_barcode()));
item.setStore_id(storeId); if(existProductItemMap.containsKey(item.getItem_name())){
if(existProductItemMap.containsKey(item.getItem_barcode())||existProductItemMap.containsKey(item.getItem_name())){ item.setItem_id(existProductItemMap.get(item.getItem_barcode()));
Long itemId=null!=existProductItemMap.get(item.getItem_barcode())?existProductItemMap.get(item.getItem_barcode()):existProductItemMap.get(item.getItem_name());
item.setItem_id(itemId);
updateShopProductItemList.add(item); updateShopProductItemList.add(item);
}else { }else {
addShopProductItemList.add(item); addShopProductItemList.add(item);
@ -351,10 +342,7 @@ public class SyncStoreSpecsServiceImpl extends ServiceImpl<SyncStoreSpecsMapper,
addShopProductItemList.get(i).setItem_id(generatedIds.get(i)); addShopProductItemList.get(i).setItem_id(generatedIds.get(i));
addShopProductItemList.get(i).setItem_src_id(String.valueOf(generatedIds.get(i))); addShopProductItemList.get(i).setItem_src_id(String.valueOf(generatedIds.get(i)));
} }
List<ShopProductItem> addShopProductItemListFilter= addShopProductItemList.stream() shopProductItemService.saveBatch(addShopProductItemList,addShopProductItemList.size());
.filter(com.suisung.mall.common.utils.CommonUtil.distinctByKey(ShopProductItem::getItem_name))
.collect(Collectors.toList());
shopProductItemService.saveBatch(addShopProductItemListFilter,addShopProductItemListFilter.size());
} }
if(!updateShopProductItemList.isEmpty()){ if(!updateShopProductItemList.isEmpty()){
shopProductItemService.updateBatchById(updateShopProductItemList,updateShopProductItemList.size()); shopProductItemService.updateBatchById(updateShopProductItemList,updateShopProductItemList.size());
@ -418,42 +406,36 @@ public class SyncStoreSpecsServiceImpl extends ServiceImpl<SyncStoreSpecsMapper,
spui.setSpec_ids(spec_ids); spui.setSpec_ids(spec_ids);
Map<String,cn.hutool.json.JSONArray> specItemJson=new HashMap<>(); Map<String,cn.hutool.json.JSONArray> specItemJson=new HashMap<>();
//cn.hutool.json.JSONArray productUniqidjsonArray=new cn.hutool.json.JSONArray(); cn.hutool.json.JSONArray productUniqidjsonArray=new cn.hutool.json.JSONArray();
Map product_uniqidMap = new HashMap();
AtomicReference<Integer> itemQuantity= new AtomicReference<>(0); AtomicReference<Integer> itemQuantity= new AtomicReference<>(0);
Map<String,String> jsonArraySpecItemJson=new HashMap<>();
sItemList.forEach(item->{ sItemList.forEach(item->{
String itemSpec=item.getItem_spec(); String itemSpec=item.getItem_spec();
cn.hutool.json.JSONArray arrayItemSpec = cn.hutool.json.JSONUtil.parseArray(itemSpec); cn.hutool.json.JSONArray arrayItemSpec = cn.hutool.json.JSONUtil.parseArray(itemSpec);
//cn.hutool.json.JSONObject uniqidItemJson=new cn.hutool.json.JSONObject(); cn.hutool.json.JSONObject uniqidItemJson=new cn.hutool.json.JSONObject();
String specItemIdSpecItemId=""; String specItemIdSpecItemId="";
for (Object josn_item_spec : arrayItemSpec) { for (Object josn_item_spec : arrayItemSpec) {
Integer specId = Convert.toInt(((cn.hutool.json.JSONObject) josn_item_spec).get("id")); Integer specId = Convert.toInt(((cn.hutool.json.JSONObject) josn_item_spec).get("id"));
String specName = Convert.toStr(((cn.hutool.json.JSONObject) josn_item_spec).get("name")); Integer specName = Convert.toInt(((cn.hutool.json.JSONObject) josn_item_spec).get("name"));
String specIdName=specId+"-"+specName; String specIdName=specId+"-"+specName;
cn.hutool.json.JSONObject itemJson = (cn.hutool.json.JSONObject) ((cn.hutool.json.JSONObject) josn_item_spec).get("item"); cn.hutool.json.JSONObject itemJson = (cn.hutool.json.JSONObject) ((cn.hutool.json.JSONObject) josn_item_spec).get("item");
if(!jsonArraySpecItemJson.containsKey(itemJson.toString())){ cn.hutool.json.JSONArray itemsJsonArray=new cn.hutool.json.JSONArray();
jsonArraySpecItemJson.put(itemJson.toString(),itemSpec); if(specItemJson.containsKey(specIdName)){
cn.hutool.json.JSONArray itemsJsonArray=new cn.hutool.json.JSONArray(); itemsJsonArray=specItemJson.get(specIdName);
if(specItemJson.containsKey(specIdName)){
itemsJsonArray=specItemJson.get(specIdName);
}
itemsJsonArray.add(itemJson);
specItemJson.put(specIdName,itemsJsonArray);
} }
itemsJsonArray.add(itemJson);
specItemJson.put(specIdName,itemsJsonArray);
if(StringUtils.isNotEmpty(specItemIdSpecItemId)){ if(StringUtils.isNotEmpty(specItemIdSpecItemId)){
specItemIdSpecItemId=specItemIdSpecItemId+"-"+itemJson.getStr("id"); specItemIdSpecItemId=specItemIdSpecItemId+"-"+itemJson.getStr("id");
}else { }else {
specItemIdSpecItemId=itemJson.getStr("id"); specItemIdSpecItemId=itemJson.getStr("id");
} }
} }
product_uniqidMap.put(specItemIdSpecItemId,new Object[]{item.getItem_id(),item.getItem_quantity(),"",1001}); uniqidItemJson.set(specItemIdSpecItemId,new Object[]{item.getItem_id(),item.getItem_quantity(),"","1001"});
// productUniqidjsonArray.add(uniqidItemJson); productUniqidjsonArray.add(uniqidItemJson);
itemQuantity.updateAndGet(v -> v + item.getItem_quantity()); itemQuantity.updateAndGet(v -> v + item.getItem_quantity());
}); });
itemQualityMap.put(productId,itemQuantity.get()); itemQualityMap.put(productId,itemQuantity.get());
cn.hutool.json.JSONArray jsonArraySpecItem=new cn.hutool.json.JSONArray(); cn.hutool.json.JSONArray jsonArraySpecItem=new cn.hutool.json.JSONArray();
specItemJson.forEach((key,jsonArray)->{ specItemJson.forEach((key,jsonArray)->{
cn.hutool.json.JSONObject itemJson = new cn.hutool.json.JSONObject(); cn.hutool.json.JSONObject itemJson = new cn.hutool.json.JSONObject();
itemJson.set("item",jsonArray); itemJson.set("item",jsonArray);
@ -466,7 +448,7 @@ public class SyncStoreSpecsServiceImpl extends ServiceImpl<SyncStoreSpecsMapper,
jsonArraySpecItem.add(itemJson); jsonArraySpecItem.add(itemJson);
}); });
String product_spec= JSONUtil.toJsonStr(jsonArraySpecItem); String product_spec= JSONUtil.toJsonStr(jsonArraySpecItem);
String product_uniqid=JSONUtil.toJsonStr(product_uniqidMap); String product_uniqid=JSONUtil.toJsonStr(productUniqidjsonArray);
spui.setProduct_spec(product_spec); spui.setProduct_spec(product_spec);
spui.setProduct_uniqid(product_uniqid); spui.setProduct_uniqid(product_uniqid);
updateShopProductInfoList.add(spui); updateShopProductInfoList.add(spui);
@ -502,25 +484,23 @@ public class SyncStoreSpecsServiceImpl extends ServiceImpl<SyncStoreSpecsMapper,
//shopitem 最后删除没有规格的商品 //shopitem 最后删除没有规格的商品
QueryWrapper<ShopProductItem> queryWrapper=new QueryWrapper<>(); QueryWrapper<ShopProductItem> queryWrapper=new QueryWrapper<>();
queryWrapper.select("item_id"); queryWrapper.select("item_id");
if(!shopProductIndexList.isEmpty()){ for (ShopProductIndex shopProductIndex:shopProductIndexList) {
for (ShopProductIndex shopProductIndex:shopProductIndexList) { queryWrapper.or(q->q.eq("store_id",storeId)
queryWrapper.or(q->q.eq("store_id",storeId) .eq("product_id",shopProductIndex.getProduct_id())
.eq("product_id",shopProductIndex.getProduct_id()) .and(wrapper->wrapper.eq("item_name","")
.and(wrapper->wrapper.eq("item_name","") .or()
.or() .isNull("item_name")));
.isNull("item_name"))); }
} List<ShopProductItem> queryShopProductItemList=shopProductItemService.list(queryWrapper);
List<ShopProductItem> queryShopProductItemList=shopProductItemService.list(queryWrapper); if(!queryShopProductItemList.isEmpty()){
if(!queryShopProductItemList.isEmpty()){ List<Long> ItemIds= queryShopProductItemList.stream().map(ShopProductItem::getItem_id).collect(Collectors.toList());
List<Long> ItemIds= queryShopProductItemList.stream().map(ShopProductItem::getItem_id).collect(Collectors.toList()); QueryWrapper<ShopProductItemSeq> shopProductItemSeqQueryWrapper=new QueryWrapper<>();
QueryWrapper<ShopProductItemSeq> shopProductItemSeqQueryWrapper=new QueryWrapper<>(); shopProductItemSeqQueryWrapper.select("product_item_seq_id");
shopProductItemSeqQueryWrapper.select("product_item_seq_id"); shopProductItemSeqQueryWrapper.eq("item_id",ItemIds);
shopProductItemSeqQueryWrapper.eq("item_id",ItemIds); List<ShopProductItemSeq> rmSeq= shopProductItemSeqService.list(shopProductItemSeqQueryWrapper);
List<ShopProductItemSeq> rmSeq= shopProductItemSeqService.list(shopProductItemSeqQueryWrapper); List<String> rmSeqIds=rmSeq.stream().map(ShopProductItemSeq::getProduct_item_seq_id).collect(Collectors.toList());
List<String> rmSeqIds=rmSeq.stream().map(ShopProductItemSeq::getProduct_item_seq_id).collect(Collectors.toList()); shopProductItemSeqService.removeBatchByIds(rmSeqIds);
shopProductItemSeqService.removeBatchByIds(rmSeqIds); shopProductItemService.removeBatchByIds(ItemIds,ItemIds.size());
shopProductItemService.removeBatchByIds(ItemIds,ItemIds.size());
}
} }
}catch (Exception e){ }catch (Exception e){
status.setRollbackOnly(); status.setRollbackOnly();
@ -601,12 +581,7 @@ public class SyncStoreSpecsServiceImpl extends ServiceImpl<SyncStoreSpecsMapper,
List<ShopProductItem> shopProductItemList=shopProductItemService.list(wrapper); List<ShopProductItem> shopProductItemList=shopProductItemService.list(wrapper);
Map<String,Long> result=new HashMap<>(); Map<String,Long> result=new HashMap<>();
for (ShopProductItem shopProductItem : shopProductItemList) { for (ShopProductItem shopProductItem : shopProductItemList) {
if(StringUtils.isNotEmpty(shopProductItem.getItem_name())){ result.put(shopProductItem.getItem_name(),shopProductItem.getItem_id());
result.put(shopProductItem.getItem_name(),shopProductItem.getItem_id());
}else {
result.put(shopProductItem.getItem_barcode(),shopProductItem.getItem_id());
}
} }
return result; return result;
} }

View File

@ -19,7 +19,7 @@
and number =(select max(item_id) from shop_product_item)+1 and number =(select max(item_id) from shop_product_item)+1
</select> </select>
<select id="findProductAndImtemId" resultMap="shopNumberSeqMap"> <select id="findProductAndImtemId">
SELECT * from shop_number_seq where prefix in("product_id","item_id") SELECT * from shop_number_seq where prefix in("product_id","item_id")
</select> </select>

View File

@ -1,3 +0,0 @@
alter table shop_base_product_type drop INDEX type_is_draft;
alter table shop_base_product_type drop INDEX type_spec_ids;
alter table shop_base_product_type drop INDEX idx_shop_base_product_type_type_name;