zoukankan      html  css  js  c++  java
  • 递归用法

    /**
         * 获取旧供应商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);
            
        }
  • 相关阅读:
    简单的模板解析函数
    HTML通过事件传递参数到js 二 event
    HTML通过事件传递参数到js一
    通过this获取当前点击选项相关数据
    LeetCode 20. 有效的括号(Valid Parentheses)
    LeetCode 459. 重复的子字符串(Repeated Substring Pattern)
    LeetCode 14. 最长公共前缀(Longest Common Prefix)
    LeetCode 168. Excel表列名称(Excel Sheet Column Title)
    LeetCode 171. Excel表列序号(Excel Sheet Column Number) 22
    LeetCode 665. 非递减数列(Non-decreasing Array)
  • 原文地址:https://www.cnblogs.com/xiaoniuniu886/p/11388503.html
Copyright © 2011-2022 走看看