5731e2bd by 周伟奇

GCAP add business type

1 parent a2fbe7b9
...@@ -32,3 +32,5 @@ data/* ...@@ -32,3 +32,5 @@ data/*
32 32
33 # 脚本 33 # 脚本
34 src/*.sh 34 src/*.sh
35
36 test.py
...\ No newline at end of file ...\ No newline at end of file
......
1 PAGE_DEFAULT = 1 1 PAGE_DEFAULT = 1
2 PAGE_SIZE_DEFAULT = 10 2 PAGE_SIZE_DEFAULT = 10
3 3
4 BUSINESS_TYPE = ['HIL', 'AFC'] 4 DOC_SCHEME_LIST = ['Acceptance', 'Settlement', 'Contract Management']
5 HIL_SET = {'HIL', 'hil', 'CO00002', 'C000002'} 5 DATA_SOURCE_LIST = ['POS', 'EAPP', 'Econtract']
6 BUSINESS_TYPE_LIST = ['HIL', 'AFC']
7 HIL_SET = {'HIL', 'HIl', 'HiL', 'Hil', 'hIL', 'hIl', 'hiL', 'hil', 'CO00002'}
6 HIL_PREFIX = 'HIL' 8 HIL_PREFIX = 'HIL'
7 AFC_PREFIX = 'AFC' 9 AFC_PREFIX = 'AFC'
8 10
......
1 import os
2 from settings import conf
3 from .named_enum import DocStatus 1 from .named_enum import DocStatus
2 from .models import HILDoc, AFCDoc
3 from . import consts
4 4
5 5
6 class DocHandler: 6 class DocHandler:
...@@ -24,3 +24,9 @@ class DocHandler: ...@@ -24,3 +24,9 @@ class DocHandler:
24 doc_dict['excel_link'] = self.get_link(doc_id, 'excel') 24 doc_dict['excel_link'] = self.get_link(doc_id, 'excel')
25 return list(doc_queryset) 25 return list(doc_queryset)
26 26
27 @staticmethod
28 def get_doc_class(business_type):
29 is_hil = business_type in consts.HIL_SET
30 doc_class, prefix = (HILDoc, consts.HIL_PREFIX) if is_hil else (AFCDoc, consts.AFC_PREFIX)
31 return doc_class, prefix
32
......
...@@ -75,6 +75,7 @@ class GCAPRecords(models.Model): ...@@ -75,6 +75,7 @@ class GCAPRecords(models.Model):
75 id = models.AutoField(primary_key=True, verbose_name="id") 75 id = models.AutoField(primary_key=True, verbose_name="id")
76 status = models.IntegerField(null=True, verbose_name='状态') 76 status = models.IntegerField(null=True, verbose_name='状态')
77 rating = models.IntegerField(null=True, verbose_name='排名') 77 rating = models.IntegerField(null=True, verbose_name='排名')
78 entity = models.CharField(null=True, max_length=128, verbose_name="业务类型")
78 application_id = models.CharField(max_length=128, verbose_name="申请id") 79 application_id = models.CharField(max_length=128, verbose_name="申请id")
79 application_version = models.IntegerField(null=True, verbose_name='申请版本') 80 application_version = models.IntegerField(null=True, verbose_name='申请版本')
80 intermediate_decision = models.CharField(null=True, max_length=128, verbose_name="中间决策") 81 intermediate_decision = models.CharField(null=True, max_length=128, verbose_name="中间决策")
......
...@@ -14,13 +14,6 @@ class DocScheme(NamedEnum): ...@@ -14,13 +14,6 @@ class DocScheme(NamedEnum):
14 SETTLEMENT = (1, 'Settlement') 14 SETTLEMENT = (1, 'Settlement')
15 CONTRACT_MANAGEMENT = (2, 'Contract Management') 15 CONTRACT_MANAGEMENT = (2, 'Contract Management')
16 16
17 @classmethod
18 def get_value(cls, verbose_name, default=None, raise_on_missing=False):
19 val = super().get_value(verbose_name, default=None, raise_on_missing=False)
20 if val is None:
21 pass
22 return val
23
24 17
25 class BusinessType(NamedEnum): 18 class BusinessType(NamedEnum):
26 AFC = (0, "CO00001") 19 AFC = (0, "CO00001")
......
...@@ -12,7 +12,7 @@ from common import response ...@@ -12,7 +12,7 @@ from common import response
12 from common.mixins import GenericView 12 from common.mixins import GenericView
13 from common.tools.file_tools import file_write 13 from common.tools.file_tools import file_write
14 from common.redis_cache import redis_handler as rh 14 from common.redis_cache import redis_handler as rh
15 from .models import UploadDocRecords, DocStatus, HILDoc, AFCDoc, PriorityApplication, GCAPRecords 15 from .models import UploadDocRecords, DocStatus, PriorityApplication, GCAPRecords
16 from .mixins import DocHandler 16 from .mixins import DocHandler
17 from . import consts 17 from . import consts
18 18
...@@ -59,7 +59,7 @@ doc_list_args = { ...@@ -59,7 +59,7 @@ doc_list_args = {
59 validate=validate.OneOf(DocStatus.get_value_lst())), 59 validate=validate.OneOf(DocStatus.get_value_lst())),
60 'application_id': fields.Str(required=False, validate=validate.Length(max=64)), 60 'application_id': fields.Str(required=False, validate=validate.Length(max=64)),
61 'data_source': fields.Str(required=False, validate=validate.Length(max=64)), 61 'data_source': fields.Str(required=False, validate=validate.Length(max=64)),
62 'business_type': fields.Str(required=True, validate=validate.OneOf(consts.BUSINESS_TYPE)), 62 'business_type': fields.Str(required=True, validate=validate.OneOf(consts.BUSINESS_TYPE_LIST)),
63 'upload_time_start': fields.Date(required=False), 63 'upload_time_start': fields.Date(required=False),
64 'upload_time_end': fields.Date(required=False), 64 'upload_time_end': fields.Date(required=False),
65 'create_time_start': fields.Date(required=False), 65 'create_time_start': fields.Date(required=False),
...@@ -73,6 +73,7 @@ upload_pdf_args = { ...@@ -73,6 +73,7 @@ upload_pdf_args = {
73 application_information = { 73 application_information = {
74 "SUBMIT_DATETIME": fields.DateTime(required=True), 74 "SUBMIT_DATETIME": fields.DateTime(required=True),
75 "STATUS": fields.Int(required=True), 75 "STATUS": fields.Int(required=True),
76 'ENTITY': fields.Str(required=True, validate=validate.Length(max=100)),
76 "RATING": fields.Int(required=True), 77 "RATING": fields.Int(required=True),
77 "APPLICATION_ID": fields.Str(required=True, validate=validate.Length(max=100)), 78 "APPLICATION_ID": fields.Str(required=True, validate=validate.Length(max=100)),
78 "APPLICATION_VERSION": fields.Int(required=True), 79 "APPLICATION_VERSION": fields.Int(required=True),
...@@ -84,7 +85,7 @@ priority_doc_args = { ...@@ -84,7 +85,7 @@ priority_doc_args = {
84 } 85 }
85 86
86 87
87 class UploadDocView(GenericView): 88 class UploadDocView(GenericView, DocHandler):
88 permission_classes = [] 89 permission_classes = []
89 90
90 # 上传(接收)文件接口 91 # 上传(接收)文件接口
...@@ -95,7 +96,6 @@ class UploadDocView(GenericView): ...@@ -95,7 +96,6 @@ class UploadDocView(GenericView):
95 document = args.get('document') 96 document = args.get('document')
96 business_type = document.get('businessType') 97 business_type = document.get('businessType')
97 application_id = application_data.get('applicationId') 98 application_id = application_data.get('applicationId')
98 is_hil = business_type in consts.HIL_SET
99 try: 99 try:
100 # 1. 上传信息记录 100 # 1. 上传信息记录
101 record = UploadDocRecords.objects.create( 101 record = UploadDocRecords.objects.create(
...@@ -116,7 +116,7 @@ class UploadDocView(GenericView): ...@@ -116,7 +116,7 @@ class UploadDocView(GenericView):
116 self.invalid_params(msg='metadataVersionId repeat') 116 self.invalid_params(msg='metadataVersionId repeat')
117 else: 117 else:
118 # 2. 根据业务类型分库存储 118 # 2. 根据业务类型分库存储
119 doc_class, prefix = (HILDoc, consts.HIL_PREFIX) if is_hil else (AFCDoc, consts.AFC_PREFIX) 119 doc_class, prefix = self.get_doc_class(business_type)
120 doc = doc_class.objects.create( 120 doc = doc_class.objects.create(
121 record_id=record.id, 121 record_id=record.id,
122 metadata_version_id=document.get('metadataVersionId'), 122 metadata_version_id=document.get('metadataVersionId'),
...@@ -159,7 +159,7 @@ class UploadDocView(GenericView): ...@@ -159,7 +159,7 @@ class UploadDocView(GenericView):
159 ''' 159 '''
160 160
161 161
162 class PriorityDocView(GenericView): 162 class PriorityDocView(GenericView, DocHandler):
163 permission_classes = [] 163 permission_classes = []
164 164
165 # 优先级订单接口 165 # 优先级订单接口
...@@ -168,9 +168,10 @@ class PriorityDocView(GenericView): ...@@ -168,9 +168,10 @@ class PriorityDocView(GenericView):
168 application_info = args.get('APPLICATION_INFORMATION') 168 application_info = args.get('APPLICATION_INFORMATION')
169 application_id = application_info.get('APPLICATION_ID') 169 application_id = application_info.get('APPLICATION_ID')
170 submit_datetime = application_info.get('SUBMIT_DATETIME') 170 submit_datetime = application_info.get('SUBMIT_DATETIME')
171 entity = application_info.get('ENTITY')
171 submit_datetime = timezone.make_naive(submit_datetime, timezone.get_current_timezone()) 172 submit_datetime = timezone.make_naive(submit_datetime, timezone.get_current_timezone())
172 print(submit_datetime)
173 GCAPRecords.objects.create( 173 GCAPRecords.objects.create(
174 entity=entity,
174 status=application_info.get('STATUS'), 175 status=application_info.get('STATUS'),
175 rating=application_info.get('RATING'), 176 rating=application_info.get('RATING'),
176 application_id=application_id, 177 application_id=application_id,
...@@ -181,13 +182,9 @@ class PriorityDocView(GenericView): ...@@ -181,13 +182,9 @@ class PriorityDocView(GenericView):
181 _, created = PriorityApplication.objects.update_or_create(application_id=application_id, 182 _, created = PriorityApplication.objects.update_or_create(application_id=application_id,
182 defaults={'on_off': True}) 183 defaults={'on_off': True})
183 if created: 184 if created:
184 doc_ids = HILDoc.objects.filter(application_id=application_id, 185 doc_class, prefix = self.get_doc_class(entity)
186 doc_ids = doc_class.objects.filter(application_id=application_id,
185 status=DocStatus.INIT.value).values_list('id', flat=True) 187 status=DocStatus.INIT.value).values_list('id', flat=True)
186 prefix = consts.HIL_PREFIX
187 if len(doc_ids) == 0:
188 doc_ids = AFCDoc.objects.filter(application_id=application_id,
189 status=DocStatus.INIT.value).values_list('id', flat=True)
190 prefix = consts.AFC_PREFIX
191 task_str_list = ['{0}_{1}'.format(prefix, doc_id) for doc_id in doc_ids] 188 task_str_list = ['{0}_{1}'.format(prefix, doc_id) for doc_id in doc_ids]
192 if not task_str_list: 189 if not task_str_list:
193 self.running_log.info( 190 self.running_log.info(
...@@ -226,7 +223,7 @@ class DocView(GenericView, DocHandler): ...@@ -226,7 +223,7 @@ class DocView(GenericView, DocHandler):
226 if create_time_start is not None and create_time_end is not None else Q() 223 if create_time_start is not None and create_time_end is not None else Q()
227 query = application_id_query & status_query & data_source_query & upload_finish_time_query & create_time_query 224 query = application_id_query & status_query & data_source_query & upload_finish_time_query & create_time_query
228 val_tuple = ('id', 'application_id', 'upload_finish_time', 'create_time', 'data_source', 'status') 225 val_tuple = ('id', 'application_id', 'upload_finish_time', 'create_time', 'data_source', 'status')
229 doc_class = HILDoc if business_type == consts.HIL_PREFIX else AFCDoc 226 doc_class, _ = self.get_doc_class(business_type)
230 doc_queryset = doc_class.objects.filter(query).values(*val_tuple).order_by('-upload_finish_time') 227 doc_queryset = doc_class.objects.filter(query).values(*val_tuple).order_by('-upload_finish_time')
231 doc_list = self.get_doc_list(doc_queryset) 228 doc_list = self.get_doc_list(doc_queryset)
232 229
...@@ -250,10 +247,9 @@ class DocView(GenericView, DocHandler): ...@@ -250,10 +247,9 @@ class DocView(GenericView, DocHandler):
250 const_str = '手工单' 247 const_str = '手工单'
251 metadata_version_id = str(int(time.time())) 248 metadata_version_id = str(int(time.time()))
252 upload_finish_time = timezone.now() 249 upload_finish_time = timezone.now()
253 document_scheme = random.choice(['Acceptance', 'Settlement', 'Contract Management']) 250 document_scheme = random.choice(consts.DOC_SCHEME_LIST)
254 data_source = random.choice(['POS', 'EAPP', 'Econtract']) 251 data_source = random.choice(consts.DATA_SOURCE_LIST)
255 business_type = random.choice(['AFC', 'HIL']) 252 business_type = random.choice(consts.BUSINESS_TYPE_LIST)
256 is_hil = business_type in consts.HIL_SET
257 record = UploadDocRecords.objects.create( 253 record = UploadDocRecords.objects.create(
258 metadata_version_id=metadata_version_id, 254 metadata_version_id=metadata_version_id,
259 application_id=const_str, 255 application_id=const_str,
...@@ -269,7 +265,7 @@ class DocView(GenericView, DocHandler): ...@@ -269,7 +265,7 @@ class DocView(GenericView, DocHandler):
269 ) 265 )
270 266
271 # 2. 根据业务类型分库存储 267 # 2. 根据业务类型分库存储
272 doc_class, prefix = (HILDoc, consts.HIL_PREFIX) if is_hil else (AFCDoc, consts.AFC_PREFIX) 268 doc_class, prefix = self.get_doc_class(business_type)
273 doc = doc_class.objects.create( 269 doc = doc_class.objects.create(
274 record_id=record.id, 270 record_id=record.id,
275 metadata_version_id=metadata_version_id, 271 metadata_version_id=metadata_version_id,
...@@ -294,7 +290,7 @@ class DocView(GenericView, DocHandler): ...@@ -294,7 +290,7 @@ class DocView(GenericView, DocHandler):
294 os.makedirs(save_dir_path, exist_ok=True) 290 os.makedirs(save_dir_path, exist_ok=True)
295 file_write(pdf_file, save_file_path) 291 file_write(pdf_file, save_file_path)
296 292
297 self.running_log.info('[mock doc upload success] [args={0}] [record_id={1}] [is_hil={2}] [doc_id={3}] ' 293 self.running_log.info('[mock doc upload success] [args={0}] [record_id={1}] [prefix={2}] [doc_id={3}] '
298 '[is_priority={4}] [enqueue_res={5}]'.format(args, record.id, is_hil, doc.id, 294 '[is_priority={4}] [enqueue_res={5}]'.format(args, record.id, prefix, doc.id,
299 is_priority, redis_res)) 295 is_priority, redis_res))
300 return response.ok() 296 return response.ok()
......
This diff could not be displayed because it is too large.
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!