company_credit

/**  * Created by wu-yj on 2016/5/6.  */

import java.sql.{Connection, DriverManager, PreparedStatement}

import org.apache.spark.{SparkConf, SparkContext}import java.sql.{Connection, DriverManager}

import org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.sql.hive.HiveContext

import java.util.Dateimport java.text.SimpleDateFormat

class zhengxin_dis{

}

object zhengxin_dis {    def main(args: Array[String]) {        //链接Mysql        val driver = "com.mysql.jdbc.Driver"        val url = "jdbc:mysql://10.1.2.190:8066/mq_sale_disc"        val username = "kr.user"        val password = "[email protected]"        var connectionMqcrm: Connection = null        Class.forName(driver)        connectionMqcrm = DriverManager.getConnection(url, username, password)        val statement = connectionMqcrm.createStatement()

        //链接Hive        val sparkconf = new SparkConf().setMaster("spark://10.1.2.70:7077").setAppName("local")        val sc = new SparkContext(sparkconf)        val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)

        //定义城市级别        val oneline: List[String] = List("北京", "上海 ", "广州 ", "深圳 ")        val twoline: List[String] = List("杭州", "宁波 ", "西安 ", "温州 ", "佛山 ", "东莞 ", "成都 ", "武汉 ", "哈尔滨 ", "青岛 ", "大连 ", "厦门 ",            "沈阳 ", "长春 ", "长沙 ", "福州 ", "郑州 ", "石家庄 ", "苏州 ", "南京 ", "济南 ", "重庆 ", "无锡 ",            "烟台 ", "太原 ", "合肥 ", "南昌 ", "南宁 ", "昆明 ", "淄博 ", "唐山 ")        val threeline: List[String] = List("绍兴", "台州 ", "嘉兴 ", "榆林 ", "义乌 ", "金华 ", "中山 ", "惠州 ", "茂名 ", "江门 ", "湛江 ", "宝鸡 ", "珠海 ")        val fourline: List[String] = List("咸阳", "肇庆 ", "汕头 ", "揭阳 ", "延安 ", "渭南 ", "清远 ", "衢州 ", "韶关 ", "丽水 ", "阳江 ")

