# -*- coding: utf-8 -*- import copy import datetime import json import os import re import time import requests from django.conf.urls import url from django.contrib import auth from django.contrib.auth import authenticate from django.contrib.auth import login as auth_login from django.contrib.auth import logout from django.contrib.auth.decorators import login_required from django.contrib.auth.hashers import check_password, make_password from django.db.models import Q from django.http import HttpResponse, response from django.shortcuts import redirect, render from django.views.generic import ListView from django.views.generic.base import View from PIL import Image from requests.auth import HTTPBasicAuth from apps.AppInfoManage.models import * from apps.EquipManage.views import CJSONEncoder, equip_validation from apps.ReportManage.all_dict import api_code, insect_dict_new, qxz_dict from apps.SimInfo.views import get_siminfo, get_simsinfo from yfwlw_pro.settings import get_client_ip # 微信小程序登录: class wechat_login(View): def post(self, request): user_name = request.POST.get("username") pass_word = request.POST.get("password") #校验用户和密码 if MyUser.objects.filter(username=user_name).exists(): account = MyUser.objects.get(username=user_name) ret = check_password(pass_word, account.password) if ret: auth_obj = auth.authenticate(username=user_name, password=pass_word) if auth_obj: print("写入登陆状态成功") auth.login(request, auth_obj) #将当前登录的用户名写入session request.session['username'] = user_name # name1 = request.session["username"] # print("name",name1) # name2 = request.session.get("username","") # print("name2",name2) data = {"code":"0","username":user_name} else: data = {"code":"1","username":""} else: data = {"code":"2","username":""} data = json.dumps(data) return HttpResponse(data) # 退出APP登录: class wechat_logout(View): def get(self, request): # username = request.POST.get('username') del request.session["username"] data = {"code":"0"} data = json.dumps(data) return HttpResponse(data) #用户设备类型 class wechat_user_equip_list(View): def post(self,request): user_name = request.POST.get("username") # user_name = request.user.username print("-------------------->>",request.user) print("username",user_name) # print("current_user",current_user) try: current_user = MyUser.objects.get(username=user_name) except: return HttpResponse("0") equip_type_list = [] if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("普通用户") user_equip_list = Equip.objects.filter(equip_user=current_user) for i in user_equip_list: equip_type_list.append(i.equip_type.type_id) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("代理商") user_equip_list = Equip.objects.filter(equip_agency=current_user.user_agency) for i in user_equip_list: equip_type_list.append(i.equip_type.type_id) # 新增 elif current_user.is_superuser == True or current_user.is_staff == True: print("管理员") user_equip_list = Equip_type.objects.all() for i in user_equip_list: equip_type_list.append(i.type_id) else: return HttpResponse("0") equip_type_list = list(set(equip_type_list)) data = {'dat':equip_type_list} data = json.dumps(data) print(data) return HttpResponse(data) # 个人信息: class wechat_user_info(View): def get(self, request): uname = request.GET.get("username") try: user_name = MyUser.objects.get(username=uname) if user_name.is_superuser == 1 and user_name.is_staff == 1: # 超级管理员 role = 0 elif user_name.is_superuser == 0 and user_name.is_staff == 1: # 管理员 role = 1 elif user_name.is_superuser == 0 and user_name.is_staff == 0: # 普通用户 role = 2 except Exception as e: print(e) role = 3 data = {"data":role} data = json.dumps(data) return HttpResponse(data) def post(self, request): req = request.POST.get('req') name = request.POST.get('username') print("req",req) print("name","name") if req == "info": user = MyUser.objects.filter(username=name) print(user) for x in user: data = {"username": x.username, "email": x.email, "user_phone": x.user_phone, "user_pro": x.user_pro, "user_city": x.user_city, "user_area": x.user_area, "user_picture":str(x.user_picture) } data = json.dumps(data) print("data:",data) return HttpResponse(data) elif req == "change_info": user = MyUser.objects.get(username=name) user.user_phone = request.POST.get('phone') user.user_pro = request.POST.get('province') user.user_city = request.POST.get('city') user.user_area = request.POST.get('area') print("phone:", request.POST.get('phone')) print("province:", request.POST.get('province')) print("city:", request.POST.get('city')) print("area:", request.POST.get('area')) try: user.save() User_Log.objects.create(log_user=request.user.username, log_ip=request.META['REMOTE_ADDR'], log_desc='修改个人信息') data = "0" return HttpResponse(data) except: data = "1" return HttpResponse(data) # 修改头像: elif req == "change_photo": user = MyUser.objects.get(username=name) user_photo = request.FILES.get('file') print("APP修改用户头像:", user_photo) user_photo_dir = 'user_photo/' # 判断如果路径不存在,即创建路径 if os.path.exists(user_photo_dir) == False: os.makedirs(user_photo_dir) img = Image.open(user_photo) img.save(user_photo_dir + name+".png") new_photo = user_photo_dir + name+".png" # 数据库关联设备,并在照片的表中存入路径: user.user_picture = new_photo user.save() data = "0" return HttpResponse(data) # 设备管理列表: class wechat_equip_list(View): def post(self, request): types = int(request.POST.get('type')) print("types:", types) page = int(request.POST.get('page')) print("page:", page) current_user = request.POST.get('username') print("current_user:", current_user) current_user = MyUser.objects.get(username=current_user) equip_id = request.POST.get("equip_id") #杀虫灯 if types == 2: equips = SCDstatus #测报灯 elif types == 3: equips = CBDstatus #孢子仪 elif types == 7: equips = BZYstatus #气象站 elif types == 5: equips = QXZstatus_New #依科曼性诱设备 elif types == 8: equips = Trapstatus #智能性诱 elif types == 4: equips = YBQstatus # 糖醋测报 elif types == 9: equips = TCCBstatus # 测报RTU elif types == 10: equips = RTUstatus else: return HttpResponse("参数不对") if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---不是管理员") equip_list = Equip.objects.filter(equip_user=current_user,equip_type__type_id=types) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---经销商") equip_list = Equip.objects.filter(equip_agency=current_user.user_agency,equip_type__type_id=types) else: print("---管理员") equip_list = Equip.objects.filter(equip_type__type_id=types) if equip_id: equip_list = equip_list.filter(equip_id__contains=equip_id) nums = len(equip_list) equip_list = equip_list[(10*(page-1)):(page*10)] data = {'nums': nums, 'dat': ""} dat = [] cbd_img = 0 sex_type = "" iccid = "" for i in equip_list: equip_location = i.equip_location if types == 3: cbd_photo = CBDphoto.objects.filter(equip_id=i.equip_id) if cbd_photo.exists(): cbd_img = 1 if types == 5: qxz_status = QXZ_Base_Info.objects.filter(equip_id=i.equip_id) if qxz_status: for y in qxz_status: iccid = y.iccid sta1 = equips.objects.filter(equip_id=i.equip_id).select_related() for x in sta1: try: if types == 2: iccid = eval(x.scd_status)["iccid"] elif types == 3: iccid = eval(x.cbd_status)["iccid"] elif types == 7: iccid = eval(x.bzy_status)["iccid"] elif types == 4: iccid = eval(x.ybq_status)["iccid"] #性诱类型 sex_type = x.sex_type except: iccid = '' try: sta2 = {"equip_id": x.equip_id.equip_id, "equip_user": x.equip_id.equip_user.username, "equip_name": x.equip_id.equip_name, "equip_type": types, "equip_desc":x.equip_id.equip_desc, "equip_add_time":x.upl_time, "cbd_img":cbd_img, "is_online":x.is_online, "equip_location":equip_location, "iccid":iccid, "sex_type":sex_type} except AttributeError: sta2 = {"equip_id": x.equip_id.equip_id, "equip_user": "", "equip_name": x.equip_id.equip_name, "equip_type": types, "equip_desc":x.equip_id.equip_desc, "equip_add_time":x.upl_time, "cbd_img":cbd_img, "is_online":x.is_online, "equip_location":equip_location, "iccid":"", "sex_type":""} dat.append(sta2) User_Log.objects.create(log_user=request.user.username, log_ip=request.META['REMOTE_ADDR'], log_desc='设备列表') data['dat'] = dat data = json.dumps(data, cls=CJSONEncoder) return HttpResponse(data) #设备修改名称,修改位置 class wechat_equip_set(View): def post (self,request): equip_id = request.POST.get("equip_id") ret = request.POST.get("ret") try: equip_list = Equip.objects.get(equip_id=equip_id) if ret == "name": name = request.POST.get("name") equip_list.equip_name = name equip_list.save() elif ret == "site": site = request.POST.get("site") equip_list.equip_location = site equip_list.save() data = {"code":"0"} except Exception as e: print("e") data = {"code":"1"} data = json.dumps(data) return HttpResponse(data) # #设备搜索接口(弃用) # class wechat_equip_search(View): # def post(self, request): # equip_id = request.POST.get('equip_id') # types = int(request.POST.get('type')) # current_user = request.POST.get('username') # print("current_user:", current_user) # current_user = MyUser.objects.get(username=current_user) # print("equip_id:", equip_id) # equip_list = Equip.objects.filter(equip_id__contains=equip_id,equip_type__type_id=types,equip_user=current_user) # data = {'dat': ""} # dat = [] # for i in equip_list: # cbd_photo = CBDphoto.objects.filter(equip_id=i.equip_id) # if cbd_photo.exists(): # cbd_img = 1 # else: # cbd_img = 0 # sta1 = Equip.objects.filter(equip_id=i.equip_id).select_related() # for x in sta1: # try: # sta2 = {"equip_id": x.equip_id, # "equip_user": x.equip_user.username, # "equip_name": x.equip_name, # "equip_type": x.equip_type.type_id, # "equip_desc":x.equip_desc, # "equip_add_time":x.equip_add_time, # "cbd_img":cbd_img} # except AttributeError: # sta2 = {"equip_id": x.equip_id, # "equip_user": "", # "equip_name": x.equip_name, # "equip_type": x.equip_type.type_id, # "equip_desc":x.equip_desc, # "equip_add_time":x.equip_add_time, # "cbd_img":cbd_img} # dat.append(sta2) # User_Log.objects.create(log_user=request.user.username, # log_ip=request.META['REMOTE_ADDR'], log_desc='设备列表') # data['dat'] = dat # data = json.dumps(data, cls=CJSONEncoder) # return HttpResponse(data) # 设备管理详情: class wechat_equip_detail(View): def post(self, request): etype = request.POST.get('etype') print("etype:", etype) equip_id = request.POST.get('equip_id') print("equip_id:", equip_id) if etype == "scd": x = SCDstatus.objects.get(equip_id__equip_id=equip_id) scd = eval(x.scd_status) if x.equip_id.equip_user: user_name = x.equip_id.equip_user.username else: user_name = "" print(user_name) sta2 = {"scd_status": scd, "ds": x.ds, "upl_time": x.upl_time.strftime('%Y-%m-%d %H:%M:%S'),"user_name":user_name, "equip_name": x.equip_id.equip_name,"equip_location":x.equip_location, "is_online": x.is_online, "off_time": x.off_time.strftime('%Y-%m-%d %H:%M:%S')} elif etype == "cbd": x = CBDstatus.objects.get(equip_id=equip_id) if x.equip_id.equip_user: user_name = x.equip_id.equip_user.username else: user_name = "" print(user_name) cbd = eval(x.cbd_status) sta2 = {"cbd_status": cbd, "upl_time": x.upl_time.strftime('%Y-%m-%d %H:%M:%S'),"equip_location":x.equip_location, "paramconf": x.paramconf, "equip_name": x.equip_id.equip_name,"user_name":user_name, "is_online": x.is_online, "off_time": x.off_time.strftime('%Y-%m-%d %H:%M:%S')} elif etype == "qxz": qxz_list = QXZstatus_New.objects.get(equip_id=equip_id) switch = QXZswitchstatus.objects.filter(equip_id=equip_id) if switch: switch = 1 else: switch = 0 data = [qxz_list.e1,qxz_list.e2,qxz_list.e3,qxz_list.e4,qxz_list.e5,qxz_list.e6,qxz_list.e7,qxz_list.e8,qxz_list.e9,qxz_list.e10, qxz_list.e11,qxz_list.e12,qxz_list.e13,qxz_list.e14, qxz_list.e15,qxz_list.e16,qxz_list.e17,qxz_list.e18, qxz_list.e19,qxz_list.e20,qxz_list.e21,qxz_list.e22, qxz_list.e23,qxz_list.e24,qxz_list.e25,qxz_list.e26, qxz_list.e27,qxz_list.e28,qxz_list.e29,qxz_list.e30] test = [i for i in data if i != ''] sta = [] try: for i in test: qxz = i.split("#") qw = qxz_dict[qxz[1]] qxz_num = [qxz[2],qxz[0],qw] sta.append(qxz_num) except Exception as e : print(e) if qxz_list.equip_id.equip_user: user_name = qxz_list.equip_id.equip_user.username else: user_name = "" print(user_name) sta2 = {"data":sta,"qxz_picture":qxz_list.qxz_picture.name,"user_name":user_name, "upl_time":qxz_list.upl_time.strftime('%Y-%m-%d %H:%M:%S'),"switch":switch} elif etype == "bzy": x = BZYstatus.objects.get(equip_id=equip_id) if x.equip_id.equip_user: user_name = x.equip_id.equip_user.username else: user_name = "" print(user_name) bzy = eval(x.bzy_status) sta2 = {"bzy_status": bzy, "upl_time": x.upl_time.strftime('%Y-%m-%d %H:%M:%S'),"user_name":user_name, "equip_name": x.equip_id.equip_name, "glass": x.glass, "liquid":x.liquid, "is_online": x.is_online, "off_time": x.off_time.strftime('%Y-%m-%d %H:%M:%S')} data = json.dumps(sta2) return HttpResponse(data) #设备时间筛选 class equip_time_list(View): def post(self,request): equip_id = request.POST.get("equip_id") page = int(request.POST.get("page")) req = request.POST.get("req") start_time = request.POST.get('start_time') end_time = request.POST.get('end_time') now_time = datetime.datetime.now() print("当前日期为:",now_time) print("当前月为:",now_time.month) print("当前月为:",now_time.year) if req == "scd": equips = SCDdata elif req == "cbd": equips = CBDdata elif req == "bzy": equips = BZYdata elif req == "qxz": equips = QXZdata_New elif req == "xy": equips = Trapdata if start_time: begindate = re.findall(r"\d+\.?\d*", start_time) enddate = re.findall(r"\d+\.?\d*", end_time) start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2])) end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2])) print("start_date:", start_date) print("end_date:", end_date) time_list = equips.objects.filter(equip_id=equip_id,upl_time__range=(start_date,end_date)).values() else: time_list = equips.objects.filter(equip_id=equip_id,upl_time__month=now_time.month,upl_time__year=now_time.year).values() date = [] for i in time_list: date.append({"time":i["upl_time"].strftime('%Y-%m-%d %H:%M:%S'),"id":i["id"]}) nums = len(date) dat = date[(10*(page-1)):(page*10)] data = {'dat': dat, 'nums': nums} data = json.dumps(data) return HttpResponse(data) # #杀虫灯报设备详情(弃用) # class scd_equip_details(View): # def post(self,request): # equip_id = request.POST.get("equip_id") # scd_list = SCDstatus.objects.filter(equip_id=equip_id).first() # try: # scd_data = eval(scd_list.scd_status) # imei = scd_data["imei"] # upl_time = scd_list.upl_time.strftime('%Y-%m-%d %H:%M:%S') # dver = scd_data["dver"] # csq = scd_data["csq"] # ws = scd_data["ws"] # if ws == 0: # ws = "待机" # elif ws == 1: # ws = "工作" # tt = scd_data["tt"] # lps = scd_data['lps'] # if lps == 0: # lps = "正常" # elif lps == 1: # lps = "保护" # else: # lps = '' # tbs = scd_data['tbs'] # if tbs == 0: # tbs = "正常" # elif tbs == 1: # tbs = "保护" # else: # tbs = '' # rps= scd_data['rps'] # if rps == 0: # rps = "正常" # elif rps == 1: # rps = "保护" # else: # rps = '' # tps = scd_data['tps'] # if tps == 0: # tps = "正常" # elif tps == 1: # tps = "保护" # else: # tps = '' # dps = scd_data['dps'] # if dps == 0: # dps = "正常" # elif dps == 1: # dps = "保护" # else: # dps = '' # data = {"imei":imei,"time":upl_time,"dver":dver,"csp":csq, # "ds":scd_list.ds,"ws":ws,"tt":tt,"lps":lps,"tbs":tbs,"rps":rps,"tps":tps,"dps":dps} # except Exception as e: # print("报错信息为:",e) # data = {"code":"1"} # data = json.dumps(data) # return HttpResponse(data) # #测报灯配置接口 # class scd_equip_paramconf(View): # def post(self,request): # equip_id = request.POST.get('id') # print("equip_id:", equip_id) # # 读取当前设备的参数配置信息: # sta1 = CBDstatus.objects.filter(equip_id=equip_id) # for x in sta1: # sta2 = {"paramconf":eval(x.paramconf)} # data = json.dumps(sta2, cls=CJSONEncoder) # print("配置信息的data:", data) # return HttpResponse(data) #杀虫灯报表管理详情 class scd_equip_report(View): def post(self,request): equip_id = request.POST.get("equip_id") req = request.POST.get("req") print("req",req) scd_date = SCDdata.objects.filter(equip_id=equip_id) if req == "new_time": scd_list = scd_date[:1] elif req == "time": scd_id = request.POST.get("id") scd_list = scd_date.filter(id=scd_id) elif req == "times": start_time = request.POST.get('start_time') end_time = request.POST.get('end_time') scd_list = scd_date.filter(upl_time__range=(start_time,end_time)) else: return HttpResponse("参数错误") scd_status = SCDstatus.objects.filter(equip_id=equip_id) data = [] #设备数据信息 date = [] # 设备状态信息 for x in scd_status: print(x.scd_status) date_status = eval(x.scd_status) try: clt = date_status["clt"] except: clt = "" date.append({ "iccid": date_status["iccid"], "dver": date_status["dver"], "csq": date_status["csq"], "clt":clt, "equip_location":x.equip_location, "dattim":date_status["dattim"], "lps":date_status["lps"], }) try: for i in scd_list: scd_data = eval(i.scd_data) print(scd_data) imei = scd_data["imei"] tt = scd_data["tt"] #定时时长 upl_time = i.upl_time.strftime('%Y-%m-%d %H:%M:%S') ds = scd_data["ds"] #设备开关 if ds == 0: ds = "关机" else: ds = "开机" ws = scd_data["ws"] #工作状态 if ws == 0: ws = "待机" elif ws == 1: ws = "工作" else: ws = "充电" tbs = scd_data["tbs"] #灯管状态 if tbs == 0: tbs = "正常" else : tbs = "保护" lps = scd_data["lps"] #光控 if lps == 0: lps = "正常" else: lps = "保护" rps = scd_data["rps"] #雨控 if rps == 0: rps = "正常" else: rps = "保护" tps = scd_data['tps'] #温控 if tps == 0: tps = "正常" else: tps = "保护" dps = scd_data['dps'] #倾倒 if dps == 0: dps = "正常" else: dps = "保护" cv = scd_data["cv"] #充电电压 bv = scd_data["bv"] #电池电压 at = scd_data["at"] #环境温度 ah = scd_data["ah"] #环境湿度 ct = scd_data["ct"] #电击次数 lng = scd_data["lng"] lat = scd_data["lat"] data.append({"imei":imei,"tt":tt,"time":upl_time,"ds":ds,"ws":ws,"tbs":tbs, "lps":lps,"rps":rps,"tps":tps,"dps":dps,"cv":cv,"bv":bv, "at":at,"ah":ah,"ct":ct,"lng":lng,"lat":lat,}) except: data = "" data = {"data":data,"date":date} data = json.dumps(data) print("data",data) return HttpResponse(data) #杀虫灯折线图(24小时数据) class scd_line_chart(View): def post(self, request): equip_id = request.POST.get('equip_id') start_time = request.POST.get('start_time') end_time = request.POST.get('end_time') start_date = datetime.datetime.now() - datetime.timedelta(days=2) end_date = datetime.datetime.now() if start_time: # 时间筛选 begindate = re.findall(r"\d+\.?\d*", start_time) enddate = re.findall(r"\d+\.?\d*", end_time) start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2])) end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2])) scd_list = SCDdata.objects.filter(equip_id=equip_id,upl_time__range=(start_date, end_date)).values() data = [] for i in scd_list: scd_list = eval(i["scd_data"]) data.append({"cv":scd_list["cv"],"bv":scd_list["bv"],"at":scd_list["at"],"ah":scd_list["ah"],"ct":scd_list["ct"], "time":i["upl_time"].strftime('%Y-%m-%d %H:%M:%S')}) data = {"data":data} data = json.dumps(data) print("data",data) return HttpResponse(data) # #杀虫灯击杀折线图 # class scd_ct_chart(View): # def post (self,request): # equip_id = request.POST.get('equip_id') # end_time = datetime.datetime.now() # start_date = end_time - datetime.timedelta(days=2) # scd_list = SCDdata.objects.filter(equip_id=equip_id) # data = [] # # if ret == "day": # # start_date = datetime.datetime.now() - datetime.timedelta(days=2) # # scd_list = scd_list.filter(upl_time__range=(start_date, end_time)).values() # # elif ret == "one": # # start_date = datetime.datetime.now() - datetime.timedelta(days=1) # # scd_list = scd_list.filter(upl_time__range=(start_date, end_time)).values() # # elif ret == "month": # # scd_list = scd_list.filter(upl_time__month=end_time.month,upl_time__year=end_time.year).values() # # for i in scd_list: # # scd_list = eval(i["scd_data"]) # # data.append({"ct":scd_list["ct"],"time":i["upl_time"].strftime('%Y-%m-%d %H:%M:%S')}) # data = json.dumps(data) # print("data",data) # return HttpResponse(data) #杀虫灯查询最新数据,最新状态 class scd_wechat_mqtt_read(View): def post(self,request): uid = request.POST.get('username') print("uid",uid) imei = request.POST.get('imei') print("imei",imei) print("下发查询") kind = request.POST.get("kind") if kind == "status" or kind == "data" or "paramconf": print("imei",imei) payload = {"cmd": "read", "ext": kind} topic = "/yfkj/scd/sub/"+imei cmd = {"topic": topic, "payload": json.dumps( payload), 'qos': 1} print(json.dumps(payload, indent=1)) res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = api_code[0] data = json.dumps(data) print(data) return HttpResponse(data) else: data = api_code[4] data = json.dumps(data) print(data) return HttpResponse(data) else: data = api_code[1] data = json.dumps(data) print(data) return HttpResponse(data) #杀虫灯下发开关 class scd_wechat_mqtt_switch(View): def post(self,request): uid = request.POST.get('username') print("uid",uid) imei = request.POST.get('imei') try: ds = int(request.POST.get('ds')) except Exception as e: print(e) data = api_code[1] if ds == 0 or ds == 1: # 控制设备开关 print("下发开关!!!") payload = {"cmd": "power", "ext": {"ds": ds}} else: data = api_code[3] data = json.dumps(data) print(data) return HttpResponse(data) topic = "/yfkj/scd/sub/"+imei #[1:-1] cmd = {"topic": topic, "payload": json.dumps( payload), 'qos': 1} print(json.dumps(payload, indent=1)) res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) print("res.status_code:", res.status_code) if res.status_code == 200: data = api_code[0] data = json.dumps(data) print(data) return HttpResponse(data) else: data = api_code[4] data = json.dumps(data) print(data) return HttpResponse(data) #杀虫灯下发控制 class scd_wechat_mqtt_set(View): def post(self,request): uid = request.POST.get('username') imei = request.POST.get('imei') # 用户验证 topic = "/yfkj/scd/sub/"+imei try: ts = request.POST.get('ts') except Exception as e: print(e) ts = "" # ts = timeSwitch 0光控 1时控 startBar 开始时间 stopBar 结束时间 print("ts",ts) if ts == '0': # 光控 try: hours = int(request.POST.get('hours')) except: data = api_code[1] data = json.dumps(data) print(data) return HttpResponse(data) if 0 <= hours < 24: payload = {"cmd": "timer", "ext": {"tt": hours}} cmd = {"topic": topic, "payload": json.dumps( payload), 'qos': 1} print(json.dumps(payload, indent=1)) res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = api_code[0] data = json.dumps(data) print(data) return HttpResponse(data) else: data = api_code[4] data = json.dumps(data) print(data) return HttpResponse(data) else: data = api_code[3] data = json.dumps(data) print(data) return HttpResponse(data) elif ts == '1': # 时控 try: begin = int(request.POST.get('begin')) end = int(request.POST.get('end')) except: data = api_code[1] data = json.dumps(data) return HttpResponse(data) if 0 <= begin <= 24 and 0 <= end <= 24: payload = {"cmd": "timeconf","ext": {"timeSwitch": int(ts),"startBar": begin,"stopBar": end}} cmd = {"topic": topic, "payload": json.dumps( payload), 'qos': 1} print(json.dumps(payload, indent=1)) res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) if res.status_code == 200: data = api_code[0] data = json.dumps(data) print(data) return HttpResponse(data) else: data = api_code[4] data = json.dumps(data) print(data) return HttpResponse(data) else: data = api_code[3] data = json.dumps(data) return HttpResponse(data) elif ts == "datt": print("下发上传时间间隔") dattim = int(request.POST.get('dattim')) payload = {"cmd":"dattim","ext":{"dattim":dattim}} cmd = {"topic": topic, "payload": json.dumps( payload), 'qos': 1} print(json.dumps(payload, indent=1)) res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) # else: # res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", # data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) if res.status_code == 200: data = api_code[0] data = json.dumps(data) print(data) return HttpResponse(data) else: data = api_code[4] data = json.dumps(data) print(data) return HttpResponse(data) else: data = api_code[3] data = json.dumps(data) print(data) return HttpResponse(data) #测报灯配置接口 class cbd_equip_paramconf(View): def post(self,request): equip_id = request.POST.get('id') print("equip_id:", equip_id) sta2 = 0 # 读取当前设备的参数配置信息: sta1 = CBDstatus.objects.filter(equip_id=equip_id) for x in sta1: if x.paramconf: sta2 = {"is_online":x.is_online,"paramconf":eval(x.paramconf)} data = json.dumps(sta2, cls=CJSONEncoder) print("配置信息的data:", data) return HttpResponse(data) # #测报灯设备详情(弃用) # class cbd_equip_details(View): # def post(self,request): # equip_id = request.POST.get("equip_id") # print(equip_id) # cbd_list = CBDstatus.objects.filter(equip_id=equip_id).first() # print(cbd_list) # try: # cbd_data = eval(cbd_list.cbd_status) # imei = cbd_data["imei"] # upl_time = cbd_list.upl_time.strftime('%Y-%m-%d %H:%M:%S') # dver = cbd_data["dver"] # csq = cbd_data["csq"] # iccid = cbd_data["iccid"] # is_online = cbd_list.is_online # if is_online == 0 : # is_online = "离线" # else: # is_online = "在线" # rps= cbd_data['rps'] # if rps == 0: # rps = "正常" # else: # rps = "雨控" # lps = cbd_data['lps'] # if lps == 0: # lps = "正常" # else: # lps = "光控" # tps = cbd_data['tps'] # if tps == 0: # tps = "正常" # else: # tps = "温控" # gs = cbd_data["gs"] # if gs == 0: # gs = "排水" # else: # gs = "落虫" # upds = cbd_data['upds'] # if upds == 0: # upds = "关闭" # else: # tcs = "打开" # dnds = cbd_data["dnds"] # if dnds == 0: # dnds = "关闭" # else: # dnds = "打开" # hs = cbd_data["hs"] # if hs == 0: # hs = "正常" # else: # hs = "加热" # ts = cbd_data['ts'] # if ts == 0: # ts = "光控" # else: # ts = "时控" # data = {"imei":imei,"time":upl_time,"dver":dver,"csp":csq,"iccid":iccid, # "rps":rps,"lps":lps,"tps":tps,"gs":gs,"upds":upds,"dnds":dnds, # "hs":hs,"ts":ts,"is_online":is_online} # except Exception as e: # print("报错信息为:",e) # data = {"code":"1"} # data = json.dumps(data) # return HttpResponse(data) #测报灯报表管理详情页面 class cbd_equip_report(View): def post(self,request): equip_id = request.POST.get("equip_id") req = request.POST.get("req") cbd_list = CBDdata.objects.filter(equip_id=equip_id) if req == "new_time": cbd_list = cbd_list[:1] elif req == "time": cbd_id = request.POST.get("id") cbd_lsit = cbd_list.filter(id=cbd_id) elif req == "times": start_time = request.POST.get('start_time') end_time = request.POST.get('end_time') begindate = re.findall(r"\d+\.?\d*", start_time) enddate = re.findall(r"\d+\.?\d*", end_time) start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2])) end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2])) print("start_date:", start_date) print("end_date:", end_date) cbd_list = cbd_list.filter(upl_time__range=(start_date,end_date)) data = [] #设备数据信息 date = [] # 设备状态信息 cbd_status = CBDstatus.objects.filter(equip_id=equip_id) for x in cbd_status: if x.paramconf: data_paramconf = eval(x.paramconf) tph = data_paramconf["tph"] # 高温保护值 tpl = data_paramconf["tpl"] # 低温保护值 else: tph = "" tpl = "" data_status = eval(x.cbd_status) try: ws = data_status["ws"] except: ws = "" try: lamp = data_status["lamp"] except: lamp = "" print("ws",ws) date.append( { "ws":ws, "gs":data_status["gs"], "hs":data_status["hs"], "csq":data_status["csq"], "dver":data_status["dver"], "lamp":lamp, "upds":data_status["upds"], "dnds":data_status["dnds"], "tph":tph, "tpl":tpl, "equip_location":x.equip_location } ) try: for i in cbd_list: cbd_data = eval(i.cbd_data) imei = cbd_data["imei"] upl_time = i.upl_time.strftime('%Y-%m-%d %H:%M:%S') at = cbd_data["at"] ah = cbd_data["ah"] hrt = cbd_data["hrt"] rps= cbd_data['rps'] lng = cbd_data["lng"] lat = cbd_data["lat"] vbat = cbd_data["vbat"] # lamp = cbd_data["lamp"] if rps == 0: rps = "正常" else: rps = "雨控" lps = cbd_data['lps'] if lps == 0: lps = "正常" else: lps = "光控" tps = cbd_data['tps'] if tps == 0: tps = "正常" else: tps = "温控" data.append({"imei":imei,"time":upl_time,"at":at,"ah":ah,"vbat":vbat, "rps":rps,"lps":lps,"tps":tps,"hrt":hrt,"lng":lng,"lat":lat}) except: data = [] data = {"data":data,"date":date} data = json.dumps(data) return HttpResponse(data) #测报灯折线图 class cbd_line_chart(View): def post(self,request): equip_id = request.POST.get("equip_id") start_time = request.POST.get("start_time") end_time = request.POST.get("end_time") start_date = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y-%m-%d') end_date = (datetime.datetime.now() + datetime.timedelta(days=1) ).strftime('%Y-%m-%d') print("start_date",start_date) print("end_date",end_date) cbd_list = CBDdata.objects.filter(equip_id=equip_id,upl_time__range=(start_date,end_date)) print(len(cbd_list)) if start_time: cbd_list = CBDdata.objects.filter(equip_id=equip_id,upl_time__range=(start_time,end_time)) data = [] for i in cbd_list: cbd_data = eval(i.cbd_data) at = cbd_data["at"] ah = cbd_data["ah"] data.append({"at":at,"ah":ah,"upl_time":i.upl_time.strftime('%Y-%m-%d %H:%M:%S')}) data = json.dumps(data) print("data",data) return HttpResponse(data) #测报灯删除图片(查看图片列表) class cbd_photo_list(View): def get(self, request): equip_id = request.GET.get("equip_id") print("equip_id",equip_id) page = int(request.GET.get("page")) cbd_photo = CBDphoto.objects.filter(equip_id=equip_id).values() data =[] for i in cbd_photo: data.append({"addr":i['addr'],"describe":i["describe"],"upl_time":i["upl_time"].strftime('%Y-%m-%d %H:%M:%S')}) num = cbd_photo.count() dat = data[(10*(page-1)):(page*10)] data = {'dat': dat, 'num': num} data = json.dumps(data) print("data",data) return HttpResponse(data) def post(self,request): equip_id = request.POST.get("equip_id") photo = request.POST.get("photo") if os.path.exists(photo) == True: #删除图片路经 os.remove(photo) try: CBDphoto.objects.filter(addr=photo,equip_id=equip_id).delete() data = 1 except Exception as e: print(e) data = 0 else: try: CBDphoto.objects.filter(addr=photo,equip_id=equip_id).delete() data = 1 except Exception as e: print(e) data = 0 return HttpResponse(data) #判断测报灯是否具有害虫识别功能 class cbd_pest_img_discern(View): def get (self,request): equip_id = request.GET.get("equip_id") cbd_pest = RecentCBDdata.objects.get(equip_id=equip_id) data = {"disc":cbd_pest.disc,"equip_id":cbd_pest.equip_id.equip_id} data = json.dumps(data) return HttpResponse(data) #测报灯添加图片描述信息 class cbd_add_photo_describe(View): def post(self,request): req = request.POST.get("req") user_name = request.POST.get("username") # user_name = 'admin' current_user = MyUser.objects.get(username=user_name) # 请求害虫种类列表: if req == "pest_list": pest_kinds = CBDpest.objects.filter(user=current_user) nums = len(pest_kinds) dat = [{"pest_name": x.pest_name} for x in pest_kinds] data = {"num":nums,"data":dat} # 请求图片描述: elif req == "photo_desc": img_name = request.POST.get('addr') descs = CBDphoto_desc.objects.filter(photo_id=CBDphoto.objects.get(addr=img_name),desc_user=current_user) data = [{"crop_name": x.crop_name, "pest_case": x.pest_case, "pest_name": x.pest_name.pest_name, "pest_num":x.pest_num} for x in descs] # 增加害虫种类: elif req == "add_pest": pest = request.POST.get('pest') print("pest:",pest) # 如果该用户下的该害虫名称已经存在! if CBDpest.objects.filter(user=current_user,pest_name=pest).exists(): data = '1' try: CBDpest.objects.create(user=current_user,pest_name=pest) pest_kinds = CBDpest.objects.filter(user=current_user) data = [{"pest_name": x.pest_name,} for x in pest_kinds] except: data = '2' # 删除害虫种类: elif req == "del_pest": pests = request.POST.get('pest') CBDpest.objects.filter(user=current_user,pest_name=pests).delete() pest_kinds = CBDpest.objects.filter(user=current_user) data = [{"pest_name": x.pest_name,} for x in pest_kinds] data = json.dumps(data) return HttpResponse(data) #测报灯图片描述信息 class cbd_see_photo_describe(View): def post(self,request): req = request.POST.get('req') user_name = request.POST.get("username") img_name = request.POST.get('addr') photo_time = request.POST.get('photo_time') desc = request.POST.get('describe') equip_id = request.POST.get("equip_id") current_user = MyUser.objects.get(username=user_name) desc = json.loads(desc) # 增加描述: if req == "add_desc": if CBDphoto_desc.objects.filter(desc_user=current_user, photo_id = CBDphoto.objects.get(addr=img_name), pest_name=CBDpest.objects.get(user=current_user, pest_name=desc['pest_name'])).exists(): data = '2' try: CBDphoto_desc.objects.create( desc_user = current_user ,photo_id = CBDphoto.objects.get(addr=img_name) ,pest_name = CBDpest.objects.get(user=current_user,pest_name=desc['pest_name']) ,pest_num = desc['pest_num'] ,crop_name = desc['crop_name'] ,pest_case = desc['pest_case'] ,pest_name2 = CBDpest.objects.get(user=current_user,pest_name=desc['pest_name']) ,equip_id= equip_id ,photo_time = photo_time) data = "0" except Exception as e: print("保错信息为:",e) data = "1" # 修改描述: elif req == "change_dsec": try: CBDphoto_desc.objects.filter(desc_user = current_user ,photo_id = CBDphoto.objects.get(addr=img_name) ).update(pest_num = desc['pest_num'] ,crop_name = desc['crop_name'] ,pest_case = desc['pest_case']) data = "0" except Exception as e: print("保错信息为:",e) data = "1" # 删除描述: elif req == "del_desc": try: CBDphoto_desc.objects.filter(desc_user = current_user ,photo_id = CBDphoto.objects.get(addr=img_name) ,pest_name = CBDpest.objects.get(user=current_user,pest_name=desc['pest_name']) ).delete() data = "0" except Exception as e: print("保错信息为:",e) data = "1" return HttpResponse(data) #测报灯害虫识别统计图 class cbd_pest_report_chart(View): def post(self,request): equip_id = request.POST.get('equip_id') name = request.POST.get('name') print('equip_id:',equip_id) sta1 = CBDphoto.objects.filter(equip_id=equip_id) pest_kind = [] pests = [] dat = [] for x in sta1: if x.indentify_result != None and x.indentify_result != "": pest_reslut = x.indentify_result.split('#') for i in pest_reslut: i_result = i.split(',') dat.append({"nums":i_result[0],"test":i_result[1]}) if i_result[0] not in pest_kind: pest_kind.append(i_result[0]) #采集害虫种类 if pest_kind: for i in pest_kind: date = [] for x in dat: if x["nums"] == i: date.append(x["test"]) numbers = list(map(int, date)) nums = sum(numbers) pests.append({"name":insect_dict_new[i],"data":nums}) data = {"nums":pests} data = json.dumps(data, cls=CJSONEncoder) return HttpResponse(data) #测报灯自动统计病虫害折线图 class cbd_pest_from_chart(View): def post(self,request): equip_id = request.POST.get('equip_id') tbegin = request.POST.get('tbegin') print("tbegin",tbegin) tend = request.POST.get('tend') print("tend",tend) pest = request.POST.get("pest") print('equip_id:',equip_id) start_date = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y-%m-%d') end_date = (datetime.datetime.now() + datetime.timedelta(days=1)).strftime('%Y-%m-%d') sta1 = CBDphoto.objects.filter(equip_id=equip_id,upl_time__range=(start_date, end_date)) sta3 = CBDdata.objects.filter(equip_id=equip_id, upl_time__range=(start_date, end_date)) if tbegin: sta1 = CBDphoto.objects.filter(equip_id=equip_id, upl_time__range=(tbegin, tend)) sta3 = CBDdata.objects.filter(equip_id=equip_id, upl_time__range=(tbegin, tend)) dat = [] cbd_data = [] pest_kind = [] pests = [] for x in sta1: if x.indentify_result != None and x.indentify_result != "": pest_reslut = x.indentify_result.split('#') for i in pest_reslut: i_result = i.split(',') if i_result[0] not in pest_kind: pest_kind.append(i_result[0]) #采集害虫种类 if pest_kind: for i in pest_kind: st = {"name":insect_dict_new[i]} pests.append(st) for i in sta3: sta4 = {"at":eval(i.cbd_data)["at"],"ah":eval(i.cbd_data)["ah"],"upl_time":i.upl_time} cbd_data.append(sta4) if pest: for x in sta1: if x.indentify_result != None and x.indentify_result != "": pest_reslut = x.indentify_result.split('#') for i in pest_reslut: i_result = i.split(',') if insect_dict_new[i_result[0]] == pest: sta2 = {"time":x.upl_time,"pest":insect_dict_new[i_result[0]],"pestnum":i_result[1]} dat.append(sta2) data = {"kind":pests,"cbd_data":cbd_data,"dat":dat} data = json.dumps(data, cls=CJSONEncoder) return HttpResponse(data) #测报灯害虫图片识别 class cbd_pest_discern(View): def post (self,request): img_addr = request.POST.get('img_addr') print(img_addr) photo_obj = CBDphoto.objects.get(addr=img_addr) # url = 'http://60.166.14.184:9143/upload' url = 'http://60.166.14.184:9143/upload' imageFile = {'imageFile':('pic.jpg',open(img_addr,'rb'),'image/jpeg')} data = {'longitude':'118.279643','latitude':'31.221456'} print('data:',data) res = requests.post(url,data=data,files=imageFile) print("res:",res.text) try: resp = json.loads(res.text) except Exception as e: print(e) print("识别失败") data = "1" return HttpResponse(data) result_list = "code" nums = "404" date = [] try: if resp["returnResult"]["returnString"]: result = resp["returnResult"]["returnString"].split("#") print("result",result) for i in result: res = i.split(",") nums = res[1] #数量 results = res[0] #编号 result_list = insect_dict_new[res[0]] date.append({ "nums":nums,"result_list":result_list }) print("date",date) resp = resp["returnResult"]["returnImageUrl"] except Exception as e: print(e) data = {"image":resp, "result":date} data = json.dumps(data, cls=CJSONEncoder) return HttpResponse(data) #测报灯下发命令 class cbd_wechat_mqtt_read(View): def post(self,request): uid = request.POST.get('username') imei = request.POST.get('imei') ret = request.POST.get("ret") print("uid",uid) print("imei",imei) if ret == "read": #下发查询 kind = request.POST.get('kind') print("kind",kind) print("验证成功") print("下发查询!") try: # 读取参数: if kind == "status" or kind == "data" or "paramconf": payload = {"cmd": "read", "ext": {"type": kind}} print("payload",payload) except Exception as e: print(e) data = api_code[1] data = json.dumps(data) print(data) return HttpResponse(data) elif ret == "set": #下发设置 print("下发设备设置!") try: ts = int(request.POST.get("ts")) # 定时模式 tt = int(request.POST.get("tt")) # 定时时长 # imgres = int(request.POST.get('imgres')) # 图片分辨率 st = int(request.POST.get('st')) # 开始时间 et = int(request.POST.get('et')) # 结束时间 collt = int(request.POST.get('collt')) # 落虫时间 htim = int(request.POST.get('htim')) # 加热时间 hst = int(request.POST.get('hst')) # 加热温度 tph = int(request.POST.get('tph')) # 加热仓温度上限 tpl = int(request.POST.get('tpl')) # 加热仓温度下限加热仓温度下限 datt = int(request.POST.get('datt')) # 数据上传时间间隔 shake_sec = int(request.POST.get('shake_sec')) # 震动时间间隔 print("定时模式ts:", ts) # print("图片分辨率imgres:", imgres) print("开始时间st:", st) print("结束时间et:", et) print("落虫时间collt:", collt) print("加热时间htim:", htim) print("加热温度hst:", hst) print("加热仓温度上限tph:", tph) print("加热仓温度下限tpl:", tpl) print("数据上传时间间隔datt:", datt) # 参数范围判断 if st not in range(0,25) or et not in range(0,25) or collt not in range(5,21) or htim not in range(5,21) \ or hst not in range(75,126) or tph not in range(40,71) or tpl not in range(-5,11) or datt not in range(5,61): data = api_code[3] data = json.dumps(data) print(data) return HttpResponse(data) if shake_sec != None: payload = {"cmd": "paramconf", "ext": {"ts": ts, "tt": tt, "st": st, "et": et, "collt": collt,"shake_sec":shake_sec, "htim": htim, "hst": hst, "tph": tph, "tpl": tpl, "datt": datt, "imgres": 0}} elif shake_sec == None: payload = {"cmd": "paramconf", "ext": {"ts": ts, "tt": tt, "st": st, "et": et, "collt": collt, "htim": htim, "hst": hst, "tph": tph, "tpl": tpl, "datt": datt, "imgres": 0}} print("payload",payload) except Exception as e: print(e) data = api_code[1] data = json.dumps(data) print(data) return HttpResponse(data) elif ret == "workmode": # 下发设备工作模式  节能(0),常规(1),加强(2) {"asleep":1,"common":0,"power":0} print("下发设置工作模块!") try: work_type = int(request.POST.get('type')) if work_type == 0: payload = {"cmd":"workmode","ext":{"asleep":1,"common":0,"power":0}} elif work_type == 1: payload = {"cmd":"workmode","ext":{"asleep":0,"common":1,"power":0}} elif work_type == 2: payload = {"cmd":"workmode","ext":{"asleep":0,"common":0,"power":1}} print("payload",payload) except Exception as e: print(e) data = api_code[1] data = json.dumps(data) print(data) return HttpResponse(data) elif ret == "sim": print("下发查询流量信息!") iccid = request.POST.get('iccid') resp = get_siminfo(iccid) print("查询流量信息为:",resp) return HttpResponse(resp) topic = "/yfkj/cbd/sub/"+imei cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} print(json.dumps(payload, indent=1)) res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = api_code[0] data = json.dumps(data) print(data) return HttpResponse(data) else: data = api_code[4] data = json.dumps(data) print(data) return HttpResponse(data) # #孢子仪设备详情接口 # class bzy_equip_details(View): # def post(self,request): # equip_id = request.POST.get("equip_id") # bzy_list = BZYstatus.objects.filter(equip_id=equip_id).first() # try: # bzy_data = eval(bzy_list.bzy_status) # imei = bzy_data["imei"] # iccid = bzy_data["iccid"] # upl_time = bzy_list.upl_time.strftime('%Y-%m-%d %H:%M:%S') # csq = bzy_data["csq"] #信号强度 # dver = bzy_data["dver"] #版本号 # v_bat = bzy_data["v_bat"] #电压 # is_online = bzy_list.is_online # if is_online == 0 : # is_online = "离线" # else: # is_online = "在线" # on_off = bzy_data["on_off"] # if on_off == 0: #设备开关 # on_off = "关闭" # else: # on_off = "开启" # bat_sta = bzy_data["bat_sta"] # if bat_sta == 0: #电池状态 # bat_sta = "正常" # else: # bat_sta = "电量过低" # usb_sta = bzy_data["usb_sta"] # if usb_sta == 0: #摄像头状态 # usb_sta = "正常" # else: # usb_sta = "异常" # pre_temp = bzy_data["pre_temp"] #保温仓当前温度 # lat = bzy_data["lat"] # lng = bzy_data["lng"] # staytime = bzy_data["staytime"] #培养时间 # cul_time = bzy_data["cul_time"] # print(cul_time) # data = {"imei":imei,"upl_time":upl_time,"is_online":is_online,"csq":csq,"dver":dver, # "v_bat":v_bat,"on_off":on_off,"bat_sta":bat_sta,"usb_sta":usb_sta,"pre_temp":pre_temp, # "lat":lat,"lng":lng,"staytime":staytime,"iccid":iccid} # except Exception as e: # print("报错信息为:",e) # data = {"code":"1"} # data = json.dumps(data) # return HttpResponse(data) #孢子仪报表管理详情 class bzy_equip_report(View): def post (self,request): equip_id = request.POST.get("equip_id") req = request.POST.get("req") print("req",req) bzy_list = BZYdata.objects.filter(equip_id=equip_id) if req == "new_time": bzy_list = bzy_list[:1] elif req == "time": bzy_id = request.POST.get("id") bzy_list = bzy_list.filter(equip_id=equip_id,id=bzy_id) elif req == "times": start_time = request.POST.get('start_time') end_time = request.POST.get('end_time') begindate = re.findall(r"\d+\.?\d*", start_time) enddate = re.findall(r"\d+\.?\d*", end_time) start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2])) end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2])) bzy_list = bzy_list.filter(equip_id=equip_id,upl_time__range=(start_date,end_date)) else: return HttpResponse("参数错误") date = [] #设备状态信息 data = [] #设备数据信息 bzy_status = BZYstatus.objects.filter(equip_id=equip_id) for x in bzy_status: date.append( { "glass":x.glass, "liquid":x.liquid, } ) try: for i in bzy_list: bzy_data = eval(i.bzy_data) imei= bzy_data["imei"] upl_time = i.upl_time.strftime('%Y-%m-%d %H:%M:%S') # equip_location = i.netconf on_off = bzy_data["on_off"] #设备开关 if on_off == 0 : on_off = "关闭" else: on_off = "开启" bat_sta = bzy_data["bat_sta"] #电池状态 if bat_sta == 0: bat_sta = "正常" else: bat_sta = "电量过低" usb_sta = bzy_data["usb_sta"] #摄像头状态 if usb_sta == 0: usb_sta = "正常" else: usb_sta = "异常" rps = bzy_data['rps'] #雨控 if rps == 0: rps = "正常" else: rps = "雨控" v_bat = bzy_data["v_bat"] #电压 alti = bzy_data["alti"] #海拔高度 csq = bzy_data['csq'] #信号强度 set_temp = bzy_data["set_temp"] #保温仓设定温度 dver = bzy_data["dver"] #版本号 pre_temp = bzy_data["pre_temp"] #保温仓当前温度 ah = bzy_data["ah"] at = bzy_data['at'] lng = bzy_data['lng'] lat = bzy_data['lat'] staytime = bzy_data['staytime'] data.append({"imei":imei,"time":upl_time,"on_off":on_off,"lng":lng,"lat":lat,"staytime":staytime, "bat_sta":bat_sta,"usb_sta":usb_sta,"rps":rps,"v_bat":v_bat,"alti":alti, "csq":csq,"set_temp":set_temp,"dver":dver,'ah':ah,"at":at,"pre_temp":pre_temp,}) except: data = [] # print("报错信息为:",e) # data = {"code":"1"} data = {"data":data,"date":date} data = json.dumps(data) return HttpResponse(data) #孢子仪图片列表 class bzy_photo_list(View): def get(self,request): equip_id = request.GET.get("equip_id") page = int(request.GET.get("page")) bzy_photo = BZYphoto.objects.filter(equip_id=equip_id).values() data =[] for i in bzy_photo: data.append({"addr":i['addr'],"describe":i["describe"],"upl_time":i["upl_time"].strftime('%Y-%m-%d %H:%M:%S')}) nums = len(data) dat = data[(10*(page-1)):(page*10)] data = {"dat":dat,"nums":nums} data = json.dumps(data) return HttpResponse(data) def post(self,request): equip_id = request.POST.get("equip_id") photo = request.POST.get("photo") if os.path.exists(photo) == True: #删除图片路经 os.remove(photo) try: BZYphoto.objects.get(addr=photo,equip_id=equip_id).delete() data = 1 except Exception as e: print(e) data = 0 else: try: BZYphoto.objects.get(addr=photo,equip_id=equip_id).delete() data = 1 except Exception as e: print(e) data = 0 return HttpResponse(data) #孢子仪图片描述接口 class bzy_photo_desc(View): def get(self,request): addr = request.GET.get("addr") try: obj = BZYphoto.objects.get(addr=addr) data = obj.describe except Exception as e: print(e) data = "" data = {"code":data} # ensure_ascii=False 去除中文转义 data = json.dumps(data,ensure_ascii=False) return HttpResponse(data) def post(self, request): img_name = request.POST.get('addr') print('img_name:',img_name) desc = request.POST.get('describe') print("desc:",desc) try: obj = BZYphoto.objects.get(addr=img_name) obj.describe = desc obj.save() data = "0" except Exception as e: print(e) data = "1" return HttpResponse(data) #孢子仪折线图 class bzy_from_chart(View): def post(self,request): req = request.POST.get('req') equip_id = request.POST.get('equip_id') if req == "data": # 获取当前日期:(这个月时间) now_time = datetime.datetime.now() sta1 = BZYdata.objects.filter(equip_id=equip_id,upl_time__month=now_time.month,upl_time__year=now_time.year) elif req == "filter": #获取指定日期 f_tbegin = request.POST.get('begin') f_tend = request.POST.get('end') begindate = re.findall(r"\d+\.?\d*", f_tbegin) enddate = re.findall(r"\d+\.?\d*", f_tend) start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2])) end_date = datetime.date(int(enddate[0]), int(enddate[1] ), int(enddate[2])) sta1 = BZYdata.objects.filter(equip_id=equip_id, upl_time__range=(start_date, end_date)) data = [] for x in sta1: pre_temp = eval(x.bzy_data)['pre_temp'] data.append({"pre_temp": pre_temp, "ah": eval(x.bzy_data)['ah'], "at": eval(x.bzy_data)['at'], "tim": x.upl_time}) data = json.dumps(data, cls=CJSONEncoder) return HttpResponse(data) #孢子仪配置信息接口 class bzy_equip_paramconf(View): def post(self, request): equip_id = request.POST.get('id') print("请求数据的设备id:", equip_id) # 最新数据: status sta = BZYstatus.objects.filter(equip_id__equip_id=equip_id) for x in sta: new_sta = {"bzy_status":eval(x.bzy_status), "upl_time": x.upl_time, "equip_name": x.equip_id.equip_name, "glass": x.glass, "liquid":x.liquid, "is_online": x.is_online, "off_time": x.off_time} data = json.dumps(new_sta, cls=CJSONEncoder, indent=4) print("data:",data) return HttpResponse(data) # 孢子仪通信接口: class bzy_wechat_mqtt_read(ListView): def post(self, request): uid = request.POST.get('username') imei = request.POST.get('imei') ret = request.POST.get('ret') print("ret:", ret) print("username",uid) print("imei",imei) if ret == "set": wind_sw = int(request.POST.get('wind')) # 风机开关 coll_time = request.POST.get('coll_time') # 采集孢子时间段 drop_time = int(request.POST.get('drop')) # 采集孢子时间段 set_temp = int(request.POST.get('stemp')) # 保温仓设定温度 # imgres = int(request.POST.get('imgres')) # 图片分辨率 datt = int(request.POST.get('takt')) # 数据上传时间间隔 try: cul_time = int(request.POST.get('culTime')) # 设置培养时间 except: cul_time = 12 print("设备ID:", imei) print("风机开关:", wind_sw) print("采集孢子时间段:", coll_time) print("保温仓设定温度:", set_temp) print("培养时间:", cul_time) print("上传时间间隔:",datt) coll_time = eval(coll_time) print("采集shijain:", coll_time) topic = "/yfkj/bzy/s2c/"+ imei # [1:-1] print("topic:", topic) payload = {"cmd": "paramconf","ext": {"wind_sw": wind_sw,"coll_time": coll_time,"set_temp": set_temp,"imgres": 7,"drop_time": drop_time,"datt": datt,"cul_time":cul_time}} cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} print(json.dumps(payload, indent=1)) elif ret == "read": print("下发查询!") payload = {"cmd": "read","type": "status"} topic = "/yfkj/bzy/s2c/"+ imei cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} print(json.dumps(payload, indent=1)) elif ret == "ctrl": print("下发控制!") print("imei",imei) topic = "/yfkj/bzy/s2c/"+ imei # 读取参数: cmd = request.POST.get('cmd') print("cmd",cmd) if cmd == "update" or cmd == "reboot" or cmd == "poweroff" or cmd == "poweron" or cmd == "coldoff" or cmd == "coldon": payload = {"cmd":cmd} elif cmd == "ctrl": ctrl_type = request.POST.get('type') print("type",ctrl_type) if ctrl_type == "takephoto": payload = {"cmd": cmd, "ext": {"type": ctrl_type}} cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} print(json.dumps(payload, indent=1)) # 此项修改载玻片和培养液更换时间,只存数据库 不做下发处理!!! elif ret == "glass": # 获取载玻片更换时间 glass = request.POST.get('glass') print("载玻片更换时间:", glass) sta = BZYstatus.objects.get(equip_id__equip_id=imei) if glass != "": # temporary临时变量 temporary = sta.glass sta.glass = temporary + "#" + glass # 只保存最近五次的更换时间 if len(sta.glass)>55: sta.glass = sta.glass[11:] sta.save() print("载玻片更换时间保存成功") data = api_code[0] data = json.dumps(data) print(data) return HttpResponse(data) elif ret == "liquid": # 获取培养液更换时间 liquid = request.POST.get('liquid') print("培养液更换时间:", liquid) sta = BZYstatus.objects.get(equip_id__equip_id=imei) if liquid != "": # temporary临时变量 temporary_1 = sta.liquid sta.liquid = temporary_1 + "#" + liquid # 只保存最近五次的更换时间 if len(sta.liquid)>55: sta.liquid = sta.liquid[11:] sta.save() print("培养液更换时间保存成功") data = api_code[0] data = json.dumps(data) print(data) return HttpResponse(data) # 查询sim卡信息 elif ret == "sim": iccid = request.POST.get('iccid') resp = get_siminfo(iccid) print("查询流量信息为:",resp) return HttpResponse(resp) res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = api_code[0] data = json.dumps(data) print(data) return HttpResponse(data) else: data = api_code[4] data = json.dumps(data) print(data) return HttpResponse(data) #性诱设备列表(依科曼) class xy_equip_list(View): def get (self,request): page = int(request.GET.get("page")) user_name = request.GET.get("username") current_user = MyUser.objects.get(username=user_name) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: # __username print("---不是管理员") xy_list = Trapstatus.objects.filter(equip_id__equip_user=current_user) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") xy_list = Trapstatus.objects.filter(equip_id__equip_agency=current_user.user_agency) else: print("---管理员") xy_list = Trapstatus.objects.all() data = [] for x in xy_list: data.append({"addr": x.addr, "tem": x.tem,"equip_id":x.equip_id.equip_id, "hum": x.hum, "pest": x.pest, "equip_name": x.equip_id.equip_name, "pestnum": x.pestnum, "upl_time": x.upl_time.strftime('%Y-%m-%d %H:%M:%S')}) num = xy_list.count() dat = data[(10*(page-1)):(page*10)] data = {'dat': dat, 'num': num} data = json.dumps(data) return HttpResponse(data) def post(self,request): ret = request.POST.get("ret") equip_id = request.POST.get("equip_id") page = int(request.POST.get("page")) data = [] if ret == "filter": #设备信息 xy_list = Trapstatus.objects.filter(equip_id=equip_id) elif ret == "record": #历史记录 xy_list = Trapdata.objects.filter(equip_id=equip_id) for x in xy_list: data.append({"addr": x.addr, "tem": x.tem,"equip_id":x.equip_id.equip_id, "hum": x.hum, "pest": x.pest, "equip_name": x.equip_id.equip_name, "pestnum": x.pestnum, "upl_time": x.upl_time.strftime('%Y-%m-%d %H:%M:%S')}) num = xy_list.count() dat = data[(10*(page-1)):(page*10)] data = {'dat': dat, 'num': num} data = json.dumps(data) return HttpResponse(data) #性诱图片页面 class xy_photo_list(View): def post(self,request): ret = request.POST.get("ret") equip_id = request.POST.get("equip_id") page = int(request.POST.get("page",1)) print(equip_id) data = [] if ret == "photo": xy_list = Trapphoto.objects.filter(equip_id=equip_id) if xy_list: for x in xy_list: data.append({"upl_time":x.upl_time.strftime('%Y-%m-%d %H:%M:%S'),"addr":x.addr}) data = data[(10*(page-1)):(page*10)] elif ret == "chart": start_time = request.POST.get('start_time') end_time = request.POST.get('end_time') if start_time: xy_list = Trapdata.objects.filter(equip_id=equip_id, upl_time__range=(start_time,end_time)) else: start_date = (datetime.datetime.now() - datetime.timedelta(days=2)).strftime('%Y-%m-%d') end_date = (datetime.datetime.now() + datetime.timedelta(days=1) ).strftime('%Y-%m-%d') xy_list = Trapdata.objects.filter(equip_id=equip_id,upl_time__range=(start_date,end_date)) if xy_list: for i in xy_list: data.append({"pest":i.pest,"pestnum":i.pestnum,"upl_time":i.upl_time.strftime('%Y-%m-%d %H:%M:%S'),"tem":i.tem,"hum":i.hum}) num = len(xy_list) print("num",num) data = {'dat': data, 'num': num} data = json.dumps(data) return HttpResponse(data) #气象站状态数据 class qxz_status_base(View): def post(self,request): equip_id = request.POST.get("equip_id") data = [] qxz_base = QXZ_Base_Info.objects.filter(equip_id=equip_id) try: qxz_list = QXZstatus_New.objects.get(equip_id=equip_id).is_online except: return HttpResponse("0") if qxz_base: for x in qxz_base: data.append({ "is_online": qxz_list, "volt": x.volt, "rssi": x.rssi, "equip_id": x.equip_id.equip_id }) else: data.append({ "is_online": qxz_list, "volt": "", "rssi": "", "equip_id": equip_id }) data = json.dumps(data) return HttpResponse(data) #气象站报表折线图(时间段筛选) class qxz_line_chart(View): def get(self,request): imei = request.GET.get('imei') equip_id = request.GET.get('equip_id') qxz_list = QXZdata_New.objects.get(equip_id=imei,id=equip_id) data = [qxz_list.e1,qxz_list.e2,qxz_list.e3,qxz_list.e4,qxz_list.e5,qxz_list.e6,qxz_list.e7,qxz_list.e8,qxz_list.e9,qxz_list.e10, qxz_list.e11,qxz_list.e12,qxz_list.e13,qxz_list.e14, qxz_list.e15,qxz_list.e16,qxz_list.e17,qxz_list.e18, qxz_list.e19,qxz_list.e20,qxz_list.e21,qxz_list.e22, qxz_list.e23,qxz_list.e24,qxz_list.e25,qxz_list.e26, qxz_list.e27,qxz_list.e28,qxz_list.e29,qxz_list.e30] test = [i for i in data if i != ''] sta = [] try: for i in test: qxz = i.split("#") qw = qxz_dict[qxz[1]] qxz_num = [qxz[2],qxz[0],qw] sta.append(qxz_num) except Exception as e : print(e) sta2 = {"data":sta,"upl_time":qxz_list.upl_time.strftime('%Y-%m-%d %H:%M:%S')} data = json.dumps(sta2) return HttpResponse(data) def post(self,request): equip_id = request.POST.get("equip_id") start_time = request.POST.get("start_time") end_time = request.POST.get("end_time") start_date = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y-%m-%d') end_date = (datetime.datetime.now() + datetime.timedelta(days=1) ).strftime('%Y-%m-%d') print("equip_id",equip_id) print("start_time",start_time) print("end_time",end_time) qxz_list = QXZdata_New.objects.filter( equip_id=equip_id, upl_time__range=(start_date,end_date)) if start_time: qxz_list = QXZdata_New.objects.filter( equip_id=equip_id, upl_time__range=(start_time,end_time)) data = [] for i in qxz_list: data.append({"dat":[i.e1,i.e2,i.e3,i.e4,i.e5, i.e6,i.e7,i.e8,i.e9,i.e10, i.e11,i.e12,i.e13,i.e14, i.e15,i.e16,i.e17,i.e18, i.e19,i.e20,i.e21,i.e22, i.e23,i.e24,i.e25,i.e26, i.e27,i.e28,i.e29,i.e30], "time":i.upl_time.strftime('%Y-%m-%d %H:%M:%S')}) sta2 = [] # print(data) for x in data: sta = [] test = [i for i in x["dat"] if i !=''] try: for i in test: qxz = i.split("#") qxz_num = {"name":qxz[2],"num":float(qxz[0])} sta.append(qxz_num) except Exception as e : print(e) sta2.append({"data":sta,"time":x["time"]}) try: conf = [] qxz_num = [] x = QXZ_Conf.objects.get(equip_id=equip_id) conf.append([x.e1,x.e2,x.e3,x.e4,x.e5, x.e6,x.e7,x.e8,x.e9,x.e10, x.e11,x.e12,x.e13,x.e14, x.e15,x.e16,x.e17,x.e18, x.e19,x.e20,x.e21,x.e22, x.e23,x.e24,x.e25,x.e26, x.e27,x.e28,x.e29,x.e30]) conf_list = [i for i in conf[0] if i !='' ] for i in conf_list: qxz_conf = i.split("#") qxz_list = {"name":qxz_conf[0],"num":qxz_conf[1]} qxz_num.append(qxz_list) except: qxz_num = [] data = {"data":sta2,"conf":qxz_num} data = json.dumps(data) print("data",data) return HttpResponse(data) #气象站二十四小时最新数据 class qxz_new_data(View): def post (self,request): qxz_dict_1 = copy.deepcopy(qxz_dict) start_date = (datetime.datetime.now() - datetime.timedelta(days=2)).strftime('%Y-%m-%d') end_date = (datetime.datetime.now() + datetime.timedelta(days=1) ).strftime('%Y-%m-%d') print("start_date:", start_date) print("end_date:", end_date) equip_id = request.POST.get('equip_id') sta1 = QXZdata_New.objects.filter(equip_id=equip_id, upl_time__range=(start_date,end_date)).values() e1 = [] e1_time = [] e2 = [] e2_time = [] e3 = [] e3_time = [] e4 = [] e4_time = [] e5 = [] e5_time = [] e6 = [] e6_time = [] e7 = [] e7_time = [] e8 = [] e8_time = [] e9 = [] e9_time = [] e10 = [] e10_time = [] e11 = [] e11_time = [] e12 = [] e12_time = [] e13 = [] e13_time = [] e14 = [] e14_time = [] e15 = [] e15_time = [] e16 = [] e16_time = [] e17 = [] e17_time = [] e18 = [] e18_time = [] e19 = [] e19_time = [] e20 = [] e20_time = [] e21 = [] e21_time = [] e22 = [] e22_time = [] e23 = [] e23_time = [] e24 = [] e24_time = [] e25 = [] e25_time = [] e26 = [] e26_time = [] e27 = [] e27_time = [] e28 = [] e28_time = [] e29 = [] e29_time = [] e30 = [] e30_time = [] for i in sta1: if i['e1'] != "": e1.append(i['e1'].split('#')[0]) e1_time.append(i['upl_time']) if i['e2'] != "": e2.append(i['e2'].split('#')[0]) e2_time.append(i['upl_time']) if i['e3'] != "": e3.append(i['e3'].split('#')[0]) e3_time.append(i['upl_time']) if i['e4'] != "": e4.append(i['e4'].split('#')[0]) e4_time.append(i['upl_time']) if i['e5'] != "": e5.append(i['e5'].split('#')[0]) e5_time.append(i['upl_time']) if i['e6'] != "": e6.append(i['e6'].split('#')[0]) e6_time.append(i['upl_time']) if i['e7'] != "": e7.append(i['e7'].split('#')[0]) e7_time.append(i['upl_time']) if i['e8'] != "": e8.append(i['e8'].split('#')[0]) e8_time.append(i['upl_time']) if i['e9'] != "": e9.append(i['e9'].split('#')[0]) e9_time.append(i['upl_time']) if i['e10'] != "": e10.append(i['e10'].split('#')[0]) e10_time.append(i['upl_time']) if i['e11'] != "": e11.append(i['e11'].split('#')[0]) e11_time.append(i['upl_time']) if i['e12'] != "": e12.append(i['e12'].split('#')[0]) e12_time.append(i['upl_time']) if i['e13'] != "": e13.append(i['e13'].split('#')[0]) e13_time.append(i['upl_time']) if i['e14'] != "": e14.append(i['e14'].split('#')[0]) e14_time.append(i['upl_time']) if i['e15'] != "": e15.append(i['e15'].split('#')[0]) e15_time.append(i['upl_time']) if i['e16'] != "": e16.append(i['e16'].split('#')[0]) e16_time.append(i['upl_time']) if i['e17'] != "": e17.append(i['e17'].split('#')[0]) e17_time.append(i['upl_time']) if i['e18'] != "": e18.append(i['e18'].split('#')[0]) e18_time.append(i['upl_time']) if i['e19'] != "": e19.append(i['e19'].split('#')[0]) e19_time.append(i['upl_time']) if i['e20'] != "": e20.append(i['e20'].split('#')[0]) e20_time.append(i['upl_time']) if i['e21'] != "": e21.append(i['e21'].split('#')[0]) e21_time.append(i['upl_time']) if i['e22'] != "": e22.append(i['e22'].split('#')[0]) e22_time.append(i['upl_time']) if i['e23'] != "": e23.append(i['e23'].split('#')[0]) e23_time.append(i['upl_time']) if i['e24'] != "": e12.append(i['e12'].split('#')[0]) e12_time.append(i['upl_time']) if i['e25'] != "": e25.append(i['e25'].split('#')[0]) e25_time.append(i['upl_time']) if i['e26'] != "": e26.append(i['e26'].split('#')[0]) e26_time.append(i['upl_time']) if i['e27'] != "": e27.append(i['e27'].split('#')[0]) e27_time.append(i['upl_time']) if i['e28'] != "": e28.append(i['e28'].split('#')[0]) e28_time.append(i['upl_time']) if i['e29'] != "": e29.append(i['e29'].split('#')[0]) e29_time.append(i['upl_time']) if i['e30'] != "": e30.append(i['e30'].split('#')[0]) e30_time.append(i['upl_time']) data = [] try: if e1 != []: data.append({"max":max(e1),"maxtime":e1_time[e1.index(max(e1))],"min":min(e1),"mintime":e1_time[e1.index(min(e1))],"enum":qxz_dict_1[i['e1'].split('#')[1]],"ekey":i['e1'].split('#')[2]}) if e2 != []: data.append({"max":max(e2),"maxtime":e2_time[e2.index(max(e2))],"min":min(e2),"mintime":e2_time[e2.index(min(e2))],"enum":qxz_dict_1[i['e2'].split('#')[1]],"ekey":i['e2'].split('#')[2]}) if e3 != []: data.append({"max":max(e3),"maxtime":e3_time[e3.index(max(e3))],"min":min(e3),"mintime":e3_time[e3.index(min(e3))],"enum":qxz_dict_1[i['e3'].split('#')[1]],"ekey":i['e3'].split('#')[2]}) if e4 != []: data.append({"max":max(e4),"maxtime":e4_time[e4.index(max(e4))],"min":min(e4),"mintime":e4_time[e4.index(min(e4))],"enum":qxz_dict_1[i['e4'].split('#')[1]],"ekey":i['e4'].split('#')[2]}) if e5 != []: data.append({"max":max(e5),"maxtime":e5_time[e5.index(max(e5))],"min":min(e5),"mintime":e5_time[e5.index(min(e5))],"enum":qxz_dict_1[i['e5'].split('#')[1]],"ekey":i['e5'].split('#')[2]}) if e6 != []: data.append({"max":max(e6),"maxtime":e6_time[e6.index(max(e6))],"min":min(e6),"mintime":e6_time[e6.index(min(e6))],"enum":qxz_dict_1[i['e6'].split('#')[1]],"ekey":i['e6'].split('#')[2]}) if e7 != []: data.append({"max":max(e7),"maxtime":e7_time[e7.index(max(e7))],"min":min(e7),"mintime":e7_time[e7.index(min(e7))],"enum":qxz_dict_1[i['e7'].split('#')[1]],"ekey":i['e7'].split('#')[2]}) if e8 != []: data.append({"max":max(e8),"maxtime":e8_time[e8.index(max(e8))],"min":min(e8),"mintime":e8_time[e8.index(min(e8))],"enum":qxz_dict_1[i['e8'].split('#')[1]],"ekey":i['e8'].split('#')[2]}) if e9 != []: data.append({"max":max(e9),"maxtime":e9_time[e9.index(max(e9))],"min":min(e9),"mintime":e9_time[e9.index(min(e9))],"enum":qxz_dict_1[i['e9'].split('#')[1]],"ekey":i['e9'].split('#')[2]}) if e10 != []: data.append({"max":max(e10),"maxtime":e10_time[e10.index(max(e10))],"min":min(e10),"mintime":e10_time[e10.index(min(e10))],"enum":qxz_dict_1[i['e10'].split('#')[1]],"ekey":i['e10'].split('#')[2]}) if e11 != []: data.append({"max":max(e11),"maxtime":e11_time[e11.index(max(e11))],"min":min(e11),"mintime":e11_time[e11.index(min(e11))],"enum":qxz_dict_1[i['e11'].split('#')[1]],"ekey":i['e11'].split('#')[2]}) if e12 != []: data.append({"max":max(e12),"maxtime":e12_time[e12.index(max(e12))],"min":min(e12),"mintime":e12_time[e12.index(min(e12))],"enum":qxz_dict_1[i['e12'].split('#')[1]],"ekey":i['e12'].split('#')[2]}) if e13 != []: data.append({"max":max(e13),"maxtime":e13_time[e13.index(max(e13))],"min":min(e13),"mintime":e13_time[e13.index(min(e13))],"enum":qxz_dict_1[i['e13'].split('#')[1]],"ekey":i['e13'].split('#')[2]}) if e14 != []: data.append({"max":max(e14),"maxtime":e14_time[e14.index(max(e14))],"min":min(e14),"mintime":e14_time[e14.index(min(e14))],"enum":qxz_dict_1[i['e14'].split('#')[1]],"ekey":i['e14'].split('#')[2]}) if e15 != []: data.append({"max":max(e15),"maxtime":e15_time[e15.index(max(e15))],"min":min(e15),"mintime":e15_time[e15.index(min(e15))],"enum":qxz_dict_1[i['e15'].split('#')[1]],"ekey":i['e15'].split('#')[2]}) if e16 != []: data.append({"max":max(e16),"maxtime":e16_time[e16.index(max(e16))],"min":min(e16),"mintime":e16_time[e16.index(min(e16))],"enum":qxz_dict_1[i['e16'].split('#')[1]],"ekey":i['e16'].split('#')[2]}) if e17 != []: data.append({"max":max(e17),"maxtime":e17_time[e17.index(max(e17))],"min":min(e17),"mintime":e17_time[e17.index(min(e17))],"enum":qxz_dict_1[i['e17'].split('#')[1]],"ekey":i['e17'].split('#')[2]}) if e18 != []: data.append({"max":max(e18),"maxtime":e18_time[e18.index(max(e18))],"min":min(e18),"mintime":e18_time[e18.index(min(e18))],"enum":qxz_dict_1[i['e18'].split('#')[1]],"ekey":i['e18'].split('#')[2]}) if e19 != []: data.append({"max":max(e19),"maxtime":e19_time[e19.index(max(e19))],"min":min(e19),"mintime":e19_time[e19.index(min(e19))],"enum":qxz_dict_1[i['e19'].split('#')[1]],"ekey":i['e19'].split('#')[2]}) if e20 != []: data.append({"max":max(e20),"maxtime":e20_time[e20.index(max(e20))],"min":min(e20),"mintime":e20_time[e20.index(min(e20))],"enum":qxz_dict_1[i['e20'].split('#')[1]],"ekey":i['e20'].split('#')[2]}) if e21 != []: data.append({"max":max(e21),"maxtime":e21_time[e21.index(max(e21))],"min":min(e21),"mintime":e21_time[e21.index(min(e21))],"enum":qxz_dict_1[i['e21'].split('#')[1]],"ekey":i['e21'].split('#')[2]}) if e22 != []: data.append({"max":max(e22),"maxtime":e22_time[e22.index(max(e22))],"min":min(e22),"mintime":e22_time[e22.index(min(e22))],"enum":qxz_dict_1[i['e22'].split('#')[1]],"ekey":i['e22'].split('#')[2]}) if e23 != []: data.append({"max":max(e23),"maxtime":e23_time[e23.index(max(e23))],"min":min(e23),"mintime":e23_time[e23.index(min(e23))],"enum":qxz_dict_1[i['e23'].split('#')[1]],"ekey":i['e23'].split('#')[2]}) if e24 != []: data.append({"max":max(e24),"maxtime":e24_time[e24.index(max(e24))],"min":min(e24),"mintime":e24_time[e24.index(min(e24))],"enum":qxz_dict_1[i['e24'].split('#')[1]],"ekey":i['e24'].split('#')[2]}) if e25 != []: data.append({"max":max(e25),"maxtime":e25_time[e25.index(max(e25))],"min":min(e25),"mintime":e25_time[e25.index(min(e25))],"enum":qxz_dict_1[i['e25'].split('#')[1]],"ekey":i['e25'].split('#')[2]}) if e26 != []: data.append({"max":max(e26),"maxtime":e26_time[e26.index(max(e26))],"min":min(e26),"mintime":e26_time[e26.index(min(e26))],"enum":qxz_dict_1[i['e26'].split('#')[1]],"ekey":i['e26'].split('#')[2]}) if e27 != []: data.append({"max":max(e27),"maxtime":e27_time[e27.index(max(e27))],"min":min(e27),"mintime":e27_time[e27.index(min(e27))],"enum":qxz_dict_1[i['e27'].split('#')[1]],"ekey":i['e27'].split('#')[2]}) if e28 != []: data.append({"max":max(e28),"maxtime":e28_time[e28.index(max(e28))],"min":min(e28),"mintime":e28_time[e28.index(min(e28))],"enum":qxz_dict_1[i['e28'].split('#')[1]],"ekey":i['e28'].split('#')[2]}) if e29 != []: data.append({"max":max(e29),"maxtime":e29_time[e29.index(max(e29))],"min":min(e29),"mintime":e29_time[e29.index(min(e29))],"enum":qxz_dict_1[i['e29'].split('#')[1]],"ekey":i['e29'].split('#')[2]}) if e30 != []: data.append({"max":max(e30),"maxtime":e30_time[e30.index(max(e30))],"min":min(e30),"mintime":e30_time[e30.index(min(e30))],"enum":qxz_dict_1[i['e30'].split('#')[1]],"ekey":i['e30'].split('#')[2]}) except Exception as e: print("报错信息为:",e) dat = json.dumps(data,cls=CJSONEncoder) return HttpResponse(dat) #气象站开关; class qxz_wechat_switch(View): def get(self,request): equip_id = request.GET.get("equip_id") qxz_switch_list = QXZswitchstatus.objects.get(equip_id=equip_id) qxz_switch_name_list = QXZswitchdata.objects.get(equip_id=equip_id) # print(type(qxz_switch_list.qxz_switch)) data_list = eval(qxz_switch_list.qxz_switch) data_name_list = eval(qxz_switch_name_list.qxz_switch_data) dat = [] da = [] name_list = [] if data_list: for i in data_list: da.append(i["status"]) dat.append(i['JK']) if data_name_list: for i in data_name_list: name_list.append(i["name"]) data = {"status":da,"JK":dat,"name":name_list} data = json.dumps(data) return HttpResponse(data) def post(self,request): equip_id = request.POST.get('equip_id') JK = request.POST.get('JK') sw_name = request.POST.get('sw_name') try: switch_obj = QXZswitchdata.objects.get(equip_id=equip_id) except: return HttpResponse("1") sw_name_list = eval(switch_obj.qxz_switch_data) for i in sw_name_list: if i["JK"] == int(JK): i["name"] = sw_name print(sw_name_list) try: switch_obj.qxz_switch_data = sw_name_list switch_obj.save() except: return HttpResponse("1") data = "0" return HttpResponse(data) # 气象站下发接口 class qxz_wechat_mqtt(ListView): def get(self,request): pass def post(self,request): req = request.POST.get('req') imei = request.POST.get('imei') topic = "/yfkj/qxz/sub/"+imei if req == "read": payload = {"ext":{"type":"status"},"cmd":"read"} elif req == "set": way = int(request.POST.get('way')) switch = int(request.POST.get('switch')) payload = {"cmd":"control","ext":{"JK":way,"status":switch}} elif req == "conf": payload = {"ext":{"type":"jkStatus"},"cmd":"read"} cmd = {"topic":topic,"payload":json.dumps(payload),'qos':0} res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) #监控设备列表页面 class jk_wechat_list(View): def get(self,request): equip_id = request.GET.get("equip_id") user_name = request.GET.get("username") current_user = MyUser.objects.get(username=user_name) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: equip_list = Equip.objects.filter(equip_type=6, equip_user=current_user,equip_id=equip_id) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: equip_list = Equip.objects.filter(equip_type=6, equip_agency=current_user.user_agency,equip_id=equip_id) else: equip_list = Equip.objects.filter(equip_type=6,equip_id=equip_id) data = [] for x in equip_list: data.append({"equip_name":x.equip_name, "equip_id":x.equip_id}) data = json.dumps(data) return HttpResponse(data) def post(self,request): user_name = request.POST.get("username") current_user = MyUser.objects.get(username=user_name) page = int(request.POST.get('page')) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: equip_list = Equip.objects.filter(equip_type=6, equip_user=current_user) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: # 代理商 equip_list = Equip.objects.filter(equip_type=6, equip_agency=current_user.user_agency) else: equip_list = Equip.objects.filter(equip_type=6) data = [] jk_token = JKtoken.objects.get(id=2) for x in equip_list: data.append({"equip_name":x.equip_name, "equip_id":x.equip_id + ":1","equip_token":jk_token.token}) nums = len(data) ids = data[(10*(page-1)):(page*10)] data = {'data': data, 'nums': nums} data = json.dumps(data, cls=CJSONEncoder) return HttpResponse(data) # 获取监控播放地址视图: class jk_equip_list(View): def post(self, request): equip_id = request.POST.get('equip_id') x = JKdata.objects.get(equip_id_id=equip_id) print(x.id) live_list = [] # 用token和设备id获取直播地址 live_url = 'https://open.ys7.com/api/lapp/live/address/get' live_data = {"accessToken":x.jk_token, "source":"%s:1"%x.equip_id} print("=================live_data:",live_data) live_res = requests.post(live_url,data=live_data) # print("-------------------------------:",type(live_res.text)) live_res = eval(live_res.text) print("live_res:",live_res) # 如果返回200 则返回直播地址 if live_res['code'] == "200": print("token获取成功") live_list.append(live_res) # 如果返回其他 则调用获取token之后重新获取直播地址并返回 else: print("token过期重新获取") token_url = 'https://open.ys7.com/api/lapp/token/get' token_data = {"appKey":"e8ec0d52b4b14628a3daf4b88cbcca2a", "appSecret":"d4565abea1cd0b90b59917111dcb37bd"} token_res = requests.post(token_url,data=token_data) print("token_res1:",token_res.text) token_res = eval(token_res.text) if token_res["code"] == "200": token_res["data"]["accessToken"] x.jk_token = token_res["data"]["accessToken"] x.upl_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) x.save() token = x.jk_token print("-----------------token保存成功") live_url = 'https://open.ys7.com/api/lapp/live/address/get' live_data = {"accessToken":x.jk_token, "source":"%s:1"%x.equip_id} live_res = requests.post(live_url,data=live_data) live_res = eval(live_res.text) print("live_res2:",live_res) live_list.append(live_res) data = live_list print("-----------============data:",data) data = json.dumps(data, cls=CJSONEncoder) return HttpResponse(data) #监控图片列表 class jk_wechat_img(View): def post(self, request): ret = request.POST.get('ret') if ret == "del": imei = request.POST.get('id') img = JKphoto.objects.filter(id=imei) if img: img.delete() # jk_photo = request.POST.get('jk_photo') # if os.path.exists(img.addr) == True: # # 删除图片文件 # os.remove(img.addr) data = {"code":200} else: data = {"code":400} data = json.dumps(data) return HttpResponse(data) else: # 获得当前页: page = int(request.POST.get('page')) print("page:", page) # 从数据库中取出照片在服务器存放路径: imei = request.POST.get('equip_id') img = JKphoto.objects.filter(equip_id=imei) nums = img.count() img = img[(10*(page-1)):(page*10)] equip_name = Equip.objects.get(equip_id=imei) # 当前用户:返回用户,前端判断是否显示删除图片按钮 current_user = request.session.get('username') print("current_user:", current_user) img_dat = [{"upl_time": x.upl_time, "addr": x.addr}for x in img] dat = {'img':img_dat, 'nums':nums, 'equip_name':equip_name.equip_name, 'equip_id':imei, 'id':equip_name.id } data = json.dumps(dat, cls=CJSONEncoder, indent=4) print("data:",data) return HttpResponse(data) #诱捕器设备列表 class ybq_equip_list(View): def post(self, request): page = int(request.POST.get('page')) print("page:", page) equip_name = request.POST.get("equip_name") print("equip_name:", equip_name) equip_id = request.POST.get("equip_id") print("equip_id:", equip_id) # 读取当前用户: current_user = request.POST.get("username") print("current_user:", current_user) current_user = MyUser.objects.get(username=current_user) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: # __username print("---不是管理员") sta1 = YBQstatus.objects.filter(equip_id__equip_user=current_user) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") sta1 = YBQstatus.objects.filter(equip_id__equip_agency=current_user.user_agency) else: print("---管理员") sta1 = YBQstatus.objects.all() if equip_id or equip_name: if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---不是管理员") # 000: if equip_name == "" and equip_id == "": sta1 = YBQstatus.objects.filter( equip_id__equip_user=current_user) # 010: elif equip_name == "" and equip_id != "": sta1 = YBQstatus.objects.filter( equip_id__equip_user=current_user, equip_id__equip_id__contains=equip_id) # 100: elif equip_name != "" and equip_id == "": sta1 = YBQstatus.objects.filter( equip_id__equip_user=current_user, equip_id__equip_name__contains=equip_name) # 110: elif equip_name != "" and equip_id != "": sta1 = YBQstatus.objects.filter( equip_id__equip_user=current_user, equip_id__equip_name__contains=equip_name, equip_id__equip_id__contains=f_id) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") # 000: if equip_name == "" and equip_id == "": sta1 = YBQstatus.objects.filter(equip_id__equip_agency=current_user.user_agency) # 010: elif equip_name == "" and equip_id != "": sta1 = YBQstatus.objects.filter( equip_id__equip_agency=current_user.user_agency, equip_id__equip_id__contains=equip_id) # 100: elif equip_name != "" and equip_id == "": sta1 = YBQstatus.objects.filter( equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=equip_name) # 110: elif equip_name != "" and equip_id != "": sta1 = YBQstatus.objects.filter( equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=equip_name, equip_id__equip_id__contains=equip_id) else: print("---管理员") # 000: if equip_name == "" and equip_id == "": sta1 = YBQstatus.objects.all() # 010: elif equip_name == "" and equip_id != "": sta1 = YBQstatus.objects.filter( equip_id__equip_id__contains=equip_id) # 100: elif equip_name != "" and equip_id == "": sta1 = YBQstatus.objects.filter( equip_id__equip_name__contains=equip_name) # 110: elif equip_name != "" and equip_id != "": sta1 = YBQstatus.objects.filter( equip_id__equip_name__contains=equip_name, equip_id__equip_id__contains=equip_id) dat = [{"sex_trap": eval(x.ybq_status), "upl_time": x.upl_time, "equip_name": x.equip_id.equip_name,"is_online": x.is_online, "off_time": x.off_time} for x in sta1] data = {"nums":sta1.count(),"dat":dat[(10*(page-1)):(page*10)]} data = json.dumps(data, cls=CJSONEncoder, indent=4) # print("data:",data) return HttpResponse(data) # 诱捕器详情页面: class ybq_equip_detail(View): def post(self,request): equip_id = request.POST.get("equip_id") ret = request.POST.get("ret") if ret == "detail": #数据详情 ybq_list = YBQstatus.objects.get(equip_id_id=equip_id) data = {"sex_trap": eval(ybq_list.ybq_status) , "upl_time": ybq_list.upl_time, "equip_name": ybq_list.equip_id.equip_name,"is_online": ybq_list.is_online, "off_time": ybq_list.off_time} elif ret == "history": #历史记录 page = int(request.POST.get("page")) ybq_list = YBQdata.objects.filter(equip_id_id=equip_id) begin_time = request.POST.get('begin_time') end_time = request.POST.get('end_time') if begin_time: #时间转换 begindate = re.findall(r"\d+\.?\d*", begin_time) enddate = re.findall(r"\d+\.?\d*", end_time) start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2])) end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2])) print("start_date:", start_date) print("end_date:", end_date) ybq_list = YBQdata.objects.filter(equip_id_id=equip_id, upl_time__range=(start_date, end_date)) nums = ybq_list.count() dat = [] # 获得当前页: print("page:", page) for i in ybq_list: dat.append({"sex_trap": i.ybq_data, "upl_time": i.upl_time}) data = {"dat":dat[(10*(page-1)):(page*10)],"nums":nums} elif ret == "photo": #照片列表 ybq_list = YBQphoto.objects.filter(equip_id=equip_id) page = int(request.POST.get("page")) dat = [] for i in ybq_list: dat.append({ "equip_id":i.equip_id,"time":i.upl_time,"addr":i.addr,"describe":i.describe }) data = {"nums":len(dat),"dat":dat[(10*(page-1)):(page*10)]} elif ret == "del_img": #删除图片 img_list = request.POST.get('addrlist') if img_list: print("img_list:",type(eval(img_list))) print("img_list:",eval(img_list)) for i in eval(img_list): if os.path.exists(i) == True: # 删除图片文件 os.remove(i) # 删除数据库照片列表中,照片路径: try: CBDphoto.objects.filter(equip_id=equip_id, addr=i).delete() print("-----image delete ok!-----") except: print("-----image delete failed!-----") else: # 照片在数据库里不存在,但是数据库有路径的情况会删除不掉 # 因此不管何时都删除数据库路径 try: CBDphoto.objects.filter(equip_id=equip_id, addr=i).delete() except Exception as e: print("========>>",e) print("-----image not exist!-----") data = {"code":200} data = json.dumps(data, cls=CJSONEncoder, indent=4) return HttpResponse(data) # 诱捕器一型mqtt下发控制: class ybq_equip_mqtt_v1(View): def post(self, request): ret = request.POST.get('ret') imei = request.POST.get('equip_id') # 刷新 if ret == "data": payload = {"cmd":"read","ext":"data"} # 查询服务器配置 elif ret == "serverconf": payload = {"cmd":"read","ext":"serverconf"} # 设置上传时间间隔 elif ret == "data_tim": dat_f = request.POST.get('dat_f') payload = {"cmd":"set","ext":{"type":"data_tim","dat_f":int(dat_f)}} # 清网 elif ret == "clearnet": payload = {"cmd":"ctrl","ext":"clearnet"} # 开启时控 elif ret == "work_tim1": st = request.POST.get('st') et = request.POST.get('et') payload = {"cmd":"set","ext":{"type":"work_tim","timctrl":1,"st":int(st),"et":int(et)}} # 关闭时控 elif ret == "work_tim0": payload = {"cmd":"set","ext":{"type":"work_tim","timctrl":0,"st":20,"et":2}} # 关闭 elif ret == "ds0": payload = {"cmd":"ctrl","ext":{"type":"power","ds":0}} # 开启 elif ret == "ds1": payload = {"cmd":"ctrl","ext":{"type":"power","ds":1}} # 重启 elif ret == "reboot": payload = {"cmd":"reboot"} # 升级 elif ret == "update": payload = {"cmd":"update"} topic = "yfkj/xycb/s2c/"+imei cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} print(json.dumps(payload, indent=1)) res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) # data = json.dumps(data) return HttpResponse(res.status_code) #诱捕器二型mqtt下发控制 class ybq_equip_mqtt_v2(View): def post(self, request): ret = request.POST.get('ret') imei = request.POST.get('equip_id') # 刷新 if ret == "data": payload = {"cmd":"read","ext":"data"} # 查询mqtt网络配置 elif ret == "mqttconf": payload = {"cmd":"read","ext":"mqttconf"} # 拍照 elif ret == "takephoto": payload = {"cmd":"ctrl","ext":{"takephoto":"1"}} # 卷沾虫板: elif ret == "turn": payload = {"cmd":"ctrl","ext":{"turn":"1"}} # 测试性诱剂 elif ret == "move": payload = {"cmd":"ctrl","ext":{"move":"1"}} # 下发12V重新上电: elif ret == "repower": payload = {"cmd":"repower"} # 关闭: elif ret == "ds0": payload = {"cmd":"ctrl","ext":{"ds":"0"}} # 开启: elif ret == "ds1": payload = {"cmd":"ctrl","ext":{"ds":"1"}} # 重启 elif ret == "reboot": payload = {"cmd":"reboot"} # 升级 elif ret == "update": payload = {"cmd":"update"} # 下发设置循环工作模式-间隔时间: elif ret == "photoset": pic_t = request.POST.get('pic_t') pic_f = request.POST.get('pic_f') payload = {"cmd":"set","ext":{"type":"photo","pic_t":pic_t,"pic_f":pic_f}} # 设置定时卷沾虫板: elif ret == "turnset": turn_t = request.POST.get('turn_t') payload = {"cmd":"set","ext":{"type":"turn","turn_t":turn_t}} topic = "yfkj/xycb/s2c/"+imei #[1:-1] cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} print(json.dumps(payload, indent=1)) res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) # res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", # data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) return HttpResponse(res.status_code) # 诱捕器温湿度图 class ybq_line_chart(View): def post(self, request): begin_time = request.POST.get('begin_time') end_time = request.POST.get('end_time') print("begin_time:", begin_time) print("end_time:", end_time) equip_id = request.POST.get('e_id') print("equip_id:", equip_id) # 获取当前日期: now_time = datetime.datetime.now() print("当前日期为:",now_time) print("当前月为:",now_time.month) sta1 = YBQdata.objects.filter(equip_id=equip_id,upl_time__month=now_time.month).values() if begin_time: begindate = re.findall(r"\d+\.?\d*", begin_time) enddate = re.findall(r"\d+\.?\d*", end_time) start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2])) end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2])) print("start_date:", start_date) print("end_date:", end_date) sta1 = YBQdata.objects.filter( equip_id=equip_id, upl_time__range=(start_date, end_date)).values() sta2 = [{"at": eval(x['ybq_data'])['at'], "ah": eval(x['ybq_data'])['ah'], "cpu_tmp": eval(x['ybq_data'])['cpu_tmp'], "tim": x['upl_time']} for x in sta1] data = json.dumps(sta2, cls=CJSONEncoder) return HttpResponse(data) #微信虫害识别 class wechat_insect_discern(View): def post(self,request): imageFile = request.FILES.get('imagefile') imageFile = {"imageFile":imageFile} print("imageFile",imageFile) username = 'yunfei' uniqueKey = '84e6eb40f3a616dd14b1fefc75425006' url = 'http://47.99.110.100:8080/recognizationSys/api/recognization' data = {'imageType':'1','gis':'118.279643#31.221456','username':username,'uniqueKey':uniqueKey} res = requests.post(url,data=data,files=imageFile) return HttpResponse(res.text) #微信病害识别 class wechat_plant_discern(View): def post(self,request): imageFile = request.FILES.get('imagefile') imageFile = {"imageFile":imageFile} username = 'yunfei' uniqueKey = '84e6eb40f3a616dd14b1fefc75425006' url = 'http://47.99.110.100:8080/recognizationSys/api/recognization' data = {'imageType':'2','gis':'118.279643#31.221456','username':username,'uniqueKey':uniqueKey} res = requests.post(url,data=data,files=imageFile) return HttpResponse(res.text) #测报灯害虫短新预警设置 class wechat_pest(View): def get(self,request): pest_list = copy.deepcopy(insect_dict_new) valus = list(pest_list.values()) keys = list(pest_list.keys()) data = [] for i in range(len(valus)): dicts = {"name":"","vauls":""} dicts["name"] = valus[i] dicts["vauls"]= keys[i] data.append(dicts) data = json.dumps(data) return HttpResponse(data) def post (self,request): pestCategory = request.POST.get("pestCategory") pestCategoryNum = request.POST.get("pestCategoryNum") appointPest = request.POST.get("appointPest") appointPestName1 = request.POST.get("appointPestName1") appointPestNum1 = request.POST.get("appointPestNum1") pestTotal = request.POST.get("pestTotal") pestTotalNum = request.POST.get("pestTotalNum") pestWarn = request.POST.get("pestWarn") phone = request.POST.get("phone") print("phone",phone) equip_id = request.POST.get("equip_id") print("equip_id",equip_id) mobile_pat = re.compile('^(13\d|14[5|7]|15\d|166|17\d|18\d)\d{8}$') res = re.search(mobile_pat,phone) if res: if appointPestName1: appointPestName1 = "".join(appointPestName1.split(","))[:-1] if appointPestNum1: appointPestNum1 = "".join(appointPestNum1.split(","))[:-1] dat = {"pestCategory":pestCategory,"pestCategoryNum":pestCategoryNum,"appointPest":appointPest, "appointPestName":appointPestName1,"appointPestNum":appointPestNum1,"pestTotal":pestTotal, "pestTotalNum":pestTotalNum,"pestWarn":pestWarn,"phone":phone} dat = json.dumps(dat) equip_id = Equip.objects.get(equip_id=equip_id) if Msg_Conf.objects.filter(equip_id=equip_id).exists(): msgconf = Msg_Conf.objects.get(equip_id=equip_id) msgconf.conf = dat msgconf.save() else: Msg_Conf.objects.create(equip_id=equip_id,conf=dat) data = 0 else: data = 1 return HttpResponse(data) #测报灯害虫短新预警数据返现 class wechat_pest_list(View): def post (self,request): equip_id = request.POST.get("equip_id") cbd_pest = Msg_Conf.objects.filter(equip_id=equip_id).values() data = [] date = [] if cbd_pest: for i in cbd_pest : dat = eval(i["conf"]) appointPestName = dat["appointPestName"] appointPestNum = dat["appointPestNum"] if appointPestName.find("#") != -1: pic_list = appointPestName.split("#") for x in pic_list: data.append(insect_dict_new[x]) else: if appointPestName != "0" and appointPestName != '': data.append(insect_dict_new[appointPestName]) else: data.append(appointPestName) if appointPestNum.find("#") != -1: pic_list = appointPestNum.split("#") for x in pic_list: date.append(x) else: if appointPestNum != "0" and appointPestNum != '': date.append(appointPestNum) else: date.append(appointPestNum) data = {"pestCategory":dat["pestCategory"],"pestCategoryNum":dat["pestCategoryNum"], "appointPest":dat["appointPest"],"appointPestName":data,"appointPestNum":date, "pestTotal":dat["pestTotal"],"pestTotalNum":dat["pestTotalNum"],"pestWarn":dat["pestWarn"],"phone":dat["phone"]} else: data = {"data":0} data = json.dumps(data) return HttpResponse(data) #sim信息 class scd_sim_list(View): def post(self,request): user_name = request.POST.get("username") page = int(request.POST.get("page")) current_user = MyUser.objects.get(username=user_name) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---用户") sta = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") sta = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency) else: print("---管理员") sta = Equip_SimInfo.objects.all() siminfos = [] nums = len(sta) for i in sta: siminfos.append({ "equip_id":i.equip_id.equip_id, "equip_name":i.equip_name, "equip_type":i.equip_type, "iccid":i.iccid, "carrier":i.carrier, "data_plan":i.data_plan, "data_usage":i.data_usage, "account_status":i.account_status, "expiry_date":i.expiry_date, "data_balance":i.data_balance }) equip_ids=siminfos[(10*(page-1)):(page*10)] data = {"dat":equip_ids,"nums":nums} data = json.dumps(data,indent=4) return HttpResponse(data) #地图设备分布 class wechat_equip_map(View): def post(self, request): current_user = request.POST.get('username') print("请求定位信息!!!") print("current_user:", current_user) current_user = MyUser.objects.get(username=current_user) ret = request.POST.get('ret') print("ret:", ret) # page = int(request.POST.get('page')) # print("page",page) if ret == "cbd": print("请求测报灯定位!") if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---不是管理员") sta1 = RecentCBDdata.objects.filter(equip_id__equip_user=current_user).values() elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") sta1 = RecentCBDdata.objects.filter(equip_id__equip_agency=current_user.user_agency).values() else: print("---管理员") sta1 = RecentCBDdata.objects.all().values() sta2 = [] for x in sta1: try: sta2.append({ "equip_id": x['equip_id_id'], "equip_type": 3, "equip_name": x['equip_name'], "gps": eval(x['cbd_data'])['gps'], "lng": eval(x['cbd_data'])['lng'], "lat": eval(x['cbd_data'])['lat'] }) except: sta2.append({ "equip_id": x['equip_id_id'], "equip_type": 3, "equip_name": x['equip_name'], "gps": 2, "lng": eval(x['cbd_data'])['lng'], "lat": eval(x['cbd_data'])['lat'] }) # sta2 = [{ # "equip_id": x['equip_id_id'], # "equip_type": 3, # "equip_name": x['equip_name'], # "lng": eval(x['cbd_data'])['lng'], # "lat": eval(x['cbd_data'])['lat'] # } for x in sta1] data = json.dumps(sta2) # print("data:", data) return HttpResponse(data) elif ret == "scd": print("请求杀虫灯定位!") if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---不是管理员") sta1 = RecentSCDdata.objects.filter( equip_id__equip_user=current_user).values() elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") sta1 = RecentSCDdata.objects.filter(equip_id__equip_agency=current_user.user_agency).values() else: print("---管理员") sta1 = RecentSCDdata.objects.all().values() sta2 = [] a = datetime.datetime.now() for x in sta1: try: sta2.append({ "equip_id": x['equip_id_id'], "equip_type": 2, "equip_name": x['equip_name'], "gps": eval(x['scd_data'])['gps'], "lng": eval(x['scd_data'])['lng'], "lat": eval(x['scd_data'])['lat'] }) except: sta2.append({ "equip_id": x['equip_id_id'], "equip_type": 2, "equip_name": x['equip_name'], "gps": 2, "lng": 113, "lat": 34 }) print("消耗时间为",datetime.datetime.now()-a) data = json.dumps(sta2) # print("data:", data) return HttpResponse(data) elif ret == "qxz": print("请求气象站定位!") if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---不是管理员") sta1 = QXZ_Base_Info.objects.filter( equip_id__equip_user=current_user) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") sta1 = QXZ_Base_Info.objects.filter(equip_id__equip_agency=current_user.user_agency) else: print("---管理员") sta1 = QXZ_Base_Info.objects.all() sta2 = [{ "equip_id": x.equip_id_id, "equip_type": 5, "equip_name": x.equip_id.equip_name, "lng": x.lng, "lat": x.lat } for x in sta1] data = json.dumps(sta2) # print("data:", data) return HttpResponse(data) elif ret == "bzy": print("请求孢子仪定位!") if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---不是管理员") sta1 = BZYstatus.objects.filter( equip_id__equip_user=current_user) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") sta1 = BZYstatus.objects.filter(equip_id__equip_agency=current_user.user_agency) else: print("---管理员") sta1 = BZYstatus.objects.all() sta2 = [{ "equip_id": x.equip_id_id, "equip_type": 7, "equip_name": x.equip_id.equip_name, "lng": eval(x.bzy_status)['lng'], "lat": eval(x.bzy_status)['lat'] } for x in sta1] data = json.dumps(sta2) # print("data:", data) return HttpResponse(data) elif ret == "xyq": print("请求性诱设备定位!") if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---不是管理员") sta1 = YBQstatus.objects.filter( equip_id__equip_user=current_user) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") sta1 = YBQstatus.objects.filter(equip_id__equip_agency=current_user.user_agency) else: print("---管理员") sta1 = YBQstatus.objects.all() sta2 = [] for x in sta1: try: sta2.append({ "equip_id": x.equip_id.equip_id, "equip_type": 4, "equip_name": x.equip_id.equip_name, "gps": eval(x.ybq_status)['gps'], "lng": x.lng, "lat": x.lat }) except: sta2.append({ "equip_id": x.equip_id.equip_id, "equip_type": 4, "equip_name": x.equip_id.equip_name, "gps": 2, "lng": x.lng, "lat": x.lat }) # sta2 = [{ # "equip_id": x.equip_id_id, # "equip_type": 4, # "equip_code": x.equip_code, # "lng": eval(x.ybq_status)['lng'], # "lat": eval(x.ybq_status)['lat'] # } for x in sta1] data = json.dumps(sta2) # print("data:", data) return HttpResponse(data) elif ret == "imei": print("imei搜索定位!") equip_id = request.POST.get('equip_id') print("equip_id:", equip_id) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: # 非管理员筛选出当前用户: scd_equips = Equip.objects.filter(equip_user=current_user,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='2')) cbd_equips = Equip.objects.filter(equip_user=current_user,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='3')) bzy_equips = Equip.objects.filter(equip_user=current_user,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='7')) qxz_equips = Equip.objects.filter(equip_user=current_user,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='5')) xyq_equips = Equip.objects.filter(equip_user=current_user,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='4')) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: # 代理商用户 scd_equips = Equip.objects.filter(equip_agency=current_user.user_agency,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='2')) cbd_equips = Equip.objects.filter(equip_agency=current_user.user_agency,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='3')) bzy_equips = Equip.objects.filter(equip_agency=current_user.user_agency,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='7')) qxz_equips = Equip.objects.filter(equip_agency=current_user.user_agency,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='5')) xyq_equips = Equip.objects.filter(equip_agency=current_user.user_agency,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='4')) else: # 管理员用户 scd_equips = Equip.objects.filter(equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='2')) cbd_equips = Equip.objects.filter(equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='3')) bzy_equips = Equip.objects.filter(equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='7')) qxz_equips = Equip.objects.filter(equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='5')) xyq_equips = Equip.objects.filter(equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='4')) if not scd_equips and not cbd_equips and not bzy_equips and not qxz_equips and not xyq_equips: sta5 = 0 data = json.dumps(sta5) return HttpResponse(data) # print("scd_equips:", scd_equips) # print("cbd_equips:", cbd_equips) else: sta2 = [] if scd_equips: for i in scd_equips: sta1 = SCDstatus.objects.filter( equip_id__equip_id__contains=equip_id) for x in sta1: try: sta2.append({ "equip_id": x.equip_id.equip_id, "equip_type": x.equip_id.equip_type.type_id, "equip_name": x.equip_id.equip_name, "gps": eval(x.scd_status)['gps'], "lng": x.lng, "lat": x.lat, "equip_location": x.equip_location }) except: sta2.append({ "equip_id": x.equip_id.equip_id, "equip_type": x.equip_id.equip_type.type_id, "equip_name": x.equip_id.equip_name, "gps": 2, "lng": x.lng, "lat": x.lat, "equip_location": x.equip_location }) sta4 = [] if cbd_equips: for i in cbd_equips: sta3 = CBDstatus.objects.filter( equip_id__equip_id__contains=equip_id) for x in sta3: try: sta4.append({ "equip_id": x.equip_id.equip_id, "equip_type": 3, "equip_name": x.equip_id.equip_name, "gps": eval(x.cbd_status)['gps'], "lng": x.lng, "lat": x.lat, "equip_location": x.equip_location }) except: sta4.append({ "equip_id": x.equip_id.equip_id, "equip_type": 3, "equip_name": x.equip_id.equip_name, "gps": 2, "lng": x.lng, "lat": x.lat, "equip_location": x.equip_location }) sta7 = [] if bzy_equips: for i in bzy_equips: sta6 = BZYstatus.objects.filter( equip_id__equip_id__contains=equip_id) for x in sta6: try: sta7.append({ "equip_id": x.equip_id.equip_id, "equip_type": 7, "equip_name": x.equip_id.equip_name, "lng": eval(x.bzy_status)['lng'], "lat": eval(x.bzy_status)['lat'], # "equip_location": x.equip_location }) except: sta7.append({ "equip_id": x.equip_id.equip_id, "equip_type": 7, "equip_name": x.equip_id.equip_name, "lng": 113, "lat": 34 # "lng": eval(x.bzy_status)['lng'], # "lat": eval(x.bzy_status)['lat'], # "equip_location": x.equip_location }) sta9 = [] if qxz_equips: for i in qxz_equips: sta8 = QXZ_Base_Info.objects.filter( equip_id__equip_id__contains=equip_id) for x in sta8: try: sta9.append({ "equip_id": x.equip_id.equip_id, "equip_type": 5, "equip_name": x.equip_id.equip_name, "lng": x.lng, "lat": x.lat, # "equip_location": x.equip_location }) except: sta9.append({ "equip_id": x.equip_id.equip_id, "equip_type": 5, "equip_name": x.equip_id.equip_name, "lng": x.lng, "lat": x.lat, # "equip_location": x.equip_location }) sta11 = [] if xyq_equips: for i in xyq_equips: sta10 = YBQstatus.objects.filter( equip_id__equip_id__contains=equip_id) for x in sta10: try: sta11.append({ "equip_id": x.equip_id.equip_id, "equip_type": 4, "equip_name": x.equip_id.equip_name, "gps": eval(x.ybq_status)['gps'], "lng": x.lng, "lat": x.lat, "equip_location": x.equip_location }) except: sta11.append({ "equip_id": x.equip_id.equip_id, "equip_type": 4, "equip_name": x.equip_id.equip_name, "gps": 2, "lng": x.lng, "lat": x.lat, "equip_location": x.equip_location }) # sta4 = [{ # "equip_id": x.equip_id.equip_id, # "equip_type": x.equip_id.equip_type.type_id, # "equip_name": x.equip_id.equip_name, # "lng": x.lng, # "lat": x.lat, # "equip_location": x.equip_location # } for x in sta3] sta5 = sta2+sta4+sta7+sta9+sta11 data = json.dumps(sta5) return HttpResponse(data) #用户管理,用户页面 class wechat_user_list(View): def post(self,request): user_name = request.POST.get("username") page = int(request.POST.get('page')) print("page:", page) ret = request.POST.get("ret") print("user_name",user_name) user_list = [] try: current_user = MyUser.objects.get(username=user_name) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: pass elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("----代理商") # 搜索条件为空,获取所有用户 if ret == '': user_list = MyUser.objects.filter(user_agency=current_user.user_agency) # 搜索条件存在,根据用户名搜索用户 elif ret != '': user_list = MyUser.objects.filter(user_agency=current_user.user_agency,username__contains=ret) else: print("----管理员") # 搜索条件为空,获取所有用户 if ret == '': user_list = MyUser.objects.all() # 搜索条件存在,根据用户名搜索用户 elif ret != '': user_list = MyUser.objects.filter(username__contains=ret) except Exception as e: print(e) dat = [] nums = len(user_list) for i in user_list[(10*(page-1)):(page*10)]: sta1 = MyUser.objects.filter(username=i.username) try: for x in sta1: if x.is_superuser == 1 and x.is_staff == 1: role = "超级管理员" elif x.is_superuser == 0 and x.is_staff == 1: role = "管理员" elif x.is_superuser == 0 and x.is_staff == 0: role = "用户" sta2 = {"userId": x.id, "user_name": x.username, "user_email": x.email, "user_type": role} except AttributeError: for x in sta1: if x.is_superuser == 1 and x.is_staff == 1: role = "超级管理员" elif x.is_superuser == 0 and x.is_staff == 1: role = "管理员" elif x.is_superuser == 0 and x.is_staff == 0: role = "用户" sta2 = {"userId": x.id, "user_name": x.username, "user_email": x.email, "user_type": role} dat.append(sta2) data = {"nums":nums,"dat":dat} data = json.dumps(data, cls=CJSONEncoder) return HttpResponse(data) #用户详情页面 class wechat_user_detail(View): def get(self,request): user_group_list = User_Group.objects.all().values() data = [] for i in user_group_list: data.append({ "id":i["id"], "name":i["name"] }) data = json.dumps(data) return HttpResponse(data) def post(self,request): userId = request.POST.get("id") user_name = MyUser.objects.get(id=userId) groups = User_Group.objects.all() group_list = [] for i in groups: group_list.append(i.name) group = Group.objects.filter(user=user_name) if group.count() == 0: group_name = "" else: group_name = group[0].name try: if user_name.is_superuser == 1 and user_name.is_staff == 1: # 超级管理员 role = 0 elif user_name.is_superuser == 0 and user_name.is_staff == 1: # 管理员 role = 1 elif user_name.is_superuser == 0 and user_name.is_staff == 0: # 普通用户 role = 2 dat = {"userId":user_name.id, "username":user_name.username, "email":user_name.email, "tel":user_name.user_phone, "province":user_name.user_pro, # 省 "city":user_name.user_city, # 市 "area":user_name.user_area, # 县/区 "usertype":role, "latestTime":user_name.last_login, "creatTime":user_name.date_joined, "user_groups":group_list, "user_group":group_name, "user_remark":user_name.user_remark, "active":user_name.is_active} except AttributeError: if user_name.is_superuser == 1 and user_name.is_staff == 1: role = 0 elif user_name.is_superuser == 0 and user_name.is_staff == 1: role = 1 elif user_name.is_superuser == 0 and user_name.is_staff == 0: role = 2 dat = {"userId":user_name.id, "username":user_name.username, "email":user_name.email, "tel":user_name.user_phone, "province":user_name.user_pro, "city":user_name.user_city, "area":user_name.user_area, "usertype":role, "latestTime":user_name.last_login, "creatTime":user_name.date_joined, "user_groups":group_list, "user_group":group_name, "user_remark":user_name.user_remark, "active":user_name.is_active} data = json.dumps(dat,cls=CJSONEncoder) print("data:",data) return HttpResponse(data) #禁用用户 class wechat_user_prohibit(View): def post(self,request): ret = request.POST.get("ret") current_user = request.POST.get('username') print("current_user:", current_user) current_user = MyUser.objects.get(username=current_user) if ret == "state": # 禁用和启用: state = request.POST.get("state") print("state:",state) try: current_user.is_active = state current_user.save() data = "0" except: data = "1" return HttpResponse(data) elif ret == "pwd": # 重置密码: new_pwd = request.POST.get("password") print("new_pwd:",new_pwd) try: current_user.set_password(new_pwd) current_user.save() data = "0" except: data = "1" return HttpResponse(data) # 设备分配页面 class wechat_equip_allot(View): def post(self,request): uname = request.POST.get('username') print(uname) page = int(request.POST.get('page')) ret = request.POST.get("ret") print(ret) print("page=",page) user_list = [] if ret: user_list = MyUser.objects.filter(username__contains=ret) else: # 接收当前用户 # current_user = request.session.get('username') # print("current_user:", current_user) current_user = MyUser.objects.get(username=uname) # 判断是经销商还是超级管理员 if current_user.is_superuser == True or current_user.is_staff == True: user_list = MyUser.objects.all().order_by( "-date_joined")[(10*(page-1)):(page*10)] elif current_user.is_agency: user_list = MyUser.objects.filter(user_agency=current_user.user_agency).order_by( "-date_joined")[(10*(page-1)):(page*10)] # user_list = MyUser.objects.all() nums = len(user_list) user_list = user_list[(10*(page-1)):(page*10)] dat = [] for x in user_list: try: sta = {"userid":x.id,"username":x.username,"email":x.email} except AttributeError: sta = {"userid":x.id,"username":x.username,"email":x.email} dat.append(sta) data = {'nums':nums,'dat':dat} data = json.dumps(data, cls=CJSONEncoder) User_Log.objects.create(log_user=request.user.username, log_ip=request.META['REMOTE_ADDR'], log_desc='设备分配') return HttpResponse(data) # 未分配设备列表 class wechat_equip_allot_list(View): def post(self,request): userid = request.POST.get('userid') print("userid:",userid) current_user = MyUser.objects.get(id=userid) f_id = request.POST.get('f_id') page = int(request.POST.get('page')) equip_list = [] print("page=",page) print("current_user",current_user) if f_id: equip_list = Equip.objects.filter( Q(equip_user=None, equip_id__contains=f_id) | Q(equip_user=current_user, equip_id__contains=f_id)) else: # 判断是经销商还是超级管理员 if current_user.is_superuser == True or current_user.is_staff == True: equip_list = Equip.objects.filter( Q(equip_user=None) | Q(equip_user=current_user)) elif current_user.is_agency: equip_list = Equip.objects.filter( Q(equip_agency=current_user.user_agency, equip_user=None) | Q(equip_agency=current_user.user_agency, equip_user=current_user)) # equip_list = Equip.objects.filter( # Q(equip_user=None) | Q(equip_user=user_obj)) nums = len(equip_list) equip_list = equip_list[(10*(page-1)):(page*10)] dat = [] for x in equip_list: if x.equip_user == current_user: checked = "1" else: checked = "0" try: sta = {"checked":checked, "equipid":x.equip_id, "equipname":x.equip_name, "equiptype":'%s'%x.equip_type, "equip_add_time":x.equip_add_time, "equip_user":'%s'%x.equip_user} except AttributeError: sta = {"checked":checked, "equipid":x.equip_id, "equipname":x.equip_name, "equiptype":'%s'%x.equip_type, "equip_add_time":x.equip_add_time, "equip_user":'%s'%x.equip_user} dat.append(sta) data = {'nums':nums,'dat':dat} data = json.dumps(data, cls=CJSONEncoder,sort_keys=True)# sort_keys = True 排序 return HttpResponse(data) # 确认分配 class wechat_equip_allot_confirm(View): def post(self,request): userid = request.POST.get('userid') user_obj = MyUser.objects.get(id=userid) equip_ids = request.POST.get('equip_ids') print("equip_ids=", equip_ids) equip_ids = json.loads(equip_ids) # equip_ids = equip_ids.split(',') # print("当前页的所有设备id:equip_ids=", equip_ids) # 获得选中的复选框: print("user_obj",user_obj) check_box_list = request.POST.get('check_box_list') print('check_box_list:', check_box_list) check_box_list = json.loads(check_box_list) no_check_box_list = [] for i in equip_ids: if i in check_box_list: pass else: no_check_box_list.append(i) print('no_check_box_list=', no_check_box_list) try: for checked_id in check_box_list: choose_equip = Equip.objects.get(equip_id=checked_id) print(choose_equip.equip_user) # 如果选中的设备没有用户:即选中的设备 设备用户为None: if choose_equip.equip_user == None: # 只有当选中的设备id对应的设备 没有用户时才分配 choose_equip.equip_user = user_obj choose_equip.save() # 保存到数据库 # 取消分配:给当前用户取消已分配的设备; for a in no_check_box_list: choose_equip = Equip.objects.get(equip_id=a) choose_equip.equip_user = None # 把设备的设备用户改为None,表示取消分配 choose_equip.save() except Exception as e: print(e) data = "1" data = "0" User_Log.objects.create(log_user=request.user.username, log_ip=request.META['REMOTE_ADDR'], log_desc='设备分配--分配设备') return HttpResponse(data) #用户反馈 class wechat_feedback(View): def post(self,request): name = request.POST.get("name") phone = request.POST.get("phone") email = request.POST.get("email") try: countent = request.POST.get("countent") Fdb.objects.create( fdb_name = name, fdb_phone = phone, fdb_email = email, fdb_content = countent, ) data = 0 except Exception as e : print(e) data = 1 return HttpResponse(data) # 病虫害库 class wechat_plant(View): def get(self,request): data = json.dumps(insect_dict_new,ensure_ascii=False) return HttpResponse(data) class tests(View): def get(self,request): pass def post(self,request): try: now_time = datetime.datetime.now().strftime('%Y%m%d') nowtime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') post_list = request.body.decode() # print("接收到的数据-------->>>>>>",post_list) pos = json.loads(post_list) print(pos) if pos["payload"]["cmd"] == "data" or pos["payload"]["cmd"] == "status" or pos["StationID"] !="" : try: imei = pos["payload"]["ext"]["imei"] except: imei = pos["imei"] else: imei = pos["StationID"] print(type(pos)) path = "logs/"+ imei if os.path.exists(path) == False: os.makedirs(path) f = open('logs/%s/'%imei + now_time +'.txt','a') # with open(path,"a") as file: #只需要将之前的”w"改为“a"即可,代表追加内容 f.write(post_list+"\n") f.write(nowtime +"\r\n") f.close() data = 0 return HttpResponse(data) except Exception as e: print(e) data = 0 return HttpResponse(data) from apps.ReportManage.all_dict import transpont_equip_cbd,transpont_equip_qxz_li,qxz_dict_li,transpont_equip_qxz_params # from nt import mkdir # import xlrd, xlwt class tbest(View): def post(self,request): # print(insect_dict_new) # post_list = json.loads(request.body.decode()) imie = "235185770" qxz_list = QXZstatus_New.objects.get(equip_id=imie) qxz_base = QXZ_Base_Info.objects.get(equip_id=imie) if imie in transpont_equip_qxz_li.keys(): if qxz_list.is_online == "1": is_online = "正常" else: is_online = "异常" info = {"sbid":imie,"time":qxz_list.upl_time.strftime('%Y-%m-%d %H:%M:%S'),"status":is_online,"type":"环境监测"} data = [qxz_list.e1,qxz_list.e2,qxz_list.e3,qxz_list.e4,qxz_list.e5,qxz_list.e6,qxz_list.e7,qxz_list.e8,qxz_list.e9,qxz_list.e10,qxz_list.e11,qxz_list.e12,qxz_list.e13,qxz_list.e14, qxz_list.e15,qxz_list.e16,qxz_list.e17,qxz_list.e18, qxz_list.e19,qxz_list.e20,qxz_list.e21,qxz_list.e22, qxz_list.e23,qxz_list.e24,qxz_list.e25,qxz_list.e26, qxz_list.e27,qxz_list.e28,qxz_list.e29,qxz_list.e30] test = [i for i in data if i != ''] iotdata = [] for i in test: qxz = i.split("#") qxz_title = qxz_dict_li[qxz[1]] iotdata.append({ "name":qxz_title[1],"value":qxz[0],"unit":qxz_title[2], }) iotdata.append({"name":"dl","value":qxz_base.volt,"unit":"%","name":"xhqd","value":qxz_base.rssi,"unit":""}) data = {"info":info,"iotdata":iotdata,"Params":transpont_equip_qxz_params[imie]} data = json.dumps(data) return HttpResponse(data)