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 Menu(models.Model): # 菜单 type_choices = ( (1, '菜单'), (2, '按钮'), ) menuid = models.AutoField(primary_key=True,verbose_name='ID') menuname = models.CharField(max_length=30, blank=True, null=True,verbose_name='名称') menucode = models.CharField(max_length=30, blank=True, null=True,verbose_name='菜单标识') url = models.CharField(max_length=30, blank=True, null=True,verbose_name='操作地址') detail = models.CharField(max_length=100, blank=True, null=True,verbose_name='描述') parentid = models.ForeignKey( 'self', blank=True, null=True, on_delete=models.CASCADE,verbose_name='上级') icon = models.CharField(max_length=100, blank=True, null=True,verbose_name='图标') sortnum = models.IntegerField(default=1,verbose_name='排序号') deletemark = models.IntegerField(default=1,verbose_name='删除标记') type = models.IntegerField(default=1,choices=type_choices,verbose_name='类型')#1是菜单,2是按钮 class Meta: verbose_name = '菜单&按钮' verbose_name_plural = "菜单&按钮" def __str__(self): return self.menuname+self.menucode class Role(models.Model): #公司权限设置 """ 角色:用于权限绑定 """ name = models.CharField(max_length=32, unique=True, verbose_name="角色") permissions = models.ManyToManyField(Menu, blank=True, verbose_name="URL授权") desc = models.CharField(max_length=50, blank=True, null=True, verbose_name="描述") def __str__(self): return self.name 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) role = models.ForeignKey(Role, blank=True, null=True, on_delete=models.SET_NULL) 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) epassword = models.CharField(max_length=200, blank=True, null=True) 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) yhlxo = models.ForeignKey(Dickey, related_name='yhlxo', 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) # 隐患区域 submituser = models.ForeignKey(User, related_name='submituser', 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') menulist = ArrayField(models.IntegerField(), blank=True, null=True) 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 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=1000, 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') #1是公告,0是通知,2是资料文件 usecomps = models.CharField(max_length=1000, null=True, blank=True) # 使用公司 like = models.IntegerField(default=0) poster = models.CharField(max_length=200, null=True, blank=True, verbose_name='封面图') supply_part = models.ForeignKey( Partment, related_name='tgbm', on_delete=models.CASCADE, verbose_name="资料提供部门",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) islike = 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进行中 0是已关闭 ispublic = models.IntegerField(default=0) # 默认不公开 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.TextField(default=',') wrongs = models.TextField(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') #是否关闭 jsqd = models.IntegerField(verbose_name='结束签到',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) jsqd = models.DateTimeField(verbose_name='结束签到时间',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 EquipmentCheckItem(models.Model):# 检查项目 name = models.CharField(max_length=200,verbose_name='检查项目') content = models.CharField(max_length=400,verbose_name='检查内容') class EquipmentCheckForm(models.Model):# 检查表 name = models.CharField(max_length=200,verbose_name='名称') desc = models.CharField(max_length=400,verbose_name='描述') items = models.ManyToManyField(EquipmentCheckItem,related_name='checkitems', through='EFormItems') deletemark = models.IntegerField(default=1,verbose_name="删除标记") createby = models.ForeignKey(User,on_delete=models.CASCADE, verbose_name="创建人",null=True,blank=True) usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE, verbose_name='所属公司') def __str__(self): return self.name class EFormItems(models.Model): equipment_check_form = models.ForeignKey(EquipmentCheckForm,on_delete=models.CASCADE) equipment_check_item = models.ForeignKey(EquipmentCheckItem,on_delete=models.CASCADE) submittime = models.DateField(default=timezone.now) 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) checkform = models.ForeignKey(EquipmentCheckForm,on_delete=models.CASCADE,null=True,blank=True) class Inspect(models.Model): # 设备巡检记录 id = models.AutoField(primary_key=True) state = models.IntegerField(default=1) # 设备状态 type = models.ForeignKey(Dickey, on_delete=models.SET_NULL, null=True, blank=True, verbose_name='巡检类型') 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 InspectItem(models.Model): state_choices = ( ('正常', '正常'), ('异常待处理', '异常待处理'), ('异常已处理', '异常已处理'), ) checked = models.BooleanField('是否已检查', default=True) state = models.CharField('状态',choices=state_choices, default='正常', max_length=200) inspect = models.ForeignKey(Inspect, on_delete=models.CASCADE, null=True, blank=True) todouser = models.ForeignKey(User, on_delete=models.CASCADE, null=True,blank=True) handletime = models.DateTimeField('处理时间', null=True, blank=True) checkitem = models.ForeignKey(EquipmentCheckItem, on_delete=models.CASCADE) desc = models.TextField('描述', null=True, blank=True) img = models.TextField('现场图片', null=True, blank=True) img2 = models.TextField('处理后图片', null=True, blank=True) desc2 = models.TextField('处理后描述', 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) downnum = 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) #责任制表 class Resbility(models.Model): id = models.AutoField(primary_key=True)#主键 title = models.CharField(max_length=50)#标题 jobs = models.ForeignKey(Group,on_delete=models.CASCADE,null=True,blank=True)#岗位 homeworktype=models.ForeignKey(Dickey,on_delete=models.CASCADE,null=True,blank=True)#作业许可类型 department = models.ForeignKey(Partment,related_name='resbbm',on_delete=models.CASCADE,null=True,blank=True)#部门 resbilitypath = models.CharField(max_length=200,null=True,blank=True)#上传文件 createuser = models.ForeignKey(User,on_delete=models.CASCADE)#上传者 createdate = models.DateTimeField(default = timezone.now)#上传时间 usecomp = models.ForeignKey(Partment,related_name='resbgs',on_delete=models.CASCADE,null=True,blank=True)#所属公司 deletemark = models.IntegerField(default=1)#是否删除 filepath=models.CharField(max_length=200,null=True,blank=True) reads = models.IntegerField(default='0') #操作规程 class Operproce(models.Model): id = models.AutoField(primary_key=True)#主键 title = models.CharField(max_length=50)#标题 jobs = models.ForeignKey(Group,on_delete=models.CASCADE,null=True,blank=True)#岗位 homeworktype=models.ForeignKey(Dickey,on_delete=models.CASCADE,null=True,blank=True)#作业许可类型 department = models.ForeignKey(Partment,related_name='optbm',on_delete=models.CASCADE,null=True,blank=True)#部门 operprocepath = models.CharField(max_length=200,null=True,blank=True)#上传文件 createuser = models.ForeignKey(User,on_delete=models.CASCADE)#上传者 createdate = models.DateTimeField(default = timezone.now)#上传时间 usecomp = models.ForeignKey(Partment,related_name='optgs',on_delete=models.CASCADE,null=True,blank=True)#所属公司 deletemark = models.IntegerField(default=1)#是否删除 filepath=models.CharField(max_length=200,null=True,blank=True) reads = models.IntegerField(default='0') #责任阅读表 class Readerblility(models.Model): readid = models.ForeignKey(Resbility, on_delete=models.CASCADE)#主键 num = models.CharField(max_length=50) readeruser = models.ForeignKey(User,on_delete=models.CASCADE) readertime = models.DateTimeField(default = timezone.now) #操作规程阅读表 class ReaderOperproce(models.Model): readid = models.ForeignKey(Operproce, on_delete=models.CASCADE)#主键 num = models.CharField(max_length=50) readeruser = models.ForeignKey(User,on_delete=models.CASCADE) readertime = models.DateTimeField(default = timezone.now) #检查项目 class Checkproject(models.Model): id =models.AutoField(primary_key=True)#主键 checktitle=models.CharField(max_length=1000)#检查项目标题 checkcontent=models.TextField()#检查内容 requirements=models.TextField()#检查要求 createuser = models.ForeignKey(User,on_delete=models.CASCADE)#创建人 createdate = models.DateTimeField(default = timezone.now)#创建时间 usecomp = models.ForeignKey(Partment,related_name='checkcomp',on_delete=models.CASCADE,null=True,blank=True)#创建公司 deletemark = models.IntegerField(default=1)#是否删除 #检查表 class Checktable(models.Model): id =models.AutoField(primary_key=True)#主键 checktitle=models.CharField(max_length=1000)#检查表名 checkprjtype=models.ManyToManyField(Checkproject)#检查项目多选 checkcontent=models.TextField()#检查内容 createuser = models.ForeignKey(User,on_delete=models.CASCADE)#创建人 createdate = models.DateTimeField(default = timezone.now)#创建时间 usecomp = models.ForeignKey(Partment,related_name='checktabcomp',on_delete=models.CASCADE,null=True,blank=True)#创建公司 deletemark = models.IntegerField(default=1)#是否删除 #检查任务 class Checktask(models.Model): id=models.AutoField(primary_key=True)#主键 checktaskname=models.CharField(max_length=300)#任务名 checktype=models.ForeignKey(Checktable,on_delete=models.CASCADE)#关联检查表 checkname=models.ManyToManyField(User,related_name='jiancha')#检查人员 checktime= models.DateTimeField(null=True, blank=True)#任务首次执行时间 checkplace=models.CharField(max_length=200)#检查地点 createuser = models.ForeignKey(User,related_name='chuangjians',on_delete=models.CASCADE)#创建人 createdate = models.DateTimeField(default = timezone.now)#创建时间 usecomp = models.ForeignKey(Partment,related_name='taskscomp',on_delete=models.CASCADE,null=True,blank=True)#创建公司 deletemark = models.IntegerField(default=1)#是否删除 tasktype = models.IntegerField(default=0)#任务执行频率(1每天,2每周,3每月,4每季度,5每半年,6每年) userlist = models.CharField(max_length=200,null=True,)#检查人列表 zxstate = models.IntegerField(default=1)#1同时执行,2一个执行就执行 taskstate = models.IntegerField(default=1)#是否暂停,1运行,2暂停 class Checkjob(models.Model): id=models.AutoField(primary_key=True)#主键 checktask=models.ForeignKey(Checktask,on_delete=models.CASCADE)#关联任务表 checkname=models.ForeignKey(User,related_name='jianchas',on_delete=models.CASCADE)#检查人员 checkquestion=models.TextField(null=True)#检查发现的问题 zgtime=models.DateTimeField(null=True, blank=True)#整改时间 jctime=models.DateTimeField(null=True, blank=True)#检查时间 zguser=models.ForeignKey(User,on_delete=models.CASCADE,null=True,)#整改人 createuser = models.ForeignKey(User,related_name='chuangjian',on_delete=models.CASCADE,null=True)#创建人 createdate = models.DateTimeField(default = timezone.now)#创建时间 usecomp = models.ForeignKey(Partment,related_name='taskcomps',on_delete=models.CASCADE,null=True,blank=True)#创建公司 deletemark = models.IntegerField(default=1)#是否删除 taskstate = models.IntegerField(default=1)#执行状态,1正在检查,2检查完毕,3,已关闭,4,未执行 starttime=models.DateTimeField(null=True, blank=True)#任务开始时间 endtime=models.DateTimeField(null=True, blank=True)#任务结束时间 jobstate = models.IntegerField(default=1)#检查任务状态,1可执行,2过期 zgyq=models.TextField(null=True)#整改要求 zgjg=models.TextField(null=True)#整改结果 yanshou=models.DateTimeField(null=True, blank=True)#验收时间 yanshouren=models.ForeignKey(User,related_name='yanshouren',on_delete=models.CASCADE,null=True)#验收人员 pmpeople=models.ManyToManyField(User,related_name='bcfr')#被处罚人员 content=models.TextField(null=True)#处罚内容 yhtp = models.CharField(max_length=1000,null=True, blank=True) zghtp = models.CharField(max_length=1000,null=True, blank=True)