Compare commits

...

2 Commits

Author SHA1 Message Date
zty 71bc4e76f0 Merge branch 'master' of http://gitea.xxhhcty.xyz:8080/zcdsj/factory 2025-09-10 14:26:25 +08:00
zty ba8b258ee7 feat: ofm 车辆审批 2025-09-10 14:26:23 +08:00
5 changed files with 55 additions and 74 deletions

View File

@ -58,39 +58,28 @@ class LendingSeal(CommonBDModel):
return_date = models.DateField('拟归还日期', blank=True, null=True)
actual_return_date = models.DateField('实际归还日期', blank=True, null=True)
reason = models.CharField('借用理由', max_length=100, blank=True, null=True)
# submit_user = models.ForeignKey(
# User, verbose_name='提交人', on_delete=models.CASCADE, null=True, blank=True, related_name='seal_submit_user')
ticket = models.ForeignKey('wf.ticket', verbose_name='关联工单',
on_delete=models.SET_NULL, related_name='seal_ticket', null=True, blank=True, db_constraint=False)
note = models.TextField('备注', null=True, blank=True)
# class Vehicle(CommonADModel):
# """TN: 用车申请"""
# submit_user = models.ForeignKey(
# User, verbose_name='用车人', on_delete=models.CASCADE, null=True, blank=True, related_name='vehicle_submit_user')
# approval_user = models.ForeignKey(
# User, verbose_name='审批人', on_delete=models.CASCADE, null=True, blank=True, related_name='vehicle_approval_user'
# )
# start_time = models.DateTimeField('出车时间')
# end_time = models.DateTimeField('还车时间')
# location = models.CharField('出发地点', null=True, blank=True, max_length=100)
# destination = models.CharField('到达地点', null=True, blank=True, max_length=100)
# start_km = models.PositiveIntegerField('出发公里数')
# end_km = models.PositiveIntegerField('归还公里数')
# actual_km = models.PositiveIntegerField('实际行驶公里数', editable=False)
# is_city = models.BooleanField('是否市内用车', default=True)
# reason = models.CharField('用车事由', max_length=100)
# ticket = models.ForeignKey('wf.ticket', verbose_name='关联工单',
# on_delete=models.SET_NULL, related_name='vehicle_ticket', null=True, blank=True, db_constraint=False)
# state = models.PositiveIntegerField(
# '状态', choices=MTASK_STATES, default=MTASK_CREATED, help_text=str(MTASK_STATES))
# def save(self, *args, **kwargs):
# if self.end_km and self.start_km:
# self.actual_km = self.end_km - self.start_km
# return super().save(*args, **kwargs)
class Vehicle(CommonADModel):
"""TN: 用车申请"""
start_time = models.DateField('出车时间', blank=True, null=True)
end_time = models.DateField('还车时间', blank=True, null=True)
location = models.CharField('出发地点', null=True, blank=True, max_length=100)
destination = models.CharField('到达地点', null=True, blank=True, max_length=100)
start_km = models.PositiveIntegerField('出发公里数')
end_km = models.PositiveIntegerField('归还公里数')
actual_km = models.PositiveIntegerField('实际行驶公里数', editable=False)
is_city = models.BooleanField('是否市内用车', default=True)
reason = models.CharField('用车事由', max_length=100)
ticket = models.ForeignKey('wf.ticket', verbose_name='关联工单',
on_delete=models.SET_NULL, related_name='vehicle_ticket', null=True, blank=True, db_constraint=False)
def save(self, *args, **kwargs):
if self.end_km and self.start_km:
self.actual_km = self.end_km - self.start_km
return super().save(*args, **kwargs)
# class FileRecord(CommonBDModel):

View File

@ -1,5 +1,5 @@
from .models import (Mroom, MroomBooking, MroomSlot, LendingSeal)
# Vehicle, Publicity,
from .models import (Mroom, MroomBooking, MroomSlot, LendingSeal, Vehicle)
# , Publicity,
# FileRecord, BorrowRecord, Publicity, PatentInfo, PaperOfm, Platform, Project, PatentRecord, PaperRecord, ProjectApproval, ProjectInfo)
from apps.utils.serializers import CustomModelSerializer
from rest_framework import serializers
@ -80,17 +80,18 @@ class MroomSlotSerializer(CustomModelSerializer):
class LendingSealSerializer(CustomModelSerializer):
create_by_name = serializers.CharField(source='create_by.name', read_only=True)
belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True)
class Meta:
model = LendingSeal
fields = '__all__'
read_only_fields = EXCLUDE_FIELDS
# class VehicleSerializer(CustomModelSerializer):
# class Meta:
# model = Vehicle
# fields = '__all__'
# read_only_fields = EXCLUDE_FIELDS + ['actual_km']
class VehicleSerializer(CustomModelSerializer):
class Meta:
model = Vehicle
fields = '__all__'
read_only_fields = EXCLUDE_FIELDS + ['actual_km']
# class FileRecordSerializer(CustomModelSerializer):

View File

