/**
* 获取旧供应商id
* @param json
* @return
* @throws ActiveRecordException
*/
public String getSuppId(JSONArray json ,String suppliersName) throws ActiveRecordException{
String suppId = "";
//默认不存在
if(json == null || json.size() == 0){
return suppId;
}
////调用共通的存在DB中的供应商信息
Record supp=getExistSuppliersName(json, suppliersName);
if (supp == null ) {
return suppId;
}
return supp.getStr("uuid") ;
// String beforeName = "";
// for (int j = 0; j < json.size(); j++) {
// JSONObject obj = JSONObject.parseObject(json.getString(j));
// if (obj.getString("ProjectName")!=null && (obj.getString("ProjectName").startsWith("名称变更") || obj.getString("ProjectName").equals("企业名称") || obj.getString("ProjectName").equals("名称"))) {
// if(obj.getString("BeforeContent").lastIndexOf("企业名称")>-1)
// {
// String[] array = BCConvertUtils.qj2bj(obj.getString("AfterContent")).split(";");
// for(String name:array)
// {
// if(name.lastIndexOf("企业名称")>-1)
// {
// name = name.replace("\n", "");
// String[] nameArray = name.split(":");
// beforeName = nameArray[1].trim();
// }
// }
// }
// else
// {
// beforeName = obj.getString("BeforeContent");
// }
// //通过beforename查询供应商名称是否存在
// Record rec = null;
// rec = Db.findFirst("select uuid from biz_suppliers where sys_status=1 and suppliers_name=? ",beforeName);
// if( rec ==null ){
// rec = Db.findFirst("select uuid from biz_suppliers where sys_status=1 and (suppliers_name=? or suppliers_name=?)",BCConvertUtils.bj2qj(beforeName),BCConvertUtils.qj2bj(beforeName));
// }
// if(rec != null){
// suppId = rec.getStr("uuid");
// break;
// }
// }
// }
// return suppId;
//
}
/**
* 获取旧供应商信息
* @param json
* @return
* @throws ActiveRecordException
*/
public Record getSuppRec(JSONArray json,String suppliersName) throws ActiveRecordException{
Record supp = null;
// 默认不存在
if(json == null || json.size() == 0){
return supp;
}
//// 调用共通的存在DB中的供应商信息
supp=getExistSuppliersName(json, suppliersName);
return supp;
// String beforeName = "";
// for (int j = 0; j < json.size(); j++) {
// JSONObject obj = JSONObject.parseObject(json.getString(j));
// if (obj.getString("ProjectName")!=null && (obj.getString("ProjectName").startsWith("名称变更") || obj.getString("ProjectName").equals("企业名称") || obj.getString("ProjectName").equals("名称"))) {
// if(obj.getString("BeforeContent").lastIndexOf("企业名称")>-1)
// {
// String[] array = BCConvertUtils.qj2bj(obj.getString("AfterContent")).split(";");
// for(String name:array)
// {
// if(name.lastIndexOf("企业名称")>-1)
// {
// name = name.replace("\n", "");
// String[] nameArray = name.split(":");
// beforeName = nameArray[1].trim();
// }
// }
// }
// else
// {
// beforeName = obj.getString("BeforeContent");
// }
// //通过beforename查询供应商名称是否存在
// Record rec = null;
// rec = Db.findFirst("select uuid,suppliers_name,certificates_no,op_from,op_to from biz_suppliers where sys_status=1 and suppliers_name=?",beforeName);
// if(rec == null){
// rec = Db.findFirst("select uuid,suppliers_name,certificates_no,op_from,op_to from biz_suppliers where sys_status=1 and (suppliers_name=? or suppliers_name=?)",BCConvertUtils.bj2qj(beforeName),BCConvertUtils.qj2bj(beforeName));
// }
// if(rec != null){
// supp = rec;
// break;
// }
// }
// }
// return supp;
//
}
/**
* 获取工商接口中,履历数据在DB中存在的那条数据
* @param json 工商接口数据
* @param beforeSuppliersName 审核的供应商名字
* @return
* @throws ActiveRecordException
*/
public Record getExistSuppliersName(JSONArray json,String beforeSuppliersName) throws ActiveRecordException{
Record supp = null;
boolean flag = false;
String name = "";
for (int j = 0; j < json.size();j++) {
// 获取当前的循环的JSON对象
JSONObject obj = JSONObject.parseObject(json.getString(j));
// 获取BeforeContent信息
String beforeContent=obj.getString("BeforeContent");
// 获取afterContent信息
String afterContent=obj.getString("AfterContent");
// 这里统一用半角来匹配
beforeSuppliersName = BCConvertUtils.qj2bj(beforeSuppliersName);
beforeContent = BCConvertUtils.qj2bj(beforeContent);
afterContent = BCConvertUtils.qj2bj(afterContent);
// 第一种情况:改之前的名字,存在DB中
if (StringUtils.notBlank(beforeContent) && beforeContent.contains(beforeSuppliersName)) {
// 调用公用方法
Record rec = commonWay(beforeContent , name);
if(rec != null){
supp = rec;
flag = false;
break;
}
}
// 第二种情况:改之后的名字,存在DB中
if (StringUtils.notBlank(afterContent) && afterContent.contains(beforeSuppliersName)) {
// 调用公用方法
Record rec = commonWay(afterContent , name);
if(rec != null){
supp = rec;
flag = false;
break;
}
}
// 第三种情况: 用改之前的名字来判断,但用改之后的名字来查
if (StringUtils.notBlank(beforeContent) && beforeContent.contains(beforeSuppliersName)) {
// 调用公用方法
Record rec = commonWay(afterContent , name);
if(rec != null){
supp = rec;
flag = false;
break;
}
}
// 第四种情况:用改之后的名字判断,但用改之前的名字来查
if (StringUtils.notBlank(afterContent) && afterContent.contains(beforeSuppliersName)) {
// 调用公用方法
Record rec = commonWay(beforeContent , name);
if(rec != null){
supp = rec;
flag = false;
break;
}
}
// 第五种情况:用改之后的名字,作为下次循环方法的供应商名字
if (StringUtils.notBlank(beforeContent) && beforeContent.contains(beforeSuppliersName)) {
afterContent = afterContent.replace("\n", "");
String[] nameArray = afterContent.split(":");
name = nameArray[1].trim().substring(0,nameArray[1].length() - 1);
flag = true;
break;
}
}
// 标志位为false,直接结束
if (!flag) {
return supp ;
}
return getExistSuppliersName(json,name);
}
/**
* 查询数据是否在DB中存在
* @param content
* @param name
* @throws ActiveRecordException
*/
public Record commonWay(String content ,String name) throws ActiveRecordException {
content = content.replace("\n", "");
String[] nameArray = content.split(":");
name = nameArray[1].trim().substring(0,nameArray[1].length() - 1);
Record rec = Db.findFirst("select uuid,suppliers_name,certificates_no,op_from,op_to from biz_suppliers where sys_status=1 and suppliers_name=?",name);
if(rec == null){
rec = Db.findFirst("select uuid,suppliers_name,certificates_no,op_from,op_to from biz_suppliers where sys_status=1 and (suppliers_name=? or suppliers_name=?)",BCConvertUtils.bj2qj(name),BCConvertUtils.qj2bj(name));
}
return rec;
}
/**
* 获取工商接口数据中的信息
* @param obj 每次循环的工商接口数据(单条)
* @param suppliersName 审核的供应商名字
* @return Record
*/
@SuppressWarnings("null")
public Record getHistory(JSONObject obj,String suppliersName){
Record supp = null;
// 获取BeforeContent信息
String beforeContent = obj.getString("BeforeContent");
// 获取afterContent信息
String afterContent = obj.getString("AfterContent");
// 这里统一用半角来匹配
suppliersName = BCConvertUtils.qj2bj(suppliersName);
beforeContent = BCConvertUtils.qj2bj(beforeContent);
afterContent = BCConvertUtils.qj2bj(afterContent);
// 第一种情况:审核的供应商名字与改之前的名字匹配
if (StringUtils.notBlank(beforeContent) && beforeContent.contains(suppliersName)) {
// 获取改前名字
beforeContent = beforeContent.replace("\n", "");
String[] beforeNameArray = beforeContent.split(":");
String beforeName = beforeNameArray[1].trim().substring(0,beforeNameArray[1].length() - 1);
// 获取改动时间
String changeDateStr = obj.getString("ChangeDate");
// 获取改后名字
afterContent = afterContent.replace("\n", "") ;
String[] afterNameArray = afterContent.split(":");
String afterName = afterNameArray[1].trim().substring(0,afterNameArray[1].length() - 1);
Record su = new Record() ;
su.set("beforeName", beforeName);
su.set("changeDate", changeDateStr);
su.set("afterName", afterName);
return su;
}
// 第二种情况:审核的供应商名字与改之后的名字匹配
if (StringUtils.notBlank(afterContent) && afterContent.contains(suppliersName)) {
// 获取改前名字
beforeContent = beforeContent.replace("\n", "");
String[] beforeNameArray = beforeContent.split(":");
String beforeName = beforeNameArray[1].trim().substring(0,beforeNameArray[1].length() - 1);
// 获取改动时间
String changeDateStr = obj.getString("ChangeDate");
// 获取改后名字
afterContent = afterContent.replace("\n", "");
String[] afterNameArray = afterContent.split(":");
String afterName = afterNameArray[1].trim().substring(0,afterNameArray[1].length() - 1);
Record su = new Record() ;
su.set("beforeName", beforeName);
su.set("changeDate", changeDateStr);
su.set("afterName", afterName);
return su;
}
return supp;
}
/**
* 这是以变更之前供应商名字来查的数据 (beforeSuppliersName 用改前的名字,来找它,改后的名字)
* 获取工商接口中改动后的供应商名称
* @param json 工商接口返回的数据
* @param oldSuppliersName 审核的供应商名字(未改动之前)
* @return
* @throws ActiveRecordException
*/
public static String getNewSuppRec(JSONArray json ,String beforeSuppliersName) throws ActiveRecordException{
String afterContent= beforeSuppliersName;
boolean flag = false;
for (int j = 0; j < json.size();j++) {
// 获取当前的循环的JSON对象
JSONObject obj = JSONObject.parseObject(json.getString(j));
// 获取当前循环的未改动以前的数据
String beforeContent=obj.getString("BeforeContent");
// 如果当前循环的未改动以前的数据含 审核的供应商名字
if (beforeContent.contains(beforeSuppliersName)) {
// 则获取当前循环改动后的数据
afterContent=obj.getString("AfterContent");
flag = true;
break;
}
}
// 标志位为false,直接结束
if (!flag) {
return afterContent ;
}
return getNewSuppRec( json , afterContent);
}
public static void main(String[] args) throws ActiveRecordException {
String lo = "{\"ProjectName\":\"企业基本信息\",\"ChangeDate\":\"2019-06-21\",\"AfterContent\":\"名称:厦门3垒智建设有限公司,\",\"BeforeContent\":\"名称:厦门2垒智建设有限公司,\"}";
String lo1 = "{\"ProjectName\":\"企业基本信息\",\"ChangeDate\":\"2019-06-21\",\"AfterContent\":\"名称:厦门2垒智建设有限公司,\",\"BeforeContent\":\"名称:厦门1垒智建设有限公司,\"}";
String lo2 = "{\"ProjectName\":\"企业基本信息\",\"ChangeDate\":\"2019-06-21\",\"AfterContent\":\"名称:厦门1垒智建设有限公司,\",\"BeforeContent\":\"名称:厦门垒智建设有限公司,\"}";
// String lo3 = "{\"ProjectName\":\"企业基本信息\",\"ChangeDate\":\"2019-06-21\",\"AfterContent\":\"名称:厦门4垒智建设有限公司,\",\"BeforeContent\":\"名称:厦门3垒智建设有限公司,\"}";
// String lo4 = "{\"ProjectName\":\"企业基本信息\",\"ChangeDate\":\"2019-06-21\",\"AfterContent\":\"名称:厦门5垒智建设有限公司,\",\"BeforeContent\":\"名称:厦门4垒智建设有限公司,\"}";
JSONObject json = JSONObject.parseObject(lo);
JSONObject json1 = JSONObject.parseObject(lo1);
JSONObject json2 = JSONObject.parseObject(lo2);
// JSONObject json3 = JSONObject.parseObject(lo3);
// JSONObject json4 = JSONObject.parseObject(lo4);
JSONArray jsonArray = new JSONArray();
jsonArray.add(json);
jsonArray.add(json1);
jsonArray.add(json2);
// jsonArray.add(json3);
// jsonArray.add(json4);
// 这是用改前的名字,来找他,改后的名字
String abc = getNewSuppRec(jsonArray,"厦门垒智建设有限公司");
// abc 与 厦门垒智建设有限公司 这个厦门垒智建设有限公司 是最新的
// abc 与 厦门垒智建设有限公司 这个厦门垒智建设有限公司 是不一样最新的
System.out.println(abc);
}