e5726dfc by 周伟奇

comparison part

1 parent 80b6584c
...@@ -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
......
...@@ -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
......
...@@ -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 = '''
......
...@@ -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
......
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()
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!