/** * 获取旧供应商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(" ", ""); // 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(" ", ""); // 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(" ", ""); 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(" ", ""); 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(" ", ""); String[] beforeNameArray = beforeContent.split(":"); String beforeName = beforeNameArray[1].trim().substring(0,beforeNameArray[1].length() - 1); // 获取改动时间 String changeDateStr = obj.getString("ChangeDate"); // 获取改后名字 afterContent = afterContent.replace(" ", "") ; 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(" ", ""); String[] beforeNameArray = beforeContent.split(":"); String beforeName = beforeNameArray[1].trim().substring(0,beforeNameArray[1].length() - 1); // 获取改动时间 String changeDateStr = obj.getString("ChangeDate"); // 获取改后名字 afterContent = afterContent.replace(" ", ""); 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); }