wproduct 流程卡
This commit is contained in:
parent
73a88e2f86
commit
2b0bd78686
|
@ -15,3 +15,4 @@ class GanttPlan(ListAPIView):
|
||||||
queryset = ProductionPlan.objects.filter(is_deleted=False, is_planed=True).prefetch_related('subplan_plan', 'subplan_plan__process')
|
queryset = ProductionPlan.objects.filter(is_deleted=False, is_planed=True).prefetch_related('subplan_plan', 'subplan_plan__process')
|
||||||
ordering = ['-id']
|
ordering = ['-id']
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -219,7 +219,7 @@ class OperationMaterial(BaseModel):
|
||||||
生产操作物料消耗产出表
|
生产操作物料消耗产出表
|
||||||
"""
|
"""
|
||||||
type = models.IntegerField('类型', default=0, choices=SubprodctionMaterial.type_choices)
|
type = models.IntegerField('类型', default=0, choices=SubprodctionMaterial.type_choices)
|
||||||
operation = models.ForeignKey(Operation, verbose_name='关联的生产操作', on_delete=models.CASCADE)
|
operation = models.ForeignKey(Operation, verbose_name='关联的生产操作', on_delete=models.CASCADE, related_name='om_operation')
|
||||||
|
|
||||||
material = models.ForeignKey(Material, verbose_name='可能产出的产品', on_delete=models.CASCADE,
|
material = models.ForeignKey(Material, verbose_name='可能产出的产品', on_delete=models.CASCADE,
|
||||||
null=True, blank=True, related_name='om_material')
|
null=True, blank=True, related_name='om_material')
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
from django.db.models.query_utils import Q
|
||||||
from rest_framework import serializers, exceptions
|
from rest_framework import serializers, exceptions
|
||||||
from rest_framework.serializers import ModelSerializer
|
from rest_framework.serializers import ModelSerializer
|
||||||
from apps.em.models import Equipment
|
from apps.em.models import Equipment
|
||||||
|
@ -165,6 +166,53 @@ class WProductListSerializer(serializers.ModelSerializer):
|
||||||
return WProductBaseSerializer(instance=wps, many=True).data
|
return WProductBaseSerializer(instance=wps, many=True).data
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
class WProductCardBaseSerializer(serializers.ModelSerializer):
|
||||||
|
"""
|
||||||
|
产品流程序列化
|
||||||
|
"""
|
||||||
|
material_ = MaterialSimpleSerializer(source='material', read_only=True)
|
||||||
|
step_ = StepSimpleSerializer(source='step', read_only=True)
|
||||||
|
subproduction_plan_ = SubproductionPlanSimpleSerializer(source='subproduction_plan', read_only=True)
|
||||||
|
warehouse_ = WareHouseSimpleSerializer(source='warehouse', read_only=True)
|
||||||
|
step_list_full = serializers.SerializerMethodField()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = WProduct
|
||||||
|
fields = '__all__'
|
||||||
|
|
||||||
|
def get_step_list_full(self, obj):
|
||||||
|
"""
|
||||||
|
获取所有步骤信息
|
||||||
|
"""
|
||||||
|
step_list_full = []
|
||||||
|
comb_step = Step.objects.filter(type=Step.STEP_TYPE_COMB, is_deleted=False).first()
|
||||||
|
if obj.material.type == Material.MA_TYPE_GOOD:
|
||||||
|
# 如果是成品获取可能经过的步骤
|
||||||
|
steps = Step.objects.filter(number__gte=comb_step.number).order_by('number')
|
||||||
|
elif obj.material.type == Material.MA_TYPE_HALFGOOD:
|
||||||
|
steps = Step.objects.filter(number__lt=comb_step.number).order_by('number')
|
||||||
|
for i in steps:
|
||||||
|
actions = []
|
||||||
|
ops = Operation.objects.filter(Q(ow_operation__wproduct=obj)|Q(wp_coperation=obj))\
|
||||||
|
.filter(step=i, is_submited=True).distinct()
|
||||||
|
for m in ops:
|
||||||
|
actions.append({'action_by_name':m.create_by.name, 'action_time':m.update_time.strftime('%Y-%m-%d %H:%M:%S')})
|
||||||
|
step_list_full.append({'step_name':i.name, 'actions':actions})
|
||||||
|
return step_list_full
|
||||||
|
|
||||||
|
class WProductCardSerializer(WProductCardBaseSerializer):
|
||||||
|
"""
|
||||||
|
产品流程序列化
|
||||||
|
"""
|
||||||
|
parents = serializers.SerializerMethodField()
|
||||||
|
|
||||||
|
def get_parents(self, obj):
|
||||||
|
parent_wps = WProduct.objects.filter(child=obj)
|
||||||
|
return WProductCardBaseSerializer(instance=parent_wps, many=True).data
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class WProductDetailSerializer(serializers.ModelSerializer):
|
class WProductDetailSerializer(serializers.ModelSerializer):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -22,7 +22,7 @@ from apps.wf.serializers import WorkflowSimpleSerializer
|
||||||
from apps.wpm.filters import CuttingFilterSet, WMaterialFilterSet, WProductFilterSet
|
from apps.wpm.filters import CuttingFilterSet, WMaterialFilterSet, WProductFilterSet
|
||||||
from apps.wpm.models import OperationEquip, OperationWproduct, Pick, PickWproduct, WMaterial, WProduct, Operation, OperationMaterial, OperationRecord, OperationRecordItem, WprouctTicket
|
from apps.wpm.models import OperationEquip, OperationWproduct, Pick, PickWproduct, WMaterial, WProduct, Operation, OperationMaterial, OperationRecord, OperationRecordItem, WprouctTicket
|
||||||
|
|
||||||
from apps.wpm.serializers import CuttingListSerializer, OperationEquipListSerializer, OperationEquipUpdateSerializer, OperationMaterialCreate1ListSerailizer, OperationMaterialCreate1Serailizer, OperationMaterialCreate2ListSerailizer, OperationMaterialCreate2Serailizer, OperationMaterialCreate3Serializer, OperationMaterialListSerializer, OperationRecordDetailSerializer, OperationRecordListSerializer, OperationRecordSubmitSerializer, OperationUpdateSerializer, OperationWproductListSerializer, OperationCreateSerializer, OperationDetailSerializer, OperationListSerializer, PickHalfSerializer, PickHalfsSerializer, PickSerializer, OperationInitSerializer, OperationSubmitSerializer, ScrapSerializer, WMaterialListSerializer, WProductDetailSerializer, WProductListSerializer, WplanPutInSerializer, WpmTestFormInitSerializer, WpmTestRecordCreateSerializer, WproductMtestSerializer, WproductPutInSerializer, WproductPutInsSerializer, WproductTicketListSerializer
|
from apps.wpm.serializers import CuttingListSerializer, OperationEquipListSerializer, OperationEquipUpdateSerializer, OperationMaterialCreate1ListSerailizer, OperationMaterialCreate1Serailizer, OperationMaterialCreate2ListSerailizer, OperationMaterialCreate2Serailizer, OperationMaterialCreate3Serializer, OperationMaterialListSerializer, OperationRecordDetailSerializer, OperationRecordListSerializer, OperationRecordSubmitSerializer, OperationUpdateSerializer, OperationWproductListSerializer, OperationCreateSerializer, OperationDetailSerializer, OperationListSerializer, PickHalfSerializer, PickHalfsSerializer, PickSerializer, OperationInitSerializer, OperationSubmitSerializer, ScrapSerializer, WMaterialListSerializer, WProductCardSerializer, WProductDetailSerializer, WProductListSerializer, WplanPutInSerializer, WpmTestFormInitSerializer, WpmTestRecordCreateSerializer, WproductMtestSerializer, WproductPutInSerializer, WproductPutInsSerializer, WproductTicketListSerializer
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
from rest_framework import exceptions, serializers
|
from rest_framework import exceptions, serializers
|
||||||
|
@ -454,6 +454,14 @@ class WProductViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet):
|
||||||
WpmServies.add_wproduct_flow_log(instance=obj, change_str=change_str)
|
WpmServies.add_wproduct_flow_log(instance=obj, change_str=change_str)
|
||||||
return Response()
|
return Response()
|
||||||
|
|
||||||
|
@action(methods=['get'], detail=True, perms_map={'get':'*'})
|
||||||
|
def card(self, request, pk=None):
|
||||||
|
"""
|
||||||
|
流程卡
|
||||||
|
"""
|
||||||
|
obj = self.get_object()
|
||||||
|
return Response(WProductCardSerializer(instance=obj).data)
|
||||||
|
|
||||||
class WproductTicketViewSet(ListModelMixin, GenericViewSet):
|
class WproductTicketViewSet(ListModelMixin, GenericViewSet):
|
||||||
"""
|
"""
|
||||||
玻璃审批工单
|
玻璃审批工单
|
||||||
|
|
Loading…
Reference in New Issue