Compare commits
	
		
			2 Commits
		
	
	
		
			b4cfdd693a
			...
			51fb42d597
		
	
	| Author | SHA1 | Date | 
|---|---|---|
|  | 51fb42d597 | |
|  | 19c7e7aad1 | 
|  | @ -0,0 +1,67 @@ | ||||||
|  | # Generated by Django 3.2.12 on 2025-09-11 06:41 | ||||||
|  | 
 | ||||||
|  | from django.conf import settings | ||||||
|  | import django.core.validators | ||||||
|  | from django.db import migrations, models | ||||||
|  | import django.db.models.deletion | ||||||
|  | import django.utils.timezone | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class Migration(migrations.Migration): | ||||||
|  | 
 | ||||||
|  |     dependencies = [ | ||||||
|  |         ('system', '0006_auto_20241213_1249'), | ||||||
|  |         migrations.swappable_dependency(settings.AUTH_USER_MODEL), | ||||||
|  |         ('ofm', '0006_vehicle_belong_dept'), | ||||||
|  |     ] | ||||||
|  | 
 | ||||||
|  |     operations = [ | ||||||
|  |         migrations.AlterField( | ||||||
|  |             model_name='lendingseal', | ||||||
|  |             name='seal', | ||||||
|  |             field=models.JSONField(default=list, help_text='[公章,法人章,财务章,合同章,业务章,其他章]', verbose_name='印章信息'), | ||||||
|  |         ), | ||||||
|  |         migrations.CreateModel( | ||||||
|  |             name='FileRecord', | ||||||
|  |             fields=[ | ||||||
|  |                 ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), | ||||||
|  |                 ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), | ||||||
|  |                 ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), | ||||||
|  |                 ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), | ||||||
|  |                 ('name', models.CharField(max_length=100, verbose_name='资料名称')), | ||||||
|  |                 ('number', models.CharField(blank=True, max_length=50, null=True, verbose_name='档案编号')), | ||||||
|  |                 ('counts', models.CharField(blank=True, max_length=10, null=True, verbose_name='文件份数')), | ||||||
|  |                 ('location', models.CharField(blank=True, max_length=100, null=True, verbose_name='存放位置')), | ||||||
|  |                 ('contacts', models.CharField(blank=True, max_length=50, null=True, validators=[django.core.validators.RegexValidator('^1[3456789]\\d{9}$', '手机号码格式不正确')], verbose_name='存档人电话')), | ||||||
|  |                 ('reciver', models.CharField(blank=True, max_length=50, null=True, verbose_name='接收人(综合办)')), | ||||||
|  |                 ('remark', models.TextField(blank=True, max_length=200, null=True, verbose_name='备注')), | ||||||
|  |                 ('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='filerecord_belong_dept', to='system.dept', verbose_name='所属部门')), | ||||||
|  |                 ('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='filerecord_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')), | ||||||
|  |                 ('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='filerecord_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')), | ||||||
|  |             ], | ||||||
|  |             options={ | ||||||
|  |                 'abstract': False, | ||||||
|  |             }, | ||||||
|  |         ), | ||||||
|  |         migrations.CreateModel( | ||||||
|  |             name='BorrowRecord', | ||||||
|  |             fields=[ | ||||||
|  |                 ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), | ||||||
|  |                 ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), | ||||||
|  |                 ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), | ||||||
|  |                 ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), | ||||||
|  |                 ('borrow_date', models.DateField(blank=True, null=True, verbose_name='借阅日期')), | ||||||
|  |                 ('return_date', models.DateField(blank=True, null=True, verbose_name='归还日期')), | ||||||
|  |                 ('contacts', models.CharField(blank=True, max_length=50, null=True, validators=[django.core.validators.RegexValidator('^1[3456789]\\d{9}$', '手机号码格式不正确')], verbose_name='借阅人电话')), | ||||||
|  |                 ('remark', models.JSONField(default=list, help_text=['借阅', '复印', '查阅'], verbose_name='用途')), | ||||||
|  |                 ('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='borrowrecord_belong_dept', to='system.dept', verbose_name='所属部门')), | ||||||
|  |                 ('borrow_file', models.ManyToManyField(related_name='borrow_records', to='ofm.FileRecord')), | ||||||
|  |                 ('borrow_user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='borrow_user', to=settings.AUTH_USER_MODEL)), | ||||||
|  |                 ('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='borrowrecord_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')), | ||||||
|  |                 ('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='borrowrecord_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')), | ||||||
|  |             ], | ||||||
|  |             options={ | ||||||
|  |                 'abstract': False, | ||||||
|  |             }, | ||||||
|  |         ), | ||||||
|  |     ] | ||||||
|  | @ -48,7 +48,7 @@ class MroomSlot(BaseModel): | ||||||
| class LendingSeal(CommonBDModel): | class LendingSeal(CommonBDModel): | ||||||
|     """TN: 印章外出用印信息""" |     """TN: 印章外出用印信息""" | ||||||
| 
 | 
 | ||||||
|     seal = models.JSONField('印章信息',default=list ,help_text='{"seal_name": "印章名称"}') |     seal = models.JSONField('印章信息',default=list ,help_text='[公章,法人章,财务章,合同章,业务章,其他章]') | ||||||
|     filename = models.TextField('文件名称') |     filename = models.TextField('文件名称') | ||||||
|     file = models.TextField('文件内容') |     file = models.TextField('文件内容') | ||||||
|     file_count = models.PositiveIntegerField('用印份数') |     file_count = models.PositiveIntegerField('用印份数') | ||||||
|  | @ -83,26 +83,25 @@ class Vehicle(CommonBDModel): | ||||||
|         return super().save(*args, **kwargs) |         return super().save(*args, **kwargs) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # class FileRecord(CommonBDModel): | class FileRecord(CommonBDModel): | ||||||
| #     """TN: 档案台账""" |     """TN: 档案台账""" | ||||||
| #     name = models.CharField('资料名称', max_length=100) |     name = models.CharField('资料名称', max_length=100) | ||||||
| #     number = models.CharField('档案编号', max_length=50) |     number = models.CharField('档案编号', max_length=50, null=True, blank=True) | ||||||
| #     files = models.CharField('文件份数', max_length=10) |     counts = models.CharField('文件份数', max_length=10, null=True, blank=True) | ||||||
| #     location = models.CharField('存放位置', max_length=100) |     location = models.CharField('存放位置', max_length=100, null=True, blank=True) | ||||||
| #     contacts = models.CharField('存档人电话', max_length=50) |     contacts = models.CharField('存档人电话',  max_length=50, validators=[phone_validator], blank=True, null=True) | ||||||
| #     location = models.CharField('存档位置', max_length=100) |     reciver = models.CharField('接收人(综合办)', max_length=50, null=True, blank=True) | ||||||
| #     reciver = models.CharField('接收人(综合办)', max_length=50) |     remark = models.TextField('备注', max_length=200, null=True, blank=True) | ||||||
| #     remark = models.CharField('备注', max_length=100) |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # class BorrowRecord(CommonBDModel): | class BorrowRecord(CommonBDModel): | ||||||
| #     """TN: 借阅、复印、查阅记录""" |     """TN: 借阅、复印、查阅记录""" | ||||||
| #     files = models.ManyToManyField(FileRecord, related_name="borrow_records") |     borrow_file = models.ManyToManyField(FileRecord, related_name="borrow_records") | ||||||
| #     borrow_user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="borrow_user") |     borrow_user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="borrow_user") | ||||||
| #     borrow_date = models.DateField('借阅日期') |     borrow_date = models.DateField('借阅日期',  null=True, blank=True) | ||||||
| #     return_date = models.DateField('归还日期') |     return_date = models.DateField('归还日期',  null=True, blank=True) | ||||||
| #     contacts = models.CharField('借阅人电话', max_length=50, validators=[phone_validator], null=True, blank=True) |     contacts = models.CharField('借阅人电话', max_length=50, validators=[phone_validator], null=True, blank=True) | ||||||
| #     remark = models.CharField('用途', max_length=100) |     remark = models.JSONField('用途', default=list, help_text=['借阅', '复印', '查阅']) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # class Publicity(CommonBDModel): | # class Publicity(CommonBDModel): | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| from .models import (Mroom, MroomBooking, MroomSlot,  LendingSeal, Vehicle) | from .models import (Mroom, MroomBooking, MroomSlot,  LendingSeal, Vehicle, FileRecord, BorrowRecord ) | ||||||
| #                      , Publicity, | #                      , Publicity, | ||||||
| # FileRecord, BorrowRecord, Publicity, PatentInfo, PaperOfm, Platform, Project, PatentRecord, PaperRecord, ProjectApproval, ProjectInfo) | # Publicity, PatentInfo, PaperOfm, Platform, Project, PatentRecord, PaperRecord, ProjectApproval, ProjectInfo) | ||||||
| from apps.utils.serializers import CustomModelSerializer | from apps.utils.serializers import CustomModelSerializer | ||||||
| from rest_framework import serializers | from rest_framework import serializers | ||||||
| from django.db import transaction | from django.db import transaction | ||||||
|  | @ -64,20 +64,6 @@ class MroomSlotSerializer(CustomModelSerializer): | ||||||
|         fields = '__all__' |         fields = '__all__' | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # class SealSerializer(CustomModelSerializer): |  | ||||||
| #     class Meta: |  | ||||||
| #         model = Seal |  | ||||||
| #         fields = '__all__' |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| # class SealManageSerializer(CustomModelSerializer): |  | ||||||
| #     seal_name = serializers.CharField(source='seal.name', read_only=True) |  | ||||||
| #     class Meta: |  | ||||||
| #         model = SealManage |  | ||||||
| #         fields = '__all__' |  | ||||||
| #         read_only_fields = EXCLUDE_FIELDS |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| class LendingSealSerializer(CustomModelSerializer): | class LendingSealSerializer(CustomModelSerializer): | ||||||
|     create_by_name = serializers.CharField(source='create_by.name', read_only=True) |     create_by_name = serializers.CharField(source='create_by.name', read_only=True) | ||||||
|     belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True) |     belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True) | ||||||
|  | @ -96,20 +82,24 @@ class VehicleSerializer(CustomModelSerializer): | ||||||
|         read_only_fields = EXCLUDE_FIELDS + ['actual_km'] |         read_only_fields = EXCLUDE_FIELDS + ['actual_km'] | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # class FileRecordSerializer(CustomModelSerializer): | class FileRecordSerializer(CustomModelSerializer): | ||||||
| #     class Meta: |     create_by_name = serializers.CharField(source='create_by.name', read_only=True) | ||||||
| #         model = FileRecord |     belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True) | ||||||
| #         fields = '__all__' |     class Meta: | ||||||
| #         read_only_fields = EXCLUDE_FIELDS |         model = FileRecord | ||||||
|  |         fields = '__all__' | ||||||
|  |         read_only_fields = EXCLUDE_FIELDS | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # class BorrowRecordSerializer(CustomModelSerializer): | class BorrowRecordSerializer(CustomModelSerializer): | ||||||
| #     files = serializers.PrimaryKeyRelatedField(queryset=FileRecord.objects.all(), many=True, write_only=True, label="借阅文件") |     create_by_name = serializers.CharField(source='create_by.name', read_only=True) | ||||||
| #     file_detail = FileRecordSerializer(source='file', many=True, read_only=True, label="借阅文件详情") |     belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True) | ||||||
| #     class Meta: |     files = serializers.PrimaryKeyRelatedField(queryset=FileRecord.objects.all(), many=True, write_only=True, label="借阅文件") | ||||||
| #         model = BorrowRecord |     file_detail = FileRecordSerializer(source='borrow_file', many=True, read_only=True, label="借阅文件详情") | ||||||
| #         fields = '__all__' |     class Meta: | ||||||
| #         read_only_fields = EXCLUDE_FIELDS  |         model = BorrowRecord | ||||||
|  |         fields = '__all__' | ||||||
|  |         read_only_fields = EXCLUDE_FIELDS  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # class PublicitySerializer(CustomModelSerializer): | # class PublicitySerializer(CustomModelSerializer): | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| 
 | 
 | ||||||
