def _init_repayment_plan(env: str, project_id: str) -> None: """ 放款时还款计划校验 :param env: :param project_id: :return: """ database_repayment_plan = GetSqlData.get_repayment_plan( project_id=project_id, environment=env) maturity = GetSqlData.get_maturity(project_id=project_id, environment=env) for plan in database_repayment_plan: assert_that(plan["repayment_status"]).is_equal_to(1) Ulog().logger_().info("还款计划状态校验通过") assert_that(database_repayment_plan).is_length(maturity * 2) Ulog().logger_().info("还款计划条数校验通过")
def _get_swap_data(env: str, project_id: str, period: int): _data = { "period": period, "current_repayment_plan": [], # 当前期的还款计划 "before_repayment_plan": [], # 已发生的还款计划 "after_repayment_plan": [], # 未发生的还款计划 "current_fee_plan": [], # 当前期费计划 "before_fee_plan": [], # 已发生的费计划 "after_fee_plan": [], # 未发生的费计划 "current_swap_detail": [], # 当前期债转详情 "before_swap_detail": [], # 已发生期的债转详情 "after_swap_detail": [], # 未发生期的债转详情 "maturity": GetSqlData.get_maturity(project_id=project_id, environment=env), "database_repayment_plan": GetSqlData.get_repayment_plan(project_id=project_id, environment=env), "database_fee_plan": GetSqlData.get_fee_plan(project_id, env), "database_swap_detail": GetSqlData.get_swap_detail(project_id, env), "asset": GetSqlData.get_asset(project_id, env) } for p in _data["database_repayment_plan"]: if p["period"] == period: _data["current_repayment_plan"].append(p) elif p["period"] < period: _data["before_repayment_plan"].append(p) else: _data["after_repayment_plan"].append(p) for f in _data["database_fee_plan"]: if f["period"] == period: _data["current_fee_plan"].append(f) elif f["period"] < period: _data["before_fee_plan"].append(f) else: _data["after_fee_plan"].append(f) for s in _data["database_swap_detail"]: if s["period"] == period: _data["current_swap_detail"].append(s) elif s["period"] < period: _data["before_swap_detail"].append(s) else: _data["after_swap_detail"].append(s) return _data
def check_overdue(period: int, env: str, project_id: str) -> None: """ 检查逾期后还款计划与资产 """ fee_plan = GetSqlData.get_fee_plan(project_id, env) repayment_plan = GetSqlData.get_repayment_plan(project_id=project_id, environment=env) _data = { "current_fee_plan": [], # 当前期费计划 "before_fee_plan": [], # 已发生的费计划 "after_fee_plan": [], # 未发生的费计划 "current_repayment_plan": [], # 当前期的还款计划 "before_repayment_plan": [], # 已发生的还款计划 "after_repayment_plan": [], # 未发生的还款计划 "asset": GetSqlData.get_asset(project_id, env) } for f in fee_plan: if ["period"] == period: _data["current_fee_plan"].append(f) elif f["period"] < period: _data["before_fee_plan"].append(f) else: _data["after_fee_plan"].append(f) for p in repayment_plan: if p["period"] == period: _data["current_repayment_plan"].append(p) elif p["period"] < period: _data["before_repayment_plan"].append(p) else: _data["after_repayment_plan"].append(p) if len(fee_plan) == 0: Ulog().logger_().info("无费计划,不需要校验") else: for fee in _data["current_fee_plan"]: assert_that(fee["overdue_status"]).is_equal_to(1) assert_that(fee["overdue_days"]).is_greater_than(0) Ulog().logger_().info("费计划逾期状态与逾期天数校验通过") for plan in _data["current_repayment_plan"]: assert_that(plan["overdue_status"]).is_equal_to(1) assert_that(plan["overdue_days"]).is_greater_than(0) Ulog().logger_().info("还款计划逾期状态与逾期天数校验通过") assert_that(_data["asset"]["cur_overdue_days"]).is_greater_than(0) Ulog().logger_().info("资产当前逾期天数校验通过")
def _get_repay_data(env: str, project_id: str, param: Optional[dict]) -> dict: """ 初始化校验需要用到的还款数据 :param env: :param project_id: :param param: :return: """ _data = { "repay_type": param["repayType"], "period": param["period"], "pay_time": param["payTime"], "repayment_detail": param["repaymentDetailList"], "repay_principal": 0, "repay_interest": 0, "plan_pay_date": None, "success_amount": param["successAmount"], "payment_flow_source": param["paymentFlowSource"], "source_repayment_id": param["sourceRepaymentId"], "maturity": GetSqlData.get_maturity(project_id=project_id, environment=env), "database_repayment_plan": GetSqlData.get_repayment_plan(project_id=project_id, environment=env), "database_fee_plan": GetSqlData.get_fee_plan(project_id, env), "database_repayment": GetSqlData.get_repayment(project_id, env)[-1], "database_repayment_detail": GetSqlData.get_repayment_detail(project_id, env), "current_repayment_plan": [], # 当前期的还款计划 "before_repayment_plan": [], # 已发生的还款计划 "after_repayment_plan": [], # 未发生的还款计划 "current_fee_plan": [], # 当前期费计划 "before_fee_plan": [], # 已发生的费计划 "after_fee_plan": [], # 未发生的费计划 "current_repayment_detail": [], # 当前期还款流水 "before_repayment_detail": [], # 已发生的还款流水 "after_repayment_detail": [] # 未发生的还款流水 } _data["plan_pay_date"] = GetSqlData.get_repayment_plan_date( project_id, env, 1, _data["period"])["plan_pay_date"] for p in _data["database_repayment_plan"]: if p["period"] == _data["period"]: _data["current_repayment_plan"].append(p) elif p["period"] < _data["period"]: _data["before_repayment_plan"].append(p) else: _data["after_repayment_plan"].append(p) for f in _data["database_fee_plan"]: if f["period"] == _data["period"]: _data["current_fee_plan"].append(f) elif f["period"] < _data["period"]: _data["before_fee_plan"].append(f) else: _data["after_fee_plan"].append(f) for detail in _data["repayment_detail"]: if detail["planCategory"] == 1: _data["repay_principal"] += detail["payAmount"] elif detail["planCategory"] == 2: _data["repay_interest"] += detail["payAmount"] for repayment_detail in _data["database_repayment_detail"]: if repayment_detail["period"] < _data["period"]: _data["before_repayment_detail"].append(repayment_detail) elif repayment_detail["period"] == _data["period"]: _data["current_repayment_detail"].append(repayment_detail) elif repayment_detail["period"] > _data["period"]: _data["after_repayment_detail"].append(repayment_detail) return _data