| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374 |
- # -*- 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.objects.all()
- for i in user_equip_list:
- equip_type_list.append(i.equip_type.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')
- ret = request.POST.get("ret")
- print("current_user:", current_user)
- current_user = MyUser.objects.get(username=current_user)
- if types == 2:
- equips = SCDstatus
- elif types == 3:
- equips = CBDstatus
- elif types == 7:
- equips = BZYstatus
- elif types == 5:
- equips = QXZstatus
- elif types == 8:
- equips = Trapstatus
- if ret == "list":
- 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)
- elif ret == "set":
- equip_id = request.POST.get("equip_id")
- 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,equip_id__contains=equip_id)
- 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,equip_id__contains=equip_id)
- else:
- print("---管理员")
- equip_list = Equip.objects.filter(equip_type__type_id=types,equip_id__contains=equip_id)
- nums = equip_list.count()
- equip_list = equip_list[(10*(page-1)):(page*10)]
- data = {'nums': nums, 'dat': ""}
- dat = []
- cbd_img = 0
- for i in equip_list:
- if types == 3:
- cbd_photo = CBDphoto.objects.filter(equip_id=i.equip_id)
- if cbd_photo.exists():
- cbd_img = 1
- sta1 = equips.objects.filter(equip_id=i.equip_id).select_related()
- for x in sta1:
- 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}
- 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}
- 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)
- 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)
- if req == "scd":
- time_list = SCDdata.objects.filter(equip_id=equip_id,upl_time__range=(start_date,end_date)).values()
- elif req == "cbd":
- time_list = CBDdata.objects.filter(equip_id=equip_id,upl_time__range=(start_date,end_date)).values()
- elif req == "bzy":
- time_list = BZYdata.objects.filter(equip_id=equip_id,upl_time__range=(start_date,end_date)).values()
- elif req == "qxz":
- time_list = QXZdata_New.objects.filter(equip_id=equip_id,upl_time__range=(start_date,end_date)).values()
- elif req == "xy":
- time_list = Trapdata.objects.filter(
- equip_id=equip_id, upl_time__range=(start_date, end_date)).values()
- else:
- if req == "scd":
- time_list = SCDdata.objects.filter(equip_id=equip_id,upl_time__month=now_time.month,upl_time__year=now_time.year).values()
- elif req == "cbd":
- time_list = CBDdata.objects.filter(equip_id=equip_id,upl_time__month=now_time.month,upl_time__year=now_time.year).values()
- elif req == "bzy":
- time_list = BZYdata.objects.filter(equip_id=equip_id,upl_time__month=now_time.month,upl_time__year=now_time.year).values()
- elif req == "qxz":
- time_list = QXZdata_New.objects.filter(equip_id=equip_id,upl_time__month=now_time.month,upl_time__year=now_time.year).values()
- elif req == "xy":
- time_list = Trapdata.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_report(View):
- def post(self,request):
- equip_id = request.POST.get("equip_id")
- req = request.POST.get("req")
- print("req",req)
- if req == "new_time":
- scd_list = SCDdata.objects.filter(equip_id=equip_id)[:1]
- for i in scd_list:
- print(i.scd_data)
- print(i.upl_time)
- elif req == "time":
- scd_id = request.POST.get("id")
- scd_list = SCDdata.objects.filter(equip_id=equip_id,id=scd_id)
- elif req == "times":
- start_time = request.POST.get('start_time')
- end_time = request.POST.get('end_time')
- scd_list = SCDdata.objects.filter(equip_id=equip_id,upl_time__range=(start_time,end_time))
- data = {"code":"1"}
- print("scd_list",scd_list)
- try:
- for i in scd_list:
- scd_data = eval(i.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 = { "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 Exception as e:
- print("报错信息为:",e)
- 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 not all ([start_time,end_time]):
- print("-------",start_time)
- scd_list = SCDdata.objects.filter(equip_id=equip_id,upl_time__range=(start_date, end_date)).values()
- else:
- print("-------",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)
- 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"],
- "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')
- ret = request.POST.get('ret')
- end_time = datetime.datetime.now()
- data = []
- if ret == "day":
- start_date = datetime.datetime.now() - datetime.timedelta(days=2)
- scd_list = SCDdata.objects.filter(equip_id=equip_id,upl_time__range=(start_date, end_time)).values()
- elif ret == "one":
- start_date = datetime.datetime.now() - datetime.timedelta(days=1)
- scd_list = SCDdata.objects.filter(equip_id=equip_id,upl_time__range=(start_date, end_time)).values()
- elif ret == "month":
- scd_list = SCDdata.objects.filter(equip_id=equip_id,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]
- 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 = int(request.POST.get('ts'))
- except Exception as e:
- print(e)
- ts = ""
- # ts = timeSwitch 0光控 1时控 startBar 开始时间 stopBar 结束时间
- 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": 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)
- 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)
- # 读取当前设备的参数配置信息:
- 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 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")
- if req == "new_time":
- cbd_list = CBDdata.objects.filter(equip_id=equip_id)[:1]
- elif req == "time":
- cbd_id = request.POST.get("id")
- cbd_lsit = CBDdata.objects.filter(equip_id=equip_id,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 = CBDdata.objects.filter(equip_id=equip_id,upl_time__range=(start_date,end_date))
- data = {"code":"1"}
- 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"]
- 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 = {"imei":imei,"time":upl_time,"at":at,"ah":ah,
- "rps":rps,"lps":lps,"tps":tps,"hrt":hrt,"lng":lng,"lat":lat}
- except Exception as e:
- print("报错信息为:",e)
- data = {"code":"1"}
- data = json.dumps(data)
- return HttpResponse(data)
- #测报灯折线图
- class cbd_line_chart(View):
- def post(self,request):
- equip_id = request.POST.get("equip_id")
- req = request.POST.get("req")
- start_date = datetime.datetime.now()
- print("start_date",start_date)
- print("equip_id",equip_id)
- print("req",req)
- if req == "one":
- cbd_list = CBDdata.objects.filter(equip_id=equip_id,upl_time__month=start_date.month,upl_time__year=start_date.year)
- elif req == "two":
- end_date = start_date - datetime.timedelta(days=90)
- cbd_list = CBDdata.objects.filter(equip_id=equip_id,upl_time__range=(end_date,start_date))
- elif req == "year":
- cbd_list = CBDdata.objects.filter(equip_id=equip_id,upl_time__year=start_date.year)
- elif req == "all":
- cbd_list = CBDdata.objects.filter(equip_id=equip_id)
- 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")
- current_user = MyUser.objects.get(username=user_name)
- # 请求害虫种类列表:
- if req == "pest_list":
- pest_kinds = CBDpest.objects.filter(user=current_user)
- data = [{"pest_name": x.pest_name,} for x in pest_kinds]
- # 请求图片描述:
- 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)
- now_time = datetime.datetime.now()
- sta1 = CBDphoto.objects.filter(equip_id=equip_id, upl_time__month=now_time.month,upl_time__year=now_time.year)
- sta3 = CBDdata.objects.filter(equip_id=equip_id, upl_time__month=now_time.month,upl_time__year=now_time.year)
- if tbegin:
- sta1 = CBDphoto.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"
- try:
- if resp["returnResult"]["returnString"]:
- result = resp["returnResult"]["returnString"].split(",")
- print("result",result)
- nums = result[1]
- results = result[0]
- result_list = insect_dict_new[result[0]]
- resp = resp["returnResult"]["returnImageUrl"]
- except Exception as e:
- print(e)
- resp = img_addr
- results = "0"
- data = {"image":resp, "result":result_list,"num":nums,"results":results}
- 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")) # 定时模式
- 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')) # 数据上传时间间隔
- 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 imgres not in range(0,3) or 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)
- payload = {"cmd": "paramconf","ext": {"ts": ts, "st": st, "et": et, "collt": collt,
- "htim": htim, "hst": hst, "tph": tph, "tpl": tpl, "datt": datt, "imgres": imgres}}
- 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)
- if req == "new_time":
- bzy_list = BZYdata.objects.filter(equip_id=equip_id)[:1]
- elif req == "time":
- bzy_id = request.POST.get("id")
- print(bzy_id)
- bzy_list = BZYdata.objects.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 = BZYdata.objects.filter(equip_id=equip_id,upl_time__range=(start_date,bzy_list))
- data = {"code":"1"}
- try:
- for i in bzy_list:
- print(i)
- bzy_data = eval(i.bzy_data)
- imei= bzy_data["imei"]
- upl_time = i.upl_time.strftime('%Y-%m-%d %H:%M:%S')
- 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 = {"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 Exception as e:
- print("报错信息为:",e)
- data = {"code":"1"}
- 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("图片分辨率:", imgres)
- 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": imgres,"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"))
- 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})
- elif ret == "chart":
- start_time = request.POST.get('start_time')
- end_time = request.POST.get('end_time')
- 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)
- xy_list = Trapdata.objects.filter(equip_id=equip_id, upl_time__range=(start_date, end_date))
- else:
- now_time = datetime.datetime.now()
- xy_list = Trapdata.objects.filter(equip_id=equip_id, upl_time__month=now_time.month,upl_time__year=now_time.year)
- 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 = xy_list.count()
- print("num",num)
- dat = data[(10*(page-1)):(page*10)]
- data = {'dat': dat, 'num': num}
- 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_date = datetime.datetime.now() - datetime.timedelta(days=2)
- end_date = datetime.datetime.now()
- qxz_list = QXZdata_New.objects.filter(
- equip_id=equip_id, upl_time__range=(start_date, end_date))
- 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)
- 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)
- end_date = datetime.datetime.now()
- 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)
- 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 = [{
- "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'],
- "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'],
- "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 = QXZstatus.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 = QXZstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)
- else:
- print("---管理员")
- sta1 = QXZstatus.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 == "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'))
- 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'))
- 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'))
-
- if not scd_equips and not cbd_equips:
- sta5 = 0
- data = json.dumps(sta5)
- return HttpResponse(data)
- # print("scd_equips:", scd_equips)
- # print("cbd_equips:", cbd_equips)
- else:
- if scd_equips:
- for i in scd_equips:
- sta1 = SCDstatus.objects.filter(
- equip_id__equip_id__contains=equip_id)
- sta2 = [{
- "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 sta1]
- if cbd_equips:
- for i in cbd_equips:
- sta3 = CBDstatus.objects.filter(
- equip_id__equip_id__contains=equip_id)
- 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]
- if scd_equips and cbd_equips:
- sta5 = sta2+sta4
- elif scd_equips and not cbd_equips:
- sta5 = sta2
- elif not scd_equips and cbd_equips:
- sta5 = sta4
- 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)
-
|