修改表名
This commit is contained in:
parent
950418a154
commit
5357a2d82a
|
@ -0,0 +1,19 @@
|
|||
# Generated by Django 3.2.6 on 2021-11-08 01:51
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('mtm', '0028_auto_20211102_1707'),
|
||||
('qm', '0003_testrecord'),
|
||||
('inm', '0010_auto_20211102_1631'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameModel(
|
||||
old_name='FIFODetail',
|
||||
new_name='FIFOItem',
|
||||
),
|
||||
]
|
|
@ -68,9 +68,9 @@ class FIFO(CommonAModel):
|
|||
remark = models.CharField('备注', max_length=1000, default='')
|
||||
|
||||
|
||||
class FIFODetail(BaseModel):
|
||||
class FIFOItem(BaseModel):
|
||||
"""
|
||||
出入库详细记录
|
||||
出入库详细条目
|
||||
"""
|
||||
is_tested = models.BooleanField('是否已检测', default=False)
|
||||
is_testok = models.BooleanField('是否检测合格', default=False)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from rest_framework import serializers
|
||||
|
||||
from apps.inm.models import FIFO, FIFODetail, IProduct, MaterialBatch, WareHouse,Inventory
|
||||
from apps.inm.models import FIFO, FIFOItem, IProduct, MaterialBatch, WareHouse,Inventory
|
||||
|
||||
from apps.system.serializers import UserSimpleSerializer
|
||||
from apps.mtm.serializers import MaterialSimpleSerializer
|
||||
|
@ -42,10 +42,10 @@ class FIFOListSerializer(serializers.ModelSerializer):
|
|||
model=FIFO
|
||||
fields = '__all__'
|
||||
|
||||
class FIFODetailSerializer(serializers.ModelSerializer):
|
||||
class FIFOItemSerializer(serializers.ModelSerializer):
|
||||
material_= MaterialSimpleSerializer(source='material', read_only=True)
|
||||
class Meta:
|
||||
model=FIFODetail
|
||||
model= FIFOItem
|
||||
fields = '__all__'
|
||||
|
||||
class IProductInPurSerializer(serializers.ModelSerializer):
|
||||
|
@ -56,7 +56,7 @@ class IProductInPurSerializer(serializers.ModelSerializer):
|
|||
class FIFODetailInPurSerializer(serializers.ModelSerializer):
|
||||
details = IProductInPurSerializer(many=True, required=False)
|
||||
class Meta:
|
||||
model = FIFODetail
|
||||
model = FIFOItem
|
||||
fields = ['material', 'count', 'batch', 'details']
|
||||
|
||||
class MaterialBatchQuerySerializer(serializers.Serializer):
|
||||
|
@ -101,7 +101,7 @@ class FIFOInPurSerializer(serializers.ModelSerializer):
|
|||
raise serializers.ValidationError('数目对不上')
|
||||
else:
|
||||
i['fifo'] = obj
|
||||
fifod = FIFODetail.objects.create(**i)
|
||||
fifod = FIFOItem.objects.create(**i)
|
||||
p_list = []
|
||||
for x in p_details:
|
||||
x['state'] = 1
|
||||
|
@ -113,6 +113,6 @@ class FIFOInPurSerializer(serializers.ModelSerializer):
|
|||
IProduct.objects.bulk_create(p_list)
|
||||
else:
|
||||
i['fifo'] = obj
|
||||
FIFODetail.objects.create(**i)
|
||||
FIFOItem.objects.create(**i)
|
||||
return obj
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
from django.db.models.signals import post_save
|
||||
from django.dispatch import receiver
|
||||
|
||||
from apps.inm.models import Inventory, MaterialBatch, FIFO, FIFODetail
|
||||
from apps.inm.models import Inventory, MaterialBatch, FIFO, FIFOItem
|
||||
|
||||
|
||||
def update_inm(instance:FIFO, type:int=1):
|
||||
|
@ -11,7 +11,7 @@ def update_inm(instance:FIFO, type:int=1):
|
|||
warehouse = instance.warehouse
|
||||
if instance.type in [3]: # 采购入库
|
||||
# 更新相关表
|
||||
for i in FIFODetail.objects.filter(fifo=instance):
|
||||
for i in FIFOItem.objects.filter(fifo=instance):
|
||||
material = i.material
|
||||
o1, _ = Inventory.objects.get_or_create(material=material, warehouse=warehouse, \
|
||||
defaults={'material':material, 'warehouse':warehouse, 'count':0})
|
||||
|
@ -25,7 +25,7 @@ def update_inm(instance:FIFO, type:int=1):
|
|||
material.save()
|
||||
elif instance.type in [1]: # 生产领料
|
||||
# 更新相关表
|
||||
for i in FIFODetail.objects.filter(fifo=instance):
|
||||
for i in FIFOItem.objects.filter(fifo=instance):
|
||||
material = i.material
|
||||
o1 = Inventory.objects.get(material=material, warehouse=warehouse)
|
||||
o1.count = o1.count - i.count
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from django.db.models import base
|
||||
from rest_framework import urlpatterns
|
||||
from apps.inm.views import FIFODetailViewSet, FIFOViewSet, MaterialBatchViewSet, WarehouseViewSet,InventoryViewSet
|
||||
from apps.inm.views import FIFOItemViewSet, FIFOViewSet, MaterialBatchViewSet, WarehouseViewSet,InventoryViewSet
|
||||
from django.urls import path, include
|
||||
from rest_framework.routers import DefaultRouter
|
||||
|
||||
|
@ -9,7 +9,7 @@ router.register('warehouse', WarehouseViewSet, basename='warehouse')
|
|||
router.register('inventory', InventoryViewSet, basename='inventory')
|
||||
router.register('materialbatch', MaterialBatchViewSet, basename='materialbatch')
|
||||
router.register('fifo', FIFOViewSet, basename='fifo'),
|
||||
router.register('fifodetail', FIFODetailViewSet, basename='fifodetail')
|
||||
router.register('fifodetail', FIFOItemViewSet, basename='fifodetail')
|
||||
urlpatterns = [
|
||||
path('', include(router.urls)),
|
||||
]
|
||||
|
|
|
@ -5,8 +5,8 @@ from rest_framework.mixins import DestroyModelMixin, ListModelMixin, RetrieveMod
|
|||
from rest_framework.viewsets import GenericViewSet, ModelViewSet
|
||||
from apps.inm.filters import MbFilterSet
|
||||
|
||||
from apps.inm.models import FIFO, FIFODetail, MaterialBatch, WareHouse,Inventory
|
||||
from apps.inm.serializers import FIFODetailSerializer, FIFOInPurSerializer, FIFOListSerializer, MaterialBatchQuerySerializer, MaterialBatchSerializer, WareHouseSerializer, WareHouseCreateUpdateSerializer,InventorySerializer
|
||||
from apps.inm.models import FIFO, FIFOItem, MaterialBatch, WareHouse,Inventory
|
||||
from apps.inm.serializers import FIFOItemSerializer, FIFOInPurSerializer, FIFOListSerializer, MaterialBatchQuerySerializer, MaterialBatchSerializer, WareHouseSerializer, WareHouseCreateUpdateSerializer,InventorySerializer
|
||||
from apps.inm.signals import update_inm
|
||||
from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin
|
||||
from rest_framework.decorators import action
|
||||
|
@ -63,13 +63,13 @@ class MaterialBatchViewSet(ListModelMixin, GenericViewSet):
|
|||
queryset = self.queryset.filter(warehouse__id=data['warehouse'], material__id__in=data['materials'])
|
||||
return Response(MaterialBatchSerializer(instance=queryset, many=True).data)
|
||||
|
||||
class FIFODetailViewSet(ListModelMixin, DestroyModelMixin, GenericViewSet):
|
||||
class FIFOItemViewSet(ListModelMixin, DestroyModelMixin, GenericViewSet):
|
||||
"""
|
||||
出入库记录详情表
|
||||
"""
|
||||
perms_map = {'*': '*'}
|
||||
queryset = FIFODetail.objects.select_related('material', 'fifo').all()
|
||||
serializer_class = FIFODetailSerializer
|
||||
queryset = FIFOItem.objects.select_related('material', 'fifo').all()
|
||||
serializer_class = FIFOItemSerializer
|
||||
filterset_fields = ['material', 'fifo']
|
||||
search_fields = []
|
||||
ordering_fields = ['create_time']
|
||||
|
@ -113,7 +113,7 @@ class FIFOViewSet(ListModelMixin, GenericViewSet):
|
|||
审核通过
|
||||
"""
|
||||
obj = self.get_object()
|
||||
for i in FIFODetail.objects.filter(fifo=obj):
|
||||
for i in FIFOItem.objects.filter(fifo=obj):
|
||||
if not i.is_testok:
|
||||
raise APIException('未检验通过, 不可审核')
|
||||
if obj.is_audited:
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
# Generated by Django 3.2.6 on 2021-11-08 01:51
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('mtm', '0028_auto_20211102_1707'),
|
||||
('qm', '0003_testrecord'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name='testrecord',
|
||||
old_name='fifo_detail',
|
||||
new_name='fifo_item',
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='TestRecordItem',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||
('field_name', models.CharField(max_length=50, verbose_name='字段名')),
|
||||
('field_key', models.CharField(max_length=50, verbose_name='字段标识')),
|
||||
('field_type', models.IntegerField(choices=[(1, '生产记录'), (2, '检验记录')], verbose_name='字段类型')),
|
||||
('field_value', models.JSONField(blank=True, default=dict, verbose_name='录入值')),
|
||||
('need_judge', models.BooleanField(default=False, verbose_name='是否需要判定')),
|
||||
('is_testok', models.BooleanField(default=True, verbose_name='是否合格')),
|
||||
('form_field', models.ForeignKey(db_constraint=False, on_delete=django.db.models.deletion.CASCADE, to='mtm.recordformfield', verbose_name='关联字段')),
|
||||
('test_record', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qm.testrecord', verbose_name='关联的检测记录')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
|
@ -51,7 +51,7 @@ class TestRecord(CommonAModel):
|
|||
form = models.ForeignKey('mtm.recordform', verbose_name='所用表格', on_delete=models.CASCADE)
|
||||
record_data = models.JSONField('记录数据', default=dict, blank=True)
|
||||
is_testok = models.BooleanField('是否合格', default=True)
|
||||
fifo_detail = models.ForeignKey('inm.fifodetail', verbose_name='关联的出入库批次', on_delete=models.CASCADE, null=True, blank=True)
|
||||
fifo_item = models.ForeignKey('inm.fifoitem', verbose_name='关联的出入库批次', on_delete=models.CASCADE, null=True, blank=True)
|
||||
|
||||
|
||||
class TestRecordItem(BaseModel):
|
||||
|
|
|
@ -2,7 +2,7 @@ from rest_framework import serializers
|
|||
from apps.mtm.models import RecordForm, RecordFormField
|
||||
from apps.mtm.serializers import RecordFormFieldSerializer, RecordFormSimpleSerializer
|
||||
from apps.system.serializers import FileSimpleSerializer
|
||||
from .models import Standard, TestItem, TestRecord
|
||||
from .models import Standard, TestItem, TestRecord, TestRecordItem
|
||||
|
||||
class StandardCreateUpdateSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
|
@ -35,10 +35,16 @@ class AnalysisItemSerializer(serializers.ModelSerializer):
|
|||
pass
|
||||
|
||||
|
||||
class TestRecordItemSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = TestRecordItem
|
||||
fields = ['form_field', 'field_value']
|
||||
|
||||
class TestRecordCreateSerializer(serializers.ModelSerializer):
|
||||
record_data = TestRecordItemSerializer(many=True)
|
||||
class Meta:
|
||||
model = TestRecord
|
||||
fields = ['form', 'record_data', 'is_testok', 'fifo_detail']
|
||||
fields = ['form', 'record_data', 'is_testok', 'fifo_item']
|
||||
|
||||
def create(self, validated_data):
|
||||
if 'is_testok' not in validated_data:
|
||||
|
|
|
@ -43,7 +43,7 @@ class TestRecordViewSet(ModelViewSet):
|
|||
检测记录
|
||||
"""
|
||||
perms_map = {'*': '*'}
|
||||
queryset = TestRecord.objects.select_related('fifo_detail', 'form').all()
|
||||
queryset = TestRecord.objects.select_related('fifo_item', 'form').all()
|
||||
serializer_class = TestRecordListSerializer
|
||||
ordering = ['-id']
|
||||
|
||||
|
@ -59,7 +59,7 @@ class TestRecordViewSet(ModelViewSet):
|
|||
def perform_create(self, serializer):
|
||||
obj = serializer.save(create_by = self.request.user)
|
||||
# 如果检测合格
|
||||
if obj.fifo_detail:
|
||||
obj.fifo_detail.is_testok = True if obj.is_testok else False
|
||||
obj.fifo_detail.is_tested = True
|
||||
obj.fifo_detail.save()
|
||||
if obj.fifo_item:
|
||||
obj.fifo_item.is_testok = True if obj.is_testok else False
|
||||
obj.fifo_item.is_tested = True
|
||||
obj.fifo_item.save()
|
|
@ -1,6 +1,6 @@
|
|||
from rest_framework import serializers
|
||||
from rest_framework.serializers import ModelSerializer
|
||||
from apps.inm.models import FIFO, FIFODetail, MaterialBatch, WareHouse
|
||||
from apps.inm.models import FIFO, FIFOItem, MaterialBatch, WareHouse
|
||||
from apps.inm.signals import update_inm
|
||||
from apps.mtm.models import Material, RecordForm, Step
|
||||
from apps.mtm.serializers import MaterialSimpleSerializer
|
||||
|
@ -46,7 +46,7 @@ class PickSerializer(serializers.Serializer):
|
|||
i['fifo'] = fifo
|
||||
i['count'] = i.pop('pick_count')
|
||||
i['is_teskok'] = True
|
||||
FIFODetail.objects.create(**i)
|
||||
FIFOItem.objects.create(**i)
|
||||
# 更新车间物料
|
||||
wm, _ = WMaterial.objects.get_or_create(material=i['material'], batch=i['batch'], \
|
||||
subproduction_plan=sp,defaults={
|
||||
|
|
Loading…
Reference in New Issue