/**
* 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. [ionic3.x开发记录]ios下页面过渡效果不出现的小坑

    如果内容没有被<ion-content></ion-content>或者<ion-header></ion-header>标签包裹,页面过渡的时候是没有 ...

  2. angular脚手架搭建

    下面以angular2.0为例前提已安装好node.js 1.安装cli执行如下命令npm install -g @angular/cli 2.创建新项目ng new my-app 3.然后到该项目目 ...

  3. matlab2014a 转化c语言

    一.原因错误 第一种,命令窗口测试代码mbulid -setup  出错 , 就是电脑没有安装sdk7.1  网上有很多安装教程(注意要有vc++2010要卸载,具体看网上教程,安装好了要更性vc++ ...

  4. windows 下使用 protobuf

    下载protobuf 下载地址:https://github.com/google/protobuf/releases 选择protoc-xxx-win32.zip下载 配置环境变量 将解压出来的pr ...

  5. python 循环结构 while for...in

    # ### 循环结构 while for...in """ 循环结构的特点:减少代码的冗余,提高代码的效率 语法形式: """ # 打印1~ ...

  6. python项目推荐(转载知乎)

    作者:Wayne Shi链接:https://www.zhihu.com/question/29372574/answer/88744491来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商 ...

  7. JS 获取最近(前)7天(一周内)和最近(前)3天日期

    //获取最近7天日期 getDay(0);//当天日期 getDay(-7);//7天前日期 //获取最近3天日期 getDay(0);//当天日期 getDay(-3);//3天前日期 functi ...

  8. selenium之chrome驱动版本

    chrome之selenium驱动: 各版本驱动,可以到如下地址下载,并查看版本: http://chromedriver.storage.googleapis.com/index.html 查看版本 ...

  9. git之commit

    面解释的话, 1.git commit -m用于提交暂存区的文件: 2.git commit -am用于提交跟踪过的文件. 要理解它们的区别,首先要明白git的文件状态变化周期,如下图所示 工作目录下 ...

  10. jpa报错:Table 'dev-test.hibernate_sequence' doesn't exist

    Hibernate 能够出色地自动生成主键.Hibernate/EBJ 3 注释也可以为主键的自动生成提供丰富的支持,允许实现各种策略.其生成规则由@GeneratedValue设定的.这里的@id和 ...