Merge branch 'master' of https://e.coding.net/ctcdevteam/ehs/ehs_server
This commit is contained in:
commit
7258d2e0ca
|
@ -1,4 +1,4 @@
|
||||||
# Generated by Django 3.2.12 on 2023-03-09 05:09
|
# Generated by Django 3.2.12 on 2024-06-06 06:46
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
@ -12,27 +12,13 @@ class Migration(migrations.Migration):
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
('wf', '0001_initial'),
|
|
||||||
('am', '0003_alter_area_access_list'),
|
('am', '0003_alter_area_access_list'),
|
||||||
('system', '0001_initial'),
|
('system', '0004_auto_20240605_1011'),
|
||||||
|
('django_celery_beat', '0016_alter_crontabschedule_timezone'),
|
||||||
|
('wf', '0002_alter_state_filter_dept'),
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
migrations.CreateModel(
|
|
||||||
name='CheckItem',
|
|
||||||
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(blank=True, null=True, verbose_name='检查时间')),
|
|
||||||
('result', models.PositiveSmallIntegerField(choices=[(10, '未检查'), (20, '合格'), (30, '不合格')], default=10, verbose_name='检查结果')),
|
|
||||||
('note', models.TextField(blank=True, null=True, verbose_name='检查备注')),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
'abstract': False,
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='CheckTaskSet',
|
name='CheckTaskSet',
|
||||||
fields=[
|
fields=[
|
||||||
|
@ -44,6 +30,8 @@ class Migration(migrations.Migration):
|
||||||
('expire', models.PositiveSmallIntegerField(default=0, help_text='0代表不设限制直到下个任务派发', verbose_name='执行有效期(h)')),
|
('expire', models.PositiveSmallIntegerField(default=0, help_text='0代表不设限制直到下个任务派发', verbose_name='执行有效期(h)')),
|
||||||
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='checktaskset_belong_dept', to='system.dept', verbose_name='所属部门')),
|
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='checktaskset_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='checktaskset_create_by', 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='checktaskset_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||||
|
('myschedule', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='system.myschedule', verbose_name='周期')),
|
||||||
|
('periodictask', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='checktask_periodictask', to='django_celery_beat.periodictask', verbose_name='关联定时任务')),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
'abstract': False,
|
'abstract': False,
|
||||||
|
@ -61,12 +49,11 @@ class Migration(migrations.Migration):
|
||||||
('type', models.PositiveSmallIntegerField(choices=[(10, '手动'), (20, '派发')], default=10, verbose_name='任务类型')),
|
('type', models.PositiveSmallIntegerField(choices=[(10, '手动'), (20, '派发')], default=10, verbose_name='任务类型')),
|
||||||
('time_start', models.DateTimeField(verbose_name='开启时间')),
|
('time_start', models.DateTimeField(verbose_name='开启时间')),
|
||||||
('time_end', models.DateTimeField(verbose_name='关闭时间')),
|
('time_end', models.DateTimeField(verbose_name='关闭时间')),
|
||||||
('enabled', models.BooleanField(default=True, verbose_name='是否可用')),
|
|
||||||
('note', models.TextField(blank=True, null=True, verbose_name='检查备注')),
|
('note', models.TextField(blank=True, null=True, verbose_name='检查备注')),
|
||||||
('time_check', models.BooleanField(default=True, verbose_name='最后检查时间')),
|
('time_check', models.DateTimeField(blank=True, null=True, verbose_name='开始检查时间')),
|
||||||
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='checkwork_belong_dept', to='system.dept', verbose_name='所属部门')),
|
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='checkwork_belong_dept', to='system.dept', verbose_name='所属部门')),
|
||||||
('category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='system.dictionary', verbose_name='工作分类')),
|
('category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='system.dictionary', verbose_name='工作分类')),
|
||||||
('checktaskset', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='dpm.checktaskset', verbose_name='关联派发任务')),
|
('checktaskset', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='dpm.checktaskset', verbose_name='关联派发策略')),
|
||||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='checkwork_create_by', 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='checkwork_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
|
@ -106,7 +93,7 @@ class Migration(migrations.Migration):
|
||||||
('name', models.TextField(verbose_name='项目/步骤')),
|
('name', models.TextField(verbose_name='项目/步骤')),
|
||||||
('level', models.PositiveSmallIntegerField(choices=[(10, '低风险'), (20, '一般风险'), (30, '较大风险'), (40, '重大风险')], default=10, verbose_name='风险等级')),
|
('level', models.PositiveSmallIntegerField(choices=[(10, '低风险'), (20, '一般风险'), (30, '较大风险'), (40, '重大风险')], default=10, verbose_name='风险等级')),
|
||||||
('standard', models.TextField(blank=True, null=True, verbose_name='检查标准')),
|
('standard', models.TextField(blank=True, null=True, verbose_name='检查标准')),
|
||||||
('hazard', models.TextField(blank=True, null=True, verbose_name='危害因素')),
|
('hazard_factors', models.TextField(blank=True, null=True, verbose_name='危害因素')),
|
||||||
('sort', models.PositiveSmallIntegerField(default=1, verbose_name='排序')),
|
('sort', models.PositiveSmallIntegerField(default=1, verbose_name='排序')),
|
||||||
('measure_tech', models.TextField(blank=True, null=True, verbose_name='工程技术措施')),
|
('measure_tech', models.TextField(blank=True, null=True, verbose_name='工程技术措施')),
|
||||||
('measure_manage', models.TextField(blank=True, null=True, verbose_name='管理措施')),
|
('measure_manage', models.TextField(blank=True, null=True, verbose_name='管理措施')),
|
||||||
|
@ -146,13 +133,9 @@ class Migration(migrations.Migration):
|
||||||
('correct_deadline', models.DateTimeField(blank=True, null=True, verbose_name='整改期限')),
|
('correct_deadline', models.DateTimeField(blank=True, null=True, verbose_name='整改期限')),
|
||||||
('correct_description', models.TextField(blank=True, null=True, verbose_name='整改描述')),
|
('correct_description', models.TextField(blank=True, null=True, verbose_name='整改描述')),
|
||||||
('correct_time', models.DateTimeField(blank=True, null=True, verbose_name='整改完成时间')),
|
('correct_time', models.DateTimeField(blank=True, null=True, verbose_name='整改完成时间')),
|
||||||
('opinion_access', models.TextField(blank=True, null=True, verbose_name='评估意见')),
|
|
||||||
('opinion_check', models.TextField(blank=True, null=True, verbose_name='复查意见')),
|
|
||||||
('opinion_audit', models.TextField(blank=True, null=True, verbose_name='审核意见')),
|
|
||||||
('area', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='am.area', verbose_name='所在区域')),
|
('area', models.ForeignKey(blank=True, null=True, 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='hazard_belong_dept', to='system.dept', verbose_name='所属部门')),
|
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='hazard_belong_dept', to='system.dept', verbose_name='所属部门')),
|
||||||
('category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='system.dictionary', verbose_name='隐患类别')),
|
('category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='system.dictionary', verbose_name='隐患类别')),
|
||||||
('checkitem', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='dpm.checkitem', verbose_name='关联检查条目')),
|
|
||||||
('checkwork', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='dpm.checkwork', verbose_name='关联检查工作')),
|
('checkwork', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='dpm.checkwork', verbose_name='关联检查工作')),
|
||||||
('correct_solution', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='system.file', verbose_name='整改方案')),
|
('correct_solution', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='system.file', verbose_name='整改方案')),
|
||||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='hazard_create_by', 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='hazard_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||||
|
@ -162,9 +145,6 @@ class Migration(migrations.Migration):
|
||||||
('photos_done', models.ManyToManyField(blank=True, related_name='hazard_photos_done', to='system.File', verbose_name='整改后照片')),
|
('photos_done', models.ManyToManyField(blank=True, related_name='hazard_photos_done', to='system.File', verbose_name='整改后照片')),
|
||||||
('ticket', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='hazard_ticket', to='wf.ticket', verbose_name='关联工单')),
|
('ticket', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='hazard_ticket', to='wf.ticket', verbose_name='关联工单')),
|
||||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='hazard_update_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='hazard_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||||
('user_access', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='hazard_user_access', to=settings.AUTH_USER_MODEL, verbose_name='评估人')),
|
|
||||||
('user_audit', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='hazard_user_audit', to=settings.AUTH_USER_MODEL, verbose_name='审核人')),
|
|
||||||
('user_check', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='hazard_user_check', to=settings.AUTH_USER_MODEL, verbose_name='复查人')),
|
|
||||||
('user_correct', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='hazard_user_correct', to=settings.AUTH_USER_MODEL, verbose_name='整改责任人')),
|
('user_correct', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='hazard_user_correct', to=settings.AUTH_USER_MODEL, verbose_name='整改责任人')),
|
||||||
('user_discover', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='hazard_user_discover', to=settings.AUTH_USER_MODEL, verbose_name='发现人')),
|
('user_discover', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='hazard_user_discover', to=settings.AUTH_USER_MODEL, verbose_name='发现人')),
|
||||||
],
|
],
|
||||||
|
@ -187,4 +167,38 @@ class Migration(migrations.Migration):
|
||||||
name='user_duty',
|
name='user_duty',
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='指派人'),
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='指派人'),
|
||||||
),
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='checktaskset',
|
||||||
|
name='riskpoint',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='ctask_riskpoint', to='dpm.riskpoint', verbose_name='关联风险点'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='checktaskset',
|
||||||
|
name='update_by',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='checktaskset_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='checktaskset',
|
||||||
|
name='user_duty',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='指派人'),
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='CheckItem',
|
||||||
|
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='删除标记')),
|
||||||
|
('result', models.PositiveSmallIntegerField(default=10, verbose_name='检查结果')),
|
||||||
|
('note', models.TextField(blank=True, null=True, verbose_name='备注')),
|
||||||
|
('checkwork', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='citem_checkwork', to='dpm.checkwork', verbose_name='关联检查工作')),
|
||||||
|
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='checkitem_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||||
|
('hazard', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='citem_hazard', to='dpm.hazard', verbose_name='关联隐患')),
|
||||||
|
('risk', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='citem_risk', to='dpm.risk', verbose_name='关联风险')),
|
||||||
|
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='checkitem_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,65 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2023-03-09 05:09
|
|
||||||
|
|
||||||
from django.conf import settings
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
initial = True
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('dpm', '0001_initial'),
|
|
||||||
('system', '0002_myschedule'),
|
|
||||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
||||||
('django_celery_beat', '0016_alter_crontabschedule_timezone'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='checktaskset',
|
|
||||||
name='myschedule',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='system.myschedule', verbose_name='周期'),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='checktaskset',
|
|
||||||
name='periodictask',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='checktask_periodictask', to='django_celery_beat.periodictask', verbose_name='关联定时任务'),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='checktaskset',
|
|
||||||
name='riskpoint',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='ctask_riskpoint', to='dpm.riskpoint', verbose_name='关联风险点'),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='checktaskset',
|
|
||||||
name='update_by',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='checktaskset_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人'),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='checktaskset',
|
|
||||||
name='user_duty',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='指派人'),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='checkitem',
|
|
||||||
name='checkwork',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='citem_checkwork', to='dpm.checkwork', verbose_name='关联检查工作'),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='checkitem',
|
|
||||||
name='create_by',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='checkitem_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人'),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='checkitem',
|
|
||||||
name='risk',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='citem_risk', to='dpm.risk', verbose_name='关联风险'),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='checkitem',
|
|
||||||
name='update_by',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='checkitem_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人'),
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -30,7 +30,7 @@ class RiskPoint(CommonBModel):
|
||||||
type = models.PositiveSmallIntegerField('风险点类型', default=10, choices=R_TYPE)
|
type = models.PositiveSmallIntegerField('风险点类型', default=10, choices=R_TYPE)
|
||||||
manage_level = models.PositiveSmallIntegerField('管控层级', default=10, choices=R_M_LEVEL)
|
manage_level = models.PositiveSmallIntegerField('管控层级', default=10, choices=R_M_LEVEL)
|
||||||
dept_res = models.ForeignKey('system.dept', on_delete=models.SET_NULL, verbose_name='责任部门', related_name='riskpoint_dept_res', null=True, blank=True)
|
dept_res = models.ForeignKey('system.dept', on_delete=models.SET_NULL, verbose_name='责任部门', related_name='riskpoint_dept_res', null=True, blank=True)
|
||||||
user_res = models.ForeignKey('system.user', on_delete=models.CASCADE, verbose_name='责任人', related_name='hazard_user_discover', null=True, blank=True)
|
user_res = models.ForeignKey('system.user', on_delete=models.CASCADE, verbose_name='责任人', related_name='riskpoint_user_res', null=True, blank=True)
|
||||||
|
|
||||||
class Risk(CommonBModel):
|
class Risk(CommonBModel):
|
||||||
"""
|
"""
|
||||||
|
@ -40,7 +40,7 @@ class Risk(CommonBModel):
|
||||||
level = models.PositiveSmallIntegerField('风险等级', default=10, choices=RiskPoint.R_LEVEL)
|
level = models.PositiveSmallIntegerField('风险等级', default=10, choices=RiskPoint.R_LEVEL)
|
||||||
standard = models.TextField('检查标准', null=True, blank=True)
|
standard = models.TextField('检查标准', null=True, blank=True)
|
||||||
hazard_factors = models.TextField('危害因素', null=True, blank=True)
|
hazard_factors = models.TextField('危害因素', null=True, blank=True)
|
||||||
results = models.ManyToManyField('system.dictionary', verbose_name='可能后果', related_name='risk_results', null=True)
|
results = models.ManyToManyField('system.dictionary', verbose_name='可能后果', related_name='risk_results', blank=True)
|
||||||
sort = models.PositiveSmallIntegerField('排序', default=1)
|
sort = models.PositiveSmallIntegerField('排序', default=1)
|
||||||
measure_tech = models.TextField('工程技术措施', null=True, blank=True)
|
measure_tech = models.TextField('工程技术措施', null=True, blank=True)
|
||||||
measure_manage = models.TextField('管理措施', null=True, blank=True)
|
measure_manage = models.TextField('管理措施', null=True, blank=True)
|
||||||
|
@ -80,12 +80,11 @@ class CheckWork(CommonBModel):
|
||||||
category = models.ForeignKey('system.dictionary', on_delete=models.CASCADE, verbose_name='工作分类', null=True, blank=True)
|
category = models.ForeignKey('system.dictionary', on_delete=models.CASCADE, verbose_name='工作分类', null=True, blank=True)
|
||||||
time_start = models.DateTimeField('开启时间')
|
time_start = models.DateTimeField('开启时间')
|
||||||
time_end = models.DateTimeField('关闭时间')
|
time_end = models.DateTimeField('关闭时间')
|
||||||
enabled = models.BooleanField('是否可用', default=True)
|
|
||||||
user_duty = models.ForeignKey('system.user', verbose_name='指派人', on_delete=models.SET_NULL, null=True, blank=True)
|
user_duty = models.ForeignKey('system.user', verbose_name='指派人', on_delete=models.SET_NULL, null=True, blank=True)
|
||||||
riskpoint = models.ForeignKey(RiskPoint, verbose_name='关联风险点', related_name='cwork_riskpoint', on_delete=models.SET_NULL, null=True, blank=True)
|
riskpoint = models.ForeignKey(RiskPoint, verbose_name='关联风险点', related_name='cwork_riskpoint', on_delete=models.SET_NULL, null=True, blank=True)
|
||||||
note = models.TextField('检查备注', null=True, blank=True)
|
note = models.TextField('检查备注', null=True, blank=True)
|
||||||
time_check = models.BooleanField('最后检查时间', default=True)
|
time_check = models.DateTimeField('开始检查时间', null=True, blank=True)
|
||||||
checktaskset = models.ForeignKey(CheckTaskSet, verbose_name='关联派发任务', on_delete=models.CASCADE, null=True, blank=True)
|
checktaskset = models.ForeignKey(CheckTaskSet, verbose_name='关联派发策略', on_delete=models.CASCADE, null=True, blank=True)
|
||||||
|
|
||||||
|
|
||||||
class Hazard(CommonBModel):
|
class Hazard(CommonBModel):
|
||||||
|
@ -110,7 +109,7 @@ class Hazard(CommonBModel):
|
||||||
(30, '已结束')
|
(30, '已结束')
|
||||||
)
|
)
|
||||||
number = models.CharField('编号', max_length=20, null=True, blank=True)
|
number = models.CharField('编号', max_length=20, null=True, blank=True)
|
||||||
checkwork = models.ForeignKey(CheckWork, verbose_name='关联检查工作', null=True, blank=True)
|
checkwork = models.ForeignKey(CheckWork, on_delete=models.SET_NULL, verbose_name='关联检查工作', null=True, blank=True)
|
||||||
state = models.PositiveSmallIntegerField('隐患流程状态', default=10, choices=H_STATE)
|
state = models.PositiveSmallIntegerField('隐患流程状态', default=10, choices=H_STATE)
|
||||||
time_discover = models.DateTimeField('发现时间')
|
time_discover = models.DateTimeField('发现时间')
|
||||||
dept_res = models.ForeignKey('system.dept', on_delete=models.SET_NULL, verbose_name='责任部门', related_name='hazard_dept_res', null=True, blank=True)
|
dept_res = models.ForeignKey('system.dept', on_delete=models.SET_NULL, verbose_name='责任部门', related_name='hazard_dept_res', null=True, blank=True)
|
||||||
|
@ -123,11 +122,11 @@ class Hazard(CommonBModel):
|
||||||
description = models.TextField('隐患描述', null=True, blank=True)
|
description = models.TextField('隐患描述', null=True, blank=True)
|
||||||
reason = models.TextField('原因分析', null=True, blank=True)
|
reason = models.TextField('原因分析', null=True, blank=True)
|
||||||
correct_measure = models.TextField('整改措施', null=True, blank=True)
|
correct_measure = models.TextField('整改措施', null=True, blank=True)
|
||||||
correct_solution = models.ForeignKey('system.file', verbose_name='整改方案', null=True, blank=True)
|
correct_solution = models.ForeignKey('system.file', verbose_name='整改方案', on_delete=models.SET_NULL, null=True, blank=True)
|
||||||
correct_deadline = models.DateTimeField('整改期限', null=True, blank=True)
|
correct_deadline = models.DateTimeField('整改期限', null=True, blank=True)
|
||||||
photos = models.ManyToManyField('system.file', verbose_name='现场照片', related_name='hazard_photos', null=True)
|
photos = models.ManyToManyField('system.file', verbose_name='现场照片', related_name='hazard_photos', blank=True)
|
||||||
correct_description = models.TextField('整改描述', null=True, blank=True)
|
correct_description = models.TextField('整改描述', null=True, blank=True)
|
||||||
photos_done = models.ManyToManyField('system.file', verbose_name='整改后照片', related_name='hazard_photos_done', null=True)
|
photos_done = models.ManyToManyField('system.file', verbose_name='整改后照片', related_name='hazard_photos_done', blank=True)
|
||||||
dept_correct = models.ForeignKey('system.dept', on_delete=models.CASCADE, verbose_name='整改部门', related_name='hazard_dept_correct', null=True, blank=True)
|
dept_correct = models.ForeignKey('system.dept', on_delete=models.CASCADE, verbose_name='整改部门', related_name='hazard_dept_correct', null=True, blank=True)
|
||||||
user_correct = models.ForeignKey('system.user', on_delete=models.SET_NULL, verbose_name='整改责任人', related_name='hazard_user_correct', null=True, blank=True)
|
user_correct = models.ForeignKey('system.user', on_delete=models.SET_NULL, verbose_name='整改责任人', related_name='hazard_user_correct', null=True, blank=True)
|
||||||
correct_time = models.DateTimeField('整改完成时间', null=True, blank=True)
|
correct_time = models.DateTimeField('整改完成时间', null=True, blank=True)
|
||||||
|
@ -153,3 +152,4 @@ class CheckItem(CommonAModel):
|
||||||
risk = models.ForeignKey(Risk, verbose_name='关联风险', related_name='citem_risk', on_delete=models.SET_NULL, null=True, blank=True)
|
risk = models.ForeignKey(Risk, verbose_name='关联风险', related_name='citem_risk', on_delete=models.SET_NULL, null=True, blank=True)
|
||||||
hazard = models.ForeignKey(Hazard, verbose_name='关联隐患', related_name='citem_hazard', on_delete=models.SET_NULL, null=True, blank=True)
|
hazard = models.ForeignKey(Hazard, verbose_name='关联隐患', related_name='citem_hazard', on_delete=models.SET_NULL, null=True, blank=True)
|
||||||
result = models.PositiveSmallIntegerField('检查结果', default=10)
|
result = models.PositiveSmallIntegerField('检查结果', default=10)
|
||||||
|
note = models.TextField('备注', null=True, blank=True)
|
||||||
|
|
|
@ -15,6 +15,9 @@ class RiskPointCreateUpdateSerializer(CustomModelSerializer):
|
||||||
|
|
||||||
|
|
||||||
class RiskPointSerializer(CustomModelSerializer):
|
class RiskPointSerializer(CustomModelSerializer):
|
||||||
|
area_name = serializers.CharField(source='area.name', read_only=True)
|
||||||
|
dept_res_name = serializers.CharField(source='dept_res.name', read_only=True)
|
||||||
|
user_res_name = serializers.CharField(source='user_res.name', read_only=True)
|
||||||
class Meta:
|
class Meta:
|
||||||
model = RiskPoint
|
model = RiskPoint
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
|
@ -18,6 +18,7 @@ class RiskPointViewSet(CustomModelViewSet):
|
||||||
|
|
||||||
|
|
||||||
class RiskViewSet(CustomModelViewSet):
|
class RiskViewSet(CustomModelViewSet):
|
||||||
|
perms_map = {"get": "*", "post": "riskpoint.update", "put": "riskpoint.update", "delete": "riskpoint.update"}
|
||||||
queryset = Risk.objects.all()
|
queryset = Risk.objects.all()
|
||||||
create_serializer_class = RiskCreateUpdateSerializer
|
create_serializer_class = RiskCreateUpdateSerializer
|
||||||
update_serializer_class = RiskCreateUpdateSerializer
|
update_serializer_class = RiskCreateUpdateSerializer
|
||||||
|
|
|
@ -441,7 +441,7 @@ class MyScheduleCreateSerializer(CustomModelSerializer):
|
||||||
|
|
||||||
class MyScheduleSerializer(CustomModelSerializer):
|
class MyScheduleSerializer(CustomModelSerializer):
|
||||||
interval_ = IntervalScheduleSerializer(source='interval', read_only=True)
|
interval_ = IntervalScheduleSerializer(source='interval', read_only=True)
|
||||||
crontab = CrontabScheduleSerializer(source='crontab', read_only=True)
|
crontab_ = CrontabScheduleSerializer(source='crontab', read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = MySchedule
|
model = MySchedule
|
||||||
|
|
|
@ -3,7 +3,7 @@ from django.urls import path, include
|
||||||
from .views import ApkViewSet, FileViewSet, PTaskViewSet, PTaskResultViewSet, PostRoleViewSet, TaskList, \
|
from .views import ApkViewSet, FileViewSet, PTaskViewSet, PTaskResultViewSet, PostRoleViewSet, TaskList, \
|
||||||
UserPostViewSet, UserViewSet, DeptViewSet, \
|
UserPostViewSet, UserViewSet, DeptViewSet, \
|
||||||
PermissionViewSet, RoleViewSet, PostViewSet, \
|
PermissionViewSet, RoleViewSet, PostViewSet, \
|
||||||
DictTypeViewSet, DictViewSet, SysConfigView, SysBaseConfigView
|
DictTypeViewSet, DictViewSet, SysConfigView, SysBaseConfigView, MyScheduleViewSet
|
||||||
from rest_framework import routers
|
from rest_framework import routers
|
||||||
|
|
||||||
API_BASE_URL = 'api/system/'
|
API_BASE_URL = 'api/system/'
|
||||||
|
@ -24,6 +24,7 @@ router.register('ptask_result', PTaskResultViewSet, basename="ptask_result")
|
||||||
router.register('user_post', UserPostViewSet, basename='user_post')
|
router.register('user_post', UserPostViewSet, basename='user_post')
|
||||||
router.register('post_role', PostRoleViewSet, basename='post_role')
|
router.register('post_role', PostRoleViewSet, basename='post_role')
|
||||||
router.register('apk', ApkViewSet, basename='apk')
|
router.register('apk', ApkViewSet, basename='apk')
|
||||||
|
router.register('myschedule', MyScheduleViewSet, basename='myschedule')
|
||||||
|
|
||||||
router2 = routers.DefaultRouter()
|
router2 = routers.DefaultRouter()
|
||||||
router2.register('file', FileViewSet, basename='file')
|
router2.register('file', FileViewSet, basename='file')
|
||||||
|
|
|
@ -686,8 +686,8 @@ class ApkViewSet(MyLoggingMixin, ListModelMixin, CreateModelMixin, GenericViewSe
|
||||||
|
|
||||||
|
|
||||||
class MyScheduleViewSet(ListModelMixin, CreateModelMixin, DestroyModelMixin, CustomGenericViewSet):
|
class MyScheduleViewSet(ListModelMixin, CreateModelMixin, DestroyModelMixin, CustomGenericViewSet):
|
||||||
perms_map = {'get': '*', 'post': 'myschedule.create',
|
perms_map = {'get': '*', 'post': '*',
|
||||||
'delete': 'myschedule.delete'}
|
'delete': '*'}
|
||||||
serializer_class = MyScheduleSerializer
|
serializer_class = MyScheduleSerializer
|
||||||
create_serializer_class = MyScheduleCreateSerializer
|
create_serializer_class = MyScheduleCreateSerializer
|
||||||
queryset = MySchedule.objects.all()
|
queryset = MySchedule.objects.all()
|
||||||
|
|
|
@ -62,13 +62,19 @@ class ParentModel(models.Model):
|
||||||
def init_parent_link(self):
|
def init_parent_link(self):
|
||||||
link = []
|
link = []
|
||||||
if self.parent is not None:
|
if self.parent is not None:
|
||||||
|
if self.parent == self:
|
||||||
|
raise Exception(f'{self.__class__.__name__}-{self.id}-存在循环引用')
|
||||||
link = [self.parent.id] # 一级
|
link = [self.parent.id] # 一级
|
||||||
if self.parent.parent is not None: # 二级
|
if self.parent.parent is not None: # 二级
|
||||||
|
if self.parent.parent == self:
|
||||||
|
raise Exception(f'{self.__class__.__name__}-{self.id}-存在循环引用')
|
||||||
link.insert(0, self.parent.parent.id)
|
link.insert(0, self.parent.parent.id)
|
||||||
if self.parent.parent.parent is not None: # 三级
|
if self.parent.parent.parent is not None: # 三级
|
||||||
|
if self.parent.parent.parent == self:
|
||||||
|
raise Exception(f'{self.__class__.__name__}-{self.id}-存在循环引用')
|
||||||
link.insert(0, self.parent.parent.parent.id)
|
link.insert(0, self.parent.parent.parent.id)
|
||||||
if self.parent.parent.parent.parent is not None:
|
if self.parent.parent.parent.parent is not None:
|
||||||
raise Exception('最多支持四级')
|
raise Exception(f'{self.__class__.__name__}-{self.id}-最多支持四级')
|
||||||
return link
|
return link
|
||||||
|
|
||||||
def handle_parent(self, is_create:bool):
|
def handle_parent(self, is_create:bool):
|
||||||
|
@ -81,7 +87,7 @@ class ParentModel(models.Model):
|
||||||
处理父级关系
|
处理父级关系
|
||||||
"""
|
"""
|
||||||
self.parent_link = self.init_parent_link()
|
self.parent_link = self.init_parent_link()
|
||||||
self.__class__.objects.get_queryset(all=True).filter(parent=self.id).update(
|
self.__class__.objects.filter(parent=self.id).update(
|
||||||
parent_link = self.parent_link + [self.id]
|
parent_link = self.parent_link + [self.id]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -77,7 +77,8 @@ INSTALLED_APPS = [
|
||||||
'apps.pum',
|
'apps.pum',
|
||||||
'apps.pm',
|
'apps.pm',
|
||||||
'apps.enp',
|
'apps.enp',
|
||||||
'apps.edu'
|
'apps.edu',
|
||||||
|
'apps.dpm'
|
||||||
]
|
]
|
||||||
|
|
||||||
MIDDLEWARE = [
|
MIDDLEWARE = [
|
||||||
|
|
|
@ -67,6 +67,7 @@ urlpatterns = [
|
||||||
path('', include('apps.pm.urls')),
|
path('', include('apps.pm.urls')),
|
||||||
path('', include('apps.enp.urls')),
|
path('', include('apps.enp.urls')),
|
||||||
path('', include('apps.edu.urls')),
|
path('', include('apps.edu.urls')),
|
||||||
|
path('', include('apps.dpm.urls')),
|
||||||
|
|
||||||
# 前端页面入口
|
# 前端页面入口
|
||||||
path('', TemplateView.as_view(template_name="index.html")),
|
path('', TemplateView.as_view(template_name="index.html")),
|
||||||
|
|
Loading…
Reference in New Issue