• 递归用法


    /**
         * 获取旧供应商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);
            
        }
  • 相关阅读:
    Mybatis查询select操作
    插入排序和它的进化希尔排序
    关于c头文件的使用的小记录
    Mybatis介绍
    spring tool suite开发环境搭建
    一个简单的jsp+servlet登录界面的总结
    纠正关于线程的错误理解
    表达式语言EL简单学习
    [BZOJ 1804] Flood
    [POJ 1739] Tony's Tour
  • 原文地址:https://www.cnblogs.com/xiaoniuniu886/p/11388503.html
Copyright © 2020-2023  润新知