@ -1,7 +1,7 @@
from apps.wf.models import Ticket
# TicketFlow, Transition, Workflow, CustomField, State,
from apps.ofm.models import LendingSeal
from apps.ofm.models import LendingSeal, Vehicle
from rest_framework.exceptions import ParseError
@ -13,9 +13,6 @@ def seal_submit_validate(ins: LendingSeal):
def bind_lendingseal(ticket: Ticket, transition, new_ticket_data: dict):
ins = LendingSeal.objects.get(id=new_ticket_data['t_id'])
# if ins.submit_time is not None:
# raise ParseError('该印章申请不可提交审批')
# seal_submit_validate(ins)
ticket_data = ticket.ticket_data
ticket_data.update({
't_model': 'LendingSeal',
@ -28,3 +25,17 @@ def bind_lendingseal(ticket: Ticket, transition, new_ticket_data: dict):
ins.ticket = ticket
ins.save()
def bind_vehicle(ticket: Ticket, transition, new_ticket_data: dict):
ins = Vehicle.objects.get(id=new_ticket_data['t_id'])
ticket_data = ticket.ticket_data
ticket_data.update({
't_model': 'Vehicle',
't_id': ins.id,
})
ticket.ticket_data = ticket_data
ticket.create_by = ins.create_by
ticket.save()
if ins.ticket is None:
ins.ticket = ticket
ins.save()

View File

@ -1,7 +1,7 @@
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from apps.ofm.views import (MroomViewSet, MroomBookingViewSet, MroomSlotViewSet,LendingSealViewSet)
# , VehicleViewSet, FilerecordViewSet, SealModelViewSet,
from apps.ofm.views import (MroomViewSet, MroomBookingViewSet, MroomSlotViewSet,LendingSealViewSet, VehicleViewSet)
# , , FilerecordViewSet, SealModelViewSet,
# FileborrowViewSet, PublicityViewSet, PatentInfoViewSet, PaperViewSet, PlatformViewSet,
# ProjectViewSet, PatentRecordViewSet, PaperRecordViewSet, ProjectApprovalViewSet, ProjectInfoViewSet)
@ -14,7 +14,7 @@ router.register('mroombooking', MroomBookingViewSet, basename='mroombooking')
router.register('mroomslot', MroomSlotViewSet, basename='mroomslot')
# router.register('sealmanage', SealManageViewSet, basename='sealmanage')
router.register('lendingseal', LendingSealViewSet, basename='lendingseal')
# router.register('vehicle', VehicleViewSet, basename='vehicle')
router.register('vehicle', VehicleViewSet, basename='vehicle')
# router.register('filerecord', FilerecordViewSet, basename='filerecord')
# router.register('fileborrow', FileborrowViewSet, basename='fileborrow')
# router.register('publicity', PublicityViewSet, basename='publicity')

View File

@ -1,9 +1,9 @@
from django.shortcuts import render
from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet
from .models import Mroom, MroomBooking, MroomSlot, LendingSeal
# Vehicle, FileRecord, Seal
from .models import Mroom, MroomBooking, MroomSlot, LendingSeal, Vehicle
# , FileRecord, Seal
# BorrowRecord, Publicity, PatentInfo, PaperOfm, Platform, Project, PatentRecord, PaperRecord, ProjectApproval, ProjectInfo)
from .serializers import (MroomSerializer, MroomBookingSerializer, MroomSlotSerializer, LendingSealSerializer)
from .serializers import (MroomSerializer, MroomBookingSerializer, MroomSlotSerializer, LendingSealSerializer, VehicleSerializer)
# ,SealSerializer,
# LendingSealSerializer, FileRecordSerializer, BorrowRecordSerializer, PublicitySerializer,
# PatentInfoSerializer, PaperSerializer, PlatformSerializer, ProjectSerializer, ProjectMemberSerializer, PaperRecordSerializer, ProjectApprovalSerializer, ProjectInfoSerializer)
@ -102,27 +102,6 @@ class MroomSlotViewSet(CustomListModelMixin, CustomGenericViewSet):
filterset_fields = ["mroom", "mdate", "booking"]
# class SealModelViewSet(CustomModelViewSet):
# """list: 印章列表
# 印章列表
# """
# queryset = Seal.objects.all()
# serializer_class = SealSerializer
# filterset_fields = ["name"]
# ordering = ["name"]
# class SealManageViewSet(CustomModelViewSet):
# """list: 印章管理
# 印章管理
# """
# queryset = SealManage.objects.all()
# serializer_class = SealManageSerializer
# filterset_fields = ["seal"]
class LendingSealViewSet(CustomModelViewSet):
"""list: 印章外出
@ -134,17 +113,18 @@ class LendingSealViewSet(CustomModelViewSet):
serializer_class = LendingSealSerializer
filterset_class = SealFilter
ordering = ["create_time"]
data_filter = True
# class VehicleViewSet(CustomModelViewSet):
# """list: 车辆
class VehicleViewSet(CustomModelViewSet):
"""list: 车辆
# 车辆
# """
# queryset = Vehicle.objects.all()
# serializer_class = VehicleSerializer
# filterset_fields = ["submit_user"]
# ordering = ["create_time"]
车辆
"""
queryset = Vehicle.objects.all()
serializer_class = VehicleSerializer
filterset_fields = ["submit_user"]
ordering = ["create_time"]
# class FilerecordViewSet(CustomModelViewSet):