60 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
| # Create your tasks here
 | |
| from __future__ import absolute_import, unicode_literals
 | |
| from datetime import timedelta
 | |
| from apps.utils.tasks import CustomTask
 | |
| from django.utils import timezone
 | |
| from celery import shared_task
 | |
| from .models import DrainEquip, EnvData
 | |
| from apps.em.models import Equipment
 | |
| import random
 | |
| 
 | |
| 
 | |
| @shared_task(base=CustomTask)
 | |
| def generate_envdata():
 | |
|     """生成模拟数据"""
 | |
|     now = timezone.now().replace(microsecond=0)
 | |
|     eIds = DrainEquip.objects.values_list("equipment__id", flat=True)
 | |
|     equips = (Equipment.objects.filter(id__in=eIds) | Equipment.objects.filter(cate__code="aqms")).distinct()
 | |
|     save_list = []
 | |
|     for equip in equips:
 | |
|         default_dict = {"equipment": equip, "timex": now, "running_state": 10}
 | |
|         equip.running_state = 10
 | |
|         equip.save(update_fields=["running_state"])
 | |
|         if equip.cate and equip.cate.code in ["cems", "aqms", "tsp"]:
 | |
|             if equip.cate.code == "cems":
 | |
|                 dust_rtd = random.uniform(0.1, 0.3)
 | |
|                 default_dict["dust_rtd"] = dust_rtd
 | |
|                 default_dict["dust_zs"] = dust_rtd
 | |
|                 so2_rtd = random.uniform(0.1, 2)
 | |
|                 default_dict["so2_rtd"] = so2_rtd
 | |
|                 default_dict["so2_zs"] = so2_rtd
 | |
|                 nox_rtd = random.uniform(0.1, 2)
 | |
|                 default_dict["nox_rtd"] = nox_rtd
 | |
|                 default_dict["nox_zs"] = nox_rtd
 | |
|                 default_dict["temperature"] = random.uniform(12, 30)
 | |
|                 default_dict["pressure"] = random.uniform(-0.06, 0.1)
 | |
|                 default_dict["speed"] = random.uniform(8, 13)
 | |
|                 default_dict["humidity"] = random.uniform(1, 1.2)
 | |
|                 default_dict["flux"] = random.uniform(2000, 3000)
 | |
|             elif equip.cate.code == "tsp":
 | |
|                 default_dict["tsp"] = random.uniform(0.01, 0.04)
 | |
|                 default_dict["temperature"] = random.uniform(12, 30)
 | |
|                 default_dict["humidity"] = random.uniform(30, 40)
 | |
|             elif equip.cate.code == "aqms":
 | |
|                 default_dict["pm25"] = random.uniform(8, 12)
 | |
|                 default_dict["pm10"] = random.uniform(26, 35)
 | |
|                 default_dict["temperature"] = random.uniform(12, 30)
 | |
|                 default_dict["humidity"] = random.uniform(30, 40)
 | |
|                 default_dict["wind_speed"] = random.uniform(0.1, 1)
 | |
|                 default_dict["wind_direction"] = 1
 | |
|         save_list.append(EnvData(**default_dict))
 | |
|     EnvData.objects.bulk_create(save_list)
 | |
| 
 | |
| 
 | |
| @shared_task(base=CustomTask)
 | |
| def cal_envdata():
 | |
|     """
 | |
|     计算监测达标率等值
 | |
|     """
 | |
|     pass
 |