fix: 修改 ofm - vehicle 中的出发里程
This commit is contained in:
parent
5711791a1f
commit
21424a61bd
|
|
@ -1,6 +1,6 @@
|
|||
from apps.wf.mixins import TicketMixin
|
||||
from apps.utils.viewsets import CustomModelViewSet
|
||||
from apps.asm.models import Asset
|
||||
from apps.asm.models import Asset, AssetAudit
|
||||
from rest_framework.exceptions import ParseError
|
||||
from apps.asm.serializers import AssetSerializer, AssetlogSerializer
|
||||
from apps.wf.models import Ticket
|
||||
|
|
@ -18,10 +18,10 @@ class AssetAuditViewSet(TicketMixin, CustomModelViewSet):
|
|||
|
||||
@staticmethod
|
||||
def add_asset(ticket:Ticket, transition, new_ticket_data: dict):
|
||||
asset = Asset.objects.get(ticket=ticket)
|
||||
if AssetLog.objects.filter(code=asset.code).exists():
|
||||
asset = AssetAudit.objects.get(ticket=ticket)
|
||||
if Asset.objects.filter(code=asset.code).exists():
|
||||
raise ParseError('资产名称已存在')
|
||||
AssetLog.objects.create(**new_ticket_data)
|
||||
Asset.objects.create(**new_ticket_data)
|
||||
|
||||
|
||||
class AssetViewSet(CustomModelViewSet):
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
# Generated by Django 3.2.12 on 2025-12-18 08:36
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('ofm', '0003_borrowrecord_count'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='vehiclereg',
|
||||
name='km',
|
||||
field=models.PositiveIntegerField(default=0, verbose_name='行驶里程'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='vehicleuse',
|
||||
name='start_km',
|
||||
field=models.PositiveIntegerField(blank=True, null=True, verbose_name='出发公里数'),
|
||||
),
|
||||
]
|
||||
|
|
@ -52,14 +52,14 @@ class VehicleReg(CommonADModel):
|
|||
name = models.CharField('车辆名称', max_length=50)
|
||||
brand = models.CharField('品牌', max_length=50, null=True, blank=True)
|
||||
plate = models.CharField('车牌号', max_length=50)
|
||||
km = models.PositiveIntegerField('行驶里程', null=True, blank=True)
|
||||
km = models.PositiveIntegerField('行驶里程', default=0)
|
||||
|
||||
class VehicleUse(CommonBDModel):
|
||||
"""TN: 用车记录"""
|
||||
location = models.CharField('出发地点', null=True, blank=True, max_length=100)
|
||||
via = models.CharField('途经地点', null=True, blank=True, max_length=100)
|
||||
destination = models.CharField('到达地点', null=True, blank=True, max_length=100)
|
||||
start_km = models.PositiveIntegerField('出发公里数')
|
||||
start_km = models.PositiveIntegerField('出发公里数', null=True, blank=True)
|
||||
end_km = models.PositiveIntegerField('归还公里数', null=True, blank=True)
|
||||
actual_km = models.PositiveIntegerField('实际行驶公里数', editable=False)
|
||||
is_city = models.BooleanField('是否市内用车', default=True)
|
||||
|
|
@ -75,7 +75,7 @@ class VehicleUse(CommonBDModel):
|
|||
if self.start_km <= self.end_km:
|
||||
self.actual_km = self.end_km - self.start_km
|
||||
else:
|
||||
raise ParseError('归还公里数不能小于出发公里数')
|
||||
raise ParseError(f'归还公里数不能小于出发公里数, 出发公里数组为 {self.start_km} km')
|
||||
else:
|
||||
self.actual_km = 0
|
||||
return super().save(*args, **kwargs)
|
||||
|
|
|
|||
|
|
@ -33,14 +33,17 @@ class MroomBookingSerializer(CustomModelSerializer):
|
|||
mdate = validated_data.pop('mdate')
|
||||
booking = super().create(validated_data)
|
||||
MroomSlot.objects.filter(booking=booking).delete()
|
||||
for slot in slots:
|
||||
if slot < 0 or slot > 47:
|
||||
raise ParseError("时段索引超出范围")
|
||||
ms_exists = MroomSlot.objects.filter(mroom=mroom, mdate=mdate, slot=slot, is_inuse=True).exists()
|
||||
if ms_exists:
|
||||
raise ParseError("时段已预订,请刷新重选")
|
||||
MroomSlot.objects.create(booking=booking, slot=slot, mdate=mdate, mroom=mroom, is_inuse=True)
|
||||
return booking
|
||||
if slots:
|
||||
for slot in slots:
|
||||
if slot < 0 or slot > 47:
|
||||
raise ParseError("时段索引超出范围")
|
||||
ms_exists = MroomSlot.objects.filter(mroom=mroom, mdate=mdate, slot=slot, is_inuse=True).exists()
|
||||
if ms_exists:
|
||||
raise ParseError("时段已预订,请刷新重选")
|
||||
MroomSlot.objects.create(booking=booking, slot=slot, mdate=mdate, mroom=mroom, is_inuse=True)
|
||||
return booking
|
||||
else:
|
||||
raise ParseError("请选择时段")
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
mroom = validated_data.pop('mroom')
|
||||
|
|
@ -48,15 +51,17 @@ class MroomBookingSerializer(CustomModelSerializer):
|
|||
mdate = validated_data.pop('mdate')
|
||||
booking = super().update(instance, validated_data)
|
||||
MroomSlot.objects.filter(booking=instance).delete()
|
||||
for slot in slots:
|
||||
if slot < 0 or slot > 47:
|
||||
raise ParseError("时段索引超出范围")
|
||||
ms_exists = MroomSlot.objects.filter(mroom=mroom, mdate=mdate, slot=slot, is_inuse=True).exists()
|
||||
if ms_exists:
|
||||
raise ParseError("时段已预订,请刷新重选")
|
||||
MroomSlot.objects.create(booking=booking, slot=slot, mdate=mdate, mroom=mroom, is_inuse=True)
|
||||
return booking
|
||||
|
||||
if slots:
|
||||
for slot in slots:
|
||||
if slot < 0 or slot > 47:
|
||||
raise ParseError("时段索引超出范围")
|
||||
ms_exists = MroomSlot.objects.filter(mroom=mroom, mdate=mdate, slot=slot, is_inuse=True).exists()
|
||||
if ms_exists:
|
||||
raise ParseError("时段已预订,请刷新重选")
|
||||
MroomSlot.objects.create(booking=booking, slot=slot, mdate=mdate, mroom=mroom, is_inuse=True)
|
||||
return booking
|
||||
else:
|
||||
raise ParseError("请选择时段")
|
||||
class MroomSlotSerializer(CustomModelSerializer):
|
||||
booking_title = serializers.CharField(source='booking.title', read_only=True)
|
||||
class Meta:
|
||||
|
|
@ -88,16 +93,22 @@ class VehicleUseSerializer(CustomModelSerializer):
|
|||
vehreg = validated_data.pop('vehreg')
|
||||
slots = validated_data.pop('slots')
|
||||
vdate = validated_data.pop('vdate')
|
||||
validated_data['start_km'] = vehreg.km
|
||||
if validated_data.get('end_km', None):
|
||||
vehreg.km= validated_data['end_km']
|
||||
vehicle_use = super().create(validated_data)
|
||||
VehicleSlot.objects.filter(vehicle_use=vehicle_use).delete()
|
||||
for slot in slots:
|
||||
if slot < 0 or slot > 47:
|
||||
raise ParseError("时段索引超出范围")
|
||||
ms_exists = VehicleSlot.objects.filter(vehreg=vehreg, vdate=vdate, slot=slot, is_inuse=True).exists()
|
||||
if ms_exists:
|
||||
raise ParseError("时段已预订,请刷新重选")
|
||||
VehicleSlot.objects.create(vehicle_use=vehicle_use, slot=slot, vdate=vdate, vehreg=vehreg, is_inuse=True)
|
||||
return vehicle_use
|
||||
if slots:
|
||||
for slot in slots:
|
||||
if slot < 0 or slot > 47:
|
||||
raise ParseError("时段索引超出范围")
|
||||
ms_exists = VehicleSlot.objects.filter(vehreg=vehreg, vdate=vdate, slot=slot, is_inuse=True).exists()
|
||||
if ms_exists:
|
||||
raise ParseError("时段已预订,请刷新重选")
|
||||
VehicleSlot.objects.create(vehicle_use=vehicle_use, slot=slot, vdate=vdate, vehreg=vehreg, is_inuse=True)
|
||||
return vehicle_use
|
||||
else:
|
||||
raise ParseError("请选择时段")
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
vehreg = validated_data.pop('vehreg')
|
||||
|
|
@ -105,14 +116,17 @@ class VehicleUseSerializer(CustomModelSerializer):
|
|||
vdate = validated_data.pop('vdate')
|
||||
vehicle_use = super().update(instance, validated_data)
|
||||
VehicleSlot.objects.filter(vehicle_use=vehicle_use).delete()
|
||||
for slot in slots:
|
||||
if slot < 0 or slot > 47:
|
||||
raise ParseError("时段索引超出范围")
|
||||
ms_exists = VehicleSlot.objects.filter(vehreg=vehreg, vdate=vdate, slot=slot, is_inuse=True).exists()
|
||||
if ms_exists:
|
||||
raise ParseError("时段已预订,请刷新重选")
|
||||
VehicleSlot.objects.create(vehicle_use=vehicle_use, slot=slot, vdate=vdate, vehreg=vehreg, is_inuse=True)
|
||||
return vehicle_use
|
||||
if slots:
|
||||
for slot in slots:
|
||||
if slot < 0 or slot > 47:
|
||||
raise ParseError("时段索引超出范围")
|
||||
ms_exists = VehicleSlot.objects.filter(vehreg=vehreg, vdate=vdate, slot=slot, is_inuse=True).exists()
|
||||
if ms_exists:
|
||||
raise ParseError("时段已预订,请刷新重选")
|
||||
VehicleSlot.objects.create(vehicle_use=vehicle_use, slot=slot, vdate=vdate, vehreg=vehreg, is_inuse=True)
|
||||
return vehicle_use
|
||||
else:
|
||||
raise ParseError("请选择时段")
|
||||
|
||||
|
||||
class VehSlotSerializer(CustomModelSerializer):
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ class PatentRecord(CommonADModel):
|
|||
bonus_amount = models.DecimalField(max_digits=10,decimal_places=2, null=True,blank=True,verbose_name="奖金金额(元)")
|
||||
|
||||
class PaperRecord(CommonADModel):
|
||||
"""TN: 专利台账登记"""
|
||||
"""TN: 论文台账登记"""
|
||||
PAPER_TYPE_CHOICES = (
|
||||
('research', '研究论文'),
|
||||
('overview', '综述'),
|
||||
|
|
|
|||
Loading…
Reference in New Issue