e5726dfc by 周伟奇

comparison part

1 parent 80b6584c
......@@ -1003,3 +1003,4 @@ APPLICANT_TYPE = ['COAPP', 'CUSTR', 'GAUTR1', 'GAUTR2']
ID_TYPE = ['ITARI', 'ITHKM', 'ITPRC', 'ITPSP', 'ITRES', 'ITTID', 'ITUSC', 'ITCCU']
SECOND_ID_TYPE = ['ITARI', 'ITHKM', 'ITPRC', 'ITPSP', 'ITRES', 'ITTID']
SUB_TYPE = ['CSIBM', 'CSOTH', 'CSSME']
......
......@@ -165,3 +165,107 @@ class Configs(models.Model):
verbose_name = '配置信息'
verbose_name_plural = verbose_name
# 比对信息表
class AFCComparisonInfo(models.Model):
id = models.BigAutoField(primary_key=True, verbose_name="id") # 主键
uniq_seq = models.CharField(max_length=128, verbose_name="唯一序列号") # 索引?
application_id = models.CharField(max_length=64, verbose_name="申请id") # 索引
# CUSTOMER_TYPE = ['TCCOR', 'TCDAS', 'TCFRE', 'TCIAS', 'TCIND', 'TCSEP', 'TCURE']
customer_type = models.CharField(max_length=16, verbose_name="顾客类型")
application_version = models.SmallIntegerField(default=0, verbose_name="应用版本")
vehicle_status = models.CharField(max_length=16, verbose_name="车辆状况") # VEHICLE_STATUS = ['PCUSD', 'PCNEW']
individual_cus_info = models.TextField(verbose_name="个人信息")
usedcar_info = models.TextField(null=True, verbose_name="二手车信息")
corporate_cus_info = models.TextField(null=True, verbose_name="企业信息")
update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间')
create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') # 索引
class Meta:
managed = False
db_table = 'afc_comparison_info'
situ_db_label = 'afc'
# 比对信息表
class HILComparisonInfo(models.Model):
id = models.BigAutoField(primary_key=True, verbose_name="id") # 主键
uniq_seq = models.CharField(max_length=128, verbose_name="唯一序列号") # 索引?
application_id = models.CharField(max_length=64, verbose_name="申请id") # 索引
# CUSTOMER_TYPE = ['TCCOR', 'TCDAS', 'TCFRE', 'TCIAS', 'TCIND', 'TCSEP', 'TCURE']
customer_type = models.CharField(max_length=16, verbose_name="顾客类型")
application_version = models.SmallIntegerField(default=0, verbose_name="应用版本")
vehicle_status = models.CharField(max_length=16, verbose_name="车辆状况") # VEHICLE_STATUS = ['PCUSD', 'PCNEW']
individual_cus_info = models.TextField(verbose_name="个人信息")
usedcar_info = models.TextField(null=True, verbose_name="二手车信息")
corporate_cus_info = models.TextField(null=True, verbose_name="企业信息")
update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间')
create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') # 索引
class Meta:
managed = False
db_table = 'hil_comparison_info'
situ_db_label = 'hil'
# OCR结果累计表
class AFCOCRResult(models.Model):
id = models.AutoField(primary_key=True, verbose_name="id") # 主键
application_id = models.CharField(max_length=64, verbose_name="申请id") # 索引
bs_ocr = models.TextField(null=True, verbose_name="银行流水")
mvi_ocr = models.TextField(null=True, verbose_name="机动车销售统一发票")
ic_ocr = models.TextField(null=True, verbose_name="身份证")
rp_ocr = models.TextField(null=True, verbose_name="居住证")
bc_ocr = models.TextField(null=True, verbose_name="银行卡")
bl_ocr = models.TextField(null=True, verbose_name="营业执照")
uci_ocr = models.TextField(null=True, verbose_name="二手车发票")
eep_ocr = models.TextField(null=True, verbose_name="港澳台通行证")
dl_ocr = models.TextField(null=True, verbose_name="行驶证")
pp_ocr = models.TextField(null=True, verbose_name="护照")
mvc_ocr = models.TextField(null=True, verbose_name="机动车登记证")
vat_ocr = models.TextField(null=True, verbose_name="增值税发票")
update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间')
create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
class Meta:
managed = False
db_table = 'afc_ocr_result'
situ_db_label = 'afc'
# OCR结果累计表
class HILOCRResult(models.Model):
id = models.AutoField(primary_key=True, verbose_name="id") # 主键
application_id = models.CharField(max_length=64, verbose_name="申请id") # 索引
bs_ocr = models.TextField(null=True, verbose_name="银行流水")
mvi_ocr = models.TextField(null=True, verbose_name="机动车销售统一发票")
ic_ocr = models.TextField(null=True, verbose_name="身份证")
rp_ocr = models.TextField(null=True, verbose_name="居住证")
bc_ocr = models.TextField(null=True, verbose_name="银行卡")
bl_ocr = models.TextField(null=True, verbose_name="营业执照")
uci_ocr = models.TextField(null=True, verbose_name="二手车发票")
eep_ocr = models.TextField(null=True, verbose_name="港澳台通行证")
dl_ocr = models.TextField(null=True, verbose_name="行驶证")
pp_ocr = models.TextField(null=True, verbose_name="护照")
mvc_ocr = models.TextField(null=True, verbose_name="机动车登记证")
vat_ocr = models.TextField(null=True, verbose_name="增值税发票")
update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间')
create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
class Meta:
managed = False
db_table = 'hil_ocr_result'
situ_db_label = 'hil'
......
......@@ -15,11 +15,11 @@ from common import response
from common.mixins import GenericView
from common.tools.file_tools import file_write
from common.redis_cache import redis_handler as rh
from .models import UploadDocRecords, DocStatus, PriorityApplication, GCAPRecords
from .models import UploadDocRecords, DocStatus, PriorityApplication, GCAPRecords, AFCComparisonInfo, HILComparisonInfo
from .mixins import DocHandler
from . import consts
from apps.account.authentication import OAuth2AuthenticationWithUser
from celery_compare.tasks import test
from celery_compare.tasks import compare
# restframework将request.body封装至request.data, webargs从request.data中获取参数
......@@ -312,8 +312,23 @@ class CompareView(GenericView):
# pos上传比对信息接口
@use_args(compare_args, location='data')
def post(self, request, args):
self.running_log.info('in')
test.apply_async((args, ), queue='queue_compare')
# 存库
uniq_seq = args.get('uniqSeq')
business_type = args.get('applicationEntity')
application_id = args.get('applicationId')
comparison_class = HILComparisonInfo if business_type in consts.HIL_SET else AFCComparisonInfo
comparison_class.objects.create(
uniq_seq=uniq_seq,
application_id=application_id,
customer_type=args.get('customerType'),
application_version=args.get('applicationVersion'),
vehicle_status=args.get('vehicleStatus'),
individual_cus_info=None,
usedcar_info=None,
corporate_cus_info=None,
)
# 触发比对
compare.apply_async((application_id, business_type, uniq_seq, None), queue='queue_compare')
return response.ok()
post.openapi_doc = '''
......
......@@ -8,4 +8,4 @@ broker = conf.CELERY_BROKER_URL
app = Celery('celery_compare', broker=broker, include=['celery_compare.tasks'])
app.conf.update(worker_max_tasks_per_child=5, timezone='Asia/Shanghai')
\ No newline at end of file
app.conf.update(worker_max_tasks_per_child=5, timezone='Asia/Shanghai')
......
......@@ -6,7 +6,12 @@ compare_log = logging.getLogger('compare')
@app.task
def test(info):
doc = AFCDoc.objects.filter(id=1).first()
compare_log.info(doc.id)
compare_log.info(info)
def compare(application_id, application_entity, uniq_seq, ocr_res_id):
# POS: application_id, application_entity, uniq_seq, None
# OCR: application_id, business_type(application_entity), None, ocr_res_id
# 根据application_id查找最新的比对信息,如果没有,结束
# 分析比对信息,需要比对的license
# 根据application_id查找OCR累计结果指定license字段,如果没有,结束
# 比对信息,将比对结果发送GCAP
pass
......
import os
import smtplib
from email import encoders
from email.header import Header
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
MAIL_SERVER_HOST = 'smtp.exmail.qq.com'
MAIL_SERVER_PORT = 25
TIME_OUT = 50
class MailSender:
def __init__(self, sender, pwd):
self.sender = sender
self.pwd = pwd
self.server = smtplib.SMTP(timeout=TIME_OUT)
self.server.debuglevel = 0
self.server.connect(host=MAIL_SERVER_HOST,
port=MAIL_SERVER_PORT,)
self.server.login(self.sender, self.pwd)
def close(self):
self.server.close()
def send(self, to_addrs, subject, content, file_list=[]):
msg = MIMEMultipart()
for att_file in file_list:
att = MIMEBase('application', 'octet-stream')
att.set_payload(open(att_file, 'rb').read())
encoders.encode_base64(att)
att.add_header('Content-Disposition',
'attachment',
filename=Header(os.path.basename(att_file), 'utf-8').encode())
msg.attach(att)
msg['Subject'] = Header(subject, 'utf-8')
msg['From'] = self.sender
msg['To'] = ','.join(to_addrs)
content = u'Hi:<br><br>' + \
content + \
u'<br><br>祝好!<br><br><br>本邮件为系统自动发送,请勿直接回复!<hr>'
msg.attach(MIMEText(content.encode('utf-8'), 'html', 'utf-8'))
self.server.sendmail(self.sender, to_addrs, msg.as_string())
# smtplib.SMTPServerDisconnected
# if __name__ == '__main__':
# mail_sender = MailSender()
# mail_sender.send(['1304057458@qq.com'], 'hello', 'world.', [])
# mail_sender.close()
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!