feat: enp调整
This commit is contained in:
parent
c88f33ad4d
commit
ddd0d2a6df
|
@ -21,22 +21,36 @@ class Migration(migrations.Migration):
|
|||
migrations.CreateModel(
|
||||
name='Drain',
|
||||
fields=[
|
||||
('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')),
|
||||
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||
('type', models.PositiveSmallIntegerField(choices=[(10, '排放口'), (20, '污染源')], help_text="((10, '排放口'), (20, '污染源'))", verbose_name='类型')),
|
||||
('id', models.CharField(editable=False, help_text='主键ID', max_length=20,
|
||||
primary_key=True, serialize=False, verbose_name='主键ID')),
|
||||
('create_time', models.DateTimeField(
|
||||
default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||
('update_time', models.DateTimeField(
|
||||
auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||
('is_deleted', models.BooleanField(
|
||||
default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||
('type', models.PositiveSmallIntegerField(choices=[
|
||||
(10, '排放口'), (20, '污染源')], help_text="((10, '排放口'), (20, '污染源'))", verbose_name='类型')),
|
||||
('number', models.CharField(max_length=20, verbose_name='编号')),
|
||||
('name', models.CharField(max_length=20, verbose_name='名称')),
|
||||
('level', models.PositiveSmallIntegerField(choices=[(10, '主要排放口'), (20, '次要排放口')], default=20, help_text="((10, '主要排放口'), (20, '次要排放口'))", verbose_name='排口等级')),
|
||||
('cate', models.CharField(blank=True, choices=[('product', '生产工艺'), ('mtrans', '物料输送'), ('mstore', '物料储存')], help_text="(('product', '生产工艺'), ('mtrans', '物料输送'), ('mstore', '物料储存'))", max_length=10, null=True, verbose_name='分类')),
|
||||
('height', models.PositiveSmallIntegerField(default=0, verbose_name='排气筒高度')),
|
||||
('treatment_capacity', models.CharField(default='', max_length=20, verbose_name='处理量')),
|
||||
('pm_limit', models.FloatField(default=10, help_text='单位:mg/m³', verbose_name='PM超低排放限值')),
|
||||
('measure', models.CharField(default='', max_length=20, verbose_name='治理措施')),
|
||||
('coordinates', models.JSONField(default=dict, null=True, verbose_name='坐标')),
|
||||
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='drain_belong_dept', to='system.dept', verbose_name='所属部门')),
|
||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='drain_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||
('level', models.PositiveSmallIntegerField(choices=[
|
||||
(10, '主要排放口'), (20, '次要排放口')], default=20, help_text="((10, '主要排放口'), (20, '次要排放口'))", verbose_name='排口等级')),
|
||||
('cate', models.CharField(blank=True, choices=[('product', '生产工艺'), ('mtrans', '物料输送'), (
|
||||
'mstore', '物料储存')], help_text="(('product', '生产工艺'), ('mtrans', '物料输送'), ('mstore', '物料储存'))", max_length=10, null=True, verbose_name='分类')),
|
||||
('height', models.PositiveSmallIntegerField(
|
||||
default=0, verbose_name='排气筒高度')),
|
||||
('treatment_capacity', models.CharField(
|
||||
default='', max_length=20, verbose_name='处理量')),
|
||||
('pm_limit', models.FloatField(default=10,
|
||||
help_text='单位:mg/m³', verbose_name='PM超低排放限值')),
|
||||
('measure', models.CharField(default='',
|
||||
max_length=20, verbose_name='治理措施')),
|
||||
('coordinates', models.JSONField(
|
||||
default=dict, null=True, verbose_name='坐标')),
|
||||
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name='drain_belong_dept', to='system.dept', verbose_name='所属部门')),
|
||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name='drain_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
|
@ -45,13 +59,20 @@ class Migration(migrations.Migration):
|
|||
migrations.CreateModel(
|
||||
name='DrainEquip',
|
||||
fields=[
|
||||
('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')),
|
||||
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||
('params_list', models.JSONField(default=list, null=True, verbose_name='监测参数列表')),
|
||||
('drain', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='enp.drain', verbose_name='排口')),
|
||||
('equipment', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='em.equipment', verbose_name='关联设备')),
|
||||
('id', models.CharField(editable=False, help_text='主键ID', max_length=20,
|
||||
primary_key=True, serialize=False, verbose_name='主键ID')),
|
||||
('create_time', models.DateTimeField(
|
||||
default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||
('update_time', models.DateTimeField(
|
||||
auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||
('is_deleted', models.BooleanField(
|
||||
default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||
('params_list', models.JSONField(
|
||||
default=list, null=True, verbose_name='监测参数列表')),
|
||||
('drain', models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE, to='enp.drain', verbose_name='排口')),
|
||||
('equipment', models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE, to='em.equipment', verbose_name='关联设备')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
|
@ -60,16 +81,19 @@ class Migration(migrations.Migration):
|
|||
migrations.AddField(
|
||||
model_name='drain',
|
||||
name='equipments',
|
||||
field=models.ManyToManyField(blank=True, related_name='drain_equipments', through='enp.DrainEquip', to='em.Equipment', verbose_name='关联设备'),
|
||||
field=models.ManyToManyField(blank=True, related_name='drain_equipments',
|
||||
through='enp.DrainEquip', to='em.Equipment', verbose_name='关联设备'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='drain',
|
||||
name='mgroup',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='mtm.mgroup', verbose_name='所属工段'),
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE, to='mtm.mgroup', verbose_name='所属工段'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='drain',
|
||||
name='update_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='drain_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人'),
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name='drain_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人'),
|
||||
),
|
||||
]
|
||||
|
|
|
@ -0,0 +1,66 @@
|
|||
# Generated by Django 3.2.12 on 2024-01-19 02:53
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('enp', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunSQL(
|
||||
sql=[(
|
||||
"""
|
||||
CREATE TABLE public.enp_envdata (
|
||||
"time" timestamp NOT NULL,
|
||||
"equipment_id" text NOT NULL,
|
||||
"is_online" INT DEFAULT 1,
|
||||
"running_state" INT DEFAULT 10,
|
||||
"dust_rtd" decimal,
|
||||
"dust_zs" decimal,
|
||||
"temperature" decimal,
|
||||
"pressure" decimal,
|
||||
"speed" decimal,
|
||||
"humidity" decimal,
|
||||
"flux" decimal,
|
||||
"pm25" decimal,
|
||||
"pm10" decimal,
|
||||
"tsp" decimal,
|
||||
"wind_direction" INT,
|
||||
"wind_speed" decimal,
|
||||
"so2_rtd" decimal,
|
||||
"so2_zs" decimal,
|
||||
"nox_rtd" decimal,
|
||||
"nox_zs" decimal,
|
||||
"o2" decimal,
|
||||
CONSTRAINT enp_envdata_pkey PRIMARY KEY (time, equipment_id)
|
||||
);
|
||||
SELECT create_hypertable('enp_envdata', 'time');
|
||||
"""
|
||||
)],
|
||||
reverse_sql=[
|
||||
"DROP TABLE IF EXISTS public.enp_envdata;"
|
||||
]
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='drainequip',
|
||||
name='dust_alarm',
|
||||
field=models.DecimalField(
|
||||
blank=True, decimal_places=4, max_digits=10, null=True, verbose_name='颗粒物报警值'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='drainequip',
|
||||
name='drain',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name='drainequip_drain', to='enp.drain', verbose_name='排口'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='drainequip',
|
||||
name='equipment',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name='drainequip_equipment', to='em.equipment', verbose_name='关联设备'),
|
||||
),
|
||||
]
|
|
@ -1,48 +0,0 @@
|
|||
# Generated by Django 3.2.12 on 2024-01-12 04:17
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('em', '0010_auto_20240110_1232'),
|
||||
('enp', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunSQL(
|
||||
sql=[(
|
||||
"""
|
||||
CREATE TABLE public.enp_envdata (
|
||||
"time" timestamp NOT NULL,
|
||||
"equipment_id" text NOT NULL,
|
||||
"is_online" bool NOT NULL,
|
||||
"is_runing" bool NOT NULL,
|
||||
"dust_rtd" decimal,
|
||||
"dust_zs" decimal,
|
||||
"temperature" decimal,
|
||||
"pressure" decimal,
|
||||
"speed" decimal,
|
||||
"humidity" decimal,
|
||||
"flux" decimal,
|
||||
"pm25" decimal,
|
||||
"pm10" decimal,
|
||||
"tsp" decimal,
|
||||
"wind_speed" decimal,
|
||||
"so2_rtd" decimal,
|
||||
"so2_zs" decimal,
|
||||
"nox_rtd" decimal,
|
||||
"nox_zs" decimal,
|
||||
"o2" decimal,
|
||||
CONSTRAINT enp_envdata_pkey PRIMARY KEY (time, equipment_id)
|
||||
);
|
||||
SELECT create_hypertable('enp_envdata', 'time');
|
||||
"""
|
||||
)],
|
||||
reverse_sql=[
|
||||
"DROP TABLE IF EXISTS public.enp_envdata;"
|
||||
]
|
||||
)
|
||||
]
|
|
@ -0,0 +1,25 @@
|
|||
# Generated by Django 3.2.12 on 2024-01-19 08:20
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('enp', '0002_auto_20240119_1053'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='drainequip',
|
||||
name='pm10_alarm',
|
||||
field=models.DecimalField(
|
||||
blank=True, decimal_places=4, max_digits=10, null=True, verbose_name='PM10报警值'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='drainequip',
|
||||
name='pm25_alarm',
|
||||
field=models.DecimalField(
|
||||
blank=True, decimal_places=4, max_digits=10, null=True, verbose_name='PM2.5报警值'),
|
||||
),
|
||||
]
|
|
@ -52,17 +52,30 @@ class DrainEquip(BaseModel):
|
|||
equipment = models.ForeignKey(
|
||||
Equipment, verbose_name='关联设备', related_name='drainequip_equipment', on_delete=models.CASCADE)
|
||||
params_list = models.JSONField('监测参数列表', default=list, null=True)
|
||||
dust_alarm = models.DecimalField(
|
||||
'颗粒物报警值', max_digits=10, decimal_places=4, null=True, blank=True)
|
||||
pm10_alarm = models.DecimalField(
|
||||
'PM10报警值', max_digits=10, decimal_places=4, null=True, blank=True)
|
||||
pm25_alarm = models.DecimalField(
|
||||
'PM2.5报警值', max_digits=10, decimal_places=4, null=True, blank=True)
|
||||
|
||||
|
||||
class EnvData(models.Model):
|
||||
"""
|
||||
环保监测数据
|
||||
"""
|
||||
RUNING_STATE_CHOICES = (
|
||||
(10, '运行'),
|
||||
(20, '待机'),
|
||||
(30, '停机'),
|
||||
(40, '故障'),
|
||||
(50, '未知')
|
||||
)
|
||||
equipment = models.ForeignKey(
|
||||
Equipment, verbose_name='关联设备', on_delete=models.CASCADE)
|
||||
time = models.DateTimeField('采集时间', primary_key=True)
|
||||
is_online = models.BooleanField('是否在线', default=True)
|
||||
is_runing = models.BooleanField('是否运行', default=True)
|
||||
is_online = models.PositiveSmallIntegerField('是否在线', default=1)
|
||||
running_state = models.PositiveSmallIntegerField('运行状态', default=10)
|
||||
dust_rtd = models.DecimalField(
|
||||
'颗粒物实测(mg/m3)', max_digits=10, decimal_places=4, null=True, blank=True)
|
||||
dust_zs = models.DecimalField(
|
||||
|
@ -83,6 +96,8 @@ class EnvData(models.Model):
|
|||
'PM10(ug/m3)', max_digits=10, decimal_places=4, null=True, blank=True)
|
||||
tsp = models.DecimalField(
|
||||
'TSP(ug/m3)', max_digits=10, decimal_places=4, null=True, blank=True)
|
||||
wind_direction = models.PositiveSmallIntegerField(
|
||||
'风向', null=True, blank=True)
|
||||
wind_speed = models.DecimalField(
|
||||
'风速(m/s)', max_digits=10, decimal_places=4, null=True, blank=True)
|
||||
so2_rtd = models.DecimalField(
|
||||
|
|
|
@ -3,19 +3,23 @@ CONNECTION = "postgres://postgres:zcDsj2021@49.232.14.174:5432/ehs_develop"
|
|||
with psycopg2.connect(CONNECTION) as conn:
|
||||
cursor = conn.cursor()
|
||||
query = """
|
||||
SELECT generate_series(now() - interval '24 hour', now(), interval '5 minute') AS time,
|
||||
'3491356310052896768' as equipment_id,
|
||||
random()*100 AS temperature,
|
||||
random() AS pressure;
|
||||
SELECT generate_series(now() - interval '48 hour', now(), interval '20 second') AS time,
|
||||
'3491356310052896768' as equipment_id,
|
||||
random()*100 AS temperature,
|
||||
random() AS pressure,
|
||||
random()*10 AS dust_rtd,
|
||||
random()*10 AS pm25,
|
||||
random()*10 AS pm10
|
||||
"""
|
||||
cursor.execute(query)
|
||||
values = cursor.fetchall()
|
||||
for i in values:
|
||||
try:
|
||||
insert_values = [(str(row[0]), row[1], 1, 10, row[2],
|
||||
row[3], row[4], row[5], row[6]) for row in values]
|
||||
query_insert = """
|
||||
INSERT INTO enp_envdata (time, equipment_id, is_online, is_runing, temperature, pressure) values (%s, %s, true, true, %s, %s)
|
||||
INSERT INTO enp_envdata (time, equipment_id, is_online, running_state, temperature, pressure, dust_rtd, pm25, pm10) values (%s, %s, %s, %s, %s, %s, %s, %s, %s)
|
||||
"""
|
||||
try:
|
||||
cursor.execute(query_insert, (i[0], i[1], i[2], i[3]))
|
||||
except (Exception, psycopg2.Error) as error:
|
||||
print(error.pgerror)
|
||||
cursor.executemany(query_insert, insert_values)
|
||||
except (Exception, psycopg2.Error) as error:
|
||||
print(error)
|
||||
conn.commit()
|
||||
|
|
Loading…
Reference in New Issue