1
0
forked from erp-dev/erp
Files
erpnew/api_v1/management/commands/sync_mdy_plate_orders.py

71 lines
2.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from django.core.management.base import BaseCommand
from api_v1.mdy_plate_order_sync import sync_mdy_plate_orders_to_staging
class Command(BaseCommand):
help = '同步明道云开版数据表到暂存表(可选抓取跨表关联数据)'
def add_arguments(self, parser):
parser.add_argument('--page-size', type=int, default=100)
parser.add_argument('--max-pages', type=int, default=None)
parser.add_argument('--max-records', type=int, default=None)
# 默认抓取关联表数据;如需关闭可显式传 --without-related
parser.add_argument('--with-related', dest='with_related', action='store_true', default=True)
parser.add_argument('--without-related', dest='with_related', action='store_false')
parser.add_argument('--max-related-per-type', type=int, default=5)
parser.add_argument(
'--request-interval-seconds',
type=float,
default=0.02,
help='每次明道云请求之间的最小间隔用于限流50qps 建议 >= 0.02',
)
parser.add_argument(
'--sort-direction',
choices=['asc', 'desc'],
default='asc',
help='按 ctime 升序asc或降序desc抓取',
)
parser.add_argument(
'--use-checkpoint',
dest='use_checkpoint',
action='store_true',
default=True,
help='读取 DataSync 游标(默认开启)',
)
parser.add_argument(
'--skip-checkpoint',
dest='use_checkpoint',
action='store_false',
help='忽略 DataSync 游标,从第一页开始',
)
parser.add_argument(
'--update-checkpoint',
dest='update_checkpoint',
action='store_true',
default=True,
help='同步完成后写入 DataSync 记录(默认开启)',
)
parser.add_argument(
'--skip-checkpoint-write',
dest='update_checkpoint',
action='store_false',
help='本次同步不写入 DataSync 记录',
)
def handle(self, *args, **options):
payload = sync_mdy_plate_orders_to_staging(
page_size=options['page_size'],
max_pages=options['max_pages'],
max_records=options['max_records'],
with_related=options['with_related'],
max_related_per_type=options['max_related_per_type'],
request_interval_seconds=options['request_interval_seconds'],
use_checkpoint=options['use_checkpoint'],
update_checkpoint=options['update_checkpoint'],
sort_direction=options['sort_direction'],
)
self.stdout.write(self.style.SUCCESS(str(payload)))