opm 路由

This commit is contained in:
曹前明 2022-06-21 09:05:42 +08:00
parent 3830a1b000
commit 72637e749d
12 changed files with 304 additions and 36 deletions

View File

@ -1,3 +1,9 @@
from django.contrib import admin from django.contrib import admin
from apps.am.models import Area
# Register your models here. # Register your models here.
@admin.register(Area)
class AreaAdmin(admin.ModelAdmin):
date_hierarchy = 'create_time'

View File

@ -35,6 +35,9 @@ class Area(CommonBModel):
third_info = models.JSONField('三方信息', default=dict, third_info = models.JSONField('三方信息', default=dict,
null=False, blank=True) null=False, blank=True)
def __str__(self) -> str:
return self.name
class Access(CommonADModel): class Access(CommonADModel):
""" """

View File

@ -0,0 +1,221 @@
# Generated by Django 3.2.12 on 2022-06-21 00:56
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
initial = True
dependencies = [
('hrm', '0002_auto_20220617_1124'),
('am', '0001_initial'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('system', '0001_initial'),
('wf', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='Operation',
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=20, null=True, verbose_name='作业编号')),
('name', models.CharField(max_length=200, verbose_name='作业简述')),
('place', models.TextField(blank=True, null=True, verbose_name='具体地点')),
('start_time', models.DateTimeField(verbose_name='作业开始时间')),
('end_time', models.DateTimeField(verbose_name='作业结束时间')),
('state_work', models.CharField(help_text='运行/停机/检修', max_length=20, verbose_name='生产状态')),
('area', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='am.area', verbose_name='作业区域')),
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='operation_belong_dept', to='system.dept', verbose_name='所属部门')),
('coordinator', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='业务部门协调员')),
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='operation_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
('dept_bus', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='op_dept_bus', to='system.dept', verbose_name='业务部门')),
('dept_ter', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='op_dept_ter', to='system.dept', verbose_name='属地部门')),
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='operation_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
],
options={
'abstract': False,
},
),
migrations.CreateModel(
name='Opl',
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=20, null=True, verbose_name='作业许可编号')),
('level', models.CharField(blank=True, help_text='特技/三级/二级/主干道/次干道', max_length=20, null=True, verbose_name='作业级别')),
('start_time', models.DateTimeField(blank=True, null=True, verbose_name='作业开始时间')),
('end_time', models.DateTimeField(blank=True, null=True, verbose_name='作业结束时间')),
('work_time', models.DateTimeField(blank=True, null=True, verbose_name='安装/拆除时间')),
('accept_time', models.DateTimeField(blank=True, null=True, verbose_name='验收时间')),
('work_type', models.CharField(blank=True, max_length=20, null=True, verbose_name='安装/拆除')),
('power', models.PositiveIntegerField(blank=True, null=True, verbose_name='用电功率')),
('power_to', models.CharField(blank=True, max_length=20, null=True, verbose_name='用电地点')),
('power_from', models.CharField(blank=True, max_length=20, null=True, verbose_name='电源接入点')),
('power_end_time', models.DateTimeField(blank=True, null=True, verbose_name='用电截至')),
('power_start_time', models.DateTimeField(blank=True, null=True, verbose_name='用电开始')),
('power_days', models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='计划用电天数')),
('other_risk', models.TextField(blank=True, null=True, verbose_name='其他风险')),
('other_emr', models.TextField(blank=True, null=True, verbose_name='其他应急处置')),
('escape_route', models.TextField(blank=True, null=True, verbose_name='逃生路径')),
('risks_checked', models.JSONField(blank=True, default=list, verbose_name='风险选择')),
('measures_checked', models.JSONField(blank=True, default=list, verbose_name='措施选择')),
('close_note', models.PositiveSmallIntegerField(blank=True, choices=[(10, '作业正常结束'), (20, '因计划改变停止作业'), (30, '因发生异常终止作业'), (40, '其他')], help_text='正常结束/计划改变停止/发生异常停止/其他', null=True, verbose_name='作业关闭情况')),
('close_dos', models.JSONField(blank=True, default=list, verbose_name='关闭工作')),
('close_desc', models.TextField(blank=True, null=True, verbose_name='作业关闭描述')),
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='opl_belong_dept', to='system.dept', verbose_name='所属部门')),
],
options={
'abstract': False,
},
),
migrations.CreateModel(
name='OplCert',
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=20, verbose_name='证书名称')),
('number', models.CharField(max_length=20, verbose_name='证书编号')),
('type', models.PositiveSmallIntegerField(default=10, verbose_name='证书类型')),
('issue_date', models.DateField(verbose_name='发证日期')),
('expiration_date', models.DateField(verbose_name='有效期')),
('review_date', models.DateField(verbose_name='下一次复审日期')),
('file', models.TextField(blank=True, null=True, verbose_name='文件地址')),
('certificate', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='hrm.certificate', verbose_name='关联证书')),
],
options={
'abstract': False,
},
),
migrations.CreateModel(
name='OplWorker',
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='删除标记')),
('duty', models.CharField(blank=True, help_text='作业人员/起重司机/司索人员/起重指挥/电工', max_length=100, null=True, verbose_name='工作职责')),
('certificates', models.ManyToManyField(through='opm.OplCert', to='hrm.Certificate', verbose_name='关联证书')),
('opl', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='opm.opl', verbose_name='作业许可')),
('worker', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='作业人员')),
],
options={
'abstract': False,
},
),
migrations.AddField(
model_name='oplcert',
name='opl_worker',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='opm.oplworker', verbose_name='关联作业人员'),
),
migrations.CreateModel(
name='OplCate',
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='删除标记')),
('code', models.CharField(max_length=10, unique=True, verbose_name='标识')),
('name', models.CharField(max_length=20, unique=True, verbose_name='名称')),
('description', models.TextField(blank=True, null=True, verbose_name='描述')),
('template_export', models.TextField(blank=True, null=True, verbose_name='导出word模板')),
('close_options', models.ManyToManyField(related_name='oplcate_close_options', to='system.Dictionary', verbose_name='关闭工作')),
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='oplcate_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
('measure_options', models.ManyToManyField(related_name='oplcate_measure_options', to='system.Dictionary', verbose_name='控制措施')),
('risk_options', models.ManyToManyField(related_name='oplcate_risk_options', to='system.Dictionary', verbose_name='风险分析')),
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='oplcate_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
('workflow', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='wf.workflow', verbose_name='使用的工作流')),
],
options={
'abstract': False,
},
),
migrations.AddField(
model_name='opl',
name='cate',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='opm.oplcate', verbose_name='作业许可种类'),
),
migrations.AddField(
model_name='opl',
name='charger',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='opl_charger', to=settings.AUTH_USER_MODEL, verbose_name='作业负责人'),
),
migrations.AddField(
model_name='opl',
name='close_imgs',
field=models.ManyToManyField(blank=True, related_name='opl_close_imgs', to='system.File', verbose_name='作业关闭照片'),
),
migrations.AddField(
model_name='opl',
name='create_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='opl_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人'),
),
migrations.AddField(
model_name='opl',
name='create_imgs',
field=models.ManyToManyField(blank=True, related_name='opl_create_imgs', to='system.File', verbose_name='作业审批照片'),
),
migrations.AddField(
model_name='opl',
name='dept_do',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='system.dept', verbose_name='作业部门'),
),
migrations.AddField(
model_name='opl',
name='monitor',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='opl_monitor', to=settings.AUTH_USER_MODEL, verbose_name='作业监护人'),
),
migrations.AddField(
model_name='opl',
name='operation',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='opl_operation', to='opm.operation', verbose_name='关联作业'),
),
migrations.AddField(
model_name='opl',
name='ticket',
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='wf.ticket', verbose_name='关联工单'),
),
migrations.AddField(
model_name='opl',
name='update_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='opl_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人'),
),
migrations.AddField(
model_name='opl',
name='workers',
field=models.ManyToManyField(through='opm.OplWorker', to=settings.AUTH_USER_MODEL, verbose_name='作业人员'),
),
migrations.CreateModel(
name='GasCheck',
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='删除标记')),
('check_time', models.DateTimeField(verbose_name='检测时间')),
('check_place', models.CharField(max_length=100, verbose_name='检测部位')),
('o2', models.DecimalField(decimal_places=1, max_digits=3)),
('co', models.PositiveSmallIntegerField()),
('lel', models.DecimalField(decimal_places=1, max_digits=3)),
('is_ok', models.BooleanField(default=True, verbose_name='是否正常')),
('checker', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='检测人')),
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='gascheck_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
('opl', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='opm.opl', verbose_name='关联作业许可')),
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='gascheck_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
],
options={
'abstract': False,
},
),
]

