se compare part 1
Showing
3 changed files
with
45 additions
and
13 deletions
... | @@ -1347,7 +1347,7 @@ ID_COMPARE_LOGIC = { | ... | @@ -1347,7 +1347,7 @@ ID_COMPARE_LOGIC = { |
1347 | 'customerName': ('姓名', 'se_name_compare', {}), | 1347 | 'customerName': ('姓名', 'se_name_compare', {}), |
1348 | 'idNum': ('公民身份号码', 'se_common_compare', {}), | 1348 | 'idNum': ('公民身份号码', 'se_common_compare', {}), |
1349 | 'dateOfBirth': ('出生年月', 'se_date_compare', {'input_replace': ''}), | 1349 | 'dateOfBirth': ('出生年月', 'se_date_compare', {'input_replace': ''}), |
1350 | 'idExpiryDate': ('有效期限', 'se_date_compare', {'long': True, 'ocr_split': True, 'input_replace': ''}), | 1350 | 'idExpiryDate': ('有效期限', 'se_date_compare', {'long': True, 'ocr_split': True, 'input_replace': '', 'today': True}), |
1351 | 'hukouProvince': ('住址', 'se_contain_compare', {}), | 1351 | 'hukouProvince': ('住址', 'se_contain_compare', {}), |
1352 | 'hukouCity': ('住址', 'se_contain_compare', {}), | 1352 | 'hukouCity': ('住址', 'se_contain_compare', {}), |
1353 | } | 1353 | } |
... | @@ -1356,21 +1356,21 @@ PP_COMPARE_LOGIC = { | ... | @@ -1356,21 +1356,21 @@ PP_COMPARE_LOGIC = { |
1356 | 'customerName': ('英文姓名', 'se_name_compare', {'is_passport': True}), | 1356 | 'customerName': ('英文姓名', 'se_name_compare', {'is_passport': True}), |
1357 | 'idNum': ('护照号码', 'se_common_compare', {}), | 1357 | 'idNum': ('护照号码', 'se_common_compare', {}), |
1358 | 'dateOfBirth': ('出生日期', 'se_date_compare', {'input_replace': ''}), | 1358 | 'dateOfBirth': ('出生日期', 'se_date_compare', {'input_replace': ''}), |
1359 | 'idExpiryDate': ('有效期至', 'se_date_compare', {'input_replace': ''}), | 1359 | 'idExpiryDate': ('有效期至', 'se_date_compare', {'input_replace': '', 'today': True}), |
1360 | } | 1360 | } |
1361 | 1361 | ||
1362 | EEP_COMPARE_LOGIC = { | 1362 | EEP_COMPARE_LOGIC = { |
1363 | 'customerName': ('中文名', 'se_common_compare', {}), | 1363 | 'customerName': ('中文名', 'se_common_compare', {}), |
1364 | 'idNum': ('证件号码', 'se_common_compare', {}), | 1364 | 'idNum': ('证件号码', 'se_common_compare', {}), |
1365 | 'dateOfBirth': ('出生日期', 'se_date_compare', {'input_replace': '.'}), | 1365 | 'dateOfBirth': ('出生日期', 'se_date_compare', {'input_replace': '.'}), |
1366 | 'idExpiryDate': ('有效期限', 'se_date_compare', {'ocr_split': True, 'input_replace': '.'}), | 1366 | 'idExpiryDate': ('有效期限', 'se_date_compare', {'ocr_split': True, 'input_replace': '.', 'today': True}), |
1367 | } | 1367 | } |
1368 | 1368 | ||
1369 | RP_COMPARE_LOGIC = { | 1369 | RP_COMPARE_LOGIC = { |
1370 | 'customerName': ('姓名', 'se_name_compare', {}), | 1370 | 'customerName': ('姓名', 'se_name_compare', {}), |
1371 | 'idNum': ('公民身份号码', 'se_common_compare', {}), | 1371 | 'idNum': ('公民身份号码', 'se_common_compare', {}), |
1372 | 'dateOfBirth': ('出生年月', 'se_date_compare', {'input_replace': ''}), | 1372 | 'dateOfBirth': ('出生年月', 'se_date_compare', {'input_replace': ''}), |
1373 | 'idExpiryDate': ('有效期限', 'se_date_compare', {'ocr_split': True, 'input_replace': ''}), | 1373 | 'idExpiryDate': ('有效期限', 'se_date_compare', {'ocr_split': True, 'input_replace': '', 'today': True}), |
1374 | 'hukouProvince': ('住址', 'se_contain_compare', {}), | 1374 | 'hukouProvince': ('住址', 'se_contain_compare', {}), |
1375 | 'hukouCity': ('住址', 'se_contain_compare', {}), | 1375 | 'hukouCity': ('住址', 'se_contain_compare', {}), |
1376 | } | 1376 | } |
... | @@ -1383,7 +1383,7 @@ BL_COMPARE_LOGIC = { | ... | @@ -1383,7 +1383,7 @@ BL_COMPARE_LOGIC = { |
1383 | 'organizationCreditCode': ('注册号', 'se_common_compare', {}), | 1383 | 'organizationCreditCode': ('注册号', 'se_common_compare', {}), |
1384 | 'taxRegistrationCertificateNo': ('注册号', 'se_common_compare', {}), | 1384 | 'taxRegistrationCertificateNo': ('注册号', 'se_common_compare', {}), |
1385 | 'establishmentDate': ('成立日期', 'se_date_compare', {'ocr_replace': True}), | 1385 | 'establishmentDate': ('成立日期', 'se_date_compare', {'ocr_replace': True}), |
1386 | 'businessLicenseDueDate': ('营业期限', 'se_date_compare', {'ocr_split': True, 'long': True, 'ocr_replace': True}), | 1386 | 'businessLicenseDueDate': ('营业期限', 'se_date_compare', {'ocr_split': True, 'long': True, 'ocr_replace': True, 'today': True}), |
1387 | 'organizationType': ('企业类型', 'se_type_compare', {}), | 1387 | 'organizationType': ('企业类型', 'se_type_compare', {}), |
1388 | 'registeredCapital': ('注册资本', 'se_rmb_compare', {}), | 1388 | 'registeredCapital': ('注册资本', 'se_rmb_compare', {}), |
1389 | } | 1389 | } |
... | @@ -1392,17 +1392,18 @@ MVI_COMPARE_LOGIC = { | ... | @@ -1392,17 +1392,18 @@ MVI_COMPARE_LOGIC = { |
1392 | 'vinNo': ('车辆识别代码', 'se_common_compare', {}), | 1392 | 'vinNo': ('车辆识别代码', 'se_common_compare', {}), |
1393 | 'dealer': ('销方名称', 'se_common_compare', {}), | 1393 | 'dealer': ('销方名称', 'se_common_compare', {}), |
1394 | 'vehicleTransactionAmount': ('价税合计小写', 'se_amount_compare', {}), | 1394 | 'vehicleTransactionAmount': ('价税合计小写', 'se_amount_compare', {}), |
1395 | 'customerName': ('购方名称', 'se_name_compare', {}), | 1395 | 'customerName': ('购方名称', 'se_name_compare', {'is_passport': True}), |
1396 | 'idNum': ('购买方身份证号或组织机构代码', 'se_contain_compare_2', {}), | 1396 | 'idNum': ('购买方身份证号或组织机构代码', 'se_contain_compare_2', {}), |
1397 | 'dateOfInvoice': ('开票日期', 'se_date_compare_2', {}), | 1397 | 'dateOfInvoice': ('开票日期', 'se_date_compare_2', {'three_month': True}), |
1398 | 'stamp': ('销售单位章', 'se_common_compare', {}), | 1398 | 'stamp': ('销售单位章', 'se_common_compare', {}), |
1399 | } | 1399 | } |
1400 | 1400 | ||
1401 | UCI_COMPARE_LOGIC = { | 1401 | UCI_COMPARE_LOGIC = { |
1402 | 'vinNo': ('车架号', 'se_common_compare', {}), | 1402 | 'vinNo': ('车架号', 'se_common_compare', {}), |
1403 | 'vehicleTransactionAmount': ('价税合计小写', 'se_amount_compare', {}), | 1403 | 'vehicleTransactionAmount': ('价税合计小写', 'se_amount_compare', {}), |
1404 | 'customerName': ('购方名称', 'se_name_compare', {}), | 1404 | 'customerName': ('购方名称', 'se_name_compare', {'is_passport': True}), |
1405 | 'idNum': ('购方纳税人识别号', 'se_contain_compare_2', {}), | 1405 | 'idNum': ('购方纳税人识别号', 'se_contain_compare_2', {}), |
1406 | 'dateOfInvoice': ('开票日期', 'se_date_compare_2', {'three_month': True}), | ||
1406 | 'stamp': ('发票章', 'se_common_compare', {}), | 1407 | 'stamp': ('发票章', 'se_common_compare', {}), |
1407 | } | 1408 | } |
1408 | 1409 | ... | ... |
... | @@ -821,6 +821,7 @@ def get_se_compare_info(last_obj, application_entity): | ... | @@ -821,6 +821,7 @@ def get_se_compare_info(last_obj, application_entity): |
821 | gb34_field_input.append((consts.SE_GB_USED_FIELD[0], main_name)) | 821 | gb34_field_input.append((consts.SE_GB_USED_FIELD[0], main_name)) |
822 | gb34_field_input.append((consts.SE_GB_USED_FIELD[1], main_num)) | 822 | gb34_field_input.append((consts.SE_GB_USED_FIELD[1], main_num)) |
823 | gb34_field_input.append((consts.SE_GB_USED_FIELD[2], last_obj.first_submmison_date)) | 823 | gb34_field_input.append((consts.SE_GB_USED_FIELD[2], last_obj.first_submmison_date)) |
824 | vehicle_field_input.append((consts.SE_NEW_ADD_FIELD[2], last_obj.first_submmison_date)) | ||
824 | vehicle_field_input.append((consts.SE_NEW_ADD_FIELD[3], consts.SE_STAMP_VALUE)) | 825 | vehicle_field_input.append((consts.SE_NEW_ADD_FIELD[3], consts.SE_STAMP_VALUE)) |
825 | vehicle_info[consts.UCI_EN] = vehicle_field_input | 826 | vehicle_info[consts.UCI_EN] = vehicle_field_input |
826 | vehicle_info[consts.MVC_EN] = gb_field_input | 827 | vehicle_info[consts.MVC_EN] = gb_field_input | ... | ... |
1 | import re | 1 | import re |
2 | import time | 2 | import time |
3 | import numpy as np | ||
3 | from datetime import datetime | 4 | from datetime import datetime |
5 | from dateutil.relativedelta import relativedelta | ||
4 | from .rmb_lower import rmb_handler | 6 | from .rmb_lower import rmb_handler |
5 | # from .rmb_upper import to_rmb_upper | 7 | # from .rmb_upper import to_rmb_upper |
8 | from pandas._libs import tslib | ||
9 | from pandas._libs.tslibs.nattype import NaTType | ||
10 | from pandas.core.indexes.datetimes import DatetimeIndex | ||
6 | 11 | ||
7 | 12 | ||
8 | class Comparison: | 13 | class Comparison: |
... | @@ -179,10 +184,27 @@ class Comparison: | ... | @@ -179,10 +184,27 @@ class Comparison: |
179 | def ca_common_compare(self, input_str, ocr_str, **kwargs): | 184 | def ca_common_compare(self, input_str, ocr_str, **kwargs): |
180 | return self.build_res(input_str == ocr_str) | 185 | return self.build_res(input_str == ocr_str) |
181 | 186 | ||
187 | @staticmethod | ||
188 | def is_after_today(ocr_str): | ||
189 | dt_array, _ = tslib.array_to_datetime( | ||
190 | np.array([ocr_str, ], copy=False, dtype=np.object_), | ||
191 | errors="coerce", | ||
192 | utc=False, | ||
193 | dayfirst=False, | ||
194 | yearfirst=False, | ||
195 | require_iso8601=True, | ||
196 | ) | ||
197 | dti = DatetimeIndex(dt_array, tz=None, name=None) | ||
198 | ts = dti[0] | ||
199 | if isinstance(ts, NaTType) or ts.date() < datetime.today().date(): | ||
200 | return False | ||
201 | else: | ||
202 | return True | ||
203 | |||
182 | def se_date_compare(self, input_str, ocr_str, **kwargs): | 204 | def se_date_compare(self, input_str, ocr_str, **kwargs): |
183 | if kwargs.get('long', False): | 205 | if kwargs.get('long', False): |
184 | if '长期' in ocr_str or '永久' in ocr_str or '***' in ocr_str or '至今' in ocr_str: | 206 | if '长期' in ocr_str or '永久' in ocr_str or '***' in ocr_str or '至今' in ocr_str: |
185 | if input_str in ['2099-12-31', '2099-01-01', '2999-12-31', '2999-01-01']: | 207 | if kwargs.get('today', False) or input_str in ['2099-12-31', '2099-01-01', '2999-12-31', '2999-01-01']: |
186 | return self.RESULT_Y | 208 | return self.RESULT_Y |
187 | else: | 209 | else: |
188 | return self.RESULT_N | 210 | return self.RESULT_N |
... | @@ -195,7 +217,10 @@ class Comparison: | ... | @@ -195,7 +217,10 @@ class Comparison: |
195 | ocr_str = ocr_str.replace('年', '-').replace('月', '-').replace('日', '') | 217 | ocr_str = ocr_str.replace('年', '-').replace('月', '-').replace('日', '') |
196 | if kwargs.get('input_replace') is not None: | 218 | if kwargs.get('input_replace') is not None: |
197 | input_str = input_str.replace('-', kwargs.get('input_replace')) | 219 | input_str = input_str.replace('-', kwargs.get('input_replace')) |
198 | return self.build_res(input_str == ocr_str) | 220 | if kwargs.get('today', False): |
221 | return self.build_res(self.is_after_today(ocr_str)) | ||
222 | else: | ||
223 | return self.build_res(input_str == ocr_str) | ||
199 | 224 | ||
200 | def ca_date_compare(self, input_str, ocr_str, **kwargs): | 225 | def ca_date_compare(self, input_str, ocr_str, **kwargs): |
201 | if kwargs.get('long', False): | 226 | if kwargs.get('long', False): |
... | @@ -306,12 +331,17 @@ class Comparison: | ... | @@ -306,12 +331,17 @@ class Comparison: |
306 | 331 | ||
307 | def se_date_compare_2(self, input_str, ocr_str, **kwargs): | 332 | def se_date_compare_2(self, input_str, ocr_str, **kwargs): |
308 | try: | 333 | try: |
309 | input_date = time.strptime(input_str, "%Y-%m-%d") | 334 | input_date = datetime.strptime(input_str, "%Y-%m-%d").date() |
310 | ocr_date = time.strptime(ocr_str, "%Y-%m-%d") | 335 | if kwargs.get('three_month', False): |
336 | three_month_date = (datetime.today() - relativedelta(months=3)).date() | ||
337 | compare_date = max(input_date, three_month_date) | ||
338 | else: | ||
339 | compare_date = input_date | ||
340 | ocr_date = datetime.strptime(ocr_str, "%Y-%m-%d").date() | ||
311 | except Exception as e: | 341 | except Exception as e: |
312 | return self.RESULT_N | 342 | return self.RESULT_N |
313 | else: | 343 | else: |
314 | return self.build_res(input_date <= ocr_date) | 344 | return self.build_res(compare_date <= ocr_date) |
315 | 345 | ||
316 | 346 | ||
317 | cp = Comparison() | 347 | cp = Comparison() | ... | ... |
-
Please register or sign in to post a comment