1
0
forked from erp-dev/erp

feat: upload api

This commit is contained in:
2025-11-17 14:34:09 +08:00
parent dff9151651
commit d23db848ec
16 changed files with 1183 additions and 29 deletions

View File

@@ -328,6 +328,42 @@ class BusinessObjectViewSet(viewsets.ModelViewSet):
'parameter_record': StateLogParameterRecordSerializer(record).data
})
@action(detail=True, methods=['get'], url_path='state-logs')
def get_state_logs(self, request, pk=None):
"""
获取业务对象的所有状态流转记录列表
GET /api/v1/stateflow/business-objects/{id}/state-logs/
GET /api/v1/stateflow/business-objects/{id}/state-logs/?include_parameters=false
GET /api/v1/stateflow/business-objects/{id}/state-logs/?include_cancelled=true
查询参数:
- include_parameters: 是否包含工艺参数,默认 true可选值: true, false
- include_cancelled: 是否包含已撤销的记录,默认 true可选值: true, false
"""
business_object = self.get_object()
include_parameters = request.query_params.get('include_parameters', 'true').lower() == 'true'
include_cancelled = request.query_params.get('include_cancelled', 'true').lower() == 'true'
# 获取状态流转记录
state_logs = business_object.state_logs.select_related('state', 'completed_by').order_by('completed_at')
if not include_cancelled:
state_logs = state_logs.filter(is_cancelled=False)
# 序列化
if include_parameters:
from stateflow.serializers import StateFlowRecordWithParametersSerializer
serializer = StateFlowRecordWithParametersSerializer(state_logs, many=True)
else:
from stateflow.serializers import StateFlowRecordSerializer
serializer = StateFlowRecordSerializer(state_logs, many=True)
return Response({
'count': state_logs.count(),
'state_logs': serializer.data
})
@action(detail=True, methods=['get'], url_path='state-logs/(?P<log_id>[^/.]+)/parameters')
def get_log_parameters(self, request, pk=None, log_id=None):
"""