feat: 增加route表字段以支持产出绑定功能

This commit is contained in:
caoqianming 2023-11-02 11:29:05 +08:00
parent 03f80ed99d
commit 6accd25620
4 changed files with 57 additions and 8 deletions

View File

@ -1,5 +1,5 @@
from django_filters import rest_framework as filters
from apps.mtm.models import Goal, Material
from apps.mtm.models import Goal, Material, Route
from django.db.models.expressions import F
@ -16,7 +16,8 @@ class MaterialFilter(filters.FilterSet):
"is_assemb": ["exact"],
"need_route": ["exact"],
"orderitem_material__order": ['exact'],
"pu_orderitem_material__pu_order": ["exact"]
"pu_orderitem_material__pu_order": ["exact"],
"route_material_out__mgroup": ["exact"]
}
def filter_tag(self, queryset, name, value):
@ -36,3 +37,15 @@ class GoalFilter(filters.FilterSet):
"goal_cate__code": ["exact", "in"],
"year": ["exact"]
}
class RouteFilter(filters.FilterSet):
class Meta:
model = Route
fields = {
"material": ["exact", "in", "isnull"],
"material_out": ["exact", "in"],
"process": ["exact", "in"],
"is_autotask": ["exact"],
"mgroup": ["exact", "in", "isnull"],
}

View File

@ -0,0 +1,34 @@
# Generated by Django 3.2.12 on 2023-11-02 03:28
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('mtm', '0022_alter_material_cate'),
]
operations = [
migrations.AddField(
model_name='route',
name='mgroup',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='route_mgroup', to='mtm.mgroup', verbose_name='指定工段'),
),
migrations.AlterField(
model_name='route',
name='material',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='mtm.material', verbose_name='关联产品'),
),
migrations.AlterField(
model_name='route',
name='out_rate',
field=models.FloatField(blank=True, default=100, verbose_name='出材率'),
),
migrations.AlterField(
model_name='route',
name='process',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='mtm.process', verbose_name='工序'),
),
]

View File

@ -147,9 +147,11 @@ class Route(CommonADModel):
加工路线
"""
material = models.ForeignKey(
Material, verbose_name='关联产品', on_delete=models.CASCADE)
Material, verbose_name='关联产品', on_delete=models.CASCADE, null=True, blank=True)
process = models.ForeignKey(
Process, verbose_name='工序', on_delete=models.CASCADE)
Process, verbose_name='工序', on_delete=models.CASCADE, null=True, blank=True)
mgroup = models.ForeignKey(Mgroup, verbose_name='指定工段', on_delete=models.CASCADE,
null=True, blank=True, related_name='route_mgroup')
sort = models.PositiveSmallIntegerField('顺序', default=1)
is_autotask = models.BooleanField('是否自动排产', default=False)
material_in = models.ForeignKey(
@ -157,7 +159,7 @@ class Route(CommonADModel):
material_out = models.ForeignKey(
Material, verbose_name='主要输出物料', on_delete=models.CASCADE, related_name='route_material_out', null=True, blank=True)
is_count_utask = models.BooleanField('是否主任务统计', default=False)
out_rate = models.FloatField('出材率', default=100, null=True, blank=True)
out_rate = models.FloatField('出材率', default=100, blank=True)
@staticmethod
def get_routes(material: Material, autotask: bool = False):

View File

@ -4,7 +4,7 @@ from rest_framework.mixins import ListModelMixin
from rest_framework.response import Response
from rest_framework.exceptions import ParseError
from apps.mtm.filters import GoalFilter, MaterialFilter
from apps.mtm.filters import GoalFilter, MaterialFilter, RouteFilter
from apps.mtm.models import Goal, Material, Mgroup, Shift, Team, Process, Route
from apps.mtm.serializers import (GoalSerializer, MaterialSerializer,
MgroupGoalYearSerializer, MgroupSerializer,
@ -112,7 +112,7 @@ class ProcessViewSet(CustomModelViewSet):
class RouteViewSet(CustomModelViewSet):
queryset = Route.objects.all()
serializer_class = RouteSerializer
filterset_fields = ['material', 'process', 'is_autotask']
filterset_class = RouteFilter
ordering = ['sort', 'create_time']
select_related_fields = ['material',
'process', 'material_in', 'material_out']
'process', 'material_in', 'material_out', 'mgroup']