feat: 订单排产时增加belong_dept参数

This commit is contained in:
caoqianming 2023-10-26 08:57:26 +08:00
parent b1339f6d6b
commit 0aea02ffc9
3 changed files with 55 additions and 48 deletions

View File

@ -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):

View File

@ -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:

View File

@ -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)