角色过滤策略bug

This commit is contained in:
caoqianming 2021-10-25 13:08:21 +08:00
parent 7eb98fd30b
commit 677bf4853b
8 changed files with 34 additions and 27 deletions

View File

@ -47,6 +47,8 @@ class MaterialBatch(BaseModel):
verbose_name = '库存表' verbose_name = '库存表'
verbose_name_plural = verbose_name verbose_name_plural = verbose_name
class FIFO(CommonAModel): class FIFO(CommonAModel):
""" """
出入库记录 出入库记录
@ -66,4 +68,14 @@ class FIFO(CommonAModel):
# 领料详细记录 # 领料详细记录
# """ # """
class Product(CommonAModel):
"""
具体产品
"""
number = models.CharField('物品编号', primary_key=True, null=True, blank=True, max_length=50)
material = models.ForeignKey(Material, verbose_name='物料类型', on_delete=models.CASCADE)
warehouse = models.ForeignKey(WareHouse, on_delete=models.CASCADE, verbose_name='所在仓库')
batch = models.CharField('所属批次号', max_length=100, null=True, blank=True)
fifos = models.JSONField('关联出入库记录', default=list, blank=True)

View File

@ -46,6 +46,8 @@ class SubProductionPlan(CommonAModel):
process = models.ForeignKey(Process, verbose_name='关联大工序', on_delete=models.CASCADE) process = models.ForeignKey(Process, verbose_name='关联大工序', on_delete=models.CASCADE)
steps = models.JSONField('工艺步骤', default=list) steps = models.JSONField('工艺步骤', default=list)
state = models.IntegerField('状态', default=0) state = models.IntegerField('状态', default=0)
start_date_real = models.DateField('实际开工日期', null=True, blank=True)
end_date_real = models.DateField('实际完工日期', null=True, blank=True)
class Meta: class Meta:
verbose_name = '子生产计划' verbose_name = '子生产计划'
verbose_name_plural = verbose_name verbose_name_plural = verbose_name

View File

@ -1,3 +1,4 @@
from datetime import timezone
from rest_framework import serializers from rest_framework import serializers
from rest_framework.views import APIView from rest_framework.views import APIView
from apps.em.models import Equipment from apps.em.models import Equipment
@ -122,6 +123,19 @@ class SubProductionPlanViewSet(CreateUpdateModelAMixin, ListModelMixin, UpdateMo
obj.save() obj.save()
return Response() return Response()
raise APIException('计划状态有误') raise APIException('计划状态有误')
@action(methods=['post'], detail=True, perms_map={'post':'*'}, serializer_class=serializers.Serializer)
def start(self, request, pk=None):
"""
开始生产
"""
obj = self.get_object()
if obj.state in [1,2]:
obj.state = 3
obj.start_date_real = timezone.now()
obj.save()
return Response()
raise APIException('计划状态有误')
class ResourceViewSet(GenericViewSet): class ResourceViewSet(GenericViewSet):

View File

@ -159,13 +159,13 @@ class WfService(object):
elif destination_participant_type == State.PARTICIPANT_TYPE_ROLE:#角色 elif destination_participant_type == State.PARTICIPANT_TYPE_ROLE:#角色
user_queryset = User.objects.filter(roles__in=destination_participant) user_queryset = User.objects.filter(roles__in=destination_participant)
# 如果选择了角色, 需要走过滤策略 # 如果选择了角色, 需要走过滤策略
if ticket.filter_policy == 1: if state.filter_policy == 1:
depts = get_parent_queryset(ticket.belong_dept) depts = get_parent_queryset(ticket.belong_dept)
user_queryset = user_queryset.filter(dept__in=depts) user_queryset = user_queryset.filter(dept__in=depts)
elif ticket.filter_policy == 2: elif state.filter_policy == 2:
depts = get_parent_queryset(ticket.create_by.dept) depts = get_parent_queryset(ticket.create_by.dept)
user_queryset = user_queryset.filter(dept__in=depts) user_queryset = user_queryset.filter(dept__in=depts)
elif ticket.filter_policy == 3: elif state.filter_policy == 3:
depts = get_parent_queryset(request.user.dept) depts = get_parent_queryset(request.user.dept)
user_queryset = user_queryset.filter(dept__in=depts) user_queryset = user_queryset.filter(dept__in=depts)
destination_participant = list(user_queryset.values_list('id', flat=True)) destination_participant = list(user_queryset.values_list('id', flat=True))

View File

@ -20,6 +20,7 @@ class Product(CommonAModel):
m_state = models.ForeignKey(Material, verbose_name='所属物料状态', on_delete=models.CASCADE) m_state = models.ForeignKey(Material, verbose_name='所属物料状态', on_delete=models.CASCADE)
p_state = models.ForeignKey(Step, verbose_name='所在步骤', on_delete=models.CASCADE, null=True, blank=True) p_state = models.ForeignKey(Step, verbose_name='所在步骤', on_delete=models.CASCADE, null=True, blank=True)
act_state = models.IntegerField('进行状态', default=0) act_state = models.IntegerField('进行状态', default=0)
parent = models.ForeignKey('self', verbose_name='上一级', on_delete=models.CASCADE, db_constraint=False)
remark = models.CharField('备注', max_length=200, null=True, blank=True) remark = models.CharField('备注', max_length=200, null=True, blank=True)
class ProductForm(CommonAModel): class ProductForm(CommonAModel):

View File

@ -1,9 +1,2 @@
from rest_framework.serializers import ModelSerializer from rest_framework.serializers import ModelSerializer
from .models import Vendor
class VendorSerializer(ModelSerializer):
class Meta:
model = Vendor
fields = '__all__'

View File

@ -1,11 +1,10 @@
from django.db.models import base from django.db.models import base
from rest_framework import urlpatterns from rest_framework import urlpatterns
from apps.pum.views import VendorViewSet
from django.urls import path, include from django.urls import path, include
from rest_framework.routers import DefaultRouter from rest_framework.routers import DefaultRouter
router = DefaultRouter() router = DefaultRouter()
router.register('vendor', VendorViewSet, basename='vendor')
urlpatterns = [ urlpatterns = [
path('', include(router.urls)), path('', include(router.urls)),
] ]

View File

@ -1,20 +1,6 @@
from django.shortcuts import render from django.shortcuts import render
from rest_framework.viewsets import ModelViewSet from rest_framework.viewsets import ModelViewSet
from apps.pum.models import Vendor
from apps.pum.serializers import VendorSerializer
from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin
# Create your views here. # Create your views here.
class VendorViewSet(CreateUpdateModelAMixin, ModelViewSet):
"""
供应商-增删改查
"""
perms_map = {'get': '*', 'post': 'vendor_create',
'put': 'vendor_update', 'delete': 'vendor_delete'}
queryset = Vendor.objects.all()
serializer_class = VendorSerializer
search_fields = ['name', 'contact']
filterset_fields = []
ordering_fields = ['create_time']
ordering = ['-create_time']