feat: fmlog 移除route字段
This commit is contained in:
parent
31b1aae03c
commit
6396eff968
|
@ -0,0 +1,32 @@
|
|||
# Generated by Django 3.2.12 on 2024-11-28 09:03
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('wpm', '0074_mlog_count_n_b'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='BatchSt',
|
||||
fields=[
|
||||
('id', models.CharField(editable=False, help_text='主键ID', max_length=20, 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='删除标记')),
|
||||
('batch', models.TextField(verbose_name='批次号')),
|
||||
('data', models.JSONField(blank=True, default=list, verbose_name='数据')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='fmlog',
|
||||
name='route',
|
||||
),
|
||||
]
|
|
@ -12,6 +12,17 @@ from django.utils.translation import gettext_lazy as _
|
|||
|
||||
# Create your models here.
|
||||
|
||||
# class Good(BaseModel):
|
||||
# """
|
||||
# 产品状态
|
||||
# """
|
||||
# pass
|
||||
class BatchSt(BaseModel):
|
||||
"""
|
||||
批次统计表
|
||||
"""
|
||||
batch = models.TextField("批次号")
|
||||
data = models.JSONField("数据", default=list, blank=True)
|
||||
|
||||
class SfLog(CommonADModel):
|
||||
"""值班记录
|
||||
|
@ -139,7 +150,6 @@ class WMaterial(CommonBDModel):
|
|||
)
|
||||
|
||||
class Fmlog(CommonADModel):
|
||||
route = models.ForeignKey(Route, verbose_name='生产路线', on_delete=models.SET_NULL, null=True, blank=True)
|
||||
mtask = models.ForeignKey(Mtask, verbose_name='任务', on_delete=models.CASCADE, related_name='fmlog_mtask')
|
||||
mgroup = models.ForeignKey(Mgroup, verbose_name='工段', on_delete=models.CASCADE, related_name='fmlog_mgroup')
|
||||
note = models.TextField('备注', default='', blank=True)
|
||||
|
@ -274,7 +284,15 @@ class Mlog(CommonADModel):
|
|||
def audit_ignore_fields(self):
|
||||
return ['create_by', 'update_by',
|
||||
'create_time', 'update_time', 'id']
|
||||
|
||||
|
||||
@property
|
||||
def count_fields(self):
|
||||
mlog_count_fields = []
|
||||
for f in Mlog._meta.fields:
|
||||
if f.name.startswith("count"):
|
||||
mlog_count_fields.append(f.name)
|
||||
mlog_count_fields.remove("count_real_eweight")
|
||||
return mlog_count_fields
|
||||
|
||||
class Mlogb(BaseModel):
|
||||
mlog = models.ForeignKey(Mlog, verbose_name='关联日志',
|
||||
|
|
|
@ -420,9 +420,10 @@ class MlogSerializer(CustomModelSerializer):
|
|||
pass
|
||||
else:
|
||||
raise ParseError('未提供消耗的车间物料')
|
||||
attrs['route'] = fmlog.route
|
||||
attrs['mgroup'] = fmlog.mgroup
|
||||
attrs['mtask'] = fmlog.mtask
|
||||
if attrs['mtask'].route:
|
||||
attrs['route'] = attrs['mtask'].route
|
||||
if attrs['mtask'].mtaskb and mtaskb is None:
|
||||
raise ParseError('子任务不能为空')
|
||||
if mtaskb and mtaskb.mtask != fmlog.mtask:
|
||||
|
@ -456,8 +457,6 @@ class MlogSerializer(CustomModelSerializer):
|
|||
mtask = mtaskb.mtask
|
||||
attrs['mtask'] = mtask
|
||||
attrs['handle_user'] = mtaskb.handle_user
|
||||
else:
|
||||
mtask: Mtask = attrs.get('mtask', None)
|
||||
if mtask:
|
||||
attrs['mgroup'] = mtask.mgroup
|
||||
attrs['material_in'] = mtask.material_in
|
||||
|
@ -792,7 +791,7 @@ class AttLogSerializer(CustomModelSerializer):
|
|||
|
||||
class FmlogSerializer(CustomModelSerializer):
|
||||
routepack_name = serializers.CharField(
|
||||
source='route.routepack.name', read_only=True)
|
||||
source='mtask.route.routepack.name', read_only=True)
|
||||
mtask_number = serializers.CharField(source='mtask.number', read_only=True)
|
||||
class Meta:
|
||||
model = Fmlog
|
||||
|
@ -800,15 +799,9 @@ class FmlogSerializer(CustomModelSerializer):
|
|||
read_only_fields = EXCLUDE_FIELDS
|
||||
|
||||
def validate(self, attrs):
|
||||
route: Route = attrs['route']
|
||||
mtask: Mtask = attrs['mtask']
|
||||
if mtask.state != Mtask.MTASK_ASSGINED:
|
||||
raise ParseError('该任务非下达中不可选择')
|
||||
mgroup: Mgroup = attrs['mgroup']
|
||||
if route.process != mgroup.process:
|
||||
raise ParseError('工序不匹配')
|
||||
if mtask.mgroup != mgroup:
|
||||
raise ParseError('工段不匹配')
|
||||
return attrs
|
||||
|
||||
class FmlogUpdateSerializer(CustomModelSerializer):
|
||||
|
|
|
@ -503,8 +503,8 @@ class FmlogViewSet(CustomModelViewSet):
|
|||
queryset = Fmlog.objects.all()
|
||||
serializer_class = FmlogSerializer
|
||||
update_serializer_class = FmlogUpdateSerializer
|
||||
filterset_fields = ['mtask', 'mgroup', 'route']
|
||||
select_related_fields = ['mtask', 'mgroup', 'route', 'route__routepack']
|
||||
filterset_fields = ['mtask', 'mgroup', 'mtask__route']
|
||||
select_related_fields = ['mtask', 'mgroup', 'mtask__route', 'mtask__route__routepack']
|
||||
|
||||
def destroy(self, request, *args, **kwargs):
|
||||
ins = self.get_object()
|
||||
|
|
Loading…
Reference in New Issue