forked from erp-dev/erp
feat: added fields like plate_order api into printing jobs api
This commit is contained in:
@@ -258,8 +258,12 @@ class PrintingJobListSerializer(serializers.ModelSerializer):
|
|||||||
product_name = serializers.CharField(source='product.name', read_only=True)
|
product_name = serializers.CharField(source='product.name', read_only=True)
|
||||||
product_image_url = serializers.SerializerMethodField()
|
product_image_url = serializers.SerializerMethodField()
|
||||||
status = serializers.CharField(read_only=True)
|
status = serializers.CharField(read_only=True)
|
||||||
|
status_id = serializers.IntegerField(read_only=True)
|
||||||
work_state_display = serializers.SerializerMethodField()
|
work_state_display = serializers.SerializerMethodField()
|
||||||
is_completed = serializers.BooleanField(read_only=True)
|
is_completed = serializers.BooleanField(read_only=True)
|
||||||
|
has_started = serializers.BooleanField(read_only=True)
|
||||||
|
progress_percentage = serializers.FloatField(read_only=True)
|
||||||
|
last_completed_state = serializers.CharField(read_only=True)
|
||||||
business_object_id = serializers.SerializerMethodField()
|
business_object_id = serializers.SerializerMethodField()
|
||||||
batch_advance_records = serializers.SerializerMethodField()
|
batch_advance_records = serializers.SerializerMethodField()
|
||||||
|
|
||||||
@@ -270,11 +274,17 @@ class PrintingJobListSerializer(serializers.ModelSerializer):
|
|||||||
'product_image_url',
|
'product_image_url',
|
||||||
'quantity', 'unit', 'size', 'pieces', 'description',
|
'quantity', 'unit', 'size', 'pieces', 'description',
|
||||||
'work_state', 'work_state_display',
|
'work_state', 'work_state_display',
|
||||||
'status', 'is_completed', 'business_object_id',
|
'status', 'status_id', 'is_completed', 'has_started',
|
||||||
|
'progress_percentage', 'last_completed_state',
|
||||||
|
'business_object_id',
|
||||||
'batch_advance_records',
|
'batch_advance_records',
|
||||||
'created_at', 'updated_at'
|
'created_at', 'updated_at'
|
||||||
]
|
]
|
||||||
read_only_fields = ['id', 'created_at', 'updated_at', 'status', 'is_completed', 'business_object_id']
|
read_only_fields = [
|
||||||
|
'id', 'created_at', 'updated_at',
|
||||||
|
'status', 'status_id', 'is_completed', 'has_started',
|
||||||
|
'progress_percentage', 'last_completed_state', 'business_object_id'
|
||||||
|
]
|
||||||
|
|
||||||
def get_business_object_id(self, obj):
|
def get_business_object_id(self, obj):
|
||||||
"""安全地获取 business_object_id"""
|
"""安全地获取 business_object_id"""
|
||||||
|
|||||||
@@ -85,6 +85,10 @@ services:
|
|||||||
DB_PASSWORD: postgres
|
DB_PASSWORD: postgres
|
||||||
CACHE_HOST: redis
|
CACHE_HOST: redis
|
||||||
CACHE_PORT: "6379"
|
CACHE_PORT: "6379"
|
||||||
|
# Celery Broker(RabbitMQ)连接:容器内用服务名访问;宿主机运行时默认 localhost:5672
|
||||||
|
CELERY_BROKER_HOST: rabbitmq
|
||||||
|
# Celery Result Backend(Redis)连接:容器内用服务名访问;宿主机运行时默认 localhost:6379
|
||||||
|
CELERY_RESULT_HOST: redis
|
||||||
depends_on:
|
depends_on:
|
||||||
- pgbouncer
|
- pgbouncer
|
||||||
- redis
|
- redis
|
||||||
@@ -112,14 +116,15 @@ services:
|
|||||||
- redis
|
- redis
|
||||||
- rabbitmq
|
- rabbitmq
|
||||||
environment:
|
environment:
|
||||||
CELERY_BROKER_URL: amqp://guest:guest@rabbitmq:5672//
|
|
||||||
CELERY_RESULT_BACKEND: redis://redis:6379/0
|
|
||||||
PYTHONPATH: /app
|
PYTHONPATH: /app
|
||||||
DB_HOST: pgbouncer
|
DB_HOST: pgbouncer
|
||||||
DB_PORT: "6432"
|
DB_PORT: "6432"
|
||||||
DB_NAME: flower
|
DB_NAME: flower
|
||||||
DB_USER: postgres
|
DB_USER: postgres
|
||||||
DB_PASSWORD: postgres
|
DB_PASSWORD: postgres
|
||||||
|
# Celery 连接配置:容器内用服务名访问
|
||||||
|
CELERY_BROKER_HOST: rabbitmq
|
||||||
|
CELERY_RESULT_HOST: redis
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
celery_beat:
|
celery_beat:
|
||||||
@@ -151,8 +156,9 @@ services:
|
|||||||
DB_NAME: flower
|
DB_NAME: flower
|
||||||
DB_USER: postgres
|
DB_USER: postgres
|
||||||
DB_PASSWORD: postgres
|
DB_PASSWORD: postgres
|
||||||
CELERY_BROKER_URL: amqp://guest:guest@rabbitmq:5672//
|
# Celery 连接配置:容器内用服务名访问
|
||||||
CELERY_RESULT_BACKEND: redis://redis:6379/0
|
CELERY_BROKER_HOST: rabbitmq
|
||||||
|
CELERY_RESULT_HOST: redis
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
@@ -68,10 +68,17 @@ services:
|
|||||||
DB_NAME: "${DB_NAME:-flower}"
|
DB_NAME: "${DB_NAME:-flower}"
|
||||||
DB_USER: "${DB_USER:-postgres}"
|
DB_USER: "${DB_USER:-postgres}"
|
||||||
DB_PASSWORD: "${DB_PASSWORD:-postgres}"
|
DB_PASSWORD: "${DB_PASSWORD:-postgres}"
|
||||||
CELERY_BROKER_URL: "${CELERY_BROKER_URL:-amqp://guest:guest@rabbitmq:5672//}"
|
|
||||||
CELERY_RESULT_BACKEND: "${CELERY_RESULT_BACKEND:-redis://redis:6379/0}"
|
|
||||||
CACHE_HOST: ${CACHE_HOST:-redis}
|
CACHE_HOST: ${CACHE_HOST:-redis}
|
||||||
CACHE_PORT: "${CACHE_PORT:-6379}"
|
CACHE_PORT: "${CACHE_PORT:-6379}"
|
||||||
|
# Celery Broker(RabbitMQ)连接:容器内用服务名访问
|
||||||
|
CELERY_BROKER_HOST: ${CELERY_BROKER_HOST:-rabbitmq}
|
||||||
|
CELERY_BROKER_PORT: "${CELERY_BROKER_PORT:-5672}"
|
||||||
|
CELERY_BROKER_USER: "${CELERY_BROKER_USER:-guest}"
|
||||||
|
CELERY_BROKER_PASSWORD: "${CELERY_BROKER_PASSWORD:-guest}"
|
||||||
|
# Celery Result Backend(Redis)连接:容器内用服务名访问
|
||||||
|
CELERY_RESULT_HOST: ${CELERY_RESULT_HOST:-redis}
|
||||||
|
CELERY_RESULT_PORT: "${CELERY_RESULT_PORT:-6379}"
|
||||||
|
CELERY_RESULT_DB: "${CELERY_RESULT_DB:-1}"
|
||||||
depends_on:
|
depends_on:
|
||||||
- pgbouncer
|
- pgbouncer
|
||||||
- redis
|
- redis
|
||||||
@@ -97,8 +104,14 @@ services:
|
|||||||
DB_NAME: "${DB_NAME:-flower}"
|
DB_NAME: "${DB_NAME:-flower}"
|
||||||
DB_USER: "${DB_USER:-postgres}"
|
DB_USER: "${DB_USER:-postgres}"
|
||||||
DB_PASSWORD: "${DB_PASSWORD:-postgres}"
|
DB_PASSWORD: "${DB_PASSWORD:-postgres}"
|
||||||
CELERY_BROKER_URL: "${CELERY_BROKER_URL:-amqp://guest:guest@rabbitmq:5672//}"
|
# Celery 连接配置:容器内用服务名访问
|
||||||
CELERY_RESULT_BACKEND: "${CELERY_RESULT_BACKEND:-redis://redis:6379/0}"
|
CELERY_BROKER_HOST: ${CELERY_BROKER_HOST:-rabbitmq}
|
||||||
|
CELERY_BROKER_PORT: "${CELERY_BROKER_PORT:-5672}"
|
||||||
|
CELERY_BROKER_USER: "${CELERY_BROKER_USER:-guest}"
|
||||||
|
CELERY_BROKER_PASSWORD: "${CELERY_BROKER_PASSWORD:-guest}"
|
||||||
|
CELERY_RESULT_HOST: ${CELERY_RESULT_HOST:-redis}
|
||||||
|
CELERY_RESULT_PORT: "${CELERY_RESULT_PORT:-6379}"
|
||||||
|
CELERY_RESULT_DB: "${CELERY_RESULT_DB:-1}"
|
||||||
# 数据库备份输出目录(api_v1.tasks.backup_database 默认输出到 BASE_DIR/data-bak)
|
# 数据库备份输出目录(api_v1.tasks.backup_database 默认输出到 BASE_DIR/data-bak)
|
||||||
volumes:
|
volumes:
|
||||||
# 默认落在 compose 同级目录的 ./data-bak,方便宿主机直接查看/拷贝
|
# 默认落在 compose 同级目录的 ./data-bak,方便宿主机直接查看/拷贝
|
||||||
@@ -130,8 +143,14 @@ services:
|
|||||||
DB_NAME: "${DB_NAME:-flower}"
|
DB_NAME: "${DB_NAME:-flower}"
|
||||||
DB_USER: "${DB_USER:-postgres}"
|
DB_USER: "${DB_USER:-postgres}"
|
||||||
DB_PASSWORD: "${DB_PASSWORD:-postgres}"
|
DB_PASSWORD: "${DB_PASSWORD:-postgres}"
|
||||||
CELERY_BROKER_URL: "${CELERY_BROKER_URL:-amqp://guest:guest@rabbitmq:5672//}"
|
# Celery 连接配置:容器内用服务名访问
|
||||||
CELERY_RESULT_BACKEND: "${CELERY_RESULT_BACKEND:-redis://redis:6379/0}"
|
CELERY_BROKER_HOST: ${CELERY_BROKER_HOST:-rabbitmq}
|
||||||
|
CELERY_BROKER_PORT: "${CELERY_BROKER_PORT:-5672}"
|
||||||
|
CELERY_BROKER_USER: "${CELERY_BROKER_USER:-guest}"
|
||||||
|
CELERY_BROKER_PASSWORD: "${CELERY_BROKER_PASSWORD:-guest}"
|
||||||
|
CELERY_RESULT_HOST: ${CELERY_RESULT_HOST:-redis}
|
||||||
|
CELERY_RESULT_PORT: "${CELERY_RESULT_PORT:-6379}"
|
||||||
|
CELERY_RESULT_DB: "${CELERY_RESULT_DB:-1}"
|
||||||
# Celery Beat 的持久化调度文件,避免重启后重复/错过调度
|
# Celery Beat 的持久化调度文件,避免重启后重复/错过调度
|
||||||
volumes:
|
volumes:
|
||||||
- celery_beat_data:/var/lib/celery
|
- celery_beat_data:/var/lib/celery
|
||||||
|
|||||||
@@ -88,6 +88,10 @@ services:
|
|||||||
# 缓存(Redis)连接:容器内用服务名访问;宿主机运行时默认 localhost:6379
|
# 缓存(Redis)连接:容器内用服务名访问;宿主机运行时默认 localhost:6379
|
||||||
CACHE_HOST: redis
|
CACHE_HOST: redis
|
||||||
CACHE_PORT: "6379"
|
CACHE_PORT: "6379"
|
||||||
|
# Celery Broker(RabbitMQ)连接:容器内用服务名访问;宿主机运行时默认 localhost:5672
|
||||||
|
CELERY_BROKER_HOST: rabbitmq
|
||||||
|
# Celery Result Backend(Redis)连接:容器内用服务名访问;宿主机运行时默认 localhost:6379
|
||||||
|
CELERY_RESULT_HOST: redis
|
||||||
depends_on:
|
depends_on:
|
||||||
- pgbouncer
|
- pgbouncer
|
||||||
- redis
|
- redis
|
||||||
@@ -116,14 +120,15 @@ services:
|
|||||||
- redis
|
- redis
|
||||||
- rabbitmq
|
- rabbitmq
|
||||||
environment:
|
environment:
|
||||||
CELERY_BROKER_URL: amqp://guest:guest@rabbitmq:5672//
|
|
||||||
CELERY_RESULT_BACKEND: redis://redis:6379/0
|
|
||||||
PYTHONPATH: /app
|
PYTHONPATH: /app
|
||||||
DB_HOST: pgbouncer
|
DB_HOST: pgbouncer
|
||||||
DB_PORT: "6432"
|
DB_PORT: "6432"
|
||||||
DB_NAME: flower
|
DB_NAME: flower
|
||||||
DB_USER: postgres
|
DB_USER: postgres
|
||||||
DB_PASSWORD: postgres
|
DB_PASSWORD: postgres
|
||||||
|
# Celery 连接配置:容器内用服务名访问
|
||||||
|
CELERY_BROKER_HOST: rabbitmq
|
||||||
|
CELERY_RESULT_HOST: redis
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
celery_beat:
|
celery_beat:
|
||||||
@@ -153,8 +158,9 @@ services:
|
|||||||
DB_NAME: flower
|
DB_NAME: flower
|
||||||
DB_USER: postgres
|
DB_USER: postgres
|
||||||
DB_PASSWORD: postgres
|
DB_PASSWORD: postgres
|
||||||
CELERY_BROKER_URL: amqp://guest:guest@rabbitmq:5672//
|
# Celery 连接配置:容器内用服务名访问
|
||||||
CELERY_RESULT_BACKEND: redis://redis:6379/0
|
CELERY_BROKER_HOST: rabbitmq
|
||||||
|
CELERY_RESULT_HOST: redis
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
@@ -402,14 +402,28 @@ PRINTING_DEFAULT_PROCESS_ID = 1 # 默认印染流程ID
|
|||||||
PLATE_ORDER_DEFAULT_PROCESS_ID = 2 # 默认开版流程ID
|
PLATE_ORDER_DEFAULT_PROCESS_ID = 2 # 默认开版流程ID
|
||||||
|
|
||||||
# Celery 配置
|
# Celery 配置
|
||||||
CELERY_BROKER_URL = env(
|
# RabbitMQ Broker 配置:优先使用 CELERY_BROKER_URL,否则从各组件构建
|
||||||
'CELERY_BROKER_URL',
|
# 默认 localhost(适合宿主机运行),Docker Compose 可通过环境变量指定 CELERY_BROKER_HOST=rabbitmq
|
||||||
default='amqp://guest:guest@rabbitmq:5672//',
|
celery_broker_url = env('CELERY_BROKER_URL', default=None)
|
||||||
)
|
if celery_broker_url is None:
|
||||||
CELERY_RESULT_BACKEND = env(
|
celery_broker_host = env('CELERY_BROKER_HOST', default='localhost')
|
||||||
'CELERY_RESULT_BACKEND',
|
celery_broker_port = env.int('CELERY_BROKER_PORT', default=5672)
|
||||||
default='redis://redis:6379/0',
|
celery_broker_user = env('CELERY_BROKER_USER', default='guest')
|
||||||
)
|
celery_broker_password = env('CELERY_BROKER_PASSWORD', default='guest')
|
||||||
|
celery_broker_vhost = env('CELERY_BROKER_VHOST', default='/')
|
||||||
|
celery_broker_url = f'amqp://{celery_broker_user}:{celery_broker_password}@{celery_broker_host}:{celery_broker_port}/{celery_broker_vhost}'
|
||||||
|
CELERY_BROKER_URL = celery_broker_url
|
||||||
|
|
||||||
|
# Celery Result Backend 配置:优先使用 CELERY_RESULT_BACKEND,否则从各组件构建
|
||||||
|
# 默认使用与 Cache 相同的 Redis 实例,Docker Compose 可通过环境变量指定 CELERY_RESULT_HOST=redis
|
||||||
|
celery_result_url = env('CELERY_RESULT_BACKEND', default=None)
|
||||||
|
if celery_result_url is None:
|
||||||
|
celery_result_host = env('CELERY_RESULT_HOST', default='localhost')
|
||||||
|
celery_result_port = env.int('CELERY_RESULT_PORT', default=6379)
|
||||||
|
celery_result_db = env.int('CELERY_RESULT_DB', default=1) # 使用 db=1,与 Cache 的 db=0 区分
|
||||||
|
celery_result_url = f'redis://{celery_result_host}:{celery_result_port}/{celery_result_db}'
|
||||||
|
CELERY_RESULT_BACKEND = celery_result_url
|
||||||
|
|
||||||
CELERY_ACCEPT_CONTENT = ['json']
|
CELERY_ACCEPT_CONTENT = ['json']
|
||||||
CELERY_TASK_SERIALIZER = 'json'
|
CELERY_TASK_SERIALIZER = 'json'
|
||||||
CELERY_RESULT_SERIALIZER = 'json'
|
CELERY_RESULT_SERIALIZER = 'json'
|
||||||
|
|||||||
Reference in New Issue
Block a user