order plan filter增加material查询条件

This commit is contained in:
caoqianming 2022-01-17 13:59:42 +08:00
parent f1482c2a7f
commit 9b8518118a
3 changed files with 16 additions and 2 deletions

View File

@ -23,9 +23,10 @@ class PlanFilterSet(filters.FilterSet):
class SubproductionProgressFilterSet(filters.FilterSet):
operation = filters.NumberFilter(method='filter_operation')
material = filters.NumberFilter(method='filter_material')
class Meta:
model = SubProductionProgress
fields = ['material', 'subproduction_plan', 'operation', 'type']
fields = ['material', 'subproduction_plan', 'operation', 'type', 'material']
def filter_operation(self, queryset, name, value):
operation = Operation.objects.get(pk=value)
@ -40,3 +41,9 @@ class SubproductionProgressFilterSet(filters.FilterSet):
queryset = queryset.exclude(material__type__in =[Material.MA_TYPE_HALFGOOD, Material.MA_TYPE_GOOD])
return queryset
def filter_material(self, queryset, name, value):
"""
按物料筛选
"""
return queryset.filter(subplan_plan__progress_subplan__material__id=value).distinct()

View File

@ -29,7 +29,7 @@ class ProductionPlan(CommonAModel):
(PLAN_MTEST_DONE, '军检完成')
)
number = models.CharField('编号', max_length=50, unique=True)
order = models.ForeignKey(Order, verbose_name='关联订单', null=True, blank=True, on_delete=models.SET_NULL)
order = models.ForeignKey(Order, verbose_name='关联订单', null=True, blank=True, on_delete=models.SET_NULL, related_name='plan_order')
state = models.PositiveIntegerField('状态', choices=state_choices, default=PLAN_STATE_PLANING)
product = models.ForeignKey(Material, verbose_name='生产产品', on_delete=models.CASCADE)
count = models.PositiveIntegerField('生产数量', default=1)

View File

@ -6,9 +6,16 @@ from apps.sam.models import Order
class OrderFilterSet(filters.FilterSet):
create_time_start = filters.DateFilter(field_name="create_time", lookup_expr='gte')
create_time_end = filters.DateFilter(field_name="create_time", lookup_expr='lte')
material = filters.NumberFilter(method='filter_material')
class Meta:
model = Order
fields = ['product', 'contract', 'customer', 'create_time_start', 'create_time_end']
def filter_material(self, queryset, name, value):
"""
按物料筛选
"""
return queryset.filter(plan_order__subplan_plan__progress_subplan__material__id=value).distinct()
class ContractFilterSet(filters.FilterSet):