feat: 风险管控表精简
This commit is contained in:
parent
6851dd3f94
commit
b913928ac6
|
@ -28,7 +28,6 @@ class Migration(migrations.Migration):
|
|||
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||
('note', models.TextField(blank=True, null=True, verbose_name='派发备注')),
|
||||
('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='关联定时任务')),
|
||||
|
@ -51,7 +50,6 @@ class Migration(migrations.Migration):
|
|||
('time_end', models.DateTimeField(verbose_name='关闭时间')),
|
||||
('note', models.TextField(blank=True, null=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='关联派发策略')),
|
||||
('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='创建人')),
|
||||
|
@ -73,7 +71,6 @@ class Migration(migrations.Migration):
|
|||
('type', models.PositiveSmallIntegerField(choices=[(10, '作业活动类'), (20, '设备设施类')], default=10, verbose_name='风险点类型')),
|
||||
('manage_level', models.PositiveSmallIntegerField(choices=[(10, '岗位级'), (20, '班组级'), (30, '部门级'), (40, '公司级')], default=10, verbose_name='管控层级')),
|
||||
('area', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='riskpoint_area', to='am.area', verbose_name='所在区域')),
|
||||
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='riskpoint_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='riskpoint_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||
('dept_res', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='riskpoint_dept_res', to='system.dept', verbose_name='责任部门')),
|
||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='riskpoint_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||
|
@ -104,7 +101,6 @@ class Migration(migrations.Migration):
|
|||
('riske', models.DecimalField(blank=True, decimal_places=1, max_digits=6, null=True)),
|
||||
('riskc', models.DecimalField(blank=True, decimal_places=1, max_digits=6, null=True)),
|
||||
('riskd', models.DecimalField(blank=True, decimal_places=1, max_digits=6, null=True)),
|
||||
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='risk_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='risk_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||
('results', models.ManyToManyField(blank=True, related_name='risk_results', to='system.Dictionary', verbose_name='可能后果')),
|
||||
('riskpoint', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='dpm.riskpoint', verbose_name='所属风险点')),
|
||||
|
@ -134,7 +130,6 @@ class Migration(migrations.Migration):
|
|||
('correct_description', models.TextField(blank=True, null=True, verbose_name='整改描述')),
|
||||
('correct_time', models.DateTimeField(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='隐患类别')),
|
||||
('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='整改方案')),
|
||||
|
@ -192,10 +187,8 @@ class Migration(migrations.Migration):
|
|||
('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,9 +1,9 @@
|
|||
from django.db import models
|
||||
from apps.utils.models import CommonBModel, CommonAModel
|
||||
from apps.utils.models import BaseModel, CommonAModel, CommonADModel
|
||||
from django_celery_beat.models import PeriodicTask
|
||||
|
||||
# Create your models here.
|
||||
class RiskPoint(CommonBModel):
|
||||
class RiskPoint(CommonAModel):
|
||||
"""
|
||||
风险点表
|
||||
"""
|
||||
|
@ -32,7 +32,7 @@ class RiskPoint(CommonBModel):
|
|||
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='riskpoint_user_res', null=True, blank=True)
|
||||
|
||||
class Risk(CommonBModel):
|
||||
class Risk(CommonAModel):
|
||||
"""
|
||||
风险表
|
||||
"""
|
||||
|
@ -54,7 +54,7 @@ class Risk(CommonBModel):
|
|||
riskpoint = models.ForeignKey(RiskPoint, on_delete=models.CASCADE, verbose_name='所属风险点')
|
||||
|
||||
|
||||
class CheckTaskSet(CommonBModel):
|
||||
class CheckTaskSet(CommonADModel):
|
||||
"""
|
||||
检查任务派发设置
|
||||
"""
|
||||
|
@ -66,7 +66,7 @@ class CheckTaskSet(CommonBModel):
|
|||
periodictask = models.ForeignKey(PeriodicTask, verbose_name='关联定时任务', on_delete=models.CASCADE, related_name='checktask_periodictask')
|
||||
|
||||
|
||||
class CheckWork(CommonBModel):
|
||||
class CheckWork(CommonAModel):
|
||||
"""
|
||||
检查工作
|
||||
"""
|
||||
|
@ -87,7 +87,7 @@ class CheckWork(CommonBModel):
|
|||
checktaskset = models.ForeignKey(CheckTaskSet, verbose_name='关联派发策略', on_delete=models.CASCADE, null=True, blank=True)
|
||||
|
||||
|
||||
class Hazard(CommonBModel):
|
||||
class Hazard(CommonAModel):
|
||||
"""
|
||||
事故隐患表
|
||||
"""
|
||||
|
@ -139,7 +139,7 @@ class Hazard(CommonBModel):
|
|||
ticket = models.ForeignKey('wf.ticket', on_delete=models.SET_NULL, verbose_name='关联工单', related_name='hazard_ticket', null=True, blank=True)
|
||||
|
||||
|
||||
class CheckItem(CommonAModel):
|
||||
class CheckItem(BaseModel):
|
||||
"""
|
||||
检查工作-隐患关联表
|
||||
"""
|
||||
|
|
|
@ -6,6 +6,7 @@ from apps.utils.constants import EXCLUDE_FIELDS
|
|||
from apps.system.models import Dictionary
|
||||
from django_celery_beat.models import PeriodicTask
|
||||
import time
|
||||
from django.db import transaction
|
||||
|
||||
|
||||
class RiskPointCreateUpdateSerializer(CustomModelSerializer):
|
||||
|
@ -73,32 +74,32 @@ class RiskSerializer(CustomModelSerializer):
|
|||
fields = '__all__'
|
||||
|
||||
|
||||
class CheckTaskSetCreateUpdateSerializer(CustomModelSerializer):
|
||||
class CheckTaskSetCreateSerializer(CustomModelSerializer):
|
||||
class Meta:
|
||||
model = CheckTaskSet
|
||||
exclude = EXCLUDE_FIELDS + ['periodictask']
|
||||
|
||||
def save(self, **kwargs):
|
||||
ins = super().save(**kwargs)
|
||||
if ins.periodictask:
|
||||
pobj = ins.periodictask
|
||||
pobj.name = 'checktask_' + time.strftime('%Y%m%d%H%M%S')
|
||||
pobj.task = 'apps.dpm.dispath_checkwork_task'
|
||||
pobj.kwargs = json.dumps({'checktaskset': ins.id})
|
||||
else:
|
||||
def create(self, validated_data):
|
||||
with transaction.atomic():
|
||||
sch = validated_data["myschedule"]
|
||||
pobj = PeriodicTask()
|
||||
sch = ins.myschedule
|
||||
if sch.crontab:
|
||||
pobj.crontab = sch.crontab
|
||||
elif sch.interval:
|
||||
pobj.interval = sch.interval
|
||||
pobj.save()
|
||||
ins.periodictask = pobj
|
||||
ins.save()
|
||||
return ins
|
||||
if sch.crontab:
|
||||
pobj.crontab = sch.crontab
|
||||
elif sch.interval:
|
||||
pobj.interval = sch.interval
|
||||
pobj.save()
|
||||
validated_data["periodictask"] = pobj
|
||||
return super().create(validated_data)
|
||||
|
||||
class CheckTaskSetUpdateSerializer(CustomModelSerializer):
|
||||
class Meta:
|
||||
model = CheckTaskSet
|
||||
fields = ["expire", "note"]
|
||||
|
||||
|
||||
class CheckTaskSetSerializer(CustomModelSerializer):
|
||||
user_duty_name = serializers.CharField(source="user_duty.name", read_only=True)
|
||||
myschedule_name = serializers.CharField(source="myschedule.name", read_only=True)
|
||||
enabled = serializers.BooleanField(source='periodictask.enabled', read_only=True)
|
||||
last_run_at = serializers.DateTimeField(source='periodictask.last_run_at', read_only=True)
|
||||
total_run_count = serializers.IntegerField(source='periodictask.total_run_count', read_only=True)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
from apps.dpm.views import RiskPointViewSet, RiskViewSet
|
||||
from apps.dpm.views import RiskPointViewSet, RiskViewSet, CheckTaskSetViewSet
|
||||
from django.urls import path, include
|
||||
from rest_framework.routers import DefaultRouter
|
||||
|
||||
|
@ -8,6 +8,7 @@ HTML_BASE_URL = 'dpm/'
|
|||
router = DefaultRouter()
|
||||
router.register('riskpoint', RiskPointViewSet, basename='riskpoint')
|
||||
router.register('risk', RiskViewSet, basename='risk')
|
||||
router.register('checktaskset', CheckTaskSetViewSet, basename='checktaskset')
|
||||
urlpatterns = [
|
||||
path(API_BASE_URL, include(router.urls)),
|
||||
]
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
from apps.dpm.serializers import RiskPointCreateUpdateSerializer, RiskPointSerializer, RiskCreateUpdateSerializer, RiskSerializer, CheckTaskSetCreateUpdateSerializer, CheckTaskSetSerializer, CheckWork_10_CreateUpdateSerializer, CheckWorkSerializer
|
||||
from apps.utils.viewsets import CustomModelViewSet
|
||||
from apps.dpm.serializers import RiskPointCreateUpdateSerializer, RiskPointSerializer, RiskCreateUpdateSerializer, RiskSerializer, CheckTaskSetCreateSerializer, CheckTaskSetUpdateSerializer, CheckTaskSetSerializer, CheckWork_10_CreateUpdateSerializer, CheckWorkSerializer
|
||||
from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet
|
||||
from apps.utils.mixins import CustomListModelMixin, BulkDestroyModelMixin, BulkCreateModelMixin
|
||||
from apps.dpm.models import CheckTaskSet, CheckWork, RiskPoint, Risk
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.response import Response
|
||||
|
@ -29,12 +30,12 @@ class RiskViewSet(CustomModelViewSet):
|
|||
filterset_fields = ['results']
|
||||
|
||||
|
||||
class CheckTaskSetViewSet(CustomModelViewSet):
|
||||
class CheckTaskSetViewSet(CustomListModelMixin, BulkCreateModelMixin, BulkDestroyModelMixin, CustomGenericViewSet):
|
||||
queryset = CheckTaskSet.objects.all()
|
||||
create_serializer_class = CheckTaskSetCreateUpdateSerializer
|
||||
update_serializer_class = CheckTaskSetCreateUpdateSerializer
|
||||
create_serializer_class = CheckTaskSetCreateSerializer
|
||||
update_serializer_class = CheckTaskSetUpdateSerializer
|
||||
serializer_class = CheckTaskSetSerializer
|
||||
select_related_fields = ['periodictask']
|
||||
select_related_fields = ['periodictask', "myschedule", "user_duty"]
|
||||
search_fields = ['note']
|
||||
filterset_fields = ['periodictask__enabled']
|
||||
|
||||
|
@ -54,8 +55,7 @@ class CheckTaskSetViewSet(CustomModelViewSet):
|
|||
with transaction.atomic():
|
||||
periodictask = instance.periodictask
|
||||
instance.delete()
|
||||
periodictask.enabled = False
|
||||
periodictask.save()
|
||||
periodictask.delete()
|
||||
|
||||
|
||||
class CheckWorkViewSet(CustomModelViewSet):
|
||||
|
|
Loading…
Reference in New Issue