comparison part
Showing
9 changed files
with
134 additions
and
66 deletions
| ... | @@ -1003,3 +1003,4 @@ APPLICANT_TYPE = ['COAPP', 'CUSTR', 'GAUTR1', 'GAUTR2'] | ... | @@ -1003,3 +1003,4 @@ APPLICANT_TYPE = ['COAPP', 'CUSTR', 'GAUTR1', 'GAUTR2'] |
| 1003 | ID_TYPE = ['ITARI', 'ITHKM', 'ITPRC', 'ITPSP', 'ITRES', 'ITTID', 'ITUSC', 'ITCCU'] | 1003 | ID_TYPE = ['ITARI', 'ITHKM', 'ITPRC', 'ITPSP', 'ITRES', 'ITTID', 'ITUSC', 'ITCCU'] |
| 1004 | SECOND_ID_TYPE = ['ITARI', 'ITHKM', 'ITPRC', 'ITPSP', 'ITRES', 'ITTID'] | 1004 | SECOND_ID_TYPE = ['ITARI', 'ITHKM', 'ITPRC', 'ITPSP', 'ITRES', 'ITTID'] |
| 1005 | SUB_TYPE = ['CSIBM', 'CSOTH', 'CSSME'] | 1005 | SUB_TYPE = ['CSIBM', 'CSOTH', 'CSSME'] |
| 1006 | ... | ... |
src/apps/doc/consts_bak.py
deleted
100644 → 0
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
| ... | @@ -165,3 +165,107 @@ class Configs(models.Model): | ... | @@ -165,3 +165,107 @@ class Configs(models.Model): |
| 165 | verbose_name = '配置信息' | 165 | verbose_name = '配置信息' |
| 166 | verbose_name_plural = verbose_name | 166 | verbose_name_plural = verbose_name |
| 167 | 167 | ||
| 168 | |||
| 169 | # 比对信息表 | ||
| 170 | class AFCComparisonInfo(models.Model): | ||
| 171 | id = models.BigAutoField(primary_key=True, verbose_name="id") # 主键 | ||
| 172 | uniq_seq = models.CharField(max_length=128, verbose_name="唯一序列号") # 索引? | ||
| 173 | application_id = models.CharField(max_length=64, verbose_name="申请id") # 索引 | ||
| 174 | # CUSTOMER_TYPE = ['TCCOR', 'TCDAS', 'TCFRE', 'TCIAS', 'TCIND', 'TCSEP', 'TCURE'] | ||
| 175 | customer_type = models.CharField(max_length=16, verbose_name="顾客类型") | ||
| 176 | application_version = models.SmallIntegerField(default=0, verbose_name="应用版本") | ||
| 177 | vehicle_status = models.CharField(max_length=16, verbose_name="车辆状况") # VEHICLE_STATUS = ['PCUSD', 'PCNEW'] | ||
| 178 | |||
| 179 | individual_cus_info = models.TextField(verbose_name="个人信息") | ||
| 180 | |||
| 181 | usedcar_info = models.TextField(null=True, verbose_name="二手车信息") | ||
| 182 | |||
| 183 | corporate_cus_info = models.TextField(null=True, verbose_name="企业信息") | ||
| 184 | |||
| 185 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') | ||
| 186 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') # 索引 | ||
| 187 | |||
| 188 | class Meta: | ||
| 189 | managed = False | ||
| 190 | db_table = 'afc_comparison_info' | ||
| 191 | situ_db_label = 'afc' | ||
| 192 | |||
| 193 | |||
| 194 | # 比对信息表 | ||
| 195 | class HILComparisonInfo(models.Model): | ||
| 196 | id = models.BigAutoField(primary_key=True, verbose_name="id") # 主键 | ||
| 197 | uniq_seq = models.CharField(max_length=128, verbose_name="唯一序列号") # 索引? | ||
| 198 | application_id = models.CharField(max_length=64, verbose_name="申请id") # 索引 | ||
| 199 | # CUSTOMER_TYPE = ['TCCOR', 'TCDAS', 'TCFRE', 'TCIAS', 'TCIND', 'TCSEP', 'TCURE'] | ||
| 200 | customer_type = models.CharField(max_length=16, verbose_name="顾客类型") | ||
| 201 | application_version = models.SmallIntegerField(default=0, verbose_name="应用版本") | ||
| 202 | vehicle_status = models.CharField(max_length=16, verbose_name="车辆状况") # VEHICLE_STATUS = ['PCUSD', 'PCNEW'] | ||
| 203 | |||
| 204 | individual_cus_info = models.TextField(verbose_name="个人信息") | ||
| 205 | |||
| 206 | usedcar_info = models.TextField(null=True, verbose_name="二手车信息") | ||
| 207 | |||
| 208 | corporate_cus_info = models.TextField(null=True, verbose_name="企业信息") | ||
| 209 | |||
| 210 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') | ||
| 211 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') # 索引 | ||
| 212 | |||
| 213 | class Meta: | ||
| 214 | managed = False | ||
| 215 | db_table = 'hil_comparison_info' | ||
| 216 | situ_db_label = 'hil' | ||
| 217 | |||
| 218 | |||
| 219 | # OCR结果累计表 | ||
| 220 | class AFCOCRResult(models.Model): | ||
| 221 | id = models.AutoField(primary_key=True, verbose_name="id") # 主键 | ||
| 222 | application_id = models.CharField(max_length=64, verbose_name="申请id") # 索引 | ||
| 223 | |||
| 224 | bs_ocr = models.TextField(null=True, verbose_name="银行流水") | ||
| 225 | mvi_ocr = models.TextField(null=True, verbose_name="机动车销售统一发票") | ||
| 226 | ic_ocr = models.TextField(null=True, verbose_name="身份证") | ||
| 227 | rp_ocr = models.TextField(null=True, verbose_name="居住证") | ||
| 228 | bc_ocr = models.TextField(null=True, verbose_name="银行卡") | ||
| 229 | bl_ocr = models.TextField(null=True, verbose_name="营业执照") | ||
| 230 | uci_ocr = models.TextField(null=True, verbose_name="二手车发票") | ||
| 231 | eep_ocr = models.TextField(null=True, verbose_name="港澳台通行证") | ||
| 232 | dl_ocr = models.TextField(null=True, verbose_name="行驶证") | ||
| 233 | pp_ocr = models.TextField(null=True, verbose_name="护照") | ||
| 234 | mvc_ocr = models.TextField(null=True, verbose_name="机动车登记证") | ||
| 235 | vat_ocr = models.TextField(null=True, verbose_name="增值税发票") | ||
| 236 | |||
| 237 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') | ||
| 238 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') | ||
| 239 | |||
| 240 | class Meta: | ||
| 241 | managed = False | ||
| 242 | db_table = 'afc_ocr_result' | ||
| 243 | situ_db_label = 'afc' | ||
| 244 | |||
| 245 | |||
| 246 | # OCR结果累计表 | ||
| 247 | class HILOCRResult(models.Model): | ||
| 248 | id = models.AutoField(primary_key=True, verbose_name="id") # 主键 | ||
| 249 | application_id = models.CharField(max_length=64, verbose_name="申请id") # 索引 | ||
| 250 | |||
| 251 | bs_ocr = models.TextField(null=True, verbose_name="银行流水") | ||
| 252 | mvi_ocr = models.TextField(null=True, verbose_name="机动车销售统一发票") | ||
| 253 | ic_ocr = models.TextField(null=True, verbose_name="身份证") | ||
| 254 | rp_ocr = models.TextField(null=True, verbose_name="居住证") | ||
| 255 | bc_ocr = models.TextField(null=True, verbose_name="银行卡") | ||
| 256 | bl_ocr = models.TextField(null=True, verbose_name="营业执照") | ||
| 257 | uci_ocr = models.TextField(null=True, verbose_name="二手车发票") | ||
| 258 | eep_ocr = models.TextField(null=True, verbose_name="港澳台通行证") | ||
| 259 | dl_ocr = models.TextField(null=True, verbose_name="行驶证") | ||
| 260 | pp_ocr = models.TextField(null=True, verbose_name="护照") | ||
| 261 | mvc_ocr = models.TextField(null=True, verbose_name="机动车登记证") | ||
| 262 | vat_ocr = models.TextField(null=True, verbose_name="增值税发票") | ||
| 263 | |||
| 264 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') | ||
| 265 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') | ||
| 266 | |||
| 267 | class Meta: | ||
| 268 | managed = False | ||
| 269 | db_table = 'hil_ocr_result' | ||
| 270 | situ_db_label = 'hil' | ||
| 271 | ... | ... |
src/apps/doc/ocr/wb_bak.py
deleted
100644 → 0
This diff is collapsed.
Click to expand it.
| ... | @@ -15,11 +15,11 @@ from common import response | ... | @@ -15,11 +15,11 @@ from common import response |
| 15 | from common.mixins import GenericView | 15 | from common.mixins import GenericView |
| 16 | from common.tools.file_tools import file_write | 16 | from common.tools.file_tools import file_write |
| 17 | from common.redis_cache import redis_handler as rh | 17 | from common.redis_cache import redis_handler as rh |
| 18 | from .models import UploadDocRecords, DocStatus, PriorityApplication, GCAPRecords | 18 | from .models import UploadDocRecords, DocStatus, PriorityApplication, GCAPRecords, AFCComparisonInfo, HILComparisonInfo |
| 19 | from .mixins import DocHandler | 19 | from .mixins import DocHandler |
| 20 | from . import consts | 20 | from . import consts |
| 21 | from apps.account.authentication import OAuth2AuthenticationWithUser | 21 | from apps.account.authentication import OAuth2AuthenticationWithUser |
| 22 | from celery_compare.tasks import test | 22 | from celery_compare.tasks import compare |
| 23 | 23 | ||
| 24 | 24 | ||
| 25 | # restframework将request.body封装至request.data, webargs从request.data中获取参数 | 25 | # restframework将request.body封装至request.data, webargs从request.data中获取参数 |
| ... | @@ -312,8 +312,23 @@ class CompareView(GenericView): | ... | @@ -312,8 +312,23 @@ class CompareView(GenericView): |
| 312 | # pos上传比对信息接口 | 312 | # pos上传比对信息接口 |
| 313 | @use_args(compare_args, location='data') | 313 | @use_args(compare_args, location='data') |
| 314 | def post(self, request, args): | 314 | def post(self, request, args): |
| 315 | self.running_log.info('in') | 315 | # 存库 |
| 316 | test.apply_async((args, ), queue='queue_compare') | 316 | uniq_seq = args.get('uniqSeq') |
| 317 | business_type = args.get('applicationEntity') | ||
| 318 | application_id = args.get('applicationId') | ||
| 319 | comparison_class = HILComparisonInfo if business_type in consts.HIL_SET else AFCComparisonInfo | ||
| 320 | comparison_class.objects.create( | ||
| 321 | uniq_seq=uniq_seq, | ||
| 322 | application_id=application_id, | ||
| 323 | customer_type=args.get('customerType'), | ||
| 324 | application_version=args.get('applicationVersion'), | ||
| 325 | vehicle_status=args.get('vehicleStatus'), | ||
| 326 | individual_cus_info=None, | ||
| 327 | usedcar_info=None, | ||
| 328 | corporate_cus_info=None, | ||
| 329 | ) | ||
| 330 | # 触发比对 | ||
| 331 | compare.apply_async((application_id, business_type, uniq_seq, None), queue='queue_compare') | ||
| 317 | return response.ok() | 332 | return response.ok() |
| 318 | 333 | ||
| 319 | post.openapi_doc = ''' | 334 | post.openapi_doc = ''' | ... | ... |
| ... | @@ -8,4 +8,4 @@ broker = conf.CELERY_BROKER_URL | ... | @@ -8,4 +8,4 @@ broker = conf.CELERY_BROKER_URL |
| 8 | 8 | ||
| 9 | app = Celery('celery_compare', broker=broker, include=['celery_compare.tasks']) | 9 | app = Celery('celery_compare', broker=broker, include=['celery_compare.tasks']) |
| 10 | 10 | ||
| 11 | app.conf.update(worker_max_tasks_per_child=5, timezone='Asia/Shanghai') | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 11 | app.conf.update(worker_max_tasks_per_child=5, timezone='Asia/Shanghai') | ... | ... |
| ... | @@ -6,7 +6,12 @@ compare_log = logging.getLogger('compare') | ... | @@ -6,7 +6,12 @@ compare_log = logging.getLogger('compare') |
| 6 | 6 | ||
| 7 | 7 | ||
| 8 | @app.task | 8 | @app.task |
| 9 | def test(info): | 9 | def compare(application_id, application_entity, uniq_seq, ocr_res_id): |
| 10 | doc = AFCDoc.objects.filter(id=1).first() | 10 | # POS: application_id, application_entity, uniq_seq, None |
| 11 | compare_log.info(doc.id) | 11 | # OCR: application_id, business_type(application_entity), None, ocr_res_id |
| 12 | compare_log.info(info) | 12 | |
| 13 | # 根据application_id查找最新的比对信息,如果没有,结束 | ||
| 14 | # 分析比对信息,需要比对的license | ||
| 15 | # 根据application_id查找OCR累计结果指定license字段,如果没有,结束 | ||
| 16 | # 比对信息,将比对结果发送GCAP | ||
| 17 | pass | ... | ... |
src/common/tools/mail.py
deleted
100644 → 0
| 1 | import os | ||
| 2 | import smtplib | ||
| 3 | from email import encoders | ||
| 4 | from email.header import Header | ||
| 5 | from email.mime.base import MIMEBase | ||
| 6 | from email.mime.multipart import MIMEMultipart | ||
| 7 | from email.mime.text import MIMEText | ||
| 8 | |||
| 9 | MAIL_SERVER_HOST = 'smtp.exmail.qq.com' | ||
| 10 | MAIL_SERVER_PORT = 25 | ||
| 11 | |||
| 12 | TIME_OUT = 50 | ||
| 13 | |||
| 14 | |||
| 15 | class MailSender: | ||
| 16 | |||
| 17 | def __init__(self, sender, pwd): | ||
| 18 | self.sender = sender | ||
| 19 | self.pwd = pwd | ||
| 20 | self.server = smtplib.SMTP(timeout=TIME_OUT) | ||
| 21 | self.server.debuglevel = 0 | ||
| 22 | self.server.connect(host=MAIL_SERVER_HOST, | ||
| 23 | port=MAIL_SERVER_PORT,) | ||
| 24 | self.server.login(self.sender, self.pwd) | ||
| 25 | |||
| 26 | def close(self): | ||
| 27 | self.server.close() | ||
| 28 | |||
| 29 | def send(self, to_addrs, subject, content, file_list=[]): | ||
| 30 | msg = MIMEMultipart() | ||
| 31 | |||
| 32 | for att_file in file_list: | ||
| 33 | att = MIMEBase('application', 'octet-stream') | ||
| 34 | att.set_payload(open(att_file, 'rb').read()) | ||
| 35 | encoders.encode_base64(att) | ||
| 36 | att.add_header('Content-Disposition', | ||
| 37 | 'attachment', | ||
| 38 | filename=Header(os.path.basename(att_file), 'utf-8').encode()) | ||
| 39 | msg.attach(att) | ||
| 40 | |||
| 41 | msg['Subject'] = Header(subject, 'utf-8') | ||
| 42 | msg['From'] = self.sender | ||
| 43 | msg['To'] = ','.join(to_addrs) | ||
| 44 | |||
| 45 | content = u'Hi:<br><br>' + \ | ||
| 46 | content + \ | ||
| 47 | u'<br><br>祝好!<br><br><br>本邮件为系统自动发送,请勿直接回复!<hr>' | ||
| 48 | |||
| 49 | msg.attach(MIMEText(content.encode('utf-8'), 'html', 'utf-8')) | ||
| 50 | self.server.sendmail(self.sender, to_addrs, msg.as_string()) | ||
| 51 | # smtplib.SMTPServerDisconnected | ||
| 52 | |||
| 53 | |||
| 54 | # if __name__ == '__main__': | ||
| 55 | # mail_sender = MailSender() | ||
| 56 | # mail_sender.send(['1304057458@qq.com'], 'hello', 'world.', []) | ||
| 57 | # mail_sender.close() |
-
Please register or sign in to post a comment