Commit 87f1c181 by 宋毅

init

parent f805b696
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019/12/26 17:33
# @Author : fanhui
# @File : sql_tax_test.py
# @Software: PyCharm
import pymysql, os, sys, time, datetime
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(new_status):
# 读取指标文件,获取权重及描述信息
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": ""
}
dict_all[linesplit[4].replace('"', "")] = tax_index
print(dict_all)
# 获取传入的参数
new_status = new_status
for factors_name, value in dict_all.items():
dict_all[factors_name]["status"] = new_status[factors_name]
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 = t_r1
rules_1 = {"t_r1<='30%'": "企业风险异常同⽐其他企业⽐例较低",
"t_r1>'30%'": "企业风险异常同⽐其他企业⽐例明显偏高"
}
for k1, v1 in rules_1.items():
if eval(str(k1)):
RiskA = {t_r1: v1}
return RiskA
# 输入计算出的被检测风险值,判断被监测风险结果
def MonitoredRisk(t_r2):
MRisk = {}
t_r2 = t_r2
rules_2 = {"t_r2<='10%'": "企业被监控的风险同⽐其他企业⽐例较低",
"t_r2>'10%' and t_r2<='50%'": "经检测,企业有⼀定可能性被选为税务监控对象",
"t_r2>'50%'": "经检测,企业有很⼤可能性被选为税务监控对象"
}
for k2, v2 in rules_2.items():
if eval(str(k2)):
MRisk = {t_r2: v2}
return MRisk
# 输入计算出的被稽查风险值,判断被稽查风险结果
def AuditedRisk(t_r3):
ARisk = {}
t_r3 = t_r3
rules_3 = {"t_r3<='10%'": "企业被税务稽查的可能性较低",
"t_r3>'10%' and t_r3<='30%'": "企业有⼀定可能性被税务稽查",
"t_r3>'30%'": "企业有很⼤可能性被税务稽查"
}
for k3, v3 in rules_3.items():
if eval(str(k3)):
ARisk = {t_r3: v3}
return ARisk
# 输入总体计算的风险异常比例,得到提示语(也可与RiskAbnormal函数合并)
def information(t_r1):
info = {}
t_r1 = t_r1
rules_0 = {"t_r1<='30%'": "贵企业的风险异常情况同比其它企业较少,如需更多更详细的诊断服务,请联系我们>>",
"t_r1>'30%' and t_r1<='60%'": "企业的风险异常情况同比其它企业明显偏多,有较⼤可能性成为税务系统监控的对象,请企业的财税⼈员参考以下详细检测情况进行自查,如需要进行更详细的诊断服务请联系我们>>",
"t_r1>'60%' and t_r1<='80%'": "如果税务局选择企业所在行业进行行业稽查,该企业有⼀定可能性成为被选案例,请财税⼈员尽快参照以下比例进行自查。如需要进行更详细的诊断服务请联系我们>>",
"t_r1>'80%'": "如果税务局选择企业所在行业进行行业稽查,该企业有很⼤可能性成为被选案例,请财税⼈员尽快参照以下比例进行自查。如需要进行更详细的诊断服务请联系我们>>"
}
for k0, v0 in rules_0.items():
if eval(str(k0)):
info = {t_r1: 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 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)
print(part_s1_str_dict,type(part_s1_str_dict))
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) # 按照权重排序
# print(part_s1_str_dict)
p1_describe = [] # 获取风险权重前三提示
for pt in part_s1_str_dict:
p1_describe.append(pt[1])
if len(p1_describe) > 3:
p1_describe = p1_describe[:3]
# 风险类别获取
print(B_count,"--------------------------")
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])
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])
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])
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])
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])
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])
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])
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
# 风险监测信息接口
@server.route('/gsb/api/report', methods=['POST'])
def report():
if request.method =='POST':
data = request.json
json_str = json.dumps(data)
new_status = json.loads(json_str)
dict_all, ALLRisk = CreatBdictFromJson(new_status)
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) #综合风险信息
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(result,"------------------------------")
return result
server.run(host='121.0.0.1', port=80, debug=True)
"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