Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
duizhang_tools
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
data—王林芳
duizhang_tools
Commits
6d3f4053
Commit
6d3f4053
authored
Nov 17, 2017
by
Perry_Zhu
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
eec3ee81
4920a83e
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
226 additions
and
0 deletions
+226
-0
白条直投每日赔付(用实还表出).py
现金贷&去哪儿&白条--在用代码维护/普通白条/白条直投每日赔付(用实还表出).py
+226
-0
No files found.
现金贷&去哪儿&白条--在用代码维护/普通白条/白条直投每日赔付(用实还表出).py
0 → 100644
View file @
6d3f4053
# coding: utf-8
# Author: Perry_Zhu
import
datetime
import
sys
import
pandas
as
pd
import
pyexcelerate
as
pe
from
sqlalchemy
import
create_engine
"""
注意:ref_id=5403743,order_no='1709161050021394'线上放款重复,
本版本已经修正,但是2017-10月份与财务对不上
"""
reload
(
sys
)
sys
.
setdefaultencoding
(
'utf8'
)
engine_new_transaction
=
create_engine
(
'mysql+mysqldb://internal_r:ArbNgtvlJzZHXsEu@172.16.4.60:3306/new_transaction?charset=utf8'
,
echo
=
True
)
start_time
=
'2017-08-01'
end_time
=
'2017-11-01'
end_y
=
2017
end_m
=
11
end_date
=
datetime
.
date
(
end_y
,
end_m
,
1
)
tx_amount
=
1
sr_amount
=
2
zbj_amount
=
3
path
=
u'E:/数据汇总/白条/每日赔付/2017-10/'
loan_info
=
"""
SELECT r.order_no,r.term_no,date(o.loan_paid_at) loan_paid_at
FROM baitiao_audit.baitiao_order o
JOIN new_transaction.bt_funding_repayment_record r ON o.ref_id=r.ref_id
group by 1,2
"""
loan_plan
=
"""
SELECT
t.order_no,t.term_no,t.plan_day,SUM(t.principle+t.interest) plan_all,SUM(t.principle) principle
FROM(
SELECT r.order_no,r.term_no,DATE(r.repaid_at) plan_day,
sum(ifnull(r.principal,0))principle,0.0 interest
FROM bt_funding_repayment_record r
JOIN user_bt_repayment_plan t1 on r.repay_plan_id=t1.repayment_plan_id AND t1.sys_tag='XYQB_BILL_BT' AND r.principal_account=
%
s and r.refund_status!=3
JOIN baitiao_audit.baitiao_order t2 ON t1.ref_id=t2.ref_id
WHERE
r.repaid_at >= '
%
s' AND r.repaid_at < '
%
s'
GROUP BY 1,2,3
UNION ALL
SELECT r.order_no,r.term_no,DATE(r.repaid_at) plan_day,
0.0 principle,SUM(ifnull(r.interest,0)) interest
FROM bt_funding_repayment_record r
JOIN user_bt_repayment_plan t1 on r.repay_plan_id=t1.repayment_plan_id AND t1.sys_tag='XYQB_BILL_BT'AND r.interest_account=
%
s and r.interest>0
JOIN baitiao_audit.baitiao_order t2 ON t1.ref_id=t2.ref_id
WHERE
r.repaid_at >= '
%
s' AND r.repaid_at < '
%
s'
GROUP BY 1,2,3
)t
GROUP BY 1,2,3
"""
repay_online
=
'''
SELECT plan.order_no,plan.term_no,DATE(t2.bill_time) repaid_at,DATE(plan.deadline) deadline ,
sum(ifnull(t1.principle,0)-ifnull(t1.mitigate_principle,0)) real_principle,
sum(ifnull(t1.interest,0)-ifnull(t1.mitigate_interest,0)) real_interest
FROM baitiao_repay_plan_repay_record_ref t1
JOIN repay_record_online t2 ON t1.record_id = t2.id AND t2.pay_approach in(22,23,24)
JOIN user_bt_repayment_plan t3 ON t1.plan_id = t3.id AND t3.sys_tag='XYQB_BILL_BT'
JOIN bt_funding_repayment_plan plan on plan.repay_plan_id=t3.repayment_plan_id AND plan.refund_status!=3
JOIN baitiao_audit.baitiao_order t4 ON t4.ref_id=t3.ref_id AND t4.is_active = 1
WHERE
t2.bill_time >= '
%
s'
and t2.bill_time < '
%
s'
GROUP BY 1,2,3,4;
'''
repay_alipay
=
'''
SELECT plan.order_no,plan.term_no,DATE(t2.transfer_time) repaid_at,DATE(plan.deadline) deadline ,
sum(ifnull(t1.principle,0)-ifnull(t1.mitigate_principle,0)) real_principle,
sum(ifnull(t1.interest,0)-ifnull(t1.mitigate_interest,0)) real_interest
FROM baitiao_repay_plan_repay_record_ref t1
JOIN offline_alipay_record t2 ON t1.record_id = t2.id AND t1.repay_channel = 13
JOIN user_bt_repayment_plan t3 ON t1.plan_id = t3.id AND t3.sys_tag='XYQB_BILL_BT'
JOIN bt_funding_repayment_plan plan on plan.repay_plan_id=t3.repayment_plan_id AND plan.refund_status!=3
JOIN baitiao_audit.baitiao_order t4 ON t4.ref_id=t3.ref_id AND t4.is_active = 1
WHERE
t2.transfer_time >= '
%
s'
and t2.transfer_time < '
%
s'
GROUP BY 1,2,3,4
'''
def
split_repay
(
df_repay
,
df_plan
):
df_plan
.
order_no
=
df_plan
.
order_no
.
astype
(
str
)
df_plan
.
term_no
=
df_plan
.
term_no
.
astype
(
int
)
df_repay
.
order_no
=
df_repay
.
order_no
.
astype
(
str
)
df_repay
.
term_no
=
df_repay
.
term_no
.
astype
(
int
)
df_repay
[
'repaid_at'
]
=
pd
.
to_datetime
(
df_repay
[
'repaid_at'
])
.
apply
(
lambda
x
:
x
.
date
())
df_repay
[
'deadline'
]
=
pd
.
to_datetime
(
df_repay
[
'deadline'
])
.
apply
(
lambda
x
:
x
.
date
())
# 正常还款
df_zc
=
df_repay
.
ix
[
df_repay
[
'repaid_at'
]
==
df_repay
[
'deadline'
]]
df_zc
=
df_zc
.
groupby
(
by
=
[
'order_no'
,
'term_no'
,
'repaid_at'
])[
'real_principle'
]
.
sum
()
df_zc
=
df_zc
.
to_frame
()
df_zc
.
reset_index
(
inplace
=
True
)
df_zc
.
rename
(
columns
=
{
'repaid_at'
:
'real_hk'
,
'real_principle'
:
'zc_prin_inst_total'
},
inplace
=
True
)
# ===========逾期还款==============
df_yq
=
df_repay
.
ix
[
df_repay
[
'deadline'
]
<
df_repay
[
'repaid_at'
]]
df_yq
=
df_yq
.
groupby
(
by
=
[
'order_no'
,
'term_no'
,
'repaid_at'
])[
'real_principle'
]
.
sum
()
df_yq
=
df_yq
.
to_frame
()
df_yq
.
reset_index
(
inplace
=
True
)
df_yq
.
rename
(
columns
=
{
'repaid_at'
:
'real_hk'
,
'real_principle'
:
'yq_prin_inst_total'
},
inplace
=
True
)
# ============提前还款==============
df_tq
=
df_repay
.
ix
[
df_repay
[
'deadline'
]
>
df_repay
[
'repaid_at'
]]
# 实还可用筛选
df_tq
=
df_tq
.
ix
[
df_tq
[
'deadline'
]
<
end_date
]
# 提前还款的可用日期变更
df_tq
=
df_tq
.
groupby
(
by
=
[
'order_no'
,
'term_no'
,
'deadline'
])[
'real_principle'
]
.
sum
()
df_tq
=
df_tq
.
to_frame
()
df_tq
.
reset_index
(
inplace
=
True
)
df_tq
.
rename
(
columns
=
{
'deadline'
:
'real_hk'
,
'real_principle'
:
'tq_prin_inst_total'
},
inplace
=
True
)
# 合并
if
len
(
df_repay
)
>
0
:
df_hk_new
=
pd
.
merge
(
df_zc
,
df_yq
,
how
=
'outer'
,
on
=
[
'order_no'
,
'term_no'
,
'real_hk'
])
df_hk_new
=
pd
.
merge
(
df_hk_new
,
df_tq
,
how
=
'outer'
,
on
=
[
'order_no'
,
'term_no'
,
'real_hk'
])
df_hk_new
.
fillna
(
0
,
inplace
=
True
)
df_h
=
df_hk_new
.
groupby
(
by
=
[
'order_no'
,
'term_no'
,
'real_hk'
])[
'zc_prin_inst_total'
,
'yq_prin_inst_total'
,
'tq_prin_inst_total'
]
.
sum
()
.
reset_index
()
df_plan_t
=
df_plan
.
loc
[
df_plan
[
'principle'
]
>
0
]
df_h
.
rename
(
columns
=
{
'real_hk'
:
'plan_day'
},
inplace
=
True
)
df_t
=
df_plan_t
[[
'order_no'
,
'term_no'
,
'plan_day'
]]
df_t
.
rename
(
columns
=
{
'plan_day'
:
't_day'
},
inplace
=
True
)
df_hk_new
=
pd
.
merge
(
df_plan_t
,
df_h
,
how
=
'outer'
,
on
=
[
'order_no'
,
'term_no'
,
'plan_day'
])
df_hk_new
[
'hk_day'
]
=
df_hk_new
[
'plan_day'
]
df_hk_new
=
pd
.
merge
(
df_t
,
df_hk_new
,
how
=
'left'
,
on
=
[
'order_no'
,
'term_no'
])
df_hk_new
.
loc
[
df_hk_new
[
'hk_day'
]
.
isnull
(),
'hk_day'
]
=
df_hk_new
.
loc
[
df_hk_new
[
'hk_day'
]
.
isnull
(),
't_day'
]
df_hk_new
.
fillna
(
0
,
inplace
=
True
)
df_hk_new
=
df_hk_new
[[
'order_no'
,
'term_no'
,
'hk_day'
,
'plan_all'
,
'zc_prin_inst_total'
,
'yq_prin_inst_total'
,
'tq_prin_inst_total'
]]
else
:
df_hk_new
=
df_plan
df_hk_new
[
'zc_prin_inst_total'
]
=
0
df_hk_new
[
'yq_prin_inst_total'
]
=
0
df_hk_new
[
'tq_prin_inst_total'
]
=
0
return
df_hk_new
def
forward_repay_time
(
df
):
# 2017-9月还资金方时间,线上给的有问题,必须将打款时间提前一天
df
.
loc
[
df
.
plan_day
==
datetime
.
date
(
2017
,
9
,
9
),
'plan_day'
]
=
datetime
.
date
(
2017
,
9
,
10
)
df
.
loc
[
df
.
plan_day
==
datetime
.
date
(
2017
,
9
,
11
),
'plan_day'
]
=
datetime
.
date
(
2017
,
9
,
10
)
df
.
loc
[
df
.
plan_day
==
datetime
.
date
(
2017
,
9
,
21
),
'plan_day'
]
=
datetime
.
date
(
2017
,
9
,
20
)
df
.
loc
[
df
.
plan_day
==
datetime
.
date
(
2017
,
9
,
29
),
'plan_day'
]
=
datetime
.
date
(
2017
,
9
,
28
)
return
df
def
spread_loan_id
():
df_info
=
pd
.
read_sql
(
loan_info
,
engine_new_transaction
)
df_info
.
order_no
=
df_info
.
order_no
.
astype
(
str
)
df_info
.
term_no
=
df_info
.
term_no
.
astype
(
int
)
df_tx
=
pd
.
read_sql
(
loan_plan
%
(
tx_amount
,
start_time
,
end_time
,
tx_amount
,
start_time
,
end_time
),
engine_new_transaction
)
df_sr
=
pd
.
read_sql
(
loan_plan
%
(
sr_amount
,
start_time
,
end_time
,
sr_amount
,
start_time
,
end_time
),
engine_new_transaction
)
df_zbj
=
pd
.
read_sql
(
loan_plan
%
(
zbj_amount
,
start_time
,
end_time
,
zbj_amount
,
start_time
,
end_time
),
engine_new_transaction
)
# 2017-9月还资金方时间,线上给的有问题,必须将打款时间提前一天
# 提现账户
df_tx
=
forward_repay_time
(
df_tx
)
# 收入账户
df_sr
=
forward_repay_time
(
df_sr
)
# 质保金账户
df_zbj
=
forward_repay_time
(
df_zbj
)
df_online
=
pd
.
read_sql
(
repay_online
%
(
start_time
,
end_time
),
engine_new_transaction
)
df_ali
=
pd
.
read_sql
(
repay_alipay
%
(
start_time
,
end_time
),
engine_new_transaction
)
df_repay
=
pd
.
concat
([
df_online
,
df_ali
],
axis
=
0
,
ignore_index
=
True
)
df_repay_tx
=
split_repay
(
df_repay
,
df_tx
)
df_repay_sr
=
split_repay
(
df_repay
,
df_sr
)
df_repay_zbj
=
split_repay
(
df_repay
,
df_zbj
)
df_repay_tx
.
rename
(
columns
=
{
'plan_all'
:
'tx_plan_all'
},
inplace
=
True
)
df_repay_sr
.
rename
(
columns
=
{
'plan_all'
:
'sr_plan_all'
},
inplace
=
True
)
df_repay_zbj
.
rename
(
columns
=
{
'plan_all'
:
'zbj_plan_all'
},
inplace
=
True
)
df_repay_tx
.
rename
(
columns
=
{
'zc_prin_inst_total'
:
'tx_zc_principle'
,
'yq_prin_inst_total'
:
'tx_yq_principle'
,
'tq_prin_inst_total'
:
'tx_tq_principle'
},
inplace
=
True
)
df_repay_sr
.
rename
(
columns
=
{
'zc_prin_inst_total'
:
'sr_zc_principle'
,
'yq_prin_inst_total'
:
'sr_yq_principle'
,
'tq_prin_inst_total'
:
'sr_tq_principle'
},
inplace
=
True
)
df_repay_zbj
.
rename
(
columns
=
{
'zc_prin_inst_total'
:
'zbj_zc_principle'
,
'yq_prin_inst_total'
:
'zbj_yq_principle'
,
'tq_prin_inst_total'
:
'zbj_tq_principle'
},
inplace
=
True
)
df_hk_new
=
pd
.
merge
(
df_repay_tx
,
df_repay_sr
,
how
=
'outer'
,
on
=
[
'order_no'
,
'term_no'
,
'hk_day'
])
df_hk_new
=
pd
.
merge
(
df_hk_new
,
df_repay_zbj
,
how
=
'outer'
,
on
=
[
'order_no'
,
'term_no'
,
'hk_day'
])
df_hk_new
.
order_no
=
df_hk_new
.
order_no
.
astype
(
str
)
df_hk_new
.
term_no
=
df_hk_new
.
term_no
.
astype
(
int
)
df_hk_new
=
pd
.
merge
(
df_hk_new
,
df_info
,
on
=
[
'order_no'
,
'term_no'
],
how
=
'left'
)
df_hk_new
.
fillna
(
0
,
inplace
=
True
)
df_hk_new
=
df_hk_new
[
[
'order_no'
,
'term_no'
,
'loan_paid_at'
,
'hk_day'
,
'tx_plan_all'
,
'tx_zc_principle'
,
'tx_yq_principle'
,
'tx_tq_principle'
,
'sr_plan_all'
,
'sr_zc_principle'
,
'sr_yq_principle'
,
'sr_tq_principle'
,
'zbj_plan_all'
,
'zbj_zc_principle'
,
'zbj_yq_principle'
,
'zbj_tq_principle'
]]
# 按日期出
df_out
=
df_hk_new
[[
'hk_day'
,
'tx_plan_all'
,
'tx_zc_principle'
,
'tx_yq_principle'
,
'tx_tq_principle'
,
'sr_plan_all'
,
'sr_zc_principle'
,
'sr_yq_principle'
,
'sr_tq_principle'
,
'zbj_plan_all'
,
'zbj_zc_principle'
,
'zbj_yq_principle'
,
'zbj_tq_principle'
]]
df_out
=
df_out
.
groupby
(
by
=
[
'hk_day'
])[
'tx_plan_all'
,
'tx_zc_principle'
,
'tx_yq_principle'
,
'tx_tq_principle'
,
'sr_plan_all'
,
'sr_zc_principle'
,
'sr_yq_principle'
,
'sr_tq_principle'
,
'zbj_plan_all'
,
'zbj_zc_principle'
,
'zbj_yq_principle'
,
'zbj_tq_principle'
]
.
sum
()
.
reset_index
()
df_hk_new
.
rename
(
columns
=
{
'hk_day'
:
'还款日期'
,
'tq_prin_total'
:
'客户提前可用本金'
,
'tx_zc_principle'
:
'提现账户客户正常还款本金'
,
'tx_yq_principle'
:
'提现账户客户逾期还款本金'
,
'tx_tq_principle'
:
'提现账户客户提前可用本金'
,
'sr_zc_principle'
:
'收入账户客户正常还款本金'
,
'sr_yq_principle'
:
'收入账户客户逾期还款本金'
,
'sr_tq_principle'
:
'收入账户客户提前可用本金'
,
'zbj_zc_principle'
:
'质保金账户客户正常还款本金'
,
'tx_plan_all'
:
'提现账户应还资方本息'
,
'sr_plan_all'
:
'收入账户应还资方本息'
,
'zbj_plan_all'
:
'质保金账户应还资方本息'
,
'zbj_yq_principle'
:
'质保金账户客户逾期还款本金'
,
'zbj_tq_principle'
:
'质保金账户客户提前可用本金'
},
inplace
=
True
)
df_out
.
rename
(
columns
=
{
'hk_day'
:
'还款日期'
,
'tq_prin_total'
:
'客户提前可用本金'
,
'tx_zc_principle'
:
'提现账户客户正常还款本金'
,
'tx_yq_principle'
:
'提现账户客户逾期还款本金'
,
'tx_tq_principle'
:
'提现账户客户提前可用本金'
,
'sr_zc_principle'
:
'收入账户客户正常还款本金'
,
'sr_yq_principle'
:
'收入账户客户逾期还款本金'
,
'sr_tq_principle'
:
'收入账户客户提前可用本金'
,
'zbj_zc_principle'
:
'质保金账户客户正常还款本金'
,
'tx_plan_all'
:
'提现账户应还资方本息'
,
'sr_plan_all'
:
'收入账户应还资方本息'
,
'zbj_plan_all'
:
'质保金账户应还资方本息'
,
'zbj_yq_principle'
:
'质保金账户客户逾期还款本金'
,
'zbj_tq_principle'
:
'质保金账户客户提前可用本金'
},
inplace
=
True
)
df_hk_new
.
to_excel
(
path
+
u'5_loan_id维度展开2017-10.xlsx'
,
index
=
None
,
columns
=
df_hk_new
.
columns
,
encoding
=
'utf8'
)
df_out
.
to_excel
(
path
+
u'5_按日期展开2017-10.xlsx'
,
index
=
None
,
columns
=
df_out
.
columns
,
encoding
=
'utf8'
)
spread_loan_id
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment