修改表名

This commit is contained in:
caoqianming 2021-11-08 09:53:16 +08:00
parent 950418a154
commit 5357a2d82a
11 changed files with 95 additions and 29 deletions

View File

@ -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',
),
]

View File

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

View File

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

View File

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

View File

@ -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)),
]

View File

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

View File

@ -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,
},
),
]

View File

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

View File

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

View File

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

View File

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