/**
* 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.Date
import 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 = "user@85263382"
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)
}
}
}
}

company_credit的更多相关文章

随机推荐

  1. MongoDB - Indexes

    #explain command pp db[:zips].find(:state => 'MD').explain #List all indexes: db[:zips].indexes.e ...

  2. 制作自己的docker镜像

    制作自己的Docker镜像主要有如下两种方式: 1.使用docker commit 命令来创建镜像 通过docker run命令启动容器 修改docker镜像内容 docker commit提交修改的 ...

  3. Linux环境下虚拟环境virtualenv安装和使用

    virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够: 1. 在没有权限的情况下安装新套件 2. 不同应用可以使用不同的套件版本 3. 套件升级不影响其他应用 ...

  4. oracle 表空间,用户的创建及授权,表空间基本操作

    参考地址:https://www.cnblogs.com/zhaideyou/articles/5845271.html Oracle安装完后,其中有一个缺省的数据库,除了这个缺省的数据库外,我们还可 ...

  5. jps命令详解

    JPS 名称: jps - Java Virtual Machine Process Status Tool 命令用法: jps [options] [hostid] options:命令选项,用来对 ...

  6. webpack(5) -开发环境

    使用 source map (仅用于开发环境) 当 webpack 打包源代码时,可能会很难追踪到 error(错误) 和 warning(警告) 在源代码中的原始位置.例如,如果将三个源文件(a.j ...

  7. charles-抓包Andriod 手机的设置

    长按弹出 修改后: charles如果不配置SSL通用证书: 会导致HPPTS协议的域名抓取失败/乱码的现象: 现在SSL越来越多,很多博客都上了SSL,支付相关的行业更是基础配置: charles配 ...

  8. 团队项目第一篇——NABCD

    团队名称: 团队项目名称: 团队口号: N(Need)需求: 现如今数据越来越零碎化,繁杂化,身为在校大学生的我们也因此对于时间的利用率也相应减少,为了时间的充分利用,减少在冗杂的信息中耽误的时间,充 ...

  9. linux基本命令之stat

    我们在开始接触到linux系统时一般会首先接触ls命令,但是ls命令一来有众多参数,二来所能显示的文件描述也极为有限,仅仅是stat的一部分,那么我们来看下我们的stat命令如图 stat  /etc ...

  10. User root is not allowed to impersonate anonymous

    User root is not allowed to impersonate anonymous ava.lang.RuntimeException: org.apache.hadoop.ipc.R ...