feat: srm -add models 平台审批表

This commit is contained in:
TianyangZhang 2025-11-04 15:09:26 +08:00
parent c5110d3361
commit b6a2a6a8d7
5 changed files with 135 additions and 12 deletions

View File

@ -0,0 +1,66 @@
# Generated by Django 3.2.12 on 2025-11-04 07:08
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('wf', '0004_workflow_view_path2'),
('srm', '0004_alter_paperrecord_pa_type'),
]
operations = [
migrations.CreateModel(
name='Platstanding',
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='删除标记')),
('number', models.CharField(blank=True, max_length=50, null=True, verbose_name='发文号')),
('name', models.CharField(blank=True, max_length=50, null=True, verbose_name='名称')),
('p_type', models.CharField(blank=True, max_length=50, null=True, verbose_name='平台类型')),
('org', models.CharField(blank=True, max_length=100, null=True, verbose_name='单位')),
('period', models.CharField(blank=True, max_length=200, null=True, verbose_name='建设期')),
('city_p', models.BooleanField(default=False, verbose_name='市级平台')),
('province_p', models.BooleanField(default=False, verbose_name='省级平台')),
('plat_amount', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='平台资金(元)')),
('son_pro', models.CharField(blank=True, max_length=200, null=True, verbose_name='子项目')),
('achieve', models.CharField(blank=True, max_length=200, null=True, verbose_name='成果')),
('finished', models.CharField(blank=True, max_length=200, null=True, verbose_name='完成情况')),
('completion', models.CharField(blank=True, max_length=200, null=True, verbose_name='建成绩效完成情况')),
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='platstanding_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='platstanding_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
],
options={
'abstract': False,
},
),
migrations.CreateModel(
name='Platform',
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='删除标记')),
('p_date', models.DateField(blank=True, null=True, verbose_name='日期')),
('p_dept', models.CharField(blank=True, max_length=200, null=True, verbose_name='归口部门')),
('city_p', models.BooleanField(default=False, verbose_name='市级平台')),
('province_p', models.BooleanField(default=False, verbose_name='省级平台')),
('const', models.CharField(blank=True, max_length=50, null=True, verbose_name='建设期')),
('charge', models.CharField(blank=True, max_length=50, null=True, verbose_name='负责人')),
('condition', models.TextField(blank=True, max_length=200, null=True, verbose_name='平台基本情况与目标绩效')),
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='platform_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
('ticket', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='plat_ticket', to='wf.ticket', verbose_name='关联工单')),
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='platform_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
],
options={
'abstract': False,
},
),
]

View File

@ -113,6 +113,33 @@ class PaperRecord(CommonADModel):
award_info = models.TextField(null=True, blank=True, verbose_name="报奖情况") award_info = models.TextField(null=True, blank=True, verbose_name="报奖情况")
bonus_amount = models.DecimalField(max_digits=10,decimal_places=2, null=True,blank=True,verbose_name="奖金金额(元)") bonus_amount = models.DecimalField(max_digits=10,decimal_places=2, null=True,blank=True,verbose_name="奖金金额(元)")
class Platform(CommonADModel):
"""TN: 平台信息表"""
p_date = models.DateField(null=True, blank=True, verbose_name="日期")
p_dept = models.CharField("归口部门", max_length=200, null=True, blank=True)
city_p = models.BooleanField("市级平台", default=False)
province_p = models.BooleanField("省级平台", default=False)
const = models.CharField("建设期", max_length=50, null=True, blank=True)
charge = models.CharField("负责人", max_length=50, null=True, blank=True)
condition = models.TextField("平台基本情况与目标绩效", max_length=200, null=True, blank=True)
ticket = models.ForeignKey('wf.ticket', verbose_name='关联工单',
on_delete=models.SET_NULL, related_name='plat_ticket', null=True, blank=True, db_constraint=False)
class Platstanding(CommonADModel):
"""TN: 平台台账登记"""
number = models.CharField("发文号", max_length=50, null=True, blank=True)
name = models.CharField("名称", max_length=50, null=True, blank=True)
p_type = models.CharField("平台类型", max_length=50, null=True, blank=True)
org = models.CharField("单位", max_length=100, null=True, blank=True)
period = models.CharField("建设期", max_length=200, null=True, blank=True)
city_p = models.BooleanField("市级平台", default=False)
province_p = models.BooleanField("省级平台", default=False)
plat_amount = models.DecimalField(max_digits=10,decimal_places=2, null=True,blank=True,verbose_name="平台资金(元)")
son_pro= models.CharField("子项目", max_length=200, null=True, blank=True)
achieve = models.CharField("成果", max_length=200, null=True, blank=True)
finished = models.CharField("完成情况", max_length=200, null=True, blank=True)
completion = models.CharField("建成绩效完成情况", max_length=200, null=True, blank=True)
# class ProjectApproval(CommonBDModel): # class ProjectApproval(CommonBDModel):
# """TN: 立项审批表""" # """TN: 立项审批表"""

View File

