select lrpi.id, lrpi.contract_id, lrpi.contract_number, lrpi.payment_number, lrpi.customer_name as customername, lrpi.plan_list, lrpi.plan_date, lrpi.rent, lrpi.corpus, lrpi.interest, lrpi.penalty, round(lrpi.rent - lrpi.rent_sum - lrpi.rent_sum_temp, 2) as rent_over, round(lrpi.corpus - lrpi.corpus_sum - lrpi.corpus_sum_temp, 2) as corpus_over, round(lrpi.interest - lrpi.interest_sum - lrpi.interest_sum_temp, 2) as interest_over, round(lrpi.penalty - lrpi.penalty_sum - lrpi.penalty_sum_temp, 2) as penalty_over, round(lrpi.rent + lrpi.penalty - lrpi.rent_sum - lrpi.rent_sum_temp - lrpi.penalty_sum - lrpi.penalty_sum_temp, 2) as all_over, case when lrpi.rent_sum + lrpi.rent_sum_temp = 0 and lrpi.penalty_sum + lrpi.penalty_sum_temp = 0 then '未回笼' when lrpi.rent - lrpi.rent_sum - lrpi.rent_sum_temp = 0 and lrpi.penalty - lrpi.penalty_sum - lrpi.penalty_sum_temp = 0 then '已回笼' else '部分回笼' end as planstatus, round(lrpi.penalty_sum + lrpi.penalty_sum_temp, 2) as penalty_sum from (select lrp.id, lrp.contract_id, lci.contract_number, lrp.payment_number, lul.customer_name, lrp.plan_list, lrp.plan_date, lrp.rent, lrp.corpus, lrp.interest, round(ifnull((select sum(lri.rent) from lc_rent_income lri where roll_back = '0' and lri.payment_number = lrp.payment_number and lri.plan_list = lrp.plan_list ), 0), 2) as rent_sum, round(ifnull((select sum(lri.rent) from lc_rent_income_temp lri where is_flowing = '0' and roll_back = '0' and lri.payment_number = lrp.payment_number and lri.plan_list = lrp.plan_list ), 0), 2) as rent_sum_temp, round(ifnull((select sum(lri.corpus + lri.corpus_adjust) from lc_rent_income lri where roll_back = '0' and lri.payment_number = lrp.payment_number and lri.plan_list = lrp.plan_list ), 0), 2) as corpus_sum, round(ifnull((select sum(lri.corpus + lri.corpus_adjust) from lc_rent_income_temp lri where is_flowing = '0' and roll_back = '0' and lri.payment_number = lrp.payment_number and lri.plan_list = lrp.plan_list ), 0), 2) as corpus_sum_temp, round(ifnull((select sum(lri.interest + lri.interest_adjust) from lc_rent_income lri where roll_back = '0' and lri.payment_number = lrp.payment_number and lri.plan_list = lrp.plan_list ), 0), 2) as interest_sum, round(ifnull((select sum(lri.interest + lri.interest_adjust) from lc_rent_income_temp lri where is_flowing = '0' and roll_back = '0' and lri.payment_number = lrp.payment_number and lri.plan_list = lrp.plan_list ), 0), 2) as interest_sum_temp, round(ifnull((select sum(lri.penalty + penalty_adjust) from lc_rent_income lri where roll_back = '0' and lri.payment_number = lrp.payment_number and lri.plan_list = lrp.plan_list ), 0), 2) as penalty_sum, round(ifnull((select sum(lri.penalty + penalty_adjust) from lc_rent_income_temp lri where is_flowing = '0' and roll_back = '0' and lri.payment_number = lrp.payment_number and lri.plan_list = lrp.plan_list ), 0), 2) as penalty_sum_temp, getrentpenalty(lrp.payment_number, lrp.plan_list, date_format(now(), '%Y/%m/%d')) as penalty from lc_rent_plan lrp left join lb_contract_info lci on lrp.contract_id = lci.id left join lb_union_lessee lul on lrp.contract_id = lul.contract_id and lul.is_main = 'Y' left join customer_account ca on ca.contract_id = lci.id where lrp.plan_status <> '已回笼' and lrp.plan_date < date_add(date_format(current_date(), '%Y-%m-01'), interval 1 month) and lci.contract_status = '31' and (lci.corpus_source <> 'PSBC' or isnull(lci.corpus_source)) and not exists(select 1 from lc_occupy_rent_list lorl where lorl.payment_number = lrp.payment_number and ((lorl.plan_id = lrp.id and lorl.flow_name in ('微信银联收款', '微信支付收款', '网银收款')) or lorl.flow_name in ('合同中途终止', '提前结清申请')) ) ) lrpi select tt.penalty, tt.fact_penalty, tt.penalty_adjust, tt.penalty - tt.fact_penalty - tt.penalty_adjust as penalty_over from (select round(getrentpenalty(lrp.payment_number, lrp.plan_list, ${factDate}), 2) as penalty, round(ifnull(lri.fact_penalty, 0) + ifnull(lrit.fact_penalty, 0), 2) as fact_penalty, round(ifnull(lri.penalty_adjust, 0) + ifnull(lrit.penalty_adjust, 0), 2) as penalty_adjust from lc_rent_plan lrp left join (select payment_number, plan_list, sum(penalty) as fact_penalty, sum(penalty_adjust) as penalty_adjust from lc_rent_income where roll_back = '0' @if{?planId != empty} and (payment_number, plan_list) in (select lrp1.payment_number, lrp1.plan_list from lc_rent_plan lrp1 where id = #{planId}) @end{} ) lri on lrp.payment_number = lri.payment_number and lrp.plan_list = lri.plan_list left join (select payment_number, plan_list, sum(penalty) as fact_penalty, sum(penalty_adjust) as penalty_adjust from lc_rent_income_temp where is_flowing = '0' and roll_back = '0' @if{?planId != empty} and (payment_number, plan_list) in (select lrp1.payment_number, lrp1.plan_list from lc_rent_plan lrp1 where id = #{planId}) @end{} ) lrit on lrp.payment_number = lrit.payment_number and lrp.plan_list = lrit.plan_list ) tt