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 @@
from getcompanyinfofromES import GetComanyinfoFromES
from GetFIinfoFromJson import GetFIinfoFromJson
from GetRiskinfoFromJson import Riskinfo
from GetRiskinfo import Riskinfo
import time,requests,oss2,sys,os,json
from flask import Flask ,request
from docxtpl import DocxTemplate,InlineImage
......@@ -45,10 +45,30 @@ def charts(datalist, charttype, pngpath):
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.docx')
tpl = DocxTemplate('tax_word_model_v2.docx')
context={}
#其他传入参数
context['CreatTime']=Else_info['CreatTime']
......@@ -137,19 +157,19 @@ def WriteReport(Else_info,Companyinfo,Fi_dict,Risk_info):
context["ARisk_desc"] = Risk_info["ARisk"]["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_XZFY_Risk_desc"] = str(Risk_info["Risk_IT_XZFY"]["describe"]).replace("['","").replace("']","").replace("'","")
context["IT_XZCB_Risk_desc"] = str(Risk_info["Risk_IT_XZCB"]["describe"]).replace("['","").replace("']","").replace("'","")
context["VAT_XKFP_Risk_desc"] = str(Risk_info["Risk_VAT_XKFP"]["describe"]).replace("['","").replace("']","").replace("'","")
context["VAT_YCXX_Risk_desc"] = str(Risk_info["Risk_VAT_YCXX"]["describe"]).replace("['","").replace("']","").replace("'","")
context["VAT_XZJX_Risk_desc"] = str(Risk_info["Risk_VAT_XZJX"]["describe"]).replace("['","").replace("']","").replace("'","")
context["CT_FX_Risk_desc"] = str(Risk_info["Risk_CT_FX"]["describe"]).replace("['","").replace("']","").replace("'","")
context["ALLT_FX_Risk_desc"] = str(Risk_info["Risk_ALLT_FX"]["describe"]).replace("['","").replace("']","").replace("'","")
print("ddddddddddddddddddddddddddddddddddd");
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://TaxRiskReport26.docx"
print("ddddddddddddddddddddddddddddddddddd");
# addr = "G://TaxRiskReport32.docx"
print("ddddddddddddddddddddddddddddddddddd")
tpl.save(addr)
print(addr,"+++++++++")
return addr
......@@ -204,7 +224,7 @@ def report():
# print(data)
# print("ccccccccccccccccccccccccccccc")
# json_str = json.dumps(data)
# print(json_str);
# print(json_str)
GetAllinfo = json.loads(data)
companyname=GetAllinfo["company_name"] #获取监测企业名称
batchid=GetAllinfo["Task_Num"] #获取任务号
......@@ -218,7 +238,6 @@ def report():
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)# 完成后调用接口,通知服务已完成
......@@ -227,4 +246,4 @@ def report():
return "请输入检测公司名称"
server.run(host='0.0.0.0', port=80, debug=False)
server.run(host='0.0.0.0', port=80, debug=False)
\ No newline at end of file
"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