From 75ff28535a8ebe5d4956ca6d1832a0f0a9948c50 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 14 Jan 2022 15:51:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=87=BA=E5=85=A5=E5=BA=93=E5=A2=9E=E5=8A=A0ne?= =?UTF-8?q?ed=5Ftest=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/inm/filters.py | 11 ++++--- .../inm/migrations/0027_auto_20220114_1551.py | 33 +++++++++++++++++++ hb_server/apps/inm/models.py | 5 +-- hb_server/apps/inm/views.py | 11 ++----- hb_server/apps/sam/views.py | 3 +- hb_server/apps/wpm/serializers.py | 1 - hb_server/apps/wpm/views.py | 4 --- 7 files changed, 47 insertions(+), 21 deletions(-) create mode 100644 hb_server/apps/inm/migrations/0027_auto_20220114_1551.py diff --git a/hb_server/apps/inm/filters.py b/hb_server/apps/inm/filters.py index c6beb53..db876ec 100644 --- a/hb_server/apps/inm/filters.py +++ b/hb_server/apps/inm/filters.py @@ -3,22 +3,25 @@ from django_filters import rest_framework as filters from apps.mtm.models import Material from .models import IProduct, MaterialBatch from django.utils import timezone + + class MbFilterSet(filters.FilterSet): material = filters.ModelMultipleChoiceFilter(field_name="material", queryset=Material.objects.all()) tag = filters.CharFilter(method="filter_tag") + class Meta: model = MaterialBatch fields = ['material', 'warehouse'] - + def filter_tag(self, queryset, name, value): if value == 'expired': - queryset = queryset.exclude(expiration_date=None).filter(expiration_date__lte = timezone.now()) + queryset = queryset.exclude(expiration_date=None).filter(expiration_date__lte=timezone.now()) return queryset class IProductFilterSet(filters.FilterSet): - order = filters.NumberFilter(field_name="wproduct__subproduction_plan__production_plan__order") + class Meta: model = IProduct - fields = ['material', 'warehouse', 'batch', 'order', 'material__type'] \ No newline at end of file + fields = ['material', 'warehouse', 'batch', 'order', 'material__type'] diff --git a/hb_server/apps/inm/migrations/0027_auto_20220114_1551.py b/hb_server/apps/inm/migrations/0027_auto_20220114_1551.py new file mode 100644 index 0000000..5f0ea85 --- /dev/null +++ b/hb_server/apps/inm/migrations/0027_auto_20220114_1551.py @@ -0,0 +1,33 @@ +# Generated by Django 3.2.9 on 2022-01-14 07:51 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('system', '0003_auto_20210812_0909'), + ('inm', '0026_alter_fifo_inout_date'), + ] + + operations = [ + migrations.RemoveField( + model_name='fifoitem', + name='is_tested', + ), + migrations.AddField( + model_name='fifoitem', + name='files', + field=models.ManyToManyField(to='system.File', verbose_name='上传材料'), + ), + migrations.AddField( + model_name='fifoitem', + name='need_test', + field=models.BooleanField(default=False, verbose_name='是否需要复验'), + ), + migrations.AlterField( + model_name='fifoitem', + name='is_testok', + field=models.BooleanField(blank=True, null=True, verbose_name='是否复验合格'), + ), + ] diff --git a/hb_server/apps/inm/models.py b/hb_server/apps/inm/models.py index 6d179f6..af1b84a 100644 --- a/hb_server/apps/inm/models.py +++ b/hb_server/apps/inm/models.py @@ -84,8 +84,8 @@ class FIFOItem(BaseModel): """ 出入库详细条目 """ - is_tested = models.BooleanField('是否已检验', default=False) - is_testok = models.BooleanField('是否检验合格', default=False) + need_test = models.BooleanField('是否需要复验', default=False) + is_testok = models.BooleanField('是否复验合格', null=True, blank=True) warehouse = models.ForeignKey( WareHouse, on_delete=models.CASCADE, verbose_name='仓库') material = models.ForeignKey( @@ -96,6 +96,7 @@ class FIFOItem(BaseModel): on_delete=models.CASCADE) subproduction_plan = models.ForeignKey( SubProductionPlan, verbose_name='关联子生产计划', on_delete=models.CASCADE, null=True, blank=True) + files = models.ManyToManyField(File, verbose_name='上传材料') class IProduct(BaseModel): diff --git a/hb_server/apps/inm/views.py b/hb_server/apps/inm/views.py index 0aa9d0f..d36b6ec 100644 --- a/hb_server/apps/inm/views.py +++ b/hb_server/apps/inm/views.py @@ -1,8 +1,7 @@ -from django.shortcuts import render from rest_framework import serializers from rest_framework import exceptions from rest_framework.exceptions import APIException -from rest_framework.mixins import DestroyModelMixin, ListModelMixin, RetrieveModelMixin +from rest_framework.mixins import DestroyModelMixin, ListModelMixin from rest_framework.viewsets import GenericViewSet, ModelViewSet from apps.inm.filters import IProductFilterSet, MbFilterSet @@ -11,17 +10,13 @@ from apps.inm.serializers import FIFOItemSerializer, FIFOInPurSerializer, FIFOLi InmTestRecordCreateSerializer, MaterialBatchQuerySerializer, MaterialBatchSerializer, WareHouseSerializer, \ WareHouseCreateUpdateSerializer, InventorySerializer from apps.inm.signals import update_inm -from apps.mtm.models import Material -from apps.pm.services import PmService from apps.qm.models import TestRecordItem -from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin +from apps.system.mixins import CreateUpdateModelAMixin from rest_framework.decorators import action from rest_framework.response import Response from django.db import transaction from django.utils import timezone -from apps.wpm.services import WpmServies - # Create your views here. @@ -168,7 +163,7 @@ class FIFOViewSet(ListModelMixin, DestroyModelMixin, GenericViewSet): 审核通过 """ obj = self.get_object() - for i in FIFOItem.objects.filter(fifo=obj): + for i in FIFOItem.objects.filter(fifo=obj, need_test=True): if not i.is_testok: raise APIException('未检验通过, 不可审核') if obj.is_audited: diff --git a/hb_server/apps/sam/views.py b/hb_server/apps/sam/views.py index 62fd081..a239d8e 100644 --- a/hb_server/apps/sam/views.py +++ b/hb_server/apps/sam/views.py @@ -150,8 +150,7 @@ class SaleViewSet(CreateUpdateCustomMixin, ListModelMixin, RetrieveModelMixin, C warehouse = WareHouse.objects.get(id=i['warehouse']) material = Material.objects.get(id=i['material']) fifoitem = FIFOItem() - fifoitem.is_tested = True - fifoitem.is_testok = True + fifoitem.need_test = False fifoitem.warehouse = warehouse fifoitem.material = material fifoitem.count = i['total'] diff --git a/hb_server/apps/wpm/serializers.py b/hb_server/apps/wpm/serializers.py index 5889aa4..8956eb3 100644 --- a/hb_server/apps/wpm/serializers.py +++ b/hb_server/apps/wpm/serializers.py @@ -69,7 +69,6 @@ class PickSerializer(serializers.Serializer): if isLowLevel: iproducts = i.pop('iproducts') i['fifo'] = fifo - i['is_testok'] = True # 默认检验合格 i['subproduction_plan'] = sp fifoitem = FIFOItem.objects.create(**i) # 创建再下一个层级 diff --git a/hb_server/apps/wpm/views.py b/hb_server/apps/wpm/views.py index 0920983..28d8a12 100644 --- a/hb_server/apps/wpm/views.py +++ b/hb_server/apps/wpm/views.py @@ -248,8 +248,6 @@ class WProductViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet): for i in wproducts_a: spi = SubProductionPlan.objects.get(pk=i['subproduction_plan']) fifoitem = FIFOItem() - fifoitem.is_tested = True - fifoitem.is_testok = True fifoitem.warehouse = warehouse fifoitem.material = Material.objects.get(pk=i['material']) fifoitem.count = i['total'] @@ -303,8 +301,6 @@ class WProductViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet): create_by=request.user, remark=remark) # 创建入库明细 fifoitem = FIFOItem() - fifoitem.is_tested = True - fifoitem.is_testok = True fifoitem.warehouse = warehouse fifoitem.material = material fifoitem.count = 1 # 单个半成品入库