diff --git a/hb_server/apps/pm/filters.py b/hb_server/apps/pm/filters.py index d025611..313c63d 100644 --- a/hb_server/apps/pm/filters.py +++ b/hb_server/apps/pm/filters.py @@ -1,4 +1,5 @@ from django_filters import rest_framework as filters +from apps.mtm.models import Material, Step from apps.pm.models import SubProductionProgress from apps.wpm.models import Operation, WProduct @@ -15,8 +16,12 @@ class SubproductionProgressFilterSet(filters.FilterSet): def filter_operation(self, queryset, name, value): operation = Operation.objects.get(pk=value) wproducts = WProduct.objects.filter(ow_wproduct__operation=value) + step = operation.step if wproducts.exists(): subplans = WpmServies.get_subplans_queryset_from_wproducts(wproducts) else: - subplans = WpmServies.get_subplans_queyset_from_step(operation.step) - return queryset.filter(subproduction_plan__in=subplans) \ No newline at end of file + subplans = WpmServies.get_subplans_queyset_from_step(step) + queryset = queryset.filter(subproduction_plan__in=subplans) + if step.type == Step.STEP_TYPE_NOM: + queryset = queryset.exclude(material__type=Material.MA_TYPE_HALFGOOD) + return queryset \ No newline at end of file diff --git a/hb_server/apps/pm/migrations/0015_auto_20211122_1556.py b/hb_server/apps/pm/migrations/0015_auto_20211122_1556.py new file mode 100644 index 0000000..1f00fa9 --- /dev/null +++ b/hb_server/apps/pm/migrations/0015_auto_20211122_1556.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.9 on 2021-11-22 07:56 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('pm', '0014_subproductionplan_number'), + ] + + operations = [ + migrations.AddField( + model_name='subproductionplan', + name='main_count_ok', + field=models.IntegerField(default=0, verbose_name='合格数'), + ), + migrations.AddField( + model_name='subproductionprogress', + name='count_ok', + field=models.IntegerField(default=0, verbose_name='合格数量'), + ), + ] diff --git a/hb_server/apps/pm/models.py b/hb_server/apps/pm/models.py index fa4711f..9cdd6c1 100644 --- a/hb_server/apps/pm/models.py +++ b/hb_server/apps/pm/models.py @@ -56,6 +56,7 @@ class SubProductionPlan(CommonAModel): main_product = models.ForeignKey(Material, verbose_name='主要产品', on_delete=models.CASCADE, null=True, blank=True) main_count = models.IntegerField('应产出数', default=0) main_count_real = models.IntegerField('实际产出数', default=0) + main_count_ok = models.IntegerField('合格数', default=0) steps = models.JSONField('工艺步骤', default=list) @@ -80,3 +81,4 @@ class SubProductionProgress(BaseModel): count = models.IntegerField('应出入数') count_pick = models.IntegerField('实际领用数', default=0) count_real = models.IntegerField('实际消耗/产出数', default=0) + count_ok = models.IntegerField('合格数量', default=0) diff --git a/hb_server/apps/wpm/filters.py b/hb_server/apps/wpm/filters.py index f11be8b..eac725e 100644 --- a/hb_server/apps/wpm/filters.py +++ b/hb_server/apps/wpm/filters.py @@ -1,5 +1,5 @@ from django_filters import rest_framework as filters -from apps.mtm.models import Step +from apps.mtm.models import Material, Step from apps.wpm.services import WpmServies from .models import Operation, WMaterial, WProduct @@ -19,7 +19,5 @@ class WMaterialFilterSet(filters.FilterSet): subplans = WpmServies.get_subplans_queryset_from_wproducts(wproducts) else: subplans = WpmServies.get_subplans_queyset_from_step(step) - queryset = queryset.filter(subproduction_plan__in=subplans) - # if step.type == Step.STEP_TYPE_NOM: - # queryset = queryset.filter() + queryset = queryset.filter(subproduction_plan__in=subplans).exclude(material__type=Material.MA_TYPE_HALFGOOD) return queryset \ No newline at end of file diff --git a/hb_server/apps/wpm/migrations/0020_alter_operationwproduct_wproduct.py b/hb_server/apps/wpm/migrations/0020_alter_operationwproduct_wproduct.py new file mode 100644 index 0000000..45929df --- /dev/null +++ b/hb_server/apps/wpm/migrations/0020_alter_operationwproduct_wproduct.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.9 on 2021-11-22 07:56 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('wpm', '0019_auto_20211122_1110'), + ] + + operations = [ + migrations.AlterField( + model_name='operationwproduct', + name='wproduct', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ow_wproduct', to='wpm.wproduct', verbose_name='关联半成品'), + ), + ] diff --git a/hb_server/apps/wpm/serializers.py b/hb_server/apps/wpm/serializers.py index 78b0ecc..3b87574 100644 --- a/hb_server/apps/wpm/serializers.py +++ b/hb_server/apps/wpm/serializers.py @@ -326,12 +326,13 @@ class OperationMaterialCreate1Serailizer(serializers.ModelSerializer): class Meta: model = OperationMaterial fields = ['operation', 'wmaterial', 'count'] - + def create(self, validated_data): wmaterial = validated_data['wmaterial'] validated_data['material'] = wmaterial.material validated_data['subproduction_plan'] = wmaterial.subproduction_plan validated_data['batch'] = wmaterial.batch + validated_data['type'] = SubprodctionMaterial.SUB_MA_TYPE_IN return super().create(validated_data) class OperationMaterialCreate2Serailizer(serializers.ModelSerializer): @@ -344,6 +345,7 @@ class OperationMaterialCreate2Serailizer(serializers.ModelSerializer): subproduction_progress = validated_data['subproduction_progress'] validated_data['material'] = subproduction_progress.material validated_data['subproduction_plan'] = subproduction_progress.subproduction_plan + validated_data['type'] = SubprodctionMaterial.SUB_MA_TYPE_OUT return super().create(validated_data) class OperationMaterialCreate3Serializer(serializers.ModelSerializer): @@ -351,5 +353,9 @@ class OperationMaterialCreate3Serializer(serializers.ModelSerializer): class Meta: model = OperationMaterial fields = ['operation', 'material'] + + def create(self, validated_data): + validated_data['type'] = SubprodctionMaterial.SUB_MA_TYPE_TOOL + return super().create(validated_data) \ No newline at end of file diff --git a/hb_server/apps/wpm/views.py b/hb_server/apps/wpm/views.py index 6967399..3c8e00d 100644 --- a/hb_server/apps/wpm/views.py +++ b/hb_server/apps/wpm/views.py @@ -349,6 +349,19 @@ class OperationViewSet(ListModelMixin, RetrieveModelMixin, CreateModelMixin, Upd """ 提交车间操作重要 """ + op = self.get_object() + # 更新物料消耗进度 + for i in OperationMaterial.objects.filter(operation=op, type=SubprodctionMaterial.SUB_MA_TYPE_IN): + # 更新车间物料 + i_wmat = i.wmaterial + i_wmat.count = i_wmat.count- i['count'] + i_wmat.save() + # 更新子计划物料消耗情况 + sp = i_wmat.subproduction_plan + sp.count_real = sp.count_real + i['count'] + sp.save() + # 更新物料产出情况 +