Commit 7193a482 by liuyongshuai

优化批量插入数据效率

parent 6afe41b2
......@@ -224,33 +224,12 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
List<Track> tracks = jsonArray.toJavaList(Track.class);
List<TrackVO> trackVOs = new ArrayList<TrackVO>();
if(tracks != null && tracks.size() > 0){
List<Track> paramTracks = new ArrayList<Track>();
for (Track track : tracks ) {
if(track.getTimestamp() != 0){
track.setTimestr(DateUtil.getDateTime(new Date(track.getTimestamp())));
}
if(StringUtil.ckeckEmpty(track.getObjectvalue())){
track.setObjectvalue(obj);
}
//对象转换,将需要的字段返回给前台界面进行展示
TrackVO trackVO = new TrackVO();
BeanUtils.copyProperties(track,trackVO);
trackVOs.add(trackVO);
Track pTrack = new Track();
pTrack.setAddress(track.getAddress());
pTrack.setObjectvalue(track.getObjectvalue());
pTrack.setSource_md5(track.getSource_md5());
pTrack.setTimestamp(track.getTimestamp());
Example<Track> example = Example.of(pTrack);
boolean bol = trackRepository.exists(example);
if (!bol) {//直接在数据库中判重
track.setXxzjbh(KeyUtil.getUniqueKey("T"));
paramTracks.add(track);
}
}
if (paramTracks != null && paramTracks.size() > 0){
trackRepository.save(paramTracks);
int limit = 120;//批处理量
int size = tracks.size();
long threadNum = size / limit;
for (int i = 0; i < threadNum + 1; i++) {
HandleThread thread = new HandleThread(tracks, i * limit, ((i + 1) * limit), trackVOs,obj);
thread.start();
}
resultMap.put("objectfromtype","IMSI");
resultMap.put("objectfromvalue",obj);
......@@ -265,6 +244,71 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
return resultMap;
}
/**
* 多线程批处理
* by changchao
*/
class HandleThread extends Thread {
private List<Track> data;
private int start;
private int end;
private List<TrackVO> trackVOs;
private String obj;
public HandleThread(List<Track> data, int start, int end, List<TrackVO> trackVOs, String obj) {
this.data = data;
this.start = start;
this.end = end;
this.trackVOs = trackVOs;
this.obj=obj;
}
public void run() {
if (start > data.size()) {
return;
}
if (end > data.size()) {
end = data.size();
}
List<Track> tracks = data.subList(start, end); //从fromIndex(包含),到toIndex(不包含)
List<Track> paramTracks = new ArrayList<Track>();
for (Track track : tracks ) {
if(track.getTimestamp() != 0){
track.setTimestr(DateUtil.getDateTime(new Date(track.getTimestamp())));
}
if(StringUtil.ckeckEmpty(track.getObjectvalue())){
track.setObjectvalue(obj);
}
//对象转换,将需要的字段返回给前台界面进行展示
TrackVO trackVO = new TrackVO();
BeanUtils.copyProperties(track,trackVO);
trackVOs.add(trackVO);
Track pTrack = new Track();
pTrack.setAddress(track.getAddress());
pTrack.setObjectvalue(track.getObjectvalue());
pTrack.setSource_md5(track.getSource_md5());
pTrack.setTimestamp(track.getTimestamp());
Example<Track> example = Example.of(pTrack);
boolean bol = trackRepository.exists(example);
if (!bol) {//直接在数据库中判重
track.setXxzjbh(KeyUtil.getUniqueKey("T"));
paramTracks.add(track);
}
}
if (paramTracks != null && paramTracks.size() > 0){
trackRepository.save(paramTracks);
}
}
}
@Override
public JSONObject getObjectRelatioNoSave(String obj) throws InterServiceException{
try{
......
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