feat: 添加返修交接支持
This commit is contained in:
parent
cb5ede39f0
commit
92fc1e9e0a
|
@ -0,0 +1,30 @@
|
|||
# Generated by Django 3.2.12 on 2024-07-19 02:02
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('mtm', '0035_process_store_notok'),
|
||||
('wpm', '0056_auto_20240718_1118'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='handover',
|
||||
name='material_changed',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='h_ma_c', to='mtm.material', verbose_name='变更后物料'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='handover',
|
||||
name='type',
|
||||
field=models.PositiveSmallIntegerField(choices=[(10, '正常交接'), (20, '返修交接')], default=10, verbose_name='交接类型'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='handover',
|
||||
name='material',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='h_ma', to='mtm.material', verbose_name='物料'),
|
||||
),
|
||||
]
|
|
@ -239,6 +239,9 @@ class Handover(CommonADModel):
|
|||
"""
|
||||
交接记录
|
||||
"""
|
||||
H_NORMAL = 10
|
||||
H_REPAIR = 20
|
||||
type = models.PositiveSmallIntegerField('交接类型', choices=[(H_NORMAL, '正常交接'), (H_REPAIR, '返修交接')], default=H_NORMAL)
|
||||
send_date = models.DateField('送料日期')
|
||||
send_user = models.ForeignKey(
|
||||
User, verbose_name='交送人', on_delete=models.CASCADE, related_name='handover_send_user')
|
||||
|
@ -248,7 +251,8 @@ class Handover(CommonADModel):
|
|||
Dept, verbose_name='送料部门', on_delete=models.CASCADE, related_name='handover_send_dept')
|
||||
batch = models.CharField('批次号', max_length=50)
|
||||
material = models.ForeignKey(
|
||||
Material, verbose_name='物料', on_delete=models.CASCADE)
|
||||
Material, verbose_name='物料', on_delete=models.CASCADE, related_name='h_ma')
|
||||
material_changed = models.ForeignKey(Material, verbose_name='变更后物料', on_delete=models.CASCADE, null=True, blank=True, related_name='h_ma_c')
|
||||
count = models.PositiveIntegerField('送料数', default=0)
|
||||
count_eweight = models.FloatField('单数重量', default=0)
|
||||
recive_dept = models.ForeignKey(
|
||||
|
|
|
@ -433,12 +433,15 @@ class HandoverSerializer(CustomModelSerializer):
|
|||
source='material', read_only=True)
|
||||
|
||||
def validate(self, attrs):
|
||||
material = attrs['wm'].material
|
||||
attrs['material'] = attrs['wm'].material
|
||||
attrs['batch'] = attrs['wm'].batch
|
||||
attrs['send_dept'] = attrs['wm'].belong_dept
|
||||
if 'type' not in attrs:
|
||||
attrs['type'] == Handover.H_NORMAL
|
||||
wm:WMaterial = attrs['wm']
|
||||
material = wm.material
|
||||
attrs['material'] = wm.material
|
||||
attrs['batch'] = wm.batch
|
||||
attrs['send_dept'] = wm.belong_dept
|
||||
if attrs['wm'].mgroup:
|
||||
attrs['send_mgroup'] = attrs['wm'].mgroup
|
||||
attrs['send_mgroup'] = wm.mgroup
|
||||
if material.process and material.process.into_wm_mgroup and 'recive_mgroup' not in attrs:
|
||||
raise ValidationError('必须指定交接工段')
|
||||
if 'recive_mgroup' in attrs and attrs['recive_mgroup']:
|
||||
|
@ -447,6 +450,8 @@ class HandoverSerializer(CustomModelSerializer):
|
|||
raise ValidationError('收料车间和收料工段必须有一个')
|
||||
if 'send_dept' not in attrs and 'send_mgroup' not in attrs:
|
||||
raise ValidationError('送料车间和送料工段必须有一个')
|
||||
if wm.notok_sign is not None and attrs['type'] == Handover.H_NORMAL:
|
||||
raise ValidationError('物料不合格,不能进行正常交接')
|
||||
return attrs
|
||||
|
||||
class Meta:
|
||||
|
@ -462,6 +467,11 @@ class HandoverSerializer(CustomModelSerializer):
|
|||
"batch": {"required": False},
|
||||
}
|
||||
|
||||
class HandoverUpdateSerializer(CustomModelSerializer):
|
||||
class Meta:
|
||||
model = Handover
|
||||
fields = ['id', 'send_date', 'send_user', 'count', 'count_eweight', 'recive_user']
|
||||
|
||||
|
||||
class GenHandoverSerializer(serializers.Serializer):
|
||||
mlogs = serializers.PrimaryKeyRelatedField(
|
||||
|
|
|
@ -248,7 +248,7 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
|
|||
else:
|
||||
lookup['belong_dept'] = belong_dept
|
||||
if mo_count > 0:
|
||||
wm, _ = WMaterial.objects.get_or_create(**lookup, defaults=lookup)
|
||||
wm, _ = WMaterial.objects.get_or_create(**lookup, defaults=lookup.update({"belong_dept": belong_dept}))
|
||||
wm.count = wm.count + mo_count
|
||||
wm.count_eweight = mo_count_eweight
|
||||
wm.update_by = user
|
||||
|
@ -297,7 +297,7 @@ def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
|
|||
else:
|
||||
lookup['belong_dept'] = belong_dept
|
||||
|
||||
wm, _ = WMaterial.objects.get_or_create(**lookup, defaults=lookup)
|
||||
wm, _ = WMaterial.objects.get_or_create(**lookup, defaults=lookup.update({"belong_dept": belong_dept}))
|
||||
wm.count = wm.count + mi_count
|
||||
wm.update_by = user
|
||||
wm.save()
|
||||
|
|
|
@ -18,7 +18,7 @@ from apps.utils.mixins import BulkCreateModelMixin
|
|||
from .filters import StLogFilter, SfLogFilter, WMaterialFilter, MlogFilter, HandoverFilter, MlogbFilter
|
||||
from .models import SfLog, SfLogExp, StLog, WMaterial, Mlog, Handover, Mlogb, AttLog, OtherLog
|
||||
from .serializers import (SflogExpSerializer, SfLogSerializer, StLogSerializer, WMaterialSerializer, MlogRevertSerializer,
|
||||
MlogSerializer, MlogRelatedSerializer, DeptBatchSerializer, HandoverSerializer,
|
||||
MlogSerializer, MlogRelatedSerializer, DeptBatchSerializer, HandoverSerializer, HandoverUpdateSerializer,
|
||||
GenHandoverSerializer, GenHandoverWmSerializer, MlogAnaSerializer,
|
||||
AttLogSerializer, OtherLogSerializer, MlogInitSerializer, MlogChangeSerializer,
|
||||
MlogbDetailSerializer, MlogbInSerializer, MlogbInUpdateSerializer, MlogbOutUpdateSerializer)
|
||||
|
@ -313,6 +313,7 @@ class HandoverViewSet(CustomModelViewSet):
|
|||
"""
|
||||
queryset = Handover.objects.all()
|
||||
serializer_class = HandoverSerializer
|
||||
update_serializer_class = HandoverUpdateSerializer
|
||||
select_related_fields = ['send_user',
|
||||
'send_dept', 'recive_user', 'recive_dept']
|
||||
filterset_class = HandoverFilter
|
||||
|
|
Loading…
Reference in New Issue