feat: fmlog添加工艺步骤字段及相应返回数据
This commit is contained in:
parent
4bc126ca97
commit
b5c21b7472
|
@ -373,6 +373,14 @@ class Route(CommonADModel):
|
||||||
through="mtm.routemat", blank=True)
|
through="mtm.routemat", blank=True)
|
||||||
parent = models.ForeignKey('self', verbose_name='上级路线', on_delete=models.CASCADE, null=True, blank=True)
|
parent = models.ForeignKey('self', verbose_name='上级路线', on_delete=models.CASCADE, null=True, blank=True)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
x = ""
|
||||||
|
if self.material_in:
|
||||||
|
x = x + str(self.material_in) + ">"
|
||||||
|
if self.material_out:
|
||||||
|
x = x + str(self.material_out)
|
||||||
|
return x
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_routes(material: Material=None, routepack:RoutePack=None, routeIds=None):
|
def get_routes(material: Material=None, routepack:RoutePack=None, routeIds=None):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
# Generated by Django 3.2.12 on 2025-04-16 09:58
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('mtm', '0055_auto_20250327_1239'),
|
||||||
|
('wpm', '0109_auto_20250416_1130'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='fmlog',
|
||||||
|
name='route',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='fmlog_route', to='mtm.route', verbose_name='所用步骤'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -147,6 +147,8 @@ class Fmlog(CommonADModel):
|
||||||
"""
|
"""
|
||||||
mtask = models.ForeignKey(Mtask, verbose_name='任务',
|
mtask = models.ForeignKey(Mtask, verbose_name='任务',
|
||||||
on_delete=models.CASCADE, related_name='fmlog_mtask', null=True, blank=True)
|
on_delete=models.CASCADE, related_name='fmlog_mtask', null=True, blank=True)
|
||||||
|
route = models.ForeignKey(Route, verbose_name="所用步骤",
|
||||||
|
on_delete=models.SET_NULL, related_name="fmlog_route", null=True, blank=True)
|
||||||
mgroup = models.ForeignKey(Mgroup, verbose_name='工段', on_delete=models.CASCADE, related_name='fmlog_mgroup')
|
mgroup = models.ForeignKey(Mgroup, verbose_name='工段', on_delete=models.CASCADE, related_name='fmlog_mgroup')
|
||||||
note = models.TextField('备注', default='', blank=True)
|
note = models.TextField('备注', default='', blank=True)
|
||||||
is_fix = models.BooleanField('是否用于返修', default=False) # 返工/复检
|
is_fix = models.BooleanField('是否用于返修', default=False) # 返工/复检
|
||||||
|
|
|
@ -231,7 +231,7 @@ class MlogbSerializer(CustomModelSerializer):
|
||||||
class MlogListSerializer(CustomModelSerializer):
|
class MlogListSerializer(CustomModelSerializer):
|
||||||
mstate_json = serializers.JSONField(source='mgroup.process.mstate_json', read_only=True)
|
mstate_json = serializers.JSONField(source='mgroup.process.mstate_json', read_only=True)
|
||||||
supplier_name = serializers.CharField(source='supplier.name', read_only=True)
|
supplier_name = serializers.CharField(source='supplier.name', read_only=True)
|
||||||
routepack_name = serializers.CharField(source='route.routepack.name', read_only=True)
|
# routepack_name = serializers.CharField(source='route.routepack.name', read_only=True)
|
||||||
belong_dept = serializers.CharField(
|
belong_dept = serializers.CharField(
|
||||||
source='mgroup.belong_dept.id', read_only=True)
|
source='mgroup.belong_dept.id', read_only=True)
|
||||||
belong_dept_name = serializers.CharField(
|
belong_dept_name = serializers.CharField(
|
||||||
|
@ -287,7 +287,7 @@ class MlogbDetailSerializer(CustomModelSerializer):
|
||||||
class MlogSerializer(CustomModelSerializer):
|
class MlogSerializer(CustomModelSerializer):
|
||||||
mstate_json = serializers.JSONField(source='mgroup.process.mstate_json', read_only=True)
|
mstate_json = serializers.JSONField(source='mgroup.process.mstate_json', read_only=True)
|
||||||
supplier_name = serializers.CharField(source='supplier.name', read_only=True)
|
supplier_name = serializers.CharField(source='supplier.name', read_only=True)
|
||||||
routepack_name = serializers.CharField(source='route.routepack.name', read_only=True)
|
# routepack_name = serializers.CharField(source='route.routepack.name', read_only=True)
|
||||||
belong_dept = serializers.CharField(
|
belong_dept = serializers.CharField(
|
||||||
source='mgroup.belong_dept.id', read_only=True)
|
source='mgroup.belong_dept.id', read_only=True)
|
||||||
belong_dept_name = serializers.CharField(
|
belong_dept_name = serializers.CharField(
|
||||||
|
@ -1021,8 +1021,8 @@ class HandoverSerializer(CustomModelSerializer):
|
||||||
# raise ParseError(f'第{ind+1}物料与交接部门不一致')
|
# raise ParseError(f'第{ind+1}物料与交接部门不一致')
|
||||||
if attrs["material"] != wm.material:
|
if attrs["material"] != wm.material:
|
||||||
raise ParseError(f'第{ind+1}物料与交接物料不一致')
|
raise ParseError(f'第{ind+1}物料与交接物料不一致')
|
||||||
if wm.state != WMaterial.WM_OK and attrs['type'] in [Handover.H_NORMAL, Handover.H_TEST]:
|
# if wm.state != WMaterial.WM_OK and attrs['type'] in [Handover.H_NORMAL, Handover.H_TEST]:
|
||||||
raise ParseError(f'第{ind+1}物料不合格,不能进行正常/检验交接')
|
# raise ParseError(f'第{ind+1}物料不合格,不能进行正常/检验交接')
|
||||||
if wm.count_xtest is not None:
|
if wm.count_xtest is not None:
|
||||||
raise ParseError(f'第{ind+1}物料检验中,不能进行交接')
|
raise ParseError(f'第{ind+1}物料检验中,不能进行交接')
|
||||||
attrs["count"] = t_count
|
attrs["count"] = t_count
|
||||||
|
@ -1177,8 +1177,9 @@ class AttLogSerializer(CustomModelSerializer):
|
||||||
|
|
||||||
|
|
||||||
class FmlogSerializer(CustomModelSerializer):
|
class FmlogSerializer(CustomModelSerializer):
|
||||||
routepack_name = serializers.CharField(
|
# routepack_name = serializers.CharField(
|
||||||
source='mtask.route.routepack.name', read_only=True)
|
# source='mtask.route.routepack.name', read_only=True)
|
||||||
|
route_name = serializers.StringRelatedField(source="route", read_only=True)
|
||||||
mgroup_name = serializers.CharField(source='mgroup.name', read_only=True)
|
mgroup_name = serializers.CharField(source='mgroup.name', read_only=True)
|
||||||
mtask_number = serializers.CharField(source='mtask.number', read_only=True)
|
mtask_number = serializers.CharField(source='mtask.number', read_only=True)
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -1190,11 +1191,13 @@ class FmlogSerializer(CustomModelSerializer):
|
||||||
is_fix = attrs.get("is_fix", False)
|
is_fix = attrs.get("is_fix", False)
|
||||||
if is_fix:
|
if is_fix:
|
||||||
attrs["mtask"] = None
|
attrs["mtask"] = None
|
||||||
elif not attrs.get("mtask", None):
|
elif not attrs.get("mtask", None) or not attrs.get("route", None):
|
||||||
raise ParseError("请选择任务")
|
raise ParseError("请选择任务或工艺步骤")
|
||||||
mtask: Mtask = attrs['mtask']
|
mtask: Mtask = attrs['mtask']
|
||||||
if mtask.state != Mtask.MTASK_ASSGINED:
|
if mtask and mtask.state != Mtask.MTASK_ASSGINED:
|
||||||
raise ParseError('该任务非下达中不可选择')
|
raise ParseError('该任务非下达中不可选择')
|
||||||
|
if mtask:
|
||||||
|
attrs["route"] = mtask.route
|
||||||
return attrs
|
return attrs
|
||||||
|
|
||||||
class FmlogUpdateSerializer(CustomModelSerializer):
|
class FmlogUpdateSerializer(CustomModelSerializer):
|
||||||
|
|
Loading…
Reference in New Issue