|
@@ -5,10 +5,12 @@
|
|
|
# @Software: PyCharm
|
|
|
import os
|
|
|
|
|
|
+from data_clean.api.hbase_api import bulk_get
|
|
|
from data_clean.dim_handle_registry import get_dim_handle
|
|
|
-from data_clean.exception.fetch_exception import FetchException
|
|
|
from data_clean.exception.ruler_validation_exception import RulerValidationException
|
|
|
-from data_clean.utils.date_utils import *
|
|
|
+from data_clean.utils.base_utils import *
|
|
|
+from data_clean.utils.case_utils import case_no_year_datetime
|
|
|
+from data_clean.utils.date_utils import str_2_date_time, get_update_time, establish_state_time
|
|
|
from data_clean.utils.party_name_verify_utils import person_name_verify
|
|
|
from data_clean.utils.str_utils import json_str_2_list
|
|
|
|
|
@@ -51,18 +53,56 @@ async def party_intersect(row_data: dict) -> dict:
|
|
|
pass
|
|
|
|
|
|
|
|
|
+async def _get_max_establish_date(company_ids: list):
|
|
|
+ company_ids = [i for i in company_ids if i]
|
|
|
+ res = await bulk_get('ng_rt_company', company_ids)
|
|
|
+ res = [str_2_date_time(i['ESTIBLISH_TIME']) for i in res if 'ESTIBLISH_TIME' in i and i['ESTIBLISH_TIME']]
|
|
|
+ return max(res)
|
|
|
+ pass
|
|
|
+
|
|
|
+
|
|
|
+# 开庭时间相关过滤
|
|
|
@dim_handle.registry_row_func
|
|
|
async def open_ann_date(row_data: dict) -> dict:
|
|
|
- # 过滤开庭时间早于建国时间问题
|
|
|
- if 'start_date' in row_data:
|
|
|
- if not row_data['start_date']:
|
|
|
- # raise RulerValidationException("ccoa_002", "开庭时间为空")
|
|
|
- return row_data
|
|
|
+ import datetime
|
|
|
+ now = datetime.datetime.now()
|
|
|
+ delta = datetime.timedelta(days=730) # 两年后
|
|
|
+ max_date = now + delta
|
|
|
+ start_date = get_or_none(row_data, 'start_date')
|
|
|
+ case_no = get_or_none(row_data, 'case_no')
|
|
|
+
|
|
|
+ if case_no is None and start_date is None:
|
|
|
+ raise RulerValidationException("ccoa_007", "案号和开庭时间均为空")
|
|
|
|
|
|
+ if start_date is None:
|
|
|
+ return row_data
|
|
|
+
|
|
|
+ try:
|
|
|
this_date = str_2_date_time(row_data['start_date'])
|
|
|
if this_date < establish_state_time:
|
|
|
raise RulerValidationException("ccoa_002", "开庭时间早于建国时间:%s" % row_data['start_date'])
|
|
|
|
|
|
+ if this_date > max_date:
|
|
|
+ raise RulerValidationException("ccoa_006", "开庭时间在两年后:%s" % row_data['start_date'])
|
|
|
+
|
|
|
+ part_keyno = json_str_2_list(row_data['plaintiff_info'], 'litigant_id') + json_str_2_list(
|
|
|
+ row_data['defendant_info'], 'litigant_id')
|
|
|
+ part_keyno = [i for i in part_keyno if i and len(i) == 32]
|
|
|
+ max_establish_date = await _get_max_establish_date(part_keyno)
|
|
|
+ if max_establish_date and this_date < max_establish_date:
|
|
|
+ raise RulerValidationException("ccoa_004", "开庭时有公司未成立,最晚一个公司成立日期:%s,开庭时间:%s" % (
|
|
|
+ max_establish_date, row_data['start_date']))
|
|
|
+
|
|
|
+ case_no_year_dt = case_no_year_datetime(case_no)
|
|
|
+ if case_no_year_dt and this_date < case_no_year_dt:
|
|
|
+ raise RulerValidationException("ccoa_005", "案号大于开庭时间年份,案号:%s,开庭时间:%s" % (
|
|
|
+ case_no, row_data['start_date']))
|
|
|
+ except RulerValidationException as ex:
|
|
|
+ if case_no is None:
|
|
|
+ raise ex
|
|
|
+ row_data['start_date'] = None
|
|
|
+ pass
|
|
|
+
|
|
|
return row_data
|
|
|
pass
|
|
|
|
|
@@ -79,5 +119,16 @@ async def party_unknown(row_data: dict) -> dict:
|
|
|
return row_data
|
|
|
|
|
|
|
|
|
+async def test():
|
|
|
+ res = await _get_max_establish_date(
|
|
|
+ ['bc702f0f5202342a9c1c75fbf9be9aff', 'b79d862faef595f33b166562bb3c18b6', '24cb269450f9262051dfcaa3dc389844'])
|
|
|
+ print(res)
|
|
|
+
|
|
|
+ pass
|
|
|
+
|
|
|
+
|
|
|
if __name__ == '__main__':
|
|
|
+ import asyncio
|
|
|
+
|
|
|
+ asyncio.run(test())
|
|
|
pass
|