View File

View File

@ -1,9 +1,6 @@
from django.db import models from django.db import models
from apps.hrm.models import Certificate from apps.system.models import User
from apps.system.models import Dept, Dictionary, File, User from apps.utils.models import BaseModel, CommonADModel, CommonAModel, CommonBDModel
from apps.utils.models import BaseModel, CommonADModel, CommonAModel, CommonBDModel, CommonBModel
from apps.am.models import Area
from apps.wf.models import Ticket, Workflow
# Create your models here. # Create your models here.
@ -14,11 +11,19 @@ class OplCate(CommonAModel):
code = models.CharField('标识', max_length=10, unique=True) code = models.CharField('标识', max_length=10, unique=True)
name = models.CharField('名称', max_length=20, unique=True) name = models.CharField('名称', max_length=20, unique=True)
description = models.TextField('描述', null=True, blank=True) description = models.TextField('描述', null=True, blank=True)
workflow = models.ForeignKey(Workflow, verbose_name='使用的工作流') workflow = models.ForeignKey('wf.workflow', verbose_name='使用的工作流',
on_delete=models.SET_NULL,
null=True, blank=True)
template_export = models.TextField('导出word模板', null=True, blank=True) template_export = models.TextField('导出word模板', null=True, blank=True)
risk_options = models.ManyToManyField(Dictionary, verbose_name='风险分析') risk_options = models.ManyToManyField('system.dictionary',
measure_options = models.ManyToManyField(Dictionary, verbose_name='控制措施') verbose_name='风险分析',
close_options = models.ManyToManyField(Dictionary, verbose_name='关闭工作') related_name='oplcate_risk_options')
measure_options = models.ManyToManyField('system.dictionary',
verbose_name='控制措施',
related_name='oplcate_measure_options')
close_options = models.ManyToManyField('system.dictionary',
verbose_name='关闭工作',
related_name='oplcate_close_options')
class Operation(CommonBDModel): class Operation(CommonBDModel):
@ -36,16 +41,18 @@ class Operation(CommonBDModel):
) )
number = models.CharField('作业编号', max_length=20, null=True, blank=True) number = models.CharField('作业编号', max_length=20, null=True, blank=True)
name = models.CharField('作业简述', max_length=200) name = models.CharField('作业简述', max_length=200)
area = models.ForeignKey(Area, verbose_name='作业区域', area = models.ForeignKey('am.area', verbose_name='作业区域',
on_delete=models.CASCADE) on_delete=models.CASCADE)
place = models.TextField('具体地点', null=True, blank=True) place = models.TextField('具体地点', null=True, blank=True)
start_time = models.DateTimeField('作业开始时间') start_time = models.DateTimeField('作业开始时间')
end_time = models.DateTimeField('作业结束时间') end_time = models.DateTimeField('作业结束时间')
dept_ter = models.ForeignKey(Dept, verbose_name='属地部门', dept_ter = models.ForeignKey('system.dept', verbose_name='属地部门',
on_delete=models.CASCADE) on_delete=models.CASCADE,
dept_bus = models.ForeignKey(Dept, verbose_name='业务部门', related_name='op_dept_ter')
on_delete=models.CASCADE) dept_bus = models.ForeignKey('system.dept', verbose_name='业务部门',
coordinator = models.ForeignKey(User, verbose_name='业务部门协调员', on_delete=models.CASCADE,
related_name='op_dept_bus')
coordinator = models.ForeignKey('system.user', verbose_name='业务部门协调员',
on_delete=models.CASCADE) on_delete=models.CASCADE)
state_work = models.CharField('生产状态', max_length=20, help_text='运行/停机/检修') state_work = models.CharField('生产状态', max_length=20, help_text='运行/停机/检修')
@ -69,11 +76,11 @@ class Opl(CommonBDModel):
on_delete=models.CASCADE) on_delete=models.CASCADE)
start_time = models.DateTimeField('作业开始时间', null=True, blank=True) start_time = models.DateTimeField('作业开始时间', null=True, blank=True)
end_time = models.DateTimeField('作业结束时间', null=True, blank=True) end_time = models.DateTimeField('作业结束时间', null=True, blank=True)
dept_do = models.ForeignKey(Dept, verbose_name='作业部门', dept_do = models.ForeignKey('system.dept', verbose_name='作业部门',
on_delete=models.CASCADE) on_delete=models.CASCADE)
charger = models.ForeignKey(User, verbose_name='作业负责人', charger = models.ForeignKey('system.user', verbose_name='作业负责人',
on_delete=models.CASCADE, related_name='opl_charger') on_delete=models.CASCADE, related_name='opl_charger')
monitor = models.ForeignKey(User, verbose_name='作业监护人', monitor = models.ForeignKey('system.user', verbose_name='作业监护人',
on_delete=models.CASCADE, related_name='opl_monitor') on_delete=models.CASCADE, related_name='opl_monitor')
# electrician = models.ForeignKey(User, verbose_name='电工', # electrician = models.ForeignKey(User, verbose_name='电工',
# on_delete=models.CASCADE, # on_delete=models.CASCADE,
@ -92,16 +99,18 @@ class Opl(CommonBDModel):
escape_route = models.TextField('逃生路径', null=True, blank=True) escape_route = models.TextField('逃生路径', null=True, blank=True)
risks_checked = models.JSONField('风险选择', default=list, null=False, blank=True) risks_checked = models.JSONField('风险选择', default=list, null=False, blank=True)
measures_checked = models.JSONField('措施选择', default=list, null=False, blank=True) measures_checked = models.JSONField('措施选择', default=list, null=False, blank=True)
workers = models.ManyToManyField(User, verbose_name='作业人员', through='opm.oplworker') workers = models.ManyToManyField('system.user', verbose_name='作业人员', through='opm.oplworker')
create_imgs = models.ManyToManyField(File, verbose_name='作业审批照片') create_imgs = models.ManyToManyField('system.file', verbose_name='作业审批照片',
close_imgs = models.ManyToManyField(File, verbose_name='作业关闭照片') related_name='opl_create_imgs', blank=True)
close_imgs = models.ManyToManyField('system.file', verbose_name='作业关闭照片',
related_name='opl_close_imgs', blank=True)
close_note = models.PositiveSmallIntegerField('作业关闭情况', close_note = models.PositiveSmallIntegerField('作业关闭情况',
choices=CLOSE_CHOICES1, choices=CLOSE_CHOICES1,
help_text='正常结束/计划改变停止/发生异常停止/其他', help_text='正常结束/计划改变停止/发生异常停止/其他',
null=True, blank=True) null=True, blank=True)
close_dos = models.JSONField('关闭工作', default=list, null=False, blank=True) close_dos = models.JSONField('关闭工作', default=list, null=False, blank=True)
close_desc = models.TextField('作业关闭描述', null=True, blank=True) close_desc = models.TextField('作业关闭描述', null=True, blank=True)
ticket = models.OneToOneField(Ticket, verbose_name='关联工单', ticket = models.OneToOneField('wf.ticket', verbose_name='关联工单',
on_delete=models.CASCADE, on_delete=models.CASCADE,
null=True, blank=True) null=True, blank=True)
@ -110,12 +119,14 @@ class OplWorker(BaseModel):
""" """
作业许可人员 作业许可人员
""" """
worker = models.ForeignKey(User, verbose_name='作业人员', worker = models.ForeignKey('system.user', verbose_name='作业人员',
on_delete=models.CASCADE) on_delete=models.CASCADE)
opl = models.ForeignKey(Opl, verbose_name='作业许可', opl = models.ForeignKey(Opl, verbose_name='作业许可',
on_delete=models.CASCADE) on_delete=models.CASCADE)
duty = models.CharField('工作职责', null=True, blank=True, help_text='作业人员/起重司机/司索人员/起重指挥/电工') duty = models.CharField('工作职责', max_length=100,
certificates = models.ManyToManyField(Certificate, verbose_name='关联证书', through='opt.optcert') null=True, blank=True,
help_text='作业人员/起重司机/司索人员/起重指挥/电工')
certificates = models.ManyToManyField('hrm.certificate', verbose_name='关联证书', through='opm.oplcert')
class OplCert(BaseModel): class OplCert(BaseModel):
@ -124,7 +135,7 @@ class OplCert(BaseModel):
""" """
opl_worker = models.ForeignKey(OplWorker, verbose_name='关联作业人员', opl_worker = models.ForeignKey(OplWorker, verbose_name='关联作业人员',
on_delete=models.CASCADE) on_delete=models.CASCADE)
certificate = models.ForeignKey(Certificate, verbose_name='关联证书', certificate = models.ForeignKey('hrm.certificate', verbose_name='关联证书',
on_delete=models.CASCADE) on_delete=models.CASCADE)
name = models.CharField('证书名称', max_length=20) name = models.CharField('证书名称', max_length=20)
number = models.CharField('证书编号', max_length=20) number = models.CharField('证书编号', max_length=20)
@ -140,10 +151,10 @@ class GasCheck(CommonADModel):
气体检测记录 气体检测记录
""" """
check_time = models.DateTimeField('检测时间') check_time = models.DateTimeField('检测时间')
check_place = models.CharField('检测部位') check_place = models.CharField('检测部位', max_length=100)
o2 = models.DecimalField(decimal_places=1, max_digits=3) o2 = models.DecimalField(decimal_places=1, max_digits=3)
co = models.PositiveSmallIntegerField() co = models.PositiveSmallIntegerField()
lel = models.DecimalField(decimal_places=1, max_digits=3) lel = models.DecimalField(decimal_places=1, max_digits=3)
is_ok = models.BooleanField('是否正常', default=True) is_ok = models.BooleanField('是否正常', default=True)
checker = models.ForeignKey(User, verbose_name='检测人') checker = models.ForeignKey(User, verbose_name='检测人', on_delete=models.CASCADE)
opl = models.ForeignKey(Opl, verbose_name='关联作业许可') opl = models.ForeignKey(Opl, verbose_name='关联作业许可', on_delete=models.CASCADE)

