Commit e91cb4a9 by huluobin

excel 导入

parent 5a9e3490
......@@ -20,57 +20,86 @@ public class MallProduct {
@TableId(type = IdType.AUTO)
private Long id;
private String productSku;
@ApiModelProperty("商品名称")
private String name;
@ApiModelProperty("商品副标题")
private String subTitle;
@ApiModelProperty("商品封面图")
private String coverImages;
@ApiModelProperty("商品头图,逗号分隔")
private String headImages;
@ApiModelProperty("商品详情图,逗号分隔")
private String detailImages;
@ApiModelProperty("颜色,逗号分隔")
private String color;
@ApiModelProperty("商品价格")
private BigDecimal price;
@ApiModelProperty("原产地")
private String originPlace;
@ApiModelProperty("原产地")
private String shelfLife;
@ApiModelProperty("成分")
private String ingredient;
@ApiModelProperty("商品描述")
private String description;
@ApiModelProperty("商品规格")
private String specification;
@ApiModelProperty("规格单位")
private String unit;
@ApiModelProperty("品牌")
private String brand;
@ApiModelProperty("重量")
private String weight;
@ApiModelProperty("物流说明")
private String courierInfo;
@ApiModelProperty("保障说明")
private String guaranteeInfo;
@ApiModelProperty("售后说明")
private String afterSaleInfo;
@ApiModelProperty("详情视频")
private String detailVideo;
@ApiModelProperty("是否热卖 1-是 2-否")
private Integer isHot;
@ApiModelProperty("1-已上架 ,2-已下架")
private Integer status;
private Date createTime;
private String parentId;
private String colorNo;
private Date updateTime;
@ApiModelProperty("会员价")
private BigDecimal memberPrice;
@ApiModelProperty("特价")
private BigDecimal bargainPrice;
@ApiModelProperty("是否开启特价 1-是 2否")
private Integer isBargainPrice;
......@@ -81,6 +110,9 @@ public class MallProduct {
@ApiModelProperty("首页标题")
private String indexTitle;
@ApiModelProperty("生产系统编码")
private String prodSysCode;
@TableField(exist = false)
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.event.AnalysisEventListener;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.shared.order.ImportPurchaseSkuExcel;
import com.gogirl.shared.product.excel.ImportPurchaseSkuExcel;
import org.slf4j.Logger;
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 lombok.Data;
......
......@@ -31,8 +31,9 @@ import com.gogirl.domain.user.customer.CustomerBalanceRecord;
import com.gogirl.domain.xcx.GogirlToken;
import com.gogirl.domain.xcx.TimeNode;
import com.gogirl.domain.xcx.WeekConfig;
import com.gogirl.infrastructure.common.util.ExcelListener;
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.discount.DiscountConfigMapper;
import com.gogirl.infrastructure.mapper.market.discount.LeisureDiscountConfigWeekMapper;
......@@ -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.serve.OrderManageMapper;
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.PurchaseStockMapper;
import com.gogirl.infrastructure.mapper.product.purchase.PurchaseStockRecordMapper;
......@@ -55,7 +57,8 @@ import com.gogirl.infrastructure.mapper.xcx.TimeNodeMapper;
import com.gogirl.infrastructure.mapper.xcx.WeekConfigMapper;
import com.gogirl.infrastructure.schedule.Schedule;
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 org.assertj.core.util.Lists;
import org.junit.runner.RunWith;
......@@ -687,6 +690,16 @@ public class Test {
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
public void duplicateCouponFix() {
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