Commit 2288fff5 by huluobin

update

parent c541f3d9
package com.gogirl.infrastructure.common.util;
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.mapper.product.purchase.PurchaseSkuMapper;
import com.gogirl.shared.order.ImportPurchaseSkuExcel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 有个很重要的点 DemoDataListener 不能被spring管理,要每次读取excel都要new,然后里面用到spring可以构造方法传进去
* </p>
*
* @author robbendev
* @since 2020/6/6 5:29 下午
*/
public class ExcelListener extends AnalysisEventListener<ImportPurchaseSkuExcel> {
private static final Logger LOGGER = LoggerFactory.getLogger(ImportPurchaseSkuExcel.class);
private final PurchaseSkuMapper purchaseSkuMapper;
/**
* 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收
*/
private static final int BATCH_COUNT = 5;
List<ImportPurchaseSkuExcel> list = new ArrayList<>();
public ExcelListener(PurchaseSkuMapper purchaseSkuMapper) {
this.purchaseSkuMapper = purchaseSkuMapper;
}
@Override
public void invoke(ImportPurchaseSkuExcel 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(importPurchaseSkuExcel -> {
if (importPurchaseSkuExcel.getPurchasePrice() == null && StringUtils.isNotEmpty(importPurchaseSkuExcel.getSku())) {
purchaseSkuMapper.delete(new LambdaQueryWrapper<PurchaseSku>().eq(PurchaseSku::getSku, importPurchaseSkuExcel.getSku()));
}
PurchaseSku purchaseSku = purchaseSkuMapper.selectBySku(importPurchaseSkuExcel.getSku());
if (purchaseSku != null) {
purchaseSku.setShopPrice(importPurchaseSkuExcel.getShopPrice());
purchaseSku.setPurchasePrice(importPurchaseSkuExcel.getPurchasePrice());
purchaseSkuMapper.updateById(purchaseSku);
}
});
LOGGER.info("存储数据库成功!");
}
}
\ No newline at end of file
...@@ -35,7 +35,6 @@ public interface PurchaseSkuMapper extends BaseMapper<PurchaseSku> { ...@@ -35,7 +35,6 @@ public interface PurchaseSkuMapper extends BaseMapper<PurchaseSku> {
/** /**
*
* @return * @return
*/ */
List<PurchaseSkuPOI> purchaseSkuExcel(); List<PurchaseSkuPOI> purchaseSkuExcel();
...@@ -43,8 +42,16 @@ public interface PurchaseSkuMapper extends BaseMapper<PurchaseSku> { ...@@ -43,8 +42,16 @@ public interface PurchaseSkuMapper extends BaseMapper<PurchaseSku> {
/** /**
* 获取款式id对应的采购sku * 获取款式id对应的采购sku
*
* @param list * @param list
* @return * @return
*/ */
List<PurchaseSku> listByProduceIds(List<Integer> list); List<PurchaseSku> listByProduceIds(List<Integer> list);
/**
* 根据sku获取采购Sku
*
* @param sku
*/
PurchaseSku selectBySku(String sku);
} }
package com.gogirl.shared.order;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/6/6 5:35 下午
*/
@Data
public class ImportPurchaseSkuExcel {
@ExcelProperty("sku")
private String sku;
@ExcelProperty("名称")
private String name;
@ExcelProperty("店铺看到的价格")
private BigDecimal shopPrice;
@ExcelProperty("采购价格")
private BigDecimal purchasePrice;
@ExcelProperty("分类")
private String category;
@ExcelProperty("型号")
private String model;
}
spring: spring:
profiles: profiles:
active: pre active: prod
servlet: servlet:
#文件上传最大容量 #文件上传最大容量
multipart: multipart:
......
...@@ -40,5 +40,11 @@ ...@@ -40,5 +40,11 @@
#{id} #{id}
</foreach> </foreach>
</select> </select>
<select id="selectBySku" resultType="com.gogirl.domain.product.purchase.PurchaseSku">
select *
from purchase_sku
where sku = #{sku}
limit 1
</select>
</mapper> </mapper>
package com.gogirl; package com.gogirl;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.gogirl.application.market.coupon.CouponCustomerRelevanceService; import com.gogirl.application.market.coupon.CouponCustomerRelevanceService;
...@@ -30,6 +31,7 @@ import com.gogirl.domain.user.customer.CustomerBalanceRecord; ...@@ -30,6 +31,7 @@ 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.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;
...@@ -38,6 +40,7 @@ import com.gogirl.infrastructure.mapper.market.timescard.TimesCardCustomerReleva ...@@ -38,6 +40,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.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;
import com.gogirl.infrastructure.mapper.store.complaint.ComplaintDetailedMapper; import com.gogirl.infrastructure.mapper.store.complaint.ComplaintDetailedMapper;
...@@ -52,6 +55,7 @@ import com.gogirl.infrastructure.mapper.xcx.TimeNodeMapper; ...@@ -52,6 +55,7 @@ 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 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;
...@@ -61,6 +65,7 @@ import org.springframework.scheduling.annotation.EnableAsync; ...@@ -61,6 +65,7 @@ import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.File;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
...@@ -670,4 +675,14 @@ public class Test { ...@@ -670,4 +675,14 @@ public class Test {
marketService.calcOrderAmount(13431); marketService.calcOrderAmount(13431);
} }
@Resource
PurchaseSkuMapper purchaseSkuMapper;
@org.junit.Test
public void importSku() {
String filePath = "/Users/huluobin/Library/Containers/com.tencent.WeWorkMac/Data/Library/Application Support/WXWork/Data/1688853793439460/Cache/File/2020-06/价格补录.xlsx";
File file = new File("/Users/huluobin/Library/Containers/com.tencent.WeWorkMac/Data/Library/Application Support/WXWork/Data/1688853793439460/Cache/File/2020-06/价格补录.xlsx");
EasyExcel.read(filePath, ImportPurchaseSkuExcel.class, new ExcelListener(purchaseSkuMapper)).sheet().doRead();
}
} }
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