获取首件检查表first_test_init part1

This commit is contained in:
caoqianming 2022-02-18 16:57:09 +08:00
parent 1282b9c7ea
commit ff386204b5
5 changed files with 140 additions and 8 deletions

View File

@ -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='首件检查员'),
),
]

View File

@ -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 = '子生产计划'

View File

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

View File

@ -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):
"""
生产进度

View File

@ -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='打卡时间'),
),
]