新增pdd商品推送到商品库
This commit is contained in:
parent
417e557388
commit
1f54d0c0b7
|
|
@ -1,10 +1,7 @@
|
||||||
package cn.qihangerp.api.pdd.controller;
|
package cn.qihangerp.api.pdd.controller;
|
||||||
|
|
||||||
|
|
||||||
import cn.qihangerp.common.AjaxResult;
|
import cn.qihangerp.common.*;
|
||||||
import cn.qihangerp.common.PageQuery;
|
|
||||||
import cn.qihangerp.common.PageResult;
|
|
||||||
import cn.qihangerp.common.TableDataInfo;
|
|
||||||
import cn.qihangerp.domain.bo.LinkErpGoodsSkuBo;
|
import cn.qihangerp.domain.bo.LinkErpGoodsSkuBo;
|
||||||
import cn.qihangerp.module.goods.domain.OGoodsSku;
|
import cn.qihangerp.module.goods.domain.OGoodsSku;
|
||||||
import cn.qihangerp.module.goods.service.OGoodsSkuService;
|
import cn.qihangerp.module.goods.service.OGoodsSkuService;
|
||||||
|
|
@ -19,6 +16,9 @@ import lombok.AllArgsConstructor;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@RequestMapping("/pdd/goods")
|
@RequestMapping("/pdd/goods")
|
||||||
@RestController
|
@RestController
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
|
|
@ -34,8 +34,8 @@ public class PddGoodsController extends BaseController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(value = "/skuList", method = RequestMethod.GET)
|
@RequestMapping(value = "/skuList", method = RequestMethod.GET)
|
||||||
public TableDataInfo skuList(PddGoodsBo bo, PageQuery pageQuery) {
|
public TableDataInfo skuList(PddGoodsSku bo, PageQuery pageQuery) {
|
||||||
PageResult<PddGoodsSkuListVo> result = skuService.queryPageList(bo, pageQuery);
|
PageResult<PddGoodsSku> result = skuService.queryPageList(bo, pageQuery);
|
||||||
|
|
||||||
return getDataTable(result);
|
return getDataTable(result);
|
||||||
}
|
}
|
||||||
|
|
@ -57,18 +57,36 @@ public class PddGoodsController extends BaseController {
|
||||||
if(StringUtils.isBlank(bo.getErpGoodsSkuId())){
|
if(StringUtils.isBlank(bo.getErpGoodsSkuId())){
|
||||||
return AjaxResult.error(500,"缺少参数oGoodsSkuId");
|
return AjaxResult.error(500,"缺少参数oGoodsSkuId");
|
||||||
}
|
}
|
||||||
OGoodsSku oGoodsSku = oGoodsSkuService.getById(bo.getErpGoodsSkuId());
|
ResultVo resultVo = skuService.linkErpGoodsSku(bo);
|
||||||
if(oGoodsSku == null) return AjaxResult.error(1500,"未找到商品库sku");
|
if(resultVo.getCode()==0)
|
||||||
PddGoodsSku sku = new PddGoodsSku();
|
|
||||||
sku.setId(bo.getId().toString());
|
|
||||||
sku.setOGoodsSkuId(bo.getErpGoodsSkuId());
|
|
||||||
skuService.updateById(sku);
|
|
||||||
return success();
|
return success();
|
||||||
// PddGoodsSku sku = new PddGoodsSku();
|
else return AjaxResult.error(resultVo.getMsg());
|
||||||
// sku.setId(bo.getId());
|
}
|
||||||
// sku.setOGoodsSkuId(Long.parseLong(bo.getErpSkuId()));
|
|
||||||
// skuService.updateById(sku);
|
/**
|
||||||
// return success();
|
* 推送商品到OMS
|
||||||
|
* @param ids
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("/push_oms")
|
||||||
|
@ResponseBody
|
||||||
|
public AjaxResult pushOms(@RequestBody String[] ids) {
|
||||||
|
if (ids == null || ids.length == 0) return AjaxResult.error("缺少参数");
|
||||||
|
int success = 0;
|
||||||
|
int isExist = 0;
|
||||||
|
int fail = 0;
|
||||||
|
for (String id : ids) {
|
||||||
|
ResultVo resultVo = goodsService.pushToOms(Long.parseLong(id));
|
||||||
|
if(resultVo.getCode()==0) success++;
|
||||||
|
else if(resultVo.getCode()==ResultVoEnum.DataExist.getIndex()) isExist++;
|
||||||
|
else fail++;
|
||||||
|
}
|
||||||
|
Map<String, Object> map = new HashMap<>();
|
||||||
|
map.put("success", success);
|
||||||
|
map.put("isExist", isExist);
|
||||||
|
map.put("fail", fail);
|
||||||
|
map.put("total", success + isExist+fail);
|
||||||
|
return success(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -142,6 +143,7 @@ public class JdGoods implements Serializable {
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "#.##")
|
||||||
private BigDecimal jdPrice;
|
private BigDecimal jdPrice;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -40,6 +42,7 @@ public class JdGoodsSku implements Serializable {
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "#.##")
|
||||||
private BigDecimal jdPrice;
|
private BigDecimal jdPrice;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import java.io.Serializable;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -63,6 +64,13 @@ public class PddGoods implements Serializable {
|
||||||
*/
|
*/
|
||||||
private Long marketPrice;
|
private Long marketPrice;
|
||||||
|
|
||||||
|
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "#.##")
|
||||||
|
public double getFormattedPrice() {
|
||||||
|
if(marketPrice == null){
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return marketPrice / 100;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 商品创建时间的时间戳
|
* 商品创建时间的时间戳
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -16,4 +16,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
public interface PddGoodsService extends IService<PddGoods> {
|
public interface PddGoodsService extends IService<PddGoods> {
|
||||||
PageResult<PddGoods> queryPageList(PddGoodsBo bo, PageQuery pageQuery);
|
PageResult<PddGoods> queryPageList(PddGoodsBo bo, PageQuery pageQuery);
|
||||||
ResultVo<Integer> saveGoods(Long shopId, PddGoods goods);
|
ResultVo<Integer> saveGoods(Long shopId, PddGoods goods);
|
||||||
|
ResultVo pushToOms(Long taoGoodsId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,21 @@
|
||||||
package cn.qihangerp.module.open.pdd.service;
|
package cn.qihangerp.module.open.pdd.service;
|
||||||
|
|
||||||
|
import cn.qihangerp.common.PageQuery;
|
||||||
|
import cn.qihangerp.common.PageResult;
|
||||||
|
import cn.qihangerp.common.ResultVo;
|
||||||
|
import cn.qihangerp.domain.bo.LinkErpGoodsSkuBo;
|
||||||
import cn.qihangerp.module.open.pdd.domain.PddGoodsSku;
|
import cn.qihangerp.module.open.pdd.domain.PddGoodsSku;
|
||||||
|
import cn.qihangerp.module.open.pdd.domain.bo.PddGoodsBo;
|
||||||
|
import cn.qihangerp.module.open.pdd.domain.vo.PddGoodsSkuListVo;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author qilip
|
* @author TW
|
||||||
* @description 针对表【oms_pdd_goods_sku(pdd商品SKU表)】的数据库操作Service
|
* @description 针对表【pdd_goods_sku(pdd商品SKU表)】的数据库操作Service
|
||||||
* @createDate 2025-05-20 12:30:47
|
* @createDate 2024-06-04 17:11:49
|
||||||
*/
|
*/
|
||||||
public interface PddGoodsSkuService extends IService<PddGoodsSku> {
|
public interface PddGoodsSkuService extends IService<PddGoodsSku> {
|
||||||
|
PageResult<PddGoodsSku> queryPageList(PddGoodsSku bo, PageQuery pageQuery);
|
||||||
|
ResultVo linkErpGoodsSku(LinkErpGoodsSkuBo bo);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,13 @@ package cn.qihangerp.module.open.pdd.service.impl;
|
||||||
import cn.qihangerp.common.PageQuery;
|
import cn.qihangerp.common.PageQuery;
|
||||||
import cn.qihangerp.common.PageResult;
|
import cn.qihangerp.common.PageResult;
|
||||||
import cn.qihangerp.common.ResultVo;
|
import cn.qihangerp.common.ResultVo;
|
||||||
|
import cn.qihangerp.common.ResultVoEnum;
|
||||||
import cn.qihangerp.common.utils.StringUtils;
|
import cn.qihangerp.common.utils.StringUtils;
|
||||||
|
import cn.qihangerp.module.goods.domain.OGoods;
|
||||||
|
import cn.qihangerp.module.goods.domain.OGoodsInventory;
|
||||||
import cn.qihangerp.module.goods.domain.OGoodsSku;
|
import cn.qihangerp.module.goods.domain.OGoodsSku;
|
||||||
|
import cn.qihangerp.module.goods.mapper.OGoodsInventoryMapper;
|
||||||
|
import cn.qihangerp.module.goods.mapper.OGoodsMapper;
|
||||||
import cn.qihangerp.module.goods.mapper.OGoodsSkuMapper;
|
import cn.qihangerp.module.goods.mapper.OGoodsSkuMapper;
|
||||||
import cn.qihangerp.module.open.pdd.domain.PddGoods;
|
import cn.qihangerp.module.open.pdd.domain.PddGoods;
|
||||||
import cn.qihangerp.module.open.pdd.domain.PddGoodsSku;
|
import cn.qihangerp.module.open.pdd.domain.PddGoodsSku;
|
||||||
|
|
@ -13,6 +18,8 @@ import cn.qihangerp.module.open.pdd.domain.bo.PddGoodsBo;
|
||||||
import cn.qihangerp.module.open.pdd.mapper.PddGoodsMapper;
|
import cn.qihangerp.module.open.pdd.mapper.PddGoodsMapper;
|
||||||
import cn.qihangerp.module.open.pdd.mapper.PddGoodsSkuMapper;
|
import cn.qihangerp.module.open.pdd.mapper.PddGoodsSkuMapper;
|
||||||
import cn.qihangerp.module.open.pdd.service.PddGoodsService;
|
import cn.qihangerp.module.open.pdd.service.PddGoodsService;
|
||||||
|
import com.alibaba.fastjson2.JSONArray;
|
||||||
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
|
@ -20,8 +27,10 @@ import lombok.AllArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author TW
|
* @author TW
|
||||||
|
|
@ -35,12 +44,19 @@ public class PddGoodsServiceImpl extends ServiceImpl<PddGoodsMapper, PddGoods>
|
||||||
private final PddGoodsMapper mapper;
|
private final PddGoodsMapper mapper;
|
||||||
private final PddGoodsSkuMapper skuMapper;
|
private final PddGoodsSkuMapper skuMapper;
|
||||||
private final OGoodsSkuMapper goodsSkuMapper;
|
private final OGoodsSkuMapper goodsSkuMapper;
|
||||||
|
private final OGoodsMapper goodsMapper;
|
||||||
|
private final OGoodsInventoryMapper inventoryMapper;
|
||||||
@Override
|
@Override
|
||||||
public PageResult<PddGoods> queryPageList(PddGoodsBo bo, PageQuery pageQuery) {
|
public PageResult<PddGoods> queryPageList(PddGoodsBo bo, PageQuery pageQuery) {
|
||||||
LambdaQueryWrapper<PddGoods> queryWrapper = new LambdaQueryWrapper<PddGoods>()
|
LambdaQueryWrapper<PddGoods> queryWrapper = new LambdaQueryWrapper<PddGoods>()
|
||||||
.eq(bo.getShopId()!=null,PddGoods::getShopId,bo.getShopId());
|
.eq(bo.getShopId()!=null,PddGoods::getShopId,bo.getShopId());
|
||||||
|
|
||||||
Page<PddGoods> goodsPage = mapper.selectPage(pageQuery.build(), queryWrapper);
|
Page<PddGoods> goodsPage = mapper.selectPage(pageQuery.build(), queryWrapper);
|
||||||
|
if(goodsPage.getRecords()!=null&&goodsPage.getRecords().size()>0){
|
||||||
|
for(PddGoods goods : goodsPage.getRecords()){
|
||||||
|
goods.setSkuList(skuMapper.selectList(new LambdaQueryWrapper<PddGoodsSku>().eq(PddGoodsSku::getGoodsId,goods.getGoodsId())));
|
||||||
|
}
|
||||||
|
}
|
||||||
return PageResult.build(goodsPage);
|
return PageResult.build(goodsPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -105,6 +121,178 @@ public class PddGoodsServiceImpl extends ServiceImpl<PddGoodsMapper, PddGoods>
|
||||||
}
|
}
|
||||||
return ResultVo.success();
|
return ResultVo.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
@Override
|
||||||
|
public ResultVo pushToOms(Long taoGoodsId) {
|
||||||
|
PddGoods shopGoods = mapper.selectById(taoGoodsId);
|
||||||
|
if(shopGoods==null) return ResultVo.error("店铺商品数据不存在");
|
||||||
|
|
||||||
|
List<PddGoodsSku> shopGoodsSkus = skuMapper.selectList(new LambdaQueryWrapper<PddGoodsSku>().eq(PddGoodsSku::getGoodsId, shopGoods.getGoodsId()));
|
||||||
|
if(shopGoodsSkus==null || shopGoodsSkus.isEmpty()) return ResultVo.error("店铺商品Sku数据不存在");
|
||||||
|
|
||||||
|
String goodsNum ="";
|
||||||
|
if(org.springframework.util.StringUtils.hasText(shopGoods.getOuterGoodsId())){
|
||||||
|
goodsNum = shopGoods.getOuterGoodsId();
|
||||||
|
// 用商家编码查询
|
||||||
|
List<OGoods> erpGoodsList = goodsMapper.selectList(new LambdaQueryWrapper<OGoods>()
|
||||||
|
.eq(OGoods::getGoodsNum, goodsNum));
|
||||||
|
if(erpGoodsList!=null && !erpGoodsList.isEmpty()){
|
||||||
|
// 存在=======关联
|
||||||
|
//更新shopGoods
|
||||||
|
PddGoods shopGoodsUpdate = new PddGoods();
|
||||||
|
shopGoodsUpdate.setId(shopGoods.getId());
|
||||||
|
shopGoodsUpdate.setErpGoodsId(erpGoodsList.get(0).getId());
|
||||||
|
mapper.updateById(shopGoodsUpdate);
|
||||||
|
|
||||||
|
List<OGoodsSku> oGoodsSkus = goodsSkuMapper.selectList(new LambdaQueryWrapper<OGoodsSku>()
|
||||||
|
.eq(OGoodsSku::getGoodsId, erpGoodsList.get(0).getId())
|
||||||
|
);
|
||||||
|
//更新skus
|
||||||
|
for (var sku:shopGoodsSkus){
|
||||||
|
if(org.springframework.util.StringUtils.hasText(sku.getOuterId())){
|
||||||
|
List<OGoodsSku> oGoodsSkuList = oGoodsSkus.stream().filter(x -> x.getSkuCode().equals(sku.getOuterId())).collect(Collectors.toList());
|
||||||
|
if(oGoodsSkuList!=null && !oGoodsSkuList.isEmpty()){
|
||||||
|
//更新ShopGoodsSku
|
||||||
|
PddGoodsSku shopGoodsSkuUpdate = new PddGoodsSku();
|
||||||
|
shopGoodsSkuUpdate.setId(sku.getId());
|
||||||
|
shopGoodsSkuUpdate.setErpGoodsId(oGoodsSkuList.get(0).getGoodsId());
|
||||||
|
shopGoodsSkuUpdate.setErpGoodsSkuId(oGoodsSkuList.get(0).getId());
|
||||||
|
skuMapper.updateById(shopGoodsSkuUpdate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ResultVo.success("商品已存在,更新关联");
|
||||||
|
}
|
||||||
|
|
||||||
|
}else {
|
||||||
|
goodsNum = shopGoods.getGoodsId().toString();
|
||||||
|
// 用商品ID查询
|
||||||
|
List<OGoods> erpGoodsList = goodsMapper.selectList(new LambdaQueryWrapper<OGoods>()
|
||||||
|
.eq(OGoods::getGoodsNum, goodsNum));
|
||||||
|
if(erpGoodsList!=null && !erpGoodsList.isEmpty()){
|
||||||
|
return ResultVo.error(ResultVoEnum.DataExist.getIndex(),"商品已存在");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 添加商品
|
||||||
|
OGoods erpGoods = new OGoods();
|
||||||
|
erpGoods.setName(shopGoods.getGoodsName());
|
||||||
|
erpGoods.setImage(shopGoods.getThumbUrl());
|
||||||
|
erpGoods.setGoodsNum(goodsNum);
|
||||||
|
erpGoods.setCategoryId(0L);
|
||||||
|
erpGoods.setRemark("PDD店铺商品同步");
|
||||||
|
erpGoods.setStatus(1);
|
||||||
|
erpGoods.setDisable(1);
|
||||||
|
if (shopGoods.getMarketPrice() != null) {
|
||||||
|
erpGoods.setRetailPrice(BigDecimal.valueOf(shopGoods.getMarketPrice()/100));
|
||||||
|
}
|
||||||
|
erpGoods.setCreateBy("PDD店铺商品同步");
|
||||||
|
erpGoods.setCreateTime(new Date());
|
||||||
|
goodsMapper.insert(erpGoods);
|
||||||
|
|
||||||
|
//更新shopGoods
|
||||||
|
PddGoods shopGoodsUpdate = new PddGoods();
|
||||||
|
shopGoodsUpdate.setId(shopGoods.getId());
|
||||||
|
shopGoodsUpdate.setErpGoodsId(erpGoods.getId());
|
||||||
|
mapper.updateById(shopGoodsUpdate);
|
||||||
|
|
||||||
|
// 添加商品SKU
|
||||||
|
for (var sku:shopGoodsSkus){
|
||||||
|
OGoodsSku erpGoodsSku = new OGoodsSku();
|
||||||
|
erpGoodsSku.setGoodsId(erpGoods.getId());
|
||||||
|
erpGoodsSku.setGoodsName(erpGoods.getName());
|
||||||
|
erpGoodsSku.setGoodsNum(erpGoods.getGoodsNum());
|
||||||
|
//122216927:77835123:家具结构:框架结构;1627207:25326567650:颜色分类:奶油白【进口荔枝纹头层牛皮+碳素钢木排骨架】;21433:50753444:尺寸:1500mm*2000mm
|
||||||
|
// 组合规格
|
||||||
|
String colorLabel="";
|
||||||
|
String colorValue="";
|
||||||
|
String sizeLabel="";
|
||||||
|
String sizeValue="";
|
||||||
|
String styleLabel="";
|
||||||
|
String styleValue="";
|
||||||
|
//组合属性
|
||||||
|
if(org.springframework.util.StringUtils.hasText(sku.getSpec())) {
|
||||||
|
String[] specArr = sku.getSpec().split(" ");
|
||||||
|
if(specArr.length>0){
|
||||||
|
colorLabel="颜色分类";
|
||||||
|
colorValue=specArr[0];
|
||||||
|
}
|
||||||
|
if(specArr.length>1){
|
||||||
|
sizeLabel = "尺寸";
|
||||||
|
sizeValue=specArr[1];
|
||||||
|
}
|
||||||
|
if(specArr.length>2){
|
||||||
|
styleLabel="款式";
|
||||||
|
styleValue=specArr[2];
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
colorValue="默认";
|
||||||
|
colorLabel="颜色分类";
|
||||||
|
}
|
||||||
|
|
||||||
|
erpGoodsSku.setColorId(0L);
|
||||||
|
erpGoodsSku.setColorLabel(colorLabel);
|
||||||
|
erpGoodsSku.setColorValue(colorValue);
|
||||||
|
erpGoodsSku.setSizeId(0L);
|
||||||
|
erpGoodsSku.setSizeLabel(sizeLabel);
|
||||||
|
erpGoodsSku.setSizeValue(sizeValue);
|
||||||
|
erpGoodsSku.setStyleId(0L);
|
||||||
|
erpGoodsSku.setStyleLabel(styleLabel);
|
||||||
|
erpGoodsSku.setStyleValue(styleValue);
|
||||||
|
String skuName="";
|
||||||
|
if(org.springframework.util.StringUtils.hasText(colorValue)){
|
||||||
|
skuName += colorValue+" ";
|
||||||
|
}
|
||||||
|
if(org.springframework.util.StringUtils.hasText(sizeValue)){
|
||||||
|
skuName += sizeValue+" ";
|
||||||
|
}
|
||||||
|
if(org.springframework.util.StringUtils.hasText(styleValue)){
|
||||||
|
skuName += styleValue+" ";
|
||||||
|
}
|
||||||
|
if(!org.springframework.util.StringUtils.hasText(skuName)){
|
||||||
|
skuName = "默认";
|
||||||
|
}
|
||||||
|
erpGoodsSku.setSkuName(skuName);
|
||||||
|
erpGoodsSku.setSkuCode(sku.getOuterId());
|
||||||
|
erpGoodsSku.setColorImage(erpGoods.getImage());
|
||||||
|
|
||||||
|
if(sku.getPrice()!=null){
|
||||||
|
erpGoodsSku.setRetailPrice(BigDecimal.valueOf(sku.getPrice()/100));
|
||||||
|
}
|
||||||
|
erpGoodsSku.setStatus(1);
|
||||||
|
goodsSkuMapper.insert(erpGoodsSku);
|
||||||
|
|
||||||
|
// 初始化商品库存
|
||||||
|
OGoodsInventory inventory = new OGoodsInventory();
|
||||||
|
|
||||||
|
inventory.setGoodsId(erpGoods.getId());
|
||||||
|
inventory.setGoodsNum(erpGoods.getGoodsNum());
|
||||||
|
inventory.setGoodsName(erpGoods.getName());
|
||||||
|
inventory.setGoodsImg(erpGoods.getImage());
|
||||||
|
inventory.setSkuId(erpGoodsSku.getId());
|
||||||
|
inventory.setSkuCode(erpGoodsSku.getSkuCode());
|
||||||
|
inventory.setSkuName(erpGoodsSku.getSkuName());
|
||||||
|
inventory.setQuantity(0L);
|
||||||
|
inventory.setIsDelete(0);
|
||||||
|
inventory.setCreateTime(new Date());
|
||||||
|
inventory.setCreateBy("同步店铺商品初始化商品 sku 库存");
|
||||||
|
inventoryMapper.insert(inventory);
|
||||||
|
|
||||||
|
//更新ShopGoodsSku
|
||||||
|
PddGoodsSku shopGoodsSkuUpdate = new PddGoodsSku();
|
||||||
|
shopGoodsSkuUpdate.setId(sku.getId());
|
||||||
|
shopGoodsSkuUpdate.setErpGoodsId(erpGoods.getId());
|
||||||
|
shopGoodsSkuUpdate.setErpGoodsSkuId(erpGoodsSku.getId());
|
||||||
|
skuMapper.updateById(shopGoodsSkuUpdate);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return ResultVo.success();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,88 @@
|
||||||
package cn.qihangerp.module.open.pdd.service.impl;
|
package cn.qihangerp.module.open.pdd.service.impl;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import cn.qihangerp.common.PageQuery;
|
||||||
|
import cn.qihangerp.common.PageResult;
|
||||||
|
import cn.qihangerp.common.ResultVo;
|
||||||
|
import cn.qihangerp.domain.bo.LinkErpGoodsSkuBo;
|
||||||
|
import cn.qihangerp.module.goods.domain.OGoods;
|
||||||
|
import cn.qihangerp.module.goods.domain.OGoodsSku;
|
||||||
|
import cn.qihangerp.module.goods.service.OGoodsService;
|
||||||
|
import cn.qihangerp.module.goods.service.OGoodsSkuService;
|
||||||
|
import cn.qihangerp.module.open.pdd.domain.PddGoods;
|
||||||
import cn.qihangerp.module.open.pdd.domain.PddGoodsSku;
|
import cn.qihangerp.module.open.pdd.domain.PddGoodsSku;
|
||||||
import cn.qihangerp.module.open.pdd.service.PddGoodsSkuService;
|
import cn.qihangerp.module.open.pdd.domain.bo.PddGoodsBo;
|
||||||
|
import cn.qihangerp.module.open.pdd.domain.vo.PddGoodsSkuListVo;
|
||||||
|
import cn.qihangerp.module.open.pdd.mapper.PddGoodsMapper;
|
||||||
import cn.qihangerp.module.open.pdd.mapper.PddGoodsSkuMapper;
|
import cn.qihangerp.module.open.pdd.mapper.PddGoodsSkuMapper;
|
||||||
|
import cn.qihangerp.module.open.pdd.service.PddGoodsSkuService;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author qilip
|
* @author TW
|
||||||
* @description 针对表【oms_pdd_goods_sku(pdd商品SKU表)】的数据库操作Service实现
|
* @description 针对表【pdd_goods_sku(pdd商品SKU表)】的数据库操作Service实现
|
||||||
* @createDate 2025-05-20 12:30:47
|
* @createDate 2024-06-04 17:11:49
|
||||||
*/
|
*/
|
||||||
|
@AllArgsConstructor
|
||||||
@Service
|
@Service
|
||||||
public class PddGoodsSkuServiceImpl extends ServiceImpl<PddGoodsSkuMapper, PddGoodsSku>
|
public class PddGoodsSkuServiceImpl extends ServiceImpl<PddGoodsSkuMapper, PddGoodsSku>
|
||||||
implements PddGoodsSkuService {
|
implements PddGoodsSkuService {
|
||||||
|
private final PddGoodsSkuMapper mapper;
|
||||||
|
private final PddGoodsMapper pddGoodsMapper;
|
||||||
|
private final OGoodsSkuService oGoodsSkuService;
|
||||||
|
private final OGoodsService oGoodsService;
|
||||||
|
@Override
|
||||||
|
public PageResult<PddGoodsSku> queryPageList(PddGoodsSku bo, PageQuery pageQuery) {
|
||||||
|
LambdaQueryWrapper<PddGoodsSku> ew = new LambdaQueryWrapper<PddGoodsSku>()
|
||||||
|
.eq(bo.getShopId()!=null,PddGoodsSku::getShopId,bo.getShopId())
|
||||||
|
.eq(bo.getGoodsId()!=null,PddGoodsSku::getGoodsId,bo.getGoodsId())
|
||||||
|
.eq(bo.getSkuId()!=null,PddGoodsSku::getSkuId,bo.getSkuId())
|
||||||
|
.eq(StringUtils.hasText(bo.getOuterGoodsId()),PddGoodsSku::getOuterGoodsId,bo.getOuterGoodsId())
|
||||||
|
.eq(StringUtils.hasText(bo.getOuterId()),PddGoodsSku::getOuterId,bo.getOuterId())
|
||||||
|
;
|
||||||
|
IPage<PddGoodsSku> result = mapper.selectPage(pageQuery.build(), ew);
|
||||||
|
return PageResult.build(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
@Override
|
||||||
|
public ResultVo linkErpGoodsSku(LinkErpGoodsSkuBo bo) {
|
||||||
|
OGoodsSku oGoodsSku = oGoodsSkuService.getById(bo.getErpGoodsSkuId());
|
||||||
|
if(oGoodsSku == null) return ResultVo.error("未找到系统商品sku");
|
||||||
|
|
||||||
|
OGoods oGoods=oGoodsService.getById(oGoodsSku.getGoodsId());
|
||||||
|
if(oGoods == null){
|
||||||
|
return ResultVo.error("未找到系统商品");
|
||||||
|
}
|
||||||
|
|
||||||
|
PddGoodsSku taoGoodsSku = mapper.selectById(bo.getId());
|
||||||
|
if(taoGoodsSku == null) {
|
||||||
|
return ResultVo.error("PDD商品sku数据不存在");
|
||||||
|
}
|
||||||
|
List<PddGoods> jdGoods = pddGoodsMapper.selectList(new LambdaQueryWrapper<PddGoods>().eq(PddGoods::getGoodsId, taoGoodsSku.getGoodsId()));
|
||||||
|
if(jdGoods==null||jdGoods.size()==0){
|
||||||
|
return ResultVo.error("PDD商品数据不存在");
|
||||||
|
}
|
||||||
|
|
||||||
|
PddGoodsSku sku = new PddGoodsSku();
|
||||||
|
sku.setId(bo.getId());
|
||||||
|
sku.setErpGoodsId(oGoodsSku.getGoodsId());
|
||||||
|
sku.setErpGoodsSkuId(oGoodsSku.getId());
|
||||||
|
mapper.updateById(sku);
|
||||||
|
|
||||||
|
PddGoods goodsUp=new PddGoods();
|
||||||
|
goodsUp.setId(jdGoods.get(0).getId());
|
||||||
|
goodsUp.setErpGoodsId(oGoodsSku.getGoodsId());
|
||||||
|
pddGoodsMapper.updateById(goodsUp);
|
||||||
|
return ResultVo.success();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -185,8 +185,8 @@ public class PddOrderServiceImpl extends ServiceImpl<PddOrderMapper, PddOrder>
|
||||||
for (var item : order.getItems()) {
|
for (var item : order.getItems()) {
|
||||||
List<PddGoodsSku> pddGoodsSku = goodsSkuMapper.selectList(new LambdaQueryWrapper<PddGoodsSku>().eq(PddGoodsSku::getSkuId, item.getSkuId()));
|
List<PddGoodsSku> pddGoodsSku = goodsSkuMapper.selectList(new LambdaQueryWrapper<PddGoodsSku>().eq(PddGoodsSku::getSkuId, item.getSkuId()));
|
||||||
if (pddGoodsSku != null && !pddGoodsSku.isEmpty()) {
|
if (pddGoodsSku != null && !pddGoodsSku.isEmpty()) {
|
||||||
item.setOGoodsId(pddGoodsSku.get(0).getOGoodsId());
|
item.setOGoodsId(pddGoodsSku.get(0).getErpGoodsId().toString());
|
||||||
item.setOGoodsSkuId(pddGoodsSku.get(0).getOGoodsSkuId());
|
item.setOGoodsSkuId(pddGoodsSku.get(0).getErpGoodsSkuId().toString());
|
||||||
}
|
}
|
||||||
item.setOrderSn(order.getOrderSn());
|
item.setOrderSn(order.getOrderSn());
|
||||||
itemMapper.insert(item);
|
itemMapper.insert(item);
|
||||||
|
|
@ -201,8 +201,8 @@ public class PddOrderServiceImpl extends ServiceImpl<PddOrderMapper, PddOrder>
|
||||||
for (var item : order.getItems()) {
|
for (var item : order.getItems()) {
|
||||||
List<PddGoodsSku> pddGoodsSku = goodsSkuMapper.selectList(new LambdaQueryWrapper<PddGoodsSku>().eq(PddGoodsSku::getSkuId, item.getSkuId()));
|
List<PddGoodsSku> pddGoodsSku = goodsSkuMapper.selectList(new LambdaQueryWrapper<PddGoodsSku>().eq(PddGoodsSku::getSkuId, item.getSkuId()));
|
||||||
if (pddGoodsSku != null && !pddGoodsSku.isEmpty()) {
|
if (pddGoodsSku != null && !pddGoodsSku.isEmpty()) {
|
||||||
item.setOGoodsId(pddGoodsSku.get(0).getOGoodsId());
|
item.setOGoodsId(pddGoodsSku.get(0).getErpGoodsId().toString());
|
||||||
item.setOGoodsSkuId(pddGoodsSku.get(0).getOGoodsSkuId());
|
item.setOGoodsSkuId(pddGoodsSku.get(0).getErpGoodsSkuId().toString());
|
||||||
}
|
}
|
||||||
item.setOrderSn(order.getOrderSn());
|
item.setOrderSn(order.getOrderSn());
|
||||||
itemMapper.insert(item);
|
itemMapper.insert(item);
|
||||||
|
|
|
||||||
|
|
@ -66,16 +66,16 @@ public class PddRefundServiceImpl extends ServiceImpl<PddRefundMapper, PddRefund
|
||||||
mapper.updateById(update);
|
mapper.updateById(update);
|
||||||
List<PddGoodsSku> pddGoodsSku = goodsSkuMapper.selectList(new LambdaQueryWrapper<PddGoodsSku>().eq(PddGoodsSku::getSkuId, refund.getSkuId()));
|
List<PddGoodsSku> pddGoodsSku = goodsSkuMapper.selectList(new LambdaQueryWrapper<PddGoodsSku>().eq(PddGoodsSku::getSkuId, refund.getSkuId()));
|
||||||
if (pddGoodsSku != null && !pddGoodsSku.isEmpty()) {
|
if (pddGoodsSku != null && !pddGoodsSku.isEmpty()) {
|
||||||
refund.setOGoodsId(pddGoodsSku.get(0).getOGoodsId());
|
refund.setOGoodsId(pddGoodsSku.get(0).getErpGoodsId().toString());
|
||||||
refund.setOGoodsSkuId(pddGoodsSku.get(0).getOGoodsSkuId());
|
refund.setOGoodsSkuId(pddGoodsSku.get(0).getErpGoodsSkuId().toString());
|
||||||
}
|
}
|
||||||
return ResultVo.error(ResultVoEnum.DataExist, "退款已经存在,更新成功");
|
return ResultVo.error(ResultVoEnum.DataExist, "退款已经存在,更新成功");
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
List<PddGoodsSku> pddGoodsSku = goodsSkuMapper.selectList(new LambdaQueryWrapper<PddGoodsSku>().eq(PddGoodsSku::getSkuId, refund.getSkuId()));
|
List<PddGoodsSku> pddGoodsSku = goodsSkuMapper.selectList(new LambdaQueryWrapper<PddGoodsSku>().eq(PddGoodsSku::getSkuId, refund.getSkuId()));
|
||||||
if (pddGoodsSku != null && !pddGoodsSku.isEmpty()) {
|
if (pddGoodsSku != null && !pddGoodsSku.isEmpty()) {
|
||||||
refund.setOGoodsId(pddGoodsSku.get(0).getOGoodsId());
|
refund.setOGoodsId(pddGoodsSku.get(0).getErpGoodsId().toString());
|
||||||
refund.setOGoodsSkuId(pddGoodsSku.get(0).getOGoodsSkuId());
|
refund.setOGoodsSkuId(pddGoodsSku.get(0).getErpGoodsSkuId().toString());
|
||||||
}
|
}
|
||||||
refund.setShopId(shopId);
|
refund.setShopId(shopId);
|
||||||
refund.setCreateTime(new Date());
|
refund.setCreateTime(new Date());
|
||||||
|
|
|
||||||
|
|
@ -43,3 +43,11 @@ export function pullGoodsList(data) {
|
||||||
data: data
|
data: data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
//推送商品到商品库
|
||||||
|
export function pushToOms(data) {
|
||||||
|
return request({
|
||||||
|
url: '/api/open-api/pdd/goods/push_oms',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@
|
||||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-table v-loading="loading" :data="goodsList">
|
<el-table v-loading="loading" :data="goodsList" @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
<!-- <el-table-column label="ID" align="center" prop="id" />-->
|
<!-- <el-table-column label="ID" align="center" prop="id" />-->
|
||||||
<el-table-column label="商品ID" align="center" prop="goodsId" />
|
<el-table-column label="商品ID" align="center" prop="goodsId" />
|
||||||
|
|
@ -75,7 +75,8 @@
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="商品名" align="left" prop="goodsName" />
|
<el-table-column label="商品名" align="left" prop="goodsName" />
|
||||||
<el-table-column label="规格" align="center" prop="spec" />
|
<el-table-column label="商家编码" align="center" prop="outerGoodsId" />
|
||||||
|
<el-table-column label="价格" align="center" prop="formattedPrice" />
|
||||||
<el-table-column label="SKU" align="center" >
|
<el-table-column label="SKU" align="center" >
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button
|
<el-button
|
||||||
|
|
@ -92,8 +93,8 @@
|
||||||
<el-tag size="small">{{shopList.find(x=>x.id === scope.row.shopId).name}}</el-tag>
|
<el-tag size="small">{{shopList.find(x=>x.id === scope.row.shopId).name}}</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="商家编码" align="center" prop="outerId" />
|
|
||||||
<el-table-column label="ERP SKU ID" align="center" prop="erpGoodsSkuId" />
|
<el-table-column label="ERP商品ID" align="center" prop="erpGoodsId" />
|
||||||
<el-table-column label="状态" align="center" prop="isSkuOnsale" >
|
<el-table-column label="状态" align="center" prop="isSkuOnsale" >
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-tag size="small" v-if="scope.row.isSkuOnsale === 1">上架中</el-tag>
|
<el-tag size="small" v-if="scope.row.isSkuOnsale === 1">上架中</el-tag>
|
||||||
|
|
@ -181,11 +182,12 @@
|
||||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||||
|
|
||||||
import {listShop} from "@/api/shop/shop";
|
import {listShop} from "@/api/shop/shop";
|
||||||
import {listGoods,pullGoodsList,getGoodsSku,linkErpGoodsSkuId} from "@/api/pdd/goods";
|
import {listGoods,pullGoodsList,getGoodsSku,linkErpGoodsSkuId,pushToOms} from "@/api/pdd/goods";
|
||||||
|
|
||||||
import {MessageBox} from "element-ui";
|
import {MessageBox} from "element-ui";
|
||||||
import {isRelogin} from "@/utils/request";
|
import {isRelogin} from "@/utils/request";
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "GoodsListPdd",
|
name: "GoodsListPdd",
|
||||||
data() {
|
data() {
|
||||||
|
|
@ -246,6 +248,12 @@ export default {
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
// 多选框选中数据
|
||||||
|
handleSelectionChange(selection) {
|
||||||
|
this.ids = selection.map(item => item.id)
|
||||||
|
this.single = selection.length!==1
|
||||||
|
this.multiple = !selection.length
|
||||||
|
},
|
||||||
/** 查询商品管理列表 */
|
/** 查询商品管理列表 */
|
||||||
getList() {
|
getList() {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
|
|
@ -334,7 +342,22 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
// this.$modal.msgSuccess("请先配置API");
|
// this.$modal.msgSuccess("请先配置API");
|
||||||
}
|
},
|
||||||
|
handlePushOms(){
|
||||||
|
this.$confirm('确认同步所有商品到商品库吗?', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
this.loading = true
|
||||||
|
pushToOms( this.ids ).then(response => {
|
||||||
|
this.$message.success('商品同步成功')
|
||||||
|
this.getList()
|
||||||
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue