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
# -*- coding: utf-8 -*-
# @Time : 2020/2/11 10:02
# @Author : fanhui
# @File : risk_to_word.py
# @Software: PyCharm
from getcompanyinfofromES import GetComanyinfoFromES
from GetFIinfoFromJson import GetFIinfoFromJson
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) # 将当前文件的父目录加入临时系统变量
import flask
from flask_cors import CORS
from Image_status import imageInfo
from trade import selectcyle,insertcycle
from GetImageFromSql import getImageInfo
from online_GetLicenseImage import getlicenceInfo
from tf_member_es import gaoguan,gudong
server = flask.Flask(__name__)
server.config['JSON_AS_ASCII'] = False
CORS(server, supports_credentials=True) # 跨域请求
# 生成图片
def charts(datalist, charttype, pngpath):
try:
img = None
if charttype == 1: # 仪表盘
img = Gauge(init_opts=opts.InitOpts(width="450px", height="450px"))
img.add("", [(datalist[0]["key"], datalist[0]["value"])],
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 img:
print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
make_snapshot(snapshot, img.render(), pngpath)
return True
else:
return False
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
CORS(server,supports_credentials=True) #跨域请求
imageInfo(server)
selectcyle(server)
insertcycle(server)
getImageInfo(server)
getlicenceInfo(server)
gaoguan(server)
gudong(server)
if __name__ == '__main__':
server.run(
host='127.0.0.1',
port=80,
debug=True
)
\ 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