feat: 子任务可为空以及一些查询条件
This commit is contained in:
parent
25d63c0b27
commit
cb45e0bab1
|
@ -45,7 +45,7 @@ class WMaterialFilter(filters.FilterSet):
|
|||
return queryset.filter(mgroup__id=value)|queryset.filter(belong_dept=Mgroup.objects.get(id=value).belong_dept, mgroup=None)
|
||||
|
||||
def filter_tag(self, queryset, name, value):
|
||||
mgroup = self.data.get("mgroupx", None)
|
||||
mgroup = self.data.get("mgroup", None)
|
||||
if mgroup:
|
||||
process = Mgroup.objects.get(id=mgroup).process
|
||||
if value == "todo":
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 3.2.12 on 2025-03-07 03:03
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('wpm', '0095_alter_mlogbdefect_defect'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='fmlog',
|
||||
name='enabled',
|
||||
field=models.BooleanField(default=True, verbose_name='是否启用'),
|
||||
),
|
||||
]
|
|
@ -172,7 +172,7 @@ class Mlog(CommonADModel):
|
|||
mtaskb = models.ForeignKey(Mtaskb, verbose_name='关联个人任务', on_delete=models.CASCADE, related_name='mlog_mtaskb', null=True, blank=True)
|
||||
fill_way = models.PositiveSmallIntegerField("填写方式", default=10, help_text='10:仅二级;20:二三级;30:一二级')
|
||||
mtype = models.PositiveSmallIntegerField('生产类型', default=10, help_text='10:自生产;20:外协生产', choices=((10, '自生产'), (20, '外协生产')))
|
||||
is_fix = models.BooleanField('是否用于返修', default=False)
|
||||
is_fix = models.BooleanField('是否用于返修', default=False) # 返工/复检
|
||||
qct = models.ForeignKey("qm.qct", verbose_name='所用质检表', on_delete=models.SET_NULL, null=True, blank=True)
|
||||
supplier = models.ForeignKey(Supplier, verbose_name='外协供应商', on_delete=models.SET_NULL, null=True, blank=True)
|
||||
work_start_time = models.DateTimeField('生产开始时间', null=True, blank=True)
|
||||
|
@ -376,7 +376,6 @@ class Mlogb(BaseModel):
|
|||
def mlogbdefect(self):
|
||||
return MlogbDefect.objects.filter(mlogb=self)
|
||||
|
||||
@property
|
||||
def cal_count_pn_jgqbl(self):
|
||||
mqs = MlogbDefect.get_defect_qs_from_mlogb(self, ftype="in")
|
||||
count_pn_jgqbl = mqs.aggregate(total=Sum("count"))["total"] or 0
|
||||
|
@ -386,7 +385,8 @@ class Mlogb(BaseModel):
|
|||
if mlog:
|
||||
count_pn_jgqbl = MlogbDefect.get_defect_qs_from_mlog(mlog, ftype="in").aggregate(total=Sum("count"))["total"] or 0
|
||||
mlog.count_pn_jgqbl = count_pn_jgqbl
|
||||
mlog.count_real = self.count_use - count_pn_jgqbl
|
||||
if mlog.count_real == mlog.count_use:
|
||||
mlog.count_real = mlog.count_use - count_pn_jgqbl
|
||||
mlog.save(update_fields=["count_pn_jgqbl", "count_real"])
|
||||
|
||||
def cal_count_notok(self):
|
||||
|
|
|
@ -536,8 +536,8 @@ class MlogSerializer(CustomModelSerializer):
|
|||
attrs['mtask'] = fmlog.mtask
|
||||
if attrs['mtask'].route:
|
||||
attrs['route'] = attrs['mtask'].route
|
||||
if attrs['mtask'].mtaskb and mtaskb is None:
|
||||
raise ParseError('子任务不能为空')
|
||||
# if attrs['mtask'].mtaskb and mtaskb is None:
|
||||
# raise ParseError('子任务不能为空')
|
||||
if mtaskb and mtaskb.mtask != fmlog.mtask:
|
||||
raise ParseError('子任务不一致')
|
||||
if wm_in.state in [WMaterial.WM_OK]:
|
||||
|
@ -560,9 +560,9 @@ class MlogSerializer(CustomModelSerializer):
|
|||
if mtask.start_date == mtask.end_date:
|
||||
attrs['handle_date'] = mtask.start_date
|
||||
else:
|
||||
if attrs['work_end_time']:
|
||||
if attrs.get('work_end_time', None):
|
||||
attrs['handle_date'] = localdate(attrs['work_end_time'])
|
||||
elif attrs['work_start_time']:
|
||||
elif attrs.get('work_start_time', None):
|
||||
attrs['handle_date'] = localdate(attrs['work_start_time'])
|
||||
mtaskb: Mtaskb = attrs.get('mtaskb', None)
|
||||
if mtaskb:
|
||||
|
@ -646,12 +646,12 @@ class MlogbInSerializer(CustomModelSerializer):
|
|||
class Meta:
|
||||
model = Mlogb
|
||||
fields = ['id', 'mlog', 'mtask', 'wm_in', 'count_use', 'count_pn_jgqbl',
|
||||
'count_break', 'note', "parent"]
|
||||
'count_break', 'note', "parent", "mlogbdefect"]
|
||||
extra_kwargs = {'count_use': {'required': True}, 'mtask': {'required': False},
|
||||
'wm_in': {'required': True, "allow_empty": False}}
|
||||
|
||||
def validate(self, attrs):
|
||||
mlog: Mlog = attrs['mlog']
|
||||
mlog:Mlog = attrs['mlog']
|
||||
is_fix = mlog.is_fix
|
||||
mtask: Mtask = attrs.get("mtask", None)
|
||||
if mtask and mtask.state != Mtask.MTASK_ASSGINED:
|
||||
|
|
|
@ -649,7 +649,7 @@ class FmlogViewSet(CustomModelViewSet):
|
|||
serializer_class = FmlogSerializer
|
||||
update_serializer_class = FmlogUpdateSerializer
|
||||
filterset_fields = ['mtask', 'mgroup', 'mtask__route', 'enabled']
|
||||
select_related_fields = ['mtask', 'mgroup', 'mtask__route', 'mtask__route__routepack']
|
||||
select_related_fields = ['mtask', 'mgroup', 'mtask__route', 'mtask__route__routepack', "mtask__route__material_out"]
|
||||
|
||||
def destroy(self, request, *args, **kwargs):
|
||||
ins = self.get_object()
|
||||
|
|
Loading…
Reference in New Issue