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