| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- from smartfarming.models.pest_count import MongoCBDPestWarning
- from smartfarming.models.device import MongoDevice
- from kedong.decoration import kedong_deco, PortError
- @kedong_deco(login_required=True)
- def user_cbd_pest_warning_record_list(request):
- """
- 测报灯预警记录列表
-
- page 非必传(str) 页码数
- page_size 非必传(str) 条数
- warning_type 必传(str) 1目标种类预警 2、指定害虫数量预警 3 害虫数量总和预警 4综合预警
- start_time 非必传(str) 开始时间 时间戳
- end_time 非必传(str) 结束时间 时间戳
- """
-
- page = request.POST.get("page","1")
- page_size = request.POST.get("page_size","10")
- warning_type = request.POST.get("warning_type")
- start_time = request.POST.get("start_time")
- end_time = request.POST.get("end_time")
-
- if page and page_size:
- if page.isdigit() and page_size.isdigit():
- page = int(page)
- page_size = int(page_size)
- else:
- raise PortError("page&page_size","参数有误")
- else:
- page = 1
- page_size = 10
-
- start = max((page - 1), 0) * page_size
- end = page * page_size
- cbd_pest_warnig_query = MongoCBDPestWarning.objects.filter().order_by("-id")
- if warning_type:
- if warning_type not in("1","2","3","4"):
- raise PortError(warning_type,"参数超出范围")
- cbd_pest_warnig_query = cbd_pest_warnig_query.filter(warning_types=warning_type)
-
- if start_time and end_time:
- if not (start_time.isdigit() and end_time.isdigit()):
- raise PortError("start_time&end_time","参数有误")
- cbd_pest_warnig_query = cbd_pest_warnig_query.filter(upltime__range=(int(start_time),int(end_time)))
- total = cbd_pest_warnig_query.count()
-
- data = []
- for xx in cbd_pest_warnig_query[start:end]:
- data.append({
- "id":xx.id,
- "device_id":xx.device_id,
- "warning_type":xx.warning_types,
- "warning_name": xx.warning_name,
- "warning_content": xx.warning_content,
- "upltime":xx.upltime,
- "send_user":xx.send_user,
- "status":xx.status,
- })
- return {"data" : data, "total" : total}
- @kedong_deco(login_required=True)
- def user_cbd_pest_warning_record_read(request):
- """
- 测报灯预警已读
- 参数
- id 必传(str) 预警id
- req 非必传(str) 一键已读必传 "all" 单个已读无需传递
- """
- req = request.POST.get("req")
- cbd_pest_warnig_query = MongoCBDPestWarning.objects.all()
- try:
- if req and req=="all":
- cbd_pest_warnig_query.update(status=1)
- else:
- d_id = request.POST.get("id")
- cbd_pest_warnig_query = cbd_pest_warnig_query.get(id=d_id)
- cbd_pest_warnig_query.status = 1
- cbd_pest_warnig_query.save()
- return True
- except Exception as e:
- raise PortError("start_time&end_time","参数有误")
- @kedong_deco(login_required=True)
- def user_device_map_location(request):
- """
- 测报灯、气象站设备地图位置
- 参数
- device_ids 必传(str) 设备号用多个,进行连接
-
- """
-
- device_ids = request.POST.get("device_ids")
- if not device_ids:
- raise PortError("device_ids","参数缺失")
- device_list = device_ids.split(",")
- data = []
- device_query = MongoDevice.objects.filter(device_type_id__in=[3,5]).filter(device_id__in=device_list)
- for xx in device_query:
- data.append({
- "device_id" : xx.device_id,
- "device_type_id" : xx.device_type_id,
- "device_name" : xx.device_name,
- "lat" : xx.lat,
- "lng" : xx.lng,
- "uptime" : xx.uptime
- })
- return data
|