Commit 01b1e8b7 by 黄静

hj

parent 51edf273
#-*- encoding:utf-8 -*-
#!/usr/bin/python
import pymysql
ip = "43.247.184.94"
port = 9187
# ip = "172.16.18.20"
# port = 3306
database = "ent_data"
user = "nice"
password = "Niceee@2020#@"
def Getdata(cate_name):
sql = 'select * from tj_policycycle where cate_name = "%s" order by life_cycle' % cate_name
#数据库连接
db = pymysql.Connect(ip, user, password, database, port)
cursor = db.cursor(cursor=pymysql.cursors.DictCursor)
try:
cursor.execute(sql)
re1 = cursor.fetchall()
if re1:
list = []
for ree in re1:
if ree:
policy_name = ree["policy_name"]
life_cycle = ree["life_cycle"]
dict = {}
dict[policy_name] = life_cycle
list.append(dict)
return 1,list
else:
db.close()
return 0, {}
except:
db.close()
return -1, {}
def InsertData(datainfo):
# 数据库连接
db = pymysql.Connect(ip, user, password, database, port)
cursor = db.cursor(cursor=pymysql.cursors.DictCursor)
try:
update_sql = 'update tj_policycycle set life_cycle = %s where id = %s'
insert_sql = 'INSERT INTO `ent_data`.`tj_policycycle` (`cate_name`, `policy_name`, `life_cycle`) VALUES (%s, %s, %s)'
for data in datainfo:
cate_name = data["cate_name"]
policy_name = data["policy_name"]
life_cycle = data["life_cycle"]
select_sql = 'select * from tj_policycycle where cate_name = "%s" and policy_name = "%s"' % (cate_name, policy_name)
cursor.execute(select_sql)
re1 = cursor.fetchone()
if re1:
id = re1["id"]
tub = (life_cycle, id)
cursor.execute(update_sql,tub)
else:
tub = (cate_name, policy_name, life_cycle)
cursor.execute(insert_sql, tub)
db.commit()
db.close()
return 1
except FileExistsError as e:
db.rollback()
db.close()
return 0
# 下面一句的作用1是:运行本程序文件时执行什么操作
if __name__ == "__main__":
# #插入数据库
# datainfo = [
# {"cate_name":"文化、体育和娱乐业","policy_name":"IDC许可证","life_cycle":5},
# {"cate_name": "文化、体育和娱乐业", "policy_name": "EDI许可证", "life_cycle": 3},
# {"cate_name": "信息传输、软件和信息技术服务业", "policy_name": "IDC许可证", "life_cycle": 8},
# ]
#
#
# result = InsertData(datainfo)
# print(str(result))
#查询数据
cate_name = "文化、体育和娱乐业"
re1,re2 = Getdata(cate_name)
print(str(re1))
print(str(re2))
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020/3/19 10:54
# @Author : fanhui
# @File : GetImageFromSql.py
# @Software: PyCharm
"""企业画像和推荐商机"""
#读取数据库,获取画像标签
import pymysql
from DBUtils.PooledDB import PooledDB
from flask import request,jsonify
# 数据库
MYSQL_HOST = '43.247.184.94' #外网地址
PORT = 9187 #外网端口
USER = 'nice'
PASSWORD = 'Niceee@2020#@'
DB = 'ent_data'
pool = PooledDB(pymysql,8, host=MYSQL_HOST, user=USER, passwd=PASSWORD, db=DB, port=PORT)
#检索企业画像信息
def GetImageFromSql(companyname):
print(companyname,"===========获取公司名称查询画像信息")
# 查询数据库
conn = pool.connection()
cursor = conn.cursor()
image_result = [] #画像列表
try:
# 执行SQL语句
cursor.execute('SELECT * from tj_lable_copy1_test_0316 where company_name=%s',companyname)
# 获取所有配置列表
Allproduct_rules = cursor.fetchall()
print(Allproduct_rules)
for row in Allproduct_rules:
# 获取所有规则
image_result=row[1]
print(image_result)
except:
return ("没有查询到该公司画像信息")
finally:
cursor.close()
conn.close()
if image_result:
image_result = image_result.replace("[","").replace("]","").replace('"',"").replace("'","").replace(",",",")
imageresult=list(image_result.split(","))
print(type(imageresult),"%%%%%%%")
else:imageresult=image_result
return imageresult
#检索产品信息
def GetProductFromSql(companyname):
print(companyname,"===========获取公司名称查询产品推荐信息")
# 查询数据库
conn = pool.connection()
cursor = conn.cursor()
product_result = [] #产品列表
try:
# 执行SQL语句
cursor.execute('SELECT * from tj_product_result_copy1_test_0317 where companyname=%s',companyname)
# 获取所有配置列表
Allproduct_rules = cursor.fetchall()
print(Allproduct_rules)
for row in Allproduct_rules:
# 获取所有规则
product_result=row[1]
# print(type(product_result),product_result)
except:
return ("没有查询到该公司产品推荐信息")
finally:
cursor.close()
conn.close()
if product_result:
product_result = product_result.replace("[","").replace("]","").replace('"',"").replace("'","").replace(",",",").replace(" ","")
print(product_result)
productresult=list(product_result.split(","))
print(type(productresult),"%%%%%%%")
else:productresult=product_result
return productresult
def strQ2B(companyname):
"""公司名称全角转半角"""
name = ""
for uchar in companyname:
inside_code=ord(uchar)
if inside_code == 12288: #全角空格直接转换
inside_code = 32
elif (inside_code >= 65281 and inside_code <= 65374): #全角字符(除空格)根据关系转化
inside_code -= 65248
name += chr(inside_code)
return name
def getImageInfo(server):
@server.route('/gsb/api/GetHtmlInfoFromSql', methods=['POST'])
def GetImageInfo():
print("接口调用--------查询画像标签和产品推荐信息")
if request.method == 'POST':
requestdata = request.json
print(requestdata)
companyname = requestdata.get('companyname')
companyname = strQ2B(companyname)
Image_result=GetImageFromSql(companyname)
product_result=GetProductFromSql(companyname)
result={"image": Image_result,
"product":product_result}
return jsonify(result)
# server.run(host='127.0.0.1', port=9001, debug=True)
\ No newline at end of file
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020/3/27 9:10
# @Author : huangjing
# @File : Image_status.py
# @Software: PyCharm
import pymysql
from DBUtils.PooledDB import PooledDB
from flask import request,jsonify
"""任务表"""
# # 数据库规则表
MYSQL_HOST = '43.247.184.94' #外网地址
PORT = 9187 #外网端口
USER = 'nice'
PASSWORD = 'Niceee@2020#@'
DB = 'ent_data'
pool = PooledDB(pymysql,8, host=MYSQL_HOST, user=USER, passwd=PASSWORD, db=DB, port=PORT)
#根据传入公司名称获取专利报告链接及状态
def GetReportInfoFromSql(companyName):
# 检索企业画像信息
print(companyName, "===========获取公司名称查询专利信息")
# 查询数据库
conn = pool.connection()
cursor = conn.cursor()
report_dict={"report_status":"生成中","report_url":""}
try:
# 执行SQL语句
cursor.execute('SELECT * from tj_reportUrl where companyname=%s', companyName)
# 获取所有配置列表
Allreport_rules = cursor.fetchall()
for row in Allreport_rules:
# 获取所有数据
url_result = row[2]
if url_result:
report_dict["report_status"]="已生成"
report_dict["report_url"]=url_result
print(report_dict)
finally:
cursor.close()
conn.close()
return report_dict
#根据传入公司名称获取画像状态
def GetImageInfoFromSql(companyName):
# 检索企业画像信息
print(companyName, "===========获取公司名称查询画像信息")
# 查询数据库
conn = pool.connection()
cursor = conn.cursor()
status="画像生成中"
try:
# 执行SQL语句
cursor.execute('SELECT * from tj_lable_copy1_test_0316 where company_name=%s', companyName)
# 获取所有配置列表
Allproduct_rules = cursor.fetchall()
print(Allproduct_rules)
for row in Allproduct_rules:
# 获取所有数据
image_result = row[1]
if image_result:
status="已生成"
print(status)
except:
# return ("没有查询到该公司画像信息")
return status
finally:
cursor.close()
conn.close()
return status
#将获取的信息写入数据库
def WritePRtoSql(companyName, currdate,hx_status,report_dict):#把推荐结果写进数据库
print(report_dict,"将公司信息写入数据库")
report_status = report_dict["report_status"]
report_url = report_dict["report_url"]
# json写入数据库
conn = pool.connection()
cursor = conn.cursor()
sql='insert into tj_task(companyName,submit_time,image_status,report_status,report_url) values("%s","%s","%s","%s","%s")'%(companyName,currdate,hx_status,report_status,report_url)
try:
print(sql,"======sql")
cursor.execute(sql)
# 提交到数据库执行
conn.commit()
except Exception as e:
print(e)
conn.rollback()
# 关闭数据库连接
conn.close()
return "查询信息已写入数据库"
#根据传入公司名称查询画像状态表,返回任务信息
def GetImageStatusFromSql(companyName,pageSize,pageNum):
# 检索企业画像状态表
print(companyName, "===========获取公司名称查询画像状态信息")
# 查询数据库
conn = pool.connection()
cursor = conn.cursor()
search_list=[]
num_start=(pageNum-1)*pageSize
print(num_start,"================num_start")
sql='SELECT * from tj_task where companyName=\"%s\" order by submit_time DESC,id DESC limit %s,%s'%(companyName,num_start,pageSize)
try:
print("=================================")
# 执行SQL语句
cursor.execute(sql)
print(sql,"===================sql查询状态")
# 获取所有配置列表
Allsearch_result = cursor.fetchall()
print(Allsearch_result)
r=0
for row in Allsearch_result:
# 获取所有数据
image_status = row[3]
report_status = row[4]
if image_status=="已生成" and report_status =="已生成":
status="已生成"
else:
status = "生成中"
r+=1
search_dict={
"companyName":row[1],
"submit_time":row[2],
"status":status,
"patent_link":row[5]}
search_list.append(search_dict)
finally:
cursor.close()
conn.close()
return search_list
def work_total(companyName):
# 检索企业画像状态表
print(companyName, "===========获取公司名称查询总数量")
# 查询数据库
total=""
conn = pool.connection()
cursor = conn.cursor()
# 执行SQL语句
cursor.execute('SELECT COUNT(*) from tj_task WHERE companyName=%s', companyName)
# print(sql,"===================sql查询")
# 获取所有配置列表
Allsearch_result = cursor.fetchall()
for row in Allsearch_result:
total=row[0]
print(row[0],"=======")
cursor.close()
conn.close()
return total
def strQ2B(companyname):
"""公司名称全角转半角"""
name = ""
for uchar in companyname:
inside_code=ord(uchar)
if inside_code == 12288: #全角空格直接转换
inside_code = 32
elif (inside_code >= 65281 and inside_code <= 65374): #全角字符(除空格)根据关系转化
inside_code -= 65248
name += chr(inside_code)
return name
def imageInfo(server):
@server.route('/gsb/api/ImageStatusSearch', methods=['POST'])
def ImageStatusSearch():
print("接口调用--------查询画像状态")
if request.method == 'POST':
requestdata = request.json
print(requestdata)
# 当前页数
pageNum = requestdata.get('pageNum')
#是否插入表
insert_status=requestdata.get('insert_status')
print(insert_status, type(insert_status), "==========================insert")
# 每页展示的条数
pageSize = requestdata.get('pageSize')
# 公司名称
companyName = requestdata.get('companyName')
# 提交日期
currdate=requestdata.get('currdate')
#根据公司名称查询画像标签库、画像状态
hx_status = GetImageInfoFromSql(companyName)
report_dict = GetReportInfoFromSql(companyName)
result={}
if insert_status==1:
WritePRtoSql(companyName, currdate,hx_status,report_dict)
result["result_data"]=GetImageStatusFromSql(companyName,pageSize,pageNum)
result["total"]=work_total(companyName)
else:
result["result_data"] = GetImageStatusFromSql(companyName,pageSize,pageNum)
result["total"] = work_total(companyName)
return jsonify(result)
# server.run(host='127.0.0.1', port=8100, debug=True)
#!/usr/bin/env python import flask
# -*- coding: utf-8 -*- from flask_cors import CORS
# @Time : 2020/2/11 10:02 from Image_status import imageInfo
# @Author : fanhui from trade import selectcyle,insertcycle
# @File : risk_to_word.py from GetImageFromSql import getImageInfo
# @Software: PyCharm from online_GetLicenseImage import getlicenceInfo
from tf_member_es import gaoguan,gudong
from getcompanyinfofromES import GetComanyinfoFromES
from GetFIinfoFromJson import GetFIinfoFromJson server = flask.Flask(__name__)
from GetRiskinfo import getriskinfo
import time,requests,oss2,sys,os,json
from flask import Flask ,request
from docxtpl import DocxTemplate,InlineImage
from docx.shared import Mm
from pyecharts.charts import Gauge
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot
from pyecharts import options as opts
from flask_cors import *
server = Flask(__name__)
interface_path = os.path.dirname(__file__)
sys.path.insert(0, interface_path) # 将当前文件的父目录加入临时系统变量
server.config['JSON_AS_ASCII'] = False server.config['JSON_AS_ASCII'] = False
CORS(server, supports_credentials=True) # 跨域请求 CORS(server,supports_credentials=True) #跨域请求
# 生成图片 imageInfo(server)
def charts(datalist, charttype, pngpath): selectcyle(server)
try: insertcycle(server)
img = None getImageInfo(server)
if charttype == 1: # 仪表盘 getlicenceInfo(server)
img = Gauge(init_opts=opts.InitOpts(width="450px", height="450px")) gaoguan(server)
img.add("", [(datalist[0]["key"], datalist[0]["value"])], gudong(server)
axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color=[(0.3, "#67e0e3"), (0.7, "#37a2da"), (1, "#fd666d")], width=35)),
label_opts=opts.LabelOpts(font_size=55,formatter="{value}%")) if __name__ == '__main__':
if img: server.run(
print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>") host='127.0.0.1',
make_snapshot(snapshot, img.render(), pngpath) port=80,
return True debug=True
else: )
return False \ No newline at end of file
except Exception as e:
print("ExceptionExceptionExceptionExceptionExceptionException>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ExceptionExceptionExceptionException")
print(e)
print("ExceptionExceptionExceptionExceptionExceptionException>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ExceptionExceptionExceptionException")
return False
#传入风险描述信息list,表格分条显示
def in_Write_list(Risk_list):
sources = []
n = 1
for r in Risk_list:
if Risk_list==["贵公司提供的检测数据不能支撑此风险项检测,您可以尝试按季度或年度检测"]:
source = {"desc": "贵公司提供的检测数据不能支撑此风险项检测,您可以尝试按季度或年度检测",
"no": ""}
sources.append(source)
else:
source = {"desc": r,
"no": str(n)+"."}
n += 1
sources.append(source)
if sources == []:
source = {"desc": "根据贵公司提供的数据检测得出,贵公司暂无此项风险",
"no": ""}
sources.append(source)
return sources
#生成报告(es工商、财务信息、风险监测(仪表盘图))
def WriteReport(Else_info,Companyinfo,Fi_dict,Risk_info):
tpl = DocxTemplate('tax_word_model_v2.docx')
context={}
#其他传入参数
context['CreatTime']=Else_info['CreatTime']
context['Detection_zone'] = Else_info['Detection_zone']
#01-02工商
context['template'] =Companyinfo["companyname"]
context['legal_person'] =Companyinfo["legal_person"]
context['cred_code'] =Companyinfo["cred_code"]
context['province'] =Companyinfo["province"]
context['city'] =Companyinfo["city"]
context['reg_location'] =Companyinfo["reg_location"]
context['establish_time'] =Companyinfo["establish_time"]
context['company_cate_1'] =Companyinfo["company_cate_1"]
context['company_org_type'] =Companyinfo["company_org_type"]
context['reg_institute'] =Companyinfo["reg_institute"]
context['reg_capital'] =Companyinfo["reg_capital"]
context['reg_status'] =Companyinfo["reg_status"]
context['from_time'] =Companyinfo["from_time"]
context['to_time'] =Companyinfo["to_time"]
context['approved_time'] =Companyinfo["approved_time"]
context['business_scope'] =Companyinfo["business_scope"]
#03-05财务信息
context["Bq_time"] = Fi_dict["Bq_time"]
context["Sq_time"] = Fi_dict["Sq_time"]
context["Bq_Total_trade_income"] = Fi_dict["Bq_Total_trade_income"]
context["Sq_Total_trade_income"] = Fi_dict["Sq_Total_trade_income"]
context["change_rate_1"] = Fi_dict["change_rate_1"]
context["Bq_Total_profit"] = Fi_dict["Bq_Total_profit"]
context["Sq_Total_profit"] = Fi_dict["Sq_Total_profit"]
context["change_rate_2"] = Fi_dict["change_rate_2"]
context["Bq_Net_profit"] = Fi_dict["Bq_Net_profit"]
context["Sq_Net_profit"] = Fi_dict["Sq_Net_profit"]
context["change_rate_3"] = Fi_dict["change_rate_3"]
context["Bq_Total_Liabilities"] = Fi_dict["Bq_Total_Liabilities"]
context["Sq_Total_Liabilities"] = Fi_dict["Sq_Total_Liabilities"]
context["change_rate_4"] = Fi_dict["change_rate_4"]
context["Bq_Owner_rights"] = Fi_dict["Bq_Owner_rights"]
context["Sq_Owner_rights"] = Fi_dict["Sq_Owner_rights"]
context["change_rate_5"] = Fi_dict["change_rate_5"]
context["Bq_Total_sales"] = Fi_dict["Bq_Total_sales"]
context["Sq_Total_sales"] = Fi_dict["Sq_Total_sales"]
context["change_rate_6"] = Fi_dict["change_rate_6"]
context["Bq_Total_assets"] = Fi_dict["Bq_Total_assets"]
context["Sq_Total_assets"] = Fi_dict["Sq_Total_assets"]
context["change_rate_7"] = Fi_dict["change_rate_7"]
context["Bq_Total_liabilities_and_Owner_rights"] = Fi_dict["Bq_Total_liabilities_and_Owner_rights"]
context["Sq_Total_liabilities_and_Owner_rights"] = Fi_dict["Sq_Total_liabilities_and_Owner_rights"]
context["Bq_sales_expense"] = Fi_dict["Bq_sales_expense"]
context["Sq_sales_expense"] = Fi_dict["Sq_sales_expense"]
context["Bq_Net_interest_rate"] = Fi_dict["Bq_Net_interest_rate"]
context["Sq_Net_interest_rate"] = Fi_dict["Sq_Net_interest_rate"]
context["Bq_Equity_ratio"] = Fi_dict["Bq_Equity_ratio"]
context["Sq_Equity_ratio"] = Fi_dict["Sq_Equity_ratio"]
context["Bq_Gearing_ratio"] = Fi_dict["Bq_Gearing_ratio"]
context["Sq_Gearing_ratio"] = Fi_dict["Sq_Gearing_ratio"]
context["Bq_sales_growth_rate"] = Fi_dict["Bq_sales_growth_rate"]
context["Sq_sales_growth_rate"] = Fi_dict["Sq_sales_growth_rate"]
context["Bq_Net_profit_growth_rate"] = Fi_dict["Bq_Net_profit_growth_rate"]
context["Sq_Net_profit_growth_rate"] = Fi_dict["Sq_Net_profit_growth_rate"]
context["Bq_total_assets_growth_rate"] = Fi_dict["Bq_total_assets_growth_rate"]
context["Sq_total_assets_growth_rate"] = Fi_dict["Sq_total_assets_growth_rate"]
# 06仪表盘图(需获取评分grade)
grades1 = Risk_info["RiskA"]["score"].replace('%', "")
grades2 = Risk_info["MRisk"]["score"].replace('%', "")
grades3 = Risk_info["ARisk"]["score"].replace('%', "")
guage1 = ""
guage2 = ""
guage3 = ""
if charts([{"key": "风险异常比例", "value": grades1}], 1, "yibiaopan1.png"):
guage1 = "yibiaopan1.png"
if charts([{"key": "被监测风险", "value": grades2}], 1, "yibiaopan2.png"):
guage2 = "yibiaopan2.png"
if charts([{"key": "被稽查风险", "value": grades3}], 1, "yibiaopan3.png"):
guage3 = "yibiaopan3.png"
context['guage1'] = InlineImage(tpl, guage1, width=Mm(60))
context['guage2'] = InlineImage(tpl, guage2, width=Mm(60))
context['guage3'] = InlineImage(tpl, guage3, width=Mm(60))
# 风险信息
context["RiskA_desc"] = Risk_info["RiskA"]["describe"]
context["MRisk_desc"] = Risk_info["MRisk"]["describe"]
context["ARisk_desc"] = Risk_info["ARisk"]["describe"]
context["describe_info"] = Risk_info["info"]["describe"]
#细分风险项
context['IT_YCSR_Risk_descs'] = in_Write_list(Risk_info["Risk_IT_YCSR"])
context["IT_XZFY_Risk_descs"] = in_Write_list(Risk_info["Risk_IT_XZFY"])
context["IT_XZCB_Risk_descs"] = in_Write_list(Risk_info["Risk_IT_XZCB"])
context["VAT_XKFP_Risk_descs"] = in_Write_list(Risk_info["Risk_VAT_XKFP"])
context["VAT_YCXX_Risk_descs"] = in_Write_list(Risk_info["Risk_VAT_YCXX"])
context["VAT_XZJX_Risk_descs"] = in_Write_list(Risk_info["Risk_VAT_XZJX"])
context["CT_FX_Risk_descs"] = in_Write_list(Risk_info["Risk_CT_FX"])
context["ALLT_FX_Risk_descs"] = in_Write_list(Risk_info["Risk_ALLT_FX"])
print("ddddddddddddddddddddddddddddddddddd")
tpl.render(context)
addr = "/tmp/TaxRiskReport.docx"
# addr = "G://TaxRiskReport32.docx"
print("ddddddddddddddddddddddddddddddddddd")
tpl.save(addr)
print(addr,"+++++++++")
return addr
def put2oss(report):
# 阿里云接口地址
endpoint = 'http://oss-cn-beijing.aliyuncs.com'
auth = oss2.Auth('LTAIyAUK8AD04P5S', 'DHmRtFlw2Zr3KaRwUFeiu7FWATnmla')
bucket = oss2.Bucket(auth, endpoint, 'gsb-zc')
current_file_path = "TaxRiskReport.docx"
current_fold = time.strftime('%Y%m%d%H%M%S', time.localtime())
p = str(current_fold) + "_" + current_file_path
bucket.put_object_from_file(p, report)
addr="https://gsb-zc.oss-cn-beijing.aliyuncs.com/"+p
return addr
#全半角转化函数
def strQ2B(ustring):
rstring = ""
for uchar in ustring:
inside_code = ord(uchar)
if inside_code == 12288: # 全角空格直接转换
inside_code = 32
elif (inside_code >= 65281 and inside_code <= 65374): # 全角字符(除空格)根据关系转化
inside_code -= 65248
rstring += chr(inside_code)
return rstring
# 调用更新报告接口
def UpdateTaskRptUrl(batchid, rptUrl):
url = 'https://fkctlapi.gongsibao.com/api/rpt/rptApi/updateTaskRptUrl' # 获取更新报告接口
report_addr = {"batchid": batchid, "rptUrl": rptUrl} # 根据任务号进行接口访问参数
UpdateInfo = requests.post(url, report_addr) #传参并访问接口
companyInfo_New = json.loads(UpdateInfo.text)# 访问接口返回的信息
print(companyInfo_New)
if companyInfo_New["msg"]=="操作成功":
return str(batchid)+"报告已更新完成"
else:
return str(batchid)+"报告更新失败"
# 风险监测自动报告接口
@server.route('/gsb/api/report2', methods=['POST'])
def report():
if request.method =='POST':
print("=======调用风险检测自动报告接口")
data = request.json
# print(data)
# print("ccccccccccccccccccccccccccccc")
# json_str = json.dumps(data, ensure_ascii=False)
# print(json_str)
GetAllinfo = json.loads(data)
companyname=GetAllinfo["company_name"] #获取监测企业名称
batchid=GetAllinfo["Task_Num"] #获取任务号
companyname = strQ2B(companyname)
if companyname:
Companyinfo=GetComanyinfoFromES(companyname) #根据输入公司名获取工商信息
Else_info, Fi_dict=GetFIinfoFromJson(GetAllinfo)#获取输入其他信息和财务信息
riskinfo = getriskinfo()
Risk_info=riskinfo.Riskinfo(GetAllinfo)#计算风险项
report=None
try:
report = WriteReport(Else_info,Companyinfo,Fi_dict,Risk_info) #将工商、财务、风险三部分内容写入word中
except Exception as e:
print(e)
rptUrl = put2oss(report) # 上传文件到oss上
print("报告已生成",rptUrl)
result=UpdateTaskRptUrl(batchid, rptUrl)# 完成后调用接口,通知服务已完成
return result
else:
return "请输入检测公司名称"
server.run(host='0.0.0.0', port=80, debug=False)
\ No newline at end of file
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020/3/14 16:37
# @Author : fanhui
# @File : GetLicenseDataForImage.py
# @Software: PyCharm
from elasticsearch import Elasticsearch
from flask import request,jsonify
"""证照信息"""
esip = "43.247.184.94" #外网地址
# esip1 = "172.16.18.110" #内网地址
esport = 9200
esuser = "admines"
espassword = "adminGSBes"
es = Elasticsearch([esip], http_auth=(esuser, espassword), port=esport, timeout=15000) #工商
#检索高新技术企业ES
def GetGXLicensesFromES(companyname):
print("证照es")
license_result_list=[]
licensesinfo1 = es.search(index="enterprise_chain_gxgy",
body={"query": {"bool": {"must": {"term": {"companyName.raw": companyname}}}}})
if licensesinfo1["hits"]["hits"]:
for row in licensesinfo1["hits"]["hits"]:
if row['_source']["techType"]:
license_name="高新技术企业" # 证照名称
else:
license_name = "—" # 证照名称
if row['_source']["certificateNo"]:
certificateNo=row['_source']["certificateNo"]#证照编号
else:
certificateNo = "—" #证照编号
if row['_source']["year"]:
begin_date = row['_source']["year"] # 开始时间
else:
begin_date = "—" #开始时间
license_result = {
"license_name": license_name,
"certificateNo": certificateNo,
"begin_date": begin_date,
"end_date": "—"
}
license_result_list.append(license_result)
return license_result_list
#检索游戏类证照ES
def GetgameLicensesFromES(companyname):
print("游戏类证照es")
license_result_list1=[]
licensesinfo1 = es.search(index="enterprise_chain_game",
body={"query": {"bool": {"must": {"term": {"publishing_unit.raw": companyname}}}}})
if licensesinfo1["hits"]["hits"]:
for row in licensesinfo1["hits"]["hits"]:
if row['_source']["publishing_record"]:
license_name="网络游戏运营备案" # 证照名称
else:
license_name = "—" # 证照名称
if row['_source']["symbol"]:
certificateNo=row['_source']["symbol"]#证照编号
else:
certificateNo = "—" #证照编号
if row['_source']["publish_time"]:
begin_date = row['_source']["publish_time"] # 开始时间
else:
begin_date = "—" #开始时间
license_result = {
"license_name": license_name,
"certificateNo": certificateNo,
"begin_date": begin_date,
"end_date": "—"
}
license_result_list1.append(license_result)
license_result_list2 = []
licensesinfo1 = es.search(index="enterprise_chain_game",
body={"query": {"bool": {"must": {"term": {"operation_unit.raw": companyname}}}}})
if licensesinfo1["hits"]["hits"]:
for row in licensesinfo1["hits"]["hits"]:
if row['_source']["publishing_record"]:
license_name = "网络游戏出版备案" # 证照名称
else:
license_name = "—" # 证照名称
if row['_source']["symbol"]:
certificateNo = row['_source']["symbol"] # 证照编号
else:
certificateNo = "—" # 证照编号
if row['_source']["publish_time"]:
begin_date = row['_source']["publish_time"] # 开始时间
else:
begin_date = "—" # 开始时间
license_result = {
"license_name": license_name,
"certificateNo": certificateNo,
"begin_date": begin_date,
"end_date": "—"
}
license_result_list2.append(license_result)
license_result_list=license_result_list1+license_result_list2
return license_result_list
#检索高新技术企业ES
def GetICPLicensesFromES(companyname):
print("ICP证照es")
license_result_list=[]
licensesinfo1 = es.search(index="enterprise_chain_license",
body={"query": {"bool": {"must": {"term": {"companyName.raw": companyname}}}}})
if licensesinfo1["hits"]["hits"]:
for row in licensesinfo1["hits"]["hits"]:
if row['_source']["licence"]:
license_name=row['_source']["licence"] # 证照名称
else:
license_name = "—" # 证照名称
if row['_source']["licence_no"]:
certificateNo=row['_source']["licence_no"]#证照编号
else:
certificateNo = "—" #证照编号
if row['_source']["start_date"]:
begin_date = row['_source']["start_date"] # 开始时间
else:
begin_date = "—" #开始时间
if row['_source']["end_date"]:
end_date = row['_source']["end_date"] # 截止时间
else:
end_date = "—" #截止时间
license_result = {
"license_name": license_name,
"certificateNo": certificateNo,
"begin_date": begin_date,
"end_date": end_date
}
license_result_list.append(license_result)
return license_result_list
def strQ2B(companyname):
"""公司名称全角转半角"""
name = ""
for uchar in companyname:
inside_code=ord(uchar)
if inside_code == 12288: #全角空格直接转换
inside_code = 32
elif (inside_code >= 65281 and inside_code <= 65374): #全角字符(除空格)根据关系转化
inside_code -= 65248
name += chr(inside_code)
return name
def getlicenceInfo(server):
@server.route('/gsb/api/GetLicenseFromEs', methods=['POST'])
def GetLicenseInfo():
print("接口调用--------查询企业证照信息")
if request.method == 'POST':
requestdata = request.json
print(requestdata)
companyname = requestdata.get('companyname')
companyname = strQ2B(companyname)
license_result_list=[]
if companyname == "北京格尔法网络科技有限公司":
license_result = {
"license_name": "高新技术企业",
"certificateNo": "GR201711004770",
"begin_date": "2017-12-06",
"end_date": "2020-12-06"
}
license_result_list.append(license_result)
# result = {companyname: license_result_list}
return jsonify(license_result_list)
else:
LicenseInfo1= GetGXLicensesFromES(companyname)
LicenseInfo2 = GetgameLicensesFromES(companyname)
LicenseInfo3 = GetICPLicensesFromES(companyname)
license_result=LicenseInfo1+LicenseInfo2+LicenseInfo3
# result={companyname: license_result}
return jsonify(license_result)
# server.run(host='172.21.0.2', port=9000, debug=True)
# server.run(host='127.0.0.1', port=9000, debug=True)
\ No newline at end of file
DBUtils、pymysql、elasticsearch、flask、flask_cors
DBUtils、pymysql、elasticsearch、flask、flask_cors
\ No newline at end of file
from flask import Flask
from flask import request
import pymysql
import json
from elasticsearch import Elasticsearch
def getdbdata_gg(input_name):
conn = pymysql.connect(host='43.247.184.94', port=9187, user='nice', password='Niceee@2020#@', db='ent_data',
charset='utf8')
cur = conn.cursor()
sql_1 = "SELECT company_name,member_name,member_position FROM tj_member where company_name=%s"
sql_2 = "SELECT company_name,shareholder_name,subscription_funds,turn_funds,subscript_type,subscrip_time FROM tj_shareholder where company_name=%s"
cur.execute(sql_1, input_name)
gaoguan = cur.fetchall()
cur.execute(sql_2, input_name)
gudong = cur.fetchall()
conn.close()
return gaoguan
def record2jsion_gg(query_data):
jsonData = []
output = []
for row in query_data:
data = {}
data['company_name'] = str(row[0])
data['member_name'] = str(row[1])
data['member_position'] = str(row[2])
jsonData.append(data)
jsondatar = json.dumps(jsonData, ensure_ascii=False)
# output=json.loads(jsondatar)#本机python环境需要加上
output = jsondatar
return output
def getdbdata_gd(input_name):
conn = pymysql.connect(host='43.247.184.94', port=9187, user='nice', password='Niceee@2020#@', db='ent_data',
charset='utf8')
cur = conn.cursor()
sql_1 = "SELECT company_name,member_name,member_position FROM tj_member where company_name=%s"
sql_2 = "SELECT company_name,shareholder_name,subscription_funds,turn_funds,subscript_type,subscrip_time FROM tj_shareholder where company_name=%s"
cur.execute(sql_1, input_name)
gaoguan = cur.fetchall()
cur.execute(sql_2, input_name)
gudong = cur.fetchall()
conn.close()
return gudong
def record2jsion_gd(query_data):
jsonData = []
output = []
for row in query_data:
data = {}
data['company_name'] = str(row[0])
data['shareholder_name'] = str(row[1])
data['subscription_funds'] = str(row[2])
data['turn_funds'] = str(row[3])
data['subscript_type'] = str(row[4])
data['subscrip_time'] = str(row[5])
jsonData.append(data)
jsondatar = json.dumps(jsonData, ensure_ascii=False)
# output=json.loads(jsondatar)#本机python环境需要加上
output = jsondatar
return output
# list_copy=[{1},{2},{3},{3},{2},{1}]#去除重复远素
def distinct_list(list_copy):
new_list = []
for k in list_copy:
if k not in new_list:
new_list.append(k)
# print("方法三:", new_list)
return new_list
class ElasticObj(object):
def __init__(self, index_name, index_type, ip="43.247.184.94"):
'''
:param index_name: 索引名称
:param index_type: 索引类型
'''
self.index_name = index_name
self.index_type = index_type
self.es = Elasticsearch([ip], http_auth=('admines', 'adminGSB.'), port=9200)
def Get_Data_By_Body(self, company_name):
doc = {"query": {"match": {"companyName": company_name}}}
# doc = {"query":{"match": {"companyName":"北京华泰丽成智能科技有限公司"}}}
_searched = self.es.search(index=self.index_name, doc_type=self.index_type, body=doc)
temp = []
for hit in _searched['hits']['hits']:
print("Got %d Hits:" % _searched['hits']['total'])
# print (hit['_source'])
# print (hit['_source']['companyName'])
t = hit['_source']
temp.append(t)
# tt=es_records[0]['_source']
# print(tt)
# print(json.dumps(es_records,ensure_ascii=False))
tt = temp
return tt # [tt]
def Get_Data_By_Body_Input(self, match_field, field_cotent):
doc = {"query": {"match": {match_field: field_cotent}}}
# doc = {"query":{"match": {"companyName":"北京华泰丽成智能科技有限公司"}}}
_searched = self.es.search(index=self.index_name, doc_type=self.index_type, body=doc)
temp = []
for hit in _searched['hits']['hits']:
# print("Got %d Hits:" % _searched['hits']['total'])
# print (hit['_source'])
# print (hit['_source']['companyName'])
t = hit['_source']
temp.append(t)
# tt=es_records[0]['_source']
# print(tt)
# print(json.dumps(es_records,ensure_ascii=False))
tt = temp
return tt # [tt]
def Get_Data_Return_Body_ID(self, match_field, field_cotent):
# doc = {"query":{"match": {match_field:field_cotent}}}
# doc = {"query":{"match": {match_field:field_cotent}}}
doc = {"query": {"match": {match_field: field_cotent}}, "size": 1, "_source": ["_id"]}
# doc={"query": {"match": {"company_name": "北京非常满意科技有限公司"}},"size": 1}
# doc = {"query":{"match": {"companyName":"北京华泰丽成智能科技有限公司"}}}
_searched = self.es.search(index=self.index_name, doc_type=self.index_type, body=doc)
temp = []
for hit in _searched['hits']['hits']:
# print("Got %d Hits:" % _searched['hits']['total'])
# print (hit['_source'])
# print (hit['_source']['companyName'])
t = hit['_id']
temp.append(t)
# tt=es_records[0]['_source']
# print(tt)
# print(json.dumps(es_records,ensure_ascii=False))
tt = temp
return tt # [tt]
def search_gaoguan(input_company_name):
company_info = ElasticObj("bigdata_ic_gsb_company_04", "_doc") # 初始化索引
match_field_0 = 'company_name'
field_cotent_0 = input_company_name
# field_cotent_0='北京非常满意科技有限公司'
# field_cotent1='83468156'
company_id = company_info.Get_Data_Return_Body_ID(match_field_0, field_cotent_0) # 返回查询结果
# print('OK--company_info->\n')
# print(company_id)
if company_id:
company_staff = ElasticObj("bigdata_ic_gsb_staff", "_doc") # 初始化索引
match_field1 = 'company_id'
# field_cotent1='83468156'
field_cotent1 = company_id[0]
staff_info = company_staff.Get_Data_By_Body_Input(match_field1, field_cotent1) # 返回查询结果
# print('OK--staff_info->\n')
# print(staff_info)
# print(staff_info[0]['branch_id'])
for num in staff_info:
# print(num['branch_id'])
pass
human_name = ElasticObj("bigdata_ic_gsb_human", "_doc") # 嵌套查询另一个索引
for i in range(0, len(staff_info)):
if staff_info[i]:
# print(staff_info[i]['staff_id'])
# human_name= ElasticObj("bigdata_ic_gsb_company_04", "_doc")
ss = human_name.Get_Data_By_Body_Input('id', staff_info[i]['staff_id']) # 返回子查询结果
# print('OK-human_info-->\n')
# print(ss[0]['name'])
if ss[0]['name']: # 返回值不为空
staff_info[i]['staff_id'] = ss[0]['name'] # 替换相应的值
# print(staff_info[i])
else:
print('no data!')
# print('\n--->\n')
# print(staff_info)
finall_key = {'company_id', 'staff_id', 'staff_type_name'}
finall_info = []
# OO=[]
# ord_dict=OrderedDict()
for j in range(0, len(staff_info)):
staff_info[j]['company_id'] = field_cotent_0
finall_info.append({key: value for key, value in staff_info[j].items() if key in finall_key})
finall_info[j].update({'company_name': finall_info[j].pop('company_id')}) # 修改键名
# finall_info[j].update({'staff_name':finall_info[j].pop('staff_id')})
finall_info[j].update({'member_name': finall_info[j].pop('staff_id')})
finall_info[j].update({'member_position': finall_info[j].pop('staff_type_name')})
# ord_dict['company_name']=finall_info[j]['company_name']
# ord_dict['staff_name']=finall_info[j]['staff_name']
# ord_dict['staff_type_name']=finall_info[j]['staff_type_name']
# OO[j]=ord_dict[0]
# print('\n--final_result!->\n')
# print([finall_info[3]])
# print(finall_info)
return finall_info
def search_gudong(input_company_name):
annual_info = ElasticObj("bigdata_ic_gsb_annualreport", "_doc") # 初始化索引
match_field_0 = 'company_name'
field_cotent_0 = input_company_name
# field_cotent1='83468156' 2914053007
annual_id = annual_info.Get_Data_Return_Body_ID(match_field_0, field_cotent_0) # 返回查询结果
# print('OK--company_info->\n')
# print(annual_id)
# print(max(annual_id))
# print('\n')
# print(sorted(annual_id,reverse=True))
shareholder_info = ElasticObj("bigdata_ic_gsb_shareholder_1", "_doc") # 初始化索引
match_field1 = 'annual_report_id'
# field_cotent1='83468156'
# field_cotent1=max(annual_id)
for i in range(0, len(annual_id)):
order_annual_id = sorted(annual_id, reverse=True)
field_cotent1 = order_annual_id[i]
# print('field_content_1')
# print(field_cotent1)
company_shareholder = shareholder_info.Get_Data_By_Body_Input(match_field1, field_cotent1) # 返回查询结果
if company_shareholder:
break
# print('OK--staff_info->\n')
# print(company_shareholder)
# break
finall_key = {'gsb_company_name', 'investor_name', 'subscribe_amount', 'subscribe_time', 'subscribe_type',
'paid_amount', 'paid_time', 'paid_type'}
# finall_key={'gsb_company_name','investor_name','subscribe_amount','subscribe_time','subscribe_type','paid_amount'}
finall_info = []
# OO=[]
# ord_dict=OrderedDict()
for j in range(0, len(company_shareholder)):
company_shareholder[j]['gsb_company_name'] = field_cotent_0
finall_info.append({key: value for key, value in company_shareholder[j].items() if key in finall_key})
finall_info[j].update({'company_name': finall_info[j].pop('gsb_company_name')})
finall_info[j].update({'shareholder_name': finall_info[j].pop('investor_name')})
finall_info[j].update({'subscription_funds': finall_info[j].pop('subscribe_amount')})
finall_info[j].update({'turn_funds': finall_info[j].pop('paid_amount')})
finall_info[j].update({'subscript_type': finall_info[j].pop('subscribe_type')})
finall_info[j].update({'subscrip_time': finall_info[j].pop('subscribe_time')})
#
finall_info[j].update({'ture_subscrpt_time': finall_info[j].pop('paid_time')})
finall_info[j].update({'ture_subscript_type': finall_info[j].pop('paid_type')})
# ord_dict['company_name']=finall_info[j]['company_name']
# ord_dict['staff_name']=finall_info[j]['staff_name']
# ord_dict['staff_type_name']=finall_info[j]['staff_type_name']
# OO[j]=ord_dict[0]
# print('\n--final_result!->\n')
# print([finall_info[3]])
# print(finall_info)
return finall_info # json.dumps(finall_info,ensure_ascii=False)
# @app.route('/',methods=['GET', 'POST'])
def gaoguan(server):
@server.route('/api/gaoguan', methods=['POST'])
def index():
if request.method == 'POST':
request_data = request.json
inputs = request_data.get('company_name')
# gaoguan=getdbdata_gg(inputs)
gaoguan = search_gaoguan(inputs)
json.dumps(gaoguan, ensure_ascii=False)
# outputs=record2jsion_gg(gaoguan)
return json.dumps(gaoguan, ensure_ascii=False) # gaoguan #outputs
'''def index():
if request.method=='POST':
request_data=request.json
inputs=request_data.get('company_name')
gaoguan=getdbdata_gg(inputs)
outputs=record2jsion_gg(gaoguan)
return outputs'''
def gudong(server):
@server.route('/api/gudong', methods=['POST'])
def indexx():
if request.method == 'POST':
request_data = request.json
inputs = request_data.get('company_name')
# gaoguan=getdbdata_gd(inputs)
gudong = search_gudong(inputs)
# outputs_gd=record2jsion_gd(gaoguan)
# json.dumps(gudong,ensure_ascii=False)
# return outputs_gd
return json.dumps(gudong, ensure_ascii=False)
'''def indexx():
if request.method=='POST':
request_data=request.json
inputs=request_data.get('company_name')
gaoguan=getdbdata_gd(inputs)
outputs_gd=record2jsion_gd(gaoguan)
return outputs_gd '''
'''
def index():
gaoguan=getdbdata(input_name)
output=record2jsion(gaoguan)
return output'''
# if __name__ == '__main__':
# app.run(debug=True)
# input_name='北京格尔法网络科技有限公司'
# app.run(debug=True)
# result=index()
# print(result[0])
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from flask import request
from elasticsearch import Elasticsearch
import json
import Dataoper
# es连接信息
esip = "43.247.184.94"
esport = 9200
# esip = "172.16.18.110"
# esport = 9203
esuser = "admines"
espassword = "adminGSBes"
es = Elasticsearch([esip], http_auth=(esuser, espassword), port=esport,timeout=1000)
def selectcyle(server):
@server.route("/api/selectcycle",methods = ['POST'])
def getCompanyTrade():
try:
companyNames=request.get_json().get("company_name")
querybody={
"query": {
"bool": {
"must": [
{
"term": {
"company_name.raw": companyNames
}
}
]
}
}
}
searched = es.search(index='bigdata_ic_gsb_company_02', doc_type='_doc', body=querybody)
if searched["hits"]["total"]:
company_cate_1 = searched["hits"]["hits"][0]['_source']["gsb_company_cate_1"] # 行业第一大类
company_cate_2 = searched["hits"]["hits"][0]['_source']["gsb_company_cate_2"] # 行业第二大类
company_cate_3 = searched["hits"]["hits"][0]['_source']["gsb_company_cate_3"] # 行业第三大类
re1,re2 = Dataoper.Getdata(company_cate_1)
if re1:
return json.dumps({"status": 0, "msg":"操作成功","data": re2}, ensure_ascii=False)
else:
return json.dumps({"status": -1, "msg":"没有对应的证照信息","data": []}, ensure_ascii=False)
else:
return json.dumps({"status": -1, "msg":"没有对应工商信息","data": []}, ensure_ascii=False)
except:
return json.dumps({"status": -1, "msg":"调用服务出错","data": []}, ensure_ascii=False)
def insertcycle(server):
@server.route("/api/insertcycle",methods = ['POST'])
def putCompanyTrade():
try:
data=request.get_json().get("data")
print(data)
re1=Dataoper.InsertData(data)
if re1 :
return json.dumps({"status": 0, "msg":"成功","data": re1}, ensure_ascii=False)
else:
return json.dumps({"status": -1, "msg":"失败","data": 0}, ensure_ascii=False)
except:
return json.dumps({"status": -1, "msg":"调用服务出错","data": {}}, ensure_ascii=False)
# if __name__ == '__main__':
# #app.run(host='127.0.0.1', port=5000, debug=True)
# CORS(app, supports_credentials=True)
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment