feat: 通过给定时间获取班年月日
This commit is contained in:
parent
2197480831
commit
2d42a485af
|
@ -274,4 +274,9 @@ class SruleSerializer(CustomModelSerializer):
|
|||
class Meta:
|
||||
model = Srule
|
||||
fields = '__all__'
|
||||
read_only_fields = EXCLUDE_FIELDS
|
||||
read_only_fields = EXCLUDE_FIELDS
|
||||
|
||||
|
||||
class MgroupDaysSerializer(serializers.Serializer):
|
||||
mgroup = serializers.CharField(label="工段ID")
|
||||
now = serializers.DateTimeField(label="当前时间", required=False)
|
|
@ -1,10 +1,10 @@
|
|||
from apps.mtm.models import Goal, Mgroup, RoutePack, Route
|
||||
from django.core.cache import cache
|
||||
from django.db.models import Q
|
||||
from apps.mtm.models import Material, Process
|
||||
from apps.mtm.models import Material, Process, Shift
|
||||
from rest_framework.exceptions import ParseError
|
||||
from apps.utils.tools import ranstr
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timedelta
|
||||
from apps.wf.models import Ticket
|
||||
from django.db.models import Sum
|
||||
from typing import List
|
||||
|
@ -205,4 +205,22 @@ def routepack_ticket_change(ticket: Ticket):
|
|||
routepack = RoutePack.objects.get(id=ticket.ticket_data['t_id'])
|
||||
if ticket.act_state == Ticket.TICKET_ACT_STATE_DRAFT:
|
||||
routepack.state = RoutePack.RP_S_CREATE
|
||||
routepack.save()
|
||||
routepack.save()
|
||||
|
||||
def get_mgroup_days(mgroup: Mgroup, now: datetime):
|
||||
"""
|
||||
获取给定时间所属的班年月日
|
||||
"""
|
||||
if now is None:
|
||||
now = datetime.now()
|
||||
shift_rule_name = mgroup.shift_rule
|
||||
shift = Shift.objects.filter(rule=shift_rule_name).order_by('sort').first()
|
||||
if shift is None:
|
||||
raise ParseError('工段班次规则不存在')
|
||||
current_time = now.time().replace(second=0, microsecond=0)
|
||||
if current_time >= shift.start_time_o:
|
||||
now_b = now - timedelta(days=1)
|
||||
else:
|
||||
now = now - timedelta(days=1)
|
||||
now_b = now - timedelta(days=1)
|
||||
return {"year_s": now.year, "month_s": now.month, "day_s": now.day, "year_s_b": now_b.year, "month_s_b": now_b.month, "day_s_b": now_b.day}
|
||||
|
|
|
@ -8,10 +8,10 @@ from rest_framework.exceptions import ParseError
|
|||
from apps.mtm.filters import GoalFilter, MaterialFilter, RouteFilter
|
||||
from apps.mtm.models import Goal, Material, Mgroup, Shift, Team, Process, Route, TeamMember, RoutePack, Srule
|
||||
from apps.mtm.serializers import (GoalSerializer, MaterialSerializer,
|
||||
MgroupGoalYearSerializer, MgroupSerializer,
|
||||
MgroupGoalYearSerializer, MgroupSerializer, MgroupDaysSerializer,
|
||||
ShiftSerializer, TeamSerializer, ProcessSerializer,
|
||||
RouteSerializer, TeamMemberSerializer, RoutePackSerializer, SruleSerializer)
|
||||
from apps.mtm.services import get_mgroup_goals, daoru_material
|
||||
from apps.mtm.services import get_mgroup_goals, daoru_material, get_mgroup_days
|
||||
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
||||
from apps.utils.mixins import BulkCreateModelMixin, BulkDestroyModelMixin
|
||||
from rest_framework.serializers import Serializer
|
||||
|
@ -113,6 +113,22 @@ class MgroupViewSet(CustomModelViewSet):
|
|||
mgroup=instance, material__need_route=False).delete()
|
||||
Route.objects.filter(mgroup=instance).update(mgroup=None)
|
||||
instance.delete()
|
||||
|
||||
@action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=MgroupDaysSerializer)
|
||||
def get_days(self, request):
|
||||
"""
|
||||
获取所属班年月日
|
||||
|
||||
给定一个时间获取所属班年月日
|
||||
"""
|
||||
data = request.data
|
||||
sr = MgroupDaysSerializer(data=data)
|
||||
sr.is_valid(raise_exception=True)
|
||||
vdata = sr.validated_data
|
||||
mgroup = Mgroup.objects.get(id=vdata["mgroup"])
|
||||
return Response(get_mgroup_days(mgroup, vdata.get("now", None)))
|
||||
|
||||
|
||||
|
||||
|
||||
class TeamViewSet(CustomModelViewSet):
|
||||
|
|
Loading…
Reference in New Issue