|
|
|
@ -14,6 +14,8 @@ 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;
|
|
|
|
@ -70,6 +72,8 @@ public class SyncStoreSpecsServiceImpl extends ServiceImpl<SyncStoreSpecsMapper,
|
|
|
|
private SyncStoreSpecsMapper syncStoreSpecsMapper;
|
|
|
|
private SyncStoreSpecsMapper syncStoreSpecsMapper;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private RedisService redisService;
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private PlatformTransactionManager transactionManager;
|
|
|
|
private PlatformTransactionManager transactionManager;
|
|
|
|
@ -272,6 +276,7 @@ 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<>();
|
|
|
|
@ -290,9 +295,11 @@ 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<>();
|
|
|
|
@ -329,8 +336,10 @@ 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()));
|
|
|
|
if(existProductItemMap.containsKey(item.getItem_name())){
|
|
|
|
item.setStore_id(storeId);
|
|
|
|
item.setItem_id(existProductItemMap.get(item.getItem_barcode()));
|
|
|
|
if(existProductItemMap.containsKey(item.getItem_barcode())||existProductItemMap.containsKey(item.getItem_name())){
|
|
|
|
|
|
|
|
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);
|
|
|
|
@ -342,7 +351,10 @@ 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)));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
shopProductItemService.saveBatch(addShopProductItemList,addShopProductItemList.size());
|
|
|
|
List<ShopProductItem> addShopProductItemListFilter= addShopProductItemList.stream()
|
|
|
|
|
|
|
|
.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());
|
|
|
|
@ -406,36 +418,42 @@ 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"));
|
|
|
|
Integer specName = Convert.toInt(((cn.hutool.json.JSONObject) josn_item_spec).get("name"));
|
|
|
|
String specName = Convert.toStr(((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");
|
|
|
|
cn.hutool.json.JSONArray itemsJsonArray=new cn.hutool.json.JSONArray();
|
|
|
|
if(!jsonArraySpecItemJson.containsKey(itemJson.toString())){
|
|
|
|
if(specItemJson.containsKey(specIdName)){
|
|
|
|
jsonArraySpecItemJson.put(itemJson.toString(),itemSpec);
|
|
|
|
itemsJsonArray=specItemJson.get(specIdName);
|
|
|
|
cn.hutool.json.JSONArray itemsJsonArray=new cn.hutool.json.JSONArray();
|
|
|
|
|
|
|
|
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");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uniqidItemJson.set(specItemIdSpecItemId,new Object[]{item.getItem_id(),item.getItem_quantity(),"","1001"});
|
|
|
|
product_uniqidMap.put(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);
|
|
|
|
@ -448,7 +466,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(productUniqidjsonArray);
|
|
|
|
String product_uniqid=JSONUtil.toJsonStr(product_uniqidMap);
|
|
|
|
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);
|
|
|
|
@ -484,23 +502,25 @@ 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");
|
|
|
|
for (ShopProductIndex shopProductIndex:shopProductIndexList) {
|
|
|
|
if(!shopProductIndexList.isEmpty()){
|
|
|
|
queryWrapper.or(q->q.eq("store_id",storeId)
|
|
|
|
for (ShopProductIndex shopProductIndex:shopProductIndexList) {
|
|
|
|
.eq("product_id",shopProductIndex.getProduct_id())
|
|
|
|
queryWrapper.or(q->q.eq("store_id",storeId)
|
|
|
|
.and(wrapper->wrapper.eq("item_name","")
|
|
|
|
.eq("product_id",shopProductIndex.getProduct_id())
|
|
|
|
.or()
|
|
|
|
.and(wrapper->wrapper.eq("item_name","")
|
|
|
|
.isNull("item_name")));
|
|
|
|
.or()
|
|
|
|
}
|
|
|
|
.isNull("item_name")));
|
|
|
|
List<ShopProductItem> queryShopProductItemList=shopProductItemService.list(queryWrapper);
|
|
|
|
}
|
|
|
|
if(!queryShopProductItemList.isEmpty()){
|
|
|
|
List<ShopProductItem> queryShopProductItemList=shopProductItemService.list(queryWrapper);
|
|
|
|
List<Long> ItemIds= queryShopProductItemList.stream().map(ShopProductItem::getItem_id).collect(Collectors.toList());
|
|
|
|
if(!queryShopProductItemList.isEmpty()){
|
|
|
|
QueryWrapper<ShopProductItemSeq> shopProductItemSeqQueryWrapper=new QueryWrapper<>();
|
|
|
|
List<Long> ItemIds= queryShopProductItemList.stream().map(ShopProductItem::getItem_id).collect(Collectors.toList());
|
|
|
|
shopProductItemSeqQueryWrapper.select("product_item_seq_id");
|
|
|
|
QueryWrapper<ShopProductItemSeq> shopProductItemSeqQueryWrapper=new QueryWrapper<>();
|
|
|
|
shopProductItemSeqQueryWrapper.eq("item_id",ItemIds);
|
|
|
|
shopProductItemSeqQueryWrapper.select("product_item_seq_id");
|
|
|
|
List<ShopProductItemSeq> rmSeq= shopProductItemSeqService.list(shopProductItemSeqQueryWrapper);
|
|
|
|
shopProductItemSeqQueryWrapper.eq("item_id",ItemIds);
|
|
|
|
List<String> rmSeqIds=rmSeq.stream().map(ShopProductItemSeq::getProduct_item_seq_id).collect(Collectors.toList());
|
|
|
|
List<ShopProductItemSeq> rmSeq= shopProductItemSeqService.list(shopProductItemSeqQueryWrapper);
|
|
|
|
shopProductItemSeqService.removeBatchByIds(rmSeqIds);
|
|
|
|
List<String> rmSeqIds=rmSeq.stream().map(ShopProductItemSeq::getProduct_item_seq_id).collect(Collectors.toList());
|
|
|
|
shopProductItemService.removeBatchByIds(ItemIds,ItemIds.size());
|
|
|
|
shopProductItemSeqService.removeBatchByIds(rmSeqIds);
|
|
|
|
|
|
|
|
shopProductItemService.removeBatchByIds(ItemIds,ItemIds.size());
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}catch (Exception e){
|
|
|
|
}catch (Exception e){
|
|
|
|
status.setRollbackOnly();
|
|
|
|
status.setRollbackOnly();
|
|
|
|
@ -581,7 +601,12 @@ 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) {
|
|
|
|
result.put(shopProductItem.getItem_name(),shopProductItem.getItem_id());
|
|
|
|
if(StringUtils.isNotEmpty(shopProductItem.getItem_name())){
|
|
|
|
|
|
|
|
result.put(shopProductItem.getItem_name(),shopProductItem.getItem_id());
|
|
|
|
|
|
|
|
}else {
|
|
|
|
|
|
|
|
result.put(shopProductItem.getItem_barcode(),shopProductItem.getItem_id());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return result;
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|