company_court_open_announcement.py 2.3 KB

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