Commit b3b578e5 authored by Perry_Zhu's avatar Perry_Zhu

Merge remote-tracking branch 'origin/master'

parents 3e621c60 cd1e68d5
......@@ -17,7 +17,7 @@ pd.options.mode.chained_assignment = None
还款表中体现这部分退款,这部分退款处理金额为正,数据库中为负。
'''
max_limit = 800000
file_path = u'E:/审计出表/人工控制/去哪儿-放款表/'
file_path = u'E:/量化派/去哪儿/人工控制/还款表-按照放款时间/'
file_name = u'去哪儿还款表-放款时间-%s-%s.xlsx'
engine_qunaer = create_engine('mysql+mysqldb://internal_r:ArbNgtvlJzZHXsEu@172.16.3.201:3306/qunaer_new?charset=utf8',
echo=False).connect()
......@@ -85,13 +85,13 @@ def hk_detail(year, month):
FROM
qunaer_new.repay_detail t1
JOIN qunaer_new.fund_corp fc on fc.fund_code = t1.fund_code
JOIN qunaer_new.fund_pay_detail pay on t1.product_no = pay.product_no AND t1.fund_code = pay.fund_code
JOIN fund_repayment_plan plan on plan.product_no = t1.product_no AND plan.current_stage_no = t1.current_stage_no AND t1.fund_code=plan.fund_code
JOIN qunaer_new.pay_detail pay on t1.product_no = pay.product_no
JOIN fund_repayment_plan plan on plan.product_no = t1.product_no AND plan.current_stage_no = t1.current_stage_no
LEFT JOIN bank_flow bf on bf.flow_id = t1.flow_id
WHERE
pay.trans_time >= '%s'
AND pay.trans_time < '%s'
AND t1. repay_status = 1 AND pay.status=1
AND t1. repay_status = 1 AND pay.status=1 and t1.fund_code != 1
''' % (start_time, end_time)
# 债转后保理的--
......@@ -119,12 +119,12 @@ def hk_detail(year, month):
qunaer_new.repay_detail t1
JOIN qunaer_new.fund_corp fc on fc.fund_code = t1.fund_code
JOIN qunaer_new.baoli_pay_detail pay on t1.product_no = pay.product_no AND t1.fund_code = pay.fund_code
JOIN baoli_repayment_plan plan on plan.product_no = t1.product_no AND plan.user_current_stage_no = t1.current_stage_no AND t1.fund_code=plan.fund_code
JOIN repayment_plan_2017 plan on plan.product_no = t1.product_no AND plan.current_stage_no = t1.current_stage_no
left JOIN bank_flow bf on bf.flow_id = t1.flow_id
WHERE
pay.trans_time >= '%s'
AND pay.trans_time < '%s'
AND t1. repay_status = 1 AND pay.status=1;
AND t1. repay_status = 1 AND pay.status=1 and t1.fund_code =1
''' % (start_time, end_time)
# 退款退到还款账户
sql_refund = '''
......@@ -187,7 +187,7 @@ if __name__ == '__main__':
# 还款明细
years = [2017]
months = range(8,10,1)
months = range(10,11,1)
for year, month in product(years, months):
print('-----%s--%s') % (year, month)
hk_detail(year,month)
......
......@@ -16,14 +16,14 @@ pd.options.mode.chained_assignment = None
还款表中体现这部分退款,这部分退款处理金额为正,数据库中为负。
'''
file_path = u'E:/审计出表/人工控制/去哪儿-放款表/'
file_path = u'E:/量化派/去哪儿/人工控制/还款表-按照实还时间/'
file_name = u'去哪儿还款表-实还时间-%s-%s.xlsx'
engine_qunaer = create_engine('mysql+mysqldb://internal_r:ArbNgtvlJzZHXsEu@172.16.3.201:3306/qunaer_new?charset=utf8',
echo=False).connect()
def hk_detail(year, month, user_16_plan='repayment_plan_2016', user_17_plan='repayment_plan_2017',
fund_plan='fund_repayment_plan', baoli_plan='baoli_repayment_plan'):
fund_plan='fund_repayment_plan', baoli_plan='repayment_plan_2017'):
start_time = datetime.datetime(year, month, 1, 0, 0, 0)
end_time = start_time + relativedelta(months=+1)
# 实还表====内保的plan_16
......@@ -111,13 +111,13 @@ def hk_detail(year, month, user_16_plan='repayment_plan_2016', user_17_plan='rep
FROM
qunaer_new.repay_detail t1
JOIN qunaer_new.fund_corp fc on fc.fund_code = t1.fund_code
JOIN qunaer_new.fund_pay_detail pay on t1.product_no = pay.product_no AND t1.fund_code = pay.fund_code
JOIN %s plan on plan.product_no = t1.product_no AND plan.current_stage_no = t1.current_stage_no
JOIN qunaer_new.pay_detail pay on t1.product_no = pay.product_no
JOIN %s plan on plan.product_no = t1.product_no AND plan.current_stage_no = t1.current_stage_no
left JOIN bank_flow bf on bf.flow_id = t1.flow_id
WHERE
t1.repay_time >= '%s'
AND t1.repay_time < '%s'
AND t1. repay_status = 1 AND pay.status=1;
AND t1. repay_status = 1 AND pay.status=1 AND t1.fund_code != 1
''' % (fund_plan, start_time, end_time)
# 债转后保理的--
......@@ -142,13 +142,13 @@ def hk_detail(year, month, user_16_plan='repayment_plan_2016', user_17_plan='rep
FROM
qunaer_new.repay_detail t1
JOIN qunaer_new.fund_corp fc on fc.fund_code = t1.fund_code
JOIN qunaer_new.baoli_pay_detail pay on t1.product_no = pay.product_no AND t1.fund_code = pay.fund_code
JOIN %s plan on plan.product_no = t1.product_no AND plan.user_current_stage_no = t1.current_stage_no
JOIN qunaer_new.baoli_pay_detail pay on t1.product_no = pay.product_no
JOIN %s plan on plan.product_no = t1.product_no AND plan.current_stage_no = t1.current_stage_no
left JOIN bank_flow bf on bf.flow_id = t1.flow_id
WHERE
t1.repay_time >= '%s'
AND t1.repay_time < '%s'
AND t1. repay_status = 1 AND pay.status=1;
AND t1. repay_status = 1 AND pay.status=1 AND t1.fund_code=1
''' % (baoli_plan, start_time, end_time)
# 退款退到还款账户
sql_refund = '''
......@@ -167,10 +167,54 @@ def hk_detail(year, month, user_16_plan='repayment_plan_2016', user_17_plan='rep
JOIN fund_corp t2 ON t2.fund_code = t1.fund_code
JOIN pay_detail t3 on t1.product_no = t3.product_no and t3.status !=0
left JOIN bank_flow bf on bf.flow_id = t1.flow_id
WHERE t1.refund_time >= '%s' and t1.refund_time < '%s' and (t1.flow_id is not NULL or t1.refund_time > '2017-09-01')
WHERE t1.refund_time >= '%s' and t1.refund_time < '%s' and t1.flow_id is not NULL
''' % (start_time, end_time)
#=== 失败订单的退还款
# ===放款失败的还款和退款
sql_refund_pay_fail = '''
SELECT
t2.fund_name as '资金方',
t1.product_no '产品编号',
'去那儿' as '收款账户',
date(t1.refund_time) '还款时间',
-t1.refund_amount as '还款金额',
-t1.refund_principle as '还款本金',
-t1.refund_due_amount as '还款逾期费',
-t1.refund_fee_amount as '还服务费',
t1.flow_id '流水号'
FROM
qunaer_new.refund_detail t1
JOIN fund_corp t2 ON t2.fund_code = t1.fund_code
JOIN pay_detail t3 on t1.product_no = t3.product_no and t3.status = 0
WHERE t1.refund_time >= '%s' and t1.refund_time < '%s' and t1.flow_id is not NULL and t1.refund_status=1
''' % (start_time, end_time)
sql_repay_pay_fail = '''
SELECT
t2.fund_name as '资金方',
t1.product_no '产品编号',
'去那儿' as '收款账户',
date(t1.repay_time) '还款时间',
t1.repay_amount as '还款金额',
t1.repay_principle as '还款本金',
t1.repay_due_amount as '还款逾期费',
t1.repay_fee_amount as '还服务费',
t1.flow_id '流水号'
FROM
qunaer_new.repay_detail t1
JOIN fund_corp t2 ON t2.fund_code = t1.fund_code
JOIN pay_detail t3 on t1.product_no = t3.product_no and t3.status = 0
WHERE t1.repay_time >= '%s' and t1.repay_time < '%s' and t1.flow_id is not NULL and t1.repay_status=1
''' % (start_time, end_time)
# 退款
df_refund = pd.read_sql(sql_refund, engine_qunaer)
#==放款失败订单的还款
df_repay_pay_fail=pd.read_sql(sql_repay_pay_fail,engine_qunaer)
df_refund_pay_fail=pd.read_sql(sql_refund_pay_fail,engine_qunaer)
df_pay_fail=pd.concat([df_repay_pay_fail,df_refund_pay_fail],ignore_index=True)
# 还款计划合并
df_repay_plan_2016 = pd.read_sql(sql_repay_plan_2016, engine_qunaer)
df_repay_plan_2017 = pd.read_sql(sql_repay_plan_2017, engine_qunaer)
......@@ -180,6 +224,7 @@ def hk_detail(year, month, user_16_plan='repayment_plan_2016', user_17_plan='rep
df_repay.fillna(0, inplace=True)
writer = pd.ExcelWriter(file_path + file_name % (year, month))
df_refund.to_excel(writer, sheet_name=u'退款到还款账户的表', index=None, encoding='UTF-8')
df_pay_fail.to_excel(writer,sheet_name=u'放款失败退还款的表',index=None, encoding='UTF-8')
#应还本金重复的
df_repay.loc[df_repay[[u'资金方',u'产品编号',u'当期期数']].duplicated(),u'应还本金']=0
df_repay[u'应还本息-实还本息']=np.round(df_repay[u'应还本金']-df_repay[u'实还本金'],2)
......@@ -194,13 +239,16 @@ if __name__ == '__main__':
# 还款明细
years = [2017]
months = [9]
months = [10]
for year, month in product(years, months):
print('-----%s--%s') % (year, month)
if month == 8:
hk_detail(year, month,user_16_plan='repayment_plan_2016_201708',
user_17_plan='repayment_plan_201708',fund_plan='fund_repayment_plan_201708',
baoli_plan='baoli_repayment_plan_201708')
elif month == 9:
hk_detail(year,month)
# if month == 8:
# hk_detail(year, month,user_16_plan='repayment_plan_2016',
# user_17_plan='repayment_plan_2017',fund_plan='fund_repayment_plan',
# baoli_plan='repayment_plan_2017')
# else:
# hk_detail(year,month)
hk_detail(year, month, user_16_plan='repayment_plan_2016',
user_17_plan='repayment_plan_2017', fund_plan='fund_repayment_plan',
baoli_plan='repayment_plan_2017')
print '-----------------------main done---------------------------------------'
......@@ -13,26 +13,22 @@ reload(sys)
sys.setdefaultencoding("utf-8")
pd.options.mode.chained_assignment = None
max_limit = 800000
#
# 表名称:
# 白条-去哪儿-核算-放款表:分多种类型,转让保理后的放款表,资金方的放款表,针对用户角度的放款表
#
#
file_path = u'E:/审计出表/人工控制/去哪儿-放款表/'
file_path = u'E:/量化派/去哪儿/人工控制/放款表-现金流/'
file_name = u'去哪儿_放款表_现金流_%s_%s.xlsx'
engine_qunaer = create_engine('mysql+mysqldb://internal_r:ArbNgtvlJzZHXsEu@172.16.3.201:3306/qunaer_new?charset=utf8',
echo=False).connect()
# 债权转让后的保理放款表
def baoli_pay(year, month,plan_table='baoli_repayment_plan'):
def baoli_pay(year, month,plan_table='repayment_plan_2017'):
start_time = datetime.datetime(year, month, 1, 0, 0, 0)
end_time = start_time + relativedelta(months=+1)
sql_pay = '''
select
concat(pay.product_no,plan.user_current_stage_no) as '唯一编号',
concat(pay.product_no,plan.current_stage_no) as '唯一编号',
pay.product_no '产品编号',
'保理' AS '资金方',
date(pay.trans_time) '贷款时间',
......@@ -40,13 +36,13 @@ def baoli_pay(year, month,plan_table='baoli_repayment_plan'):
pay.loan_amount '合同放款金额',
pay.new_stages '分期数',
'FALSE' AS '是否转分期后订单',
plan.user_current_stage_no AS '应还期数',
plan.current_stage_no AS '应还期数',
date(plan.deadline) AS '应还时间',
plan.principle AS '应还本金',
0 as '应还利息-直投',
plan.fee_amount AS '应还服务费'
from qunaer_new.baoli_pay_detail pay
join %s plan on pay.product_no = plan.product_no
join %s plan on pay.product_no = plan.product_no AND plan.fund_code=1
where trans_time >='%s' and trans_time < '%s'
''' % (plan_table,start_time, end_time)
df_pay = pd.read_sql(sql_pay, engine_qunaer)
......@@ -73,10 +69,10 @@ def fund_pay(year, month,plan_table='fund_repayment_plan'):
plan.principle '应还本金',
plan.interest as '应还利息-直投',
plan.fee_amount AS '应还服务费'
from qunaer_new.fund_pay_detail pay
join %s plan on pay.product_no = plan.product_no
from qunaer_new.pay_detail pay
join %s plan on pay.product_no = plan.product_no AND pay.fund_code != 1
join qunaer_new.fund_corp fc on pay.fund_code = fc.fund_code
where trans_time >='%s' and trans_time < '%s'
where trans_time >='%s' and trans_time < '%s' and pay.status=1
''' % (plan_table,start_time, end_time)
# 读取sql语句,2分钟左右
df_pay = pd.read_sql(sql_pay, engine_qunaer)
......@@ -141,7 +137,7 @@ def hk(year, month):
select fc.fund_name AS '资金方',product_no '产品编号',current_stage_no '应还期数',sum(repay_principle) '实还本金',0 AS '实还利息-直投'
from repay_detail repay
JOIN fund_corp fc on repay.fund_code= fc.fund_code
where repay_time >= '%s'
where repay_time >= '%s' AND repay_status=1
group by 1,2,3
''' % start_time
df_hk = pd.read_sql(sql_1, engine_qunaer)
......@@ -150,9 +146,9 @@ def hk(year, month):
if __name__ == '__main__':
years = [2017]
months = range(9,10)
months = range(10,11)
for year, month in product(years, months):
df_baoli = baoli_pay(year, month,plan_table='baoli_repayment_plan')
df_baoli = baoli_pay(year, month,plan_table='repayment_plan_2017')
df_fund = fund_pay(year, month,plan_table='fund_repayment_plan')
df_user = user_pay(year, month,plan_table='repayment_plan_2017')
df_plan = pd.concat([df_baoli, df_fund, df_user], ignore_index=True)
......
......@@ -25,7 +25,8 @@ pd.options.mode.chained_assignment = None
注意:财务说无需出 用户提前还款的-我们提前打款给资金方的
'''
engine_qunaer = create_engine('mysql+mysqldb://yulong:ohVU1nPITynSZwR2@172.16.3.201:3306/qunaer_new?charset=utf8', echo=False).connect()
engine_qunaer = create_engine('mysql+mysqldb://internal_r:ArbNgtvlJzZHXsEu@172.16.3.201:3306/qunaer_new?charset=utf8',
echo=False).connect()
file_path=u'E:/量化派/去哪儿/人工控制/还资金方-放款时间/'
def fund_tk(year,month):
......@@ -35,12 +36,14 @@ def fund_tk(year,month):
select t3.fund_name 资金方,t1.product_no 产品编号,date(t2.interest_time) 放款时间,t2.loan_amount 放款金额,
date(t1.repay_time) 退还给资金方日,t1.repay_amount 还款金额,t1.repay_principle 实还本金,
t1.repay_interest 实还利息,t1.repay_fee_amount 实还资金方服务费,t1.flow_id 流水号,bf.trans_amount 银行金额,
case t1.type WHEN 4 THEN '正常还款' WHEN 5 THEN '提前结清' WHEN 6 THEN '提前还款' WHEN 7 THEN '退款' END as '类型'
case t1.type WHEN 4 THEN '正常还款' WHEN 5 THEN '提前结清' WHEN 6 THEN '提前还款' WHEN 7 THEN '退款' END as '类型',
date(plan.deadline) 应还款日,plan.principle 应还本金,plan.fee_amount 应还服务费
from qunaer_new.fund_repay_detail t1
JOIN qunaer_new.fund_pay_detail t2 on t1.product_no = t2.product_no
JOIN qunaer_new.pay_detail t2 on t1.product_no = t2.product_no
JOIN qunaer_new.fund_corp t3 on t1.fund_code = t3.fund_code
LEFT JOIN qunaer_new.bank_flow bf on bf.flow_id = t1.flow_id
WHERE t2.trans_time >= '%s' and t2.trans_time < '%s'
JOIN qunaer_new.fund_repayment_plan plan on t1.product_no = plan.product_no and t1.current_stage_no = plan.current_stage_no
WHERE t2.interest_time >= '%s' and t2.interest_time < '%s'
''' % (start_time,end_time)
#用户退款---用户退单日
sql_user_refund='''
......@@ -54,24 +57,26 @@ def fund_tk(year,month):
sql_user_repay='''
select product_no 产品编号,max(date(repay_time)) 用户退单日
from qunaer_new.repay_detail where
fund_code != 1 AND
fund_code != 1 AND repay_status=1 AND
product_no in %s
group by 1
'''
df_refund=pd.read_sql(sql_refund,engine_qunaer)
df_user_refund=pd.read_sql(sql_user_refund % str(tuple(df_refund[u'产品编号'].astype(str).tolist())),engine_qunaer)
df_user_repay = pd.read_sql(sql_user_repay % str(tuple(df_refund[u'产品编号'].astype(str).tolist())), engine_qunaer)
df_user_refund = pd.concat([df_user_refund,df_user_repay],ignore_index=True)
df_user_refund=df_user_refund.groupby([u'产品编号'])[u'用户退单日'].max().reset_index()
df_refund=pd.merge(df_refund,df_user_refund,on=[u'产品编号'],how='left')
# df_user_refund=pd.read_sql(sql_user_refund % str(tuple(df_refund[u'产品编号'].astype(str).tolist())),engine_qunaer)
# df_user_repay = pd.read_sql(sql_user_repay % str(tuple(df_refund[u'产品编号'].astype(str).tolist())), engine_qunaer)
# df_user_refund = pd.concat([df_user_refund,df_user_repay],ignore_index=True)
# df_user_refund=df_user_refund.groupby([u'产品编号'])[u'用户退单日'].max().reset_index()
# df_refund=pd.merge(df_refund,df_user_refund,on=[u'产品编号'],how='left')
df_refund.loc[df_refund[[u'产品编号',u'应还款日']].duplicated(),u'应还本金'] = 0
df_refund.loc[df_refund[[u'产品编号', u'应还款日']].duplicated(), u'应还服务费'] = 0
df_refund=df_refund[[u'资金方',u'产品编号',u'放款时间',u'退还给资金方日',u'还款金额',u'实还本金',u'实还利息',u'实还资金方服务费',u'流水号'
, u'银行金额']]
df_refund.to_excel(file_path+u'还资金方表-%s_%s.xlsx' % (year,month),index=None,encoding='UTF-8')
, u'银行金额',u'应还款日',u'应还本金',u'应还服务费']]
df_refund.to_excel(file_path+u'去哪儿_还资金方表_放款时间-%s_%s.xlsx' % (year,month),index=None,encoding='UTF-8')
if __name__ == '__main__':
year=2017
month=8
month=10
fund_tk(year,month)
\ No newline at end of file
......@@ -25,8 +25,9 @@ pd.options.mode.chained_assignment = None
注意:财务说无需出 用户提前还款的-我们提前打款给资金方的
'''
engine_qunaer = create_engine('mysql+mysqldb://yulong:ohVU1nPITynSZwR2@172.16.3.201:3306/qunaer_new?charset=utf8', echo=False).connect()
file_path=u'E:/量化派/'
engine_qunaer = create_engine('mysql+mysqldb://internal_r:ArbNgtvlJzZHXsEu@172.16.3.201:3306/qunaer_new?charset=utf8',
echo=False).connect()
file_path=u'E:/量化派/去哪儿/人工控制/还资金方-退款表/'
def fund_tk(year,month):
start_time=datetime.date(year,month,1)
......@@ -37,7 +38,7 @@ def fund_tk(year,month):
t1.repay_interest 实还利息,t1.repay_fee_amount 实还资金方服务费,t1.flow_id 流水号,bf.trans_amount 银行金额,
case t1.type WHEN 4 THEN '正常还款' WHEN 5 THEN '提前结清' WHEN 6 THEN '提前还款' WHEN 7 THEN '退款' END as '类型'
from qunaer_new.fund_repay_detail t1
JOIN qunaer_new.fund_pay_detail t2 on t1.product_no = t2.product_no
JOIN qunaer_new.pay_detail t2 on t1.product_no = t2.product_no
JOIN qunaer_new.fund_corp t3 on t1.fund_code = t3.fund_code
LEFT JOIN qunaer_new.bank_flow bf on bf.flow_id = t1.flow_id
WHERE t1.repay_time >= '%s' and t1.repay_time < '%s'
......@@ -54,7 +55,7 @@ def fund_tk(year,month):
sql_user_repay='''
select product_no 产品编号,max(date(repay_time)) 用户退单日
from qunaer_new.repay_detail where
fund_code != 1 AND
fund_code != 1 AND repay_status= 1 AND
product_no in %s
group by 1
'''
......@@ -67,11 +68,11 @@ def fund_tk(year,month):
df_refund=pd.merge(df_refund,df_user_refund,on=[u'产品编号'],how='left')
df_refund=df_refund[[u'资金方',u'产品编号',u'放款时间',u'期数',u'放款金额',u'退还给资金方日',u'还款金额',u'实还本金',u'实还利息',u'实还资金方服务费',u'流水号'
, u'银行金额',u'类型',u'用户退单日']]
df_refund.to_excel(file_path+u'还资金方表-%s_%s.xlsx' % (year,month),index=None,encoding='UTF-8')
df_refund.to_excel(file_path+u'去哪儿_还资金方表-%s_%s.xlsx' % (year,month),index=None,encoding='UTF-8')
if __name__ == '__main__':
year=2017
month=9
month=10
fund_tk(year,month)
\ No newline at end of file
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