View File

@ -10,7 +10,7 @@ from rest_framework.exceptions import ParseError
class OplCateCreateUpdateSerializer(CustomModelSerializer): class OplCateCreateUpdateSerializer(CustomModelSerializer):
class Meta: class Meta:
model = OplCate model = OplCate
fields = ['code', 'name', 'template_export', 'workflow'] exclude = EXCLUDE_FIELDS
class OplCateSerializer(CustomModelSerializer): class OplCateSerializer(CustomModelSerializer):
@ -33,7 +33,7 @@ class OperationSerializer(CustomModelSerializer):
class OplWorkerCreateSerializer(CustomModelSerializer): class OplWorkerCreateSerializer(CustomModelSerializer):
certificates = serializers.PrimaryKeyRelatedField(label='证书ID', many=True) certificates = serializers.PrimaryKeyRelatedField(label='证书ID', many=True, queryset=Certificate.objects.all())
class Meta: class Meta:
model = OplWorker model = OplWorker
@ -56,7 +56,7 @@ class OplWorkerCreateSerializer(CustomModelSerializer):
class OplWorkerUpdateSerializer(CustomModelSerializer): class OplWorkerUpdateSerializer(CustomModelSerializer):
certificates = serializers.PrimaryKeyRelatedField(label='证书ID', many=True) certificates = serializers.PrimaryKeyRelatedField(label='证书ID', many=True, queryset=Certificate.objects.all())
class Meta: class Meta:
model = OplWorker model = OplWorker

16
apps/opm/urls.py Normal file
View File

@ -0,0 +1,16 @@
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from apps.opm.views import GasCheckViewSet, OperationViewSet, OplCateViewSet, OplViewSet, OplWorkerViewSet
API_BASE_URL = 'api/opm/'
HTML_BASE_URL = 'opm/'
router = DefaultRouter()
router.register('opl_cate', OplCateViewSet, basename='opl_cate')
router.register('operation', OperationViewSet, basename='operation')
router.register('opl', OplViewSet, basename='opl')
router.register('opl_worker', OplWorkerViewSet, basename='opl_worker')
router.register('gas_check', GasCheckViewSet, basename='gas_check')
urlpatterns = [
path(API_BASE_URL, include(router.urls)),
]

View File

@ -2,7 +2,6 @@ from django.shortcuts import render
from rest_framework.response import Response from rest_framework.response import Response
from apps.opm.models import GasCheck, Operation, Opl, OplCate, OplWorker from apps.opm.models import GasCheck, Operation, Opl, OplCate, OplWorker
from apps.opm.serializers import GasCheckCreateUpdateSerializer, GasCheckSerializer, OperationCreateUpdateSerializer, OperationSerializer, OplCateCreateUpdateSerializer, OplCateSerializer, OplSerializer, OplWorkerCreateSerializer, OplWorkerUpdateSerializer from apps.opm.serializers import GasCheckCreateUpdateSerializer, GasCheckSerializer, OperationCreateUpdateSerializer, OperationSerializer, OplCateCreateUpdateSerializer, OplCateSerializer, OplSerializer, OplWorkerCreateSerializer, OplWorkerUpdateSerializer
from apps.opm.services import create_opl_ticket
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
from rest_framework.exceptions import ParseError from rest_framework.exceptions import ParseError
from rest_framework.mixins import CreateModelMixin, ListModelMixin, DestroyModelMixin from rest_framework.mixins import CreateModelMixin, ListModelMixin, DestroyModelMixin