@ -1,4 +1,4 @@
from .models import (PatentInfo, Papersecret, PatentRecord, PaperRecord) from .models import PatentInfo, Papersecret, PatentRecord, PaperRecord, Platform, Platstanding
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
@ -44,11 +44,21 @@ class PaperRecordSerializer(CustomModelSerializer):
fields = '__all__' fields = '__all__'
read_only_fields = EXCLUDE_FIELDS read_only_fields = EXCLUDE_FIELDS
# class PlatformSerializer(serializers.ModelSerializer): class PlatformSerializer(serializers.ModelSerializer):
# class Meta: create_by_name = serializers.CharField(source='create_by.name', read_only=True)
# model = Platform belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True)
# fields = ['id', 'name'] class Meta:
model = Platform
fields = '__all__'
read_only_fields = EXCLUDE_FIELDS
class PlatstandingSerializer(serializers.ModelSerializer):
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 = Platstanding
fields = '__all__'
read_only_fields = EXCLUDE_FIELDS
# class ProjectSerializer(serializers.ModelSerializer): # class ProjectSerializer(serializers.ModelSerializer):
# class Meta: # class Meta:

View File

@ -1,6 +1,6 @@
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.srm.views import PatentInfoViewSet, PapersecretViewSet, PatentRecordViewSet, PaperRecordViewSet from apps.srm.views import PatentInfoViewSet, PapersecretViewSet, PatentRecordViewSet, PaperRecordViewSet, PlatformViewSet, PlatstandingViewSet
API_BASE_URL = 'api/srm/' API_BASE_URL = 'api/srm/'
@ -11,6 +11,8 @@ router.register('patentinfo', PatentInfoViewSet, basename='patentinfo')
router.register('paperse', PapersecretViewSet, basename='PaperSe') router.register('paperse', PapersecretViewSet, basename='PaperSe')
router.register('patentrecord', PatentRecordViewSet, basename='patentrecord') router.register('patentrecord', PatentRecordViewSet, basename='patentrecord')
router.register('paperrecord', PaperRecordViewSet, basename='paperrecord') router.register('paperrecord', PaperRecordViewSet, basename='paperrecord')
router.register('pf', PlatformViewSet, basename='pf')
router.register('ps', PlatstandingViewSet, basename='ps')
urlpatterns = [ urlpatterns = [
path(API_BASE_URL, include(router.urls)), path(API_BASE_URL, include(router.urls)),

View File

@ -3,8 +3,8 @@ from django.shortcuts import render
# Create your views here. # Create your views here.
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 PatentInfo, Papersecret, PatentRecord, PaperRecord from .models import PatentInfo, Papersecret, PatentRecord, PaperRecord, Platform, Platstanding
from .serializers import PatentInfoSerializer, PaperSeSerializer, PatentRecordSerializer, PaperRecordSerializer from .serializers import PatentInfoSerializer, PaperSeSerializer, PatentRecordSerializer, PaperRecordSerializer, PlatformSerializer, PlatstandingSerializer
from rest_framework.exceptions import ParseError from rest_framework.exceptions import ParseError
from rest_framework.response import Response from rest_framework.response import Response
@ -20,7 +20,6 @@ class PatentInfoViewSet(CustomModelViewSet):
filterset_fields = ["name", "author", "type"] filterset_fields = ["name", "author", "type"]
ordering = ["-create_time", "name", "author", "type"] ordering = ["-create_time", "name", "author", "type"]
class PapersecretViewSet(CustomModelViewSet): class PapersecretViewSet(CustomModelViewSet):
"""list: 论文申密审批 """list: 论文申密审批
@ -31,7 +30,6 @@ class PapersecretViewSet(CustomModelViewSet):
filterset_fields = ["paper_name", "author"] filterset_fields = ["paper_name", "author"]
ordering = ["-create_time", "paper_name"] ordering = ["-create_time", "paper_name"]
class PatentRecordViewSet(CustomModelViewSet): class PatentRecordViewSet(CustomModelViewSet):
"""list: 专利台账登记 """list: 专利台账登记
@ -62,7 +60,6 @@ class PatentRecordViewSet(CustomModelViewSet):
patents = [{'id': patent.id, 'name': patent.name} for patent in queryset] patents = [{'id': patent.id, 'name': patent.name} for patent in queryset]
return Response(patents) return Response(patents)
class PaperRecordViewSet(CustomModelViewSet): class PaperRecordViewSet(CustomModelViewSet):
"""list: 论文台账登记 """list: 论文台账登记
@ -92,3 +89,24 @@ class PaperRecordViewSet(CustomModelViewSet):
queryset = queryset.filter(paper_name__icontains=search) queryset = queryset.filter(paper_name__icontains=search)
papers = [{'id': paper.id, 'name': paper.paper_name} for paper in queryset] papers = [{'id': paper.id, 'name': paper.paper_name} for paper in queryset]
return Response(papers) return Response(papers)
class PlatformViewSet(CustomModelViewSet):
"""list: 平台审批
平台审批
"""
queryset = Platform.objects.all()
serializer_class = PlatformSerializer
filterset_fields = ["p_dept"]
ordering = ["-create_time", "p_dept"]
class PlatstandingViewSet(CustomModelViewSet):
"""list: 平台审批
平台审批
"""
queryset = Platstanding.objects.all()
serializer_class = PlatstandingSerializer
filterset_fields = ["name", "city_p", "province_p"]
ordering = ["-create_time", "name"]