下料清单完成

This commit is contained in:
caoqianming 2022-01-05 09:20:45 +08:00
parent bd6286931f
commit ccd2d2e375
6 changed files with 40 additions and 9 deletions

View File

@ -2,9 +2,10 @@ from django.db.models import base
from rest_framework import urlpatterns from rest_framework import urlpatterns
from django.urls import path, include from django.urls import path, include
from rest_framework.routers import DefaultRouter from rest_framework.routers import DefaultRouter
from apps.develop.views import CleanDataView from apps.develop.views import CleanDataView, UpdateCuttingView
urlpatterns = [ urlpatterns = [
path('cleandata/', CleanDataView.as_view()), path('cleandata/', CleanDataView.as_view()),
path('update_cutting/', UpdateCuttingView.as_view())
] ]

View File

@ -1,4 +1,6 @@
from django.db import transaction
from django.shortcuts import render from django.shortcuts import render
from rest_framework.decorators import permission_classes
from rest_framework.views import APIView from rest_framework.views import APIView
from rest_framework.permissions import IsAdminUser from rest_framework.permissions import IsAdminUser
from rest_framework.response import Response from rest_framework.response import Response
@ -7,7 +9,8 @@ from apps.mtm.models import Material
from apps.pm.models import ProductionPlan from apps.pm.models import ProductionPlan
from apps.sam.models import Order from apps.sam.models import Order
from apps.wf.models import Ticket from apps.wf.models import Ticket
from apps.wpm.models import Operation from apps.wpm.models import Operation, OperationMaterial, WProduct, WproductFlow
from apps.wpm.services import WpmServies
# Create your views here. # Create your views here.
class CleanDataView(APIView): class CleanDataView(APIView):
@ -26,3 +29,21 @@ class CleanDataView(APIView):
Ticket.objects.all().delete(soft=False) Ticket.objects.all().delete(soft=False)
Operation.objects.all().delete() Operation.objects.all().delete()
return Response() return Response()
class UpdateCuttingView(APIView):
permission_classes = [IsAdminUser]
@transaction.atomic
def post(self, request, format=None):
"""
更新下料清单
"""
for i in WProduct.objects.all():
sp = WproductFlow.objects.filter(wproduct=i).order_by('id').first().subproduction_plan
op_q = OperationMaterial.objects.filter(subproduction_plan=sp, operation__step__id=1, operation__is_submited=True)
op = op_q.first().operation
i.coperation = op
i.save()
WproductFlow.objects.filter(wproduct=i).update(coperation=op)
WpmServies.update_cutting_list_with_operation(op)
return Response()

View File

@ -2,7 +2,7 @@ from django_filters import rest_framework as filters
from apps.mtm.models import Material, Step from apps.mtm.models import Material, Step
from apps.wpm.services import WpmServies from apps.wpm.services import WpmServies
from .models import Operation, WMaterial, WProduct from .models import Operation, OperationMaterial, WMaterial, WProduct
class WMaterialFilterSet(filters.FilterSet): class WMaterialFilterSet(filters.FilterSet):
@ -34,3 +34,9 @@ class WProductFilterSet(filters.FilterSet):
if value == 'no_scrap': if value == 'no_scrap':
queryset = queryset.exclude(act_state=WProduct.WPR_ACT_STATE_SCRAP) queryset = queryset.exclude(act_state=WProduct.WPR_ACT_STATE_SCRAP)
return queryset return queryset
class CuttingFilterSet(filters.FilterSet):
production_plan = filters.NumberFilter(field_name='subproduction_plan__production_plan')
class Meta:
model = OperationMaterial
fields = ['operation', 'subproduction_plan', 'material']

View File

@ -207,7 +207,7 @@ class OperationCreateSerializer(serializers.Serializer):
class OperationUpdateSerializer(serializers.ModelSerializer): class OperationUpdateSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = Operation model = Operation
fields =['use_scrap', 'remark'] fields =['remark']
class OperationInitSerializer(serializers.Serializer): class OperationInitSerializer(serializers.Serializer):
step = serializers.PrimaryKeyRelatedField(queryset=Step.objects.all(), label="子工序ID") step = serializers.PrimaryKeyRelatedField(queryset=Step.objects.all(), label="子工序ID")

View File

@ -166,7 +166,10 @@ class WpmServies(object):
from_batch = '' from_batch = ''
for m in input_q: for m in input_q:
count_cut = count_cut + m.count count_cut = count_cut + m.count
from_batch = from_batch + ';' + m.batch if m.batch else from_batch if from_batch and m.batch:
from_batch = from_batch + ';' + m.batch
else:
from_batch = m.batch
i.count_cut = count_cut i.count_cut = count_cut
i.from_batch = from_batch i.from_batch = from_batch
wpfs = WproductFlow.objects.filter(subproduction_plan=i.subproduction_plan, wpfs = WproductFlow.objects.filter(subproduction_plan=i.subproduction_plan,

View File

@ -19,7 +19,7 @@ from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin
from rest_framework.decorators import action from rest_framework.decorators import action
from apps.wf.models import Workflow from apps.wf.models import Workflow
from apps.wf.serializers import WorkflowSimpleSerializer from apps.wf.serializers import WorkflowSimpleSerializer
from apps.wpm.filters import 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, WProductListSerializer, WplanPutInSerializer, WpmTestFormInitSerializer, WpmTestRecordCreateSerializer, 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, WProductListSerializer, WplanPutInSerializer, WpmTestFormInitSerializer, WpmTestRecordCreateSerializer, WproductPutInSerializer, WproductPutInsSerializer, WproductTicketListSerializer
@ -807,7 +807,7 @@ class CuttingListViewSet(ListModelMixin, GenericViewSet):
queryset = OperationMaterial.objects.select_related('operation', queryset = OperationMaterial.objects.select_related('operation',
'subproduction_plan', 'material', 'create_by').filter(operation__step__process__id=1) 'subproduction_plan', 'material', 'create_by').filter(operation__step__process__id=1)
serializer_class = CuttingListSerializer serializer_class = CuttingListSerializer
filterset_fields = ['operation', 'subproduction_plan', 'material'] filterset_class = CuttingFilterSet
ordering_fields = ['id'] ordering_fields = ['id']
ordering = ['-id'] ordering = ['-id']