mirror of https://github.com/jeecgboot/jeecg-boot
commit
6c79152c89
|
@ -579,30 +579,15 @@ public class SkuController {
|
||||||
public Result<?> unpairedSkus(@RequestParam(name = "shop") String shopCode,
|
public Result<?> unpairedSkus(@RequestParam(name = "shop") String shopCode,
|
||||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||||
@RequestParam(name = "pageSize", defaultValue = "50") Integer pageSize,
|
@RequestParam(name = "pageSize", defaultValue = "50") Integer pageSize,
|
||||||
@RequestParam(name = "column", defaultValue = "erp_code") String column,
|
@RequestParam(name = "skus[]", required = false) List<String> skuNames
|
||||||
@RequestParam(name = "order", defaultValue = "ASC") String order
|
|
||||||
) {
|
) {
|
||||||
String parsedColumn = CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, column.replace("_dictText", ""));
|
if(skuNames == null)
|
||||||
String parsedOrder = order.toUpperCase();
|
skuNames = new ArrayList<>();
|
||||||
if(!parsedOrder.equals("ASC") && !parsedOrder.equals("DESC")) {
|
|
||||||
return Result.error(400, "Bad Request");
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
specialFilterContentForDictSql(parsedColumn);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
return Result.error(400, "Bad Request");
|
|
||||||
}
|
|
||||||
String shopId = shopService.getIdByCode(shopCode);
|
String shopId = shopService.getIdByCode(shopCode);
|
||||||
if (shopId == null) return Result.error(404, "Shop not found");
|
if (shopId == null) return Result.error(404, "Shop not found");
|
||||||
int total = skuListMabangService.countUnpairedSkus(shopId);
|
List<SkuOrderPage> unpairedSkus = skuListMabangService.unpairedSkus(shopId, skuNames);
|
||||||
List<SkuOrderPage> unpairedSkus = skuListMabangService.unpairedSkus(shopId, pageNo, pageSize, parsedColumn, parsedOrder);
|
|
||||||
|
|
||||||
IPage<SkuOrderPage> page = new Page<>();
|
return Result.OK(unpairedSkus);
|
||||||
page.setRecords(unpairedSkus);
|
|
||||||
page.setCurrent(pageNo);
|
|
||||||
page.setSize(pageSize);
|
|
||||||
page.setTotal(total);
|
|
||||||
return Result.OK(page);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping(value = "/latestSkuCounter")
|
@GetMapping(value = "/latestSkuCounter")
|
||||||
|
|
|
@ -141,6 +141,12 @@ public class SkuData {
|
||||||
private String supplier;
|
private String supplier;
|
||||||
@JSONField(name="productLinkAddress")
|
@JSONField(name="productLinkAddress")
|
||||||
private String supplierLink;
|
private String supplierLink;
|
||||||
|
@JSONField(name="saleUrl")
|
||||||
|
private String saleUrl;
|
||||||
|
/**
|
||||||
|
* 商品多属性
|
||||||
|
*/
|
||||||
|
private String specifics;
|
||||||
|
|
||||||
public SkuStatus getStatus() {
|
public SkuStatus getStatus() {
|
||||||
return SkuStatus.fromCode(this.status);
|
return SkuStatus.fromCode(this.status);
|
||||||
|
@ -168,7 +174,9 @@ public class SkuData {
|
||||||
"\nIs Flammable : " + this.isFlammable +
|
"\nIs Flammable : " + this.isFlammable +
|
||||||
"\nIs Knife : " + this.isKnife +
|
"\nIs Knife : " + this.isKnife +
|
||||||
"\nIs Gift : " + this.isGift +
|
"\nIs Gift : " + this.isGift +
|
||||||
"\nProvider : " + this.supplier
|
"\nProvider : " + this.supplier +
|
||||||
|
"\nProduct Link : " + this.supplierLink +
|
||||||
|
"\nSale Url : " + this.saleUrl
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,7 +50,7 @@ public class SkuListRequestBody implements RequestBody {
|
||||||
putNonNull(json, "showProvider", showProvider);
|
putNonNull(json, "showProvider", showProvider);
|
||||||
putNonNull(json, "showWarehouse", String.valueOf(showWarehouse));
|
putNonNull(json, "showWarehouse", String.valueOf(showWarehouse));
|
||||||
putNonNull(json, "showLabel", String.valueOf(showLabel));
|
putNonNull(json, "showLabel", String.valueOf(showLabel));
|
||||||
putNonNull(json, "showAttributes", showAttributes);
|
putNonNull(json, "showattributes", String.valueOf(showAttributes));
|
||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,12 +9,17 @@ import lombok.Data;
|
||||||
@Data
|
@Data
|
||||||
public class OrderItem {
|
public class OrderItem {
|
||||||
|
|
||||||
|
@JSONField(name="stockId")
|
||||||
|
private String stockId;
|
||||||
/**
|
/**
|
||||||
* Erp code of sku in DB.
|
* Erp code of sku in DB.
|
||||||
*/
|
*/
|
||||||
@JSONField(name = "stockSku")
|
@JSONField(name = "stockSku")
|
||||||
private String erpCode;
|
private String erpCode;
|
||||||
|
@JSONField(name="title")
|
||||||
|
private String title;
|
||||||
|
@JSONField(name="originTitle")
|
||||||
|
private String originTitle;
|
||||||
@JSONField(deserialize = false)
|
@JSONField(deserialize = false)
|
||||||
private String platformOrderId;
|
private String platformOrderId;
|
||||||
|
|
||||||
|
@ -42,6 +47,8 @@ public class OrderItem {
|
||||||
@JSONField(name = "specifics")
|
@JSONField(name = "specifics")
|
||||||
private String specifics;
|
private String specifics;
|
||||||
|
|
||||||
|
@JSONField(name="amazonAsin")
|
||||||
|
private String saleUrl;
|
||||||
/**
|
/**
|
||||||
* Status :
|
* Status :
|
||||||
* 2 = Normal
|
* 2 = Normal
|
||||||
|
|
|
@ -7,6 +7,7 @@ import org.jeecg.modules.business.entity.Sku;
|
||||||
import org.jeecg.modules.business.vo.SkuOrderPage;
|
import org.jeecg.modules.business.vo.SkuOrderPage;
|
||||||
import org.jeecg.modules.business.vo.SkuQuantity;
|
import org.jeecg.modules.business.vo.SkuQuantity;
|
||||||
import org.jeecg.modules.business.vo.SkuUpdate;
|
import org.jeecg.modules.business.vo.SkuUpdate;
|
||||||
|
import org.jeecg.modules.business.vo.UnpairedSku;
|
||||||
import org.jeecg.modules.business.vo.inventory.InventoryRecord;
|
import org.jeecg.modules.business.vo.inventory.InventoryRecord;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
@ -83,9 +84,7 @@ public interface SkuMapper extends BaseMapper<Sku> {
|
||||||
|
|
||||||
List<String> fetchAllClientSkuCodes(@Param("clientCode") String clientCode);
|
List<String> fetchAllClientSkuCodes(@Param("clientCode") String clientCode);
|
||||||
|
|
||||||
List<String> fetchUnpairedSkus(@Param("shopId") String shopId, @Param("offset") Integer offset, @Param("size") Integer pageSize, @Param("column") String column, @Param("order") String order);
|
List<UnpairedSku> fetchUnpairedSkus(@Param("shopId") String shopId);
|
||||||
|
|
||||||
int countUnpairedSkus(@Param("shopId") String shopId);
|
|
||||||
|
|
||||||
List<String> latestSkuCounter(@Param("userCode") String userCode, @Param("clientCode") String clientCode, @Param("date") String date);
|
List<String> latestSkuCounter(@Param("userCode") String userCode, @Param("clientCode") String clientCode, @Param("date") String date);
|
||||||
|
|
||||||
|
|
|
@ -799,8 +799,8 @@
|
||||||
WHERE c.internal_code = #{clientCode};
|
WHERE c.internal_code = #{clientCode};
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="fetchUnpairedSkus" resultType="java.lang.String">
|
<select id="fetchUnpairedSkus" resultType="org.jeecg.modules.business.vo.UnpairedSku">
|
||||||
SELECT poc.sku_id as erp_code
|
SELECT po.platform_order_id as platform_order_id, poc.sku_id as stock_sku
|
||||||
FROM platform_order po
|
FROM platform_order po
|
||||||
JOIN shop s ON po.shop_id = s.id
|
JOIN shop s ON po.shop_id = s.id
|
||||||
JOIN platform_order_content poc ON po.id = poc.platform_order_id
|
JOIN platform_order_content poc ON po.id = poc.platform_order_id
|
||||||
|
@ -809,20 +809,7 @@
|
||||||
AND po.erp_status IN (1, 2)
|
AND po.erp_status IN (1, 2)
|
||||||
AND poc.erp_status <> 5
|
AND poc.erp_status <> 5
|
||||||
AND s.id = #{shopId}
|
AND s.id = #{shopId}
|
||||||
GROUP BY poc.sku_id
|
GROUP BY poc.sku_id;
|
||||||
ORDER BY ${column} ${order}
|
|
||||||
LIMIT #{offset}, #{size};
|
|
||||||
</select>
|
|
||||||
<select id="countUnpairedSkus" resultType="java.lang.Integer">
|
|
||||||
SELECT COUNT(DISTINCT poc.sku_id)
|
|
||||||
FROM platform_order_content poc
|
|
||||||
JOIN platform_order po ON poc.platform_order_id = po.id
|
|
||||||
JOIN shop s ON po.shop_id = s.id
|
|
||||||
LEFT JOIN sku ON poc.sku_id = sku.id
|
|
||||||
WHERE sku.id IS NULL
|
|
||||||
AND po.erp_status IN (1, 2)
|
|
||||||
AND poc.erp_status <> 5
|
|
||||||
AND s.id = #{shopId};
|
|
||||||
</select>
|
</select>
|
||||||
<select id="latestSkuCounter" resultType="java.lang.String">
|
<select id="latestSkuCounter" resultType="java.lang.String">
|
||||||
SELECT erp_code
|
SELECT erp_code
|
||||||
|
|
|
@ -44,9 +44,7 @@ public interface ISkuListMabangService extends IService<SkuData> {
|
||||||
|
|
||||||
List<SkuData> fetchUnpairedSkus(List<String> stockSkuList);
|
List<SkuData> fetchUnpairedSkus(List<String> stockSkuList);
|
||||||
|
|
||||||
List<SkuOrderPage> unpairedSkus(String shopId, Integer pageNo, Integer pageSize, String column, String order);
|
List<SkuOrderPage> unpairedSkus(String shopId, List<String> skuNames);
|
||||||
|
|
||||||
int countUnpairedSkus(String shopId);
|
|
||||||
|
|
||||||
void compareClientSkusWithMabang(Map<String, Sku> clientSkus);
|
void compareClientSkusWithMabang(Map<String, Sku> clientSkus);
|
||||||
}
|
}
|
||||||
|
|
|
@ -125,9 +125,7 @@ public interface ISkuService extends IService<Sku> {
|
||||||
|
|
||||||
List<String> fetchAllClientSkuCodes(String clientCode);
|
List<String> fetchAllClientSkuCodes(String clientCode);
|
||||||
|
|
||||||
List<String> fetchUnpairedSkus(String shopId, int offset, Integer pageSize, String column, String order);
|
List<UnpairedSku> fetchUnpairedSkus(String shopId);
|
||||||
|
|
||||||
int countUnpairedSkus(String shopId);
|
|
||||||
|
|
||||||
int latestSkuCounter(String userCode, String clientCode, String date);
|
int latestSkuCounter(String userCode, String clientCode, String date);
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,6 @@ package org.jeecg.modules.business.service.impl;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.jeecg.qywx.api.conversation.ConversationAPI;
|
|
||||||
import freemarker.template.Template;
|
import freemarker.template.Template;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.shiro.SecurityUtils;
|
import org.apache.shiro.SecurityUtils;
|
||||||
|
@ -11,6 +10,9 @@ import org.jeecg.common.system.vo.LoginUser;
|
||||||
import org.jeecg.common.util.SpringContextUtils;
|
import org.jeecg.common.util.SpringContextUtils;
|
||||||
import org.jeecg.modules.business.domain.api.mabang.Response;
|
import org.jeecg.modules.business.domain.api.mabang.Response;
|
||||||
import org.jeecg.modules.business.domain.api.mabang.doSearchSkuListNew.*;
|
import org.jeecg.modules.business.domain.api.mabang.doSearchSkuListNew.*;
|
||||||
|
import org.jeecg.modules.business.domain.api.mabang.getorderlist.Order;
|
||||||
|
import org.jeecg.modules.business.domain.api.mabang.getorderlist.OrderItem;
|
||||||
|
import org.jeecg.modules.business.domain.api.mabang.getorderlist.OrderListRequestBody;
|
||||||
import org.jeecg.modules.business.domain.api.mabang.stockDoAddStock.SkuAddRequest;
|
import org.jeecg.modules.business.domain.api.mabang.stockDoAddStock.SkuAddRequest;
|
||||||
import org.jeecg.modules.business.domain.api.mabang.stockDoAddStock.SkuAddRequestBody;
|
import org.jeecg.modules.business.domain.api.mabang.stockDoAddStock.SkuAddRequestBody;
|
||||||
import org.jeecg.modules.business.domain.api.mabang.stockDoAddStock.SkuAddResponse;
|
import org.jeecg.modules.business.domain.api.mabang.stockDoAddStock.SkuAddResponse;
|
||||||
|
@ -29,6 +31,7 @@ import org.jeecg.modules.business.mongoService.SkuMongoService;
|
||||||
import org.jeecg.modules.business.service.*;
|
import org.jeecg.modules.business.service.*;
|
||||||
import org.jeecg.modules.business.vo.ResponsesWithMsg;
|
import org.jeecg.modules.business.vo.ResponsesWithMsg;
|
||||||
import org.jeecg.modules.business.vo.SkuOrderPage;
|
import org.jeecg.modules.business.vo.SkuOrderPage;
|
||||||
|
import org.jeecg.modules.business.vo.UnpairedSku;
|
||||||
import org.jeecg.modules.message.websocket.WebSocketSender;
|
import org.jeecg.modules.message.websocket.WebSocketSender;
|
||||||
import org.jeecg.modules.online.cgform.mapper.OnlCgformFieldMapper;
|
import org.jeecg.modules.online.cgform.mapper.OnlCgformFieldMapper;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
@ -81,6 +84,8 @@ public class SkuListMabangServiceImpl extends ServiceImpl<SkuListMabangMapper, S
|
||||||
@Autowired
|
@Autowired
|
||||||
private SkuMongoService skuMongoService;
|
private SkuMongoService skuMongoService;
|
||||||
@Autowired
|
@Autowired
|
||||||
|
private IPlatformOrderMabangService platformOrderMabangService;
|
||||||
|
@Autowired
|
||||||
private FreeMarkerConfigurer freemarkerConfigurer;
|
private FreeMarkerConfigurer freemarkerConfigurer;
|
||||||
@Autowired
|
@Autowired
|
||||||
Environment env;
|
Environment env;
|
||||||
|
@ -625,6 +630,10 @@ public class SkuListMabangServiceImpl extends ServiceImpl<SkuListMabangMapper, S
|
||||||
sop.setIsGift(skuData.getIsGift());
|
sop.setIsGift(skuData.getIsGift());
|
||||||
sop.setSupplier(skuData.getSupplier());
|
sop.setSupplier(skuData.getSupplier());
|
||||||
sop.setSupplierLink(skuData.getSupplierLink());
|
sop.setSupplierLink(skuData.getSupplierLink());
|
||||||
|
if(skuData.getSaleUrl() != null)
|
||||||
|
sop.setSaleUrl(skuData.getSaleUrl());
|
||||||
|
if(skuData.getSpecifics() != null)
|
||||||
|
sop.setSpecifics(skuData.getSpecifics());
|
||||||
sop.setStatus(skuData.getStatusValue());
|
sop.setStatus(skuData.getStatusValue());
|
||||||
return sop;
|
return sop;
|
||||||
}
|
}
|
||||||
|
@ -868,6 +877,7 @@ public class SkuListMabangServiceImpl extends ServiceImpl<SkuListMabangMapper, S
|
||||||
body.setShowWarehouse(1);
|
body.setShowWarehouse(1);
|
||||||
body.setShowLabel(1);
|
body.setShowLabel(1);
|
||||||
body.setStockSkuList(String.join(",", skuPartition));
|
body.setStockSkuList(String.join(",", skuPartition));
|
||||||
|
body.setShowAttributes(1);
|
||||||
SkuListRawStream rawStream = new SkuListRawStream(body);
|
SkuListRawStream rawStream = new SkuListRawStream(body);
|
||||||
UnpairedSkuListStream stream = new UnpairedSkuListStream(rawStream);
|
UnpairedSkuListStream stream = new UnpairedSkuListStream(rawStream);
|
||||||
skuDataList.addAll(stream.all());
|
skuDataList.addAll(stream.all());
|
||||||
|
@ -876,23 +886,40 @@ public class SkuListMabangServiceImpl extends ServiceImpl<SkuListMabangMapper, S
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<SkuOrderPage> unpairedSkus(String shopId, Integer pageNo, Integer pageSize, String column, String order) {
|
public List<SkuOrderPage> unpairedSkus(String shopId, List<String> skuNames) {
|
||||||
int offset = (pageNo - 1) * pageSize;
|
List<UnpairedSku> unpairedSkus = skuService.fetchUnpairedSkus(shopId);
|
||||||
List<String> stockSkuList = skuService.fetchUnpairedSkus(shopId, offset, pageSize, column, order);
|
if(unpairedSkus.isEmpty()){
|
||||||
if(stockSkuList.isEmpty()){
|
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
List<SkuData> skuDataList = fetchUnpairedSkus(stockSkuList);
|
List<String> platformOrderIds = unpairedSkus.stream().distinct().map(UnpairedSku::getPlatformOrderId).collect(Collectors.toList());
|
||||||
return skuDataList.stream()
|
List<List<String>> platformOrderPartitions = Lists.partition(platformOrderIds, 50);
|
||||||
|
List<OrderListRequestBody> orderRequestBodies = new ArrayList<>();
|
||||||
|
for (List<String> platformOrderIdList : platformOrderPartitions) {
|
||||||
|
orderRequestBodies.add(new OrderListRequestBody().setPlatformOrderIds(platformOrderIdList));
|
||||||
|
}
|
||||||
|
ExecutorService executor = Executors.newFixedThreadPool(DEFAULT_NUMBER_OF_THREADS);
|
||||||
|
List<Order> mabangOrders = platformOrderMabangService.getOrdersFromMabang(orderRequestBodies, executor);
|
||||||
|
List<OrderItem> mabangOrderItems = mabangOrders.stream().map(Order::getOrderItems).flatMap(List::stream).collect(Collectors.toList());
|
||||||
|
List<SkuData> skuDataList = fetchUnpairedSkus(unpairedSkus.stream().map(UnpairedSku::getStockSku).collect(toList()));
|
||||||
|
skuDataList.forEach(skuData -> {
|
||||||
|
mabangOrderItems.stream().filter(orderItem -> orderItem.getStockId().equals(String.valueOf(skuData.getStockSkuId()))).findFirst()
|
||||||
|
.ifPresent(orderItem -> {
|
||||||
|
skuData.setSaleUrl(orderItem.getSaleUrl());
|
||||||
|
skuData.setSpecifics(orderItem.getSpecifics());
|
||||||
|
});
|
||||||
|
});
|
||||||
|
if(skuNames.isEmpty())
|
||||||
|
return skuDataList.stream()
|
||||||
|
.map(this::SkuDataToSkuOrderPage)
|
||||||
|
.sorted(Comparator.comparing(SkuOrderPage::getErpCode))
|
||||||
|
.collect(toList());
|
||||||
|
else
|
||||||
|
return skuDataList.stream()
|
||||||
|
.filter(skuData -> skuNames.contains(skuData.getNameEN()) || skuNames.contains(skuData.getDeclareNameEn()))
|
||||||
.map(this::SkuDataToSkuOrderPage)
|
.map(this::SkuDataToSkuOrderPage)
|
||||||
.collect(toList());
|
.collect(toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public int countUnpairedSkus(String shopId) {
|
|
||||||
return skuService.countUnpairedSkus(shopId);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void compareClientSkusWithMabang(Map<String, Sku> clientSkus) {
|
public void compareClientSkusWithMabang(Map<String, Sku> clientSkus) {
|
||||||
|
|
||||||
|
|
|
@ -618,13 +618,8 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements ISkuS
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> fetchUnpairedSkus(String shopId, int offset, Integer pageSize, String column, String order) {
|
public List<UnpairedSku> fetchUnpairedSkus(String shopId) {
|
||||||
return skuMapper.fetchUnpairedSkus(shopId, offset, pageSize, column, order);
|
return skuMapper.fetchUnpairedSkus(shopId);
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int countUnpairedSkus(String shopId) {
|
|
||||||
return skuMapper.countUnpairedSkus(shopId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -205,6 +205,10 @@ public class SkuOrderPage {
|
||||||
@ApiModelProperty(value = "供应商商品网址")
|
@ApiModelProperty(value = "供应商商品网址")
|
||||||
private String supplierLink;
|
private String supplierLink;
|
||||||
|
|
||||||
|
@Excel(name="产品销售链接", width = 15)
|
||||||
|
@ApiModelProperty(value = "产品销售链接")
|
||||||
|
private String saleUrl;
|
||||||
|
|
||||||
@Excel(name = "仓库", width = 15)
|
@Excel(name = "仓库", width = 15)
|
||||||
@ApiModelProperty(value = "仓库")
|
@ApiModelProperty(value = "仓库")
|
||||||
private String warehouse;
|
private String warehouse;
|
||||||
|
@ -212,4 +216,8 @@ public class SkuOrderPage {
|
||||||
@Excel(name ="自定义分类", width = 15)
|
@Excel(name ="自定义分类", width = 15)
|
||||||
@ApiModelProperty(value = "自定义分类")
|
@ApiModelProperty(value = "自定义分类")
|
||||||
private String labelData;
|
private String labelData;
|
||||||
|
|
||||||
|
@Excel(name = "商品多属性", width = 15)
|
||||||
|
@ApiModelProperty(value = "商品多属性")
|
||||||
|
private String specifics;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
package org.jeecg.modules.business.vo;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@ApiModel(value = "UnpairedSku", description = "Unpaired SKU")
|
||||||
|
public class UnpairedSku {
|
||||||
|
private String stockSku;
|
||||||
|
private String platformOrderId;
|
||||||
|
}
|
Loading…
Reference in New Issue