Commit cfffb64a by 宋毅

fanhui_third

parent eefcb9ed
...@@ -32,12 +32,12 @@ def CreatBdictFromJson(new_status): ...@@ -32,12 +32,12 @@ def CreatBdictFromJson(new_status):
"status": "" "status": ""
} }
dict_all[linesplit[4].replace('"', "")] = tax_index dict_all[linesplit[4].replace('"', "")] = tax_index
print(dict_all) # print(dict_all)
# 获取传入的参数 # 获取传入的参数
new_status = new_status new_status = new_status
for factors_name, value in dict_all.items(): for factors_name, value in dict_all.items():
dict_all[factors_name]["status"] = new_status[factors_name] dict_all[factors_name]["status"] = new_status[factors_name]
print(dict_all) # print(dict_all)
# 计算总体风险异常比例、以及被监控风险比例和被稽查风险比例 # 计算总体风险异常比例、以及被监控风险比例和被稽查风险比例
qualified = [] # 合格 qualified = [] # 合格
...@@ -66,16 +66,16 @@ def CreatBdictFromJson(new_status): ...@@ -66,16 +66,16 @@ def CreatBdictFromJson(new_status):
for k1, v1 in rules.items(): for k1, v1 in rules.items():
if k1: if k1:
ALLRisk = v1 ALLRisk = v1
print(ALLRisk) print(ALLRisk,"+++++++++++++")
return dict_all, ALLRisk return dict_all, ALLRisk
# 输入计算出的风险异常比例,返回提示结果 # 输入计算出的风险异常比例,返回提示结果
def RiskAbnormal(t_r1): def RiskAbnormal(t_r1):
RiskA = {} RiskA = {}
t_r1 = t_r1 t_r1_s = str(int(t_r1.replace("%", "")) / 100)
rules_1 = {"t_r1<='30%'": "企业风险异常同比其他企业比例较低", rules_1 = {"t_r1_s<='0.3'": "企业风险异常同比其他企业比例较低",
"t_r1>'30%'": "企业风险异常同比其他企业比例明显偏高" "t_r1_s>'0.3'": "企业风险异常同比其他企业比例明显偏高"
} }
for k1, v1 in rules_1.items(): for k1, v1 in rules_1.items():
if eval(str(k1)): if eval(str(k1)):
...@@ -85,23 +85,23 @@ def RiskAbnormal(t_r1): ...@@ -85,23 +85,23 @@ def RiskAbnormal(t_r1):
# 输入计算出的被检测风险值,判断被监测风险结果 # 输入计算出的被检测风险值,判断被监测风险结果
def MonitoredRisk(t_r2): def MonitoredRisk(t_r2):
MRisk = {} MRisk = {}
t_r2 = t_r2 t_r2_s = str(int(t_r2.replace("%", "")) / 100)
rules_2 = {"t_r2<='10%'": "企业被监控的风险同比其他企业比例较低", rules_2 = {"t_r2_s<='0.1'": "企业被监控的风险同比其他企业比例较低",
"t_r2>'10%' and t_r2<='50%'": "经检测,企业有一定可能性被选为税务监控对象", "t_r2_s>'0.1' and t_r2_s<='0.5'": "经检测,企业有一定可能性被选为税务监控对象",
"t_r2>'50%'": "经检测,企业有很大可能性被选为税务监控对象" "t_r2_s>'0.5'": "经检测,企业有很大可能性被选为税务监控对象"
} }
for k2, v2 in rules_2.items(): for k2, v2 in rules_2.items():
if eval(str(k2)): if eval(str(k2)):
MRisk = {"score":t_r2,"describe":v2} MRisk = {"score": t_r2, "describe": v2}
return MRisk return MRisk
# 输入计算出的被稽查风险值,判断被稽查风险结果 # 输入计算出的被稽查风险值,判断被稽查风险结果
def AuditedRisk(t_r3): def AuditedRisk(t_r3):
ARisk = {} ARisk = {}
t_r3 = t_r3 t_r3_s = str(int(t_r3.replace("%", "")) / 100)
rules_3 = {"t_r3<='10%'": "企业被税务稽查的可能性较低", rules_3 = {"t_r3_s<='0.1'": "企业被税务稽查的可能性较低",
"t_r3>'10%' and t_r3<='30%'": "企业有一定可能性被税务稽查", "t_r3_s>'0.1' and t_r3_s<='0.3'": "企业有一定可能性被税务稽查",
"t_r3>'30%'": "企业有很大可能性被税务稽查" "t_r3_s>'0.3'": "企业有很大可能性被税务稽查"
} }
for k3, v3 in rules_3.items(): for k3, v3 in rules_3.items():
if eval(str(k3)): if eval(str(k3)):
...@@ -111,15 +111,15 @@ def AuditedRisk(t_r3): ...@@ -111,15 +111,15 @@ def AuditedRisk(t_r3):
# 输入总体计算的风险异常比例,得到提示语(也可与RiskAbnormal函数合并) # 输入总体计算的风险异常比例,得到提示语(也可与RiskAbnormal函数合并)
def information(t_r1): def information(t_r1):
info = {} info = {}
t_r1 = t_r1 t_r1_s = str(int(t_r1.replace("%", "")) / 100)
rules_0 = {"t_r1<='30%'": "贵企业的风险异常情况同比其他企业较少,如需更多更详细的诊断服务,请联系我们>>", rules_0 = {"t_r1_s<='0.3'": "贵企业的风险异常情况同比其他企业较少,如需更多更详细的诊断服务,请联系我们>>",
"t_r1>'30%' and t_r1<='60%'": "企业的风险异常情况同比其他企业明显偏多,有较大可能性成为税务系统监控的对象,请企业的财税人员参考以下详细检测情况进行自查,如需进行更详细的诊断服务请联系我们>>", "t_r1_s>'0.3' and t_r1_s<='0.6'": "企业的风险异常情况同比其他企业明显偏多,有较大可能性成为税务系统监控的对象,请企业的财税人员参考以下详细检测情况进行自查,如需进行更详细的诊断服务请联系我们>>",
"t_r1>'60%' and t_r1<='80%'": "如果税务局选择企业所在行业进行行业稽查,该企业有一定可能性成为被选案例,请财税人员尽快参照以下比例进行自查,如需进行更详细的诊断服务请联系我们>>", "t_r1_s>'0.6' and t_r1_s<='0.8'": "如果税务局选择企业所在行业进行行业稽查,该企业有一定可能性成为被选案例,请财税人员尽快参照以下比例进行自查,如需进行更详细的诊断服务请联系我们>>",
"t_r1>'80%'": "如果税务局选择企业所在行业进行行业稽查,该企业有很大可能性成为被选案例,请财税人员尽快参照以下比例进行自查,如需进行更详细的诊断服务请联系我们>>" "t_r1_s>'0.8'": "如果税务局选择企业所在行业进行行业稽查,该企业有很大可能性成为被选案例,请财税人员尽快参照以下比例进行自查,如需进行更详细的诊断服务请联系我们>>"
} }
for k0, v0 in rules_0.items(): for k0, v0 in rules_0.items():
if eval(str(k0)): if eval(str(k0)):
info = {{"score":t_r1,"describe":v0}} info = {"score":t_r1,"describe":v0}
return info return info
...@@ -263,6 +263,15 @@ def RiskCompareRule(wx_part): ...@@ -263,6 +263,15 @@ def RiskCompareRule(wx_part):
else: else:
risk_describe = "数据缺失" risk_describe = "数据缺失"
return 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
# 计算所得税隐藏收入风险异常(对所属指标不合格降序排列,展示前三的风险描述信息,计算不合格总和及风险比例) # 计算所得税隐藏收入风险异常(对所属指标不合格降序排列,展示前三的风险描述信息,计算不合格总和及风险比例)
...@@ -290,20 +299,18 @@ def IT_YCSR_Risk(dict_all): ...@@ -290,20 +299,18 @@ def IT_YCSR_Risk(dict_all):
if s_status1 == 2: if s_status1 == 2:
part_s1_str_dict[s_s1] = s_str part_s1_str_dict[s_s1] = s_str
dissatisfied.append(s_s1) dissatisfied.append(s_s1)
print(part_s1_str_dict,type(part_s1_str_dict))
A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母) A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母)
B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子) B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子)
risk_IT_YCSR = float("%.2f" % (B_count / A_count)) # 计算风险异常比例 risk_IT_YCSR = float("%.2f" % (B_count / A_count)) # 计算风险异常比例
Risk_IT_YCSR_score = str(int(risk_IT_YCSR * 100)) + "%" # 格式转化 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) # 按照权重排序 part_s1_str_dict = sorted(part_s1_str_dict.items(), key=lambda x: x[0], reverse=True) # 按照权重排序
# print(part_s1_str_dict)
p1_describe = [] # 获取风险权重前三提示 p1_describe = [] # 获取风险权重前三提示
for pt in part_s1_str_dict: for pt in part_s1_str_dict:
p1_describe.append(pt[1]) p1_describe.append(pt[1])
p1_describe = getUniqueItems(p1_describe) #风险描述去重
if len(p1_describe) > 3: if len(p1_describe) > 3:
p1_describe = p1_describe[:3] p1_describe = p1_describe[:3]
# 风险类别获取 # 风险类别获取
print(B_count,"--------------------------")
risk_describe = RiskCompareRule(B_count) risk_describe = RiskCompareRule(B_count)
else: else:
Risk_IT_YCSR_score="0%" Risk_IT_YCSR_score="0%"
...@@ -340,7 +347,7 @@ def IT_XZFY_Risk(dict_all): ...@@ -340,7 +347,7 @@ def IT_XZFY_Risk(dict_all):
if s_status2 == 1: if s_status2 == 1:
satisfied.append(s_s2) satisfied.append(s_s2)
if s_status2 == 2: if s_status2 == 2:
part_s2_str_dict[s_s2] = [s_str2] part_s2_str_dict[s_s2] = s_str2
dissatisfied.append(s_s2) dissatisfied.append(s_s2)
A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母) A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母)
B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子) B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子)
...@@ -350,6 +357,7 @@ def IT_XZFY_Risk(dict_all): ...@@ -350,6 +357,7 @@ def IT_XZFY_Risk(dict_all):
p2_describe = [] # 获取风险权重前三提示 p2_describe = [] # 获取风险权重前三提示
for pt in part_s2_str_dict: for pt in part_s2_str_dict:
p2_describe.append(pt[1]) p2_describe.append(pt[1])
p2_describe = getUniqueItems(p2_describe)
if len(p2_describe) > 3: if len(p2_describe) > 3:
p2_describe = p2_describe[:3] p2_describe = p2_describe[:3]
# 风险类别获取 # 风险类别获取
...@@ -388,7 +396,7 @@ def IT_XZCB_Risk(dict_all): ...@@ -388,7 +396,7 @@ def IT_XZCB_Risk(dict_all):
if s_status1 == 1: if s_status1 == 1:
satisfied.append(s_s1) satisfied.append(s_s1)
if s_status1 == 2: if s_status1 == 2:
part_s1_str_dict[s_s1] = [s_str] part_s1_str_dict[s_s1] = s_str
dissatisfied.append(s_s1) dissatisfied.append(s_s1)
A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母) A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母)
B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子) B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子)
...@@ -398,6 +406,7 @@ def IT_XZCB_Risk(dict_all): ...@@ -398,6 +406,7 @@ def IT_XZCB_Risk(dict_all):
p1_describe = [] # 获取风险权重前三提示 p1_describe = [] # 获取风险权重前三提示
for pt in part_s1_str_dict: for pt in part_s1_str_dict:
p1_describe.append(pt[1]) p1_describe.append(pt[1])
p1_describe = getUniqueItems(p1_describe)
if len(p1_describe) > 3: if len(p1_describe) > 3:
p1_describe = p1_describe[:3] p1_describe = p1_describe[:3]
# 风险类别获取 # 风险类别获取
...@@ -437,7 +446,7 @@ def VAT_XKFP_Risk(dict_all): ...@@ -437,7 +446,7 @@ def VAT_XKFP_Risk(dict_all):
if s_status1 == 1: if s_status1 == 1:
satisfied.append(s_s1) satisfied.append(s_s1)
if s_status1 == 2: if s_status1 == 2:
part_s1_str_dict[s_s1] = [s_str] part_s1_str_dict[s_s1] = s_str
dissatisfied.append(s_s1) dissatisfied.append(s_s1)
A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母) A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母)
B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子) B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子)
...@@ -447,6 +456,7 @@ def VAT_XKFP_Risk(dict_all): ...@@ -447,6 +456,7 @@ def VAT_XKFP_Risk(dict_all):
p1_describe = [] # 获取风险权重前三提示 p1_describe = [] # 获取风险权重前三提示
for pt in part_s1_str_dict: for pt in part_s1_str_dict:
p1_describe.append(pt[1]) p1_describe.append(pt[1])
p1_describe = getUniqueItems(p1_describe)
if len(p1_describe) > 3: if len(p1_describe) > 3:
p1_describe = p1_describe[:3] p1_describe = p1_describe[:3]
# 风险类别获取 # 风险类别获取
...@@ -486,7 +496,7 @@ def VAT_XZJX_Risk(dict_all): ...@@ -486,7 +496,7 @@ def VAT_XZJX_Risk(dict_all):
if s_status1 == 1: if s_status1 == 1:
satisfied.append(s_s1) satisfied.append(s_s1)
if s_status1 == 2: if s_status1 == 2:
part_s1_str_dict[s_s1] = [s_str] part_s1_str_dict[s_s1] = s_str
dissatisfied.append(s_s1) dissatisfied.append(s_s1)
A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母) A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母)
B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子) B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子)
...@@ -496,6 +506,7 @@ def VAT_XZJX_Risk(dict_all): ...@@ -496,6 +506,7 @@ def VAT_XZJX_Risk(dict_all):
p1_describe = [] # 获取风险权重前三提示 p1_describe = [] # 获取风险权重前三提示
for pt in part_s1_str_dict: for pt in part_s1_str_dict:
p1_describe.append(pt[1]) p1_describe.append(pt[1])
p1_describe = getUniqueItems(p1_describe)
if len(p1_describe) > 3: if len(p1_describe) > 3:
p1_describe = p1_describe[:3] p1_describe = p1_describe[:3]
# 风险类别获取 # 风险类别获取
...@@ -535,7 +546,7 @@ def VAT_YCXX_Risk(dict_all): ...@@ -535,7 +546,7 @@ def VAT_YCXX_Risk(dict_all):
if s_status1 == 1: if s_status1 == 1:
satisfied.append(s_s1) satisfied.append(s_s1)
if s_status1 == 2: if s_status1 == 2:
part_s1_str_dict[s_s1] = [s_str] part_s1_str_dict[s_s1] = s_str
dissatisfied.append(s_s1) dissatisfied.append(s_s1)
A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母) A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母)
B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子) B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子)
...@@ -545,6 +556,7 @@ def VAT_YCXX_Risk(dict_all): ...@@ -545,6 +556,7 @@ def VAT_YCXX_Risk(dict_all):
p1_describe = [] # 获取风险权重前三提示 p1_describe = [] # 获取风险权重前三提示
for pt in part_s1_str_dict: for pt in part_s1_str_dict:
p1_describe.append(pt[1]) p1_describe.append(pt[1])
p1_describe = getUniqueItems(p1_describe)
if len(p1_describe) > 3: if len(p1_describe) > 3:
p1_describe = p1_describe[:3] p1_describe = p1_describe[:3]
# 风险类别获取 # 风险类别获取
...@@ -583,7 +595,7 @@ def CT_FX_Risk(dict_all): ...@@ -583,7 +595,7 @@ def CT_FX_Risk(dict_all):
if s_status1 == 1: if s_status1 == 1:
satisfied.append(s_s1) satisfied.append(s_s1)
if s_status1 == 2: if s_status1 == 2:
part_s1_str_dict[s_s1] = [s_str] part_s1_str_dict[s_s1] = s_str
dissatisfied.append(s_s1) dissatisfied.append(s_s1)
A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母) A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母)
B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子) B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子)
...@@ -593,6 +605,7 @@ def CT_FX_Risk(dict_all): ...@@ -593,6 +605,7 @@ def CT_FX_Risk(dict_all):
p1_describe = [] # 获取风险权重前三提示 p1_describe = [] # 获取风险权重前三提示
for pt in part_s1_str_dict: for pt in part_s1_str_dict:
p1_describe.append(pt[1]) p1_describe.append(pt[1])
p1_describe = getUniqueItems(p1_describe)
if len(p1_describe) > 3: if len(p1_describe) > 3:
p1_describe = p1_describe[:3] p1_describe = p1_describe[:3]
# 风险类别获取 # 风险类别获取
...@@ -631,16 +644,18 @@ def ALLT_FX_Risk(dict_all): ...@@ -631,16 +644,18 @@ def ALLT_FX_Risk(dict_all):
if s_status1 == 1: if s_status1 == 1:
satisfied.append(s_s1) satisfied.append(s_s1)
if s_status1 == 2: if s_status1 == 2:
part_s1_str_dict[s_s1] = [s_str] part_s1_str_dict[s_s1] = s_str
dissatisfied.append(s_s1) dissatisfied.append(s_s1)
A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母) A_count = sum(satisfied) + sum(dissatisfied) # 计算合格与不合格对应指标权重之和(分母)
B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子) B_count = sum(dissatisfied) # 计算不合格对应指标权重之和(分子)
risk_ALLT_FX = float("%.2f" % (B_count / A_count)) # 计算风险异常比例 risk_ALLT_FX = float("%.2f" % (B_count / A_count)) # 计算风险异常比例
Risk_ALLT_FX_score = str(int(risk_ALLT_FX * 100)) + "%" # 格式转化 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) # 按照权重排序 part_s1_str_dict = sorted(part_s1_str_dict.items(), key=lambda x: x[0], reverse=True) # 按照权重排序
p1_describe = [] # 获取风险权重前三提示 p1_describe = [] # 获取风险权重前三提示
for pt in part_s1_str_dict: for pt in part_s1_str_dict:
p1_describe.append(pt[1]) p1_describe.append(pt[1])
p1_describe = getUniqueItems(p1_describe)
if len(p1_describe) > 3: if len(p1_describe) > 3:
p1_describe = p1_describe[:3] p1_describe = p1_describe[:3]
# 风险类别获取 # 风险类别获取
...@@ -696,6 +711,6 @@ def report(): ...@@ -696,6 +711,6 @@ def report():
print(result,"------------------------------") print(result,"------------------------------")
return jsonify(result) return jsonify(result)
server.run(host='121.0.0.1', port=80, debug=True)
server.run(host='121.0.0.1', port=80, debug=True)
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