feat: enp调整
This commit is contained in:
parent
c88f33ad4d
commit
ddd0d2a6df
|
@ -21,22 +21,36 @@ class Migration(migrations.Migration):
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='Drain',
|
name='Drain',
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')),
|
('id', models.CharField(editable=False, help_text='主键ID', max_length=20,
|
||||||
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
primary_key=True, serialize=False, verbose_name='主键ID')),
|
||||||
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
('create_time', models.DateTimeField(
|
||||||
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||||
('type', models.PositiveSmallIntegerField(choices=[(10, '排放口'), (20, '污染源')], help_text="((10, '排放口'), (20, '污染源'))", 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='编号')),
|
('number', models.CharField(max_length=20, verbose_name='编号')),
|
||||||
('name', 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='排口等级')),
|
('level', models.PositiveSmallIntegerField(choices=[
|
||||||
('cate', models.CharField(blank=True, choices=[('product', '生产工艺'), ('mtrans', '物料输送'), ('mstore', '物料储存')], help_text="(('product', '生产工艺'), ('mtrans', '物料输送'), ('mstore', '物料储存'))", max_length=10, null=True, verbose_name='分类')),
|
(10, '主要排放口'), (20, '次要排放口')], default=20, help_text="((10, '主要排放口'), (20, '次要排放口'))", verbose_name='排口等级')),
|
||||||
('height', models.PositiveSmallIntegerField(default=0, verbose_name='排气筒高度')),
|
('cate', models.CharField(blank=True, choices=[('product', '生产工艺'), ('mtrans', '物料输送'), (
|
||||||
('treatment_capacity', models.CharField(default='', max_length=20, verbose_name='处理量')),
|
'mstore', '物料储存')], help_text="(('product', '生产工艺'), ('mtrans', '物料输送'), ('mstore', '物料储存'))", max_length=10, null=True, verbose_name='分类')),
|
||||||
('pm_limit', models.FloatField(default=10, help_text='单位:mg/m³', verbose_name='PM超低排放限值')),
|
('height', models.PositiveSmallIntegerField(
|
||||||
('measure', models.CharField(default='', max_length=20, verbose_name='治理措施')),
|
default=0, verbose_name='排气筒高度')),
|
||||||
('coordinates', models.JSONField(default=dict, null=True, verbose_name='坐标')),
|
('treatment_capacity', models.CharField(
|
||||||
('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='所属部门')),
|
default='', max_length=20, 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='创建人')),
|
('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={
|
options={
|
||||||
'abstract': False,
|
'abstract': False,
|
||||||
|
@ -45,13 +59,20 @@ class Migration(migrations.Migration):
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='DrainEquip',
|
name='DrainEquip',
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')),
|
('id', models.CharField(editable=False, help_text='主键ID', max_length=20,
|
||||||
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
primary_key=True, serialize=False, verbose_name='主键ID')),
|
||||||
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
('create_time', models.DateTimeField(
|
||||||
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||||
('params_list', models.JSONField(default=list, null=True, verbose_name='监测参数列表')),
|
('update_time', models.DateTimeField(
|
||||||
('drain', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='enp.drain', verbose_name='排口')),
|
auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||||
('equipment', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='em.equipment', 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={
|
options={
|
||||||
'abstract': False,
|
'abstract': False,
|
||||||
|
@ -60,16 +81,19 @@ class Migration(migrations.Migration):
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name='drain',
|
model_name='drain',
|
||||||
name='equipments',
|
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(
|
migrations.AddField(
|
||||||
model_name='drain',
|
model_name='drain',
|
||||||
name='mgroup',
|
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(
|
migrations.AddField(
|
||||||
model_name='drain',
|
model_name='drain',
|
||||||
name='update_by',
|
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 = models.ForeignKey(
|
||||||
Equipment, verbose_name='关联设备', related_name='drainequip_equipment', on_delete=models.CASCADE)
|
Equipment, verbose_name='关联设备', related_name='drainequip_equipment', on_delete=models.CASCADE)
|
||||||
params_list = models.JSONField('监测参数列表', default=list, null=True)
|
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):
|
class EnvData(models.Model):
|
||||||
"""
|
"""
|
||||||
环保监测数据
|
环保监测数据
|
||||||
"""
|
"""
|
||||||
|
RUNING_STATE_CHOICES = (
|
||||||
|
(10, '运行'),
|
||||||
|
(20, '待机'),
|
||||||
|
(30, '停机'),
|
||||||
|
(40, '故障'),
|
||||||
|
(50, '未知')
|
||||||
|
)
|
||||||
equipment = models.ForeignKey(
|
equipment = models.ForeignKey(
|
||||||
Equipment, verbose_name='关联设备', on_delete=models.CASCADE)
|
Equipment, verbose_name='关联设备', on_delete=models.CASCADE)
|
||||||
time = models.DateTimeField('采集时间', primary_key=True)
|
time = models.DateTimeField('采集时间', primary_key=True)
|
||||||
is_online = models.BooleanField('是否在线', default=True)
|
is_online = models.PositiveSmallIntegerField('是否在线', default=1)
|
||||||
is_runing = models.BooleanField('是否运行', default=True)
|
running_state = models.PositiveSmallIntegerField('运行状态', default=10)
|
||||||
dust_rtd = models.DecimalField(
|
dust_rtd = models.DecimalField(
|
||||||
'颗粒物实测(mg/m3)', max_digits=10, decimal_places=4, null=True, blank=True)
|
'颗粒物实测(mg/m3)', max_digits=10, decimal_places=4, null=True, blank=True)
|
||||||
dust_zs = models.DecimalField(
|
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)
|
'PM10(ug/m3)', max_digits=10, decimal_places=4, null=True, blank=True)
|
||||||
tsp = models.DecimalField(
|
tsp = models.DecimalField(
|
||||||
'TSP(ug/m3)', max_digits=10, decimal_places=4, null=True, blank=True)
|
'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(
|
wind_speed = models.DecimalField(
|
||||||
'风速(m/s)', max_digits=10, decimal_places=4, null=True, blank=True)
|
'风速(m/s)', max_digits=10, decimal_places=4, null=True, blank=True)
|
||||||
so2_rtd = models.DecimalField(
|
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:
|
with psycopg2.connect(CONNECTION) as conn:
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
query = """
|
query = """
|
||||||
SELECT generate_series(now() - interval '24 hour', now(), interval '5 minute') AS time,
|
SELECT generate_series(now() - interval '48 hour', now(), interval '20 second') AS time,
|
||||||
'3491356310052896768' as equipment_id,
|
'3491356310052896768' as equipment_id,
|
||||||
random()*100 AS temperature,
|
random()*100 AS temperature,
|
||||||
random() AS pressure;
|
random() AS pressure,
|
||||||
|
random()*10 AS dust_rtd,
|
||||||
|
random()*10 AS pm25,
|
||||||
|
random()*10 AS pm10
|
||||||
"""
|
"""
|
||||||
cursor.execute(query)
|
cursor.execute(query)
|
||||||
values = cursor.fetchall()
|
values = cursor.fetchall()
|
||||||
for i in values:
|
|
||||||
query_insert = """
|
|
||||||
INSERT INTO enp_envdata (time, equipment_id, is_online, is_runing, temperature, pressure) values (%s, %s, true, true, %s, %s)
|
|
||||||
"""
|
|
||||||
try:
|
try:
|
||||||
cursor.execute(query_insert, (i[0], i[1], i[2], i[3]))
|
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, running_state, temperature, pressure, dust_rtd, pm25, pm10) values (%s, %s, %s, %s, %s, %s, %s, %s, %s)
|
||||||
|
"""
|
||||||
|
cursor.executemany(query_insert, insert_values)
|
||||||
except (Exception, psycopg2.Error) as error:
|
except (Exception, psycopg2.Error) as error:
|
||||||
print(error.pgerror)
|
print(error)
|
||||||
conn.commit()
|
conn.commit()
|
||||||
|
|
Loading…
Reference in New Issue