View File

@ -372,7 +372,7 @@ class UserPostViewSet(CreateModelMixin, DestroyModelMixin, ListModelMixin, Custo
class UserViewSet(CustomModelViewSet): class UserViewSet(CustomModelViewSet):
queryset = User.objects.all() queryset = User.objects.filter(type='employee')
serializer_class = UserListSerializer serializer_class = UserListSerializer
create_serializer_class = UserCreateSerializer create_serializer_class = UserCreateSerializer
update_serializer_class = UserUpdateSerializer update_serializer_class = UserUpdateSerializer

View File

@ -1,3 +1,13 @@
from django.contrib import admin from django.contrib import admin
from apps.wf.models import State, Workflow
# Register your models here. # Register your models here.
@admin.register(Workflow)
class WorkflowAdmin(admin.ModelAdmin):
date_hierarchy = 'create_time'
@admin.register(State)
class StateAdmin(admin.ModelAdmin):
date_hierarchy = 'create_time'

View File

@ -59,7 +59,8 @@ INSTALLED_APPS = [
'apps.hrm', 'apps.hrm',
'apps.am', 'apps.am',
'apps.vm', 'apps.vm',
'apps.rpm' 'apps.rpm',
'apps.opm'
] ]
MIDDLEWARE = [ MIDDLEWARE = [

View File

@ -52,6 +52,7 @@ urlpatterns = [
path('', include('apps.am.urls')), path('', include('apps.am.urls')),
path('', include('apps.ecm.urls')), path('', include('apps.ecm.urls')),
path('', include('apps.rpm.urls')), path('', include('apps.rpm.urls')),
path('', include('apps.opm.urls')),