|
@@ -1,5 +1,7 @@
|
|
package com.pj.tb_goods_transit;
|
|
package com.pj.tb_goods_transit;
|
|
|
|
|
|
|
|
+import com.pj.tb_goods.TbGoods;
|
|
|
|
+import com.pj.tb_goods_type.TbGoodsTypeService;
|
|
import org.apache.poi.hssf.usermodel.HSSFCell;
|
|
import org.apache.poi.hssf.usermodel.HSSFCell;
|
|
import org.apache.poi.hssf.usermodel.HSSFRow;
|
|
import org.apache.poi.hssf.usermodel.HSSFRow;
|
|
import org.apache.poi.hssf.usermodel.HSSFSheet;
|
|
import org.apache.poi.hssf.usermodel.HSSFSheet;
|
|
@@ -9,6 +11,11 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.concurrent.ExecutorService;
|
|
|
|
+import java.util.concurrent.Executors;
|
|
|
|
+
|
|
|
|
|
|
/**
|
|
/**
|
|
* @Author Mechrevo
|
|
* @Author Mechrevo
|
|
@@ -19,7 +26,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
public class MethodGoodsTransitService {
|
|
public class MethodGoodsTransitService {
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
- private TbGoodsTransitMapper tbGoodsTransitMapper;
|
|
|
|
|
|
+ private TbGoodsTransitService tbGoodsTransitService;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 方法抽取 导入
|
|
* 方法抽取 导入
|
|
@@ -30,6 +37,9 @@ public class MethodGoodsTransitService {
|
|
*/
|
|
*/
|
|
public int importMethod(HSSFRow row, HSSFSheet sheet, int count){
|
|
public int importMethod(HSSFRow row, HSSFSheet sheet, int count){
|
|
|
|
|
|
|
|
+ //创建接受集合
|
|
|
|
+ List<TbGoodsTransit> list = new ArrayList<>();
|
|
|
|
+
|
|
for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {
|
|
for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {
|
|
//封装数据到行对象
|
|
//封装数据到行对象
|
|
row = sheet.getRow(i);
|
|
row = sheet.getRow(i);
|
|
@@ -106,10 +116,37 @@ public class MethodGoodsTransitService {
|
|
//删除状态,默认可用
|
|
//删除状态,默认可用
|
|
tbGoodsTransit.setDeleteStatus(1);
|
|
tbGoodsTransit.setDeleteStatus(1);
|
|
// //添加到集合
|
|
// //添加到集合
|
|
-// list.add(tbGoodsTransit);
|
|
|
|
- int insert = tbGoodsTransitMapper.insert(tbGoodsTransit);
|
|
|
|
- count += insert;
|
|
|
|
|
|
+ list.add(tbGoodsTransit);
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ System.out.println("待处理数据量为: " + list.size() + " 条。");
|
|
|
|
+
|
|
|
|
+ //创建多线程
|
|
|
|
+ ExecutorService executorService = Executors.newFixedThreadPool(6);
|
|
|
|
+
|
|
|
|
+ //每次100条
|
|
|
|
+ int bai = 100;
|
|
|
|
+ //计算需要创建的线程数
|
|
|
|
+ int threads = (int) Math.ceil((double) list.size() / bai);
|
|
|
|
+ for (int i = 0; i < threads; i++) {
|
|
|
|
+ int start = i * bai;
|
|
|
|
+ int end = Math.min(start + bai,list.size());
|
|
|
|
+
|
|
|
|
+ //截取集合数量
|
|
|
|
+ List<TbGoodsTransit> enterpriseList = list.subList(start, end);
|
|
|
|
+
|
|
|
|
+ //多线程执行任务
|
|
|
|
+ executorService.submit(() -> {
|
|
|
|
+ tbGoodsTransitService.saveBatch(enterpriseList);
|
|
|
|
+ });
|
|
|
|
+ //计数
|
|
|
|
+ count += enterpriseList.size();
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ //关闭线程池
|
|
|
|
+ executorService.shutdown();
|
|
|
|
+
|
|
return count;
|
|
return count;
|
|
}
|
|
}
|
|
|
|
|