feat: 正式添加dpm模块

This commit is contained in:
caoqianming 2024-06-06 14:50:14 +08:00
parent d40389df76
commit d36de5bc00
4 changed files with 53 additions and 103 deletions

View File

@ -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.db import migrations, models
@ -12,27 +12,13 @@ class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('wf', '0001_initial'),
('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 = [
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(
name='CheckTaskSet',
fields=[
@ -44,6 +30,8 @@ class Migration(migrations.Migration):
('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='所属部门')),
('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={
'abstract': False,
@ -61,12 +49,11 @@ class Migration(migrations.Migration):
('type', models.PositiveSmallIntegerField(choices=[(10, '手动'), (20, '派发')], default=10, verbose_name='任务类型')),
('time_start', 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='检查备注')),
('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='所属部门')),
('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='创建人')),
],
options={
@ -106,7 +93,7 @@ class Migration(migrations.Migration):
('name', models.TextField(verbose_name='项目/步骤')),
('level', models.PositiveSmallIntegerField(choices=[(10, '低风险'), (20, '一般风险'), (30, '较大风险'), (40, '重大风险')], default=10, 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='排序')),
('measure_tech', 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_description', models.TextField(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='所在区域')),
('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='隐患类别')),
('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='关联检查工作')),
('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='创建人')),
@ -162,9 +145,6 @@ class Migration(migrations.Migration):
('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='关联工单')),
('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_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',
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,
},
),
]

View File

@ -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='最后编辑人'),
),
]

View File

@ -30,7 +30,7 @@ class RiskPoint(CommonBModel):
type = models.PositiveSmallIntegerField('风险点类型', default=10, choices=R_TYPE)
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)
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):
"""
@ -40,7 +40,7 @@ class Risk(CommonBModel):
level = models.PositiveSmallIntegerField('风险等级', default=10, choices=RiskPoint.R_LEVEL)
standard = 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)
measure_tech = 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)
time_start = 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)
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)
time_check = models.BooleanField('最后检查时间', default=True)
checktaskset = models.ForeignKey(CheckTaskSet, verbose_name='关联派发任务', on_delete=models.CASCADE, null=True, blank=True)
time_check = models.DateTimeField('开始检查时间', null=True, blank=True)
checktaskset = models.ForeignKey(CheckTaskSet, verbose_name='关联派发策略', on_delete=models.CASCADE, null=True, blank=True)
class Hazard(CommonBModel):
@ -110,7 +109,7 @@ class Hazard(CommonBModel):
(30, '已结束')
)
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)
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)
@ -123,11 +122,11 @@ class Hazard(CommonBModel):
description = models.TextField('隐患描述', null=True, blank=True)
reason = 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)
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)
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)
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)
@ -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)
hazard = models.ForeignKey(Hazard, verbose_name='关联隐患', related_name='citem_hazard', on_delete=models.SET_NULL, null=True, blank=True)
result = models.PositiveSmallIntegerField('检查结果', default=10)
note = models.TextField('备注', null=True, blank=True)

View File

@ -18,6 +18,7 @@ class RiskPointViewSet(CustomModelViewSet):
class RiskViewSet(CustomModelViewSet):
perms_map = {"get": "*", "post": "riskpoint.update", "put": "riskpoint.update", "delete": "riskpoint.update"}
queryset = Risk.objects.all()
create_serializer_class = RiskCreateUpdateSerializer
update_serializer_class = RiskCreateUpdateSerializer