feat: 订单排产时增加belong_dept参数
This commit is contained in:
parent
b1339f6d6b
commit
0aea02ffc9
|
@ -55,6 +55,8 @@ class SchedueSerializer(serializers.Serializer):
|
|||
label='orderitem的ID列表', queryset=OrderItem.objects.all(), many=True)
|
||||
start_date = serializers.DateField(label='计划开工日期')
|
||||
end_date = serializers.DateField(label='计划完工日期')
|
||||
belong_dept = serializers.PrimaryKeyRelatedField(
|
||||
label='车间ID', queryset=Dept.objects.all(), required=False)
|
||||
|
||||
|
||||
class MtaskDaySerializer(serializers.Serializer):
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
from apps.system.models import Dept
|
||||
from apps.sam.models import OrderItem
|
||||
from apps.mtm.models import Route, Material, Mgroup
|
||||
from rest_framework.exceptions import ParseError
|
||||
|
@ -11,7 +12,7 @@ from typing import List
|
|||
class PmService:
|
||||
|
||||
@classmethod
|
||||
def make_utasks_from_orderitems(cls, user, orderitemIds: List[str], start_date: date, end_date: date):
|
||||
def make_utasks_from_orderitems(cls, user, orderitemIds: List[str], start_date: date, end_date: date, belong_dept: Dept | None):
|
||||
start_date_str = start_date.strftime('%Y%m%d')
|
||||
if start_date >= end_date:
|
||||
raise ParseError('开始时间不可大于结束时间')
|
||||
|
@ -45,7 +46,8 @@ class PmService:
|
|||
start_date=start_date,
|
||||
end_date=end_date,
|
||||
create_by=user,
|
||||
update_by=user
|
||||
update_by=user,
|
||||
belong_dept=belong_dept
|
||||
)
|
||||
OrderItem.objects.filter(id__in=orderitemIds).update(utask=utask)
|
||||
|
||||
|
@ -59,8 +61,11 @@ class PmService:
|
|||
rela_days = (end_date - start_date).days + 1
|
||||
if utask.mgroup: # 如果存在指定的mgroup则直接排产
|
||||
pass
|
||||
# 获取每个产品的加工路线
|
||||
else:
|
||||
# 获取产品的加工路线
|
||||
rqs = Route.get_routes(product)
|
||||
if not rqs.exists():
|
||||
raise ParseError('未配置工艺路线')
|
||||
# 创建小任务
|
||||
for ind, val in enumerate(rqs):
|
||||
if val.material_out:
|
||||
|
|
|
@ -38,7 +38,7 @@ class UtaskViewSet(CustomModelViewSet):
|
|||
sr.is_valid(raise_exception=True)
|
||||
vdata = sr.validated_data
|
||||
PmService.make_utasks_from_orderitems(request.user,
|
||||
request.data['orderitems'], vdata['start_date'], vdata['end_date'])
|
||||
request.data['orderitems'], vdata['start_date'], vdata['end_date'], vdata.get('belong_dept', None))
|
||||
return Response()
|
||||
|
||||
@action(methods=['post'], detail=False, perms_map={'post': 'utask.schedue'}, serializer_class=PkSerializer)
|
||||
|
|
Loading…
Reference in New Issue