fix GCAP
Showing
4 changed files
with
86 additions
and
12 deletions
| 1 | -r github.txt | 1 | -r github.txt |
| 2 | 2 | ||
| 3 | aiohttp==3.6.2 | 3 | aiohttp==3.6.2 |
| 4 | appdirs==1.4.4 | ||
| 4 | async-timeout==3.0.1 | 5 | async-timeout==3.0.1 |
| 5 | attrs==19.3.0 | 6 | attrs==19.3.0 |
| 6 | certifi==2016.2.28 | 7 | cached-property==1.5.1 |
| 8 | certifi==2020.6.20 | ||
| 7 | chardet==3.0.4 | 9 | chardet==3.0.4 |
| 10 | defusedxml==0.6.0 | ||
| 8 | Django==2.1 | 11 | Django==2.1 |
| 9 | djangorestframework==3.9.0 | 12 | djangorestframework==3.9.0 |
| 10 | djangorestframework-jwt==1.11.0 | 13 | djangorestframework-jwt==1.11.0 |
| 11 | idna==2.9 | 14 | idna==2.9 |
| 12 | idna-ssl==1.1.0 | 15 | idna-ssl==1.1.0 |
| 16 | isodate==0.6.0 | ||
| 17 | lxml==4.5.1 | ||
| 13 | marshmallow==3.6.1 | 18 | marshmallow==3.6.1 |
| 14 | multidict==4.7.6 | 19 | multidict==4.7.6 |
| 15 | pdfminer3k==1.3.4 | 20 | pdfminer3k==1.3.4 |
| ... | @@ -20,9 +25,14 @@ PyMuPDF==1.17.0 | ... | @@ -20,9 +25,14 @@ PyMuPDF==1.17.0 |
| 20 | PyMySQL==0.9.3 | 25 | PyMySQL==0.9.3 |
| 21 | pytz==2020.1 | 26 | pytz==2020.1 |
| 22 | redis==3.4.1 | 27 | redis==3.4.1 |
| 28 | requests==2.24.0 | ||
| 29 | requests-toolbelt==0.9.1 | ||
| 23 | six==1.14.0 | 30 | six==1.14.0 |
| 24 | SQLAlchemy==0.9.10 | 31 | SQLAlchemy==0.9.10 |
| 25 | typing-extensions==3.7.4.2 | 32 | typing-extensions==3.7.4.2 |
| 33 | urllib3==1.25.9 | ||
| 26 | webargs==6.1.0 | 34 | webargs==6.1.0 |
| 35 | XlsxWriter==1.2.9 | ||
| 27 | xlwt==1.3.0 | 36 | xlwt==1.3.0 |
| 28 | yarl==1.4.2 | 37 | yarl==1.4.2 |
| 38 | zeep==3.4.0 | ... | ... |
| ... | @@ -71,10 +71,26 @@ class AFCDoc(models.Model): | ... | @@ -71,10 +71,26 @@ class AFCDoc(models.Model): |
| 71 | db_table = 'afc_doc' | 71 | db_table = 'afc_doc' |
| 72 | 72 | ||
| 73 | 73 | ||
| 74 | class GCAPRecords(models.Model): | ||
| 75 | id = models.AutoField(primary_key=True, verbose_name="id") | ||
| 76 | status = models.IntegerField(null=True, verbose_name='状态') | ||
| 77 | rating = models.IntegerField(null=True, verbose_name='排名') | ||
| 78 | application_id = models.CharField(max_length=128, verbose_name="申请id") | ||
| 79 | application_version = models.IntegerField(null=True, verbose_name='申请版本') | ||
| 80 | intermediate_decision = models.CharField(null=True, max_length=128, verbose_name="中间决策") | ||
| 81 | submit_datetime = models.DateTimeField(null=True, verbose_name='提交时间') | ||
| 82 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') | ||
| 83 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') | ||
| 84 | |||
| 85 | class Meta: | ||
| 86 | managed = False | ||
| 87 | situ_db_label = 'afc' | ||
| 88 | db_table = 'gcap_records' | ||
| 89 | |||
| 90 | |||
| 74 | class PriorityApplication(models.Model): | 91 | class PriorityApplication(models.Model): |
| 75 | id = models.AutoField(primary_key=True, verbose_name="id") | 92 | id = models.AutoField(primary_key=True, verbose_name="id") |
| 76 | application_id = models.CharField(max_length=64, verbose_name="申请id") # 联合索引 | 93 | application_id = models.CharField(max_length=64, verbose_name="申请id") # 联合索引 |
| 77 | business_type = models.CharField(max_length=64, verbose_name="业务类型") # 联合索引 | ||
| 78 | on_off = models.BooleanField(default=True, verbose_name="是否有效") # 联合索引 | 94 | on_off = models.BooleanField(default=True, verbose_name="是否有效") # 联合索引 |
| 79 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') | 95 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') |
| 80 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') | 96 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') | ... | ... |
| ... | @@ -7,3 +7,27 @@ class DocStatus(NamedEnum): | ... | @@ -7,3 +7,27 @@ class DocStatus(NamedEnum): |
| 7 | PROCESS_FAILED = (2, '识别失败') | 7 | PROCESS_FAILED = (2, '识别失败') |
| 8 | UPLOAD_FAILED = (3, '同步失败') | 8 | UPLOAD_FAILED = (3, '同步失败') |
| 9 | COMPLETE = (4, '已完成') | 9 | COMPLETE = (4, '已完成') |
| 10 | |||
| 11 | |||
| 12 | class DocScheme(NamedEnum): | ||
| 13 | ACCEPTANCE = (0, "Acceptance") | ||
| 14 | SETTLEMENT = (1, 'Settlement') | ||
| 15 | CONTRACT_MANAGEMENT = (2, 'Contract Management') | ||
| 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 | |||
| 25 | class BusinessType(NamedEnum): | ||
| 26 | AFC = (0, "CO00001") | ||
| 27 | HIL = (1, 'CO00002') | ||
| 28 | |||
| 29 | |||
| 30 | class DataSource(NamedEnum): | ||
| 31 | POS = (0, "POS") | ||
| 32 | EAPP = (1, 'EAPP') | ||
| 33 | ECONTRACT = (2, 'Econtract') | ... | ... |
| ... | @@ -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 | 15 | from .models import UploadDocRecords, DocStatus, HILDoc, AFCDoc, PriorityApplication, GCAPRecords |
| 16 | from .mixins import DocHandler | 16 | from .mixins import DocHandler |
| 17 | from . import consts | 17 | from . import consts |
| 18 | 18 | ||
| ... | @@ -70,10 +70,17 @@ upload_pdf_args = { | ... | @@ -70,10 +70,17 @@ upload_pdf_args = { |
| 70 | 'pdf_file': fields.Raw(required=True), | 70 | 'pdf_file': fields.Raw(required=True), |
| 71 | } | 71 | } |
| 72 | 72 | ||
| 73 | application_information = { | ||
| 74 | "SUBMIT_DATETIME": fields.DateTime(required=True), | ||
| 75 | "STATUS": fields.Int(required=True), | ||
| 76 | "RATING": fields.Int(required=True), | ||
| 77 | "APPLICATION_ID": fields.Str(required=True, validate=validate.Length(max=100)), | ||
| 78 | "APPLICATION_VERSION": fields.Int(required=True), | ||
| 79 | "INTERMEDIATE_DECISION": fields.Str(required=True, validate=validate.Length(max=100)), | ||
| 80 | } | ||
| 73 | 81 | ||
| 74 | priority_doc_args = { | 82 | priority_doc_args = { |
| 75 | 'applicationId': fields.Str(required=True, validate=validate.Length(max=64)), | 83 | 'APPLICATION_INFORMATION': fields.Nested(application_information, required=True) |
| 76 | 'businessType': fields.Str(required=True, validate=validate.OneOf(consts.BUSINESS_TYPE)), | ||
| 77 | } | 84 | } |
| 78 | 85 | ||
| 79 | 86 | ||
| ... | @@ -158,17 +165,34 @@ class PriorityDocView(GenericView): | ... | @@ -158,17 +165,34 @@ class PriorityDocView(GenericView): |
| 158 | # 优先级订单接口 | 165 | # 优先级订单接口 |
| 159 | @use_args(priority_doc_args, location='data') | 166 | @use_args(priority_doc_args, location='data') |
| 160 | def post(self, request, args): | 167 | def post(self, request, args): |
| 161 | application_id = args.get('applicationId') | 168 | application_info = args.get('APPLICATION_INFORMATION') |
| 162 | business_type = args.get('businessType') | 169 | application_id = application_info.get('APPLICATION_ID') |
| 170 | submit_datetime = application_info.get('SUBMIT_DATETIME') | ||
| 171 | submit_datetime = timezone.make_naive(submit_datetime, timezone.get_current_timezone()) | ||
| 172 | print(submit_datetime) | ||
| 173 | GCAPRecords.objects.create( | ||
| 174 | status=application_info.get('STATUS'), | ||
| 175 | rating=application_info.get('RATING'), | ||
| 176 | application_id=application_id, | ||
| 177 | application_version=application_info.get('APPLICATION_VERSION'), | ||
| 178 | intermediate_decision=application_info.get('INTERMEDIATE_DECISION'), | ||
| 179 | submit_datetime=submit_datetime, | ||
| 180 | ) | ||
| 163 | _, created = PriorityApplication.objects.update_or_create(application_id=application_id, | 181 | _, created = PriorityApplication.objects.update_or_create(application_id=application_id, |
| 164 | business_type=business_type, | ||
| 165 | defaults={'on_off': True}) | 182 | defaults={'on_off': True}) |
| 166 | if created: | 183 | if created: |
| 167 | doc_class, prefix = (HILDoc, consts.HIL_PREFIX) if business_type == consts.HIL_PREFIX \ | 184 | doc_ids = HILDoc.objects.filter(application_id=application_id, |
| 168 | else (AFCDoc, consts.AFC_PREFIX) | 185 | status=DocStatus.INIT.value).values_list('id', flat=True) |
| 169 | doc_ids = doc_class.objects.filter(application_id=application_id, | 186 | prefix = consts.HIL_PREFIX |
| 187 | if len(doc_ids) == 0: | ||
| 188 | doc_ids = AFCDoc.objects.filter(application_id=application_id, | ||
| 170 | status=DocStatus.INIT.value).values_list('id', flat=True) | 189 | status=DocStatus.INIT.value).values_list('id', flat=True) |
| 190 | prefix = consts.AFC_PREFIX | ||
| 171 | task_str_list = ['{0}_{1}'.format(prefix, doc_id) for doc_id in doc_ids] | 191 | task_str_list = ['{0}_{1}'.format(prefix, doc_id) for doc_id in doc_ids] |
| 192 | if not task_str_list: | ||
| 193 | self.running_log.info( | ||
| 194 | '[priority doc success] [args={0}] [task_str_list={1}]'.format(args, task_str_list)) | ||
| 195 | else: | ||
| 172 | enqueue_res = rh.enqueue(task_str_list, is_priority=True) | 196 | enqueue_res = rh.enqueue(task_str_list, is_priority=True) |
| 173 | self.running_log.info('[priority doc success] [args={0}] [task_str_list={1}] [enqueue_res={2}]'.format( | 197 | self.running_log.info('[priority doc success] [args={0}] [task_str_list={1}] [enqueue_res={2}]'.format( |
| 174 | args, task_str_list, enqueue_res)) | 198 | args, task_str_list, enqueue_res)) |
| ... | @@ -192,7 +216,7 @@ class DocView(GenericView, DocHandler): | ... | @@ -192,7 +216,7 @@ class DocView(GenericView, DocHandler): |
| 192 | create_time_end = args.get('create_time_end') | 216 | create_time_end = args.get('create_time_end') |
| 193 | 217 | ||
| 194 | status_query = Q(status=status) if status is not None else Q() | 218 | status_query = Q(status=status) if status is not None else Q() |
| 195 | application_id_query = Q(application_id=application_id) if application_id is not None else Q() | 219 | application_id_query = Q(application_id__contains=application_id) if application_id is not None else Q() |
| 196 | data_source_query = Q(data_source=data_source) if data_source is not None else Q() | 220 | data_source_query = Q(data_source=data_source) if data_source is not None else Q() |
| 197 | upload_finish_time_query = Q(upload_finish_time__gte=upload_time_start, | 221 | upload_finish_time_query = Q(upload_finish_time__gte=upload_time_start, |
| 198 | upload_finish_time__lt=upload_time_end + datetime.timedelta(days=1))\ | 222 | upload_finish_time__lt=upload_time_end + datetime.timedelta(days=1))\ | ... | ... |
-
Please register or sign in to post a comment