wproduct 流程卡

This commit is contained in:
caoqianming 2022-01-10 13:05:30 +08:00
parent 73a88e2f86
commit 2b0bd78686
4 changed files with 59 additions and 2 deletions

View File

@ -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']

View File

@ -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')

View File

@ -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):
""" """

View File

@ -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):
""" """
玻璃审批工单 玻璃审批工单