/**
* 短信集合按照 perCount分段
* @param list
* @return
*/
private static final int perCount = 3000;//单次入库数量
private List<List<OpenMsgDo>> divideIntoLists(List<OpenMsgDo> list) {
if (list == null || list.size() == 0) {
return null;
}
List<List<OpenMsgDo>> lists = new ArrayList<>();
int listSize = list.size();
int sections = listSize / perCount;
int remain = listSize % perCount;
int start = 0;
for (int i = 1; i < sections + 1; i++) {
List<OpenMsgDo> tempList = new ArrayList<>();
tempList = list.subList(start, i * perCount);
lists.add(tempList);
start = i * perCount;
}
if (remain != 0) {
List<OpenMsgDo> tempList = new ArrayList<>();
tempList = list.subList(start, start + remain);
lists.add(tempList);
}
return lists;
}
//批量入库
for (Map.Entry<String, List<OpenMsgDo>> entry : msgMap.entrySet()) {
String tableName = entry.getKey();
List<OpenMsgDo> msgList = entry.getValue();
//TODO 分批量插入
List<List<OpenMsgDo>> lists = divideIntoLists(msgList);
if (lists == null) {
continue;
}
for (int i = 0; i < lists.size(); i++) {
int insertRecords = msgService.batchInsertMsg(tableName, lists.get(i));
logger.info("【入库的表名=" + tableName + " ,短信集合大小=" + lists.get(i).size()
+ " ,实际入库的短信条数=" + insertRecords + "】");
}
// int insertRecords = msgService.batchInsertMsg(entry.getKey(), entry.getValue());
}
//解析入库成功标志
isPraseAndRecordSuccess = true;