Commit e91cb4a9 by huluobin

excel 导入

parent 5a9e3490
...@@ -20,57 +20,86 @@ public class MallProduct { ...@@ -20,57 +20,86 @@ public class MallProduct {
@TableId(type = IdType.AUTO) @TableId(type = IdType.AUTO)
private Long id; private Long id;
private String productSku; private String productSku;
@ApiModelProperty("商品名称") @ApiModelProperty("商品名称")
private String name; private String name;
@ApiModelProperty("商品副标题") @ApiModelProperty("商品副标题")
private String subTitle; private String subTitle;
@ApiModelProperty("商品封面图") @ApiModelProperty("商品封面图")
private String coverImages; private String coverImages;
@ApiModelProperty("商品头图,逗号分隔") @ApiModelProperty("商品头图,逗号分隔")
private String headImages; private String headImages;
@ApiModelProperty("商品详情图,逗号分隔") @ApiModelProperty("商品详情图,逗号分隔")
private String detailImages; private String detailImages;
@ApiModelProperty("颜色,逗号分隔") @ApiModelProperty("颜色,逗号分隔")
private String color; private String color;
@ApiModelProperty("商品价格") @ApiModelProperty("商品价格")
private BigDecimal price; private BigDecimal price;
@ApiModelProperty("原产地") @ApiModelProperty("原产地")
private String originPlace; private String originPlace;
@ApiModelProperty("原产地") @ApiModelProperty("原产地")
private String shelfLife; private String shelfLife;
@ApiModelProperty("成分") @ApiModelProperty("成分")
private String ingredient; private String ingredient;
@ApiModelProperty("商品描述") @ApiModelProperty("商品描述")
private String description; private String description;
@ApiModelProperty("商品规格") @ApiModelProperty("商品规格")
private String specification; private String specification;
@ApiModelProperty("规格单位") @ApiModelProperty("规格单位")
private String unit; private String unit;
@ApiModelProperty("品牌") @ApiModelProperty("品牌")
private String brand; private String brand;
@ApiModelProperty("重量") @ApiModelProperty("重量")
private String weight; private String weight;
@ApiModelProperty("物流说明") @ApiModelProperty("物流说明")
private String courierInfo; private String courierInfo;
@ApiModelProperty("保障说明") @ApiModelProperty("保障说明")
private String guaranteeInfo; private String guaranteeInfo;
@ApiModelProperty("售后说明") @ApiModelProperty("售后说明")
private String afterSaleInfo; private String afterSaleInfo;
@ApiModelProperty("详情视频") @ApiModelProperty("详情视频")
private String detailVideo; private String detailVideo;
@ApiModelProperty("是否热卖 1-是 2-否") @ApiModelProperty("是否热卖 1-是 2-否")
private Integer isHot; private Integer isHot;
@ApiModelProperty("1-已上架 ,2-已下架") @ApiModelProperty("1-已上架 ,2-已下架")
private Integer status; private Integer status;
private Date createTime; private Date createTime;
private String parentId; private String parentId;
private String colorNo; private String colorNo;
private Date updateTime; private Date updateTime;
@ApiModelProperty("会员价") @ApiModelProperty("会员价")
private BigDecimal memberPrice; private BigDecimal memberPrice;
@ApiModelProperty("特价") @ApiModelProperty("特价")
private BigDecimal bargainPrice; private BigDecimal bargainPrice;
@ApiModelProperty("是否开启特价 1-是 2否") @ApiModelProperty("是否开启特价 1-是 2否")
private Integer isBargainPrice; private Integer isBargainPrice;
...@@ -81,6 +110,9 @@ public class MallProduct { ...@@ -81,6 +110,9 @@ public class MallProduct {
@ApiModelProperty("首页标题") @ApiModelProperty("首页标题")
private String indexTitle; private String indexTitle;
@ApiModelProperty("生产系统编码")
private String prodSysCode;
@TableField(exist = false) @TableField(exist = false)
private List<MallCategory> mallCategoryList; private List<MallCategory> mallCategoryList;
......
package com.gogirl.infrastructure.common.util; package com.gogirl.infrastructure.excel;
import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.gogirl.domain.product.purchase.PurchaseSku; import com.gogirl.domain.product.purchase.PurchaseSku;
import com.gogirl.infrastructure.common.util.StringUtils;
import com.gogirl.infrastructure.mapper.product.purchase.PurchaseSkuMapper; import com.gogirl.infrastructure.mapper.product.purchase.PurchaseSkuMapper;
import com.gogirl.shared.order.ImportPurchaseSkuExcel; import com.gogirl.shared.product.excel.ImportPurchaseSkuExcel;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
......
package com.gogirl.infrastructure.excel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.gogirl.domain.product.mall.MallProduct;
import com.gogirl.infrastructure.mapper.product.mall.MallProductMapper;
import com.gogirl.shared.product.excel.ImportMallProductExcel;
import com.gogirl.shared.product.excel.ImportPurchaseSkuExcel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/6/12 5:54 下午
*/
public class MallProductExcelListener extends AnalysisEventListener<ImportMallProductExcel> {
private static final Logger LOGGER = LoggerFactory.getLogger(ImportPurchaseSkuExcel.class);
private final MallProductMapper mallProductMapper;
/**
* 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收
*/
private static final int BATCH_COUNT = 5;
List<ImportMallProductExcel> list = new ArrayList<>();
public MallProductExcelListener(MallProductMapper mallProductMapper) {
this.mallProductMapper = mallProductMapper;
}
@Override
public void invoke(ImportMallProductExcel data, AnalysisContext context) {
LOGGER.info("解析到一条数据:{}", JSON.toJSONString(data));
list.add(data);
if (list.size() >= BATCH_COUNT) {
syncData();
list.clear();
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
syncData();
LOGGER.info("所有数据解析完成!");
}
/**
* 加上存储数据库
*/
private void syncData() {
LOGGER.info("{}条数据,开始存储数据库!", list.size());
list.forEach(importMallProductExcel -> {
MallProduct mallProduct = mallProductMapper.selectOne(new LambdaQueryWrapper<MallProduct>()
.eq(MallProduct::getProdSysCode, importMallProductExcel.getProdSysCode()));
mallProduct.setPrice(importMallProductExcel.getPrice());
mallProduct.setBargainPrice(importMallProductExcel.getBargainPrice());
mallProductMapper.updateById(mallProduct);
});
LOGGER.info("存储数据库成功!");
}
}
package com.gogirl.shared.product.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/6/12 5:55 下午
*/
@Data
public class ImportMallProductExcel {
@ExcelProperty("商品编码")
private String prodSysCode;
@ExcelProperty("售价")
private BigDecimal price;
@ExcelProperty("名称")
private String name;
@ExcelProperty("折扣价")
private BigDecimal bargainPrice;
}
package com.gogirl.shared.order; package com.gogirl.shared.product.excel;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data; import lombok.Data;
......
...@@ -31,8 +31,9 @@ import com.gogirl.domain.user.customer.CustomerBalanceRecord; ...@@ -31,8 +31,9 @@ import com.gogirl.domain.user.customer.CustomerBalanceRecord;
import com.gogirl.domain.xcx.GogirlToken; import com.gogirl.domain.xcx.GogirlToken;
import com.gogirl.domain.xcx.TimeNode; import com.gogirl.domain.xcx.TimeNode;
import com.gogirl.domain.xcx.WeekConfig; import com.gogirl.domain.xcx.WeekConfig;
import com.gogirl.infrastructure.common.util.ExcelListener;
import com.gogirl.infrastructure.common.util.JsonUtilByFsJson; import com.gogirl.infrastructure.common.util.JsonUtilByFsJson;
import com.gogirl.infrastructure.excel.ExcelListener;
import com.gogirl.infrastructure.excel.MallProductExcelListener;
import com.gogirl.infrastructure.mapper.market.coupon.CouponCustomerRelevanceMapper; import com.gogirl.infrastructure.mapper.market.coupon.CouponCustomerRelevanceMapper;
import com.gogirl.infrastructure.mapper.market.discount.DiscountConfigMapper; import com.gogirl.infrastructure.mapper.market.discount.DiscountConfigMapper;
import com.gogirl.infrastructure.mapper.market.discount.LeisureDiscountConfigWeekMapper; import com.gogirl.infrastructure.mapper.market.discount.LeisureDiscountConfigWeekMapper;
...@@ -40,6 +41,7 @@ import com.gogirl.infrastructure.mapper.market.timescard.TimesCardCustomerReleva ...@@ -40,6 +41,7 @@ import com.gogirl.infrastructure.mapper.market.timescard.TimesCardCustomerReleva
import com.gogirl.infrastructure.mapper.order.pay.OrderPayMapper; import com.gogirl.infrastructure.mapper.order.pay.OrderPayMapper;
import com.gogirl.infrastructure.mapper.order.serve.OrderManageMapper; import com.gogirl.infrastructure.mapper.order.serve.OrderManageMapper;
import com.gogirl.infrastructure.mapper.order.serve.OrderServeMapper; import com.gogirl.infrastructure.mapper.order.serve.OrderServeMapper;
import com.gogirl.infrastructure.mapper.product.mall.MallProductMapper;
import com.gogirl.infrastructure.mapper.product.purchase.PurchaseSkuMapper; import com.gogirl.infrastructure.mapper.product.purchase.PurchaseSkuMapper;
import com.gogirl.infrastructure.mapper.product.purchase.PurchaseStockMapper; import com.gogirl.infrastructure.mapper.product.purchase.PurchaseStockMapper;
import com.gogirl.infrastructure.mapper.product.purchase.PurchaseStockRecordMapper; import com.gogirl.infrastructure.mapper.product.purchase.PurchaseStockRecordMapper;
...@@ -55,7 +57,8 @@ import com.gogirl.infrastructure.mapper.xcx.TimeNodeMapper; ...@@ -55,7 +57,8 @@ import com.gogirl.infrastructure.mapper.xcx.TimeNodeMapper;
import com.gogirl.infrastructure.mapper.xcx.WeekConfigMapper; import com.gogirl.infrastructure.mapper.xcx.WeekConfigMapper;
import com.gogirl.infrastructure.schedule.Schedule; import com.gogirl.infrastructure.schedule.Schedule;
import com.gogirl.infrastructure.service.mail.MailService; import com.gogirl.infrastructure.service.mail.MailService;
import com.gogirl.shared.order.ImportPurchaseSkuExcel; import com.gogirl.shared.product.excel.ImportMallProductExcel;
import com.gogirl.shared.product.excel.ImportPurchaseSkuExcel;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.assertj.core.util.Lists; import org.assertj.core.util.Lists;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
...@@ -687,6 +690,16 @@ public class Test { ...@@ -687,6 +690,16 @@ public class Test {
EasyExcel.read(filePath, ImportPurchaseSkuExcel.class, new ExcelListener(purchaseSkuMapper)).sheet().doRead(); EasyExcel.read(filePath, ImportPurchaseSkuExcel.class, new ExcelListener(purchaseSkuMapper)).sheet().doRead();
} }
@Resource
MallProductMapper mallProductMapper;
@org.junit.Test
public void importMallProduct() {
String filePath = "/Users/huluobin/Library/Containers/com.tencent.WeWorkMac/Data/Library/Application Support/WXWork/Data/1688853793439460/Cache/File/2020-06/GOGIRL商城部分SKU价格更改2020.06.12.xlsx";
EasyExcel.read(filePath, ImportMallProductExcel.class, new MallProductExcelListener(mallProductMapper)).sheet().doRead();
}
@org.junit.Test @org.junit.Test
public void duplicateCouponFix() { public void duplicateCouponFix() {
List<OrderManage> orderManageList = orderManageMapper.selectBatchIds(Lists.newArrayList("13711,13744,13766,13921".split(","))); List<OrderManage> orderManageList = orderManageMapper.selectBatchIds(Lists.newArrayList("13711,13744,13766,13921".split(",")));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment