|
|
@@ -25,6 +25,9 @@ from warehouse.models import ListModel as warehouse
|
|
|
from staff.models import ListModel as staff
|
|
|
from rest_framework.permissions import AllowAny
|
|
|
from rest_framework.views import APIView
|
|
|
+from operation_log.views import log_operation,log_failure_operation,log_success_operation
|
|
|
+from django.db.models import F
|
|
|
+
|
|
|
|
|
|
# 出库需求视图类
|
|
|
class OutBoundDemandViewSet(viewsets.ModelViewSet):
|
|
|
@@ -406,6 +409,14 @@ class BoundListViewSet(viewsets.ModelViewSet):
|
|
|
if id is None:
|
|
|
return BoundListModel.objects.filter( is_delete=False)
|
|
|
else:
|
|
|
+ log_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"查看入库单详情 ID:{id}",
|
|
|
+ operation_level="view",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=id,
|
|
|
+ module_name="入库单"
|
|
|
+ )
|
|
|
return BoundListModel.objects.filter( id=id, is_delete=False)
|
|
|
else:
|
|
|
return BoundListModel.objects.none()
|
|
|
@@ -447,6 +458,14 @@ class BoundListViewSet(viewsets.ModelViewSet):
|
|
|
serializer.save()
|
|
|
|
|
|
headers = self.get_success_headers(serializer.data)
|
|
|
+ log_success_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"创建入库单 ID:{serializer.data['id']},创建内容:{data}",
|
|
|
+ operation_level="create",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=serializer.data['id'],
|
|
|
+ module_name="入库单"
|
|
|
+ )
|
|
|
return Response(serializer.data, status=200, headers=headers)
|
|
|
|
|
|
def update(self, request, pk):
|
|
|
@@ -456,6 +475,14 @@ class BoundListViewSet(viewsets.ModelViewSet):
|
|
|
serializer.is_valid(raise_exception=True)
|
|
|
serializer.save()
|
|
|
headers = self.get_success_headers(serializer.data)
|
|
|
+ log_success_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"更新入库单 ID:{serializer.data['id']}:{data}",
|
|
|
+ operation_level="update",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=serializer.data['id'],
|
|
|
+ module_name="入库单"
|
|
|
+ )
|
|
|
return Response(serializer.data, status=200, headers=headers)
|
|
|
|
|
|
|
|
|
@@ -479,7 +506,14 @@ class BoundListViewSet(viewsets.ModelViewSet):
|
|
|
qs.relate_out_bill.save()
|
|
|
serializer = self.get_serializer(qs, many=False)
|
|
|
headers = self.get_success_headers(serializer.data)
|
|
|
-
|
|
|
+ log_success_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"删除入库单 ID:{qs.id}",
|
|
|
+ operation_level="delete",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=qs.id,
|
|
|
+ module_name="入库单"
|
|
|
+ )
|
|
|
return Response(serializer.data, status=200, headers=headers)
|
|
|
|
|
|
# 入库批次类视图
|
|
|
@@ -535,7 +569,7 @@ class BoundBatchViewSet(viewsets.ModelViewSet):
|
|
|
order_day=str(timezone.now().strftime('-%Y%m'))
|
|
|
order_month=str(timezone.now().strftime('%Y%m'))
|
|
|
data['bound_month'] =str(timezone.now().strftime('%Y%m'))
|
|
|
- print(data['order'])
|
|
|
+ # print(data['order'])
|
|
|
if data['order'] == 'true':
|
|
|
qs_set = BoundBatchModel.objects.filter( goods_code=data['goods_code'], bound_month=order_month, is_delete=False)
|
|
|
print('qs_set是:', len(qs_set))
|
|
|
@@ -548,13 +582,43 @@ class BoundBatchViewSet(viewsets.ModelViewSet):
|
|
|
data['bound_number'] = data['goods_code'] + order_day + '001'
|
|
|
else:
|
|
|
data['bound_number'] = data['goods_code'] + '-' + str(data['bound_batch_order'])
|
|
|
- serializer = self.get_serializer(data=data)
|
|
|
- serializer.is_valid(raise_exception=True)
|
|
|
- serializer.save()
|
|
|
- headers = self.get_success_headers(serializer.data)
|
|
|
- self.add_batch_log(serializer.data, 0, data['goods_qty'])
|
|
|
-
|
|
|
- return Response(serializer.data, status=200, headers=headers)
|
|
|
+ batch_obj = BoundBatchModel.objects.filter(bound_number=data['bound_number'], is_delete=False)
|
|
|
+ if batch_obj.exists():
|
|
|
+ # 批次号已存在,追加数据到原批次
|
|
|
+ existing_batch = batch_obj.first()
|
|
|
+ existing_batch.goods_qty += data['goods_qty']
|
|
|
+ existing_batch.goods_total_weight += data['goods_total_weight']
|
|
|
+ existing_batch.update_time = timezone.now()
|
|
|
+ existing_batch.save()
|
|
|
+ log_success_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"创建入库批次 ID:{existing_batch.id} 成功,追加数据:{data}",
|
|
|
+ operation_level="create",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=existing_batch.id,
|
|
|
+ module_name="入库批次"
|
|
|
+ )
|
|
|
+ self.add_batch_log(existing_batch.__dict__, 0, data['goods_qty'])
|
|
|
+ serializer = self.get_serializer(existing_batch, many=False)
|
|
|
+ headers = self.get_success_headers(serializer.data)
|
|
|
+ return Response(serializer.data, status=200, headers=headers)
|
|
|
+
|
|
|
+ else:
|
|
|
+
|
|
|
+ serializer = self.get_serializer(data=data)
|
|
|
+ serializer.is_valid(raise_exception=True)
|
|
|
+ serializer.save()
|
|
|
+ headers = self.get_success_headers(serializer.data)
|
|
|
+ self.add_batch_log(serializer.data, 0, data['goods_qty'])
|
|
|
+ log_success_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"创建入库批次 ID:{serializer.data['id']},创建内容:{data}",
|
|
|
+ operation_level="create",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=serializer.data['id'],
|
|
|
+ module_name="入库批次"
|
|
|
+ )
|
|
|
+ return Response(serializer.data, status=200, headers=headers)
|
|
|
except Exception as e:
|
|
|
print(e)
|
|
|
raise APIException({"detail": "{}".format(e)})
|
|
|
@@ -596,17 +660,41 @@ class BoundBatchViewSet(viewsets.ModelViewSet):
|
|
|
serializer.is_valid(raise_exception=True)
|
|
|
serializer.save()
|
|
|
headers = self.get_success_headers(serializer.data)
|
|
|
+ log_success_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"更新入库批次 ID:{serializer.data['id']}:{data}",
|
|
|
+ operation_level="update",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=serializer.data['id'],
|
|
|
+ module_name="入库批次"
|
|
|
+ )
|
|
|
return Response(serializer.data, status=200, headers=headers)
|
|
|
|
|
|
def destroy(self, request, pk):
|
|
|
qs = self.get_object()
|
|
|
if qs.openid != self.request.auth.openid:
|
|
|
+ log_failure_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"删除入库批次 ID:{qs.id} 失败,非所属用户操作",
|
|
|
+ operation_level="delete",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=qs.id,
|
|
|
+ module_name="入库批次"
|
|
|
+ )
|
|
|
raise APIException({"detail": "该入库非您所属,禁止删除,您可以进行编辑"})
|
|
|
else:
|
|
|
qs.is_delete = True
|
|
|
qs.save()
|
|
|
serializer = self.get_serializer(qs, many=False)
|
|
|
headers = self.get_success_headers(serializer.data)
|
|
|
+ log_success_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"删除入库批次 ID:{qs.id}",
|
|
|
+ operation_level="delete",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=qs.id,
|
|
|
+ module_name="入库批次"
|
|
|
+ )
|
|
|
return Response(serializer.data, status=200, headers=headers)
|
|
|
|
|
|
def batchinout(self, request, *args, **kwargs):
|
|
|
@@ -657,7 +745,14 @@ class BoundBatchViewSet(viewsets.ModelViewSet):
|
|
|
virtual_container_detail.goods_out_qty = batch_in_qty
|
|
|
virtual_container_detail.save()
|
|
|
|
|
|
-
|
|
|
+ log_success_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"批次进出库 ID:{batch_obj.id} 成功,进出库数目:{batch_in_qty}",
|
|
|
+ operation_level="create",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=batch_obj.id,
|
|
|
+ module_name="入库批次"
|
|
|
+ )
|
|
|
return Response({"code": 200,"message": "操作成功","data": "批次进出库数目:{batch_in_qty}"}, status=200)
|
|
|
|
|
|
|
|
|
@@ -711,13 +806,14 @@ class BoundDetailViewSet(viewsets.ModelViewSet):
|
|
|
data = self.request.data
|
|
|
data['openid'] = self.request.auth.openid
|
|
|
data.setdefault('is_delete', False)
|
|
|
-
|
|
|
-
|
|
|
# 验证并保存数据
|
|
|
data['detail_code'] = f"DC-{data['bound_list']:02}{data['bound_batch']:02}"
|
|
|
print(data['detail_code'])
|
|
|
- if BoundDetailModel.objects.filter(detail_code=data['detail_code'], is_delete=False).exists():
|
|
|
- raise APIException({"detail": "Data exists"})
|
|
|
+ if BoundDetailModel.objects.filter(bound_list=data['bound_list'], bound_batch=data['bound_batch'], is_delete=False).exists():
|
|
|
+ detail_obj = BoundDetailModel.objects.get(bound_list=data['bound_list'], bound_batch=data['bound_batch'], is_delete=False)
|
|
|
+ serializer = self.get_serializer(detail_obj, many=False)
|
|
|
+ headers = self.get_success_headers(serializer.data)
|
|
|
+ return Response(serializer.data, status=200, headers=headers)
|
|
|
else:
|
|
|
serializer = self.get_serializer(data=data)
|
|
|
serializer.is_valid(raise_exception=True)
|
|
|
@@ -725,6 +821,14 @@ class BoundDetailViewSet(viewsets.ModelViewSet):
|
|
|
|
|
|
# 返回响应
|
|
|
headers = self.get_success_headers(serializer.data)
|
|
|
+ log_success_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"创建入库明细 ID:{serializer.data['id']},创建内容:{data}",
|
|
|
+ operation_level="create",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=serializer.data['id'],
|
|
|
+ module_name="入库明细"
|
|
|
+ )
|
|
|
return Response(serializer.data, status=200, headers=headers)
|
|
|
|
|
|
def update(self, request, pk):
|
|
|
@@ -734,17 +838,41 @@ class BoundDetailViewSet(viewsets.ModelViewSet):
|
|
|
serializer.is_valid(raise_exception=True)
|
|
|
serializer.save()
|
|
|
headers = self.get_success_headers(serializer.data)
|
|
|
+ log_success_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"更新入库明细 ID:{serializer.data['id']}:{data}",
|
|
|
+ operation_level="update",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=serializer.data['id'],
|
|
|
+ module_name="入库明细"
|
|
|
+ )
|
|
|
return Response(serializer.data, status=200, headers=headers)
|
|
|
|
|
|
def destroy(self, request, pk):
|
|
|
qs = self.get_object()
|
|
|
if qs.openid != self.request.auth.openid:
|
|
|
raise APIException({"detail": "该入库非您所属,禁止删除,您可以进行编辑"})
|
|
|
+ log_failure_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"删除入库明细 ID:{qs.id} 失败,非所属用户操作",
|
|
|
+ operation_level="delete",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=qs.id,
|
|
|
+ module_name="入库明细"
|
|
|
+ )
|
|
|
else:
|
|
|
qs.is_delete = True
|
|
|
qs.save()
|
|
|
serializer = self.get_serializer(qs, many=False)
|
|
|
headers = self.get_success_headers(serializer.data)
|
|
|
+ log_success_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"删除入库明细 ID:{qs.id}",
|
|
|
+ operation_level="delete",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=qs.id,
|
|
|
+ module_name="入库明细"
|
|
|
+ )
|
|
|
return Response(serializer.data, status=200, headers=headers)
|
|
|
|
|
|
# 出库明细类视图
|
|
|
@@ -798,9 +926,20 @@ class OutBoundDetailViewSet(viewsets.ModelViewSet):
|
|
|
data['bound_batch_number'] = OutBatchModel.objects.get(id=data['bound_batch']).batch_number.id
|
|
|
# 验证并保存数据
|
|
|
data['detail_code'] = f"DC-{data['bound_list']:02}{data['bound_batch']:02}"
|
|
|
- print(data['detail_code'])
|
|
|
+ # print(data['detail_code'])
|
|
|
if OutBoundDetailModel.objects.filter(detail_code=data['detail_code'], is_delete=False).exists():
|
|
|
- raise APIException({"detail": "Data exists"})
|
|
|
+ # 这里追加数目
|
|
|
+ OutBoundDetailModel.objects.filter(detail_code=data['detail_code'], is_delete=False).update(goods_qty=F('goods_qty')+data['goods_qty'])
|
|
|
+ log_success_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"更新出库明细 ID:{data['id']}:{data}",
|
|
|
+ operation_level="update",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=data['id'],
|
|
|
+ module_name="出库明细"
|
|
|
+ )
|
|
|
+ return Response({"detail": "数据存在,数量追加"}, status=200)
|
|
|
+ # raise APIException({"detail": "Data exists"})
|
|
|
else:
|
|
|
serializer = self.get_serializer(data=data)
|
|
|
serializer.is_valid(raise_exception=True)
|
|
|
@@ -808,6 +947,14 @@ class OutBoundDetailViewSet(viewsets.ModelViewSet):
|
|
|
|
|
|
# 返回响应
|
|
|
headers = self.get_success_headers(serializer.data)
|
|
|
+ log_success_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"创建出库明细 ID:{serializer.data['id']},创建内容:{data}",
|
|
|
+ operation_level="create",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=serializer.data['id'],
|
|
|
+ module_name="出库明细"
|
|
|
+ )
|
|
|
return Response(serializer.data, status=200, headers=headers)
|
|
|
|
|
|
def update(self, request, pk):
|
|
|
@@ -817,17 +964,41 @@ class OutBoundDetailViewSet(viewsets.ModelViewSet):
|
|
|
serializer.is_valid(raise_exception=True)
|
|
|
serializer.save()
|
|
|
headers = self.get_success_headers(serializer.data)
|
|
|
+ log_success_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"更新出库明细 ID:{serializer.data['id']}:{data}",
|
|
|
+ operation_level="update",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=serializer.data['id'],
|
|
|
+ module_name="出库明细"
|
|
|
+ )
|
|
|
return Response(serializer.data, status=200, headers=headers)
|
|
|
|
|
|
def destroy(self, request, pk):
|
|
|
qs = self.get_object()
|
|
|
if qs.openid != self.request.auth.openid:
|
|
|
raise APIException({"detail": "该入库非您所属,禁止删除,您可以进行编辑"})
|
|
|
+ log_failure_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"删除出库明细 ID:{qs.id} 失败,非所属用户操作",
|
|
|
+ operation_level="delete",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=qs.id,
|
|
|
+ module_name="出库明细"
|
|
|
+ )
|
|
|
else:
|
|
|
qs.is_delete = True
|
|
|
qs.save()
|
|
|
serializer = self.get_serializer(qs, many=False)
|
|
|
headers = self.get_success_headers(serializer.data)
|
|
|
+ log_success_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"删除出库明细 ID:{qs.id}",
|
|
|
+ operation_level="delete",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=qs.id,
|
|
|
+ module_name="出库明细"
|
|
|
+ )
|
|
|
return Response(serializer.data, status=200, headers=headers)
|
|
|
|
|
|
# 出库批次类视图
|
|
|
@@ -892,18 +1063,10 @@ class OutBoundBatchViewSet(viewsets.ModelViewSet):
|
|
|
|
|
|
# data['goods_out_qty'] 是一个字符串或浮点数
|
|
|
data['goods_out_qty'] = Decimal(str(data['goods_out_qty']))
|
|
|
-
|
|
|
- # 现在 data['goods_out_qty'] 是 Decimal 类型,可以进行减法操作
|
|
|
from decimal import Decimal
|
|
|
-
|
|
|
- # 假设 data['goods_out_qty'] 是一个 float 类型的数值
|
|
|
data['goods_out_qty'] = Decimal(str(data['goods_out_qty']))
|
|
|
-
|
|
|
- # 现在所有数值都是 Decimal 类型,可以安全地进行减法运算
|
|
|
data['goods_qty'] = batch_obj.goods_qty - batch_obj.goods_reserve_qty - data['goods_out_qty']
|
|
|
|
|
|
- # data['goods_qty'] = batch_obj.goods_qty - batch_obj.goods_reserve_qty - data['goods_out_qty']
|
|
|
-
|
|
|
data['status'] = 0 #现在处于出库申请状态
|
|
|
|
|
|
serializer = self.get_serializer(data=data)
|
|
|
@@ -911,6 +1074,14 @@ class OutBoundBatchViewSet(viewsets.ModelViewSet):
|
|
|
serializer.save()
|
|
|
headers = self.get_success_headers(serializer.data)
|
|
|
self.add_batch_log(serializer.data, 1, data['goods_out_qty'])
|
|
|
+ log_success_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"创建出库批次 ID:{serializer.data['id']},创建内容:{data}",
|
|
|
+ operation_level="create",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=serializer.data['id'],
|
|
|
+ module_name="出库批次"
|
|
|
+ )
|
|
|
|
|
|
return Response(serializer.data, status=200, headers=headers)
|
|
|
|
|
|
@@ -925,17 +1096,42 @@ class OutBoundBatchViewSet(viewsets.ModelViewSet):
|
|
|
serializer.save()
|
|
|
headers = self.get_success_headers(serializer.data)
|
|
|
self.add_batch_log(serializer.data, 1, data['goods_qty'])
|
|
|
+ log_success_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"更新出库批次 ID:{serializer.data['id']}:{data}",
|
|
|
+ operation_level="update",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=serializer.data['id'],
|
|
|
+ module_name="出库批次"
|
|
|
+ )
|
|
|
return Response(serializer.data, status=200, headers=headers)
|
|
|
|
|
|
def destroy(self, request, pk):
|
|
|
qs = self.get_object()
|
|
|
if qs.openid != self.request.auth.openid:
|
|
|
raise APIException({"detail": "该出库非您所属,禁止删除,您可以进行编辑"})
|
|
|
+ log_failure_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"删除出库批次 ID:{qs.id} 失败,非所属用户操作",
|
|
|
+ operation_level="delete",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=qs.id,
|
|
|
+ module_name="出库批次"
|
|
|
+ )
|
|
|
+
|
|
|
else:
|
|
|
qs.is_delete = True
|
|
|
qs.save()
|
|
|
serializer = self.get_serializer(qs, many=False)
|
|
|
headers = self.get_success_headers(serializer.data)
|
|
|
+ log_success_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"删除出库批次 ID:{qs.id}",
|
|
|
+ operation_level="delete",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=qs.id,
|
|
|
+ module_name="出库批次"
|
|
|
+ )
|
|
|
return Response(serializer.data, status=200, headers=headers)
|
|
|
|
|
|
def add_batch_log(self, data, log_type, goods_qty):
|
|
|
@@ -965,6 +1161,7 @@ class OutBoundBatchViewSet(viewsets.ModelViewSet):
|
|
|
|
|
|
# 创建日志记录
|
|
|
BatchOperateLogModel.objects.create(**log_data)
|
|
|
+
|
|
|
return True
|
|
|
|
|
|
# 批次操作日志类视图
|
|
|
@@ -1001,6 +1198,14 @@ class BoundBatchLogViewSet(viewsets.ModelViewSet):
|
|
|
qs = self.get_object()
|
|
|
qs.is_delete = True
|
|
|
qs.save()
|
|
|
+ log_success_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"删除批次操作日志 ID:{qs.id}",
|
|
|
+ operation_level="delete",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=qs.id,
|
|
|
+ module_name="批次操作日志"
|
|
|
+ )
|
|
|
serializer = self.get_serializer(qs, many=False)
|
|
|
headers = self.get_success_headers(serializer.data)
|
|
|
return Response(serializer.data, status=200, headers=headers)
|
|
|
@@ -1046,4 +1251,12 @@ class BatchContainerAPIView(APIView):
|
|
|
container_dict[container_id]['goods_qty'] += container_detail.goods_qty-container_detail.goods_out_qty
|
|
|
container_dict = list(container_dict.values())
|
|
|
return_data = {'code': 200,'msg': 'Success Create', 'data': container_dict}
|
|
|
+ log_success_operation(
|
|
|
+ request=self.request,
|
|
|
+ operation_content=f"查询批次对应托盘 ID:{batch_id} 列表",
|
|
|
+ operation_level="view",
|
|
|
+ operator=self.request.auth.name if self.request.auth else None,
|
|
|
+ object_id=batch_id,
|
|
|
+ module_name="批次对应托盘"
|
|
|
+ )
|
|
|
return Response(return_data)
|