Commit 5eee534d by 宋毅

fanhui_change

parent fdea6c67
...@@ -8,20 +8,13 @@ ...@@ -8,20 +8,13 @@
#可利用SQLite3访问数据库,或先访问数据库获取 #可利用SQLite3访问数据库,或先访问数据库获取
import os, sys,sqlite3 import os, sys,sqlite3
from flask import Flask
from flask_cors import *
from jinja2 import Template from jinja2 import Template
server = Flask(__name__)
interface_path = os.path.dirname(__file__)
sys.path.insert(0, interface_path) # 将当前文件的父目录加入临时系统变量
server.config['JSON_AS_ASCII'] = False
CORS(server, supports_credentials=True) # 跨域请求
#连接数据库,读取描述信息,建立原始大字典
conn = sqlite3.connect('tax_online.db',check_same_thread=False)
# 数据库获取原始大字典 # 数据库获取原始大字典
def GetAllDictFromSql(): def GetAllDictFromSql():
# 连接数据库,读取描述信息,建立原始大字典
conn = sqlite3.connect('tax_online.db', check_same_thread=False)
cursor = conn.cursor() cursor = conn.cursor()
dict_all_v1 = {} # 数据库获取原始大字典 dict_all_v1 = {} # 数据库获取原始大字典
try: try:
...@@ -93,17 +86,20 @@ def GetAllDictFromSql(): ...@@ -93,17 +86,20 @@ def GetAllDictFromSql():
cursor.close() cursor.close()
conn.close() conn.close()
return dict_all_v1, tax_desc return dict_all_v1, tax_desc
dict_all_v1, tax_desc = GetAllDictFromSql()
# 获取传入的参数,建立传参后的大字典 class getriskinfo:
def CreatBdictFromJson(dict_all,GetAllinfo): def __init__(self):
self.dict_all_v1, self.tax_desc = GetAllDictFromSql()
# 获取传入的参数,建立传参后的大字典
def CreatBdictFromJson(self,dict_all,GetAllinfo):
# 获取传入的参数 # 获取传入的参数
GetAllinfo_new=GetAllinfo["ri"] GetAllinfo_new=GetAllinfo["ri"]
if GetAllinfo["ri"] and type(GetAllinfo["ri"])=="str": if GetAllinfo["ri"] and type(GetAllinfo["ri"])=="str":
print("111111111",type(GetAllinfo["ri"]),GetAllinfo["ri"]) print("111111111",type(GetAllinfo["ri"]),GetAllinfo["ri"])
GetAllinfo_new = eval(GetAllinfo_new) # 如果key不存在,会返回None,因此需进行判断 GetAllinfo_new = eval(GetAllinfo_new) # 如果key不存在,会返回None,因此需进行判断
print(GetAllinfo_new) print("===================================================获取ri部分====\n",GetAllinfo_new)
for factors_name, value in dict_all.items(): for factors_name, value in dict_all.items():
try: try:
status_get=GetAllinfo_new[factors_name] status_get=GetAllinfo_new[factors_name]
...@@ -112,11 +108,12 @@ def CreatBdictFromJson(dict_all,GetAllinfo): ...@@ -112,11 +108,12 @@ def CreatBdictFromJson(dict_all,GetAllinfo):
dict_all[factors_name]["status"] = status_get dict_all[factors_name]["status"] = status_get
# print("____",dict_all) # print("____",dict_all)
if type(status_get) == str: if type(status_get) == str:
# print("%%%",status_get,eval(status_get))
status_get=eval(status_get) status_get=eval(status_get)
dict_all[factors_name]["status"] = status_get dict_all[factors_name]["status"] = status_get
# print("修改后的dict_all",dict_all)
except: except:
pass pass
print("!!!!!!!",dict_all)
# 计算总体风险异常比例、以及被监控风险比例和被稽查风险比例 # 计算总体风险异常比例、以及被监控风险比例和被稽查风险比例
qualified = [] # 合格 qualified = [] # 合格
...@@ -132,6 +129,8 @@ def CreatBdictFromJson(dict_all,GetAllinfo): ...@@ -132,6 +129,8 @@ def CreatBdictFromJson(dict_all,GetAllinfo):
print(A_count) print(A_count)
B_count = sum(disqualified) # 计算所有不合格对应指标权重之和(分子) B_count = sum(disqualified) # 计算所有不合格对应指标权重之和(分子)
print(B_count) print(B_count)
ALLRisk = {}
if A_count!=0:
r1 = float("%.2f" % (B_count / A_count)) # 计算风险异常比例 r1 = float("%.2f" % (B_count / A_count)) # 计算风险异常比例
print(r1, type(r1)) print(r1, type(r1))
t_r1 = str(int(r1 * 100)) + "%" t_r1 = str(int(r1 * 100)) + "%"
...@@ -143,7 +142,6 @@ def CreatBdictFromJson(dict_all,GetAllinfo): ...@@ -143,7 +142,6 @@ def CreatBdictFromJson(dict_all,GetAllinfo):
rules = {r1 <= standard1: {"t_r1": t_r1, "t_r2": "1%", "t_r3": "1%"}, rules = {r1 <= standard1: {"t_r1": t_r1, "t_r2": "1%", "t_r3": "1%"},
r1 > standard1 and r1 <= standard2: {"t_r1": t_r1, "t_r2": t_r2, "t_r3": "1%"}, r1 > standard1 and r1 <= standard2: {"t_r1": t_r1, "t_r2": t_r2, "t_r3": "1%"},
r1 > standard2: {"t_r1": t_r1, "t_r2": t_r2, "t_r3": t_r3}} r1 > standard2: {"t_r1": t_r1, "t_r2": t_r2, "t_r3": t_r3}}
ALLRisk = {}
for k1, v1 in rules.items(): for k1, v1 in rules.items():
if k1: if k1:
ALLRisk = v1 ALLRisk = v1
...@@ -151,8 +149,8 @@ def CreatBdictFromJson(dict_all,GetAllinfo): ...@@ -151,8 +149,8 @@ def CreatBdictFromJson(dict_all,GetAllinfo):
return dict_all, ALLRisk return dict_all, ALLRisk
# 输入计算出的风险异常比例,返回提示结果 # 输入计算出的风险异常比例,返回提示结果
def RiskAbnormal(t_r1): def RiskAbnormal(self,t_r1):
RiskA = {} RiskA = {}
t_r1_s = str(int(t_r1.replace("%", "")) / 100) t_r1_s = str(int(t_r1.replace("%", "")) / 100)
rules_1 = {"t_r1_s<='0.3'": "企业风险异常同比其他企业比例较低", rules_1 = {"t_r1_s<='0.3'": "企业风险异常同比其他企业比例较低",
...@@ -163,8 +161,8 @@ def RiskAbnormal(t_r1): ...@@ -163,8 +161,8 @@ def RiskAbnormal(t_r1):
RiskA = {"score":t_r1,"describe":v1} RiskA = {"score":t_r1,"describe":v1}
return RiskA return RiskA
# 输入计算出的被检测风险值,判断被监测风险结果 # 输入计算出的被检测风险值,判断被监测风险结果
def MonitoredRisk(t_r2): def MonitoredRisk(self,t_r2):
MRisk = {} MRisk = {}
t_r2_s = str(int(t_r2.replace("%", "")) / 100) t_r2_s = str(int(t_r2.replace("%", "")) / 100)
rules_2 = {"t_r2_s<='0.1'": "企业被监控的风险同比其他企业比例较低", rules_2 = {"t_r2_s<='0.1'": "企业被监控的风险同比其他企业比例较低",
...@@ -176,8 +174,8 @@ def MonitoredRisk(t_r2): ...@@ -176,8 +174,8 @@ def MonitoredRisk(t_r2):
MRisk = {"score": t_r2, "describe": v2} MRisk = {"score": t_r2, "describe": v2}
return MRisk return MRisk
# 输入计算出的被稽查风险值,判断被稽查风险结果 # 输入计算出的被稽查风险值,判断被稽查风险结果
def AuditedRisk(t_r3): def AuditedRisk(self,t_r3):
ARisk = {} ARisk = {}
t_r3_s = str(int(t_r3.replace("%", "")) / 100) t_r3_s = str(int(t_r3.replace("%", "")) / 100)
rules_3 = {"t_r3_s<='0.1'": "企业被税务稽查的可能性较低", rules_3 = {"t_r3_s<='0.1'": "企业被税务稽查的可能性较低",
...@@ -189,8 +187,8 @@ def AuditedRisk(t_r3): ...@@ -189,8 +187,8 @@ def AuditedRisk(t_r3):
ARisk = {"score":t_r3,"describe":v3} ARisk = {"score":t_r3,"describe":v3}
return ARisk return ARisk
# 输入总体计算的风险异常比例,得到提示语(也可与RiskAbnormal函数合并) # 输入总体计算的风险异常比例,得到提示语(也可与RiskAbnormal函数合并)
def information(t_r1): def information(self,t_r1):
info = {} info = {}
t_r1_s = str(int(t_r1.replace("%", "")) / 100) t_r1_s = str(int(t_r1.replace("%", "")) / 100)
rules_0 = {"t_r1_s<='0.3'": "贵企业的风险异常情况同比其他企业较少,如需更多更详细的诊断服务,请联系我们>>", rules_0 = {"t_r1_s<='0.3'": "贵企业的风险异常情况同比其他企业较少,如需更多更详细的诊断服务,请联系我们>>",
...@@ -204,8 +202,8 @@ def information(t_r1): ...@@ -204,8 +202,8 @@ def information(t_r1):
return info return info
#获取描述信息的方法 #获取描述信息的方法
def GetResult(risk_factor_dict,status_value): def GetResult(self,risk_factor_dict,status_value):
desc_info=risk_factor_dict["factors_describe"] desc_info=risk_factor_dict["factors_describe"]
if status_value=="big" or status_value=="small": if status_value=="big" or status_value=="small":
try: try:
...@@ -220,8 +218,8 @@ def GetResult(risk_factor_dict,status_value): ...@@ -220,8 +218,8 @@ def GetResult(risk_factor_dict,status_value):
factor_desc=desc_info factor_desc=desc_info
return factor_desc return factor_desc
#通用函数,输入不同风险监测项列表list,得到指标对应描述信息list #通用函数,输入不同风险监测项列表list,得到指标对应描述信息list
def GetRiskDesc(dict_all,risklist): def GetRiskDesc(self,dict_all,risklist):
new_dict={}# 建立风险检测项字典 new_dict={}# 建立风险检测项字典
for f1 in risklist: for f1 in risklist:
new_dict[f1] = dict_all[f1] new_dict[f1] = dict_all[f1]
...@@ -237,44 +235,52 @@ def GetRiskDesc(dict_all,risklist): ...@@ -237,44 +235,52 @@ def GetRiskDesc(dict_all,risklist):
s_status1 = v_part1["status"]["status_key"] s_status1 = v_part1["status"]["status_key"]
s_status2 = v_part1["status"]["status_value"] s_status2 = v_part1["status"]["status_value"]
if s_status1 == 2: if s_status1 == 2:
s_str = GetResult(v_part1, s_status2) s_str = self.GetResult(v_part1, s_status2)
p1_describe.append(s_str) p1_describe.append(s_str)
else: else:
p1_describe = ["贵公司提供的检测数据不能支撑此风险项检测,您可以尝试按季度或年度检测"] p1_describe = ["贵公司提供的检测数据不能支撑此风险项检测,您可以尝试按季度或年度检测"]
return p1_describe return p1_describe
#整合调用前面构建函数,并结合传入数据建立风险监测结果函数 #整合调用前面构建函数,并结合传入数据建立风险监测结果函数
def Riskinfo(GetAllinfo): def Riskinfo(self,GetAllinfo):
dict_all, ALLRisk = CreatBdictFromJson(dict_all_v1, GetAllinfo) dict_all_new, ALLRisk = self.CreatBdictFromJson(self.dict_all_v1, GetAllinfo)
RiskA = RiskAbnormal(ALLRisk["t_r1"]) # 风险异常比例 print("&&&&生成新的大字典\n",ALLRisk,dict_all_new)
MRisk = MonitoredRisk(ALLRisk["t_r2"]) # 被监控风险 if ALLRisk!={}:
ARisk = AuditedRisk(ALLRisk["t_r3"]) # 被稽查风险 RiskA = self.RiskAbnormal(ALLRisk["t_r1"]) # 风险异常比例
info = information(ALLRisk["t_r1"]) # 提示语 MRisk = self.MonitoredRisk(ALLRisk["t_r2"]) # 被监控风险
ARisk = self.AuditedRisk(ALLRisk["t_r3"]) # 被稽查风险
info = self.information(ALLRisk["t_r1"]) # 提示语
else:
RiskA ={"score":"0%","describe":"贵公司提供的风险检测数据缺失,请补充完整后进行风险异常测试"} # 风险异常比例
MRisk ={"score":"0%","describe":"贵公司提供的风险检测数据缺失,请补充完整后进行被监控风险测试"} # 被监控风险
ARisk ={"score":"0%","describe":"贵公司提供的风险检测数据缺失,请补充完整后进行被稽查风险测试"} # 被稽查风险
info ={"score":"0%","describe":"贵公司提供的风险检测数据缺失,无法进行相关风险检测,请财税人员尽快补充完整后进行测试,如需进行更详细的诊断服务请联系我们"} # 提示语
# 计算所得税隐藏收入风险异常 # 计算所得税隐藏收入风险异常
IT_YCSR_list = tax_desc.get("IT_YCSR") # 获取所得税隐藏收入指标名称 IT_YCSR_list = self.tax_desc.get("IT_YCSR") # 获取所得税隐藏收入指标名称
Risk_IT_YCSR=GetRiskDesc(dict_all,IT_YCSR_list) # 企业所得税隐藏收入风险信息 Risk_IT_YCSR=self.GetRiskDesc(dict_all_new,IT_YCSR_list) # 企业所得税隐藏收入风险信息
print("#企业所得税隐藏收入风险",Risk_IT_YCSR)
# 计算所得税虚增费用风险异常 # 计算所得税虚增费用风险异常
IT_XZFY_list = tax_desc.get("IT_XZFY") # 获取所得税虚增费用指标名称 IT_XZFY_list = self.tax_desc.get("IT_XZFY") # 获取所得税虚增费用指标名称
Risk_IT_XZFY=GetRiskDesc(dict_all,IT_XZFY_list) # 企业所得税隐藏收入风险信息 Risk_IT_XZFY=self.GetRiskDesc(dict_all_new,IT_XZFY_list) # 企业所得税隐藏收入风险信息
# 计算所得税虚增成本风险异常 # 计算所得税虚增成本风险异常
IT_XZCB_list = tax_desc.get("IT_XZCB") # 获取所得税虚增成本指标名称 IT_XZCB_list = self.tax_desc.get("IT_XZCB") # 获取所得税虚增成本指标名称
Risk_IT_XZCB = GetRiskDesc(dict_all,IT_XZCB_list)# 企业所得税虚增成本风险信息 Risk_IT_XZCB = self.GetRiskDesc(dict_all_new,IT_XZCB_list)# 企业所得税虚增成本风险信息
# 计算增值税虚开发票风险异常 # 计算增值税虚开发票风险异常
VAT_XKFP_list = tax_desc.get("VAT_XKFP") # 获取增值税虚开发票指标名称 VAT_XKFP_list = self.tax_desc.get("VAT_XKFP") # 获取增值税虚开发票指标名称
Risk_VAT_XKFP = GetRiskDesc(dict_all,VAT_XKFP_list) # 企业增值税虚开发票风险信息 Risk_VAT_XKFP = self.GetRiskDesc(dict_all_new,VAT_XKFP_list) # 企业增值税虚开发票风险信息
# 计算增值税虚增进项风险异常 # 计算增值税虚增进项风险异常
VAT_XZJX_list = tax_desc.get("VAT_XZJX") # 获取增值税虚增进项指标名称 VAT_XZJX_list = self.tax_desc.get("VAT_XZJX") # 获取增值税虚增进项指标名称
Risk_VAT_XZJX = GetRiskDesc(dict_all,VAT_XZJX_list)# 企业增值税虚增进项风险信息 Risk_VAT_XZJX = self.GetRiskDesc(dict_all_new,VAT_XZJX_list)# 企业增值税虚增进项风险信息
# 计算增值税隐藏销项风险异常 # 计算增值税隐藏销项风险异常
VAT_YCXX_list = tax_desc.get("VAT_YCXX") # 获取增值税隐藏销项指标名称 VAT_YCXX_list = self.tax_desc.get("VAT_YCXX") # 获取增值税隐藏销项指标名称
Risk_VAT_YCXX = GetRiskDesc(dict_all,VAT_YCXX_list)# 企业增值税隐藏销项风险信息 Risk_VAT_YCXX = self.GetRiskDesc(dict_all_new,VAT_YCXX_list)# 企业增值税隐藏销项风险信息
# 计算消费税风险异常 # 计算消费税风险异常
CT_FX_list = tax_desc.get("CT_FX") # 获取消费税指标名称 CT_FX_list = self.tax_desc.get("CT_FX") # 获取消费税指标名称
Risk_CT_FX = GetRiskDesc(dict_all,CT_FX_list) # 消费税风险信息 Risk_CT_FX = self.GetRiskDesc(dict_all_new,CT_FX_list) # 消费税风险信息
# 综合 # 综合
ALLT_FX_list = tax_desc.get("ALLT_FX") # 获取综合风险指标名称 ALLT_FX_list = self.tax_desc.get("ALLT_FX") # 获取综合风险指标名称
Risk_ALLT_FX =GetRiskDesc(dict_all,ALLT_FX_list) # 综合风险信息 Risk_ALLT_FX =self.GetRiskDesc(dict_all_new,ALLT_FX_list) # 综合风险信息
RI_result = { RI_result = {
"RiskA": RiskA, "RiskA": RiskA,
...@@ -291,7 +297,7 @@ def Riskinfo(GetAllinfo): ...@@ -291,7 +297,7 @@ def Riskinfo(GetAllinfo):
"Risk_ALLT_FX": Risk_ALLT_FX "Risk_ALLT_FX": Risk_ALLT_FX
} }
print(RI_result, "------------------------------") # print(RI_result, "------------------------------")
return RI_result return RI_result
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
from getcompanyinfofromES import GetComanyinfoFromES from getcompanyinfofromES import GetComanyinfoFromES
from GetFIinfoFromJson import GetFIinfoFromJson from GetFIinfoFromJson import GetFIinfoFromJson
from GetRiskinfo import Riskinfo from GetRiskinfo import getriskinfo
import time,requests,oss2,sys,os,json import time,requests,oss2,sys,os,json
from flask import Flask ,request from flask import Flask ,request
from docxtpl import DocxTemplate,InlineImage from docxtpl import DocxTemplate,InlineImage
...@@ -148,9 +148,6 @@ def WriteReport(Else_info,Companyinfo,Fi_dict,Risk_info): ...@@ -148,9 +148,6 @@ def WriteReport(Else_info,Companyinfo,Fi_dict,Risk_info):
context['guage1'] = InlineImage(tpl, guage1, width=Mm(60)) context['guage1'] = InlineImage(tpl, guage1, width=Mm(60))
context['guage2'] = InlineImage(tpl, guage2, width=Mm(60)) context['guage2'] = InlineImage(tpl, guage2, width=Mm(60))
context['guage3'] = InlineImage(tpl, guage3, width=Mm(60)) context['guage3'] = InlineImage(tpl, guage3, width=Mm(60))
context['RiskA_desc'] ="企业风险异常同比其他企业比例较低"
context['MRisk_desc'] = "企业风险异常同比其他企业比例较低"
context['ARisk_desc'] = "企业风险异常同比其他企业比例较低"
# 风险信息 # 风险信息
context["RiskA_desc"] = Risk_info["RiskA"]["describe"] context["RiskA_desc"] = Risk_info["RiskA"]["describe"]
context["MRisk_desc"] = Risk_info["MRisk"]["describe"] context["MRisk_desc"] = Risk_info["MRisk"]["describe"]
...@@ -223,7 +220,7 @@ def report(): ...@@ -223,7 +220,7 @@ def report():
data = request.json data = request.json
# print(data) # print(data)
# print("ccccccccccccccccccccccccccccc") # print("ccccccccccccccccccccccccccccc")
# json_str = json.dumps(data) # json_str = json.dumps(data, ensure_ascii=False)
# print(json_str) # print(json_str)
GetAllinfo = json.loads(data) GetAllinfo = json.loads(data)
companyname=GetAllinfo["company_name"] #获取监测企业名称 companyname=GetAllinfo["company_name"] #获取监测企业名称
...@@ -232,7 +229,8 @@ def report(): ...@@ -232,7 +229,8 @@ def report():
if companyname: if companyname:
Companyinfo=GetComanyinfoFromES(companyname) #根据输入公司名获取工商信息 Companyinfo=GetComanyinfoFromES(companyname) #根据输入公司名获取工商信息
Else_info, Fi_dict=GetFIinfoFromJson(GetAllinfo)#获取输入其他信息和财务信息 Else_info, Fi_dict=GetFIinfoFromJson(GetAllinfo)#获取输入其他信息和财务信息
Risk_info=Riskinfo(GetAllinfo)#计算风险项 riskinfo = getriskinfo()
Risk_info=riskinfo.Riskinfo(GetAllinfo)#计算风险项
report=None report=None
try: try:
report = WriteReport(Else_info,Companyinfo,Fi_dict,Risk_info) #将工商、财务、风险三部分内容写入word中 report = WriteReport(Else_info,Companyinfo,Fi_dict,Risk_info) #将工商、财务、风险三部分内容写入word中
......
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