Commit 4c061510 by caojingji

修改在批量保存Relaiton对象时,对象重复报违反唯一约束的bug

parent 2c438dbc
......@@ -52,7 +52,12 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
String url = relationGetAll_url + "&objectValue="+obj;
String result = HttpUtil.doGet(url);
if(!StringUtil.ckeckEmpty(result)){
if(result.startsWith("{") && result.endsWith("}")){
int i = 0;
while(i <= 3 && !result.startsWith("{")){
result = HttpUtil.doGet(url);
i++;
}
if(null != result && result.startsWith("{")){
jsonObject = JSONObject.parseObject(result);
}
}
......@@ -188,23 +193,6 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
}
return object;
}
/**
* 对List<JSONObject>中的根据JSONObject中的objValue进行去重
* @return
*/
private List<JSONObject> removeJSonObject(List<JSONObject> jsonObjects){
System.out.println("jsonObjects == " + jsonObjects.toString());
Set<JSONObject> set = new TreeSet<JSONObject>(new Comparator<JSONObject>() {
@Override
public int compare(JSONObject o1, JSONObject o2) {
return o1.getString("objValue").compareTo(o2.getString("objValue"));
}
});
set.addAll(jsonObjects);
return new ArrayList<JSONObject>(set);
}
/**
* 通过手机号码调取手机轨迹信息
* @param obj 对象了类型:可为手机号、身份证号、imsi等
......@@ -310,7 +298,6 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
JSONObject jsonObejct = null;
String url = objectrelation_url+"&objectValue="+obj;
String result = HttpUtil.doGet(url);
//String result = "{\"results\":[{\"count\":375,\"first_timestamp\":1541832396000,\"objectFromType\":4314,\"objectFromTypeName\":\"IMSI\",\"objectFromValue\":\"460010858605079\",\"objectToType\":4315,\"objectToTypeName\":\"IMEI\",\"objectToValue\":\"864552034163647\",\"relativeType\":4403,\"relativeTypeName\":\"IMEI-IMSI\",\"source\":1376,\"sourceName\":\"4G-联通-QQ\",\"timestamp\":1545627478000}],\"status\":\"ok\"}";
if(!StringUtil.ckeckEmpty(result)){
int i = 0;
while(i <= 3 && !result.startsWith("{")){
......@@ -327,6 +314,7 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
List<Relation> relations = jsonArray.toJavaList(Relation.class);
if(relations != null && !relations.isEmpty()){
List<Relation> paramRelations = new ArrayList<Relation>();
relations = removeRelation(relations);
for (Relation r : relations) {
if(!StringUtil.ckeckEmpty(r.getFirst_timestamp())){
r.setFirst_timestamp(DateUtil.getDateTime(new Date(Long.valueOf(r.getFirst_timestamp()))));
......@@ -547,6 +535,42 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
throw new InterServiceException(ResultEnum.DB_QUERYERROR.getCode(),ResultEnum.DB_QUERYERROR.getMessage());
}
}
/**
* 对List<JSONObject>中的根据JSONObject中的objValue进行去重
* @return
*/
private List<JSONObject> removeJSonObject(List<JSONObject> jsonObjects){
Set<JSONObject> set = new TreeSet<JSONObject>(new Comparator<JSONObject>() {
@Override
public int compare(JSONObject o1, JSONObject o2) {
return o1.getString("objValue").compareTo(o2.getString("objValue"));
}
});
set.addAll(jsonObjects);
return new ArrayList<JSONObject>(set);
}
/**
* 批量插入Relation对象时,防止有重复的数据出现,报违反唯一标识错误
* 所以先对其进行去重
* @param relations
* @return
*/
private List<Relation> removeRelation(List<Relation> relations){
HashMap<String,Relation> tempMap = new HashMap<>();
for (Relation r : relations) {
String key = r.getObjectfromtype()+r.getObjectfromvalue()+r.getObjecttotype()+
r.getObjecttovalue()+r.getRelativetype()+r.getSource();
if(!tempMap.containsKey(key)){
tempMap.put(key, r);
}
}
List<Relation> tempList = new ArrayList<>();
for(String key : tempMap.keySet()){
tempList.add(tempMap.get(key));
}
return tempList;
}
}
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