        val rdd1 = sqlContext.sql("use moreqinrdb")        val namelist = sqlContext.sql("select company_name from company_business_info")        val namelistt=namelist.take(5)        //计算征信得分过程        for (coname <- namelistt) {            //法定代表人            var score = 0            val sqllegal = sqlContext.sql("select legal_representative from company_business_info where company_name = \‘" + coname + "\‘")            if (sqllegal.count() > 0) {                val legal = sqllegal.take(1)(0).toString().replace("[", "").replace("]", "")                if (legal != "" && (legal != "null" || legal != "None"))                    score += 100                else                    score += 90            } else                score += 90            //公司类型            val sqlcompanytype = sqlContext.sql("select company_type from company_business_info where company_name = \‘" + coname + "\‘")            if (sqlcompanytype.count() > 0) {                val companytype = sqlcompanytype.take(1)(0).toString().replace("[", "").replace("]", "")                if (companytype.contains("无限责任"))                    score += 100                else if (companytype.contains("有限股份") || companytype.contains("无限股份") || companytype.contains("股份两合"))                    score += 90                else if (companytype.contains("两合公司"))                    score += 80                else if (companytype.contains("股份有限"))                    score += 60                else if (companytype.contains("个体"))                    score += 20                else if (companytype.contains("有限责任"))                    score += 40                else                    score += 0            } else                score += 0            //经营状态            val sqlmanagementform = sqlContext.sql("select operation_status from company_business_info where company_name = \‘" + coname + "\‘")            sqlmanagementform.show()            if (sqlmanagementform.count() > 0) {                val managementform = sqlmanagementform.take(1)(0).toString().replace("[", "").replace("]", "")                if (managementform == "开业")                    score += 80                else if (managementform == "存续")                    score += 100                else if (managementform == "迁出")                    score += 50                else if (managementform == "吊销")                    score += 0                else if (managementform == "迁入" || managementform == "待迁入")                    score += 60                else if (managementform == "歇业")                    score += 30                else                    score += 0            } else                score += 0            //成立时间            val sqlfoundtime = sqlContext.sql("select build_date from company_business_info where company_name = \‘" + coname + "\‘")            if (sqlfoundtime.count() > 0) {                val foundtime = sqlfoundtime.take(1)(0).toString().replace("[", "").replace("]", "")                if (foundtime.length > 1 && foundtime != "null" && foundtime != "None" && foundtime != "") {                    if (foundtime != "None" || foundtime != "null" || foundtime != "") {                        val time = System.currentTimeMillis()                        var dateFormat: SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd")                        var now: Date = new Date(time)                        val currentTime = dateFormat.format(now)                        val daydiff = dateFormat.parse(currentTime).getTime - dateFormat.parse(foundtime).getTime                        val dayinter = daydiff / (1000 * 3600 * 24)                        var timeyear = dayinter / 365                        if (timeyear > 30)                            score += 100                        if (timeyear >= 10 && timeyear <= 30)                            score += 90                        if (timeyear >= 5 && timeyear < 10)                            score += 80                        if (timeyear >= 3 && timeyear < 5)                            score += 60                        if (timeyear > 1 && timeyear < 3)                            score += 30                        if (timeyear < 1 && timeyear >= 0)                            score += 0                    } else                        score += 0                } else                    score += 0            } else                score += 0            //注册资本            val sqlcapital = sqlContext.sql("select registered_capital from company_business_info where  company_name = \‘" + coname + "\‘")            if (sqlcapital.count() > 0) {                val capital = sqlcapital.take(1)(0).toString().replace("[", "").replace("]", "")                if (capital.length > 0) {                    if (capital.contains("人民币")) {                        val zibencl = capital.subSequence(0, capital.indexOf("万"))                        if (zibencl.toString().contains(",")) {                            val ziben = zibencl.toString().replace(",", "").toInt                            if (ziben >= 10000)                                score += 100                            else if (ziben >= 5000 && ziben < 10000)                                score += 90                            else if (ziben >= 3000 && ziben < 5000)                                score += 80                            else if (ziben >= 1000 && ziben < 3000)                                score += 70                            else if (ziben >= 500 && ziben < 1000)                                score += 50                            else if (ziben >= 100 && ziben < 500)                                score += 30                            else if (ziben < 100)                                score += 0                        } else {                            val ziben = zibencl.toString().toFloat                            if (ziben >= 500 && ziben < 1000)                                score += 50                            else if (ziben >= 100 && ziben < 500)                                score += 30                            else if (ziben < 100)                                score += 0                        }                    } else if (capital.contains("美元")) {                        val zibencl = capital.subSequence(0, capital.indexOf("万"))                        if (zibencl.toString().contains(",")) {                            val ziben = zibencl.toString().toFloat * 6.8                            if (ziben >= 10000)                                score += 100                            else if (ziben >= 5000 && ziben < 10000)                                score += 90                            else if (ziben >= 3000 && ziben < 5000)                                score += 80                            else if (ziben >= 1000 && ziben < 3000)                                score += 70                            else if (ziben >= 500 && ziben < 1000)                                score += 50                            else if (ziben >= 100 && ziben < 500)                                score += 30                            else if (ziben < 100)                                score += 0                        } else {                            val ziben = zibencl.toString().toFloat * 6.8                            if (ziben >= 5000 && ziben < 10000)                                score += 90                            else if (ziben >= 3000 && ziben < 5000)                                score += 80                            else if (ziben >= 1000 && ziben < 3000)                                score += 70                            else if (ziben >= 500 && ziben < 1000)                                score += 50                            else if (ziben >= 100 && ziben < 500)                                score += 30                            else if (ziben < 100)                                score += 0                        }                    } else {                        score += 0                    }                } else {                    score += 0                }            } else                score += 0            //登记机关            val sqlregister = sqlContext.sql("select registration_authority from company_business_info where company_name = \‘" + coname + "\‘")            if (sqlregister.count() > 0) {                val register = sqlregister.take(1)(0).toString().replace("[", "").replace("]", "")                if (register.length > 1) {                    if (register.contains("县"))                        score += 20                    else if (register.contains("市") == true && register.contains("区") == true && register.contains("省") == true) {                        val subS = register.subSequence(register.indexOf("省") + 1, register.indexOf("市") + 1)                        if (oneline.contains(subS))                            score += 100                        else if (twoline.contains(subS))                            score += 80                        else if (threeline.contains(subS))                            score += 60                        else if (fourline.contains(subS))                            score += 40                        else if (oneline.contains(subS) == false && twoline.contains(subS) == false && threeline.contains(subS) == false && fourline.contains(subS) == false)                            score += 20                    } else if (register.contains("市") == true && register.contains("省") == true && register.contains("区") == false) {                        val subS = register.subSequence(register.indexOf("省") + 1, register.indexOf("市") + 1)                        if (oneline.contains(subS))                            score += 100                        else if (twoline.contains(subS))                            score += 80                        else if (threeline.contains(subS))                            score += 60                        else if (fourline.contains(subS))                            score += 40                        else if (oneline.contains(subS) == false && twoline.contains(subS) == false && threeline.contains(subS) == false && fourline.contains(subS) == false)                            score += 20                    } else if (register.contains("市") == true && register.contains("区") == true && register.contains("省") == false) {                        val subS = register.subSequence(0, register.indexOf("市") + 1)                        if (oneline.contains(subS))                            score += 100                        else if (twoline.contains(subS))                            score += 80                        else if (threeline.contains(subS))                            score += 60                        else if (fourline.contains(subS))                            score += 40                        else if (oneline.contains(subS) == false && twoline.contains(subS) == false && threeline.contains(subS) == false && fourline.contains(subS) == false)                            score += 20                    } else if (register.contains("市") == true && register.contains("区") == false && register.contains("省") == false) {                        val subS = register.subSequence(0, register.indexOf("市") + 1)                        if (oneline.contains(subS))                            score += 100                        else if (twoline.contains(subS))                            score += 80                        else if (threeline.contains(subS))                            score += 60                        else if (fourline.contains(subS))                            score += 40                        else if (oneline.contains(subS) == false && twoline.contains(subS) == false && threeline.contains(subS) == false && fourline.contains(subS) == false)                            score += 20                    } else if (register.contains("市") == false && register.contains("区") == true && register.contains("省") == false) {                        score == 20                    } else                        score += 0                } else                    score += 0            } else                score += 0            //股东信息            val sqlshareholder = sqlContext.sql("select stock_holder_type from stock_holder_info where  company_name = \‘" + coname + "\‘")            if (sqlshareholder.count() > 0) {                val shareholder = sqlshareholder.take(1)(0).toString().replace("[", "").replace("]", "")                if (shareholder.contains("法人"))                    score += 100                else if (shareholder.contains("自然人"))                    score += 50                else                    score += 0            } else                score += 0            //主要人员            val sqlkeymember = sqlContext.sql("select manager_occupation from managers_info where  company_name = \‘" + coname + "\‘")            if (sqlkeymember.count() > 0) {                val keymember = sqlkeymember.take(1)(0).toString().replace("[", "").replace("]", "")                if (keymember.contains("监事"))                    score += 100                else                    score += 50            } else                score += 0            //法院判决            val sqlcourtdecision = sqlContext.sql("select judge_role from judicial_decision where  company_name = \‘" + coname + "\‘")            if (sqlcourtdecision.count() > 0) {                val courtdecision = sqlcourtdecision.take(1)(0).toString().replace("[", "").replace("]", "")                var countdc = 0                if (courtdecision.contains("被告")) {                    countdc += 1                }                score -= countdc * 10            } else                score += 0            //被执行人信息            val sqlexecuteinfo = sqlContext.sql("select filing_time from judicial_decision_execution where company_name =\‘" + coname + "\‘")            if (sqlexecuteinfo.count() > 0) {                val executeinfo = sqlexecuteinfo.take(1)(0).toString().replace("[", "").replace("]", "")                val countexin = executeinfo.length                var num = 0                for (re <- executeinfo) {                    if (re.toString() == "" || re.toString() == "None")                        num += 1                }                score -= (countexin - num) * 10            } else                score += 0            //失信人信息            val sqllosefaith = sqlContext.sql("select *from dishonest_info  where company_name =\‘" + coname + "\‘")            if (sqllosefaith.count() > 0) {                val losefaith = sqllosefaith.take(1)(0).toString().replace("[", "").replace("]", "")                val countlose = losefaith.length                if (countlose > 0)                    score += -100                else                    score += 0            } else                score += 0            //经营异常            val sqlrununusual = sqlContext.sql("select inclusion_date from company_exception_info where company_name =\‘" + coname + "\‘")            if (sqlrununusual.count() > 0) {                val rununusual = sqlrununusual.take(1)(0).toString().replace("[", "").replace("]", "")                val countrun = rununusual.length                score += -10 * countrun            } else                score += 0            //对外投资            val sqlinvestment = sqlContext.sql("select investment_company_name from investment_company_info where parent_company_name =\‘" + coname + "\‘")            if (sqlinvestment.count() > 0) {                val investment = sqlinvestment.take(1)(0).toString().replace("[", "").replace("]", "")                val countment = investment.length                score += 5 * countment            } else                score += 0            //企业基本年报            val sqlreport = sqlContext.sql("select *from company_basic_info where  company_name =\‘" + coname + "\‘")            if (sqlreport.count() > 0) {                val report = sqlreport.take(1)(0).toString().replace("[", "").replace("]", "")                val countreport = report.length                if (countreport > 0)                    score += 50                else                    score += 0            } else                score += 0            if (score < 0)                score = 0            else {                score = score            }            //生成ID            var count = 0            val sqlname = "insert into tmp_enterprise( ENTERPRISE_NAME ) values (\‘" + coname + "\‘) "            val sqlcount = "select count(*) from  tmp_enterprise  where  ENTERPRISE_NAME  =\‘" + coname + "\‘ "            var ecusqlcount = statement.executeQuery(sqlcount)            while (ecusqlcount.next()){                count = ecusqlcount.getInt(1)            }            if (count >0) {                val ecusqlname = statement.executeUpdate(sqlname)            }            //插入征信分数            var countnum =0            var companyID = 0            val sqlID = "select  ENTERPRISE_ID  from  tmp_enterprise  where  ENTERPRISE_NAME= \‘" + coname +"\‘ "            val ecusqlID = statement.executeQuery(sqlID)            while (ecusqlID.next()){                companyID = ecusqlID.getInt("ENTERPRISE_ID")            }            val timenew = System.currentTimeMillis()            var dateFormat: SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd")            var nowtime: Date = new Date(timenew)            val currentTimenew = dateFormat.format(nowtime)            val sqlscore = "insert  into tm_enterprise_credit(CREATE_TIME ,UPDATE_TIME , ENTERPRISE_ID, CREDIT_SCORE ) values( \‘" + currentTimenew + "\‘ , \‘" + currentTimenew + "\‘,\‘" + companyID + "\‘,\‘" + score + "\‘)"            val sqlcountN = "select count(*) from  tm_enterprise_credit  where  ENTERPRISE_ID  = \‘" + companyID + "\‘"            val ecusqlcountN = statement.executeQuery(sqlcountN)            while (ecusqlcountN.next()){                countnum = ecusqlcountN.getInt(1)            }            if (countnum > 0 ) {                val sqlnew = "update tm_enterprise_credit set CREDIT_SCORE= \‘" + score + " \‘ , UPDATE_TIME= \‘" + currentTimenew + "\‘" + "where ENTERPRISE_ID= \‘" + companyID + "\‘"                val ecusqlnew = statement.executeUpdate(sqlnew)            } else {                val ecusqlscore = statement.executeUpdate(sqlscore)            }        }    }}
时间: 2024-10-04 18:32:46

company_credit的相关文章