893 lines
49 KiB
Python
893 lines
49 KiB
Python
from django.db import models
|
||
import uuid
|
||
import django.utils.timezone as timezone
|
||
from django.contrib.postgres.fields import JSONField,ArrayField
|
||
import jwt
|
||
import datetime
|
||
# Create your models here.
|
||
|
||
class Partment(models.Model):
|
||
partid = models.AutoField(primary_key=True)
|
||
partname = models.CharField(max_length=30,default='生产部')
|
||
parentid = models.ForeignKey('self',blank=True,null=True,on_delete=models.CASCADE)
|
||
partlink = models.CharField(max_length=200,blank=True)#关系
|
||
deletemark=models.IntegerField(default='1')
|
||
creattime = models.DateTimeField(default = timezone.now)
|
||
iscompany = models.IntegerField(default=0)#是否是公司
|
||
aqy = models.CharField(max_length=1000,default=',')#安全员
|
||
bmzg = models.CharField(max_length=1000,default=',')#主管
|
||
bsq = models.CharField(max_length=1000,default=',')#授权者
|
||
position = JSONField('坐标',null=True,blank=True)
|
||
def __str__(self):
|
||
return self.partname
|
||
|
||
class Map(models.Model):
|
||
id = models.AutoField(primary_key=True)
|
||
name = models.CharField(max_length=50)
|
||
pic = models.CharField(max_length=1000,blank=True)
|
||
parent = models.ForeignKey('self',blank=True,null=True,on_delete=models.CASCADE)
|
||
link = models.CharField(max_length=200,blank=True)
|
||
usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE)
|
||
default = models.IntegerField(default=0)
|
||
deletemark = models.IntegerField(default='1')
|
||
|
||
class Area(models.Model):
|
||
id = models.AutoField(primary_key=True)
|
||
name = models.CharField(max_length=50)
|
||
polygon = JSONField(null=True,blank=True)#坐标集
|
||
order = models.IntegerField(default=0)#排序
|
||
parent = models.ForeignKey('self',blank=True,null=True,on_delete=models.CASCADE)
|
||
link = models.CharField(max_length=200,blank=True)
|
||
belongmap = models.ForeignKey(Map, on_delete=models.CASCADE,related_name='belongmap',null=True,blank=True)
|
||
containmap = models.ForeignKey(Map, on_delete=models.CASCADE, related_name='containmap',null=True,blank=True)
|
||
deletemark = models.IntegerField(default='1')
|
||
usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE)
|
||
risklevel = models.CharField(max_length=50,null=True,blank=True)#风险等级
|
||
qrcode = models.CharField(max_length=200,blank=True,null=True)#区域二维码
|
||
|
||
class User(models.Model):
|
||
userid = models.AutoField(primary_key=True)
|
||
empid = models.CharField(max_length=20,blank=True,null=True)#工号
|
||
username = models.CharField(max_length=30,unique=True)#账号
|
||
name = models.CharField(max_length=20)
|
||
password = models.CharField(max_length=30)
|
||
ubelongpart = models.ForeignKey(Partment,related_name='upart', on_delete=models.CASCADE)
|
||
openid=models.CharField(max_length=200,null=True,blank=True)#公众号openid
|
||
nickname=models.CharField(max_length=200,null=True,blank=True)#昵称
|
||
headimgurl=models.CharField(max_length=200,null=True,blank=True)#头像
|
||
issuper=models.IntegerField(default='0')#超管
|
||
deletemark=models.IntegerField(default='1')
|
||
mpopenid=models.CharField(max_length=200,null=True,blank=True) #小程序openid
|
||
usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True)#所属公司
|
||
def __str__(self):
|
||
return self.username
|
||
@property
|
||
def token(self):
|
||
return self.generate_jwt_token()
|
||
|
||
def generate_jwt_token(self):
|
||
token = jwt.encode({
|
||
'exp': datetime.datetime.utcnow() + datetime.timedelta(days=1),
|
||
'iat': datetime.datetime.utcnow(),
|
||
'data': {
|
||
'userid': self.userid
|
||
}
|
||
}, 'safeyun', algorithm='HS256')
|
||
|
||
return token.decode('utf-8')
|
||
|
||
class Userprofile(models.Model):
|
||
id = models.AutoField(primary_key=True)
|
||
user = models.OneToOneField(User,null=True,blank=True,on_delete=models.CASCADE)
|
||
realname = models.CharField(max_length=50)#真实姓名
|
||
gender = models.CharField(max_length=50)#性别
|
||
cardnum = models.CharField(max_length=50)#身份证号
|
||
|
||
class Dicclass(models.Model):
|
||
dicid= models.AutoField(primary_key=True)
|
||
dicname = models.CharField(max_length=30)#字典分类名
|
||
parentid = models.ForeignKey('self',blank=True,null=True, on_delete=models.CASCADE)
|
||
def __str__(self):
|
||
return self.dicname
|
||
|
||
class Dickey(models.Model):#字典
|
||
dickeyid= models.AutoField(primary_key=True)
|
||
dickeyname = models.CharField(max_length=200)
|
||
dicparent = models.ForeignKey(Dicclass, on_delete=models.CASCADE)
|
||
parent = models.ForeignKey('self',blank=True,null=True, on_delete=models.CASCADE)
|
||
usecomps = models.CharField(max_length=200,default=',1,')#所用公司
|
||
nousecomps = models.CharField(max_length=200,default='')#不用公司
|
||
detail = models.CharField(max_length=1000,default='')
|
||
deletemark=models.IntegerField(default='1')
|
||
creattime = models.DateTimeField(default = timezone.now)
|
||
modifytime = models.DateTimeField(auto_now = True)
|
||
def __str__(self):
|
||
return self.dickeyname
|
||
|
||
class Trouble(models.Model):#隐患排查
|
||
ZT_CHOICES = (
|
||
(7,'措施/方案待提交'),
|
||
(5, '待复查'),
|
||
(1, '待评估'),
|
||
(3, '待整改'),
|
||
(6, '已归档'),
|
||
(2,'措施/方案待确认'),
|
||
(4,'待审核'),
|
||
(0,'待新增'),
|
||
)
|
||
SH_CHOICES = (
|
||
(1,'通过'),
|
||
(2, '审核未通过'),
|
||
(3, '复查未通过'),
|
||
(4, '已修改'),
|
||
(5,'评估未通过'),
|
||
(6,'未采纳'),
|
||
)
|
||
deletemark=models.IntegerField(default='1')
|
||
troubleid = models.AutoField(primary_key=True)
|
||
yhnum=models.CharField(max_length=100,null=True,blank=True)#编号
|
||
fxsj = models.DateTimeField(default = timezone.now)#发现时间
|
||
fxbm = models.ForeignKey(Partment,related_name='fxbm',on_delete=models.CASCADE,null=True,blank=True)
|
||
fxr = models.ForeignKey(User,related_name='fxr', on_delete=models.CASCADE,null=True,blank=True)
|
||
jclx = models.ForeignKey(Dickey,related_name='jclx', on_delete=models.CASCADE,null=True,blank=True)
|
||
yhdd = models.CharField(max_length=200,default='test')
|
||
yhdj = models.ForeignKey(Dickey,related_name='yhdj',on_delete=models.CASCADE,null=True,blank=True)
|
||
yhlx = models.ForeignKey(Dicclass,related_name='yhlx', on_delete=models.CASCADE,null=True,blank=True)
|
||
yhlb = models.ForeignKey(Dickey,related_name='yhlb',on_delete=models.CASCADE,null=True,blank=True)
|
||
yhpg = models.ForeignKey(Dickey,related_name='yhpg',on_delete=models.CASCADE,null=True,blank=True)
|
||
yhms = models.TextField(blank=True)
|
||
zgms = models.TextField(blank=True)
|
||
yyfx = models.TextField(blank=True)
|
||
zgcs = models.TextField(blank=True)
|
||
yhtp = models.CharField(max_length=1000,blank=True)
|
||
zghtp = models.CharField(max_length=1000,blank=True)
|
||
yhzt = models.IntegerField(choices = ZT_CHOICES,null=True,blank=True)
|
||
tbsj = models.DateTimeField(default = timezone.now)
|
||
zgbm = models.ForeignKey(Partment,related_name='zgbm',null=True,blank=True, on_delete=models.CASCADE)
|
||
zgr = models.ForeignKey(User,related_name='zgr',null=True,blank=True, on_delete=models.CASCADE)
|
||
xzr = models.CharField(max_length=200,default='')#协助人
|
||
zgqx = models.DateTimeField(null=True,blank=True)
|
||
zgsj = models.DateTimeField(null=True,blank=True)
|
||
pgsh=models.ManyToManyField(User,related_name='pgsh', through='TroubleAccess')#评估审核
|
||
material = models.CharField(max_length=1000,null=True,blank=True)
|
||
todouser = models.ForeignKey(User,related_name='todor',null=True,blank=True,on_delete=models.CASCADE)
|
||
usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True)
|
||
xgsj = models.DateTimeField(auto_now = True)
|
||
sybzt =models.IntegerField(choices = ZT_CHOICES,null=True,blank=True)
|
||
shresult = models.IntegerField(choices = SH_CHOICES,null=True,blank=True)
|
||
pgr = models.ForeignKey(User,related_name='pgr', on_delete=models.CASCADE,null=True,blank=True)#评估人
|
||
zpr = models.ForeignKey(User,related_name='zpr', on_delete=models.CASCADE,null=True,blank=True)#指派人
|
||
csqrr = models.ForeignKey(User,related_name='csqrr', on_delete=models.CASCADE,null=True,blank=True)#措施确认人
|
||
fcr = models.ForeignKey(User,related_name='fcr', on_delete=models.CASCADE,null=True,blank=True)#复查人
|
||
shr = models.ForeignKey(User,related_name='shr', on_delete=models.CASCADE,null=True,blank=True)#审核人
|
||
fcyj = models.TextField(null=True,blank=True)#复查意见
|
||
shyj= models.TextField(null=True,blank=True)#审核意见
|
||
pgyj= models.TextField(null=True,blank=True)#评估退回意见
|
||
yhqy = models.ForeignKey(Area,on_delete=models.CASCADE,null=True,blank=True)#隐患区域
|
||
|
||
|
||
class TroubleAccess(models.Model):#隐患流程表
|
||
troubleid = models.ForeignKey(Trouble, on_delete=models.CASCADE)
|
||
clr = models.ForeignKey(User, on_delete=models.CASCADE)
|
||
action = models.CharField(max_length=100,null=True,blank=True)
|
||
opinion = models.CharField(max_length=500)
|
||
result = models.IntegerField(null=True,blank=True)
|
||
yhzt =models.IntegerField(default='1')
|
||
accesssj = models.DateTimeField(default = timezone.now)
|
||
|
||
|
||
class Drill(models.Model):#应急演练
|
||
drillid= models.AutoField(primary_key=True)
|
||
drillnum= models.CharField(max_length=100,default='1')
|
||
drillname = models.CharField(max_length=100)
|
||
drillplace=models.CharField(max_length=200)
|
||
starttime=models.DateTimeField(default = timezone.now)
|
||
participant=models.ManyToManyField(User,related_name='ylcjr',through='Drilluser')
|
||
submituser=models.ForeignKey(User,related_name='yltbr',default='1', on_delete=models.CASCADE)
|
||
submittime = models.DateTimeField(default = timezone.now)
|
||
modifytime = models.DateTimeField(auto_now = True)
|
||
usecomp = models.ForeignKey(Partment,default='1', on_delete=models.CASCADE)
|
||
drilllevel=models.ForeignKey(Dicclass,related_name='yljb',default='1', on_delete=models.CASCADE)
|
||
drilltype=models.ForeignKey(Dickey,related_name='yllx',default='1', on_delete=models.CASCADE)
|
||
drillpart=models.ManyToManyField(Partment,related_name='ylbm',default='1')
|
||
drillcontent=models.ForeignKey(Dickey,related_name='ylnr',default='1', on_delete=models.CASCADE)
|
||
detailcontent=models.CharField(max_length=1000,null=True,blank=True)
|
||
commander=models.CharField(max_length=200,null=True,blank=True)
|
||
chief=models.ForeignKey(User, on_delete=models.CASCADE,null=True,blank=True)
|
||
otherparticipant=models.CharField(max_length=1000,null=True,blank=True)
|
||
deletemark=models.IntegerField(default='1')
|
||
state=models.IntegerField(default='0')#默认未评估
|
||
participantnum=models.IntegerField(default='1',null=True,blank=True)
|
||
knownum=models.IntegerField(default='1',null=True,blank=True)
|
||
plan = models.CharField(max_length=1000,null=True,blank=True)
|
||
material = models.CharField(max_length=1000,null=True,blank=True)
|
||
|
||
class Drilluser(models.Model):#演练参加人表
|
||
drillid = models.ForeignKey(Drill, on_delete=models.CASCADE)
|
||
participant = models.ForeignKey(User, on_delete=models.CASCADE)
|
||
score = models.IntegerField(null=True,blank=True)
|
||
|
||
class Observe(models.Model):#行为观察
|
||
lookid = models.AutoField(primary_key=True)
|
||
looknum = models.CharField(max_length=100,default='1')
|
||
actname = models.CharField(max_length=100) #作业名称
|
||
lookplace = models.CharField(max_length=200)
|
||
looktime = models.DateTimeField(default = timezone.now)
|
||
looktime2 = models.DateTimeField(null=True,blank=True)
|
||
lookers = models.ManyToManyField(User,related_name='gcrs')#陪同人员
|
||
lookpart = models.ForeignKey(Partment,related_name='gcbm',on_delete=models.CASCADE) #观察部门
|
||
looker = models.ForeignKey(User,related_name='gcr',default='1', on_delete=models.CASCADE)#观察人
|
||
lookeder = models.CharField(max_length=100,null=True,blank=True)#被观察对象
|
||
submittime = models.DateTimeField(default = timezone.now)
|
||
modifytime = models.DateTimeField(auto_now = True)
|
||
usecomp = models.ForeignKey(Partment,default='1', on_delete=models.CASCADE)
|
||
otherunsafe = models.CharField(max_length=1000,null=True,blank=True)
|
||
makeresult = models.CharField(max_length=1000,null=True,blank=True) #整改情况
|
||
safecontent = models.CharField(max_length=1000,null=True,blank=True)
|
||
deletemark = models.IntegerField(default='1')
|
||
lookimg = models.CharField(max_length=1000,null=True,blank=True)
|
||
unsafe = models.ManyToManyField(Dickey,related_name='baqxw',through='Unsafes')
|
||
record1 = models.TextField(null=True,blank=True) #交流情况
|
||
record2 = models.TextField(null=True,blank=True) #共识和改进
|
||
reads = models.ManyToManyField(User,related_name='observetouser',through='Observeto')
|
||
|
||
|
||
class Unsafes(models.Model):#行为观察不安全记录
|
||
observe = models.ForeignKey(Observe, on_delete=models.CASCADE)
|
||
unsafedickey = models.ForeignKey(Dickey,related_name='unsafedickey', on_delete=models.CASCADE)
|
||
unsafedicclass = models.ForeignKey(Dicclass,related_name='unsafedicclass', on_delete=models.CASCADE)
|
||
|
||
class Observeto(models.Model):#行为观察阅读记录
|
||
id = models.AutoField(primary_key=True)
|
||
observe = models.ForeignKey(Observe, on_delete=models.CASCADE)
|
||
user = models.ForeignKey(User,on_delete=models.CASCADE)
|
||
read = models.IntegerField(default=0)
|
||
submittime = models.DateTimeField(default = timezone.now)
|
||
|
||
class Miss(models.Model):#未遂事件
|
||
missid = models.AutoField(primary_key=True)
|
||
missnum = models.CharField(max_length=100,default='1')
|
||
missqy = models.ForeignKey(Area,on_delete=models.CASCADE,null=True,blank=True)
|
||
missplace = models.CharField(max_length=200)
|
||
misstime = models.DateTimeField(default = timezone.now)
|
||
misspart = models.ForeignKey(Partment,related_name='fsbm',on_delete=models.CASCADE) #发生部门
|
||
misser = models.ForeignKey(User,related_name='fsr',default='1', on_delete=models.CASCADE)#当事人
|
||
description = models.CharField(max_length=1000,null=True,blank=True)
|
||
submittime = models.DateTimeField(default = timezone.now)
|
||
modifytime = models.DateTimeField(auto_now = True)
|
||
usecomp = models.ForeignKey(Partment,default='1', on_delete=models.CASCADE)
|
||
deletemark = models.IntegerField(default='1')
|
||
missimg = models.CharField(max_length=1000,null=True,blank=True)
|
||
prevent = models.CharField(max_length=1000,null=True,blank=True) #防范措施
|
||
lesson = models.CharField(max_length=1000,null=True,blank=True) #经验教训
|
||
reads = models.ManyToManyField(User,related_name='misstouser',through='Missto')
|
||
|
||
class Missto(models.Model):#未遂事件阅读表
|
||
id = models.AutoField(primary_key=True)
|
||
miss = models.ForeignKey(Miss, on_delete=models.CASCADE)
|
||
user = models.ForeignKey(User,on_delete=models.CASCADE)
|
||
read = models.IntegerField(default=0)
|
||
submittime = models.DateTimeField(default = timezone.now)
|
||
|
||
|
||
class Group(models.Model):#用户组,岗位
|
||
type_choices = (
|
||
(1,'安全员'),
|
||
(2, '部门主管'),
|
||
(3, '全体用户'),
|
||
(4, '客户自定义'),
|
||
(0, '超管')
|
||
)
|
||
groupid = models.AutoField(primary_key=True)
|
||
groupname = models.CharField(max_length=30,blank=True,null=True)
|
||
grouptype = models.IntegerField(default=4)
|
||
users = models.ManyToManyField(User,related_name='userg')
|
||
users2 = models.ManyToManyField(User,related_name='userg2',through='Groupuser2')
|
||
usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE,related_name='usecompg',default=1)
|
||
menulink = models.CharField(max_length=200,default='11')
|
||
|
||
class Groupuser2(models.Model): #比较好的方式
|
||
group = models.ForeignKey(Group, on_delete=models.CASCADE)
|
||
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
||
part = models.ForeignKey(Partment, on_delete=models.CASCADE,null=True,blank=True)
|
||
|
||
class Menu(models.Model):#菜单
|
||
menuid = models.AutoField(primary_key=True)
|
||
menuname = models.CharField(max_length=30,blank=True,null=True)
|
||
menucode = models.CharField(max_length=30,blank=True,null=True)
|
||
url = models.CharField(max_length=30,blank=True,null=True)
|
||
detail = models.CharField(max_length=100,blank=True,null=True)
|
||
parentid = models.ForeignKey('self',blank=True,null=True,on_delete=models.CASCADE)
|
||
icon = models.CharField(max_length=100,default='')
|
||
sortnum = models.IntegerField(default='1')
|
||
deletemark=models.IntegerField(default='1')
|
||
|
||
class Yjyc(models.Model):#预警预测表
|
||
yjycid = models.AutoField(primary_key=True)
|
||
buildtime = models.DateTimeField(default = timezone.now)
|
||
modifytime = models.DateTimeField(auto_now = True)
|
||
year = models.IntegerField(default=1,null=True,blank=True)
|
||
month = models.IntegerField(default=1,null=True,blank=True)
|
||
week = models.IntegerField(default=0,null=True,blank=True)
|
||
yjz = models.FloatField(default=0)
|
||
ycz = models.FloatField(default=0)
|
||
b = models.FloatField(default=0)
|
||
troublevalue = models.FloatField(default=0)
|
||
trainvalue = models.FloatField(default=0)
|
||
drillvalue = models.FloatField(default=0)
|
||
observevalue = models.FloatField(default=0)
|
||
missvalue = models.FloatField(default=0)
|
||
usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True)
|
||
|
||
|
||
class Yjsetup(models.Model):#预警预测设置表
|
||
yjsetupid = models.AutoField(primary_key=True)
|
||
usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True)
|
||
modifytime = models.DateTimeField(auto_now = True)
|
||
monthyhavg = models.IntegerField(default='100',null=True,blank=True)
|
||
safev = models.IntegerField(default='10',null=True,blank=True)
|
||
warnv = models.IntegerField(default='15',null=True,blank=True)
|
||
alertv = models.IntegerField(default='20',null=True,blank=True)
|
||
maxv = models.IntegerField(default='50',null=True,blank=True)
|
||
yhpgqz = models.IntegerField(default='4',null=True,blank=True)
|
||
yhdjqz = models.IntegerField(default='4',null=True,blank=True)
|
||
yhsblqz = models.IntegerField(default='1',null=True,blank=True)
|
||
yhzglqz = models.IntegerField(default='4',null=True,blank=True)
|
||
pxdjqz = models.IntegerField(default='3',null=True,blank=True)
|
||
pxxgqz = models.IntegerField(default='4',null=True,blank=True)
|
||
yldjqz = models.IntegerField(default='3',null=True,blank=True)
|
||
ylxgqz = models.IntegerField(default='3',null=True,blank=True)
|
||
|
||
|
||
class Socertificate(models.Model):#特种作业证书
|
||
type_choices = (
|
||
(1,'正常'),
|
||
(2, '待复查'),
|
||
(3, '超期'),
|
||
)
|
||
id = models.AutoField(primary_key=True)
|
||
user = models.ForeignKey(User,on_delete=models.CASCADE,null=True,blank=True)
|
||
usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True)
|
||
realname = models.CharField(max_length=50)
|
||
gender = models.CharField(max_length=50)
|
||
cardnum = models.CharField(max_length=50)
|
||
zylb = models.CharField(max_length=50)
|
||
czxm = models.CharField(max_length=50)
|
||
fzjg = models.CharField(max_length=100)
|
||
ccfzrq = models.DateField(null=True,blank=True)
|
||
yfsrq = models.DateField(null=True,blank=True)
|
||
yxqkssj = models.DateField(null=True,blank=True)
|
||
yxqjssj = models.DateField(null=True,blank=True)
|
||
sjfssj = models.DateField(null=True,blank=True)
|
||
zszt = models.IntegerField(choices = type_choices,null=True,blank=True)
|
||
url = models.CharField(max_length=200,null=True,blank=True)
|
||
|
||
class Safecert(models.Model):#安全资格证书
|
||
type_choices = (
|
||
(1,'正常'),
|
||
(2, '待复查'),
|
||
(3, '超期'),
|
||
)
|
||
id = models.AutoField(primary_key=True)
|
||
user = models.ForeignKey(User,on_delete=models.CASCADE,null=True,blank=True)
|
||
usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True)
|
||
realname = models.CharField(max_length=50)
|
||
gender = models.CharField(max_length=50)
|
||
cardnum = models.CharField(max_length=50)
|
||
zglx = models.CharField(max_length=50) #资格类型
|
||
dwlx = models.CharField(max_length=50)
|
||
fzjg = models.CharField(max_length=100)
|
||
yfsrq = models.DateField(null=True,blank=True)
|
||
yxqkssj = models.DateField(null=True,blank=True)
|
||
yxqjssj = models.DateField(null=True,blank=True)
|
||
zszt = models.IntegerField(choices = type_choices,null=True,blank=True)
|
||
url = models.CharField(max_length=1000,null=True,blank=True)
|
||
|
||
class Suggest(models.Model):#合理化建议
|
||
ZT_CHOICES = (
|
||
(1, '待评估'),
|
||
(2, '待处理'),
|
||
(3, '待确认'),
|
||
(4, '已归档'),
|
||
)
|
||
jyid = models.AutoField(primary_key=True)
|
||
jynum = models.CharField(max_length=100,default='1')
|
||
jylb = models.ForeignKey(Dickey,related_name='jylb',on_delete=models.CASCADE)
|
||
jyrq = models.DateField(default = timezone.now)
|
||
jybm = models.ForeignKey(Partment,related_name='jybm',on_delete=models.CASCADE) #建议部门
|
||
jyr = models.ForeignKey(User,related_name='jyr',on_delete=models.CASCADE)#建议人
|
||
jyimg = models.CharField(max_length=1000,null=True,blank=True)
|
||
submittime = models.DateTimeField(default = timezone.now)
|
||
modifytime = models.DateTimeField(auto_now = True)
|
||
usecomp = models.ForeignKey(Partment,default='1', on_delete=models.CASCADE)
|
||
dqxz = models.CharField(max_length=1000,null=True,blank=True) #当前现状
|
||
jynr = models.CharField(max_length=1000,null=True,blank=True) #建议内容
|
||
qwxg = models.CharField(max_length=1000,null=True,blank=True) #期望效果
|
||
jyfk = models.CharField(max_length=1000,null=True,blank=True) #建议反馈
|
||
clcs = models.CharField(max_length=1000,null=True,blank=True) #处理措施
|
||
clms = models.CharField(max_length=1000,null=True,blank=True) #处理描述
|
||
jyimg2 = JSONField()
|
||
jyzt = models.IntegerField(choices = ZT_CHOICES,null=True,blank=True)
|
||
todouser = models.ForeignKey(User,related_name='stodouser',on_delete=models.CASCADE,null=True,blank=True)#下一步处理人
|
||
pgr = models.ForeignKey(User,related_name='spgr',on_delete=models.CASCADE,null=True,blank=True)
|
||
clr = models.ForeignKey(User,related_name='sclr',on_delete=models.CASCADE,null=True,blank=True)
|
||
flow = models.ManyToManyField(User,related_name='jyflow',through='Suggestflow')
|
||
jyqy = models.ForeignKey(Area,on_delete=models.CASCADE,null=True,blank=True)
|
||
jydd = models.CharField(max_length=200,null=True,blank=True)
|
||
yjwcsj = models.DateTimeField(null=True,blank=True) #预计完成时间
|
||
sjwcsj = models.DateTimeField(null=True,blank=True) #实际完成时间
|
||
shyj = models.CharField(max_length=1000,null=True,blank=True) #审核意见
|
||
accept = models.IntegerField(default=1)
|
||
|
||
class Suggestflow(models.Model):#建议流程
|
||
id = models.AutoField(primary_key=True)
|
||
suggest = models.ForeignKey(Suggest, on_delete=models.CASCADE)
|
||
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
||
action = models.CharField(max_length=100,null=True,blank=True)
|
||
opinion = models.CharField(max_length=500)
|
||
result = models.IntegerField(default=1)
|
||
submittime = models.DateTimeField(default = timezone.now)
|
||
|
||
class Notice(models.Model):#通知通告
|
||
id = models.AutoField(primary_key=True)
|
||
title = models.CharField(u'标题',max_length=100)
|
||
pubpart = models.ForeignKey(Partment,related_name='fbbm',on_delete=models.CASCADE)#发布部门
|
||
pubuser = models.ForeignKey(User,related_name='fbz',on_delete=models.CASCADE)#发布人
|
||
content = models.TextField(u'详情')
|
||
submittime = models.DateTimeField(u'创建时间',default = timezone.now)
|
||
modifytime = models.DateTimeField(u'更新时间',default = timezone.now)
|
||
tousers = models.ManyToManyField(User,related_name='tzry', through='Noticeto')
|
||
material = models.CharField(max_length=1000,null=True,blank=True)
|
||
deletemark = models.IntegerField(default='1')
|
||
reads = models.IntegerField(default='0')
|
||
isgg = models.IntegerField(default='1')
|
||
usecomps = models.CharField(max_length=1000,null=True,blank=True)#使用公司
|
||
# def __str__(self):
|
||
# return self.title
|
||
# class Meta:
|
||
# verbose_name = '资讯动态'
|
||
# verbose_name_plural = '资讯动态'
|
||
class Noticeto(models.Model):#通知阅读表
|
||
noticeid = models.ForeignKey(Notice, on_delete=models.CASCADE)
|
||
receiver = models.ForeignKey(User, on_delete=models.CASCADE)#接收人
|
||
comment = models.CharField(max_length=500)
|
||
read =models.IntegerField(default='0')
|
||
|
||
class Operation(models.Model):#作业表
|
||
zyid = models.AutoField(primary_key=True)
|
||
zylx = models.ForeignKey(Dickey, on_delete=models.CASCADE,null=True,blank=True)
|
||
zynum = models.CharField(max_length=100)
|
||
zyqy = models.ForeignKey(Area,on_delete=models.CASCADE,null=True,blank=True)
|
||
zydd = models.CharField(max_length=100,null=True,blank=True)
|
||
zybm = models.ForeignKey(Partment,related_name='zybm',on_delete=models.CASCADE,null=True,blank=True)#作业部门
|
||
sdbm = models.ForeignKey(Partment,related_name='sdbm',on_delete=models.CASCADE,null=True,blank=True)#属地部门
|
||
zyfzr = models.ForeignKey(User,related_name='zyfzr',on_delete=models.CASCADE,null=True,blank=True)#作业负责人
|
||
zynr = models.TextField(null=True,blank=True)
|
||
zyry = models.ManyToManyField(User,related_name='zyry', through='Operzyry')
|
||
kssj = models.DateTimeField(default = timezone.now)
|
||
jssj = models.DateTimeField(default = timezone.now)
|
||
submittime = models.DateTimeField(u'创建时间',default = timezone.now)
|
||
zyimg = models.CharField(max_length=1000,default='')
|
||
zyimg2 = models.CharField(max_length=1000,default='')
|
||
deletemark = models.IntegerField(default='1')
|
||
zyzt = JSONField()
|
||
fxcs = models.CharField(max_length=200)
|
||
todouser = models.ForeignKey(User,related_name='zyclr',on_delete=models.CASCADE,null=True,blank=True)
|
||
todousers = ArrayField(models.IntegerField(), blank=True,null=True)
|
||
usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True,default=1)
|
||
|
||
class Fxcs(models.Model):#作业分析措施
|
||
id = models.AutoField(primary_key=True)
|
||
zylx = models.ForeignKey(Dickey, on_delete=models.CASCADE,null=True,blank=True)
|
||
fxfx = models.TextField()
|
||
aqcs = models.TextField()
|
||
cslx = models.CharField(max_length=100,null=True,blank=True)
|
||
submittime = models.DateTimeField(default = timezone.now)
|
||
modifytime = models.DateTimeField(auto_now = True)
|
||
deletemark = models.IntegerField(default='1')
|
||
usecomps = models.CharField(max_length=200,default=',1,')
|
||
nousecomps = models.CharField(max_length=200,default='')
|
||
|
||
# class Opersplc(models.Model):
|
||
# id = models.AutoField(primary_key=True)
|
||
# oper= models.ForeignKey(Operation, on_delete=models.CASCADE)
|
||
# jdmc = models.CharField(max_length=100)
|
||
# spbm = models.CharField(max_length=200)
|
||
# spr = models.ForeignKey(User, on_delete=models.CASCADE)
|
||
# ison = models.IntegerField(default=0) #是否处于该状态
|
||
# modifytime = models.DateTimeField(auto_now = True)
|
||
# submittime = models.DateTimeField(default = timezone.now)
|
||
|
||
class Operspxq(models.Model):#作业审批流
|
||
id = models.AutoField(primary_key=True)
|
||
oper= models.ForeignKey(Operation, on_delete=models.CASCADE)
|
||
jdmc = models.CharField(max_length=200) #节点名称
|
||
spbm = models.ForeignKey(Partment, on_delete=models.CASCADE,null=True,blank=True)
|
||
spr = models.ForeignKey(User, on_delete=models.CASCADE)
|
||
action = models.CharField(max_length=200)
|
||
checked = models.IntegerField(default=1)#0未通过,1通过,2转交
|
||
submittime = models.DateTimeField(default = timezone.now)
|
||
|
||
class Operzyry(models.Model):#作业确认人
|
||
id = models.AutoField(primary_key=True)
|
||
oper= models.ForeignKey(Operation, on_delete=models.CASCADE)
|
||
operzyry = models.ForeignKey(User, on_delete=models.CASCADE)
|
||
checked = models.IntegerField(default=0)
|
||
modifytime = models.DateTimeField(auto_now = True)
|
||
submittime = models.DateTimeField(default = timezone.now)
|
||
|
||
class Operationspjd(models.Model):#作业审批节点配置
|
||
id = models.AutoField(primary_key=True)
|
||
zylx = models.ForeignKey(Dickey, on_delete=models.CASCADE,null=True,blank=True)
|
||
jdmc = models.CharField(max_length=100)
|
||
spbm = models.ForeignKey(Partment,related_name='spbm',on_delete=models.CASCADE,null=True,blank=True)#审批部门
|
||
spr = models.ForeignKey(User,related_name='spr',on_delete=models.CASCADE,null=True,blank=True)#审批部门
|
||
sprs = ArrayField(models.IntegerField(), blank=True,null=True)
|
||
submittime = models.DateTimeField(u'创建时间',default = timezone.now)
|
||
modifytime = models.DateTimeField(auto_now = True)
|
||
usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True)
|
||
|
||
class Questioncat(models.Model):#题目分类
|
||
id = models.AutoField(primary_key=True)
|
||
name = models.CharField(max_length=30)
|
||
parent = models.ForeignKey('self',blank=True,null=True,on_delete=models.CASCADE)
|
||
deletemark=models.IntegerField(default='1')
|
||
link = models.CharField(max_length=200,blank=True,default=',')
|
||
creattime = models.DateTimeField(default = timezone.now)
|
||
modifytime = models.DateTimeField(auto_now = True)
|
||
usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True)
|
||
#题库数据表
|
||
|
||
class Question(models.Model):#题库
|
||
id = models.AutoField(primary_key=True)
|
||
title = models.TextField()
|
||
type = models.IntegerField(default=1) #单选/多选/判断
|
||
level = models.IntegerField(default=1) #低/中/高
|
||
questioncat = models.ForeignKey(Questioncat,blank=True,null=True,on_delete=models.CASCADE)
|
||
station = models.ForeignKey(Group,blank=True,null=True,on_delete=models.CASCADE) #岗位
|
||
mark = models.CharField(max_length=1000,blank=True)
|
||
answer = JSONField()
|
||
right = JSONField()
|
||
resolution = models.TextField()
|
||
deletemark=models.IntegerField(default=1)
|
||
createuser = models.ForeignKey(User,blank=True,null=True,on_delete=models.CASCADE)
|
||
creattime = models.DateTimeField(default = timezone.now)
|
||
modifytime = models.DateTimeField(auto_now = True)
|
||
usecomps = models.CharField(max_length=200,default=',1,')
|
||
nousecomps = models.CharField(max_length=200,default='')
|
||
|
||
class ExamPaper(models.Model):#试卷表
|
||
id = models.AutoField(primary_key=True)
|
||
num = models.CharField(max_length=200,default='')#编号
|
||
name = models.CharField(max_length=200)
|
||
state = models.IntegerField(default=1) #使用中/停用
|
||
deletemark=models.IntegerField(default=1)
|
||
createtime = models.DateTimeField(default = timezone.now)
|
||
modifytime = models.DateTimeField(auto_now = True)
|
||
question = models.ManyToManyField(Question,through='ExamPaperDetail')
|
||
usecomps = models.CharField(max_length=200,default=',1,')
|
||
nousecomps = models.CharField(max_length=200,default='')
|
||
total = JSONField(null=True,blank=True) #题量
|
||
|
||
class ExamPaperDetail(models.Model):#试卷详情
|
||
id = models.AutoField(primary_key=True)
|
||
question = models.ForeignKey(Question,on_delete=models.CASCADE)
|
||
exampaper = models.ForeignKey(ExamPaper,on_delete=models.CASCADE)
|
||
score = models.IntegerField(default=0) #分数
|
||
|
||
|
||
class ExamTest(models.Model):#考试表
|
||
id = models.AutoField(primary_key=True)
|
||
num = models.CharField(max_length=200,default='')#编号
|
||
name = models.CharField(max_length=200,default='')
|
||
type = models.IntegerField(default=1) #正式考试/模拟考试/练习
|
||
state = models.IntegerField(default=1) #1进行中
|
||
exampaper = models.ForeignKey(ExamPaper,on_delete=models.CASCADE)
|
||
user = models.ManyToManyField(User,through='ExamTestDetail') #考试人员
|
||
starttime = models.DateTimeField(null=True,blank=True)#最早参加
|
||
endtime = models.DateTimeField(null=True,blank=True)#最迟参加
|
||
createtime = models.DateTimeField(default = timezone.now)
|
||
modifytime = models.DateTimeField(auto_now = True)
|
||
totalscore=models.IntegerField(default=100)
|
||
passscore=models.IntegerField(default=60)
|
||
duration = models.IntegerField(default=60) #考试时长
|
||
usecomps = models.CharField(max_length=200,default=',1,')
|
||
nousecomps = models.CharField(max_length=200,default='')
|
||
createuser = models.ForeignKey(User,blank=True,null=True,on_delete=models.CASCADE,related_name='kscjr')
|
||
qrcode = models.CharField(max_length=200,blank=True,null=True)
|
||
|
||
class ExamTestDetail(models.Model):#考试详情表
|
||
id = models.AutoField(primary_key=True)
|
||
testnum = models.IntegerField(default=0) #做卷次数
|
||
examtest = models.ForeignKey(ExamTest,on_delete=models.CASCADE,null=True,blank=True)
|
||
user = models.ForeignKey(User,on_delete=models.CASCADE)
|
||
starttime = models.DateTimeField(null=True,blank=True)
|
||
endtime = models.DateTimeField(null=True,blank=True)
|
||
took = models.IntegerField(default=0) #耗时
|
||
rights = models.IntegerField(default=1) #正确数
|
||
ison = models.IntegerField(default=0) #未参加0/已参加1/
|
||
passcode = models.IntegerField(default=0) #是否通过
|
||
testdetail = JSONField(null=True,blank=True)
|
||
score = models.FloatField(default=0)#得分
|
||
tms = models.CharField(max_length=600,default=',')
|
||
wrongs = models.CharField(max_length=600,default=',')
|
||
|
||
class Train(models.Model):#培训表
|
||
trainid= models.AutoField(primary_key=True)
|
||
trainnum= models.CharField(max_length=100,default='1')
|
||
trainname = models.CharField(max_length=100)
|
||
trainplace=models.CharField(max_length=200)
|
||
starttime=models.DateTimeField(default = timezone.now)
|
||
duration=models.FloatField(default='1')
|
||
participant=models.ManyToManyField(User,related_name='cjr', through='Trainuser')
|
||
submituser=models.ForeignKey(User,related_name='tbr',default='1', on_delete=models.CASCADE)
|
||
submittime = models.DateTimeField(default = timezone.now)
|
||
modifytime = models.DateTimeField(auto_now = True)
|
||
usecomp = models.ForeignKey(Partment,default='1', on_delete=models.CASCADE)
|
||
trainlevel=models.ForeignKey(Dicclass,related_name='pxjb',default='1', on_delete=models.CASCADE)
|
||
manlevel=models.ForeignKey(Dickey,related_name='rylx',default='1', on_delete=models.CASCADE)
|
||
traintype=models.ForeignKey(Dickey,related_name='pxlx',default='1', on_delete=models.CASCADE)
|
||
trainpart=models.ManyToManyField(Partment,related_name='pxbm',default='1')
|
||
traincontent=models.ForeignKey(Dickey,related_name='pxnr',default='1', on_delete=models.CASCADE)
|
||
detailcontent=models.CharField(max_length=1000,null=True,blank=True)
|
||
teacher=models.CharField(max_length=200,null=True,blank=True)
|
||
lecturer=models.ForeignKey(User, on_delete=models.CASCADE,null=True,blank=True)
|
||
otherparticipant=models.CharField(max_length=1000,null=True,blank=True)
|
||
deletemark=models.IntegerField(default='1')
|
||
state=models.IntegerField(default='0')
|
||
participantnum=models.IntegerField(default='1',null=True,blank=True)
|
||
knownum=models.IntegerField(default='1',null=True,blank=True)
|
||
pxxg = models.CharField(max_length=1000,null=True,blank=True)
|
||
material = models.CharField(max_length=1000,null=True,blank=True)
|
||
checkqr = models.CharField(max_length=200,blank=True,null=True)
|
||
examtest = models.ForeignKey(ExamTest,on_delete=models.CASCADE,null=True,blank=True)
|
||
|
||
class Trainuser(models.Model):#培训人员记录
|
||
train = models.ForeignKey(Train, on_delete=models.CASCADE)
|
||
participant = models.ForeignKey(User, on_delete=models.CASCADE)
|
||
examtestdetail = models.ForeignKey(ExamTestDetail, on_delete=models.CASCADE,null=True,blank=True)
|
||
checked = models.IntegerField(default=0)
|
||
qdsj = models.DateTimeField(null=True,blank=True)
|
||
isnew = models.IntegerField(default=0)
|
||
opinion = models.CharField(max_length=1000,null=True,blank=True)
|
||
|
||
class Relation(models.Model):#各模块关系表,没用到
|
||
trouble = models.ForeignKey(Trouble, on_delete=models.CASCADE,null=True,blank=True)
|
||
train = models.ForeignKey(Train, on_delete=models.CASCADE,null=True,blank=True)
|
||
drill = models.ForeignKey(Drill, on_delete=models.CASCADE,null=True,blank=True)
|
||
observe = models.ForeignKey(Observe, on_delete=models.CASCADE,null=True,blank=True)
|
||
miss = models.ForeignKey(Miss, on_delete=models.CASCADE,null=True,blank=True)
|
||
remark = models.CharField(max_length=1000,null=True,blank=True)
|
||
|
||
|
||
class RiskAct(models.Model):#风险点表
|
||
id = models.AutoField(primary_key=True)
|
||
area = models.ForeignKey(Area,on_delete=models.CASCADE,null=True,blank=True,related_name='riskactarea')
|
||
place = models.CharField(max_length=50,null=True,blank=True)
|
||
type = models.ForeignKey(Dickey,on_delete=models.CASCADE,null=True,blank=True)
|
||
name = models.CharField(max_length=200,null=True,blank=True)
|
||
createtime = models.DateTimeField(default = timezone.now)
|
||
level = models.CharField(max_length=50,null=True,blank=True)
|
||
usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True)
|
||
qrcode = models.CharField(max_length=200,blank=True,null=True)
|
||
gkcj = models.CharField(max_length=50,null=True,blank=True)#从此往下以风险点来管控
|
||
zrbm = models.ForeignKey(Partment,related_name='riskzrbm2',on_delete=models.CASCADE,null=True,blank=True)
|
||
zrr = models.ForeignKey(User,related_name='riskzrr2',on_delete=models.CASCADE,null=True,blank=True)
|
||
group = models.ForeignKey(Group,on_delete=models.CASCADE,null=True,blank=True)
|
||
modifytime = models.DateTimeField(auto_now = True)
|
||
tasktype = models.IntegerField(default=0)
|
||
tasktime = models.DateTimeField(null=True,blank=True) #最后任务开始时间
|
||
|
||
class Equipment(models.Model):#设备表
|
||
id = models.AutoField(primary_key=True)
|
||
num = models.CharField(max_length=30,null=True,blank=True)
|
||
name = models.CharField(max_length=30)
|
||
type = models.CharField(max_length=30,null=True,blank=True) #规格
|
||
catename = models.CharField(max_length=30,null=True,blank=True)#分类
|
||
parameter = models.TextField(null=True,blank=True)
|
||
oem = models.CharField(max_length=50,null=True,blank=True)
|
||
fnum = models.CharField(max_length=30,null=True,blank=True)
|
||
fdate = models.DateField(null=True,blank=True)
|
||
udate = models.DateField(null=True,blank=True)
|
||
place = models.CharField(max_length=50,null=True,blank=True)
|
||
note = models.TextField(null=True,blank=True) #备注
|
||
state = models.IntegerField(default=1) #正常/异常/停用
|
||
deletemark=models.IntegerField(default=1)
|
||
creattime = models.DateTimeField(default = timezone.now)
|
||
modifytime = models.DateTimeField(auto_now = True)
|
||
usecomp = models.ForeignKey(Partment,related_name='sbssgs',on_delete=models.CASCADE,null=True,blank=True)
|
||
area = models.ForeignKey(Area,on_delete=models.CASCADE,null=True,blank=True)
|
||
cate = models.ForeignKey(Dickey,on_delete=models.CASCADE,null=True,blank=True)
|
||
iskey = models.IntegerField(default=0)
|
||
istz = models.IntegerField(default=0)
|
||
zrbm = models.ForeignKey(Partment,related_name='sbzrbm',on_delete=models.CASCADE,null=True,blank=True)
|
||
zrr = models.ForeignKey(User,on_delete=models.CASCADE,null=True,blank=True)
|
||
img = models.CharField(max_length=1000,blank=True,null=True)
|
||
qrcode = models.CharField(max_length=200,blank=True,null=True)
|
||
riskact = models.ForeignKey(RiskAct,null=True,blank=True,on_delete=models.CASCADE)
|
||
|
||
class Inspect(models.Model):#设备巡检记录
|
||
id = models.AutoField(primary_key=True)
|
||
state = models.IntegerField(default=1) #设备状态
|
||
content = models.TextField(null=True,blank=True)
|
||
equipment = models.ForeignKey(Equipment,blank=True,null=True,on_delete=models.CASCADE)
|
||
creattime = models.DateTimeField(default = timezone.now)
|
||
modifytime = models.DateTimeField(auto_now = True)
|
||
user = models.ForeignKey(User,blank=True,null=True,on_delete=models.CASCADE)
|
||
usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True)
|
||
trouble = models.ForeignKey(Trouble,on_delete=models.CASCADE,null=True,blank=True)
|
||
|
||
class Risk(models.Model):#风险表
|
||
tasktype_choices = (
|
||
(1,'8h'),
|
||
(2, '24h'),
|
||
(3, '7day'),
|
||
(4,'1month'),
|
||
(5,'1year')
|
||
)
|
||
id = models.AutoField(primary_key=True)
|
||
order = models.IntegerField(default=1)
|
||
step = models.TextField(null=True,blank=True)
|
||
hazard = models.TextField(null=True,blank=True)
|
||
result = models.TextField(null=True,blank=True)
|
||
measure1 = models.TextField(null=True,blank=True)
|
||
measure2 = models.TextField(null=True,blank=True)
|
||
measure3 = models.TextField(null=True,blank=True)
|
||
measure4 = models.TextField(null=True,blank=True)
|
||
measure5 = models.TextField(null=True,blank=True)
|
||
riskact = models.ForeignKey(RiskAct,on_delete=models.CASCADE,null=True,blank=True)
|
||
gkcj = models.CharField(max_length=50,null=True,blank=True)
|
||
zrbm = models.ForeignKey(Partment,related_name='riskzrbm',on_delete=models.CASCADE,null=True,blank=True)
|
||
zrr = models.ForeignKey(User,related_name='riskzrr',on_delete=models.CASCADE,null=True,blank=True)
|
||
createtime = models.DateTimeField(default = timezone.now)
|
||
createuser = models.ForeignKey(User,related_name='riskcjr',on_delete=models.CASCADE,null=True,blank=True)
|
||
riskl = models.DecimalField(max_digits=6,decimal_places=1)
|
||
riske = models.DecimalField(max_digits=6,decimal_places=1)
|
||
riskc = models.DecimalField(max_digits=6,decimal_places=1)
|
||
riskd = models.DecimalField(max_digits=6,decimal_places=1)
|
||
level = models.CharField(max_length=50,null=True,blank=True)
|
||
usecomp = models.ForeignKey(Partment,related_name='riskusecomp',on_delete=models.CASCADE,null=True,blank=True)
|
||
group = models.ForeignKey(Group,on_delete=models.CASCADE,null=True,blank=True)
|
||
modifytime = models.DateTimeField(auto_now = True)
|
||
tasktype = models.IntegerField(default=0)
|
||
tasktime = models.DateTimeField(null=True,blank=True) #最后任务开始时间
|
||
|
||
class Edulesson(models.Model):#在线视频表
|
||
id = models.AutoField(primary_key=True)
|
||
num = models.CharField(max_length=50)
|
||
title = models.CharField(max_length=50)
|
||
user = models.ForeignKey(User,related_name='scr',on_delete=models.CASCADE,null=True,blank=True)
|
||
submittime = models.DateTimeField(default = timezone.now)
|
||
desciption = models.TextField(null=True,blank=True)
|
||
type = models.IntegerField(default=1) #1是视频,2是文档
|
||
cate = models.ForeignKey(Questioncat,blank=True,null=True,on_delete=models.CASCADE)#分类按照题库进行分类
|
||
deletemark = models.IntegerField(default=1)
|
||
modifytime = models.DateTimeField(auto_now = True)
|
||
url = models.CharField(max_length=200,null=True,blank=True)
|
||
watchnum = models.IntegerField(default=0)
|
||
usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True)
|
||
watchrecord = models.ManyToManyField(User,related_name='gkr',through='EdulessonWatch')
|
||
|
||
class EdulessonWatch(models.Model):#在线视频观看情况表
|
||
id = models.AutoField(primary_key=True)
|
||
edulesson = models.ForeignKey(Edulesson, on_delete=models.CASCADE)
|
||
user = models.ForeignKey(User,on_delete=models.CASCADE)
|
||
submittime = models.DateTimeField(default = timezone.now)
|
||
|
||
class RiskActTask(models.Model):#风险点排查清单(任务)
|
||
id = models.AutoField(primary_key=True)
|
||
riskact = models.ForeignKey(RiskAct, on_delete=models.CASCADE,null=True,blank=True)
|
||
user = models.ForeignKey(User, on_delete=models.CASCADE,null=True,blank=True)
|
||
taskadd = models.DateTimeField(null=True,blank=True)
|
||
taskdo = models.DateTimeField(null=True,blank=True)
|
||
taskexpire = models.DateTimeField(null=True,blank=True)
|
||
usable = models.IntegerField(default=1) #1是可用,2是变更计划,0是不可用
|
||
type = models.IntegerField(default=1) #1是计划内,2是计划外
|
||
note = models.TextField(null=True,blank=True) #备注
|
||
state = models.IntegerField(default=1)#1是正常
|
||
istask = models.IntegerField(default=0)#是否是任务
|
||
|
||
class Risktask(models.Model):#风险排查任务清单
|
||
id = models.AutoField(primary_key=True)
|
||
risk = models.ForeignKey(Risk, on_delete=models.CASCADE,null=True,blank=True)
|
||
group = models.ForeignKey(Group, on_delete=models.CASCADE,null=True,blank=True)
|
||
user = models.ForeignKey(User, on_delete=models.CASCADE,null=True,blank=True)
|
||
taskadd = models.DateTimeField(null=True,blank=True)
|
||
taskdo = models.DateTimeField(null=True,blank=True)
|
||
taskexpire = models.DateTimeField(null=True,blank=True)
|
||
trouble = models.ForeignKey(Trouble, on_delete=models.CASCADE,null=True,blank=True)
|
||
usable = models.IntegerField(default=1) #1是可用,2是变更计划,0是不可用
|
||
type = models.IntegerField(default=1) #1是计划内,2是计划外
|
||
note = models.TextField(null=True,blank=True) #备注
|
||
|
||
|
||
class Riskcheck2(models.Model):#风险排查记录2
|
||
id = models.AutoField(primary_key=True)
|
||
riskacttask = models.ForeignKey(RiskActTask, on_delete=models.CASCADE,null=True,blank=True)
|
||
risk = models.ForeignKey(Risk, on_delete=models.CASCADE,null=True,blank=True)
|
||
dotime = models.DateTimeField(null=True,blank=True)
|
||
trouble = models.ForeignKey(Trouble, on_delete=models.CASCADE,null=True,blank=True)
|
||
note = models.TextField(null=True,blank=True)
|
||
|
||
class Riskcheck(models.Model):#风险排查记录
|
||
id = models.AutoField(primary_key=True)
|
||
risk = models.ForeignKey(Risk, on_delete=models.CASCADE,null=True,blank=True)
|
||
user = models.ForeignKey(User, on_delete=models.CASCADE,null=True,blank=True)
|
||
risktask = models.ForeignKey(Risktask, on_delete=models.CASCADE,null=True,blank=True)
|
||
dotime = models.DateTimeField(null=True,blank=True)
|
||
trouble = models.ForeignKey(Trouble, on_delete=models.CASCADE,null=True,blank=True)
|
||
note = models.TextField(null=True,blank=True)
|
||
|
||
class Report(models.Model):#分析报告表
|
||
id = models.AutoField(primary_key=True)
|
||
part = models.ForeignKey(Partment, on_delete=models.CASCADE,null=True,blank=True)
|
||
year = models.IntegerField(null=True,blank=True)
|
||
month = models.IntegerField(null=True,blank=True)
|
||
cause = models.TextField(null=True,blank=True) #原因分析
|
||
suggest = models.TextField(null=True,blank=True) #下一步建议
|
||
|
||
class CompanyInfo(models.Model):
|
||
company_nature = (
|
||
(0, '国企'),
|
||
(1, '私企'),
|
||
)
|
||
partment = models.OneToOneField(Partment, on_delete=models.CASCADE, verbose_name='公司ID')
|
||
name = models.CharField(max_length=64, verbose_name='公司名称')
|
||
nature = models.SmallIntegerField(choices=company_nature, default=0, verbose_name='企业性质')
|
||
address = models.CharField(max_length=128, verbose_name='公司地址')
|
||
fixed_assets = models.IntegerField(null=True, blank=True, verbose_name='固定资产')
|
||
website = models.CharField(max_length=64, null=True, blank=True, verbose_name='公司网址')
|
||
peoplenum = models.IntegerField(null=True, blank=True, verbose_name='公司人数')
|
||
legalperson = models.CharField(max_length=24, null=True, blank=True,verbose_name='法人代表')
|
||
legalperson_phone = models.CharField(max_length=24, null=True, blank=True, verbose_name='法人电话')
|
||
liaison = models.CharField(max_length=24, verbose_name='联系人')
|
||
liaison_phone = models.CharField(max_length=24, verbose_name='联系人电话')
|
||
introduce = models.TextField( null=True, blank=True, verbose_name='公司概况')
|
||
createtime = models.DateTimeField(auto_now_add=True)
|
||
modifytime = models.DateTimeField(auto_now=True)
|
||
#法律法规分类表
|
||
class Regulations(models.Model):
|
||
id = models.AutoField(primary_key=True)
|
||
typename = models.CharField(max_length=50)
|
||
parent = models.ForeignKey('self',blank=True,null=True,on_delete=models.CASCADE)
|
||
sortorder = models.IntegerField(default=0)
|
||
deletemark = models.IntegerField(default=1)
|
||
creattime = models.DateTimeField(default = timezone.now)
|
||
createuser = models.ForeignKey(User,related_name='rgs',on_delete=models.CASCADE,null=True,blank=True)
|
||
usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True)
|
||
#法律法规阅读人员管理表
|
||
class FileReader(models.Model):
|
||
id = models.AutoField(primary_key=True)
|
||
kindnum = models.CharField(max_length=50)
|
||
readeruser = models.ForeignKey(User,on_delete=models.CASCADE)
|
||
readertime = models.DateTimeField(default = timezone.now)
|
||
deletemark = models.IntegerField(default=1)
|
||
#法律法规表
|
||
class FileManage(models.Model):
|
||
id = models.AutoField(primary_key=True)
|
||
maragename = models.CharField(max_length=50)
|
||
maragepath = models.CharField(max_length=200,null=True,blank=True)
|
||
readernum = models.IntegerField(default=0)
|
||
maragetype = models.ForeignKey(Regulations,on_delete=models.CASCADE,null=True,blank=True)
|
||
publisdate = models.DateTimeField(default = timezone.now)
|
||
versionnum = models.CharField(max_length=50)
|
||
maragestate = models.IntegerField(default=1) #0是现行,1是废止,2修改,3修订
|
||
accessorytype = models.CharField(max_length=50)
|
||
actualizedata = models.DateTimeField(default = timezone.now)
|
||
createdate = models.DateTimeField(default = timezone.now)
|
||
createuser = models.ForeignKey(User,on_delete=models.CASCADE)
|
||
usecomp= models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True)
|
||
downnum = models.IntegerField(default=0)
|
||
deletemark = models.IntegerField(default=1)
|
||
|
||
#管理制度表
|
||
class Mgtsystem(models.Model):
|
||
id = models.AutoField(primary_key=True)
|
||
mgtname = models.CharField(max_length=50)
|
||
type = models.ForeignKey(Dickey,on_delete=models.CASCADE,null=True,blank=True)
|
||
usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True)
|
||
mgtpath = models.CharField(max_length=200,null=True,blank=True)
|
||
publisdate = models.DateTimeField(default = timezone.now)
|
||
createuser = models.ForeignKey(User,on_delete=models.CASCADE)
|
||
deletemark = models.IntegerField(default=1)
|