feat: 通过给定时间获取班年月日
This commit is contained in:
parent
2197480831
commit
2d42a485af
|
@ -275,3 +275,8 @@ class SruleSerializer(CustomModelSerializer):
|
||||||
model = Srule
|
model = Srule
|
||||||
fields = '__all__'
|
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 apps.mtm.models import Goal, Mgroup, RoutePack, Route
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
from django.db.models import Q
|
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 rest_framework.exceptions import ParseError
|
||||||
from apps.utils.tools import ranstr
|
from apps.utils.tools import ranstr
|
||||||
from datetime import datetime
|
from datetime import datetime, timedelta
|
||||||
from apps.wf.models import Ticket
|
from apps.wf.models import Ticket
|
||||||
from django.db.models import Sum
|
from django.db.models import Sum
|
||||||
from typing import List
|
from typing import List
|
||||||
|
@ -206,3 +206,21 @@ def routepack_ticket_change(ticket: Ticket):
|
||||||
if ticket.act_state == Ticket.TICKET_ACT_STATE_DRAFT:
|
if ticket.act_state == Ticket.TICKET_ACT_STATE_DRAFT:
|
||||||
routepack.state = RoutePack.RP_S_CREATE
|
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.filters import GoalFilter, MaterialFilter, RouteFilter
|
||||||
from apps.mtm.models import Goal, Material, Mgroup, Shift, Team, Process, Route, TeamMember, RoutePack, Srule
|
from apps.mtm.models import Goal, Material, Mgroup, Shift, Team, Process, Route, TeamMember, RoutePack, Srule
|
||||||
from apps.mtm.serializers import (GoalSerializer, MaterialSerializer,
|
from apps.mtm.serializers import (GoalSerializer, MaterialSerializer,
|
||||||
MgroupGoalYearSerializer, MgroupSerializer,
|
MgroupGoalYearSerializer, MgroupSerializer, MgroupDaysSerializer,
|
||||||
ShiftSerializer, TeamSerializer, ProcessSerializer,
|
ShiftSerializer, TeamSerializer, ProcessSerializer,
|
||||||
RouteSerializer, TeamMemberSerializer, RoutePackSerializer, SruleSerializer)
|
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.viewsets import CustomGenericViewSet, CustomModelViewSet
|
||||||
from apps.utils.mixins import BulkCreateModelMixin, BulkDestroyModelMixin
|
from apps.utils.mixins import BulkCreateModelMixin, BulkDestroyModelMixin
|
||||||
from rest_framework.serializers import Serializer
|
from rest_framework.serializers import Serializer
|
||||||
|
@ -114,6 +114,22 @@ class MgroupViewSet(CustomModelViewSet):
|
||||||
Route.objects.filter(mgroup=instance).update(mgroup=None)
|
Route.objects.filter(mgroup=instance).update(mgroup=None)
|
||||||
instance.delete()
|
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):
|
class TeamViewSet(CustomModelViewSet):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue