25,988
社区成员




public void saveAllSaleDetail(List<?> list) throws Exception {
Map<String, SaleDetailEntity> saleDetails = new HashMap<String, SaleDetailEntity>();
int batchSize=1000,
threadCounts=10;
if(list.size() >= batchSize){
ExecutorService exec=Executors.newCachedThreadPool();
List<Callable<Map<String, SaleDetailEntity>>> callList=new ArrayList<Callable<Map<String, SaleDetailEntity>>>();
int len=list.size()/threadCounts;
if(len==0){
threadCounts=list.size();
len=list.size()/threadCounts;
}
for(int i=0;i<threadCounts;i++){
final List<SaleDetailEntity> subList;
if(i==threadCounts-1){
subList=(List<SaleDetailEntity>) list.subList(i*len,list.size());
}else{
subList=(List<SaleDetailEntity>) list.subList(i*len, len*(i+1)>list.size()?list.size():len*(i+1));
}
callList.add(new Callable<Map<String, SaleDetailEntity>>(){
@Override
public Map<String, SaleDetailEntity> call() throws Exception {
Map<String, SaleDetailEntity> saleDetails = new HashMap<String, SaleDetailEntity>();
for (SaleDetailEntity saleDetail : subList) {
SaleDetailEntity sale = new SaleDetailEntity();
sale.setOrgId(saleDetail.getOrgId());
sale.setOwnerId(saleDetail.getOwnerId());
sale.setProofId(saleDetail.getProofId());
sale.setProofLines(saleDetail.getProofLines());
List<SaleDetailEntity> saleDetailList = saleDetailDao.selectAllSaleDetailList(sale);
if (saleDetailList != null && saleDetailList.size() > 0) {
SaleDetailEntity saleDetailEntity = saleDetailList.get(0);
String id = saleDetailEntity.getId();
saleDetail.setId(id);
saleDetailDao.updateSaleDetail(saleDetail);
} else {
String uuid = RandomParamUtil.getUuid();
saleDetail.setId(uuid);
saleDetails.put(saleDetail.getProofId(), saleDetail);
}
}
return saleDetails;
}
});
}
List<Future<Map<String,SaleDetailEntity>>> invokeAll = exec.invokeAll(callList);
exec.shutdown();
for (Future<Map<String, SaleDetailEntity>> future : invokeAll) {
Map<String, SaleDetailEntity> map = future.get();
if(!map.isEmpty()){
saleDetailDao.insertAllSaleDetail(map);
}
}
}else{
for (Object object : list) {
SaleDetailEntity saleDetail = (SaleDetailEntity) object;
// 判断是否为重复数据,是直接修改
SaleDetailEntity sale = new SaleDetailEntity();
sale.setOrgId(saleDetail.getOrgId());
sale.setOwnerId(saleDetail.getOwnerId());
sale.setProofId(saleDetail.getProofId());
sale.setProofLines(saleDetail.getProofLines());
List<SaleDetailEntity> saleDetailList = saleDetailDao.selectAllSaleDetailList(sale);
if (saleDetailList != null && saleDetailList.size() > 0) {
SaleDetailEntity saleDetailEntity = saleDetailList.get(0);
String id = saleDetailEntity.getId();
saleDetail.setId(id);
saleDetailDao.updateSaleDetail(saleDetail);
} else {
String uuid = RandomParamUtil.getUuid();
saleDetail.setId(uuid);
saleDetails.put(saleDetail.getProofId(), saleDetail);
}
}
if (saleDetails != null && saleDetails.size() > 0) {
saleDetailDao.insertAllSaleDetail(saleDetails);
}
}
try {
//sendMCSP((List<SaleDetailEntity>)list);
} catch (Exception e) {
logger.error(e);
}
}