获取首件检查表first_test_init part1
This commit is contained in:
parent
1282b9c7ea
commit
ff386204b5
|
@ -0,0 +1,65 @@
|
|||
# Generated by Django 3.2.9 on 2022-02-18 08:36
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('mtm', '0047_packitem'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('pm', '0025_auto_20220218_1616'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='subproductionplan',
|
||||
name='first_tester',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='subproductionplan',
|
||||
name='is_first_testok',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='subproductionplan',
|
||||
name='first_sign_time',
|
||||
field=models.DateTimeField(blank=True, null=True, verbose_name='首件签字时间'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='subproductionplan',
|
||||
name='form',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='mtm.recordform', verbose_name='首件检查表'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='subproductionplan',
|
||||
name='is_testok',
|
||||
field=models.BooleanField(blank=True, null=True, verbose_name='首件是否合格'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='subproductionplan',
|
||||
name='leader_1',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='first_leader_1', to=settings.AUTH_USER_MODEL, verbose_name='工序负责人'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='subproductionplan',
|
||||
name='leader_2',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='first_leader_2', to=settings.AUTH_USER_MODEL, verbose_name='技术负责人'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='subproductionplan',
|
||||
name='leader_3',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='first_leader_3', to=settings.AUTH_USER_MODEL, verbose_name='总检'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='subproductionplan',
|
||||
name='remark',
|
||||
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='备注'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='subproductionplan',
|
||||
name='tester',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='first_tester', to=settings.AUTH_USER_MODEL, verbose_name='首件检查员'),
|
||||
),
|
||||
]
|
|
@ -7,7 +7,7 @@ import django.utils.timezone as timezone
|
|||
from django.db.models.query import QuerySet
|
||||
|
||||
from utils.model import SoftModel, BaseModel
|
||||
from apps.mtm.models import Material, Process, RecordFormField, SubProduction, SubprodctionMaterial
|
||||
from apps.mtm.models import Material, Process, RecordForm, RecordFormField, SubProduction, SubprodctionMaterial
|
||||
from apps.sam.models import Order
|
||||
|
||||
class ProductionPlan(CommonAModel):
|
||||
|
@ -92,9 +92,18 @@ class SubProductionPlan(CommonAModel):
|
|||
is_picked = models.BooleanField('是否已领料', default=False)
|
||||
|
||||
# wproducts = models.JSONField('半成品表', default=list, blank=True)
|
||||
is_first_testok = models.BooleanField('首件是否合格', default=True)
|
||||
first_tester = models.ForeignKey(User, on_delete=models.CASCADE,
|
||||
verbose_name="首件检查员", null=True, blank=True)
|
||||
is_testok = models.BooleanField('首件是否合格', null=True, blank=True)
|
||||
form = models.ForeignKey(RecordForm, verbose_name='首件检查表', on_delete=models.CASCADE, null=True, blank=True)
|
||||
tester = models.ForeignKey(User, on_delete=models.CASCADE,
|
||||
verbose_name="首件检查员", null=True, blank=True, related_name='first_tester')
|
||||
leader_1 = models.ForeignKey(User, on_delete=models.CASCADE,
|
||||
verbose_name="工序负责人", null=True, blank=True, related_name='first_leader_1')
|
||||
leader_2 = models.ForeignKey(User, on_delete=models.CASCADE,
|
||||
verbose_name="技术负责人", null=True, blank=True, related_name='first_leader_2')
|
||||
leader_3 = models.ForeignKey(User, on_delete=models.CASCADE,
|
||||
verbose_name="总检", null=True, blank=True, related_name='first_leader_3')
|
||||
first_sign_time = models.DateTimeField('首件签字时间', null=True, blank=True)
|
||||
remark = models.CharField('备注', max_length=100, null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = '子生产计划'
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
from apps.mtm.models import RecordForm
|
||||
from apps.pm.models import ProductionPlan, SubProductionPlan, SubProductionProgress
|
||||
from rest_framework import serializers
|
||||
from apps.sam.serializers import OrderSerializer, OrderSimpleSerializer
|
||||
from apps.mtm.serializers import MaterialSimpleSerializer, ProcessSimpleSerializer, SubProductionSimpleSerializer
|
||||
from apps.system.serializers import OrganizationSimpleSerializer
|
||||
from apps.mtm.serializers import MaterialSimpleSerializer, ProcessSimpleSerializer, RecordFormSimpleSerializer, SubProductionSimpleSerializer
|
||||
from apps.system.serializers import OrganizationSimpleSerializer, UserSimpleSerializer
|
||||
from utils.mixins import DynamicFieldsSerializerMixin
|
||||
|
||||
|
||||
|
@ -74,4 +75,26 @@ class SubProductionProgressSerializer(serializers.ModelSerializer):
|
|||
subproduction_plan_ = SubproductionPlanSimpleSerializer(source='subproduction_plan', read_only=True)
|
||||
class Meta:
|
||||
model = SubProductionProgress
|
||||
fields = '__all__'
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class FirstTestInitSerializer(serializers.Serializer):
|
||||
form = serializers.PrimaryKeyRelatedField(queryset=RecordForm.objects.all(), required=True)
|
||||
|
||||
class FirstTestDetailSerializer(serializers.ModelSerializer):
|
||||
tester_ = UserSimpleSerializer(source='tester', read_only=True)
|
||||
leader_1_ = UserSimpleSerializer(source='leader_1', read_only=True)
|
||||
leader_2_ = UserSimpleSerializer(source='leader_2', read_only=True)
|
||||
leader_3_ = UserSimpleSerializer(source='leader_3', read_only=True)
|
||||
form_ = RecordFormSimpleSerializer(source='form', read_only=True)
|
||||
# record_data = TestRecordItemSerializer(source='item_test_record', read_only=True, many=True)
|
||||
record_data = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = SubProductionPlan
|
||||
fields = ['id', 'form', 'form_', 'is_testok', 'remark', 'first_sign_time'
|
||||
'tester', 'tester_', 'leader_1', 'leader_1_', 'leader_2',
|
||||
'leader_2_', 'leader_3', 'leader_3_']
|
||||
|
||||
def get_record_data(self, obj):
|
||||
return None
|
|
@ -10,7 +10,7 @@ from apps.inm.serializers import MaterialBatchSerializer
|
|||
from apps.mtm.models import Material, Step, SubProduction, SubprodctionMaterial
|
||||
from apps.pm.filters import PlanFilterSet, SubproductionProgressFilterSet
|
||||
from apps.system.mixins import CreateUpdateModelAMixin
|
||||
from apps.pm.serializers import GenSubPlanSerializer, PickNeedSerializer, PlanDestorySerializer, ProductionPlanCreateFromOrderSerializer, ProductionPlanSerializer, ResourceCalListSerializer, ResourceCalSerializer, ResourceConvertListSerializer, ResourceConvertSerializer, SubProductionPlanListSerializer, SubProductionPlanUpdateSerializer, SubProductionProgressSerializer
|
||||
from apps.pm.serializers import FirstTestInitSerializer, GenSubPlanSerializer, PickNeedSerializer, PlanDestorySerializer, ProductionPlanCreateFromOrderSerializer, ProductionPlanSerializer, ResourceCalListSerializer, ResourceCalSerializer, ResourceConvertListSerializer, ResourceConvertSerializer, SubProductionPlanListSerializer, SubProductionPlanUpdateSerializer, SubProductionProgressSerializer
|
||||
from rest_framework.mixins import CreateModelMixin, ListModelMixin, RetrieveModelMixin, UpdateModelMixin
|
||||
from apps.pm.models import ProductionPlan, SubProductionProgress, SubProductionPlan
|
||||
from rest_framework.viewsets import GenericViewSet, ModelViewSet
|
||||
|
@ -229,6 +229,23 @@ class SubProductionPlanViewSet(CreateUpdateModelAMixin, ListModelMixin, UpdateMo
|
|||
have = MaterialBatchSerializer(instance=objs, many=True).data
|
||||
return Response({'need':need, 'have':have})
|
||||
|
||||
@action(methods=['put'], detail=True, perms_map={'post':'first_test'}, serializer_class=FirstTestInitSerializer)
|
||||
@transaction.atomic
|
||||
def first_test_init(self, request, pk=None):
|
||||
"""
|
||||
获取首件检查表
|
||||
"""
|
||||
obj = self.get_object()
|
||||
if obj.is_testok is None:
|
||||
rdata = request.data
|
||||
serializer = self.get_serializer(data=rdata)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
form = serializer.validated_data.get('form')
|
||||
|
||||
raise APIException('已经过首件确认')
|
||||
|
||||
|
||||
|
||||
class SubProductionProgressViewSet(ListModelMixin, GenericViewSet):
|
||||
"""
|
||||
生产进度
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 3.2.9 on 2022-01-25 08:51
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('system', '0004_user_is_atwork'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='user',
|
||||
name='last_check_time',
|
||||
field=models.DateTimeField(blank=True, null=True, verbose_name='打卡时间'),
|
||||
),
|
||||
]
|
Loading…
Reference in New Issue