Commit b1c9cf23 by 宋毅

fh0323

parent 326307d7
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020/3/17 15:54
# @Author : fanhui
# @File : Risk_GetDescinfoFromSql.py
# @Software: PyCharm
#可利用SQLite3访问数据库,或先访问数据库获取
import os, sys,sqlite3
from flask import Flask
from flask_cors import *
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():
cursor = conn.cursor()
dict_all_v1 = {} # 数据库获取原始大字典
try:
# 执行SQL语句
cursor.execute('SELECT * from tax_v3_finally_test0317 ')
# 获取所有配置列表
All_tax_dict = cursor.fetchall()
# print(All_tax_dict)
for row in All_tax_dict:
# 获取所有税务指标信息
tax_index = {
"factors_code": row[3].replace('\r\n', ""),
"factors_name": row[4],
"s_score": int(row[5].replace('"', "")),
"factors_describe": row[6],
"status": {"status_key":0,"status_value":"normal"}
}
dict_all_v1[row[4].replace('"', "")] = tax_index
except:
return ("没有获取到数据库信息")
# 建立不同风险监测项与指标的对应关系
tax_desc = {} # 数据库获取风险项列表
try:
# 执行SQL语句
cursor.execute('SELECT * from tax_risk_list')
# 获取所有配置列表
All_tax_dict = cursor.fetchall()
IT_YCSR = []
IT_XZCB = []
IT_XZFY = []
VAT_XKFP = []
VAT_YCXX = []
VAT_XZJX = []
CT_FX = []
ALLT_FX = []
for row in All_tax_dict:
# 获取所有税务指标信息
if row[1] == "IT_YCSR":
IT_YCSR.append(row[2])
if row[1] == "IT_XZCB":
IT_XZCB.append(row[2])
if row[1] == "IT_XZFY":
IT_XZFY.append(row[2])
if row[1] == "VAT_XKFP":
VAT_XKFP.append(row[2])
if row[1] == "VAT_YCXX":
VAT_YCXX.append(row[2])
if row[1] == "VAT_XZJX":
VAT_XZJX.append(row[2])
if row[1] == "CT_FX":
CT_FX.append(row[2])
if row[1] == "ALLT_FX":
ALLT_FX.append(row[2])
tax_desc = {
"IT_YCSR": IT_YCSR,
"IT_XZCB": IT_XZCB,
"IT_XZFY": IT_XZFY,
"VAT_XKFP": VAT_XKFP,
"VAT_YCXX": VAT_YCXX,
"VAT_XZJX": VAT_XZJX,
"CT_FX": CT_FX,
"ALLT_FX": ALLT_FX
}
except:
return ("没有获取到不同风险项对应指标的数据库信息")
finally:
cursor.close()
conn.close()
return dict_all_v1, tax_desc
dict_all_v1, tax_desc = GetAllDictFromSql()
# 获取传入的参数,建立传参后的大字典
def CreatBdictFromJson(dict_all,GetAllinfo):
# 获取传入的参数
GetAllinfo_new=GetAllinfo["ri"]
if GetAllinfo["ri"] and type(GetAllinfo["ri"])=="str":
print("111111111",type(GetAllinfo["ri"]),GetAllinfo["ri"])
GetAllinfo_new = eval(GetAllinfo_new) # 如果key不存在,会返回None,因此需进行判断
print(GetAllinfo_new)
for factors_name, value in dict_all.items():
try:
status_get=GetAllinfo_new[factors_name]
# print(type(status_get),status_get)
if type(status_get)==dict:
dict_all[factors_name]["status"] = status_get
# print("____",dict_all)
if type(status_get) == str:
status_get=eval(status_get)
dict_all[factors_name]["status"] = status_get
except:
pass
print("!!!!!!!",dict_all)
# 计算总体风险异常比例、以及被监控风险比例和被稽查风险比例
qualified = [] # 合格
disqualified = [] # 不合格
for k, v in dict_all.items():
s_status = v['status']["status_key"]
s_score = v['s_score']
if s_status == 1:
qualified.append(s_score)
if s_status == 2:
disqualified.append(s_score)
A_count = sum(qualified) + sum(disqualified) # 计算所有合格与不合格对应指标权重之和(分母)
print(A_count)
B_count = sum(disqualified) # 计算所有不合格对应指标权重之和(分子)
print(B_count)
r1 = float("%.2f" % (B_count / A_count)) # 计算风险异常比例
print(r1, type(r1))
t_r1 = str(int(r1 * 100)) + "%"
t_r2 = str(int((r1 - 0.29) * 100)) + "%"
t_r3 = str(int((r1 - 0.49) * 100)) + "%"
standard1 = 0.3
standard2 = 0.5
# 建立第一层规则
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 > standard2: {"t_r1": t_r1, "t_r2": t_r2, "t_r3": t_r3}}
ALLRisk = {}
for k1, v1 in rules.items():
if k1:
ALLRisk = v1
# print("+++++++++++++",ALLRisk)
return dict_all, ALLRisk
# 输入计算出的风险异常比例,返回提示结果
def RiskAbnormal(t_r1):
RiskA = {}
t_r1_s = str(int(t_r1.replace("%", "")) / 100)
rules_1 = {"t_r1_s<='0.3'": "企业风险异常同比其他企业比例较低",
"t_r1_s>'0.3'": "企业风险异常同比其他企业比例明显偏高"
}
for k1, v1 in rules_1.items():
if eval(str(k1)):
RiskA = {"score":t_r1,"describe":v1}
return RiskA
# 输入计算出的被检测风险值,判断被监测风险结果
def MonitoredRisk(t_r2):
MRisk = {}
t_r2_s = str(int(t_r2.replace("%", "")) / 100)
rules_2 = {"t_r2_s<='0.1'": "企业被监控的风险同比其他企业比例较低",
"t_r2_s>'0.1' and t_r2_s<='0.5'": "经检测,企业有一定可能性被选为税务监控对象",
"t_r2_s>'0.5'": "经检测,企业有很大可能性被选为税务监控对象"
}
for k2, v2 in rules_2.items():
if eval(str(k2)):
MRisk = {"score": t_r2, "describe": v2}
return MRisk
# 输入计算出的被稽查风险值,判断被稽查风险结果
def AuditedRisk(t_r3):
ARisk = {}
t_r3_s = str(int(t_r3.replace("%", "")) / 100)
rules_3 = {"t_r3_s<='0.1'": "企业被税务稽查的可能性较低",
"t_r3_s>'0.1' and t_r3_s<='0.3'": "企业有一定可能性被税务稽查",
"t_r3_s>'0.3'": "企业有很大可能性被税务稽查"
}
for k3, v3 in rules_3.items():
if eval(str(k3)):
ARisk = {"score":t_r3,"describe":v3}
return ARisk
# 输入总体计算的风险异常比例,得到提示语(也可与RiskAbnormal函数合并)
def information(t_r1):
info = {}
t_r1_s = str(int(t_r1.replace("%", "")) / 100)
rules_0 = {"t_r1_s<='0.3'": "贵企业的风险异常情况同比其他企业较少,如需更多更详细的诊断服务,请联系我们>>",
"t_r1_s>'0.3' and t_r1_s<='0.6'": "企业的风险异常情况同比其他企业明显偏多,有较大可能性成为税务系统监控的对象,请企业的财税人员参考以下详细检测情况进行自查,如需进行更详细的诊断服务请联系我们>>",
"t_r1_s>'0.6' and t_r1_s<='0.8'": "如果税务局选择企业所在行业进行行业稽查,该企业有一定可能性成为被选案例,请财税人员尽快参照以下比例进行自查,如需进行更详细的诊断服务请联系我们>>",
"t_r1_s>'0.8'": "如果税务局选择企业所在行业进行行业稽查,该企业有很大可能性成为被选案例,请财税人员尽快参照以下比例进行自查,如需进行更详细的诊断服务请联系我们>>"
}
for k0, v0 in rules_0.items():
if eval(str(k0)):
info = {"score":t_r1,"describe":v0}
return info
#获取描述信息的方法
def GetResult(risk_factor_dict,status_value):
desc_info=risk_factor_dict["factors_describe"]
if status_value=="big" or status_value=="small":
try:
dict_new=eval(desc_info)
tempstr='''{{dict[key]}}'''
template = Template(tempstr)
factor_desc=template.render(dict=dict_new,key=status_value)
print(factor_desc)
except:
factor_desc="没有获取到风险描述信息"
else:
factor_desc=desc_info
return factor_desc
#通用函数,输入不同风险监测项列表list,得到指标对应描述信息list
def GetRiskDesc(dict_all,risklist):
new_dict={}# 建立风险检测项字典
for f1 in risklist:
new_dict[f1] = dict_all[f1]
# 判断所有指标是否为缺失
Risk_not_null = {}
for k1, v1 in new_dict.items():
s_status1 = v1["status"]["status_key"]
if s_status1 > 0:
Risk_not_null[k1] = new_dict[k1]
p1_describe = []
if Risk_not_null:
for k_part1, v_part1 in Risk_not_null.items():
s_status1 = v_part1["status"]["status_key"]
s_status2 = v_part1["status"]["status_value"]
if s_status1 == 2:
s_str = GetResult(v_part1, s_status2)
p1_describe.append(s_str)
else:
p1_describe = ["贵公司提供的检测数据不能支撑此风险项检测,您可以尝试按季度或年度检测"]
return p1_describe
#整合调用前面构建函数,并结合传入数据建立风险监测结果函数
def Riskinfo(GetAllinfo):
dict_all, ALLRisk = CreatBdictFromJson(dict_all_v1, GetAllinfo)
RiskA = RiskAbnormal(ALLRisk["t_r1"]) # 风险异常比例
MRisk = MonitoredRisk(ALLRisk["t_r2"]) # 被监控风险
ARisk = AuditedRisk(ALLRisk["t_r3"]) # 被稽查风险
info = information(ALLRisk["t_r1"]) # 提示语
# 计算所得税隐藏收入风险异常
IT_YCSR_list = tax_desc.get("IT_YCSR") # 获取所得税隐藏收入指标名称
Risk_IT_YCSR=GetRiskDesc(dict_all,IT_YCSR_list) # 企业所得税隐藏收入风险信息
# 计算所得税虚增费用风险异常
IT_XZFY_list = tax_desc.get("IT_XZFY") # 获取所得税虚增费用指标名称
Risk_IT_XZFY=GetRiskDesc(dict_all,IT_XZFY_list) # 企业所得税隐藏收入风险信息
# 计算所得税虚增成本风险异常
IT_XZCB_list = tax_desc.get("IT_XZCB") # 获取所得税虚增成本指标名称
Risk_IT_XZCB = GetRiskDesc(dict_all,IT_XZCB_list)# 企业所得税虚增成本风险信息
# 计算增值税虚开发票风险异常
VAT_XKFP_list = tax_desc.get("VAT_XKFP") # 获取增值税虚开发票指标名称
Risk_VAT_XKFP = GetRiskDesc(dict_all,VAT_XKFP_list) # 企业增值税虚开发票风险信息
# 计算增值税虚增进项风险异常
VAT_XZJX_list = tax_desc.get("VAT_XZJX") # 获取增值税虚增进项指标名称
Risk_VAT_XZJX = GetRiskDesc(dict_all,VAT_XZJX_list)# 企业增值税虚增进项风险信息
# 计算增值税隐藏销项风险异常
VAT_YCXX_list = tax_desc.get("VAT_YCXX") # 获取增值税隐藏销项指标名称
Risk_VAT_YCXX = GetRiskDesc(dict_all,VAT_YCXX_list)# 企业增值税隐藏销项风险信息
# 计算消费税风险异常
CT_FX_list = tax_desc.get("CT_FX") # 获取消费税指标名称
Risk_CT_FX = GetRiskDesc(dict_all,CT_FX_list) # 消费税风险信息
# 综合
ALLT_FX_list = tax_desc.get("ALLT_FX") # 获取综合风险指标名称
Risk_ALLT_FX =GetRiskDesc(dict_all,ALLT_FX_list) # 综合风险信息
RI_result = {
"RiskA": RiskA,
"MRisk": MRisk,
"ARisk": ARisk,
"info": info,
"Risk_IT_YCSR": Risk_IT_YCSR,
"Risk_IT_XZFY": Risk_IT_XZFY,
"Risk_IT_XZCB": Risk_IT_XZCB,
"Risk_VAT_XKFP": Risk_VAT_XKFP,
"Risk_VAT_XZJX": Risk_VAT_XZJX,
"Risk_VAT_YCXX": Risk_VAT_YCXX,
"Risk_CT_FX": Risk_CT_FX,
"Risk_ALLT_FX": Risk_ALLT_FX
}
print(RI_result, "------------------------------")
return RI_result
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019/12/26 17:33
# @Author : fanhui
# @File : sql_tax_test.py
# @Software: PyCharm
import os, sys
from flask import request, Flask,jsonify
from flask_cors import *
import json
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) # 跨域请求
# 获取传入的参数,建立大字典
def CreatBdictFromJson(GetAllinfo):
# 读取指标文件,获取权重及描述信息
file = open('tax_index.txt', 'r', encoding='utf-8')
lines = file.readlines()
dict_all = {}
for line in lines:
linesplit = line.strip().split('\t')
tax_index = {
"factors_code": linesplit[3].replace('"', ""),
"factors_name": linesplit[4].replace('"', ""),
"s_score": int(linesplit[5].replace('"', "")),
"factors_describe": linesplit[6].replace('"', ""),
"status": 0
}
dict_all[linesplit[4].replace('"', "")] = tax_index
# print(dict_all)
# 获取传入的参数
GetAllinfo = GetAllinfo
GetAllinfo_new =GetAllinfo.get("ri", None) # 如果key不存在,会返回None,因此需进行判断
for factors_name, value in dict_all.items():
try:
dict_all[factors_name]["status"] = GetAllinfo_new[factors_name]
except:
pass
# print(dict_all)
# 计算总体风险异常比例、以及被监控风险比例和被稽查风险比例
qualified = [] # 合格
disqualified = [] # 不合格
for k, v in dict_all.items():
s_status = v['status']
s_score = v['s_score']
if s_status == 1:
qualified.append(s_score)
if s_status == 2:
disqualified.append(s_score)
A_count = sum(qualified) + sum(disqualified) # 计算所有合格与不合格对应指标权重之和(分母)
B_count = sum(disqualified) # 计算所有不合格对应指标权重之和(分子)
r1 = float("%.2f" % (B_count / A_count)) # 计算风险异常比例
print(r1, type(r1))
t_r1 = str(int(r1 * 100)) + "%"
t_r2 = str(int((r1 - 0.29) * 100)) + "%"
t_r3 = str(int((r1 - 0.49) * 100)) + "%"
standard1 = 0.3
standard2 = 0.5
# 建立第一层规则
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 > standard2: {"t_r1": t_r1, "t_r2": t_r2, "t_r3": t_r3}}
ALLRisk = {}
for k1, v1 in rules.items():
if k1:
ALLRisk = v1
print(ALLRisk,"+++++++++++++")
return dict_all, ALLRisk
# 输入计算出的风险异常比例,返回提示结果
def RiskAbnormal(t_r1):
RiskA = {}
t_r1_s = str(int(t_r1.replace("%", "")) / 100)
rules_1 = {"t_r1_s<='0.3'": "企业风险异常同比其他企业比例较低",
"t_r1_s>'0.3'": "企业风险异常同比其他企业比例明显偏高"
}
for k1, v1 in rules_1.items():
if eval(str(k1)):
RiskA = {"score":t_r1,"describe":v1}
return RiskA
# 输入计算出的被检测风险值,判断被监测风险结果
def MonitoredRisk(t_r2):
MRisk = {}
t_r2_s = str(int(t_r2.replace("%", "")) / 100)
rules_2 = {"t_r2_s<='0.1'": "企业被监控的风险同比其他企业比例较低",
"t_r2_s>'0.1' and t_r2_s<='0.5'": "经检测,企业有一定可能性被选为税务监控对象",
"t_r2_s>'0.5'": "经检测,企业有很大可能性被选为税务监控对象"
}
for k2, v2 in rules_2.items():
if eval(str(k2)):
MRisk = {"score": t_r2, "describe": v2}
return MRisk
# 输入计算出的被稽查风险值,判断被稽查风险结果
def AuditedRisk(t_r3):
ARisk = {}
t_r3_s = str(int(t_r3.replace("%", "")) / 100)
rules_3 = {"t_r3_s<='0.1'": "企业被税务稽查的可能性较低",
"t_r3_s>'0.1' and t_r3_s<='0.3'": "企业有一定可能性被税务稽查",
"t_r3_s>'0.3'": "企业有很大可能性被税务稽查"
}
for k3, v3 in rules_3.items():
if eval(str(k3)):
ARisk = {"score":t_r3,"describe":v3}
return ARisk
# 输入总体计算的风险异常比例,得到提示语(也可与RiskAbnormal函数合并)
def information(t_r1):
info = {}
t_r1_s = str(int(t_r1.replace("%", "")) / 100)
rules_0 = {"t_r1_s<='0.3'": "贵企业的风险异常情况同比其他企业较少,如需更多更详细的诊断服务,请联系我们>>",
"t_r1_s>'0.3' and t_r1_s<='0.6'": "企业的风险异常情况同比其他企业明显偏多,有较大可能性成为税务系统监控的对象,请企业的财税人员参考以下详细检测情况进行自查,如需进行更详细的诊断服务请联系我们>>",
"t_r1_s>'0.6' and t_r1_s<='0.8'": "如果税务局选择企业所在行业进行行业稽查,该企业有一定可能性成为被选案例,请财税人员尽快参照以下比例进行自查,如需进行更详细的诊断服务请联系我们>>",
"t_r1_s>'0.8'": "如果税务局选择企业所在行业进行行业稽查,该企业有很大可能性成为被选案例,请财税人员尽快参照以下比例进行自查,如需进行更详细的诊断服务请联系我们>>"
}
for k0, v0 in rules_0.items():
if eval(str(k0)):
info = {"score":t_r1,"describe":v0}
return info
# 建立不同风险监测项与指标的对应关系
tax_desc = {
"IT_YCSR": ["所得税行业预警税负率",
"销售(营业)收入变动率",
"收入利润率",
"销售成本大于销售收入",
"当期新增其他应收款/销售收入>80%",
"期末存货大于实收资本差异幅度异常",
"成本费用利润率",
"利润总额变动率",
"投资利润率",
"预付账款为负数",
"应收账款为负数",
"应付账款为负数",
"总资产周转率",
"预收账款过大异常",
"资产利润率",
"纳税人营业外支出变动率与营业外收入变动率弹性系数异常",
"纳税人流动资产变动率与营业收入变动率弹性系数异常",
"纳税人期末存货与当期累计收入差异幅度异常",
"账面存货率过高将会导致系统预警",
"收入负担变动率",
"应税所得率变动率",
"应纳税所得额变动率",
"行业预警利润率",
"主营业务收入变动率",
"主营业务成本变动率",
"其他业务利润变动率",
"主营业务利润变动率",
"纳税人主营业务收入变动率与主营业务利润变动率弹性系数异常",
"纳税人主营业务收入变动率与主营业务成本变动率弹性系数异常"],
"IT_XZCB": ["所得税行业预警税负率",
"销售成本大于销售收入",
"成本费用利润率",
"期末存货大于实收资本差异幅度异常",
"收入成本率",
"产品销售(营业)成本变动率",
"纳税人期末存货与当期累计收入差异幅度异常",
"账面存货率过高将会导致系统预警",
"总资产周转率",
"资产负债率",
"主营业务成本变动率",
"纳税人固定资产综合折旧率变动异常将会导致系统预警",
"纳税人无形资产综合摊销率变动异常",
"高比例出口的亏损企业",
"收入负担变动率",
"应税所得率变动率",
"应纳税所得额变动率",
"行业预警利润率",
"其他业务利润变动率",
"主营业务利润变动率",
"纳税人主营业务收入变动率与主营业务利润变动率弹性系数异常"],
"IT_XZFY": ["所得税行业预警税负率",
"销售成本大于销售收入",
"成本费用利润率",
"期末存货大于实收资本差异幅度异常",
"收入费用率",
"期间费用变动率",
"纳税人期末存货与当期累计收入差异幅度异常",
"账面存货率过高将会导致系统预警",
"总资产周转率",
"资产负债率",
"成本费用率",
"费用率变动率",
"营业(管理、财务)费用变动率",
"主营业务成本变动率",
"高比例出口的亏损企业",
"收入负担变动率",
"应税所得率变动率",
"应纳税所得额变动率",
"行业预警利润率",
"其他业务利润变动率",
"主营业务利润变动率",
"纳税人主营业务收入变动率与主营业务利润变动率弹性系数异常",
"纳税人期间费用变动率与主营业务收入变动率弹性系数异常",
"广告费和业务宣传费异常",
"业务招待费异常"],
"VAT_XKFP": ["销售额变动率",
"销售毛利(益)率",
"税收负担变动率",
"税收负担率",
"增值税专用发票用量变动异常",
"增值税一股纳税人税负变动异常",
"增值税普通发票用量变动异常",
"进项税额变动率∶应纳税额变动率"],
"VAT_YCXX": ["销售额变动率",
"税收负担变动率",
"税收负担率",
"存货变动率∶销售成本变动率",
"存货变动率∶销售收入变动率",
"存货周转率∶资金周转率",
"增值税一股纳税人税负变动异常",
"纳税人销售额变动率与应纳税额变动率弹性系数异常",
"进项税额变动率∶应纳税额变动率",
"应收账款变动率∶销项税额变动率",
"预收账款大于零且存货大于预收账款又无留抵",
"进项税额变动率高于销售税额变动率",
"在建工程增加额",
"长期投资增加额分析",
"企业期末预收账款变动率与销售收入变动率弹性系数异常",
"纳税人销售毛利率变动率与税负率变动率弹性系统异常"],
"VAT_XZJX": ["销售毛利(益)率",
"税收负担变动率",
"税收负担率",
"增值税一股纳税人税负变动异常",
"纳税人销售额变动率与应纳税额变动率弹性系数异常",
"应付账款变动率∶进项税额变动率",
"进项税额变动率高于销售税额变动率",
"在建工程增加额",
"长期投资增加额分析",
"企业期末预收账款变动率与销售收入变动率弹性系数异常",
"应税销售额变动率",
"纳税人销售毛利率变动率与税负率变动率弹性系统异常"],
"CT_FX": ["其他应付款变动额",
"应付帐款变动额",
"营业外支出变动额",
"长期投资变动额"],
"ALLT_FX": ["消费税申报收入与增值税申报收入差异",
"所得税申报收入与增值税申报收入差异",
"长期零申报"]
}
# 建立细分税种风险类别(根据传入的不合格指标之和进行比较)
def RiskCompareRule(wx_part):
risk_describe = ''
if wx_part and wx_part != None:
risk_relus = {
wx_part >= 5 : "高危风险",
# wx_part >= 5 and wx_part <= 10: "高危风险",
wx_part >= 3 and wx_part <= 4: "重度风险",
wx_part == 2: "中度风险",
wx_part <= 1: "轻微风险"
}
for k, v in risk_relus.items():
if k:
risk_describe = v
else:
risk_describe = "数据缺失"
return risk_describe
#风险描述去重
def getUniqueItems(iterable):
seen = set()
result = []
for item in iterable:
if item not in seen:
seen.add(item)
result.append(item)
return result
# 计算所得税隐藏收入风险异常(对所属指标不合格降序排列,展示前三的风险描述信息,计算不合格总和及风险比例)
def IT_YCSR_Risk(dict_all):
IT_YCSR_list = tax_desc.get("IT_YCSR") #获取所得税隐藏收入指标名称
IT_YCSR_dict = {} #建立所得税隐藏收入字典
for f1 in IT_YCSR_list:
IT_YCSR_dict[f1] = dict_all[f1]
#判断所有指标是否为缺失
Risk_not_null={}
for k1, v1 in IT_YCSR_dict.items():
s_status1 = v1["status"]
if s_status1 >0:
Risk_not_null[k1]=IT_YCSR_dict[k1]
if Risk_not_null:
satisfied = []
dissatisfied = []
part_s1_str_dict = {}
for k_part1, v_part1 in IT_YCSR_dict.items():
s_s1 = v_part1["s_score"]
s_str = v_part1["factors_describe"]
s_status1 = v_part1["status"]
if s_status1 == 1:
satisfied.append(s_s1)
if s_status1 == 2:
part_s1_str_dict[s_s1] = s_str
dissatisfied.append(s_s1)
A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母)
B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子)
risk_IT_YCSR = float("%.2f" % (B_count / A_count)) # 计算风险异常比例
Risk_IT_YCSR_score = str(int(risk_IT_YCSR * 100)) + "%" # 格式转化
part_s1_str_dict = sorted(part_s1_str_dict.items(), key=lambda x: x[0], reverse=True) # 按照权重排序
p1_describe = [] # 获取风险权重前三提示
for pt in part_s1_str_dict:
p1_describe.append(pt[1])
p1_describe = getUniqueItems(p1_describe) #风险描述去重
if len(p1_describe) > 3:
p1_describe = p1_describe[:3]
# 风险类别获取
risk_describe = RiskCompareRule(B_count)
else:
Risk_IT_YCSR_score="0%"
p1_describe="贵公司提供的检测数据不能支撑此风险项检测,您可以尝试按季度或年度检测"
risk_describe="数据缺失"
Risk_IT_YCSR={
"score":Risk_IT_YCSR_score,
"describe":p1_describe,
"risk":risk_describe
}
return Risk_IT_YCSR
# 计算所得税虚增费用风险异常
def IT_XZFY_Risk(dict_all):
IT_XZFY_list = tax_desc.get("IT_XZFY") #获取所得税虚增费用指标名称
IT_XZFY_dict = {} #建立所得税虚增费用字典
for f2 in IT_XZFY_list:
IT_XZFY_dict[f2] = dict_all[f2]
#判断所有指标是否为缺失
Risk_not_null={}
for k2, v2 in IT_XZFY_dict.items():
s_status2 = v2["status"]
if s_status2 >0:
Risk_not_null[k2]=IT_XZFY_dict[k2]
if Risk_not_null:
satisfied = []
dissatisfied = []
part_s2_str_dict = {}
for k_part2, v_part2 in IT_XZFY_dict.items():
s_s2 = v_part2["s_score"]
s_str2 = v_part2["factors_describe"]
s_status2 = v_part2["status"]
if s_status2 == 1:
satisfied.append(s_s2)
if s_status2 == 2:
part_s2_str_dict[s_s2] = s_str2
dissatisfied.append(s_s2)
A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母)
B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子)
risk_IT_XZFY = float("%.2f" % (B_count / A_count)) # 计算风险异常比例
Risk_IT_XZFY_score = str(int(risk_IT_XZFY * 100)) + "%" # 格式转化
part_s2_str_dict = sorted(part_s2_str_dict.items(), key=lambda x: x[0], reverse=True) # 按照权重排序
p2_describe = [] # 获取风险权重前三提示
for pt in part_s2_str_dict:
p2_describe.append(pt[1])
p2_describe = getUniqueItems(p2_describe)
if len(p2_describe) > 3:
p2_describe = p2_describe[:3]
# 风险类别获取
risk_describe = RiskCompareRule(B_count)
else:
Risk_IT_XZFY_score="0%"
p2_describe="贵公司提供的检测数据不能支撑此风险项检测,您可以尝试按季度或年度检测"
risk_describe="数据缺失"
Risk_IT_XZFY={
"score":Risk_IT_XZFY_score,
"describe":p2_describe,
"risk":risk_describe
}
return Risk_IT_XZFY
# 计算所得税虚增成本风险异常
def IT_XZCB_Risk(dict_all):
IT_XZCB_list = tax_desc.get("IT_XZCB") #获取所得税虚增成本指标名称
IT_XZCB_dict = {} #建立所得税虚增成本字典
for f1 in IT_XZCB_list:
IT_XZCB_dict[f1] = dict_all[f1]
#判断所有指标是否为缺失
Risk_not_null={}
for k1, v1 in IT_XZCB_dict.items():
s_status1 = v1["status"]
if s_status1 >0:
Risk_not_null[k1]=IT_XZCB_dict[k1]
if Risk_not_null:
satisfied = []
dissatisfied = []
part_s1_str_dict = {}
for k_part1, v_part1 in IT_XZCB_dict.items():
s_s1 = v_part1["s_score"]
s_str = v_part1["factors_describe"]
s_status1 = v_part1["status"]
if s_status1 == 1:
satisfied.append(s_s1)
if s_status1 == 2:
part_s1_str_dict[s_s1] = s_str
dissatisfied.append(s_s1)
A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母)
B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子)
risk_IT_XZCB = float("%.2f" % (B_count / A_count)) # 计算风险异常比例
Risk_IT_XZCB_score = str(int(risk_IT_XZCB * 100)) + "%" # 格式转化
part_s1_str_dict = sorted(part_s1_str_dict.items(), key=lambda x: x[0], reverse=True) # 按照权重排序
p1_describe = [] # 获取风险权重前三提示
for pt in part_s1_str_dict:
p1_describe.append(pt[1])
p1_describe = getUniqueItems(p1_describe)
if len(p1_describe) > 3:
p1_describe = p1_describe[:3]
# 风险类别获取
risk_describe = RiskCompareRule(B_count)
else:
Risk_IT_XZCB_score="0%"
p1_describe="贵公司提供的检测数据不能支撑此风险项检测,您可以尝试按季度或年度检测"
risk_describe="数据缺失"
Risk_IT_XZCB={
"score":Risk_IT_XZCB_score,
"describe":p1_describe,
"risk":risk_describe
}
return Risk_IT_XZCB
# 计算增值税虚开发票风险异常
def VAT_XKFP_Risk(dict_all):
VAT_XKFP_list = tax_desc.get("VAT_XKFP") #获取增值税虚开发票指标名称
VAT_XKFP_dict = {} #建立增值税虚开发票字典
for f1 in VAT_XKFP_list:
VAT_XKFP_dict[f1] = dict_all[f1]
#判断所有指标是否为缺失
Risk_not_null={}
for k1, v1 in VAT_XKFP_dict.items():
s_status1 = v1["status"]
if s_status1 >0:
Risk_not_null[k1]=VAT_XKFP_dict[k1]
if Risk_not_null:
satisfied = []
dissatisfied = []
part_s1_str_dict = {}
for k_part1, v_part1 in VAT_XKFP_dict.items():
s_s1 = v_part1["s_score"]
s_str = v_part1["factors_describe"]
s_status1 = v_part1["status"]
if s_status1 == 1:
satisfied.append(s_s1)
if s_status1 == 2:
part_s1_str_dict[s_s1] = s_str
dissatisfied.append(s_s1)
A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母)
B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子)
risk_VAT_XKFP = float("%.2f" % (B_count / A_count)) # 计算风险异常比例
Risk_VAT_XKFP_score = str(int(risk_VAT_XKFP * 100)) + "%" # 格式转化
part_s1_str_dict = sorted(part_s1_str_dict.items(), key=lambda x: x[0], reverse=True) # 按照权重排序
p1_describe = [] # 获取风险权重前三提示
for pt in part_s1_str_dict:
p1_describe.append(pt[1])
p1_describe = getUniqueItems(p1_describe)
if len(p1_describe) > 3:
p1_describe = p1_describe[:3]
# 风险类别获取
risk_describe = RiskCompareRule(B_count)
else:
Risk_VAT_XKFP_score="0%"
p1_describe="贵公司提供的检测数据不能支撑此风险项检测,您可以尝试按季度或年度检测"
risk_describe="数据缺失"
Risk_VAT_XKFP={
"score":Risk_VAT_XKFP_score,
"describe":p1_describe,
"risk":risk_describe
}
return Risk_VAT_XKFP
# 计算增值税虚增进项风险异常
def VAT_XZJX_Risk(dict_all):
VAT_XZJX_list = tax_desc.get("VAT_XZJX") #获取增值税虚增进项指标名称
VAT_XZJX_dict = {} #建立增值税虚增进项字典
for f1 in VAT_XZJX_list:
VAT_XZJX_dict[f1] = dict_all[f1]
#判断所有指标是否为缺失
Risk_not_null={}
for k1, v1 in VAT_XZJX_dict.items():
s_status1 = v1["status"]
if s_status1 >0:
Risk_not_null[k1]=VAT_XZJX_dict[k1]
if Risk_not_null:
satisfied = []
dissatisfied = []
part_s1_str_dict = {}
for k_part1, v_part1 in VAT_XZJX_dict.items():
s_s1 = v_part1["s_score"]
s_str = v_part1["factors_describe"]
s_status1 = v_part1["status"]
if s_status1 == 1:
satisfied.append(s_s1)
if s_status1 == 2:
part_s1_str_dict[s_s1] = s_str
dissatisfied.append(s_s1)
A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母)
B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子)
risk_VAT_XZJX = float("%.2f" % (B_count / A_count)) # 计算风险异常比例
Risk_VAT_XZJX_score = str(int(risk_VAT_XZJX * 100)) + "%" # 格式转化
part_s1_str_dict = sorted(part_s1_str_dict.items(), key=lambda x: x[0], reverse=True) # 按照权重排序
p1_describe = [] # 获取风险权重前三提示
for pt in part_s1_str_dict:
p1_describe.append(pt[1])
p1_describe = getUniqueItems(p1_describe)
if len(p1_describe) > 3:
p1_describe = p1_describe[:3]
# 风险类别获取
risk_describe = RiskCompareRule(B_count)
else:
Risk_VAT_XZJX_score="0%"
p1_describe="贵公司提供的检测数据不能支撑此风险项检测,您可以尝试按季度或年度检测"
risk_describe="数据缺失"
Risk_VAT_XZJX={
"score":Risk_VAT_XZJX_score,
"describe":p1_describe,
"risk":risk_describe
}
return Risk_VAT_XZJX
# 计算增值税隐藏销项风险异常
def VAT_YCXX_Risk(dict_all):
VAT_YCXX_list = tax_desc.get("VAT_YCXX") #获取增值税隐藏销项指标名称
VAT_YCXX_dict = {} #建立增值税隐藏销项字典
for f1 in VAT_YCXX_list:
VAT_YCXX_dict[f1] = dict_all[f1]
#判断所有指标是否为缺失
Risk_not_null={}
for k1, v1 in VAT_YCXX_dict.items():
s_status1 = v1["status"]
if s_status1 >0:
Risk_not_null[k1]=VAT_YCXX_dict[k1]
if Risk_not_null:
satisfied = []
dissatisfied = []
part_s1_str_dict = {}
for k_part1, v_part1 in VAT_YCXX_dict.items():
s_s1 = v_part1["s_score"]
s_str = v_part1["factors_describe"]
s_status1 = v_part1["status"]
if s_status1 == 1:
satisfied.append(s_s1)
if s_status1 == 2:
part_s1_str_dict[s_s1] = s_str
dissatisfied.append(s_s1)
A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母)
B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子)
risk_VAT_YCXX = float("%.2f" % (B_count / A_count)) # 计算风险异常比例
Risk_VAT_YCXX_score = str(int(risk_VAT_YCXX * 100)) + "%" # 格式转化
part_s1_str_dict = sorted(part_s1_str_dict.items(), key=lambda x: x[0], reverse=True) # 按照权重排序
p1_describe = [] # 获取风险权重前三提示
for pt in part_s1_str_dict:
p1_describe.append(pt[1])
p1_describe = getUniqueItems(p1_describe)
if len(p1_describe) > 3:
p1_describe = p1_describe[:3]
# 风险类别获取
risk_describe = RiskCompareRule(B_count)
else:
Risk_VAT_YCXX_score="0%"
p1_describe="贵公司提供的检测数据不能支撑此风险项检测,您可以尝试按季度或年度检测"
risk_describe="数据缺失"
Risk_VAT_YCXX={
"score":Risk_VAT_YCXX_score,
"describe":p1_describe,
"risk":risk_describe
}
return Risk_VAT_YCXX
# 计算消费税风险异常
def CT_FX_Risk(dict_all):
CT_FX_list = tax_desc.get("CT_FX") #获取消费税指标名称
CT_FX_dict = {} #建立消费税字典
for f1 in CT_FX_list:
CT_FX_dict[f1] = dict_all[f1]
#判断所有指标是否为缺失
Risk_not_null={}
for k1, v1 in CT_FX_dict.items():
s_status1 = v1["status"]
if s_status1 >0:
Risk_not_null[k1]=CT_FX_dict[k1]
if Risk_not_null:
satisfied = []
dissatisfied = []
part_s1_str_dict = {}
for k_part1, v_part1 in CT_FX_dict.items():
s_s1 = v_part1["s_score"]
s_str = v_part1["factors_describe"]
s_status1 = v_part1["status"]
if s_status1 == 1:
satisfied.append(s_s1)
if s_status1 == 2:
part_s1_str_dict[s_s1] = s_str
dissatisfied.append(s_s1)
A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母)
B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子)
risk_CT_FX = float("%.2f" % (B_count / A_count)) # 计算风险异常比例
Risk_CT_FX_score = str(int(risk_CT_FX * 100)) + "%" # 格式转化
part_s1_str_dict = sorted(part_s1_str_dict.items(), key=lambda x: x[0], reverse=True) # 按照权重排序
p1_describe = [] # 获取风险权重前三提示
for pt in part_s1_str_dict:
p1_describe.append(pt[1])
p1_describe = getUniqueItems(p1_describe)
if len(p1_describe) > 3:
p1_describe = p1_describe[:3]
# 风险类别获取
risk_describe = RiskCompareRule(B_count)
else:
Risk_CT_FX_score="0%"
p1_describe="贵公司提供的检测数据不能支撑此风险项检测,您可以尝试按季度或年度检测"
risk_describe="数据缺失"
Risk_CT_FX={
"score":Risk_CT_FX_score,
"describe":p1_describe,
"risk":risk_describe
}
return Risk_CT_FX
# 综合
def ALLT_FX_Risk(dict_all):
ALLT_FX_list = tax_desc.get("ALLT_FX") #获取综合风险指标名称
ALLT_FX_dict = {} #建立综合风险字典
for f1 in ALLT_FX_list:
ALLT_FX_dict[f1] = dict_all[f1]
#判断所有指标是否为缺失
Risk_not_null={}
for k1, v1 in ALLT_FX_dict.items():
s_status1 = v1["status"]
if s_status1 >0:
Risk_not_null[k1]=ALLT_FX_dict[k1]
if Risk_not_null:
satisfied = []
dissatisfied = []
part_s1_str_dict = {}
for k_part1, v_part1 in ALLT_FX_dict.items():
s_s1 = v_part1["s_score"]
s_str = v_part1["factors_describe"]
s_status1 = v_part1["status"]
if s_status1 == 1:
satisfied.append(s_s1)
if s_status1 == 2:
part_s1_str_dict[s_s1] = s_str
dissatisfied.append(s_s1)
A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母)
B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子)
risk_ALLT_FX = float("%.2f" % (B_count / A_count)) # 计算风险异常比例
Risk_ALLT_FX_score = str(int(risk_ALLT_FX * 100)) + "%" # 格式转化
part_s1_str_dict = sorted(part_s1_str_dict.items(), key=lambda x: x[0], reverse=True) # 按照权重排序
p1_describe = [] # 获取风险权重前三提示
for pt in part_s1_str_dict:
p1_describe.append(pt[1])
p1_describe = getUniqueItems(p1_describe)
if len(p1_describe) > 3:
p1_describe = p1_describe[:3]
# 风险类别获取
risk_describe = RiskCompareRule(B_count)
else:
Risk_ALLT_FX_score="0%"
p1_describe="贵公司提供的检测数据不能支撑此风险项检测,您可以尝试按季度或年度检测"
risk_describe="数据缺失"
Risk_ALLT_FX={
"score":Risk_ALLT_FX_score,
"describe":p1_describe,
"risk":risk_describe
}
return Risk_ALLT_FX
#整合调用前面构建函数,并结合传入数据建立风险监测结果函数
def Riskinfo(GetAllinfo):
dict_all, ALLRisk = CreatBdictFromJson(GetAllinfo)
RiskA = RiskAbnormal(ALLRisk["t_r1"]) # 风险异常比例
MRisk = MonitoredRisk(ALLRisk["t_r2"]) # 被监控风险
ARisk = AuditedRisk(ALLRisk["t_r3"]) # 被稽查风险
info = information(ALLRisk["t_r1"]) # 提示语
Risk_IT_YCSR = IT_YCSR_Risk(dict_all) # 企业所得税隐藏收入风险信息
Risk_IT_XZFY = IT_XZFY_Risk(dict_all) # 企业所得税虚增费用风险信息
Risk_IT_XZCB = IT_XZCB_Risk(dict_all) # 企业所得税虚增成本风险信息
Risk_VAT_XKFP = VAT_XKFP_Risk(dict_all) # 企业增值税虚开发票风险信息
Risk_VAT_XZJX = VAT_XZJX_Risk(dict_all) # 企业增值税虚增进项风险信息
Risk_VAT_YCXX = VAT_YCXX_Risk(dict_all) # 企业增值税隐藏销项风险信息
Risk_CT_FX = CT_FX_Risk(dict_all) # 消费税风险信息
Risk_ALLT_FX = ALLT_FX_Risk(dict_all) # 综合风险信息
RI_result = {
"RiskA": RiskA,
"MRisk": MRisk,
"ARisk": ARisk,
"info": info,
"Risk_IT_YCSR": Risk_IT_YCSR,
"Risk_IT_XZFY": Risk_IT_XZFY,
"Risk_IT_XZCB": Risk_IT_XZCB,
"Risk_VAT_XKFP": Risk_VAT_XKFP,
"Risk_VAT_XZJX": Risk_VAT_XZJX,
"Risk_VAT_YCXX": Risk_VAT_YCXX,
"Risk_CT_FX": Risk_CT_FX,
"Risk_ALLT_FX": Risk_ALLT_FX
}
print(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 GetRiskinfoFromJson import Riskinfo from GetRiskinfo import Riskinfo
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
...@@ -45,10 +45,30 @@ def charts(datalist, charttype, pngpath): ...@@ -45,10 +45,30 @@ def charts(datalist, charttype, pngpath):
print("ExceptionExceptionExceptionExceptionExceptionException>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ExceptionExceptionExceptionException") print("ExceptionExceptionExceptionExceptionExceptionException>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ExceptionExceptionExceptionException")
return False 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工商、财务信息、风险监测(仪表盘图)) #生成报告(es工商、财务信息、风险监测(仪表盘图))
def WriteReport(Else_info,Companyinfo,Fi_dict,Risk_info): def WriteReport(Else_info,Companyinfo,Fi_dict,Risk_info):
tpl = DocxTemplate('tax_word_model.docx') tpl = DocxTemplate('tax_word_model_v2.docx')
context={} context={}
#其他传入参数 #其他传入参数
context['CreatTime']=Else_info['CreatTime'] context['CreatTime']=Else_info['CreatTime']
...@@ -137,19 +157,19 @@ def WriteReport(Else_info,Companyinfo,Fi_dict,Risk_info): ...@@ -137,19 +157,19 @@ def WriteReport(Else_info,Companyinfo,Fi_dict,Risk_info):
context["ARisk_desc"] = Risk_info["ARisk"]["describe"] context["ARisk_desc"] = Risk_info["ARisk"]["describe"]
context["describe_info"] = Risk_info["info"]["describe"] context["describe_info"] = Risk_info["info"]["describe"]
#细分风险项 #细分风险项
context["IT_YCSR_Risk_desc"] = str(Risk_info["Risk_IT_YCSR"]["describe"]).replace("['","").replace("']","").replace("'","") context['IT_YCSR_Risk_descs'] = in_Write_list(Risk_info["Risk_IT_YCSR"])
context["IT_XZFY_Risk_desc"] = str(Risk_info["Risk_IT_XZFY"]["describe"]).replace("['","").replace("']","").replace("'","") context["IT_XZFY_Risk_descs"] = in_Write_list(Risk_info["Risk_IT_XZFY"])
context["IT_XZCB_Risk_desc"] = str(Risk_info["Risk_IT_XZCB"]["describe"]).replace("['","").replace("']","").replace("'","") context["IT_XZCB_Risk_descs"] = in_Write_list(Risk_info["Risk_IT_XZCB"])
context["VAT_XKFP_Risk_desc"] = str(Risk_info["Risk_VAT_XKFP"]["describe"]).replace("['","").replace("']","").replace("'","") context["VAT_XKFP_Risk_descs"] = in_Write_list(Risk_info["Risk_VAT_XKFP"])
context["VAT_YCXX_Risk_desc"] = str(Risk_info["Risk_VAT_YCXX"]["describe"]).replace("['","").replace("']","").replace("'","") context["VAT_YCXX_Risk_descs"] = in_Write_list(Risk_info["Risk_VAT_YCXX"])
context["VAT_XZJX_Risk_desc"] = str(Risk_info["Risk_VAT_XZJX"]["describe"]).replace("['","").replace("']","").replace("'","") context["VAT_XZJX_Risk_descs"] = in_Write_list(Risk_info["Risk_VAT_XZJX"])
context["CT_FX_Risk_desc"] = str(Risk_info["Risk_CT_FX"]["describe"]).replace("['","").replace("']","").replace("'","") context["CT_FX_Risk_descs"] = in_Write_list(Risk_info["Risk_CT_FX"])
context["ALLT_FX_Risk_desc"] = str(Risk_info["Risk_ALLT_FX"]["describe"]).replace("['","").replace("']","").replace("'","") context["ALLT_FX_Risk_descs"] = in_Write_list(Risk_info["Risk_ALLT_FX"])
print("ddddddddddddddddddddddddddddddddddd"); print("ddddddddddddddddddddddddddddddddddd")
tpl.render(context) tpl.render(context)
addr = "/tmp/TaxRiskReport.docx" addr = "/tmp/TaxRiskReport.docx"
# addr = "G://TaxRiskReport26.docx" # addr = "G://TaxRiskReport32.docx"
print("ddddddddddddddddddddddddddddddddddd"); print("ddddddddddddddddddddddddddddddddddd")
tpl.save(addr) tpl.save(addr)
print(addr,"+++++++++") print(addr,"+++++++++")
return addr return addr
...@@ -204,7 +224,7 @@ def report(): ...@@ -204,7 +224,7 @@ def report():
# print(data) # print(data)
# print("ccccccccccccccccccccccccccccc") # print("ccccccccccccccccccccccccccccc")
# json_str = json.dumps(data) # json_str = json.dumps(data)
# print(json_str); # print(json_str)
GetAllinfo = json.loads(data) GetAllinfo = json.loads(data)
companyname=GetAllinfo["company_name"] #获取监测企业名称 companyname=GetAllinfo["company_name"] #获取监测企业名称
batchid=GetAllinfo["Task_Num"] #获取任务号 batchid=GetAllinfo["Task_Num"] #获取任务号
...@@ -218,7 +238,6 @@ def report(): ...@@ -218,7 +238,6 @@ def report():
report = WriteReport(Else_info,Companyinfo,Fi_dict,Risk_info) #将工商、财务、风险三部分内容写入word中 report = WriteReport(Else_info,Companyinfo,Fi_dict,Risk_info) #将工商、财务、风险三部分内容写入word中
except Exception as e: except Exception as e:
print(e) print(e)
rptUrl = put2oss(report) # 上传文件到oss上 rptUrl = put2oss(report) # 上传文件到oss上
print("报告已生成",rptUrl) print("报告已生成",rptUrl)
result=UpdateTaskRptUrl(batchid, rptUrl)# 完成后调用接口,通知服务已完成 result=UpdateTaskRptUrl(batchid, rptUrl)# 完成后调用接口,通知服务已完成
......
"1" "IT" "所得税" "Industry_Tax_Rate" "所得税行业预警税负率" "10" "行业内对比税负率偏低" "隐藏收入、虚增费用和成本"
"2" "IT" "所得税" "Sales_Change_Rate" "销售(营业)收入变动率" "5" "营业收入率偏低" "隐藏收入"
"3" "IT" "所得税" "Income_Rate" "收入利润率" "5" "收入利润率偏低" "隐藏收入"
"4" "IT" "所得税" "Cost_Greater_Sales" "销售成本大于销售收入" "5" "营业收入与营业成本对比异常" "隐藏收入、虚增成本"
"5" "IT" "所得税" "Current_Greater_Eighty" "当期新增其他应收款/销售收入>80%" "5" "其他应收款与销售收入对比异常" "隐藏收入"
"6" "IT" "所得税" "Ending_Greater_Paid_Abnormal" "期末存货大于实收资本差异幅度异常" "5" "存货与实收资本对比异常" "隐藏收入、虚增费用和成本"
"7" "IT" "所得税" "Cost_expense_margin" "成本费用利润率" "5" "成本费用利润率偏低" "隐藏收入、虚增费用和成本"
"8" "IT" "所得税" "Rate_Total_Change" "利润总额变动率" "5" "利润率偏低" "隐藏收入"
"9" "IT" "所得税" "Investment_Profit_Rate" "投资利润率" "3" "投资利润率偏低" "隐藏收入"
"10" "IT" "所得税" "Prepayments_Negative" "预付账款为负数" "3" "预付账款异常" "隐藏收入"
"11" "IT" "所得税" "Receivable_Negative" "应收账款为负数" "3" "应收账款异常" "隐藏收入"
"12" "IT" "所得税" "Payable_Negative" "应付账款为负数" "3" "应付账款异常" "隐藏收入"
"13" "IT" "所得税" "Total_Turnover_Assets" "总资产周转率" "2" "总资产率异常" "隐藏收入、虚增费用和成本"
"14" "IT" "所得税" "Prepayments_Abnormal" "预收账款过大异常" "2" "预收账款偏高" "隐藏收入"
"15" "IT" "所得税" "Asset_Profit" "资产利润率" "2" "资产利润率偏低" "隐藏收入"
"16" "IT" "所得税" "Expenditure_Income_Abnormal" "纳税人营业外支出变动率与营业外收入变动率弹性系数异常" "2" "营业外支出与与营业外收入对比异常" "隐藏收入"
"17" "IT" "所得税" "Floating_Income_Abnormal" "纳税人流动资产变动率与营业收入变动率弹性系数异常" "2" "流动资产与营业收入对比异常" "隐藏收入"
"18" "IT" "所得税" "Ending_Difference_Current" "纳税人期末存货与当期累计收入差异幅度异常" "2" "期末存货与当期累计收入对比异常" "隐藏收入、虚增成本"
"19" "IT" "所得税" "Inventory_Overtop_Warning" "账面存货率过高将会导致系统预警" "2" "存货率偏高" "隐藏收入、虚增成本"
"20" "IT" "所得税" "Income_Change_Rate" "收入负担变动率" "1" "税负率偏低" "隐藏收入、虚增费用和成本"
"21" "IT" "所得税" "Taxable_Rate_Change" "应税所得率变动率" "1" "应税所得率变动率偏低" "隐藏收入、虚增费用和成本"
"22" "IT" "所得税" "Taxable_Income_Change" "应纳税所得额变动率" "1" "应纳税所得额变动率偏低" "隐藏收入、虚增费用和成本"
"23" "IT" "所得税" "Industry_Warning_Rate" "行业预警利润率" "1" "行业利润率偏低" "隐藏收入、虚增费用和成本"
"24" "IT" "所得税" "Main_Income_Change" "主营业务收入变动率" "1" "主营业务收入率异常" "隐藏收入"
"25" "IT" "所得税" "Main_Cost_Change" "主营业务成本变动率" "1" "主营业务成本率异常" "隐藏收入、虚增费用和成本"
"26" "IT" "所得税" "Other_Profit_Change" "其他业务利润变动率" "1" "其他业务利润率偏低" "隐藏收入、虚增成本"
"27" "IT" "所得税" "Main_Profit_Change" "主营业务利润变动率" "1" "主营业务利润率偏低" "隐藏收入、虚增成本"
"28" "IT" "所得税" "Income_Profit_Abnormal" "纳税人主营业务收入变动率与主营业务利润变动率弹性系数异常" "1" "主营业务收入与主营业务利润对比异常" "隐藏收入、虚增成本"
"29" "IT" "所得税" "Income_Cost_Abnormal" "纳税人主营业务收入变动率与主营业务成本变动率弹性系数异常" "1" "主营业务收入与主营业务成本对比异常" "隐藏收入"
"30" "IT" "所得税" "Income_Cost_Rate" "收入成本率" "5" "收入成本率偏高" "虚增成本"
"31" "IT" "所得税" "Sales_Cost_Change" "产品销售(营业)成本变动率" "5" "营业成本率偏高" "虚增成本"
"32" "IT" "所得税" "Asset_Debt_Rate" "资产负债率" "2" "资产负债率异常" "虚增费用、成本"
"33" "IT" "所得税" "Taxpayer_Depreciation_Warning" "纳税人固定资产综合折旧率变动异常将会导致系统预警" "1" "固定资产折旧率偏高" "虚增成本"
"34" "IT" "所得税" "Taxpayer_Amortization _Abnormal" "纳税人无形资产综合摊销率变动异常" "1" "无形资产摊销偏高" "虚增成本"
"35" "IT" "所得税" "High_Loss_Enterprise" "高比例出口的亏损企业" "1" "亏损值偏高" "虚增费用、成本"
"36" "IT" "所得税" "Income_Expense_Rate" "收入费用率" "5" "收入费用率偏高" "虚增费用"
"37" "IT" "所得税" "Period_Expenses_Change" "期间费用变动率" "5" "期间费用率偏高" "虚增费用"
"38" "IT" "所得税" "Cost_Rate" "成本费用率" "2" "成本费用率偏高" "虚增费用"
"39" "IT" "所得税" "Expense_Change_Rate" "费用率变动率" "2" "费用率偏高" "虚增费用"
"40" "IT" "所得税" "Operating_Change_Rate" "营业(管理、财务)费用变动率" "1" "管理费财务费率偏高" "虚增费用"
"41" "IT" "所得税" "Taxpayer_Main_Abnormal" "纳税人期间费用变动率与主营业务收入变动率弹性系数异常" "1" "期间费用与主营业务收入对比异常" "虚增费用"
"42" "IT" "所得税" "Advertising_Business_Abnormal" "广告费和业务宣传费异常" "2" "广告费和业务宣传费超出标准" "超出税法规定标准"
"43" "IT" "所得税" "Entertainment_Expenses_Abnormal" "业务招待费异常" "2" "业务招待费超出标准" "超出税法规定标准"
"44" "VAT" "增值税" "Sales_Change_Rate " "销售额变动率" "5" "虚开发票嫌疑" "虚开发票、隐藏销项"
"45" "VAT" "增值税" "Sales_Profit_Rate" "销售毛利(益)率" "5" "虚开发票嫌疑" "虚开发票、虚增进项"
"46" "VAT" "增值税" "Tax_Burden_Change" "税收负担变动率" "5" "虚开发票嫌疑" "虚开发票、隐藏销项、虚增进项"
"47" "VAT" "增值税" "Tax_Burden_Rate" "税收负担率" "5" "虚开发票嫌疑" "虚开发票、隐藏销项、虚增进项"
"48" "VAT" "增值税" "Add_Special_Abnormal" "增值税专用发票用量变动异常" "3" "虚开专用发票嫌疑" "虚开发票"
"49" "VAT" "增值税" "Add_Taxpayer_Abnormal" "增值税一股纳税人税负变动异常" "3" "虚开发票嫌疑" "虚开发票、隐藏销项、虚增进项"
"50" "VAT" "增值税" "Add_Ordinary_Abnormal" "增值税普通发票用量变动异常" "2" "虚开普通发票嫌疑" "虚开发票"
"51" "VAT" "增值税" "Receipts_Payable_Change" "进项税额变动率∶应纳税额变动率" "2" "虚开发票嫌疑" "虚开发票、隐藏销项"
"52" "VAT" "增值税" "Inventory_Cost_Change" "存货变动率∶销售成本变动率" "5" "存货与销售成本对比异常" "隐藏销项"
"53" "VAT" "增值税" "Inventory_Income_Change" "存货变动率∶销售收入变动率" "5" "存货与销售收入对比异常" "隐藏销项"
"54" "VAT" "增值税" "Inventory_Money_Turnover" "存货周转率∶资金周转率" "5" "存货与资金周转对比异常" "隐藏销项"
"55" "VAT" "增值税" "Sales_Taxable_Abnormal" "纳税人销售额变动率与应纳税额变动率弹性系数异常" "3" "销售额变与应纳税额对比异常" "隐藏销项、虚增进项"
"56" "VAT" "增值税" "Receivable_Output_Change" "应收账款变动率∶销项税额变动率" "2" "销项税额对比应收账款异常" "隐藏销项"
"57" "VAT" "增值税" "Advance_Inventory_NoAllowance" "预收账款大于零且存货大于预收账款又无留抵" "2" "预收账款与进项税额与和存货对比异常" "隐藏销项"
"58" "VAT" "增值税" "Input_Higher_Sales" "进项税额变动率高于销售税额变动率" "2" "进项税额对比销项税额异常" "隐藏销项、虚增进项"
"59" "VAT" "增值税" "Construction_Increase" "在建工程增加额" "2" "在建工程值异常" "隐藏销项、虚增进项"
"60" "VAT" "增值税" "Long_Term_Analysis" "长期投资增加额分析" "2" "长期投资值异常" "隐藏销项、虚增进项"
"61" "VAT" "增值税" "Terminal_Sales_Abnormal" "企业期末预收账款变动率与销售收入变动率弹性系数异常" "2" "预收账款与营业收入对比异常" "隐藏销项、虚增进项"
"62" "VAT" "增值税" "Sales_Tax_Abnormal" "纳税人销售毛利率变动率与税负率变动率弹性系统异常" "1" "销售毛利与税负对比异常" "隐藏销项、虚增进项"
"63" "VAT" "增值税" "Payable_Input_Change" "应付账款变动率∶进项税额变动率" "2" "进项税额与应付账款对比异常" "虚增进项"
"64" "VAT" "增值税" "Taxable_Sales_Change" "应税销售额变动率" "2" "应税销售额与应纳税额对比异常" "虚增进项"
"65" "CT" "消费税" "Other_Payables_Change" "其他应付款变动额" "2" "其他应付值异常" "隐藏收入"
"66" "CT" "消费税" "Payables_Change" "应付帐款变动额" "2" "应付帐款值异常" "隐藏收入"
"67" "CT" "消费税" "Operating_Expenses_Change" "营业外支出变动额" "2" "营业外支值异常" "隐藏收入"
"68" "CT" "消费税" "Long_Investment_Change" "长期投资变动额" "2" "长期投资值异常" "隐藏收入"
"69" "ALLT" "综合" "Sales_Added_Difference" "消费税申报收入与增值税申报收入差异" "2" "消费税申报收入与增值税申报收入对比异常" "隐藏收入和销项、虚增成本和进项"
"70" "ALLT" "综合" "Income_Added_Difference" "所得税申报收入与增值税申报收入差异" "2" "所得税申报收入与增值税申报收入对比异常" "隐藏收入和销项、虚增成本和进项"
"71" "ALLT" "综合" "Long_Zero_Declaration" "长期零申报" "2" "6个月无申报异常" "隐藏收入和销项、虚增成本和进项"
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