from django.db import models from safesite.models import User, Partment,Dickey from utils.models import CommonModel import django.utils.timezone as timezone from django.contrib.postgres.fields import JSONField # Create your models here. class Waste(CommonModel): type_choices = ( (1, '一般工业固废'), (2, '危废') ) number = models.CharField('编号', max_length=100,null=True, blank=True) name = models.CharField('名称', max_length=100,null=True, blank=True) type = models.IntegerField('废物类型', choices=type_choices, default=1,null=True, blank=True) usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司') class NormalWasteRecord(CommonModel): """ 一般废物排放记录 """ gen_date = models.DateField('产生日期',null=True, blank=True) dis_date = models.DateField('处置日期',null=True, blank=True) gen_count = models.FloatField('产生数量',null=True, blank=True) dis_count = models.FloatField('委托处置量',null=True, blank=True) inv_count = models.FloatField('库存量',null=True, blank=True) waste = models.ForeignKey(Waste, on_delete=models.CASCADE, verbose_name='关联废物',null=True, blank=True) operator = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='经办人',null=True, blank=True) usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司') class DWasteMakeList(CommonModel): """ 危废产生一览表 """ waste = models.ForeignKey(Waste, on_delete=models.CASCADE, verbose_name='关联废物',null=True, blank=True) process = models.CharField('产生工序', max_length=100,null=True, blank=True) source = models.CharField('源/车间', max_length=100,null=True, blank=True) goto = models.CharField('废物流向', max_length=100,null=True, blank=True) companyname = models.CharField('处理企业名称', max_length=100,null=True, blank=True) gen_count = models.FloatField('年度产生量(吨)',null=True, blank=True) license = models.CharField('许可证编号', max_length=100,null=True, blank=True) usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司') class DWasteMakeRecord(CommonModel): """ 危废产生环节记录 """ waste = models.ForeignKey(Waste, on_delete=models.CASCADE, verbose_name='关联废物',null=True, blank=True) gen_time = models.DateTimeField('产生时间',null=True, blank=True) gen_count = models.FloatField('产生数量',null=True, blank=True) container = models.CharField('容器情况', max_length=100,null=True, blank=True) container_count = models.IntegerField('容器个数',null=True, blank=True) trans_time = models.DateTimeField('转移时间',null=True, blank=True) trans_count = models.IntegerField('转移个数',null=True, blank=True) goto = models.CharField('去向', max_length=100) usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司') class DWasteKeepRecord(CommonModel): """ 危废贮存环节记录 """ waste = models.ForeignKey(Waste, on_delete=models.CASCADE, verbose_name='关联废物') in_time = models.DateTimeField('入库时间',null=True, blank=True) in_count = models.FloatField('入库数量',null=True, blank=True) source = models.CharField('废物来源', max_length=100,null=True, blank=True) container = models.CharField('容器规格', max_length=100,null=True, blank=True) container_count = models.IntegerField('容器个数',null=True, blank=True) place = models.CharField('存放位置', max_length=50,null=True, blank=True) out_time = models.DateTimeField('出库时间',null=True, blank=True) out_count = models.IntegerField('出库数量',null=True, blank=True) goto = models.CharField('去向', max_length=100,null=True, blank=True) usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司') class DWasteHandleRecord(CommonModel): """ 危废处置环节记录 """ type_choices = ( ('1', '自行利用'), ('2', '委托处置'), ('3', '自行处置') ) waste = models.ForeignKey(Waste, on_delete=models.CASCADE, verbose_name='关联废物') accept_time = models.DateTimeField('接收时间',null=True, blank=True) accept_count = models.FloatField('接收数量',null=True, blank=True) source = models.CharField('废物来源', max_length=100,null=True, blank=True) container = models.CharField('容器规格', max_length=100,null=True, blank=True) container_count = models.IntegerField('容器个数',null=True, blank=True) handle_time = models.DateTimeField('处置时间',null=True, blank=True) handle_method = models.CharField('处置方式', max_length=50,choices=type_choices,null=True,default='1', blank=True) usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司') class Drain(CommonModel): """ 排放口 """ DRAIN_TYPE_CHOICES = ( (10, '排水'), (20, '排气') ) type = models.PositiveSmallIntegerField('排污口类型', default=10, choices=DRAIN_TYPE_CHOICES) number = models.CharField('编号', max_length=100,null=True, blank=True) name = models.CharField('名称', max_length=100,null=True, blank=True) location = JSONField('点位坐标', null=True, blank=True) need_predict = models.IntegerField('是否需要预测', default=1) usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司') class GasEmit(CommonModel): """ 废气排放记录 """ drain = models.ForeignKey(Drain, verbose_name='关联排放口', on_delete=models.CASCADE) watch_time = models.DateTimeField('监测时间',null=True, blank=True) out_smoke = models.FloatField('标态干烟气量',null=True, blank=True) out_o2 = models.FloatField("氧含量",null=True, blank=True) out_so2 = models.FloatField("二氧化硫",null=True, blank=True) out_so2_s = models.FloatField("二氧化硫s",null=True, blank=True) out_particle = models.FloatField("颗粒物",null=True, blank=True) out_particle_s = models.FloatField("颗粒物s",null=True, blank=True) out_nox = models.FloatField("氮氧化物",null=True, blank=True) out_nox_s = models.FloatField("氮氧化物s",null=True, blank=True) in_smoke = models.FloatField('标态干烟气量',null=True, blank=True) in_o2 = models.FloatField("氧含量",null=True, blank=True) in_so2 = models.FloatField("二氧化硫",null=True, blank=True) in_so2_s = models.FloatField("二氧化硫s",null=True, blank=True) in_particle = models.FloatField("颗粒物",null=True, blank=True) in_particle_s = models.FloatField("颗粒物s",null=True, blank=True) in_nox = models.FloatField("氮氧化物",null=True, blank=True) in_nox_s = models.FloatField("氮氧化物s",null=True, blank=True) usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司') class Facilities(CommonModel): """ 生产设施信息表 """ name = models.CharField('生产设施设备名称', max_length=100,null=True, blank=True) number = models.CharField('编码', max_length=100,null=True, blank=True) type = models.CharField('生产设施型号', max_length=100,null=True, blank=True) cs_name = models.CharField('设备参数名', max_length=100,null=True, blank=True) desig_nnumber = models.FloatField('设备设计值', max_length=100,null=True, blank=True) actual_number = models.FloatField('设备实际值',null=True, blank=True, max_length=100) em_unit = models.CharField('设备单位', max_length=50,null=True, blank=True) ability = models.CharField('生产能力', max_length=200,null=True, blank=True) al_unit = models.CharField('生产能力单位', max_length=50,null=True, blank=True) start_time = models.DateTimeField('运行开始时间',null=True, blank=True) end_time = models.DateTimeField('运行结束时间',null=True, blank=True) pdc_Load = models.CharField('生产负荷', max_length=200,null=True, blank=True) zj_product = models.CharField('中间产品',null=True, blank=True, max_length=200) zj_unit = models.CharField('中间产品单位',null=True, blank=True, max_length=50) zz_product = models.CharField('最终产品', max_length=200,null=True, blank=True) zz_unit = models.CharField('最终产品单位', max_length=50,null=True, blank=True) material_name = models.CharField('原辅料名称', max_length=200,null=True, blank=True) material_type = models.CharField('原辅料种类', max_length=200,null=True, blank=True) material_unit = models.CharField('原辅料单位', max_length=50,null=True, blank=True) material_count = models.CharField('原辅料用量', max_length=200,null=True, blank=True) material_composition = models.CharField('有害有毒元素成分', max_length=50,null=True, blank=True) material_account = models.CharField('有害有毒元素占比', max_length=200,null=True, blank=True) material_address = models.CharField('原料来源地', max_length=50,null=True, blank=True) usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司') class Prevention(CommonModel): """ 废气,废水,噪声防治设施 """ type_choices = ( (1, '废水'), (2, '废气'), (3, '噪声'), (4, '废水治理'), ) clfs_choices = ( ('1', '自行利用'), ('2', '委托处置'), ('3', '自行处置') ) name = models.CharField('防治设施名称', max_length=100) number = models.CharField('编码', max_length=100) type = models.CharField('防治设施型号', max_length=100) preventiontype = models.IntegerField('防治类型', choices=type_choices, default=1, null=True, blank=True) cs_name = models.CharField('参数名', max_length=100, null=True, blank=True) desig_nnumber = models.FloatField('设计值', max_length=100, null=True, blank=True) em_unit = models.CharField('单位', max_length=50, null=True, blank=True) start_time = models.DateTimeField('运行开始时间', null=True, blank=True) end_time = models.DateTimeField('运行结束时间', null=True, blank=True) state = models.CharField('运行状态', max_length=100, null=True, blank=True) pfyql = models.FloatField('排放烟气量(m3/h)', max_length=200, null=True, blank=True) wryz = models.CharField('污染因子', max_length=100, null=True, blank=True) zlxl = models.CharField('治理效率', max_length=200, null=True, blank=True) sjly = models.CharField('数据来源', max_length=100, null=True, blank=True) pqtgd = models.FloatField('排气筒高度m', max_length=200, null=True, blank=True) pkwd = models.FloatField('排口温度℃', max_length=200, null=True, blank=True) yl = models.FloatField('压力kPa', max_length=100, null=True, blank=True) pfsj = models.FloatField('排放时间h', max_length=100, null=True, blank=True) hdl = models.FloatField('耗电率kWh', max_length=100,null=True, blank=True) fcpname = models.CharField('副产品名称', max_length=100, null=True, blank=True) fcwcl = models.FloatField('副产物产生量t', max_length=100, null=True, blank=True) yjname = models.CharField('药剂名称', max_length=100, null=True, blank=True) tjtime = models.DateTimeField('添加时间', null=True, blank=True) tjl = models.FloatField('添加量', max_length=100, null=True, blank=True) ckll = models.FloatField('出口流量', max_length=100, null=True, blank=True) pqfx = models.CharField('排放去向', max_length=50, null=True, blank=True) wncsl = models.CharField('污泥产生量', max_length=50, null=True, blank=True) clfs = models.CharField('处置方式', max_length=50,choices=clfs_choices,null=True,default='1', blank=True) usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司') class abnormal(CommonModel): """ 防治设施异常情况信息表 """ name = models.CharField('防治设施名称', max_length=100) number = models.CharField('编码', max_length=100) start_time = models.DateTimeField('异常情况起始时刻', null=True, blank=True) end_time = models.DateTimeField('异常情况终止时刻', null=True, blank=True) type = models.CharField('污染物种类', max_length=100, null=True, blank=True) pfnd = models.CharField('排放浓度', max_length=100, null=True, blank=True) pffx = models.CharField('排放方向', max_length=200, null=True, blank=True) sjyy = models.CharField('事件原因', max_length=100, null=True, blank=True) sfbg = models.CharField('是否报告', max_length=200, null=True, blank=True) ydcs = models.CharField('应对措施', max_length=200, null=True, blank=True) usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司') class Detection(CommonModel): """ 废水污染物检测结果表 """ drain = models.ForeignKey(Drain, verbose_name='关联排放口', on_delete=models.CASCADE) jcDate = models.DateTimeField('监测日期', null=True, blank=True) jctime = models.DateTimeField('监测时间', null=True, blank=True) ckhxxyl = models.FloatField('出口化学需氧量(mg/L)', max_length=200, null=True, blank=True) ckshxll = models.FloatField('出口生化需氧量(mg/L)', max_length=200, null=True, blank=True) ckad = models.FloatField('出口氨氮(mg/L)', max_length=200, null=True, blank=True) ckxfw = models.FloatField('出口悬浮物(mg/L)', max_length=200, null=True, blank=True) jkhxxyl = models.FloatField('进口化学需氧量(mg/L)', max_length=200, null=True, blank=True) jkshxll = models.FloatField('进口生化需氧量(mg/L)', max_length=200, null=True, blank=True) jkad = models.FloatField('进口氨氮(mg/L)', max_length=200, null=True, blank=True) jkxfw = models.FloatField('进口悬浮物(mg/L)', max_length=200, null=True, blank=True) usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司') class Fuel(CommonModel): """ 燃料信息表 """ name = models.CharField('燃料名称', max_length=100,null=True, blank=True) count = models.FloatField('用量', max_length=100, null=True, blank=True) dwcount = models.FloatField('低位热值', max_length=100, null=True, blank=True) unit = models.CharField('单位', max_length=200, null=True, blank=True) rmhll = models.FloatField('燃煤含硫量(%)', max_length=200, null=True, blank=True) rmhff = models.FloatField('燃煤挥发分(%)', max_length=200, null=True, blank=True) rmqt = models.CharField('燃煤其他', max_length=100, null=True, blank=True) ryhll = models.FloatField('燃油含硫量(%)', max_length=200, null=True, blank=True) ryqt = models.CharField('燃油其他', max_length=100, null=True, blank=True) rqlhqhl = models.FloatField('燃气硫化氢含量(%)', max_length=200, null=True, blank=True) rqqt = models.CharField('燃气其他', max_length=100, null=True, blank=True) qtrlxgwzhl = models.CharField('其他燃料相关物质含量', max_length=400, null=True, blank=True) usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司') class Waterequipment(CommonModel): """ 废水监测仪器信息表 """ drain = models.ForeignKey(Drain, verbose_name='关联排放口', on_delete=models.CASCADE) type = models.CharField('污染物种类', max_length=100, null=True, blank=True) methods = models.CharField('监测采样方法及个数', max_length=300, null=True, blank=True) count = models.IntegerField('监测次数', null=True, blank=True) identification = models.CharField('鉴定方法', max_length=200, null=True, blank=True) jcyqmodel = models.CharField('监测仪器型号', max_length=100, null=True, blank=True) note = models.CharField('备注', max_length=500, null=True, blank=True) usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司') class GasTestEquipment(CommonModel): """ 废气检测仪器 """ drain = models.ForeignKey(Drain, verbose_name='关联排放口', on_delete=models.CASCADE) contaminant = models.CharField('污染物', max_length=100) model = models.CharField('仪器型号', max_length=100) state = models.CharField('设备状态', default='正常', max_length=100) remark = models.CharField('备注', max_length=200) usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司') class Archives(CommonModel): """ 档案管理 """ title = models.CharField(max_length=50,null=True, blank=True)#标题 type=models.ForeignKey(Dickey,on_delete=models.CASCADE,null=True,blank=True)#档案类型 path = models.CharField(max_length=200,null=True,blank=True)#上传文件 createuser = models.ForeignKey(User,on_delete=models.CASCADE)#上传者 createdate = models.DateTimeField(default = timezone.now)#上传时间 deletemark = models.IntegerField(default=1)#是否删除 reads = models.IntegerField(default='0') note = models.CharField('备注', max_length=500, null=True, blank=True) usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, null=True, blank=True,verbose_name='所属公司')