| from apps.wf.models import Ticket | from apps.wf.models import Ticket | ||||||
| # TicketFlow, Transition, Workflow, CustomField, State,  | # TicketFlow, Transition, Workflow, CustomField, State,  | ||||||
| from apps.ofm.models import LendingSeal, Vehicle | from apps.ofm.models import LendingSeal, Vehicle, BorrowRecord | ||||||
| from rest_framework.exceptions import ParseError | from rest_framework.exceptions import ParseError | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -39,3 +39,17 @@ def bind_vehicle(ticket: Ticket, transition, new_ticket_data: dict): | ||||||
|         ins.ticket = ticket |         ins.ticket = ticket | ||||||
|         ins.save() |         ins.save() | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | def bind_file(ticket: Ticket, transition, new_ticket_data: dict): | ||||||
|  |     ins = BorrowRecord.objects.get(id=new_ticket_data['t_id']) | ||||||
|  |     ticket_data = ticket.ticket_data | ||||||
|  |     ticket_data.update({ | ||||||
|  |         't_model': 'BorrowRecord', | ||||||
|  |         '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() | ||||||
|  | @ -1,8 +1,8 @@ | ||||||
| from django.urls import path, include | from django.urls import path, include | ||||||
| from rest_framework.routers import DefaultRouter | from rest_framework.routers import DefaultRouter | ||||||
| from apps.ofm.views import (MroomViewSet, MroomBookingViewSet, MroomSlotViewSet,LendingSealViewSet, VehicleViewSet) | from apps.ofm.views import (MroomViewSet, MroomBookingViewSet, MroomSlotViewSet,LendingSealViewSet, VehicleViewSet, FilerecordViewSet, FileborrowViewSet) | ||||||
|                             # , , FilerecordViewSet, SealModelViewSet,  |                             # SealModelViewSet,  | ||||||
|                             #   FileborrowViewSet, PublicityViewSet, PatentInfoViewSet, PaperViewSet, PlatformViewSet, |                             #   , PublicityViewSet, PatentInfoViewSet, PaperViewSet, PlatformViewSet, | ||||||
|                             #     ProjectViewSet, PatentRecordViewSet, PaperRecordViewSet, ProjectApprovalViewSet, ProjectInfoViewSet) |                             #     ProjectViewSet, PatentRecordViewSet, PaperRecordViewSet, ProjectApprovalViewSet, ProjectInfoViewSet) | ||||||
| 
 | 
 | ||||||
| API_BASE_URL = 'api/ofm/' | API_BASE_URL = 'api/ofm/' | ||||||
|  | @ -15,8 +15,8 @@ router.register('mroomslot', MroomSlotViewSet, basename='mroomslot') | ||||||
| # router.register('sealmanage', SealManageViewSet, basename='sealmanage') | # router.register('sealmanage', SealManageViewSet, basename='sealmanage') | ||||||
| router.register('lendingseal', LendingSealViewSet, basename='lendingseal') | 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('filerecord', FilerecordViewSet, basename='filerecord') | ||||||
| # router.register('fileborrow', FileborrowViewSet, basename='fileborrow') | router.register('fileborrow', FileborrowViewSet, basename='fileborrow') | ||||||
| # router.register('publicity', PublicityViewSet, basename='publicity') | # router.register('publicity', PublicityViewSet, basename='publicity') | ||||||
| # router.register('patentinfo', PatentInfoViewSet, basename='patentinfo') | # router.register('patentinfo', PatentInfoViewSet, basename='patentinfo') | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,9 +1,9 @@ | ||||||
| from django.shortcuts import render | from django.shortcuts import render | ||||||
| from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet | from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet | ||||||
| from .models import Mroom, MroomBooking, MroomSlot, LendingSeal, Vehicle | from .models import Mroom, MroomBooking, MroomSlot, LendingSeal, Vehicle, FileRecord, BorrowRecord | ||||||
|                     #  , FileRecord, Seal |                     # Seal | ||||||
|                     #  BorrowRecord, Publicity, PatentInfo, PaperOfm, Platform, Project, PatentRecord, PaperRecord, ProjectApproval, ProjectInfo) |                     # Publicity, PatentInfo, PaperOfm, Platform, Project, PatentRecord, PaperRecord, ProjectApproval, ProjectInfo) | ||||||
| from .serializers import (MroomSerializer, MroomBookingSerializer, MroomSlotSerializer, LendingSealSerializer, VehicleSerializer) | from .serializers import (MroomSerializer, MroomBookingSerializer, MroomSlotSerializer, LendingSealSerializer, VehicleSerializer, FileRecordSerializer, BorrowRecordSerializer) | ||||||
|     #                       ,SealSerializer,  |     #                       ,SealSerializer,  | ||||||
|     # LendingSealSerializer, FileRecordSerializer, BorrowRecordSerializer, PublicitySerializer,  |     # LendingSealSerializer, FileRecordSerializer, BorrowRecordSerializer, PublicitySerializer,  | ||||||
|     # PatentInfoSerializer, PaperSerializer, PlatformSerializer, ProjectSerializer, ProjectMemberSerializer, PaperRecordSerializer, ProjectApprovalSerializer, ProjectInfoSerializer) |     # PatentInfoSerializer, PaperSerializer, PlatformSerializer, ProjectSerializer, ProjectMemberSerializer, PaperRecordSerializer, ProjectApprovalSerializer, ProjectInfoSerializer) | ||||||
|  | @ -126,26 +126,26 @@ class VehicleViewSet(CustomModelViewSet): | ||||||
|     ordering = ["create_time"] |     ordering = ["create_time"] | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # class FilerecordViewSet(CustomModelViewSet): | class FilerecordViewSet(CustomModelViewSet): | ||||||
| #     """list: 文件 |     """list: 文件 | ||||||
| 
 | 
 | ||||||
| #     文件 |     文件 | ||||||
| #     """ |     """ | ||||||
| #     queryset = FileRecord.objects.all() |     queryset = FileRecord.objects.all() | ||||||
| #     serializer_class = FileRecordSerializer |     serializer_class = FileRecordSerializer | ||||||
| #     filterset_fields = ["submit_user", "name", "number"] |     filterset_fields = [ "name", "number"] | ||||||
| #     ordering = ["create_time", "number", "name"] |     ordering = ["create_time", "number", "name"] | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # class FileborrowViewSet(CustomModelViewSet): | class FileborrowViewSet(CustomModelViewSet): | ||||||
| #     """list: 文件借阅 |     """list: 文件借阅 | ||||||
| 
 | 
 | ||||||
| #     文件借阅 |     文件借阅 | ||||||
| #     """ |     """ | ||||||
| #     queryset = BorrowRecord.objects.all() |     queryset = BorrowRecord.objects.all() | ||||||
| #     serializer_class = BorrowRecordSerializer |     serializer_class = BorrowRecordSerializer | ||||||
| #     filterset_fields = ["files", "borrow_user"] |     filterset_fields = ["borrow_file", "borrow_user"] | ||||||
| #     ordering = ["create_time"] |     ordering = ["create_time"] | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # class PublicityViewSet(CustomModelViewSet): | # class PublicityViewSet(CustomModelViewSet): | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue