company_court_open_announcement.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. # -*- coding: utf-8 -*-
  2. # @Time : 2023/7/20 16:27
  3. # @Author : XuJiakai
  4. # @File : company_court_open_announcement
  5. # @Software: PyCharm
  6. import os
  7. from data_clean.dim_handle_registry import get_dim_handle
  8. from data_clean.exception.fetch_exception import FetchException
  9. from data_clean.exception.ruler_validation_exception import RulerValidationException
  10. from data_clean.utils.date_utils import *
  11. from data_clean.utils.party_name_verify_utils import person_name_verify
  12. from data_clean.utils.str_utils import json_str_2_list
  13. # 必须命名为dim_handle
  14. dim_handle = get_dim_handle(os.path.basename(__file__))
  15. # @dim_handle.registry_prefix_func
  16. async def prefix_func(dim_data: list):
  17. print("前置程序:", dim_data)
  18. raise ValueError("前置程序错误")
  19. pass
  20. @dim_handle.registry_postfix_func()
  21. async def post_func(dim_data: list):
  22. # print("后置程序:", dim_data)
  23. for r in dim_data:
  24. r['update_time'] = get_update_time()
  25. pass
  26. pass
  27. @dim_handle.registry_row_func
  28. async def party_intersect(row_data: dict) -> dict:
  29. # 判断当事人有交叉
  30. plaintiff_info = json_str_2_list(row_data['plaintiff_info'], "name")
  31. defendant_info = json_str_2_list(row_data['defendant_info'], "name")
  32. inter = list(set(plaintiff_info).intersection(set(defendant_info)))
  33. if len(inter) == 0:
  34. return row_data
  35. else:
  36. raise RulerValidationException("ccoa_001", "当事人有交叉:%s" % inter)
  37. pass
  38. @dim_handle.registry_row_func
  39. async def open_ann_date(row_data: dict) -> dict:
  40. # 过滤开庭时间早于建国时间问题
  41. if 'start_date' in row_data:
  42. if not row_data['start_date']:
  43. raise RulerValidationException("ccoa_002", "开庭时间为空")
  44. this_date = str_2_date_time(row_data['start_date'])
  45. if this_date < establish_state_time:
  46. raise RulerValidationException("ccoa_002", "开庭时间早于建国时间:%s" % row_data['start_date'])
  47. return row_data
  48. pass
  49. @dim_handle.registry_row_func
  50. async def party_unknown(row_data: dict) -> dict:
  51. # 过滤当事人名字异常,Z某某、xxx
  52. plaintiff_info = json_str_2_list(row_data['plaintiff_info'], "name")
  53. defendant_info = json_str_2_list(row_data['defendant_info'], "name")
  54. li = plaintiff_info + defendant_info
  55. for i in li:
  56. if not person_name_verify(i):
  57. raise RulerValidationException("ccoa_003", "人名不符合规范:%s" % i)
  58. return row_data
  59. if __name__ == '__main__':
  60. pass