| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920 |
- # -*- coding: utf-8 -*-
- from django.shortcuts import render
- from apps.AppInfoManage.models import Equip, User_Log, MyUser
- from apps.AppInfoManage.models import SCDdata, SCDstatus, RecentSCDdata, YBQdata, YBQstatus, QXZstatus, QXZdata, Trapstatus, Trapdata, Trapphoto, Equip_SimInfo
- from apps.AppInfoManage.models import BZYdata, BZYphoto, BZYstatus, CBDdata, CBDpest, CBDphoto, CBDphoto_desc, CBDstatus, Msg_Conf, QXZAutoswitch, QXZTimingswitch, QXZ_Conf, QXZdata_New, QXZstatus_New, QXZswitchdata, QXZswitchstatus, RecentCBDdata, Spore_Exist, YBQphoto, YBQphoto
- from itertools import chain
- from django.views.generic import ListView
- import json
- # from apps.AppInfoManage.common import CJSONEncoder
- from apps.EquipManage.views import CJSONEncoder
- from django.http.response import HttpResponse
- from django.core import serializers
- import random
- # from io import BytesIO, StringIO
- import os
- from imutils import paths
- import stat
- import time
- import datetime
- import re
- import copy
- from django.utils.decorators import method_decorator
- from django.views.decorators.csrf import csrf_exempt
- # import xlrd
- from apps.SimInfo.views import get_siminfo
- import requests
- from io import BytesIO
- import sys
- from PIL import Image
- import argparse
- import cv2
- import shutil
- import glob
- from .tasks import test
- from apps.ReportManage.all_dict import qxz_dict, insect_dict, insect_dict_new
- # 杀虫灯报表管理:多设备,每个设备的最新记录
- def SCD_Report(request):
- if request.method == 'GET':
- # current_user = request.session.get('username')
- current_user = request.user.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:
- # print("---不是管理员")
- # equip_list = Equip.objects.filter(
- # equip_type=2, equip_user=current_user)
- # else:
- # print("---管理员")
- # equip_list = Equip.objects.filter(equip_type=2)
- # data = []
- # for i in equip_list:
- # # 关键步骤:从杀虫灯数据列表模型中,筛选出当前用户所拥有的设备的设备id的数据记录,然后进行倒叙排列,最后切片操作,只取第一条数据,即为最新;
- # # sta1 = SCDdata.objects.filter(
- # # equip_id=i.equip_id).order_by('-upl_time')[:1]
- # # 11月22日修改,添加新的杀虫灯数据表RecentSCDdata,此表只保存最新一条数据
- # sta1 = RecentSCDdata.objects.filter(
- # equip_id=i.equip_id)
- # for x in sta1:
- # sta2 = {"scd_data": x.scd_data, "ds": x.ds, "upl_time": x.upl_time,
- # "equip_name": x.equip_id.equip_name,"equip_id": x.equip_id.equip_id}
- # # print("sta2:",sta2)
- # data.append(sta2)
- # # print("data:",data)
- data = []
- 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()
- # 此句查询省级代理商下省份等于省级代理商,且市字段不为空的下属用户
- # aabbcc = RecentSCDdata.objects.filter(equip_id__equip_agency=current_user.user_agency,
- # equip_id__equip_user__user_pro=current_user.user_pro).exclude(equip_id__equip_user__user_city="")
- # for i in aabbcc:
- # print("sadsadasdasdasdasdsadas",i.equip_id)
- # print("46464646798981321313265465747",aabbcc)
- else:
- print("---管理员")
- # sta1 = RecentSCDdata.objects.filter(equip_id__equip_type=2)
- sta1 = RecentSCDdata.objects.all().values()
- print("sta1",sta1)
- for x in sta1:
- sta2 = {"scd_data": x['scd_data'], "ds": x['ds'], "upl_time": x['upl_time'],
- "equip_name": x['equip_name'],"equip_id": x['equip_id_id']}
- # sta2 = {"scd_data": x["scd_data"], "ds": x["ds"], "upl_time": x["upl_time"],
- # "equip_name": "无","equip_id": x["equip_id_id"]}
- # print("sta2:",sta2)
- data.append(sta2)
- # print("data:",data)
- if request.is_ajax():
- req = request.GET.get('req')
- print("req:", req)
- if req == "reqdat":
- print("---post 请求数据!")
- page = int(request.GET.get('page'))
- print("page:", page)
- data = data[(10*(page-1)):(page*10)]
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- else:
- nums = len(data)
- User_Log.objects.create(log_user=current_user,
- log_ip=request.META['REMOTE_ADDR'], log_desc='报表管理-杀虫灯')
- return render(request, 'reportmanage/scd_report.html', context={"nums": nums})
- if request.method == 'POST':
- req = request.POST.get('req')
- print("req:", req)
- if req == "filter":
- print("---筛选!")
- page = int(request.POST.get('page'))
- print("page:", page)
- ename = request.POST.get('ename')
- print("ename:", ename)
- f_id = request.POST.get('f_id')
- print("f_id:", f_id)
- current_user = request.session.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:
- # print("---不是管理员")
- # if ename == "" and f_id == "":
- # equip_list = Equip.objects.filter(equip_type=2, equip_user=current_user)
- # elif ename == "" and f_id != "":
- # equip_list = Equip.objects.filter(equip_type=2, equip_user=current_user, equip_id__contains=f_id)
- # elif ename != "" and f_id == "":
- # equip_list = Equip.objects.filter(equip_type=2, equip_user=current_user, equip_name__contains=ename)
- # elif ename != "" and f_id != "":
- # equip_list = Equip.objects.filter(equip_type=2, equip_user=current_user, equip_name__contains=ename,equip_id__contains=f_id)
- # elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
- # print("---代理商")
- # if ename == "" and f_id == "":
- # equip_list = Equip.objects.filter(equip_type=2, equip_user=current_user)
- # elif ename == "" and f_id != "":
- # equip_list = Equip.objects.filter(equip_type=2, equip_user=current_user, equip_id__contains=f_id)
- # elif ename != "" and f_id == "":
- # equip_list = Equip.objects.filter(equip_type=2, equip_user=current_user, equip_name__contains=ename)
- # elif ename != "" and f_id != "":
- # equip_list = Equip.objects.filter(equip_type=2, equip_user=current_user, equip_name__contains=ename,equip_id__contains=f_id)
- # else:
- # print("---管理员")
- # if ename == "" and f_id == "":
- # equip_list = Equip.objects.filter(equip_type=2)
- # elif ename == "" and f_id != "":
- # equip_list = Equip.objects.filter(equip_type=2,equip_id__contains=f_id)
- # elif ename != "" and f_id == "":
- # equip_list = Equip.objects.filter(equip_type=2, equip_name__contains=ename)
- # elif ename != "" and f_id != "":
- # equip_list = Equip.objects.filter(equip_type=2, equip_name__contains=ename,equip_id__contains=f_id)
- # dat = []
- # for i in equip_list:
- # # 关键步骤:从杀虫灯数据列表模型中,筛选出当前用户所拥有的设备的设备id的数据记录,然后进行倒叙排列,最后切片操作,只取第一条数据,即为最新;
- # # sta1 = SCDdata.objects.filter(
- # # equip_id=i.equip_id).order_by('-upl_time')[:1]
- # # 11月22日修改 添加新的杀虫灯数据表RecentSCDdata,此表只保存最新一条数据
- # sta1 = RecentSCDdata.objects.filter(
- # equip_id=i.equip_id)
- # for x in sta1:
- # sta2 = {"scd_data": x.scd_data, "ds": x.ds, "upl_time": x.upl_time,
- # "equip_name": x.equip_id.equip_name,"equip_id": x.equip_id.equip_id}
- # dat.append(sta2)
- dat = []
- if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
- print("---不是管理员")
- if ename == "" and f_id == "":
- sta1 = RecentSCDdata.objects.filter(equip_id__equip_user=current_user).values()
- elif ename == "" and f_id != "":
- sta1 = RecentSCDdata.objects.filter(equip_id__equip_user=current_user, equip_id__equip_id__contains=f_id).values()
- elif ename != "" and f_id == "":
- sta1 = RecentSCDdata.objects.filter(equip_id__equip_user=current_user, equip_id__equip_name__contains=ename).values()
- elif ename != "" and f_id != "":
- sta1 = RecentSCDdata.objects.filter(equip_id__equip_user=current_user, equip_id__equip_name__contains=ename,equip_id__equip_id__contains=f_id).values()
- elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
- print("---代理商")
- if ename == "" and f_id == "":
- sta1 = RecentSCDdata.objects.filter(equip_id__equip_agency=current_user.user_agency).values()
- elif ename == "" and f_id != "":
- sta1 = RecentSCDdata.objects.filter(equip_id__equip_agency=current_user.user_agency, equip_id__equip_id__contains=f_id).values()
- elif ename != "" and f_id == "":
- sta1 = RecentSCDdata.objects.filter(equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=ename).values()
- elif ename != "" and f_id != "":
- sta1 = RecentSCDdata.objects.filter(equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=ename,equip_id__equip_id__contains=f_id).values()
- else:
- print("---管理员")
- if ename == "" and f_id == "":
- sta1 = RecentSCDdata.objects.all().values()
- elif ename == "" and f_id != "":
- sta1 = RecentSCDdata.objects.filter(equip_id__equip_id__contains=f_id).values()
- elif ename != "" and f_id == "":
- sta1 = RecentSCDdata.objects.filter(equip_id__equip_name__contains=ename).values()
- elif ename != "" and f_id != "":
- sta1 = RecentSCDdata.objects.filter(equip_id__equip_name__contains=ename,equip_id__equip_id__contains=f_id).values()
- for x in sta1:
- sta2 = {"scd_data": x['scd_data'], "ds": x['ds'], "upl_time": x['upl_time'],
- "equip_name": x['equip_name'],"equip_id": x['equip_id_id']}
- dat.append(sta2)
- nums = len(dat)
- dat = dat[(10*(page-1)):(page*10)]
- data = {'dat': dat, 'nums': nums}
- # print("data:",data)
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- # 杀虫灯单个设备的表格数据筛选、分页接口:
- class SCD_Report_Detail(ListView):
- def get(self, request):
- equip_id = request.GET.get('id')
- print("请求数据,设备id:", equip_id)
- User_Log.objects.create(log_user=request.user.username,
- log_ip=request.META['REMOTE_ADDR'], log_desc='报表管理-杀虫灯报表详情')
- # 数据总条数:
- nums = SCDdata.objects.filter(equip_id=equip_id).count()
- print("nums:", nums)
- ename = Equip.objects.get(equip_id=equip_id).equip_name
- if ename == "":
- ename = "无"
- lat = SCDstatus.objects.get(equip_id=equip_id).lat
- lng = SCDstatus.objects.get(equip_id=equip_id).lng
- return render(request, 'reportmanage/scd_report_detail.html', context={"equip_id": equip_id, "nums": nums,"ename":ename,"lat":lat,"lng":lng})
- def post(self, request):
- req = request.POST.get('req')
- if req == "data":
- equip_id = request.POST.get('id')
- page = int(request.POST.get('page'))
- print("equip_id:", equip_id)
- print("page:", page)
- print("请求数据的设备id:", equip_id)
- sta1 = SCDdata.objects.filter(equip_id=equip_id).values()[(10*(page-1)):(page*10)]
- print("sta1:", sta1)
- sta2 = [{"equip_name": "",
- "scd_data": x['scd_data'],
- "upl_time": x['upl_time']} for x in sta1]
- # print("sta2:",sta2)
- data = json.dumps(sta2, cls=CJSONEncoder)
- return HttpResponse(data)
- elif req == "filter":
- equip_id = request.POST.get('id')
- page = int(request.POST.get('page'))
- print("equip_id:", equip_id)
- print("page:", page)
- print("请求数据的设备id:", equip_id)
- f_tbegin = request.POST.get('begin')
- f_tend = request.POST.get('end')
- print("f_tbegin:", f_tbegin)
- print("f_tend:", f_tend)
- 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]))
- print("start_date:", start_date)
- print("end_date:", end_date)
- sta1 = SCDdata.objects.filter(equip_id=equip_id, upl_time__range=(start_date, end_date)).values()
- print("sta1:", sta1)
- sta2 = [{"scd_data": x['scd_data'],
- "upl_time": x['upl_time']} for x in sta1]
- nums = len(sta2)
- dat = sta2[(10*(page-1)):(page*10)]
- data = {'dat': dat, 'nums': nums}
- # print("data:",data)
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- # elif req == "export":
- # equip_id = request.POST.get('id')
- # print("请求数据的设备id:",equip_id)
- # f_tbegin = request.POST.get('begin')
- # f_tend = request.POST.get('end')
- # print("f_tbegin:", f_tbegin)
- # print("f_tend:", f_tend)
- # print("f_tbegin:", type(f_tbegin))
- # print("f_tend:", type(f_tend))
- # # 查询时间段
- # if f_tbegin:
- # 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]))
- # print("start_date:", start_date)
- # print("end_date:", end_date)
- # sta1 = SCDdata.objects.filter(equip_id=equip_id, upl_time__range=(start_date, end_date))
- # print("sta1:", sta1)
- # sta2 = [{"equip_name": x.equip_id.equip_name,
- # "scd_data": x.scd_data,
- # "upl_time": x.upl_time} for x in sta1]
- # data = json.dumps(sta2, cls=CJSONEncoder)
- # # 查询全部
- # else:
- # sta1 = SCDdata.objects.filter(equip_id=equip_id)
- # print("sta1:",sta1)
- # sta2 = [{"equip_name": x.equip_id.equip_name,
- # "scd_data": x.scd_data,
- # "upl_time": x.upl_time} for x in sta1]
- # data = json.dumps(sta2, cls=CJSONEncoder)
- # return HttpResponse(data)
-
- # 杀虫灯报表详情折线图:
- class SCD_Report_Detail_Chart(ListView):
- def get(self, request):
- pass
- def post(self, request):
- req = request.POST.get('req')
- if req == "data":
- equip_id = request.POST.get('id')
- print("equip_id:", equip_id)
- # 获取当前日期:
- now_time = datetime.datetime.now()
- print("当前日期为:",now_time)
- print("当前月为:",now_time.month)
- sta1 = SCDdata.objects.filter(equip_id=equip_id,upl_time__month=now_time.month).values()
-
- sta2 = [{"at": eval(x['scd_data'])['at'],
- "ah": eval(x['scd_data'])['ah'],
- "cv": eval(x['scd_data'])['cv'],
- "bv": eval(x['scd_data'])['bv'],
- "ct": eval(x['scd_data'])['ct'],
- "tim": x['upl_time']} for x in sta1]
- data = json.dumps(sta2, cls=CJSONEncoder)
- # print("data:", data)
- return HttpResponse(data)
- elif req == "filter":
- equip_id = request.POST.get('id')
- print("equip_id:", equip_id)
- f_tbegin = request.POST.get('begin')
- f_tend = request.POST.get('end')
- print("f_tbegin:", f_tbegin)
- print("f_tend:", f_tend)
- 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]))
- print("start_date:", start_date)
- print("end_date:", end_date)
- sta1 = SCDdata.objects.filter(
- equip_id=equip_id, upl_time__range=(start_date, end_date)).values()
- sta2 = [{"at": eval(x['scd_data'])['at'],
- "ah": eval(x['scd_data'])['ah'],
- "cv": eval(x['scd_data'])['cv'],
- "bv": eval(x['scd_data'])['bv'],
- "ct": eval(x['scd_data'])['ct'],
- "tim": x['upl_time']} for x in sta1]
- data = json.dumps(sta2, cls=CJSONEncoder)
- # print("data:",data)
- return HttpResponse(data)
- # 杀虫灯报表详情柱状图:
- class SCD_Report_Detail_Bar(ListView):
- def get(self, request):
- pass
- def post(self, request):
- req = request.POST.get('req')
- if req == "data":
- equip_id = request.POST.get('id')
- print("equip_id:", equip_id)
- # 获取当前日期:
- now_time = datetime.datetime.now()
- print("now_time:", now_time)
- # # 测试:
- # now_time = datetime.datetime(2018, 1, 1,17,38)
- # 获取前一天日期:
- # 此方法bug:如果为1月1号,1减1 1减1 日减1 月减1 年再减1,太过麻烦;
- # last_day_now = now_time.replace(day = now_time.day-1)
- # 往前推一天:
- last_day_now = now_time + datetime.timedelta(days=-1)
- print("last_day_now:", last_day_now)
- # 格式化输出:
- last_day_now = json.dumps(last_day_now, cls=CJSONEncoder)
- print("格式化为json的last_day_now:", last_day_now)
- # 注意,当前日期这一天也要算上:所以天数加1
- # 此方法不可取,每个月最后一天不同:
- # now_time = json.dumps(now_time.replace(day = now_time.day+1), cls=CJSONEncoder)
- # 往后推迟一天:
- now_time = json.dumps(
- now_time + datetime.timedelta(days=+1), cls=CJSONEncoder)
- print("格式化为json的now_time:", now_time)
- begindate = re.findall(r"\d+\.?\d*", last_day_now)
- enddate = re.findall(r"\d+\.?\d*", now_time)
- print("begindate:", begindate)
- print("enddate:", enddate)
- 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 = SCDdata.objects.filter(
- equip_id=equip_id, upl_time__range=(start_date, end_date))
- sta2 = [{"at": eval(x.scd_data)['at'],
- "ah": eval(x.scd_data)['ah'],
- "cv": eval(x.scd_data)['cv'],
- "bv": eval(x.scd_data)['bv'],
- "ct": eval(x.scd_data)['ct'],
- "tim": x.upl_time} for x in sta1]
- data = json.dumps(sta2, cls=CJSONEncoder)
- # print("data:", data)
- return HttpResponse(data)
- elif req == "filter":
- equip_id = request.POST.get('id')
- print("equip_id:", equip_id)
- f_tbegin = request.POST.get('begin')
- f_tend = request.POST.get('end')
- print("f_tbegin:", f_tbegin)
- print("f_tend:", f_tend)
- 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]))
- print("start_date:", start_date)
- print("end_date:", end_date)
- sta1 = SCDdata.objects.filter(
- equip_id=equip_id, upl_time__range=(start_date, end_date))
- sta2 = [{
- # "ct": eval(x.scd_data)['ct'],
- "tim": x.upl_time} for x in sta1]
- nums = len(sta2)
- # dat = sta2[(10*(page-1)):(page*10)]
- dat = sta2
- data = {'dat': dat, 'nums': nums}
- # print("data:",data)
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- ##---------------------------诱捕器接口---------------------------
- # 诱捕器报表管理:多设备,每个设备的最新记录
- def YBQ_Report(request):
- if request.method == 'GET':
- # current_user = request.session.get('username')
- current_user = request.user.username
- print("current_user:", current_user)
- current_user = MyUser.objects.get(username=current_user)
- data = []
- if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
- # print("---不是管理员")
- # sta1 = YBQdata.objects.filter(equip_id__equip_user=current_user)
- equip_list = Equip.objects.filter(
- equip_type=4, equip_user=current_user)
- elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
- # print("---代理商")
- # sta1 = YBQdata.objects.filter(equip_id__equip_agency=current_user.user_agency)
- equip_list = Equip.objects.filter(
- equip_type=4, equip_agency=current_user.user_agency)
- else:
- # print("---管理员")
- # sta1 = YBQdata.objects.all()
- equip_list = Equip.objects.filter(
- equip_type=4)
- for i in equip_list:
- sta1 = YBQdata.objects.filter(
- equip_id=i.equip_id).order_by('-upl_time')[:1]
- for x in sta1:
- sta2 = {"ybq_data": x.ybq_data, "ds": x.ds, "upl_time": x.upl_time,
- "equip_name": x.equip_id.equip_name,"equip_id": x.equip_id.equip_id}
- # print("sta2:",sta2)
- data.append(sta2)
- # print("data:",data)
- if request.is_ajax():
- req = request.GET.get('req')
- print("req:", req)
- if req == "reqdat":
- print("---post 请求数据!")
- page = int(request.GET.get('page'))
- print("page:", page)
- data = data[(10*(page-1)):(page*10)]
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- else:
- nums = len(data)
- User_Log.objects.create(log_user=current_user,
- log_ip=request.META['REMOTE_ADDR'], log_desc='报表管理-诱捕器')
- return render(request, 'reportmanage/ybq_report.html', context={"nums": nums})
- if request.method == 'POST':
- req = request.POST.get('req')
- print("req:", req)
- if req == "filter":
- print("---筛选!")
- page = int(request.POST.get('page'))
- print("page:", page)
- ename = request.POST.get('ename')
- print("ename:", ename)
- f_id = request.POST.get('f_id')
- print("f_id:", f_id)
- current_user = request.session.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:
- print("---不是管理员")
- if ename == "" and f_id == "":
- equip_list = Equip.objects.filter(equip_type=4, equip_user=current_user)
- elif ename == "" and f_id != "":
- equip_list = Equip.objects.filter(equip_type=4, equip_user=current_user, equip_id__contains=f_id)
- elif ename != "" and f_id == "":
- equip_list = Equip.objects.filter(equip_type=4, equip_user=current_user, equip_name__contains=ename)
- elif ename != "" and f_id != "":
- equip_list = Equip.objects.filter(equip_type=4, equip_user=current_user, equip_name__contains=ename,equip_id__contains=f_id)
- elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
- print("---代理商")
- if ename == "" and f_id == "":
- equip_list = Equip.objects.filter(equip_type=4, equip_agency=current_user.user_agency)
- elif ename == "" and f_id != "":
- equip_list = Equip.objects.filter(equip_type=4, equip_agency=current_user.user_agency, equip_id__contains=f_id)
- elif ename != "" and f_id == "":
- equip_list = Equip.objects.filter(equip_type=4, equip_agency=current_user.user_agency, equip_name__contains=ename)
- elif ename != "" and f_id != "":
- equip_list = Equip.objects.filter(equip_type=4, equip_agency=current_user.user_agency, equip_name__contains=ename,equip_id__contains=f_id)
- else:
- print("---管理员")
- if ename == "" and f_id == "":
- equip_list = Equip.objects.filter(equip_type=4)
- elif ename == "" and f_id != "":
- equip_list = Equip.objects.filter(equip_type=4, equip_id__contains=f_id)
- elif ename != "" and f_id == "":
- equip_list = Equip.objects.filter(equip_type=4, equip_name__contains=ename)
- elif ename != "" and f_id != "":
- equip_list = Equip.objects.filter(equip_type=4, equip_name__contains=ename, equip_id__contains=f_id)
- dat = []
- for i in equip_list:
- # 关键步骤:从诱捕器数据列表模型中,筛选出当前用户所拥有的设备的设备id的数据记录,然后进行倒叙排列,最后切片操作,只取第一条数据,即为最新;
- sta1 = YBQdata.objects.filter(
- equip_id=i.equip_id).order_by('-upl_time')[:1]
- for x in sta1:
- sta2 = {"ybq_data": x.ybq_data, "ds": x.ds, "upl_time": x.upl_time,
- "equip_name": x.equip_id.equip_name,"equip_id": x.equip_id.equip_id}
- dat.append(sta2)
- nums = len(dat)
- dat = dat[(10*(page-1)):(page*10)]
- data = {'dat': dat, 'nums': nums}
- # print("data:",data)
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- # 诱捕器单个设备的表格数据筛选、分页接口:
- class YBQ_Report_Detail(ListView):
- def get(self, request):
- equip_id = request.GET.get('id')
- print("请求数据,设备id:", equip_id)
- User_Log.objects.create(log_user=request.user.username,
- log_ip=request.META['REMOTE_ADDR'], log_desc='报表管理-诱捕器报表详情')
- # 数据总条数:
- nums = YBQdata.objects.filter(equip_id=equip_id).count()
- print("nums:", nums)
- ename = Equip.objects.get(equip_id=equip_id).equip_name
- if ename == "":
- ename = "无"
- lat = YBQstatus.objects.get(equip_id=equip_id).lat
- lng = YBQstatus.objects.get(equip_id=equip_id).lng
- return render(request, 'reportmanage/ybq_report_detail.html', context={"equip_id": equip_id, "nums": nums, "ename":ename, "lat":lat, "lng":lng})
- def post(self, request):
- req = request.POST.get('req')
- if req == "data":
- equip_id = request.POST.get('id')
- page = int(request.POST.get('page'))
- print("equip_id:", equip_id)
- print("page:", page)
- print("请求数据的设备id:", equip_id)
- sta1 = YBQdata.objects.filter(equip_id=equip_id)[
- (10*(page-1)):(page*10)]
- print("sta1:", sta1)
- sta2 = [{"equip_name": x.equip_id.equip_name,
- "ybq_data": x.ybq_data,
- "upl_time": x.upl_time} for x in sta1]
- # print("sta2:",sta2)
- data = json.dumps(sta2, cls=CJSONEncoder)
- return HttpResponse(data)
- elif req == "filter":
- equip_id = request.POST.get('id')
- page = int(request.POST.get('page'))
- print("equip_id:", equip_id)
- print("page:", page)
- print("请求数据的设备id:", equip_id)
- f_tbegin = request.POST.get('begin')
- f_tend = request.POST.get('end')
- print("f_tbegin:", f_tbegin)
- print("f_tend:", f_tend)
- 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]))
- 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))
- print("sta1:", sta1)
- sta2 = [{"equip_name": x.equip_id.equip_name,
- "ybq_data": x.ybq_data,
- "upl_time": x.upl_time} for x in sta1]
- nums = len(sta2)
- dat = sta2[(10*(page-1)):(page*10)]
- data = {'dat': dat, 'nums': nums}
- # print("data:",data)
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- elif req == "export":
- equip_id = request.POST.get('id')
- print("请求数据的设备id:",equip_id)
- f_tbegin = request.POST.get('begin')
- f_tend = request.POST.get('end')
- print("f_tbegin:", f_tbegin)
- print("f_tend:", f_tend)
- print("f_tbegin:", type(f_tbegin))
- print("f_tend:", type(f_tend))
- # 查询时间段
- if f_tbegin:
- 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]))
- 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))
- print("sta1:", sta1)
- sta2 = [{"equip_name": x.equip_id.equip_name,
- "ybq_data": x.ybq_data,
- "upl_time": x.upl_time} for x in sta1]
- data = json.dumps(sta2, cls=CJSONEncoder)
- # 查询全部
- else:
- sta1 = YBQdata.objects.filter(equip_id=equip_id)
- print("sta1:",sta1)
- sta2 = [{"equip_name": x.equip_id.equip_name,
- "ybq_data": x.ybq_data,
- "upl_time": x.upl_time} for x in sta1]
- data = json.dumps(sta2, cls=CJSONEncoder)
- return HttpResponse(data)
-
- # 诱捕器报表详情折线图:
- class YBQ_Report_Detail_Chart(ListView):
- def get(self, request):
- pass
- def post(self, request):
- req = request.POST.get('req')
- if req == "data":
- equip_id = request.POST.get('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)
-
- sta2 = [{"at": eval(x.ybq_data)['at'],
- "ah": eval(x.ybq_data)['ah'],
- "cv": eval(x.ybq_data)['cv'],
- "bv": eval(x.ybq_data)['bv'],
- "ct": eval(x.ybq_data)['ct'],
- "tim": x.upl_time} for x in sta1]
- data = json.dumps(sta2, cls=CJSONEncoder)
- # print("data:", data)
- return HttpResponse(data)
- elif req == "filter":
- equip_id = request.POST.get('id')
- print("equip_id:", equip_id)
- f_tbegin = request.POST.get('begin')
- f_tend = request.POST.get('end')
- print("f_tbegin:", f_tbegin)
- print("f_tend:", f_tend)
- 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]))
- 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))
- sta2 = [{"at": eval(x.ybq_data)['at'],
- "ah": eval(x.ybq_data)['ah'],
- "cv": eval(x.ybq_data)['cv'],
- "bv": eval(x.ybq_data)['bv'],
- "ct": eval(x.ybq_data)['ct'],
- "tim": x.upl_time} for x in sta1]
- data = json.dumps(sta2, cls=CJSONEncoder)
- # print("data:",data)
- return HttpResponse(data)
- # 诱捕器报表详情柱状图:
- class YBQ_Report_Detail_Bar(ListView):
- def get(self, request):
- pass
- def post(self, request):
- req = request.POST.get('req')
- if req == "data":
- equip_id = request.POST.get('id')
- print("equip_id:", equip_id)
- # 获取当前日期:
- now_time = datetime.datetime.now()
- print("now_time:", now_time)
- # # 测试:
- # now_time = datetime.datetime(2018, 1, 1,17,38)
- # 获取前一天日期:
- # 此方法bug:如果为1月1号,1减1 1减1 日减1 月减1 年再减1,太过麻烦;
- # last_day_now = now_time.replace(day = now_time.day-1)
- # 往前推一天:
- last_day_now = now_time + datetime.timedelta(days=-1)
- print("last_day_now:", last_day_now)
- # 格式化输出:
- last_day_now = json.dumps(last_day_now, cls=CJSONEncoder)
- print("格式化为json的last_day_now:", last_day_now)
- # 注意,当前日期这一天也要算上:所以天数加1
- # 此方法不可取,每个月最后一天不同:
- # now_time = json.dumps(now_time.replace(day = now_time.day+1), cls=CJSONEncoder)
- # 往后推迟一天:
- now_time = json.dumps(
- now_time + datetime.timedelta(days=+1), cls=CJSONEncoder)
- print("格式化为json的now_time:", now_time)
- begindate = re.findall(r"\d+\.?\d*", last_day_now)
- enddate = re.findall(r"\d+\.?\d*", now_time)
- print("begindate:", begindate)
- print("enddate:", enddate)
- 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))
- sta2 = [{"at": eval(x.ybq_data)['at'],
- "ah": eval(x.ybq_data)['ah'],
- "cv": eval(x.ybq_data)['cv'],
- "bv": eval(x.ybq_data)['bv'],
- "ct": eval(x.ybq_data)['ct'],
- "tim": x.upl_time} for x in sta1]
- data = json.dumps(sta2, cls=CJSONEncoder)
- # print("data:", data)
- return HttpResponse(data)
- elif req == "filter":
- equip_id = request.POST.get('id')
- print("equip_id:", equip_id)
- f_tbegin = request.POST.get('begin')
- f_tend = request.POST.get('end')
- print("f_tbegin:", f_tbegin)
- print("f_tend:", f_tend)
- 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]))
- 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))
- sta2 = [{
- # "ct": eval(x.scd_data)['ct'],
- "tim": x.upl_time} for x in sta1]
- nums = len(sta2)
- # dat = sta2[(10*(page-1)):(page*10)]
- dat = sta2
- data = {'dat': dat, 'nums': nums}
- # print("data:",data)
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- # 诱捕器上传图片测试页面:
- @method_decorator(csrf_exempt, name='dispatch')
- def ybq_imageview(request):
- if request.method == 'GET':
- print("-----image preview!-----")
- imei = request.GET.get('imei')
- print("imei:", imei)
- nums = YBQphoto.objects.filter(equip_id=imei).count()
- print("nums:", nums)
- return render(request, 'reportmanage/ybq_image.html', context={"nums": nums, "imei": imei})
- if request.method == 'POST':
- print("-----image upload request!-----")
- imei = request.GET.get('imei')
- print("imei:", imei)
- # 判断设备是否存在:
- if Equip.objects.filter(equip_id=imei).exists():
- length = request.META['CONTENT_LENGTH']
- print("length:", length)
- # 以当前时间命名图片
- pic_name = time.strftime(
- '%Y%m%d%H%M%S', time.localtime(time.time())) + '.jpg'
- print("pic_name:", pic_name)
- pic_dir = 'ybq_img/' + imei + '/' + \
- pic_name[0:4] + '/' + pic_name[4:6] + '/'
- if os.path.exists(pic_dir) == False:
- # 文件夹加权限
- os.makedirs(pic_dir)
- # os.chmod(pic_dir, stat.S_IRWXU|stat.S_IRWXG|stat.S_IRWXO)
- print("图片路径:", pic_dir + pic_name)
- # img.save(pic_dir+pic_name)
- with open(pic_dir + pic_name, "wb") as file:
- file.write(request.body)
- # print("request.body:", request.body)
- # 数据库关联设备,并在照片的表中存入路径:
- equip = Equip.objects.get(equip_id=imei)
- YBQphoto.objects.create(equip_id=equip, addr=pic_dir + pic_name)
- return HttpResponse("-----image upload success!-----")
- else:
- return HttpResponse("-----image upload failed because this imei is not exists!-----")
- # 诱捕器图片列表视图:
- @csrf_exempt
- def ybq_imagelistview(request):
- if request.method == 'GET':
- print("-----image list view!-----")
- imei = request.GET.get('imei')
- print("imei:", imei)
- # 获得当前页:
- page = int(request.GET.get('page'))
- print("page:", page)
- equip_name = Equip.objects.get(equip_id=imei).equip_name
- # 当前用户:返回用户,前端判断是否显示删除图片按钮
- current_user = request.session.get('username')
- print("current_user:", current_user)
- current_user = MyUser.objects.get(username=current_user)
- # 从数据库中取出照片在服务器存放路径:
- img = YBQphoto.objects.filter(equip_id=imei)[(8*(page-1)):(page*8)]
- equip_name = Equip.objects.get(equip_id=imei).equip_name
- return render(request, 'reportmanage/ybq_imageList.html', context={"img": img, "equip_name": equip_name, "current_user": current_user,'imei':imei})
-
- # 删除图片接口:
- class YBQ_Image_Delete(ListView):
- def get(self, request):
- pass
- def post(self, request):
- print("-----image delete!-----")
- imei = request.POST.get('imei')
- img_name = request.POST.get('addr')
- allpic = request.POST.get('allpic')
- print("img_name:",img_name)
- if allpic == "1":
- all_photo = YBQphoto.objects.filter(equip_id=imei)
- print("-----image delete ok!-----")
- for i in all_photo:
- if os.path.exists(i.addr) == True:
- # 删除图片文件
- os.remove(i.addr)
- # 删除数据库照片列表中,照片路径:
- try:
- YBQphoto.objects.filter(equip_id=imei, addr=i.addr).delete()
- print("-----image delete ok!-----")
- except:
- print("-----image delete failed!-----")
- else:
- # 照片在数据库里不存在,但是数据库有路径的情况会删除不掉
- # 因此不管何时都删除数据库路径
- try:
- YBQphoto.objects.filter(equip_id=imei, addr=i.addr).delete()
- except Exception as e:
- print("========>>",e)
- print("-----image not exist!-----")
- return HttpResponse("0")
- if os.path.exists(img_name) == True:
- # 删除图片文件
- os.remove(img_name)
- # 删除数据库照片列表中,照片路径:
- try:
- YBQphoto.objects.filter(equip_id=imei, addr=img_name).delete()
- print("-----image delete ok!-----")
- data = "0"
- return HttpResponse(data)
- except:
- print("-----image delete failed!-----")
- data = "1"
- return HttpResponse(data)
- else:
- # 照片在数据库里不存在,但是数据库有路径的情况会删除不掉
- # 因此不管何时都删除数据库路径
- try:
- YBQphoto.objects.filter(equip_id=imei, addr=img_name).delete()
- except:
- pass
- print("-----image not exist!-----")
- data = "0"
- return HttpResponse(data)
- ##---------------------------测报灯接口---------------------------
- # 测报灯报表管理视图:
- @csrf_exempt
- def CBD_Report(request):
-
- # current_user = request.session.get('username')
- # print("current_user:", current_user)
- # current_user = MyUser.objects.get(username=current_user)
-
- current_user = request.user.username
- print("current_user:", current_user)
- # current_user = MyUser.objects.get(username=current_user)
- try:
- current_user = MyUser.objects.get(username=current_user)
- except:
- current_user = MyUser.objects.get(username="public")
- data = []
-
- if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
- print("---不是管理员")
- role = "user"
- 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("---代理商")
- role = "agency"
- sta1 = RecentCBDdata.objects.filter(equip_id__equip_agency=current_user.user_agency).values()
- else:
- role = "superuser"
- print("---管理员")
- sta1 = RecentCBDdata.objects.all().values()
- for x in sta1:
- if CBDphoto.objects.filter(equip_id_id=x['equip_id_id']).exists():
- have_photo = "1"
- else:
- have_photo = "0"
- sta2 = {"equip_name": x['equip_name'],"etype":x['etype'],
- "cbd_data": x['cbd_data'], "upl_time": x['upl_time'],"equip_id":x['equip_id_id'],"scene": x['scene'],"disc":x['disc'],"have_photo":have_photo}
- data.append(sta2)
- # 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_type=3, equip_user=current_user).values()
- # 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_type=3, equip_agency=current_user.user_agency).values()
- # else:
- # print("---管理员")
- # equip_list = Equip.objects.filter(equip_type=3).values()
- # data = []
- # for i in equip_list:
- # sta1 = RecentCBDdata.objects.filter(
- # equip_id=i['equip_id'])
- # for x in sta1:
- # sta2 = {"equip_name": x.equip_id.equip_name,
- # "cbd_data": x.cbd_data, "upl_time": x.upl_time,"equip_id":x.equip_id.equip_id}
- # # sta1 = RecentCBDdata.objects.filter(
- # # equip_id=i['equip_id']).values()
- # # for x in sta1:
- # # sta2 = {"equip_name":"",
- # # "cbd_data": x['cbd_data'], "upl_time": x['upl_time'],"equip_id":x['equip_id_id']}
- # data.append(sta2)
- if request.method == 'GET':
- if request.is_ajax():
- req = request.GET.get('req')
- print("req:", req)
- if req == "reqdat":
- print("---post 请求数据!")
- page = int(request.GET.get('page'))
- print("page:", page)
- data = data[(10*(page-1)):(page*10)]
- # data = serializers.serialize("json", equip_list)
- # print("data:", data)
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- else:
- nums = len(data)
- User_Log.objects.create(log_user=current_user,
- log_ip=request.META['REMOTE_ADDR'], log_desc='报表管理-测报灯')
- return render(request, 'reportmanage/cbd_report.html', context={"nums": nums,"role":role})
- if request.method == 'POST':
- req = request.POST.get('req')
- print("req:", req)
- if req == "filter":
- print("---筛选!")
- page = int(request.POST.get('page'))
- print("page:", page)
- ename = request.POST.get('ename')
- print("ename:", ename)
- f_id = request.POST.get('f_id')
- print("f_id:", f_id)
-
- etype = request.POST.get('etype')
- print("etype:", etype)
- current_user = request.session.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:
- # print("---不是管理员")
- # if ename == "" and f_id == "":
- # equip_list = Equip.objects.filter(equip_type=3, equip_user=current_user)
- # elif ename == "" and f_id != "":
- # equip_list = Equip.objects.filter(equip_type=3, equip_user=current_user, equip_id__contains=f_id)
- # elif ename != "" and f_id == "":
- # equip_list = Equip.objects.filter(equip_type=3, equip_user=current_user, equip_name__contains=ename)
- # elif ename != "" and f_id != "":
- # equip_list = Equip.objects.filter(equip_type=3, equip_user=current_user, equip_name__contains=ename,equip_id__contains=f_id)
- # elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
- # print("---代理商")
- # if ename == "" and f_id == "":
- # equip_list = Equip.objects.filter(equip_type=3, equip_agency=current_user.user_agency)
- # elif ename == "" and f_id != "":
- # equip_list = Equip.objects.filter(equip_type=3, equip_agency=current_user.user_agency, equip_id__contains=f_id)
- # elif ename != "" and f_id == "":
- # equip_list = Equip.objects.filter(equip_type=3, equip_agency=current_user.user_agency, equip_name__contains=ename)
- # elif ename != "" and f_id != "":
- # equip_list = Equip.objects.filter(equip_type=3, equip_agency=current_user.user_agency, equip_name__contains=ename,equip_id__contains=f_id)
- # else:
- # print("---管理员")
- # if ename == "" and f_id == "":
- # equip_list = Equip.objects.filter(equip_type=3)
- # elif ename == "" and f_id != "":
- # equip_list = Equip.objects.filter(equip_type=3,equip_id__contains=f_id)
- # elif ename != "" and f_id == "":
- # equip_list = Equip.objects.filter(equip_type=3, equip_name__contains=ename)
- # elif ename != "" and f_id != "":
- # equip_list = Equip.objects.filter(equip_type=3, equip_name__contains=ename,equip_id__contains=f_id)
- # dat = []
- # for i in equip_list:
- # sta1 = CBDdata.objects.filter(
- # equip_id=i.equip_id).order_by('-upl_time')[:1]
- # for x in sta1:
- # sta2 = {"equip_name": x.equip_id.equip_name,
- # "cbd_data": x.cbd_data, "upl_time": x.upl_time,"equip_id":x.equip_id.equip_id}
- # dat.append(sta2)
-
- dat = []
- if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
- print("---不是管理员")
- if ename == "" and f_id == "":
- sta1 = RecentCBDdata.objects.filter(equip_id__equip_user=current_user).values()
- elif ename == "" and f_id != "":
- sta1 = RecentCBDdata.objects.filter(equip_id__equip_user=current_user, equip_id__equip_id__contains=f_id).values()
- elif ename != "" and f_id == "":
- sta1 = RecentCBDdata.objects.filter(equip_id__equip_user=current_user, equip_id__equip_name__contains=ename).values()
- elif ename != "" and f_id != "":
- sta1 = RecentCBDdata.objects.filter(equip_id__equip_user=current_user, equip_id__equip_name__contains=ename,equip_id__equip_id__contains=f_id).values()
- elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
- print("---代理商")
- if ename == "" and f_id == "":
- sta1 = RecentCBDdata.objects.filter(equip_id__equip_agency=current_user.user_agency).values()
- elif ename == "" and f_id != "":
- sta1 = RecentCBDdata.objects.filter(equip_id__equip_agency=current_user.user_agency, equip_id__equip_id__contains=f_id).values()
- elif ename != "" and f_id == "":
- sta1 = RecentCBDdata.objects.filter(equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=ename).values()
- elif ename != "" and f_id != "":
- sta1 = RecentCBDdata.objects.filter(equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=ename,equip_id__equip_id__contains=f_id).values()
- else:
- print("---管理员")
- if ename == "" and f_id == "":
- sta1 = RecentCBDdata.objects.all().values()
- elif ename == "" and f_id != "":
- sta1 = RecentCBDdata.objects.filter(equip_id__equip_id__contains=f_id).values()
- elif ename != "" and f_id == "":
- sta1 = RecentCBDdata.objects.filter(equip_id__equip_name__contains=ename).values()
- elif ename != "" and f_id != "":
- sta1 = RecentCBDdata.objects.filter(equip_id__equip_name__contains=ename,equip_id__equip_id__contains=f_id).values()
- photoday = request.POST.get('photoday')
- dish = request.POST.get('dish')
-
- # 设备类型筛选设备
- if etype != "":
- if etype == "全部" or etype == "" or etype == None:
- pass
- elif etype == "其他":
- sta1 = sta1.filter(etype=None)
- else:
- sta1 = sta1.filter(etype=etype)
-
-
- if dish == "square":
- pass
- elif dish == "circle":
- pass
- # print("photoday================>>",photoday)
- # if photoday == "":
- # print("全部")
- if photoday:
- now_time = datetime.datetime.now()
- start_time = now_time - datetime.timedelta(days=int(photoday))
- for x in sta1:
- if CBDphoto.objects.filter(equip_id_id=x['equip_id_id'],upl_time__range=(start_time, now_time)).exists():
- sta2 = {"cbd_data": x['cbd_data'],"upl_time": x['upl_time'],"scene":x['scene'],"etype":x['etype'],
- "equip_name": x['equip_name'],"equip_id": x['equip_id_id'],"disc":x['disc'],"have_photo":"1"}
- dat.append(sta2)
- else:
- for x in sta1:
- if CBDphoto.objects.filter(equip_id_id=x['equip_id_id']).exists():
- have_photo = "1"
- else:
- have_photo = "0"
- sta2 = {"cbd_data": x['cbd_data'],"upl_time": x['upl_time'],"scene":x['scene'],"etype":x['etype'],
- "equip_name": x['equip_name'],"equip_id": x['equip_id_id'],"disc":x['disc'],"have_photo":have_photo}
- dat.append(sta2)
- # print('-----------------------',x.equip_id.equip_id)
- nums = len(dat)
- print("nums:", nums)
- dat = dat[(10*(page-1)):(page*10)]
- data = {'dat': dat, 'nums': nums}
- # print("data:",data)
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- # 报表详情视图:
- @method_decorator(csrf_exempt, name='dispatch')
- class CBD_Report_Detail(ListView):
- def get(self, request):
- equip_id = request.GET.get('id')
- print("请求数据,设备id:", equip_id)
- nums = CBDdata.objects.filter(equip_id=equip_id).count()
- print("nums:", nums)
- return render(request, 'reportmanage/cbd_report_detail.html', context={"equip_id": equip_id, "nums": nums})
- def post(self, request):
- req = request.POST.get('req')
- if req == "data":
- equip_id = request.POST.get('id')
- page = int(request.POST.get('page'))
- print("page:", page)
- print("请求数据的设备id:", equip_id)
- # data = {'dat':"",'pages':""}
- sta1 = CBDdata.objects.filter(equip_id=equip_id).values()[(10*(page-1)):(page*10)]
- sta2 = [{"equip_name": "",
- "cbd_data": x['cbd_data'],
- "upl_time": x['upl_time']} for x in sta1]
- data = json.dumps(sta2, cls=CJSONEncoder)
- # data['dat'] = sta2
- # data['pages'] = pages
- # data = json.dumps(data, cls=CJSONEncoder)
- # print(data)
- return HttpResponse(data)
- elif req == "filter":
- equip_id = request.POST.get('id')
- page = int(request.POST.get('page'))
- print("equip_id:", equip_id)
- print("page:", page)
- print("请求数据的设备id:", equip_id)
- f_tbegin = request.POST.get('begin')
- f_tend = request.POST.get('end')
- print("f_tbegin:", f_tbegin)
- print("f_tend:", f_tend)
- 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]))
- print("start_date:", start_date)
- print("end_date:", end_date)
- sta1 = CBDdata.objects.filter(equip_id=equip_id, upl_time__range=(start_date, end_date)).values()
- print("sta1:", sta1)
- sta2 = [{"equip_name":"",
- "cbd_data": x['cbd_data'],
- "upl_time": x['upl_time']} for x in sta1]
- nums = len(sta2)
- dat = sta2[(10*(page-1)):(page*10)]
- data = {'dat': dat, 'nums': nums}
- # print("data:",data)
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
-
- # elif req == "export":
- # equip_id = request.POST.get('id')
- # print("请求数据的设备id:",equip_id)
- # f_tbegin = request.POST.get('begin')
- # f_tend = request.POST.get('end')
- # print("f_tbegin:", f_tbegin)
- # print("f_tend:", f_tend)
- # print("f_tbegin:", type(f_tbegin))
- # print("f_tend:", type(f_tend))
- # # 查询时间段
- # if f_tbegin:
- # 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]))
- # print("start_date:", start_date)
- # print("end_date:", end_date)
- # sta1 = CBDdata.objects.filter(equip_id=equip_id, upl_time__range=(start_date, end_date))
- # print("sta1:", sta1)
- # sta2 = [{"equip_name": x.equip_id.equip_name,
- # "cbd_data": x.cbd_data,
- # "upl_time": x.upl_time} for x in sta1]
- # data = json.dumps(sta2, cls=CJSONEncoder)
- # # 查询全部
- # else:
- # sta1 = CBDdata.objects.filter(equip_id=equip_id)
- # print("sta1:",sta1)
- # sta2 = [{"equip_name": x.equip_id.equip_name,
- # "cbd_data": x.cbd_data,
- # "upl_time": x.upl_time} for x in sta1]
- # data = json.dumps(sta2, cls=CJSONEncoder)
- # return HttpResponse(data)
- # 测报灯报表详情图表视图:
- @method_decorator(csrf_exempt, name='dispatch')
- class CBD_Report_Detail_Chart(ListView):
- def get(self, request):
- pass
- def post(self, request):
- req = request.POST.get('req')
- print("req:", req)
- equip_id = request.POST.get('id')
- print("equip_id:", equip_id)
- if req == "data":
- # 获取当天日期:
- # today = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
- # print("today:",today)
- now_time = datetime.datetime.now()
- # print("type now_time:",type(now_time))
- # # 测试:
- # now_time = datetime.datetime(2018, 2, 28,17,38)
- # print("now_time:",now_time)
- # print("type now_time:",type(now_time))
- # now_time2 = now_time + datetime.timedelta(days=+1) #后一天
- # print("now_time2:",now_time2)
- # print("type now_time2:",type(now_time2))
- # 上月的这一天日期:
- if now_time.month == 1:
- last_month_now = now_time.replace(year=now_time.year-1, month=12)
- else:
- try:
- last_month_now = now_time.replace(month=now_time.month-1)
- except ValueError:
- last_month_now = now_time.replace(month=now_time.month-1,day=now_time.day-3)
- print("last_month_now:", last_month_now)
- # 格式化输出:
- # last_month_now = last_month_now.strftime('%Y%m%d')
- last_month_now = json.dumps(last_month_now, cls=CJSONEncoder)
- print("格式化为json的last_month_now:", last_month_now)
- now_time = json.dumps(
- now_time + datetime.timedelta(days=+1), cls=CJSONEncoder)
- print("格式化为json的now_time:", now_time)
- begindate = re.findall(r"\d+\.?\d*", last_month_now)
- enddate = re.findall(r"\d+\.?\d*", now_time)
- print("begindate:", begindate)
- print("enddate:", enddate)
- 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 = CBDdata.objects.filter(
- equip_id=equip_id, upl_time__range=(start_date, end_date)).values()
- sta2 = [{"at": eval(x['cbd_data'])['at'],
- "ah": eval(x['cbd_data'])['ah'],
- "tim": x['upl_time']} for x in sta1]
- data = json.dumps(sta2, cls=CJSONEncoder)
- # print("data:",data)
- return HttpResponse(data)
- elif req == "filter":
- f_tbegin = request.POST.get('begin')
- f_tend = request.POST.get('end')
- print("f_tbegin:", f_tbegin)
- print("f_tend:", f_tend)
- if f_tbegin:
- 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]))
- print("start_date:", start_date)
- print("end_date:", end_date)
- sta1 = CBDdata.objects.filter(
- equip_id=equip_id, upl_time__range=(start_date, end_date)).values()
- sta2 = [{"at": eval(x['cbd_data'])['at'],
- "ah": eval(x['cbd_data'])['ah'],
- "tim": x['upl_time']} for x in sta1]
- data = json.dumps(sta2, cls=CJSONEncoder)
- else:
- sta1 = CBDdata.objects.filter(
- equip_id=equip_id).values()
- sta2 = [{"at": eval(x['cbd_data'])['at'],
- "ah": eval(x['cbd_data'])['ah'],
- "tim": x['upl_time']} for x in sta1]
- data = json.dumps(sta2, cls=CJSONEncoder)
- # print("data:",data)
- return HttpResponse(data)
- # 测报灯上传图片测试页面:
- @method_decorator(csrf_exempt, name='dispatch')
- def imageview(request):
- if request.method == 'GET':
- print("-----image preview!-----")
- imei = request.GET.get('imei')
- print("imei:", imei)
- disc = request.GET.get('disc')
- nums = CBDphoto.objects.filter(equip_id=imei).count()
- print("nums:", nums)
- simid = CBDstatus.objects.get(equip_id=imei).simid
- dver = eval(CBDstatus.objects.get(equip_id=imei).cbd_status)["dver"]
- user_name = request.user.username
- print('user_name=', user_name)
- current_user = MyUser.objects.get(username=user_name)
- if current_user.is_superuser:
- role = "superuser"
- elif current_user.is_staff:
- role = "staff"
- elif current_user.is_agency:
- role = "agency"
- else:
- role = "user"
-
- end_t = datetime.datetime.now()
- start_t = end_t + datetime.timedelta(days=-2)
- # 865650044618094
- rain = "0"
- datalist = CBDdata.objects.filter(equip_id=imei,upl_time__range=(start_t, end_t))
- for i in datalist:
- if eval(i.cbd_data)['rps'] == 1:
- rain = "1"
- break
- return render(request, 'reportmanage/image.html', context={"nums": nums, "imei": imei, "disc":disc, "simid":simid, "dver":dver, "role":role,"rain":rain})
- if request.method == 'POST':
- print("-----image upload request!-----")
- imei = request.GET.get('imei')
- print("imei:", imei)
- # 判断设备是否存在:
- if Equip.objects.filter(equip_id=imei).exists():
- length = request.META['CONTENT_LENGTH']
- print("length:", length)
- # 以当前时间命名图片
- now_time = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
- pic_name = now_time + '.jpg'
- print("pic_name:", pic_name)
- pic_dir = 'cbd_img/' + imei + '/' + \
- pic_name[0:4] + '/' + pic_name[4:6] + '/'
- if os.path.exists(pic_dir) == False:
- # 文件夹加权限
- os.makedirs(pic_dir)
- # os.chmod(pic_dir, stat.S_IRWXU|stat.S_IRWXG|stat.S_IRWXO)
- print("图片路径:", pic_dir + pic_name)
- # img.save(pic_dir+pic_name)
- with open(pic_dir + pic_name, "wb") as file:
- file.write(request.body)
- # print("request.body:", request.body)
- # 数据库关联设备,并在照片的表中存入路径:
- equip = Equip.objects.get(equip_id=imei)
- CBDphoto.objects.create(equip_id=equip, addr=pic_dir + pic_name)
- try:
- print("------------------------------------")
- time.sleep(3)
- # insect_indentify 昆虫识别
- # # 保存图片之后调用害虫识别接口
- img_addr = pic_dir + pic_name
- # img_addr = "cbd_img/862991419825259/2018/05/20180511201853.jpg"
- # pic_name = "862991419825259"
- # 正则切割文件名 去掉.jpg后缀
- pattern = r'[.]'
- res = img_addr
- result = re.split(pattern, res)
- insect_pic_name = result[0] + 'result' + '.jpg'
- # 调用识别接口并获取识别结果
- # url = 'http://60.166.14.184:9143/upload'
- url = 'http://60.166.14.184:9143/upload'
- # imageFile = {'imageFile':('pic.jpg',open("/home/web/yfwlw/" + img_addr,'rb'),'image/jpeg')}
- imageFile = {'imageFile':('pic.jpg',open("/data/yfwlw/" + 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)
- resp = json.loads(res.text)
- print("insect_pic_name:", insect_pic_name)
- print("-------------------------识别成功")
-
- except Exception as e:
- print(e)
- print("---------------------识别失败")
- try:
- # 将识别结果中的链接中的图片存入本地
- # pic_dir_1 = "/home/web/yfwlw/result_cbd_img/" + imei + '/' + pic_name[0:4] + '/' + pic_name[4:6] + '/'
- pic_dir_1 = "/data/yfwlw/result_cbd_img/" + imei + '/' + pic_name[0:4] + '/' + pic_name[4:6] + '/'
- print("pic_dir_1:",pic_dir_1)
- if os.path.exists(pic_dir_1) == False:
- os.makedirs(pic_dir_1)
- img_src = resp["returnResult"]["returnImageUrl"]
- response = requests.get(img_src)
- image = Image.open(BytesIO(response.content))
- insect_image_addr = pic_dir_1 + insect_pic_name
- image.save(insect_image_addr)
- print("------------------图片保存成功")
- try:
- # 将识别结果存入数据库
- pic_dir = "result_pyftp/" + os.path.join(event.path, insect_pic_name)
- photo_obj = CBDphoto.objects.get(addr=img_addr)
- photo_obj.indentify_photo = pic_dir
- photo_obj.indentify_result = resp["returnResult"]["returnString"]
- photo_obj.save()
- print("图片路径:", pic_dir)
- print("---------------数据库保存识别结果成功")
- except Exception as ex:
- print(ex)
- print("---------------数据库保存识别结果失败")
- except Exception as exc:
- print(exc)
- print("----------------识别结果图片保存失败")
- try:
- # equip = Equip.objects.get(equip_id=imei)
- if equip.ftp_addr:
- # http://www.yfzhwlw.com/cbd/pyftp/ftp_file/ykm_cbd/868575028845867/20190305/20:56:15.jpg
- ftp_addr = equip.ftp_addr
- pattern = r'[#]'
- split_result = re.split(pattern, ftp_addr)
- print("split_result:",split_result)
- try:
- need_result = split_result[1]
- except:
- print("对接设备的地址填写有误!请检查!")
- need_result = "0"
- if need_result == "1":
- try:
- r_photo = CBDphoto.objects.get(addr=img_addr).indentify_photo
- indentify_result_1 = CBDphoto.objects.get(addr=img_addr).indentify_result
- img_addr_1 = "http://120.27.222.26/" + img_addr
- indentify_photo_1 = "http://120.27.222.26/" + r_photo
- print("img_addr_1:",img_addr_1)
- print("indentify_photo_1:",indentify_photo_1)
- print("indentify_result_1:",indentify_result_1)
- data = {
- "Image":img_addr_1,
- "Result_image":indentify_photo_1,
- "Result":indentify_result_1,
- "imei":imei
- }
- data = json.dumps(data, cls=CJSONEncoder)
- print("data:",data)
- res_1 = requests.post(split_result[0],data=data,timeout=2)
- print("res_1:",res_1)
- print("------------------识别结果发送成功!!!")
- except Exception as aex:
- print(aex)
- try:
- img_addr_1 = "http://120.27.222.26/" + img_addr
- print("img_addr_1:",img_addr_1)
- data = {
- "Image":img_addr_1,
- "imei":imei
- }
- data = json.dumps(data, cls=CJSONEncoder)
- print("data:",data)
- print("url:",split_result[0])
- res_1 = requests.post(split_result[0],data=data)
- except:
- pass
-
- print("------------------识别结果发送失败!!!")
- else:
- try:
- # img_addr_1 = "http://www.yfznscd.com/" + img_addr
- img_addr_1 = "http://120.27.222.26/" + img_addr
- print("img_addr_1:",img_addr_1)
- data = {
- "Image":img_addr_1,
- "imei":imei
- }
- data = json.dumps(data, cls=CJSONEncoder)
- # 14:00设备会上传一张未开启闪光灯的照片
- # 照片为黑色,所以在此做处理,判断时间 为 14:00的 不往对接用户发送
- # pic_time = photo_obj.upl_time
- # pic_time = pic_time.strftime("%Y-%m-%d %H:%M:%S")
- # print("图片时间为:",pic_time,type(pic_time))
- # if "14:00:" in pic_time:
- # print("图片上传时间为14:00,所以不对外发送")
- # else:
- # data = json.dumps(data, cls=CJSONEncoder)
- print("data:",data)
- print("url:",split_result[0])
- res_1 = requests.post(split_result[0],data=data)
- print("res_1:",res_1.text)
- # 判断文件大小的方法
- # path = 'F:\YFWLW\yfwlw\\16_19_21.jpg'
- # size = os.path.getsize(path)/1024 得到结果的单位为k
- print("------------------对接设备图片发送成功!!!")
- except Exception as aexc:
- print(aexc)
- print("------------------对接设备图片发送失败!!!")
- except Exception as exce:
- print(exce)
- print("!!!")
-
-
- return HttpResponse("-----image upload success!-----")
- else:
- return HttpResponse("-----image upload failed because this imei is not exists!-----")
- # 测报灯上传图片测试页面2:
- @method_decorator(csrf_exempt, name='dispatch')
- def imageview2(request):
- if request.method == 'POST':
- print("-----image upload request!-----")
- imei = request.GET.get('imei')
- print("imei:", imei)
- if Equip.objects.filter(equip_id=imei).exists():
- length = request.META['CONTENT_LENGTH']
- print("length:", length)
- # 以当前时间命名图片
- pic_name = time.strftime(
- '%Y%m%d%H%M%S', time.localtime(time.time())) + '.jpg'
- print("pic_name:", pic_name)
- pic_dir = 'cbd_img/' + imei + '/' + \
- pic_name[0:4] + '/' + pic_name[4:6] + '/'
- if os.path.exists(pic_dir) == False:
- # 文件夹加权限
- os.makedirs(pic_dir)
- # os.chmod(pic_dir, stat.S_IRWXU|stat.S_IRWXG|stat.S_IRWXO)
- print("图片路径:", pic_dir + pic_name)
- pic = request.FILES['img']
- print("pic:",pic)
- img = Image.open(pic).convert('RGB')
- img.save('cbd_img/test.jpg')
- return HttpResponse("-----image upload success!-----")
- else:
- return HttpResponse("-----image upload failed because this imei is not exists!-----")
- # 测报灯图片列表视图:
- @csrf_exempt
- def imagelistview(request):
- if request.method == 'GET':
- print("-----image list view!-----")
- imei = request.GET.get('imei')
- print("imei:", imei)
- user_name = request.user.username
- print('user_name=', user_name)
- disc = request.GET.get('disc')
- current_user = MyUser.objects.get(username=user_name)
- f_begin = request.GET.get('begin')
- f_end = request.GET.get('end')
- if current_user.is_superuser:
- role = "superuser"
- elif current_user.is_staff:
- role = "staff"
- elif current_user.is_agency:
- role = "agency"
- else:
- role = "user"
- # 获得当前页:
- page = int(request.GET.get('page'))
- print("page:", page)
- equip_name = Equip.objects.get(equip_id=imei).equip_name
- # 当前用户:返回用户,前端判断是否显示删除图片按钮
- current_user = request.session.get('username')
- print("current_user:", current_user)
- current_user = MyUser.objects.get(username=current_user)
- img = CBDphoto.objects.filter(equip_id=imei)[(8*(page-1)):(page*8)]
- equip_name = Equip.objects.get(equip_id=imei).equip_name
- nums = ""
- if f_begin:
- img = CBDphoto.objects.filter(equip_id=imei)[(8*(page-1)):(page*8)]
- begindate = re.findall(r"\d+\.?\d*", f_begin)
- enddate = re.findall(r"\d+\.?\d*", f_end)
- 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)
- img = CBDphoto.objects.filter(equip_id=imei, upl_time__range=(start_date, end_date))
- nums = img.count()
- img = img[(8*(page-1)):(page*8)]
- end_t = datetime.datetime.now()
- start_t = end_t + datetime.timedelta(days=-2)
- # 865650044618094
- rain = "0"
- datalist = CBDdata.objects.filter(equip_id=imei,upl_time__range=(start_t, end_t))
- for i in datalist:
- if eval(i.cbd_data)['rps'] == 1:
- rain = "1"
- break
- return render(request, 'reportmanage/imageList.html', context={"img": img, "equip_name": equip_name, "current_user": current_user,'imei':imei,'role':role,
- 'disc':disc,'nums':nums,'rain':rain})
- # 删除图片接口:
- class Image_Delete(ListView):
- def get(self, request):
- pass
- def post(self, request):
- print("-----image delete!-----")
- imei = request.POST.get('imei')
- img_name = request.POST.get('addr')
- img_list = request.POST.get('addrlist')
- allpic = request.POST.get('allpic')
- print("img_name:",img_name)
- if allpic == "1":
- all_photo = CBDphoto.objects.filter(equip_id=imei)
- print("-----image delete ok!-----")
- for i in all_photo:
- if os.path.exists(i.addr) == True:
- # 删除图片文件
- os.remove(i.addr)
- # 删除数据库照片列表中,照片路径:
- try:
- CBDphoto.objects.filter(equip_id=imei, addr=i.addr).delete()
- print("-----image delete ok!-----")
- except:
- print("-----image delete failed!-----")
- else:
- # 照片在数据库里不存在,但是数据库有路径的情况会删除不掉
- # 因此不管何时都删除数据库路径
- try:
- CBDphoto.objects.filter(equip_id=imei, addr=i.addr).delete()
- except Exception as e:
- print("========>>",e)
- print("-----image not exist!-----")
- return HttpResponse("0")
- 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=imei, addr=i).delete()
- print("-----image delete ok!-----")
- except:
- print("-----image delete failed!-----")
- else:
- # 照片在数据库里不存在,但是数据库有路径的情况会删除不掉
- # 因此不管何时都删除数据库路径
- try:
- CBDphoto.objects.filter(equip_id=imei, addr=i).delete()
- except Exception as e:
- print("========>>",e)
- print("-----image not exist!-----")
- data = "0"
- return HttpResponse(data)
- if os.path.exists(img_name) == True:
- # 删除图片文件
- os.remove(img_name)
- # 删除数据库照片列表中,照片路径:
- try:
- CBDphoto.objects.filter(equip_id=imei, addr=img_name).delete()
- print("-----image delete ok!-----")
- data = "1"
- return HttpResponse(data)
- except:
- print("-----image delete failed!-----")
- data = "0"
- return HttpResponse(data)
- else:
- # 照片在数据库里不存在,但是数据库有路径的情况会删除不掉
- # 因此不管何时都删除数据库路径
- try:
- CBDphoto.objects.filter(equip_id=imei, addr=img_name).delete()
- except:
- pass
- print("-----image not exist!-----")
- data = "0"
- return HttpResponse(data)
- # 图片描述接口:
- @method_decorator(csrf_exempt, name='dispatch')
- class Image_Desc(ListView):
- def get(self, request):
- req = request.GET.get('req')
- print('req:',req)
- current_user = request.session.get('username')
- print("current_user:", current_user)
- current_user = MyUser.objects.get(username=current_user)
- # 请求害虫种类列表:
- if req == "pest_kind":
- print("-----get req:pestkind !-----")
- pest_kinds = CBDpest.objects.filter(user=current_user)
- data = [{"pest_name": x.pest_name,} for x in pest_kinds]
- data = json.dumps(data)
- print('data:',data)
- return HttpResponse(data)
- # 请求图片描述:
- elif req == "desc":
- print("-----get req:desc !-----")
- img_name = request.GET.get('addr')
- print("img_name:",img_name)
- print("type img_name:",type(img_name))
- 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]
- print("data:",data)
- data = json.dumps(data)
- return HttpResponse(data)
- # 增加害虫种类:
- elif req == "add_pest":
- print("-----get req:add_pest !-----")
- pest = request.GET.get('pest')
- print("pest:",pest)
- # 如果该用户下的该害虫名称已经存在!
- if CBDpest.objects.filter(user=current_user,pest_name=pest).exists():
- data = '1'
- return HttpResponse(data)
- 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]
- data = json.dumps(data)
- print('data:',data)
- return HttpResponse(data)
- except:
- data = '2'
- return HttpResponse(data)
- # 删除害虫种类:
- elif req == "del_pest":
- print("-----get req:del_pest !-----")
- pests = request.GET.get('pest')
- pests = json.loads(pests)
- for i in pests:
- CBDpest.objects.filter(user=current_user,pest_name=i).delete()
- pest_kinds = CBDpest.objects.filter(user=current_user)
- data = [{"pest_name": x.pest_name,} for x in pest_kinds]
- data = json.dumps(data)
- print('data:',data)
- return HttpResponse(data)
- def post(self, request):
- req = request.POST.get('req')
- print('req:',req)
- current_user = request.session.get('username')
- current_user = MyUser.objects.get(username=current_user)
- img_name = request.POST.get('addr')
- print('img_name:',img_name)
- photo_time = request.POST.get('photo_time')
- desc = request.POST.get('describe')
- # print("json的desc:",desc)
- desc = json.loads(desc)
- # print("转为dict的desc:",desc)
- # 增加描述:
- if req == "add_save":
- print("-----add image describe --post!-----")
- print("desc['pest_name']:",desc['pest_name'])
- print("desc['pest_num']:",desc['pest_num'])
- print("desc['crop_name']:",desc['crop_name'])
- print("desc['pest_case']:",desc['pest_case'])
- 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'
- return HttpResponse(data)
- 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 = desc['pest_name'],
- photo_time = photo_time,
- photo_time1 = CBDphoto.objects.get(addr=img_name).upl_time,
- equip_id = CBDphoto.objects.get(addr=img_name).equip_id_id
- )
- print("-----image add describe ok!-----")
- data = "0"
- return HttpResponse(data)
- except:
- print("-----image add describe failed!-----")
- data = "1"
- return HttpResponse(data)
- # 修改描述:
- elif req == "change_save":
- print("-----change image describe --post!-----")
-
- print("desc['pest_name']:",desc['pest_name'])
- print("desc['pest_num']:",desc['pest_num'])
- print("desc['crop_name']:",desc['crop_name'])
- print("desc['pest_case']:",desc['pest_case'])
- try:
- CBDphoto_desc.objects.filter(desc_user = current_user
- ,photo_id = CBDphoto.objects.get(addr=img_name)
- # ,pest_name = CBDpest.objects.get(pest_name=desc['pest_name'])
- ,pest_name = CBDpest.objects.get(user=current_user,pest_name=desc['pest_name'])
- ).update(pest_num = desc['pest_num']
- ,crop_name = desc['crop_name']
- ,pest_case = desc['pest_case']
- ,pest_name2 = desc['pest_name'])
- print("-----change image describe ok!-----")
- data = "0"
- return HttpResponse(data)
- except:
- print("-----change image describe failed!-----")
- data = "1"
- return HttpResponse(data)
- # 删除描述:
- elif req == "del_desc":
- print("-----del image describe --post!-----")
- print("desc['pest_name']:",desc['pest_name'])
- try:
- CBDphoto_desc.objects.filter(desc_user = current_user
- ,photo_id = CBDphoto.objects.get(addr=img_name)
- # ,pest_name = CBDpest.objects.get(pest_name=desc['pest_name'])
- ,pest_name = CBDpest.objects.get(user=current_user,pest_name=desc['pest_name'])
- ).delete()
- print("-----delete image describe ok!-----")
- data = "0"
- return HttpResponse(data)
- except:
- print("-----delete image describe failed!-----")
- data = "1"
- return HttpResponse(data)
-
- # 图片害虫数据统计接口:
- @method_decorator(csrf_exempt, name='dispatch')
- class Pest_Data(ListView):
- def get(self, request):
- return render(request, 'reportmanage/cbd_pest_data.html', context={})
- def post(self, request):
- current_user = request.session.get('username')
- print("current_user:", current_user)
- current_user = MyUser.objects.get(username=current_user)
- # 先通过imei:查到时间段的照片:
- # imei = '012345'
- imei = request.POST.get('imei')
- print("============>>",imei)
- tbegin = request.POST.get('tbegin')
- tend = request.POST.get('tend')
- # 首次查看统计,默认为最近一个月的照片描述:
- if tbegin:
- begindate = re.findall(r"\d+\.?\d*", tbegin)
- enddate = re.findall(r"\d+\.?\d*", tend)
- print("begindate:", begindate)
- print("enddate:", enddate)
- 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]))
- # photos = CBDphoto.objects.filter(equip_id=Equip.objects.get(equip_id=imei),upl_time__range=(start_date, end_date))
- des = CBDphoto_desc.objects.filter(equip_id=imei,desc_user=current_user,photo_time1__range=(start_date, end_date)).values()
- else:
- # 获取当前日期:
- now_time = datetime.datetime.now()
- # 往前推一个月:
- if now_time.month == 1:
- last_month_now = now_time.replace(year=now_time.year-1, month=12)
- else:
- try:
- last_month_now = now_time.replace(month=now_time.month-1)
- except ValueError:
- last_month_now = now_time.replace(month=now_time.month-1,day=now_time.day-3)
- tbegin = last_month_now
- tend = now_time + datetime.timedelta(days=+1)
- # photos = CBDphoto.objects.filter(equip_id=Equip.objects.get(equip_id=imei),upl_time__range=(tbegin, tend))
- des = CBDphoto_desc.objects.filter(equip_id=imei,desc_user=current_user,photo_time1__range=(tbegin, tend)).values()
- data = []
- des = CBDphoto_desc.objects.filter(equip_id=imei,desc_user=current_user).values()
- for ii in des:
- # 遍历一条描述,获取描述的信息:
- desc = {
- "pest_num":ii['pest_num'],
- "pest_name":ii['pest_name2'],
- "crop_name":ii['crop_name'],
- "pest_case":ii['pest_case'],
- "add_time":ii['photo_time1']
- }
-
- data.append(desc)
- print('data:',data)
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- # 害虫统计的表格数据:
- @method_decorator(csrf_exempt, name='dispatch')
- class Pest_TableData(ListView):
- def get(self, request):
- pass
- def post(self, request):
- current_user = request.session.get('username')
- print("current_user:", current_user)
- current_user = MyUser.objects.get(username=current_user)
- # 得到imei
- imei = request.POST.get('imei')
- print("imei:", imei)
- pest_name = request.POST.get("pest_name")
- tbegin = request.POST.get("tbegin")
- tend = request.POST.get("tend")
- # photos = CBDphoto.objects.filter(equip_id_id=imei).values()
- # if tbegin:
- # photos = CBDphoto.objects.filter(equip_id=Equip.objects.get(equip_id=imei),upl_time__range=(tbegin, tend)).values()
- # descs=[]
- # for i in photos:
- # print("i.addr:",i['addr'])
- # # 查描述列表:
- # desc = CBDphoto_desc.objects.filter(desc_user=current_user,photo_id = CBDphoto.objects.get(addr=i['addr'])).values()
- # descs.append(desc)
- # print("descs:",descs)
- dat = []
- # for i in descs:
- # for ii in i:
- # dat.append({
- # "pest_num":ii['pest_num'],
- # "pest_name":ii['pest_name2'],
- # "crop_name":ii['crop_name'],
- # "pest_case":ii['pest_case'],
- # "add_time":ii['photo_time']
- # })
- if tbegin:
- begindate = re.findall(r"\d+\.?\d*", tbegin)
- enddate = re.findall(r"\d+\.?\d*", 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]))
- desc = CBDphoto_desc.objects.filter(equip_id=imei,desc_user=current_user,photo_time1__range=(start_date, end_date)).values()
- desc = CBDphoto_desc.objects.filter(equip_id=imei,desc_user=current_user).values()
- for ii in desc:
- # if ii['photo_time1']:
- dat.append({
- "pest_num":ii['pest_num'],
- "pest_name":ii['pest_name2'],
- "crop_name":ii['crop_name'],
- "pest_case":ii['pest_case'],
- "add_time":ii['photo_time1']
- })
- if pest_name:
- dat = []
- for ii in desc:
- if pest_name == ii['pest_name2']:
- dat.append({
- "pest_num":ii['pest_num'],
- "pest_name":ii['pest_name2'],
- "crop_name":ii['crop_name'],
- "pest_case":ii['pest_case'],
- "add_time":ii['photo_time1']
- })
- page = int(request.POST.get('page'))
- print("当前页为:",page)
- nums = len(dat)
- print('nums:',nums)
- dat = dat[(10*(page-1)):(page*10)]
- data = {"nums":nums,"dat":dat}
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- # 识别统计页面
- class Manual_Pest_Data(ListView):
- def get(self,request):
- e_id = request.GET.get("e_id")
- disc = RecentCBDdata.objects.get(equip_id=e_id).disc
- current_user = request.user.username
- print("current_user:", current_user)
- # current_user = MyUser.objects.get(username=current_user)
- try:
- current_user = MyUser.objects.get(username=current_user)
- except:
- current_user = MyUser.objects.get(username="public")
- if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
- print("---不是管理员")
- role = "user"
- elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
- print("---代理商")
- role = "agency"
- else:
- role = "superuser"
- print("---管理员")
- return render(request, 'reportmanage/cbd_manual_pest_data.html', context={"e_id": e_id, "disc": disc,"role":role})
- def post(self,request):
- pass
- import xlwt
- # 杀虫灯数据导出接口
- class SCD_Data_Export(ListView):
- def get(self,request):
- equip_id = request.GET.get('id')
- print("请求数据的设备id:",equip_id)
- f_tbegin = request.GET.get('begin')
- f_tend = request.GET.get('end')
- filename = request.GET.get('filename')
- print("filename:", filename)
- print("f_tbegin:", f_tbegin)
- print("f_tend:", f_tend)
- print("f_tbegin:", type(f_tbegin))
- print("f_tend:", type(f_tend))
- # 查询时间段
- if f_tbegin:
- 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]))
- print("start_date:", start_date)
- print("end_date:", end_date)
- sta1 = SCDdata.objects.filter(equip_id=equip_id, upl_time__range=(start_date, end_date))
- print("sta1:", sta1)
- sta2 = [{"equip_name": x.equip_id.equip_name,
- "scd_data": eval(x.scd_data),
- "upl_time": x.upl_time.strftime("%Y-%m-%d %H:%M:%S")} for x in sta1]
- # 查询全部
- else:
- sta1 = SCDdata.objects.filter(equip_id=equip_id)
- print("sta1:",sta1)
- sta2 = [{"equip_name": x.equip_id.equip_name,
- "scd_data": eval(x.scd_data),
- "upl_time": x.upl_time.strftime("%Y-%m-%d %H:%M:%S")} for x in sta1]
- title = ["设备ID","设备名称","设备开关","工作状态","灯管状态","雨控状态",
- "温控状态","倾倒状态","定时(h)","电击次数","温度(℃)","湿度(%)","充电电压(V)","电池电压(V)","经度","纬度","上报时间"]
- book = xlwt.Workbook() # 创建一个excel对象
- sheet = book.add_sheet('Sheet1',cell_overwrite_ok=True) # 添加一个sheet页
- # --------------------------------------
- # pattern_top = xlwt.Pattern()
- # pattern_top.pattern = xlwt.Pattern.SOLID_PATTERN
- # pattern_top.pattern_fore_colour = 14
-
-
- # style = xlwt.XFStyle()
- # style.pattern = pattern_top
- # ---------------------------------------
- for i in range(len(title)): # 遍历列
- # sheet.write(0,i,title[i],style) # 将title数组中的字段写入到0行i列中
- sheet.write(0,i,title[i]) # 将title数组中的字段写入到0行i列中
- print(sta2)
- for x in range(len(sta2)): # 遍历列表
- if sta2[x]["equip_name"] == "":
- equip_name = "无"
- elif sta2[x]["equip_name"] != "":
- equip_name = sta2[x]["equip_name"]
- if sta2[x]["scd_data"]["ds"] == 0:
- ds = "关"
- elif sta2[x]["scd_data"]["ds"] != 0:
- ds = "开"
- if sta2[x]["scd_data"]["ws"] == 0:
- ws = "待机"
- elif sta2[x]["scd_data"]["ws"] == 1:
- ws = "工作"
- elif sta2[x]["scd_data"]["ws"] == 2:
- ws = "充电"
- if sta2[x]["scd_data"]["tbs"] == 0:
- tbs = "正常"
- elif sta2[x]["scd_data"]["tbs"] != 0:
- tbs = "保护"
- if sta2[x]["scd_data"]["rps"] == 0:
- rps = "正常"
- elif sta2[x]["scd_data"]["rps"] != 0:
- rps = "保护"
- if sta2[x]["scd_data"]["tps"] == 0:
- tps = "正常"
- elif sta2[x]["scd_data"]["tps"] != 0:
- tps = "保护"
- if sta2[x]["scd_data"]["dps"] == 0:
- dps = "正常"
- elif sta2[x]["scd_data"]["dps"] != 0:
- dps = "保护"
- if sta2[x]["scd_data"]["tt"] == 0:
- tt = "常亮"
- elif sta2[x]["scd_data"]["tt"] != 0:
- tt = sta2[x]["scd_data"]["tt"]
- sheet.write(x+1,0,equip_id) # 将equip_id写入到第x+1行,第0列中
- sheet.write(x+1,1,equip_name)
- sheet.write(x+1,2,ds) # 设备开关
- sheet.write(x+1,3,ws) # 工作状态
- sheet.write(x+1,4,tbs) # 灯管状态
- sheet.write(x+1,5,rps) # 雨控状态
- sheet.write(x+1,6,tps) # 温控状态
- sheet.write(x+1,7,dps) # 倾倒状态
- sheet.write(x+1,8,tt) # 定时
- sheet.write(x+1,9,sta2[x]["scd_data"]["ct"]) # 电击次数
- sheet.write(x+1,10,sta2[x]["scd_data"]["at"]) # 温度
- sheet.write(x+1,11,sta2[x]["scd_data"]["ah"]) # 湿度
- sheet.write(x+1,12,"%.2f"%(sta2[x]["scd_data"]["cv"]/1000)) # 充电电压
- sheet.write(x+1,13,"%.2f"%(sta2[x]["scd_data"]["bv"]/1000)) # 电池电压
- sheet.write(x+1,14,sta2[x]["scd_data"]["lng"]) # 经度
- sheet.write(x+1,15,sta2[x]["scd_data"]["lat"]) # 纬度
- sheet.write(x+1,16,sta2[x]["upl_time"]) # 上报时间
- sheet.col(0).width = 256 * 18
- sheet.col(12).width = 256 * 11
- sheet.col(13).width = 256 * 11
- sheet.col(16).width = 256 * 20
- # 写出到IO
- output = BytesIO()
- book.save(output)
- # 重新定位到开始
- output.seek(0)
- response = HttpResponse(content_type='application/vnd.ms-excel')
- response['Content-Disposition'] = 'attachment;filename=%s.xls'%filename
- response.write(output.getvalue())
- return response
- # book.save('demo.xls')
- # return HttpResponse(book)
-
-
- def post(self,request):
- pass
- # 测报灯数据导出接口
- class CBD_Data_Export(ListView):
- def get(self,request):
- equip_id = request.GET.get('id')
- print("请求数据的设备id:",equip_id)
- f_tbegin = request.GET.get('begin')
- f_tend = request.GET.get('end')
- filename = request.GET.get('filename')
- print("f_tbegin:", f_tbegin)
- print("f_tend:", f_tend)
- print("f_tbegin:", type(f_tbegin))
- print("f_tend:", type(f_tend))
- # 查询时间段
- if f_tbegin:
- 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]))
- print("start_date:", start_date)
- print("end_date:", end_date)
- sta1 = CBDdata.objects.filter(equip_id=equip_id, upl_time__range=(start_date, end_date))
- print("sta1:", sta1)
- sta2 = [{"equip_name": x.equip_id.equip_name,
- "cbd_data": eval(x.cbd_data),
- "upl_time": x.upl_time.strftime("%Y-%m-%d %H:%M:%S")} for x in sta1]
- # 查询全部
- else:
- sta1 = CBDdata.objects.filter(equip_id=equip_id)
- print("sta1:",sta1)
- sta2 = [{"equip_name": x.equip_id.equip_name,
- "cbd_data": eval(x.cbd_data),
- "upl_time": x.upl_time.strftime("%Y-%m-%d %H:%M:%S")} for x in sta1]
- title = ["设备ID","设备名称","环境温度(℃)","环境湿度(%)","加热仓温度(℃)","雨控状态",
- "温控状态","光控状态","经度","纬度","上报时间"]
- book = xlwt.Workbook() # 创建一个excel对象
- sheet = book.add_sheet('Sheet1',cell_overwrite_ok=True) # 添加一个sheet页
- for i in range(len(title)): # 遍历列
- sheet.write(0,i,title[i]) # 将title数组中的字段写入到0行i列中
- print(sta2)
- for x in range(len(sta2)): # 遍历列表
- if sta2[x]["equip_name"] == "":
- equip_name = "无"
- elif sta2[x]["equip_name"] != "":
- equip_name = sta2[x]["equip_name"]
- if sta2[x]["cbd_data"]["rps"] == 0:
- rps = "正常"
- elif sta2[x]["cbd_data"]["rps"] != 0:
- rps = "雨控"
- if sta2[x]["cbd_data"]["tps"] == 0:
- tps = "正常"
- elif sta2[x]["cbd_data"]["tps"] != 0:
- tps = "温控"
- if sta2[x]["cbd_data"]["lps"] == 0:
- lps = "正常"
- elif sta2[x]["cbd_data"]["lps"] != 0:
- lps = "光控"
- sheet.write(x+1,0,equip_id) # 将equip_id写入到第x+1行,第0列中
- sheet.write(x+1,1,equip_name)
- sheet.write(x+1,2,"%.1f"%(int(sta2[x]["cbd_data"]["at"])/10)) # 环境温度
- sheet.write(x+1,3,"%.1f"%(int(sta2[x]["cbd_data"]["ah"])/10)) # 环境湿度
- sheet.write(x+1,4,sta2[x]["cbd_data"]["hrt"]) # 加热仓温度
- sheet.write(x+1,5,rps) # 雨控状态
- sheet.write(x+1,6,tps) # 温控状态
- sheet.write(x+1,7,lps) # 光控状态
- sheet.write(x+1,8,sta2[x]["cbd_data"]["lng"]) # 经度
- sheet.write(x+1,9,sta2[x]["cbd_data"]["lat"]) # 纬度
- sheet.write(x+1,10,sta2[x]["upl_time"]) # 上报时间
- sheet.col(0).width = 256 * 18
- sheet.col(2).width = 256 * 11
- sheet.col(3).width = 256 * 11
- sheet.col(4).width = 256 * 13
- sheet.col(8).width = 256 * 11
- sheet.col(9).width = 256 * 11
- sheet.col(10).width = 256 * 20
- # 写出到IO
- output = BytesIO()
- book.save(output)
- # 重新定位到开始
- output.seek(0)
- response = HttpResponse(content_type='application/vnd.ms-excel')
- response['Content-Disposition'] = 'attachment;filename=%s.xls'%filename
- response.write(output.getvalue())
- return response
- # book.save('demo.xls')
- # return HttpResponse(book)
-
-
- def post(self,request):
- pass
- # 害虫识别接口
- class Pests_Identification(ListView):
- def get(self,request):
- pass
- def post(self,request):
- # img_addr = request.POST.get('img_addr')
- # photo_obj = CBDphoto.objects.get(addr=img_addr)
- # try:
- # data = {"result":photo_obj.indentify_result,
- # "image_addr":photo_obj.indentify_photo}
- # except:
- # data = {"result":"",
- # "image_addr":""}
- # data = json.dumps(data, cls=CJSONEncoder)
- # return HttpResponse(data)
- img_addr = request.POST.get('img_addr')
- photo_obj = CBDphoto.objects.get(addr=img_addr)
- url = 'http://60.166.14.184:9146/upload'
-
- # 2019-3-18测试用接口
- # 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)
- print(resp["returnResult"]["returnString"])
- data = {"image":resp["returnResult"]["returnImageUrl"], "result":resp["returnResult"]["returnString"]}
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- # 害虫识别接口丨新
- class Pests_Identification_New(ListView):
- def get(self,request):
- pass
- # C:\线上\yfwlw\cbd_img\868575027787516\2020\06\20200611095458.jpg
- def post(self,request):
- # img_addr = request.POST.get('img_addr')
- # photo_obj = CBDphoto.objects.get(addr=img_addr)
- # try:
- # data = {"result":photo_obj.indentify_result,
- # "image_addr":photo_obj.indentify_photo}
- # except:
- # data = {"result":"",
- # "image_addr":""}
- # data = json.dumps(data, cls=CJSONEncoder)
- # return HttpResponse(data)
- img_addr = request.POST.get('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)
- print("pest",resp["returnResult"]["returnString"])
- photo_obj.indentify_result = resp["returnResult"]["returnString"]
- photo_obj.save()
- except Exception as e:
- print(e)
- print("识别失败")
- data = "1"
- return HttpResponse(data)
- print(resp["returnResult"]["returnString"])
- data = {"image":resp["returnResult"]["returnImageUrl"], "result":resp["returnResult"]["returnString"]}
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- # 气象站报表管理类视图:
- class QXZreport_View(ListView):
- def get(self, request):
- current_user = request.session.get('username')
- current_user = MyUser.objects.get(username=current_user)
- if current_user.is_superuser == True:
- role = "superuser"
- else:
- role = "user"
- return render(request, 'reportmanage/qxz_report.html', context={"role":role})
- # 气象站分页接口
- class QXZ_Page(ListView):
- def get(self,request):
- current_user = request.user.username
- print("current_user:", current_user)
- current_user = MyUser.objects.get(username=current_user)
- page = request.GET.get('page')
- page = int(page)
- f_id = request.GET.get('f_id')
- print("f_id:", f_id)
- is_online = request.GET.get('is_online')
- etype = request.GET.get('etype')
- print("is_online------>>",is_online)
- print("etype------>>",etype)
- if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
- # 用户
- if f_id != "" and is_online != "":
- # equip_list = Equip.objects.filter(equip_type=5,equip_user=current_user, equip_id__contains=f_id).values()
- equip_list = QXZstatus_New.objects.filter(equip_id__equip_user=current_user, equip_id__equip_id__contains=f_id, is_online=is_online)
- elif f_id == "" and is_online != "":
- equip_list = QXZstatus_New.objects.filter(equip_id__equip_user=current_user, is_online=is_online)
- elif f_id != "" and is_online == "":
- equip_list = QXZstatus_New.objects.filter(equip_id__equip_user=current_user, equip_id__equip_id__contains=f_id)
- elif f_id == "" and is_online == "":
- # equip_list = Equip.objects.filter(equip_type=5,equip_user=current_user).values()
- equip_list = QXZstatus_New.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:
- # 代理商
- if f_id != "" and is_online != "":
- # equip_list = Equip.objects.filter(equip_type=5,equip_agency=current_user.user_agency, equip_id__contains=f_id).values()
- equip_list = QXZstatus_New.objects.filter(equip_id__equip_agency=current_user.user_agency, equip_id__equip_id__contains=f_id, is_online=is_online)
- elif f_id == "" and is_online != "":
- equip_list = QXZstatus_New.objects.filter(equip_id__equip_agency=current_user.user_agency, is_online=is_online)
- elif f_id != "" and is_online == "":
- equip_list = QXZstatus_New.objects.filter(equip_id__equip_agency=current_user.user_agency, equip_id__equip_id__contains=f_id)
- elif f_id == "" and is_online == "":
- # equip_list = Equip.objects.filter(equip_type=5,equip_agency=current_user.user_agency).values()
- equip_list = QXZstatus_New.objects.filter(equip_id__equip_agency=current_user.user_agency)
- else:
- # 管理员
- if f_id != "" and is_online != "":
- # equip_list = Equip.objects.filter(equip_type=5,equip_agency=current_user.user_agency, equip_id__contains=f_id).values()
- equip_list = QXZstatus_New.objects.filter(equip_id__equip_id__contains=f_id, is_online=is_online)
- elif f_id == "" and is_online != "":
- print("触发!!!")
- equip_list = QXZstatus_New.objects.filter(is_online=is_online)
- elif f_id != "" and is_online == "":
- equip_list = QXZstatus_New.objects.filter(equip_id__equip_id__contains=f_id)
- elif f_id == "" and is_online == "":
- equip_list = QXZstatus_New.objects.all()
- e_ids = []
- for x in equip_list:
- if etype != "":
- if len(x.equip_id_id) == int(etype):
- n_d = {"equip_name":x.equip_id.equip_name, "equip_id":x.equip_id_id, "is_online":x.is_online,"off_time":x.off_time}
- e_ids.append(n_d)
- else:
- n_d = {"equip_name":x.equip_id.equip_name, "equip_id":x.equip_id_id, "is_online":x.is_online,"off_time":x.off_time}
- e_ids.append(n_d)
- nums = len(e_ids)
- # print(nums)
- ids = e_ids[(10*(page-1)):(page*10)]
- data = {'ids': ids, 'nums': nums}
- print("!!!",data)
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- def post(self,request):
- pass
- # 气象站修改图片接口
- class QXZ_Photo(ListView):
- def get(self,request):
- pass
-
- def post(self,request):
- e_id = request.POST.get('id')
- qxz_sta = QXZstatus.objects.get(equip_id=e_id)
- qxz_photo = request.FILES['upicture']
- print("气象站图片:", qxz_photo)
- qxz_photo_dir = 'qxz_photo/'
- # 判断如果路径不存在,即创建路径
- if os.path.exists(qxz_photo_dir) == False:
- os.makedirs(qxz_photo_dir)
- img = Image.open(qxz_photo)
- img.save(qxz_photo_dir + e_id+".png")
- new_photo = qxz_photo_dir + e_id +".png"
- print("new_photo:",new_photo)
- # 数据库关联设备,并在照片的表中存入路径:
- qxz_sta.qxz_picture = new_photo
- qxz_sta.save()
- data = "0"
- return HttpResponse(data)
- # 气象站详情接口
- class QXZ_Detail(ListView):
- def get(self,request):
- qxz_dict_1 = copy.deepcopy(qxz_dict) # 如果不拷贝 后面折线图修改字典会导致字典内容变化 从而造成数据错误
- current_user = request.user.username
- print("current_user:", current_user)
- try:
- current_user = MyUser.objects.get(username=current_user)
- except:
- current_user = MyUser.objects.get(username="public")
- start_date = datetime.datetime.now() - datetime.timedelta(days=1)
- end_date = datetime.datetime.now()
- print("start_date:", start_date)
- print("end_date:", end_date)
- e_id = request.GET.get('id')
- sta1 = QXZdata.objects.filter(equip_id=e_id, upl_time__range=(start_date, end_date)).values()
- # print(len(eval(sta1[0]['qxz_data'])['data']))
- p_data = {"values":[], "times":[]}
- all_data = [] # 所有数据
- try:
- # 先遍历有几种类型的数据
- for a in range(len(eval(sta1[0]["qxz_data"])["data"])):
- # 再遍历24小时内的每条数据
- for x in sta1:
- # sta = {"qxz_data": x['qxz_data'], "upl_time": x['upl_time'],
- # "equip_id": x['equip_id_id']}
- qxzdata = eval(x["qxz_data"])
- # print(qxzdata['data'][a]['eValue'])
- p_data["name"]=qxzdata["data"][a]["eName"]
- p_data["values"].append(eval(qxzdata["data"][a]["eValue"]))
- # print(type(eval(qxzdata['data'][a]['eValue'])))
- p_data["ekey"]=qxzdata['data'][a]["eKey"]
- p_data["unit"] = qxz_dict_1[qxzdata["data"][a]["eNum"]]
- # print('p_data["unit"]',p_data["unit"])
- tt = json.dumps(x['upl_time'], cls=CJSONEncoder)
- p_data["times"].append(tt)
- p_data["min"] = min(p_data["values"])
- p_data["max"] = max(p_data["values"])
- p_data["min_time"] = p_data["times"][p_data["values"].index(min(p_data["values"]))]
- p_data["max_time"] = p_data["times"][p_data["values"].index(max(p_data["values"]))]
- all_data.append(p_data)
- p_data = {"values":[], "times":[]}
- except Exception as e:
- print(e)
- # print('-------------------',all_data)
- # print(sta2)
- dat1 = []
- try:
- sta2 = QXZstatus.objects.get(equip_id=e_id)
- for i in range(len((eval(sta2.qxz_status)["data"]))):
- if eval(sta2.qxz_status)['data'][i]["eNum"] == "163":
- continue
- dat1.append({"unit": qxz_dict_1[eval(sta2.qxz_status)['data'][i]["eNum"]],"equip_name": sta2.equip_id.equip_name,
- "upl_time": sta2.upl_time, "equip_id": sta2.equip_id_id, "eValue": eval(sta2.qxz_status)["data"][i]["eValue"],
- "eKey": eval(sta2.qxz_status)["data"][i]["eKey"], "qxz_picture": "%s"%(sta2.qxz_picture)})
- # print(eval(sta2.qxz_status)['data'][i]['eNum'])
- # print("dat1:",dat1)
- except Exception as exc:
- # dat1 = {"unit": "","equip_name": "",
- # "upl_time": "", "equip_id": "", "eValue": "",
- # "eKey": ""}
- # dat1 = []
- print(exc)
- print("dat1:",dat1)
- # imei = request.POST.get('imei')
- try:
- switch_obj = QXZswitchstatus.objects.get(equip_id=e_id)
- qxz_switch = switch_obj.qxz_switch
- except:
- qxz_switch = ""
- try:
- switch_name_obj = QXZswitchdata.objects.get(equip_id=e_id)
- switch_name = switch_name_obj.qxz_switch_data
- except:
- switch_name = ""
- try:
- timing_list = QXZTimingswitch.objects.get(equip_id=e_id).qxz_timing
- except:
- timing_list = ""
- try:
- auto_list = QXZAutoswitch.objects.get(equip_id_id=e_id).qxz_auto
- except:
- auto_list = ""
- data = {'new_data': dat1, 'all_data':all_data, 'qxz_switch':qxz_switch, 'switch_name':switch_name, 'timing_list':timing_list, 'auto_list':auto_list}
- data = json.dumps(data, cls=CJSONEncoder)
- User_Log.objects.create(log_user=current_user,
- log_ip=request.META['REMOTE_ADDR'], log_desc='设备管理-气象站')
- return HttpResponse(data)
- def post(self,request):
- pass
- # 气象站报表详情折线图:
- class QXZ_Report_Detail_Chart(ListView):
- def get(self, request):
- pass
- def post(self, request):
- qxz_dict_2 = copy.deepcopy(qxz_dict)
- equip_id = request.POST.get('id')
- print("equip_id:", equip_id)
- f_tbegin = request.POST.get('begin')
- f_tend = request.POST.get('end')
- print("f_tbegin:", f_tbegin)
- print("f_tend:", f_tend)
- current_equip = Equip.objects.get(equip_id=equip_id)
- dat = []
- if f_tbegin:
- 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]))
- print("start_date:", start_date)
- print("end_date:", end_date)
- sta1 = QXZdata.objects.filter(
- equip_id=equip_id, upl_time__range=(start_date, end_date)).values()
- for x in sta1:
- sta = {"upl_time": x["upl_time"],"e_len": len((eval(x["qxz_data"])["data"])),
- "unit": [], "equip_id": x["equip_id_id"]}
- for i in eval(x["qxz_data"])["data"]:
- if i["eNum"] == "163":
- continue
- qxz_dict_2[i["eNum"]][0] = i["eValue"] # 将气象站字典列表里的索引值替换为 数据的eValue
- d = copy.deepcopy(qxz_dict_2[i["eNum"]]) # 此处有坑 如果不深拷贝 后一次 qxz_dict[i["eNum"]][0] = i["eValue"] 赋值会把上次赋值替换掉
- ek = i["eKey"]
- d.append(ek)
- d.append(i["eNum"])
- sta["unit"].append(d)
- # qxz_dict[eval(x.qxz_data)['data'][0]["eNum"]]
- # print(sta["unit"])
- dat.append(sta)
- # print(dat)
- data = {"e_name": current_equip.equip_name, "dat": dat}
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- # 获取当前日期:
- now_time = datetime.datetime.now()
- print("当前日期为:",now_time)
- print("当前月为:",now_time.month)
- sta1 = QXZdata.objects.filter(equip_id=equip_id, upl_time__month=now_time.month).values()
- for x in sta1:
- sta = {"upl_time": x["upl_time"],"e_len": len((eval(x["qxz_data"])["data"])),
- "unit": [], "equip_id": x["equip_id_id"]}
- for i in eval(x["qxz_data"])["data"]:
- if i["eNum"] == "163":
- continue
- qxz_dict_2[i["eNum"]][0] = i["eValue"]
- d = copy.deepcopy(qxz_dict_2[i["eNum"]]) # 此处有坑 如果不深拷贝 后一次 qxz_dict[i["eNum"]][0] = i["eValue"] 赋值会把上次赋值替换掉
- ek = i["eKey"]
- d.append(ek)
- d.append(i["eNum"])
- sta["unit"].append(d)
- # qxz_dict[eval(x.qxz_data)['data'][0]["eNum"]]
- dat.append(sta)
- # print(dat)
- data = {"e_name": current_equip.equip_name, "dat": dat}
- # print("------",data)
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
-
- # 气象站列表详情
- class QXZ_Report_Detail(ListView):
- def get(self, request):
- qxz_dict_3 = copy.deepcopy(qxz_dict)
- page = int(request.GET.get('page'))
- print("page:", page)
- equip_id = request.GET.get('id')
- print("equip_id:", equip_id)
- f_tbegin = request.GET.get('begin')
- f_tend = request.GET.get('end')
- print("f_tbegin:", f_tbegin)
- print("f_tend:", f_tend)
- current_equip = Equip.objects.get(equip_id=equip_id)
- dat = []
- if f_tbegin:
- 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]))
- print("start_date:", start_date)
- print("end_date:", end_date)
- sta1 = QXZdata.objects.filter(
- equip_id=equip_id, upl_time__range=(start_date, end_date)).values()
- for x in sta1:
- sta = {"upl_time": x["upl_time"], "unit": [], "equip_id": x["equip_id_id"]}
- for i in eval(x["qxz_data"])["data"]:
- if i["eNum"] == "163":
- continue
- qxz_dict_3[i["eNum"]][0] = i["eValue"]
- d = copy.deepcopy(qxz_dict_3[i["eNum"]]) # 此处有坑 如果不深拷贝 后一次 qxz_dict[i["eNum"]][0] = i["eValue"] 赋值会把上次赋值替换掉
- ek = i["eKey"]
- d.append(ek)
- sta["unit"].append(d)
- # qxz_dict[eval(x.qxz_data)['data'][0]["eNum"]]
- dat.append(sta)
- nums = len(dat)
- dat = dat[(10*(page-1)):(page*10)]
- data = {"dat": dat, "nums":nums}
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- sta1 = QXZdata.objects.filter(equip_id=equip_id).values()
- for x in sta1:
- sta = {"upl_time": x["upl_time"], "unit": [], "equip_id": x["equip_id_id"]}
- for i in eval(x["qxz_data"])["data"]:
- if i["eNum"] == "163":
- continue
- qxz_dict_3[i["eNum"]][0] = i["eValue"]
- d = copy.deepcopy(qxz_dict_3[i["eNum"]]) # 此处有坑 如果不深拷贝 后一次 qxz_dict[i["eNum"]][0] = i["eValue"] 赋值会把上次赋值替换掉
- ek = i["eKey"]
- d.append(ek)
- sta["unit"].append(d)
- # qxz_dict[eval(x.qxz_data)['data'][0]["eNum"]]
- dat.append(sta)
- nums = len(dat)
- dat = dat[(10*(page-1)):(page*10)]
- data = {"dat": dat, "nums":nums}
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- # 孢子仪报表管理视图:
- @csrf_exempt
- def BZY_Report(request):
-
- # current_user = request.session.get('username')
- # print("current_user:", current_user)
- # current_user = MyUser.objects.get(username=current_user)
-
- current_user = request.user.username
- print("current_user:", current_user)
- # current_user = MyUser.objects.get(username=current_user)
- try:
- current_user = MyUser.objects.get(username=current_user)
- except:
- current_user = MyUser.objects.get(username="public")
- 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_type=7, equip_user=current_user)
- 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_type=7, equip_agency=current_user.user_agency)
- else:
- print("---管理员")
- equip_list = Equip.objects.filter(equip_type=7)
- data = []
- for i in equip_list:
- sta1 = BZYstatus.objects.filter(
- equip_id=i.equip_id)
- for x in sta1:
- sta2 = {"equip_name": x.equip_id.equip_name,
- "bzy_status": x.bzy_status, "upl_time": x.upl_time,"equip_id":x.equip_id.equip_id}
- data.append(sta2)
- if request.method == 'GET':
- if request.is_ajax():
- req = request.GET.get('req')
- print("req:", req)
- if req == "reqdat":
- print("---post 请求数据!")
- page = int(request.GET.get('page'))
- print("page:", page)
- data = data[(10*(page-1)):(page*10)]
- # data = serializers.serialize("json", equip_list)
- # print("data:", data)
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- else:
- nums = len(data)
- User_Log.objects.create(log_user=current_user,
- log_ip=request.META['REMOTE_ADDR'], log_desc='报表管理-孢子仪')
- return render(request, 'reportmanage/bzy_report.html', context={"nums": nums})
- elif request.method == 'POST':
- req = request.POST.get('req')
- print("req:", req)
- if req == "filter":
- print("---筛选!")
- page = int(request.POST.get('page'))
- print("page:", page)
- ename = request.POST.get('ename')
- print("ename:", ename)
- f_id = request.POST.get('f_id')
- print("f_id:", f_id)
- current_user = request.session.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:
- print("---不是管理员")
- if ename == "" and f_id == "":
- equip_list = Equip.objects.filter(equip_type=7, equip_user=current_user)
- elif ename == "" and f_id != "":
- equip_list = Equip.objects.filter(equip_type=7, equip_user=current_user, equip_id__contains=f_id)
- elif ename != "" and f_id == "":
- equip_list = Equip.objects.filter(equip_type=7, equip_user=current_user, equip_name__contains=ename)
- elif ename != "" and f_id != "":
- equip_list = Equip.objects.filter(equip_type=7, equip_user=current_user, equip_name__contains=ename,equip_id__contains=f_id)
- elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
- print("---代理商")
- if ename == "" and f_id == "":
- equip_list = Equip.objects.filter(equip_type=7, equip_agency=current_user.user_agency)
- elif ename == "" and f_id != "":
- equip_list = Equip.objects.filter(equip_type=7, equip_agency=current_user.user_agency, equip_id__contains=f_id)
- elif ename != "" and f_id == "":
- equip_list = Equip.objects.filter(equip_type=7, equip_agency=current_user.user_agency, equip_name__contains=ename)
- elif ename != "" and f_id != "":
- equip_list = Equip.objects.filter(equip_type=7, equip_agency=current_user.user_agency, equip_name__contains=ename,equip_id__contains=f_id)
- else:
- print("---管理员")
- if ename == "" and f_id == "":
- equip_list = Equip.objects.filter(equip_type=7)
- elif ename == "" and f_id != "":
- equip_list = Equip.objects.filter(equip_type=7, equip_id__contains=f_id)
- elif ename != "" and f_id == "":
- equip_list = Equip.objects.filter(equip_type=7, equip_name__contains=ename)
- elif ename != "" and f_id != "":
- equip_list = Equip.objects.filter(equip_type=7, equip_name__contains=ename,equip_id__contains=f_id)
- dat = []
- for i in equip_list:
- sta1 = BZYstatus.objects.filter(
- equip_id=i.equip_id)
- for x in sta1:
- sta2 = {"equip_name": x.equip_id.equip_name,
- "bzy_status": x.bzy_status, "upl_time": x.upl_time,"equip_id":x.equip_id.equip_id}
- dat.append(sta2)
- # print('-----------------------',x.equip_id.equip_id)
- nums = len(dat)
- print("nums:", nums)
- dat = dat[(10*(page-1)):(page*10)]
- data = {'dat': dat, 'nums': nums}
- # print("data:",data)
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- # 孢子仪上传图片测试页面:
- @method_decorator(csrf_exempt, name='dispatch')
- def bzy_photoview(request):
- if request.method == 'GET':
- print("-----image preview!-----")
- imei = request.GET.get('imei')
- print("imei:", imei)
- nums = BZYphoto.objects.filter(equip_id=imei).count()
- print("nums:", nums)
- iccid = BZYstatus.objects.get(equip_id=imei).simid
- dver = eval(BZYstatus.objects.get(equip_id=imei).bzy_status)["dver"]
- return render(request, 'reportmanage/bzy_image.html', context={"nums": nums, "imei": imei, "iccid":iccid, "dver":dver})
- if request.method == 'POST':
- print("-----image upload request!-----")
- imei = request.GET.get('imei')
- print("imei:", imei)
- # 判断设备是否存在:
- if Equip.objects.filter(equip_id=imei).exists():
- length = request.META['CONTENT_LENGTH']
- print("length:", length)
- # 以当前时间命名图片
- now_time = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
- pic_name = now_time + '.jpg'
- print("pic_name:", pic_name)
- pic_dir = 'bzy_img/' + imei + '/' + \
- pic_name[0:4] + '/' + pic_name[4:6] + '/'
- if os.path.exists(pic_dir) == False:
- # 文件夹加权限
- os.makedirs(pic_dir)
- # os.chmod(pic_dir, stat.S_IRWXU|stat.S_IRWXG|stat.S_IRWXO)
- print("图片路径:", pic_dir + pic_name)
- # img.save(pic_dir+pic_name)
- with open(pic_dir + pic_name, "wb") as file:
- file.write(request.body)
- # print("request.body:", request.body)
- # 数据库关联设备,并在照片的表中存入路径:
- equip = Equip.objects.get(equip_id=imei)
- BZYphoto.objects.create(equip_id=equip, addr=pic_dir + pic_name)
- return HttpResponse("-----image upload success!-----")
- else:
- return HttpResponse("-----image upload failed because this imei is not exists!-----")
- # 孢子仪报表详视图:
- @method_decorator(csrf_exempt, name='dispatch')
- class BZY_Report_Detail(ListView):
- def get(self, request):
- equip_id = request.GET.get('id')
- print("请求数据,设备id:", equip_id)
- nums = BZYdata.objects.filter(equip_id=equip_id).count()
- print("nums:", nums)
- lng = eval(BZYstatus.objects.get(equip_id=equip_id).bzy_status)["lng"]
- lat = eval(BZYstatus.objects.get(equip_id=equip_id).bzy_status)["lat"]
- return render(request, 'reportmanage/bzy_report_detail.html', context={"equip_id": equip_id, "nums": nums, "lng":lng, "lat":lat})
- def post(self, request):
- req = request.POST.get('req')
- if req == "data":
- equip_id = request.POST.get('id')
- page = int(request.POST.get('page'))
- print("page:", page)
- print("请求数据的设备id:", equip_id)
- # data = {'dat':"",'pages':""}
- sta1 = BZYdata.objects.filter(equip_id=equip_id)[
- (10*(page-1)):(page*10)]
- sta2 = [{"equip_name": x.equip_id.equip_name,
- "bzy_data": x.bzy_data,
- "upl_time": x.upl_time} for x in sta1]
- data = json.dumps(sta2, cls=CJSONEncoder)
- # data['dat'] = sta2
- # data['pages'] = pages
- # data = json.dumps(data, cls=CJSONEncoder)
- # print(data)
- return HttpResponse(data)
- elif req == "filter":
- equip_id = request.POST.get('id')
- page = int(request.POST.get('page'))
- print("equip_id:", equip_id)
- print("page:", page)
- print("请求数据的设备id:", equip_id)
- f_tbegin = request.POST.get('begin')
- f_tend = request.POST.get('end')
- print("f_tbegin:", f_tbegin)
- print("f_tend:", f_tend)
- 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]))
- print("start_date:", start_date)
- print("end_date:", end_date)
- sta1 = BZYdata.objects.filter(equip_id=equip_id, upl_time__range=(start_date, end_date))
- print("sta1:", sta1)
- sta2 = [{"equip_name": x.equip_id.equip_name,
- "bzy_data": x.bzy_data,
- "upl_time": x.upl_time} for x in sta1]
- nums = len(sta2)
- dat = sta2[(10*(page-1)):(page*10)]
- data = {'dat': dat, 'nums': nums}
- # print("data:",data)
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- #孢子仪孢子统计页面
- class BZY_Report_Statistics(ListView):
- def get(self, request):
- equip_id = request.GET.get('id')
- return render(request, 'reportmanage/bzy_report_statistics.html', context={"equip_id": equip_id})
-
-
- # 孢子仪报表详情折线图:
- class BZY_Report_Detail_Chart(ListView):
- def get(self, request):
- pass
- def post(self, request):
- req = request.POST.get('req')
- if req == "data":
- equip_id = request.POST.get('id')
- print("equip_id:", equip_id)
- # 获取当前日期:
- now_time = datetime.datetime.now()
- print("当前日期为:",now_time)
- print("当前月为:",now_time.month)
- sta1 = BZYdata.objects.filter(equip_id=equip_id,upl_time__month=now_time.month)
- sta2 = []
- for x in sta1:
- # if eval(x.bzy_data)['pre_temp'] > 100 or eval(x.bzy_data)['pre_temp'] < 0:
- # pre_temp = 20
- # else:
- pre_temp = eval(x.bzy_data)['pre_temp']
- sta2.append({"pre_temp": pre_temp,
- "ah": eval(x.bzy_data)['ah'],
- "at": eval(x.bzy_data)['at'],
- "tim": x.upl_time})
- data = json.dumps(sta2, cls=CJSONEncoder)
- # print("data:", data)
- return HttpResponse(data)
- elif req == "filter":
- equip_id = request.POST.get('id')
- print("equip_id:", equip_id)
- f_tbegin = request.POST.get('begin')
- f_tend = request.POST.get('end')
- print("f_tbegin:", f_tbegin)
- print("f_tend:", f_tend)
- 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]))
- print("start_date:", start_date)
- print("end_date:", end_date)
- sta1 = BZYdata.objects.filter(
- equip_id=equip_id, upl_time__range=(start_date, end_date))
- sta2 = []
- for x in sta1:
- pre_temp = eval(x.bzy_data)['pre_temp']
- sta2.append({"pre_temp": pre_temp,
- "ah": eval(x.bzy_data)['ah'],
- "at": eval(x.bzy_data)['at'],
- "tim": x.upl_time})
- data = json.dumps(sta2, cls=CJSONEncoder)
- # print("data:",data)
- return HttpResponse(data)
- # 孢子仪图片列表视图:
- @csrf_exempt
- def bzy_imagelistview(request):
- if request.method == 'GET':
- print("-----image list view!-----")
- imei = request.GET.get('imei')
- print("imei:", imei)
- # 获得当前页:
- page = int(request.GET.get('page'))
- print("page:", page)
- equip_name = Equip.objects.get(equip_id=imei).equip_name
- # 当前用户:返回用户,前端判断是否显示删除图片按钮
- current_user = request.session.get('username')
- print("current_user:", current_user)
- current_user = MyUser.objects.get(username=current_user)
- img = BZYphoto.objects.filter(equip_id=imei)[(8*(page-1)):(page*8)]
- equip_name = Equip.objects.get(equip_id=imei).equip_name
- return render(request, 'reportmanage/bzy_imageList.html', context={"img": img, "equip_name": equip_name, "current_user": current_user,'imei':imei})
- # 孢子仪删除图片接口:
- class BZY_Image_Delete(ListView):
- def get(self, request):
- pass
- def post(self, request):
- print("-----image delete!-----")
- imei = request.POST.get('imei')
- img_name = request.POST.get('addr')
- img_name = img_name.replace('bzy/', '')
- print("img_name:",img_name)
- print("imei:",imei)
- if os.path.exists(img_name) == True:
- # 删除图片文件
- os.remove(img_name)
- # 删除数据库照片列表中,照片路径:
- try:
- BZYphoto.objects.filter(equip_id=imei, addr=img_name).delete()
- print("-----image delete ok!-----")
- data = "1"
- return HttpResponse(data)
- except:
- print("-----image delete failed!-----")
- data = "0"
- return HttpResponse(data)
- else:
- # 照片在数据库里不存在,但是数据库有路径的情况会删除不掉
- # 因此不管何时都删除数据库路径
- try:
- BZYphoto.objects.filter(equip_id=imei, addr=img_name).delete()
- print("-----image delete ok!-----")
- except:
- pass
- print("-----image not exist!-----")
- data = "0"
- return HttpResponse(data)
- # 孢子仪图片描述接口:
- @method_decorator(csrf_exempt, name='dispatch')
- class BZY_Image_Desc(ListView):
- def get(self, request):
- img_name = request.POST.get('addr')
- print('img_name:',img_name)
- try:
- obj = BZYphoto.objects.get(addr=img_name)
- data = obj.describe
- except Exception as e:
- print(e)
- data = ""
- data = json.dumps(data, cls=CJSONEncoder)
- 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()
- print("-----image add describe ok!-----")
- data = "0"
- return HttpResponse(data)
- except Exception as e:
- print("-----image add describe failed!-----")
- print("=========",e)
- data = "1"
- return HttpResponse(data)
- # 孢子仪数据导出接口
- class BZY_Data_Export(ListView):
- def get(self,request):
- equip_id = request.GET.get('id')
- print("请求数据的设备id:",equip_id)
- f_tbegin = request.GET.get('begin')
- f_tend = request.GET.get('end')
- filename = request.GET.get('filename')
- print("f_tbegin:", f_tbegin)
- print("f_tend:", f_tend)
- print("f_tbegin:", type(f_tbegin))
- print("f_tend:", type(f_tend))
- # 查询时间段
- if f_tbegin:
- 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]))
- print("start_date:", start_date)
- print("end_date:", end_date)
- sta1 = BZYdata.objects.filter(equip_id=equip_id, upl_time__range=(start_date, end_date))
- print("sta1:", sta1)
- sta2 = [{"equip_name": x.equip_id.equip_name,
- "bzy_data": eval(x.bzy_data),
- "upl_time": x.upl_time.strftime("%Y-%m-%d %H:%M:%S")} for x in sta1]
- # 查询全部
- else:
- sta1 = BZYdata.objects.filter(equip_id=equip_id)
- print("sta1:",sta1)
- sta2 = [{"equip_name": x.equip_id.equip_name,
- "bzy_data": eval(x.bzy_data),
- "upl_time": x.upl_time.strftime("%Y-%m-%d %H:%M:%S")} for x in sta1]
- title = ["环境温度(℃)","环境湿度(%)","保温仓设定温度(℃)","保温仓当前温度(℃)","设备开关","电池状态","摄像头状态",
- "电压(V)","海拔高度","信号强度","设备版本","上报时间"]
- book = xlwt.Workbook() # 创建一个excel对象
- sheet = book.add_sheet('Sheet1',cell_overwrite_ok=True) # 添加一个sheet页
- sheet.write_merge(0, 0, 0, 11, '%s设备数据'%equip_id)
- for i in range(len(title)): # 遍历列
- sheet.write(1,i,title[i]) # 将title数组中的字段写入到0行i列中
- print(sta2)
- for x in range(len(sta2)): # 遍历列表
- if sta2[x]["equip_name"] == "":
- equip_name = "无"
- elif sta2[x]["equip_name"] != "":
- equip_name = sta2[x]["equip_name"]
- if sta2[x]["bzy_data"]["on_off"] == 0:
- on_off = "关闭"
- elif sta2[x]["bzy_data"]["on_off"] != 0:
- on_off = "开启"
- if sta2[x]["bzy_data"]["bat_sta"] == 0:
- bat_sta = "正常"
- elif sta2[x]["bzy_data"]["bat_sta"] != 0:
- bat_sta = "电量过低"
- if sta2[x]["bzy_data"]["usb_sta"] == 0:
- usb_sta = "正常"
- elif sta2[x]["bzy_data"]["usb_sta"] != 0:
- usb_sta = "异常"
- if sta2[x]["bzy_data"]["alti"] != "":
- alti = sta2[x]["bzy_data"]["alti"]
- elif sta2[x]["bzy_data"]["alti"] == "":
- alti = "暂无"
- sheet.write(x+2,0,sta2[x]["bzy_data"]["at"]) # 将环境温度写入到第x+1行,第0列中
- sheet.write(x+2,1,sta2[x]["bzy_data"]["ah"])
- sheet.write(x+2,2,sta2[x]["bzy_data"]["set_temp"]) # 保温仓设定温度
- sheet.write(x+2,3,sta2[x]["bzy_data"]["pre_temp"]) # 保温仓当前温度
- sheet.write(x+2,4,on_off) # 设备开关
- sheet.write(x+2,5,bat_sta) # 电池状态
- sheet.write(x+2,6,usb_sta) # 摄像头状态
- sheet.write(x+2,7,sta2[x]["bzy_data"]["v_bat"]) # 电压
- sheet.write(x+2,8,alti) # 海拔高度
- sheet.write(x+2,9,sta2[x]["bzy_data"]["csq"]) # 信号强度
- sheet.write(x+2,10,sta2[x]["bzy_data"]["dver"]) # 设备版本
- sheet.write(x+2,11,sta2[x]["upl_time"]) # 上报时间
- sheet.col(2).width = 256 * 18
- sheet.col(3).width = 256 * 18
- sheet.col(6).width = 256 * 11
- sheet.col(11).width = 256 * 18
- # 写出到IO
- output = BytesIO()
- book.save(output)
- # 重新定位到开始
- output.seek(0)
- response = HttpResponse(content_type='application/vnd.ms-excel')
- response['Content-Disposition'] = 'attachment;filename=%s.xls'%filename
- response.write(output.getvalue())
- return response
-
-
- def post(self,request):
- pass
- # 自动识别后的害虫统计接口:
- @method_decorator(csrf_exempt, name='dispatch')
- class Pest_Statis(ListView):
- def get(self,request):
- equip_id = request.GET.get('id')
- nums = CBDphoto.objects.filter(equip_id=equip_id).count()
- print("nums:", nums)
- current_user = request.session.get('username')
- return render(request, 'reportmanage/cbd_pest_data.html', context={"equip_id":equip_id,"nums":nums,"username":current_user})
- def post(self,request):
- e_id = request.POST.get('e_id')
- tbegin = request.POST.get('tbegin')
- tend = request.POST.get('tend')
- req = request.POST.get('req')
- print('e_id:',e_id)
- print("---折线图")
- one_month = datetime.timedelta(days=30)
- one_month_later = datetime.datetime.now() - one_month
- now_time = datetime.datetime.now()
- print("当前日期为:",now_time)
- sta1 = CBDphoto.objects.filter(equip_id=e_id, upl_time__range=(one_month_later, now_time))
- sta3 = CBDdata.objects.filter(equip_id=e_id, upl_time__range=(one_month_later, now_time))
- if req == "filter":
- if tbegin:
- print("-------按日期筛选!")
- print("tbegin:", tbegin)
- print("tend:", tend)
- # page = request.POST.get('page')
- begindate = re.findall(r"\d+\.?\d*", tbegin)
- enddate = re.findall(r"\d+\.?\d*", 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]))
- print("start_date:", start_date)
- print("end_date:", end_date)
- sta1 = CBDphoto.objects.filter(equip_id=e_id, upl_time__range=(start_date, end_date))
- print("!!!!!",sta1.count())
- dat = []
- tim = []
- cbd_data = []
- pest_kind = []
- for x in sta1:
- # print(x.indentify_result)
- if x.indentify_result != None and x.indentify_result != "":
- pest_reslut = x.indentify_result.split('#')
- for i in pest_reslut:
- i_result = i.split(',')
- # print(i_result)
- if i_result[0] not in pest_kind:
- # print(i[0])
- pest_kind.append(i_result[0])
- sta2 = {"time":x.upl_time,"result":x.indentify_result}
- tim.append(x.upl_time.strftime("%Y-%m-%d %H:%M:%S"))
- # if x.indentify_result:
- dat.append(sta2)
- # for i in sta3:
- for i in sta1:
- # sta4 = {"at":eval(i.cbd_data)["at"],"ah":eval(i.cbd_data)["ah"],"upl_time":i.upl_time}
- sta4 = {"at":i.at,"ah":i.ah,"upl_time":i.upl_time}
- tim.append(i.upl_time.strftime("%Y-%m-%d %H:%M:%S"))
- cbd_data.append(sta4)
- tim = sorted(tim)
- data = {"dat":dat,"kind":pest_kind,"cbd_data":cbd_data,"tim":tim}
- # print("!!!!!!!!!!!!!!!",pest_kind)
- data = json.dumps(data, cls=CJSONEncoder)
- # print("data:",data)
- return HttpResponse(data)
- # 自动识别后的害虫统计接口:
- @method_decorator(csrf_exempt, name='dispatch')
- class Pest_Statis_Form(ListView):
- def get(self,request):
- pass
- def post(self,request):
- e_id = request.POST.get('e_id')
- tbegin = request.POST.get('tbegin')
- tend = request.POST.get('tend')
- req = request.POST.get('req')
- pest = request.POST.get('pestCategory')
- print('e_id:',e_id)
- print('-=-=-=-=-=-=-=-')
- # 统计图
- print("---统计图")
- page = request.POST.get('page')
- page = int(request.POST.get('page'))
- print("page:", page)
- sta1 = CBDphoto.objects.filter(equip_id=e_id)
- if req == "filter":
- page = int(request.POST.get('page'))
- if tbegin:
- print("-------按日期筛选!")
- print("tbegin:", tbegin)
- print("tend:", tend)
- begindate = re.findall(r"\d+\.?\d*", tbegin)
- enddate = re.findall(r"\d+\.?\d*", 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]))
- print("start_date:", start_date)
- print("end_date:", end_date)
- sta1 = CBDphoto.objects.filter(equip_id=e_id, upl_time__range=(start_date, end_date))
- print("!!!!!",sta1.count())
- dat = []
- pest_kind = []
- for x in sta1:
- # print(x.indentify_result)
- if x.indentify_result != None and x.indentify_result != "":
- pest_reslut = x.indentify_result.split('#')
- for i in pest_reslut:
- i_result = i.split(',')
- # print(i_result)
- if i_result[0] not in pest_kind:
- # print(i[0])
- pest_kind.append(i_result[0])
- sta2 = {"time":x.upl_time,"pest":i_result[0],"pestnum":i_result[1]}
- dat.append(sta2)
- if pest:
- dat = []
- print("-------------pest",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 i_result[0] == pest:
- sta2 = {"time":x.upl_time,"pest":i_result[0],"pestnum":i_result[1]}
- dat.append(sta2)
- nums = len(dat)
- print("-------------------------",type(page))
- dat = dat[(10*(page-1)):(page*10)]
- data = {"dat":dat,"kind":pest_kind,"nums":nums}
- data = json.dumps(data, cls=CJSONEncoder)
- # print("data:",data)
- return HttpResponse(data)
- # 害虫统计数据导出接口
- class Pest_Export(ListView):
- def get(self,request):
- equip_id = request.GET.get('id')
- print("请求数据的设备id:",equip_id)
- f_tbegin = request.GET.get('begin')
- f_tend = request.GET.get('end')
- filename = request.GET.get('filename')
- print("f_tbegin:", f_tbegin)
- print("f_tend:", f_tend)
- print("f_tbegin:", type(f_tbegin))
- print("f_tend:", type(f_tend))
- # 查询时间段
- if f_tbegin:
- 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]))
- print("start_date:", start_date)
- print("end_date:", end_date)
- sta1 = CBDphoto.objects.filter(equip_id=equip_id, upl_time__range=(start_date, end_date))
- print("sta1:", sta1)
- # 查询全部
- else:
- sta1 = CBDphoto.objects.filter(equip_id=equip_id)
- print("sta1:",sta1)
- sta2 = {}
- 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]] not in sta2:
- sta2[insect_dict_new[i_result[0]]] = int(i_result[1])
- else:
- sta2[insect_dict_new[i_result[0]]] = sta2[insect_dict_new[i_result[0]]] + int(i_result[1])
- # sta2.append({"pest":insect_dict_new[i_result[0]],"pest_num":i_result[1],"time":x.upl_time.strftime('%Y-%m-%d %H:%M:%S')})
- title = ["害虫名称","害虫数量"]
- book = xlwt.Workbook() # 创建一个excel对象
- sheet = book.add_sheet('Sheet1',cell_overwrite_ok=True) # 添加一个sheet页
- sheet.write_merge(0, 0, 0, 3, '%s设备数据'%equip_id)
- if f_tbegin:
- sheet.write_merge(1, 1, 0, 3, "%s-%s"%(start_date,end_date))
- else:
- sheet.write_merge(1, 1, 0, 3, "该设备全部数据")
- for i in range(len(title)): # 遍历列
- sheet.write(2,i,title[i]) # 将title数组中的字段写入到0行i列中
- # print(sta2)
- a = 0
- for x in sta2: # 遍历列表
-
- sheet.write(a+3,0,x)
- sheet.write(a+3,1,sta2[x])
- a += 1
- sheet.col(0).width = 256 * 18
- # 写出到IO
- output = BytesIO()
- book.save(output)
- # 重新定位到开始
- output.seek(0)
- response = HttpResponse(content_type='application/vnd.ms-excel')
- response['Content-Disposition'] = 'attachment;filename=%s.xls'%filename
- response.write(output.getvalue())
- return response
-
-
- def post(self,request):
- pass
- # 害虫统计和温湿度对应折线图
- class Pest_At_Ah(ListView):
- def get(self,request):
- pass
- def post(self,request):
- e_id = request.POST.get("e_id")
- tbegin = request.POST.get('tbegin')
- tend = request.POST.get('tend')
- sta1 = CBDphoto.objects.filter(equip_id=e_id)
- if tbegin:
- print("-------按日期筛选!")
- print("tbegin:", tbegin)
- print("tend:", tend)
- begindate = re.findall(r"\d+\.?\d*", tbegin)
- enddate = re.findall(r"\d+\.?\d*", 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]))
- print("start_date:", start_date)
- print("end_date:", end_date)
- sta1 = CBDphoto.objects.filter(equip_id=e_id, upl_time__range=(start_date, end_date))
- print("!!!!!",sta1.count())
- dat = []
- pest_kind = []
- for x in sta1:
- # print(x.indentify_result)
- if x.indentify_result != None and x.indentify_result != "":
- pest_reslut = x.indentify_result.split('#')
- for i in pest_reslut:
- i_result = i.split(',')
- # print(i_result)
- if i_result[0] not in pest_kind:
- # print(i[0])
- pest_kind.append(i_result[0])
- sta2 = {"time":x.upl_time,"result":x.indentify_result,"at":x.at,"ah":x.ah}
- # if x.indentify_result:
- dat.append(sta2)
- try:
- msg_conf = Msg_Conf.objects.get(equip_id=e_id).conf
- except:
- msg_conf = ""
- nums = len(dat)
- data = {"dat":dat,"kind":pest_kind,"nums":nums,"msg_conf":msg_conf}
- # print("!!!!!!!!!!!!!!!",pest_kind)
- data = json.dumps(data, cls=CJSONEncoder)
- # print("data:",data)
- return HttpResponse(data)
- # 害虫统计和温湿度对应折线图
- class Pest_At_Ah_1(ListView):
- def get(self,request):
- pass
- def post(self,request):
- e_id = request.POST.get("e_id")
- tbegin = request.POST.get('tbegin')
- tend = request.POST.get('tend')
- one_month = datetime.timedelta(days=30)
- one_month_later = datetime.datetime.now() - one_month
- now_time = datetime.datetime.now()
- # xy_list = Trapdata.objects.filter(equip_id=e_id, upl_time__range=(one_month_later, now_time))
- sta1 = CBDphoto.objects.filter(equip_id=e_id, upl_time__range=(one_month_later, now_time))
- sta3 = CBDdata.objects.filter(equip_id=e_id, upl_time__range=(one_month_later, now_time))
- # sta1 = CBDphoto.objects.filter(equip_id=e_id)
- # sta3 = CBDdata.objects.filter(equip_id=e_id)
- if tbegin:
- print("-------按日期筛选!")
- print("tbegin:", tbegin)
- print("tend:", tend)
- begindate = re.findall(r"\d+\.?\d*", tbegin)
- enddate = re.findall(r"\d+\.?\d*", 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]))
- print("start_date:", start_date)
- print("end_date:", end_date)
- sta1 = CBDphoto.objects.filter(equip_id=e_id, upl_time__range=(start_date, end_date))
- print("!!!!!",sta1.count())
- sta3 = CBDdata.objects.filter(equip_id=e_id, upl_time__range=(start_date, end_date))
- dat = []
- pest_kind = []
- for x in sta1:
- # print(x.indentify_result)
- if x.indentify_result != None and x.indentify_result != "":
- pest_reslut = x.indentify_result.split('#')
- for i in pest_reslut:
- i_result = i.split(',')
- # print(i_result)
- if i_result[0] not in pest_kind:
- # print(i[0])
- pest_kind.append(i_result[0])
- sta2 = {"time":x.upl_time,"result":x.indentify_result}
- # if x.indentify_result:
- dat.append(sta2)
- dat1 = []
- for xx in sta1:
- # print("at",eval(xx.cbd_data)['at'])
- # print("ah",xx.cbd_data)
- sta4 = {"at":xx.at,"ah":xx.ah,"time":xx.upl_time}
- dat1.append(sta4)
- try:
- msg_conf = Msg_Conf.objects.get(equip_id=e_id).conf
- except Exception as e:
- print("报错信息为",e)
- msg_conf = ""
- nums = len(dat)
- data = {"dat":dat,"dat1":dat1,"kind":pest_kind,"nums":nums,"msg_conf":msg_conf}
- # print("!!!!!!!!!!!!!!!",pest_kind)
- data = json.dumps(data, cls=CJSONEncoder)
- print("data:",data)
- return HttpResponse(data)
-
- @method_decorator(csrf_exempt, name='dispatch')
- class Test(ListView):
- def get(self, request):
- pass
- def post(self, request):
-
- # e_type = request.POST.get("type")
- # # print("imei",imei)
- # print("s_time",s_time)
- # sta1 = CBDstatus.objects.all()
- # sta3 = []
- # for i in sta1:
- # fir_v = eval(i.cbd_status)["dver"].split(".")
- # if fir_v[0] == e_type:
- # sta3.append(i.equip_id.equip_id)
- # print(sta3)
- # for imei in sta3:
- # file_dir = "pyftp/ftp_file/ykm_cbd/%s/%s"%(imei,s_time)
- # print("file_dir",file_dir)
- # for root, dirs, files in os.walk(file_dir):
- # print(root) #当前目录路径
- # print(dirs) #当前路径下所有子目录
- # print(files) #当前路径下所有非目录子文件
- # for i in files:
- # file = file_dir + "/" + i
- # jpg_time = time.ctime(os.path.getctime(file))
- # print("jpg_time",jpg_time)
- # st = s_time+jpg_time[11:19]
- # pic_time = datetime.datetime.strptime(st,"%Y%m%d%H:%M:%S")
- # print("类型查看",type(pic_time))
- # print("把字符串转成datetime: ", datetime.datetime.strptime(st,"%Y%m%d%H:%M:%S"))
- # if CBDphoto.objects.filter(addr=file).exists():
- # print("照片存在")
- # else:
- # print("照片不存在")
- # try:
- # imei_obj = Equip.objects.get(equip_id=imei)
- # CBDphoto.objects.create(equip_id=imei_obj,addr=file,upl_time=pic_time)
- # except Exception as e:
- # print("错误信息为",e)
- # --------------------------------------------------------------------------------
- # sta1 = CBDstatus.objects.all()
- # sta3 = []
- # for i in sta1:
- # fir_v = eval(i.cbd_status)["dver"].split(".")
- # if fir_v[0] == e_type:
- # sta3.append(i.equip_id.equip_id)
- # for imei in sta3:
- # path = "pyftp/ftp_file/ykm_cbd/%s"%imei
- # lsdir = os.listdir(path)
- # dirs = [i for i in lsdir if os.path.isdir(os.path.join(path, i))]
- # if dirs:
- # for i in dirs:
- # print_files(os.path.join(path, i))
- # files = [i for i in lsdir if os.path.isfile(os.path.join(path,i))]
- # for f in files:
- # print(os.path.join(path, f))
- # --------------------------------------------------------------------------------
- # imei = request.POST.get("imei")
- # s_time = request.POST.get("time")
- # file_dir = "pyftp/ftp_file/ykm_cbd/%s/%s"%(imei,s_time)
- # print("file_dir",file_dir)
- # for root, dirs, files in os.walk(file_dir):
- # print(root) #当前目录路径
- # print(dirs) #当前路径下所有子目录
- # print(files) #当前路径下所有非目录子文件
- # for i in files:
- # file = file_dir + "/" + i
- # jpg_time = time.ctime(os.path.getctime(file))
- # print("jpg_time",jpg_time)
- # st = s_time+jpg_time[11:19]
- # print("-------------------",i.split(".")[0])
- # pic_time_1 = s_time+i.split(".")[0]
- # pic_time_1 = datetime.datetime.strptime(pic_time_1,"%Y%m%d%H-%M-%S")
- # print("-------------------->",pic_time_1)
- # print("-------------------->",type(pic_time_1))
- # pic_time = datetime.datetime.strptime(st,"%Y%m%d%H:%M:%S")
- # print("类型查看",type(pic_time))
- # print("把字符串转成datetime: ", datetime.datetime.strptime(st,"%Y%m%d%H:%M:%S"))
- # if CBDphoto.objects.filter(addr=file).exists():
- # photoobj = CBDphoto.objects.get(addr=file)
- # photoobj.upl_time = pic_time_1
- # photoobj.save()
- # print("照片存在")
- # else:
- # print("照片不存在")
- # try:
- # imei_obj = Equip.objects.get(equip_id=imei)
- # CBDphoto.objects.create(equip_id=imei_obj,addr=file,upl_time=pic_time)
- # except Exception as e:
- # print("错误信息为",e)
- # ----------------------------------------------------------------------------------
- # data = {
- # "Image":"http://www.yfzhwlw.com/cbd_img/86123456789/2018/03/20180329135742.jpg",
- # "Result_image":"http://www.yfzhwlw.com/result_cbd_img/86123456789/2018/03/20180329135742result.jpg",
- # "Result":"22,15",
- # "imei":"868575028869313"
- # }
- # url = "http://tp.gw.airag.cn/yunfeikeji/insect/result/b2uanxyihkamjb5n5uydgdxvoi5chqhy"
- # data = json.dumps(data, cls=CJSONEncoder)
- # print("data:",data)
- # res_1 = requests.post(url=url,data=data)
- # url = "http://ip.360.cn/IPShare/info"
- # res = requests.post(url=url)
- # print(res.text)
- # data = res.text
- # aea = request.body
- # print(type(aea))
- # print(aea)
- # dat = []
- # equip_list = SCDstatus.objects.all()
- # for i in equip_list:
- # dat.append({"imei":i.equip_id_id,"lng":i.lng,"lat":i.lat})
- # # print(dat)
- # dat = json.dumps(dat)
- # res = requests.post("http://127.0.0.1:8080/test",data=dat)
- # 清除气象站数据
- # imeistr = request.body
- # print(type(imeistr))
- # if imeistr:
- # imei = eval(imeistr)["imei"]
- # return HttpResponse(imei)
- # dat = []
- # e_id = request.POST.get("imei")
- # qxz_list = QXZdata.objects.filter(equip_id_id=e_id)
- # for i in qxz_list:
- # qxz_time = i.upl_time
- # # str_p = datetime.datetime.strftime(qxz_time,'%Y-%m-%d')
- # time_int = qxz_time.minute
- # # print(str(time_int))
- # if "7" not in str(time_int):
- # i.delete()
- # username = request.POST.get('username')
- # current_user = MyUser.objects.get(username="admin")
- # sta1 = CBDstatus.objects.filter(equip_id__equip_user=current_user)
- # sta1 = CBDstatus.objects.all()
- # print(len(sta1))
- # # print("data:",data)
- # sta2 = []
- # for a in sta1:
- # if a.is_online == "1":
- # sta2.append([a.equip_id_id,a.lng,a.lat])
- # else:
- # pass
- # print(len(sta2))
- # filename = "设备经纬度"
- # title = ["设备ID","经度","纬度"]
- # book = xlwt.Workbook() # 创建一个excel对象
- # sheet = book.add_sheet('Sheet1',cell_overwrite_ok=True) # 添加一个sheet页
- # for i in range(len(title)): # 遍历列
- # sheet.write(0,i,title[i]) # 将title数组中的字段写入到0行i列中
- # for x in range(len(sta2)): # 遍历列表
- # sheet.write(x+1,0,sta2[x][0])
- # sheet.write(x+1,1,sta2[x][1])
- # sheet.write(x+1,2,sta2[x][2])
- # # 写出到IO
- # output = BytesIO()
- # book.save(output)
- # # 重新定位到开始
- # output.seek(0)
- # response = HttpResponse(content_type='application/vnd.ms-excel')
- # response['Content-Disposition'] = 'attachment;filename=%s.xls'%filename
- # response.write(output.getvalue())
- # return response
- # equip_list = Equip.objects.all()
- # bbb = 0
- # for i in equip_list:
- # photo_list = CBDphoto.objects.filter(equip_id=i.equip_id)
- # status_list = CBDdata.objects.filter(equip_id=i.equip_id)
- # for x in photo_list:
- # for a in status_list:
- # if x.at == None:
- # if a.upl_time.year == x.upl_time.year and a.upl_time.month == x.upl_time.month and a.upl_time.day == x.upl_time.day and a.upl_time.hour == x.upl_time.hour:
- # # print("数据时间==================>",a.upl_time)
- # # print("设备温度==================>",eval(a.cbd_data)["at"])
- # # print("设备湿度==================>",eval(a.cbd_data)["ah"])
- # # print("照片时间==================>",x.upl_time)
- # x.at = eval(a.cbd_data)["at"]
- # x.ah = eval(a.cbd_data)["ah"]
- # x.save()
- # bbb = bbb + 1
- # print(bbb)
- # print("========操作成功=======")
-
-
- # ----------------------------依科曼设备导出-----------------------------------------
- # sta1 = CBDstatus.objects.all()
- # sta3 = []
- # for i in sta1:
- # fir_v = eval(i.cbd_status)["dver"].split(".")
- # if fir_v[0] == "2":
- # sta3.append(i.equip_id.equip_id)
- # print(sta3)
- # filename = "预销号"
- # title = ["设备ID","设备用户","卡号","sim卡状态","套餐","到期时间"]
- # book = xlwt.Workbook() # 创建一个excel对象
- # sheet = book.add_sheet('Sheet1',cell_overwrite_ok=True) # 添加一个sheet页
- # x = 0
- # for i in range(len(title)): # 遍历列
- # sheet.write(0,i,title[i]) # 将title数组中的字段写入到0行i列中
- # for a in sta3: # 遍历列表
- # x = x + 1
- # try:
- # username = Equip.objects.get(equip_id=a).equip_user.username
- # except:
- # username = ""
- # try:
- # iccid = Equip_SimInfo.objects.get(equip_id=a).iccid
- # except:
- # iccid = ""
- # try:
- # data_plan = Equip_SimInfo.objects.get(equip_id=a).data_plan
- # except:
- # data_plan = ""
- # try:
- # expiry_date = Equip_SimInfo.objects.get(equip_id=a).expiry_date
- # except:
- # expiry_date = ""
- # try:
- # account_status = Equip_SimInfo.objects.get(equip_id=a).account_status
- # if account_status == "0":
- # account = "未知"
- # elif account_status == "1":
- # account = "测试期"
- # elif account_status == "2":
- # account = "沉默期"
- # elif account_status == "3":
- # account = "使用中"
- # elif account_status == "4":
- # account = "停机"
- # elif account_status == "5":
- # account = "停机保号"
- # elif account_status == "6":
- # account = "预销号"
- # elif account_status == "7":
- # account = "销号"
-
- # except:
- # account_status = ""
- # sheet.write(x,0,a)
- # sheet.write(x,1,username)
- # sheet.write(x,2,iccid)
- # sheet.write(x,3,account)
- # sheet.write(x,4,data_plan)
- # sheet.write(x,5,expiry_date)
- # ----------------------------依科曼设备导出-----------------------------------------
- # ------------------------------活跃设备的imei和iccid导出----------------------------
- # sta1 = Equip_SimInfo.objects.filter(account_status=7)
- # dat = []
- # for i in sta1:
- # dat.append(i.equip_id_id)
- # filename = "预销号"
- # title = ["设备ID","设备类型","设备用户","卡号","到期时间","sim卡状态","设备位置","最新的数据时间"]
- # book = xlwt.Workbook() # 创建一个excel对象
- # sheet = book.add_sheet('Sheet1',cell_overwrite_ok=True) # 添加一个sheet页
- # x = 0
- # for i in range(len(title)): # 遍历列
- # sheet.write(0,i,title[i]) # 将title数组中的字段写入到0行i列中
- # for a in dat: # 遍历列表
- # x = x + 1
- # if Equip.objects.get(equip_id=a).equip_type_id == 2:
- # e_type = "杀虫灯"
- # equip_time = RecentSCDdata.objects.get(equip_id=a).upl_time
-
- # # equip_time = time.localtime(equip_time)
-
- # lat = SCDstatus.objects.get(equip_id=a).lat
- # lng = SCDstatus.objects.get(equip_id=a).lng
- # res = requests.post("http://api.map.baidu.com/geocoder?location=%s,%s&coord_type=gcj02&output=json"%(lat,lng))
- # location = eval(res.text)["result"]["addressComponent"]["province"]+eval(res.text)["result"]["addressComponent"]["district"]
- # else:
- # e_type = "测报灯"
- # equip_time = RecentCBDdata.objects.get(equip_id=a).upl_time
- # # equip_time = time.localtime(equip_time)
- # # equip_time = time.strftime("%Y-%m-%d %H:%M:%S", equip_time)
- # lat = CBDstatus.objects.get(equip_id=a).lat
- # lng = CBDstatus.objects.get(equip_id=a).lng
- # res = requests.post("http://api.map.baidu.com/geocoder?location=%s,%s&coord_type=gcj02&output=json"%(lat,lng))
- # location = eval(res.text)["result"]["addressComponent"]["province"]+eval(res.text)["result"]["addressComponent"]["district"]
- # try:
- # username = Equip.objects.get(equip_id=a).equip_user.username
- # except:
- # username = ""
- # if Equip_SimInfo.objects.get(equip_id=a).account_status == "6":
- # account_status = "预销号"
- # elif Equip_SimInfo.objects.get(equip_id=a).account_status == "7":
- # account_status = "销号"
- # equip_time = equip_time.strftime("%Y-%m-%d %H:%M:%S")
- # sheet.write(x,0,a)
- # sheet.write(x,1,e_type)
- # sheet.write(x,2,username)
- # sheet.write(x,3,Equip_SimInfo.objects.get(equip_id=a).iccid)
- # sheet.write(x,4,Equip_SimInfo.objects.get(equip_id=a).expiry_date)
- # sheet.write(x,5,account_status)
- # sheet.write(x,6,location)
- # sheet.write(x,7,equip_time)
- # # 写出到IO
- # output = BytesIO()
- # book.save(output)
- # # 重新定位到开始
- # output.seek(0)
- # response = HttpResponse(content_type='application/vnd.ms-excel')
- # response['Content-Disposition'] = 'attachment;filename=%s.xls'%filename
- # response.write(output.getvalue())
- # return response
- # book=xlrd.open_workbook('F:\\12.2河南云飞恢复续费.xlsx')
- # sheet=book.sheet_by_index(0) #根据sheet编号来
- # # sheet=book.sheet_by_name('sheet1') #根据 sheet名称来
- # # print(sheet.nrows) #excel里面有多少行
- # # print(sheet.ncols) #excel里面有多少列
- # # print(sheet.cell(0,0).value) #获取第0行第0列的值
- # # print(sheet.row_values(0)) #获取到整行的内容
- # # print(sheet.col_values(1)) #获取到整列的内容
- # iccid_list = sheet.col_values(1)
- # sim_list = []
- # for i in range(len(iccid_list)):
- # if i == 0:
- # continue
- # sim_list.append(iccid_list[i])
- # print(sim_list)
- # filename = "物联网卡充值验证"
- # title = ["卡号","到期时间","sim卡状态"]
- # book = xlwt.Workbook() # 创建一个excel对象
- # sheet = book.add_sheet('Sheet1',cell_overwrite_ok=True) # 添加一个sheet页
- # for xx in range(len(title)): # 遍历列
- # sheet.write(0,xx,title[xx]) # 将title数组中的字段写入到0行i列中
- # for x in range(len(sim_list)):
- # res = get_siminfo(sim_list[x])
- # sim_res = res.text.encode('utf-8').decode('unicode_escape')
- # if eval(sim_res)["code"] == 0:
- # timeStamp = eval(sim_res)["data"]["expiry_date"]
- # dateArray = datetime.datetime.utcfromtimestamp(timeStamp)
- # otherStyleTime = dateArray.strftime("%Y-%m-%d %H:%M:%S")
- # if eval(sim_res)["data"]["account_status"] == 6:
- # account_status = "预销号"
- # elif eval(sim_res)["data"]["account_status"] == 7:
- # account_status = "销号"
- # elif eval(sim_res)["data"]["account_status"] == 3:
- # account_status = "使用中"
- # else:
- # account_status = eval(sim_res)["data"]["account_status"]
- # print(type(account_status))
- # print(otherStyleTime)
- # print(sim_list[x])
- # sheet.write(x,0,sim_list[x])
- # sheet.write(x,1,otherStyleTime)
- # sheet.write(x,2,account_status)
- # # 写出到IO
- # output = BytesIO()
- # book.save(output)
- # # 重新定位到开始
- # output.seek(0)
- # response = HttpResponse(content_type='application/vnd.ms-excel')
- # response['Content-Disposition'] = 'attachment;filename=%s.xls'%filename
- # response.write(output.getvalue())
- # return response
-
-
-
-
-
- # ------------------------------4.re导出----------------------------
- sta1 = CBDstatus.objects.all()
- dat = []
- for i in sta1:
- print(type(eval(i.cbd_status)['dver'][0]))
- if eval(i.cbd_status)['dver'][0] == "4" and "re" in eval(i.cbd_status)['dver']:
- dat.append(i.equip_id_id)
- filename = "设备信息"
- title = ["设备ID","设备版本","在线状态","设备位置",]
- book = xlwt.Workbook() # 创建一个excel对象
- sheet = book.add_sheet('Sheet1',cell_overwrite_ok=True) # 添加一个sheet页
- x = 0
- for i in range(len(title)): # 遍历列
- sheet.write(0,i,title[i]) # 将title数组中的字段写入到0行i列中
- for a in dat: # 遍历列表
- x = x + 1
- # equip_time = time.localtime(equip_time)
- # equip_time = time.strftime("%Y-%m-%d %H:%M:%S", equip_time)
- lat = CBDstatus.objects.get(equip_id=a).lat
- lng = CBDstatus.objects.get(equip_id=a).lng
- res = requests.post("http://api.map.baidu.com/geocoder?location=%s,%s&coord_type=gcj02&output=json"%(lat,lng))
- location = eval(res.text)["result"]["addressComponent"]["province"]+eval(res.text)["result"]["addressComponent"]["district"]
- # print("在线状态",type(CBDstatus.objects.get(equip_id=a).is_online))
-
- if CBDstatus.objects.get(equip_id=a).is_online == "1":
- online = "在线"
- else:
- online = "离线"
- dver = eval(CBDstatus.objects.get(equip_id=a).cbd_status)['dver']
- sheet.write(x,0,a)
- sheet.write(x,1,dver)
- sheet.write(x,2,online)
- sheet.write(x,3,location)
- # 写出到IO
- output = BytesIO()
- book.save(output)
- # 重新定位到开始
- output.seek(0)
- response = HttpResponse(content_type='application/vnd.ms-excel')
- response['Content-Disposition'] = 'attachment;filename=%s.xls'%filename
- response.write(output.getvalue())
- return response
- # return HttpResponse("1")
- # # 此接口用于测报灯更换板子时将旧imei的图片导入新imei中
- # class Photo_Replace(ListView):
- # def get(self,request):
- # pass
- # def post(self,request):
- # old_imei = request.POST.get("old")
- # new_imei = request.POST.get("new")
- # old_obj = Equip.objects.get(equip_id=old_imei)
- # new_obj = Equip.objects.get(equip_id=new_imei)
- # old_photo = CBDphoto.objects.filter(equip_id=old_obj)
- # for i in old_photo:
- # CBDphoto.objects.create(equip_id=new_obj,upl_time=i.upl_time,addr=i.addr)
- # return HttpResponse("0")
- # 孢子统计
- @method_decorator(csrf_exempt, name='dispatch')
- class Spore_Count(ListView):
- def get(self, request):
- pass
- def post(self, request):
- e_id = request.POST.get("e_id")
- page = int(request.POST.get("page"))
- spore_time = []
- pic_time_list = []
- sta1 = Spore_Exist.objects.filter(equip_id=e_id).values()
- sta = []
- for x in sta1:
- # sta2 = {"e_id":x['equip_id'],"upl_time":x['upl_time'],"is_exist":x['is_exist']}
- # sta.append(sta2)
- spore_time.append(x['upl_time'])
- # print(spore_time)
- bzy_pic = BZYphoto.objects.filter(equip_id_id=e_id).values()
- # now_day = datetime.datetime.now().strftime('%Y-%m-%d')
- for i in bzy_pic:
- # print(i['upl_time'].strftime('%Y-%m-%d'))
- pic_time_list.append(i['upl_time'])
- # pic_time = i['upl_time'].strftime('%Y-%m-%d')
- # if pic_time == now_day and now_day not in spore_time:
-
- # Spore_Exist.objects.create(equip_id=e_id,upl_time=i['upl_time'],is_exist=random.choice([True, False, False]))
- # print("-----------孢子存在值生成成功--------------")
- for xxx in pic_time_list:
- if xxx not in spore_time:
- Spore_Exist.objects.create(equip_id=e_id,upl_time=xxx,is_exist=random.choice([True, False, False]))
- print("-----------孢子存在值生成成功old--------------")
- sta3 = Spore_Exist.objects.filter(equip_id=e_id).values()
- for xx in sta3:
- sta2 = {"e_id":xx['equip_id'],"upl_time":xx['upl_time'],"is_exist":xx['is_exist']}
- sta.append(sta2)
- # spore_time.append(x['upl_time'].strftime('%Y-%m-%d'))
- nums = len(sta)
- sta = sta[(10*(page-1)):(page*10)]
- data = {'data': sta, 'count': nums,"code":0}
- # print(data)
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- # 气象站数据导出接口
- class QXZ_Data_Export(ListView):
- def get(self,request):
- equip_id = request.GET.get('id')
- print("请求数据的设备id:",equip_id)
- f_tbegin = request.GET.get('begin')
- f_tend = request.GET.get('end')
- filename = request.GET.get('filename')
- print("f_tbegin:", f_tbegin)
- print("f_tend:", f_tend)
- print("f_tbegin:", type(f_tbegin))
- print("f_tend:", type(f_tend))
- # 查询时间段
- if f_tbegin:
- 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 = QXZdata_New.objects.filter(equip_id=equip_id,upl_time__range=(start_date, end_date))
- else:
- sta1 = QXZdata_New.objects.filter(equip_id=equip_id)
- book = xlwt.Workbook() # 创建一个excel对象
- sheet = book.add_sheet('Sheet1',cell_overwrite_ok=True) # 添加一个sheet页
- tes = []
- if sta1:
- try:
- for x in sta1:
- te = []
- data = [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,x.upl_time.strftime("%Y-%m-%d %H:%M:%S")]
- conf_list = [i for i in data if i !='' ]
- for y in conf_list:
- num = str(y.split("#")[0])
- te.append(num)
- tes.append(te)
- x = QXZ_Conf.objects.get(equip_id=equip_id)
- conf = [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 if i !='' ]
- tep = []
- for x in conf_list:
- tite = x.replace('#', '')
- tep.append(tite)
- tep.append("采集时间")
- for i in range(len(tep)): # 遍历列
- sheet.write(0,i,tep[i]) # 将title数组中的字段写入到0行i列中
- for y in range(len(tes)):
- for i in range(len(tes[y])):
- sheet.write(y+1,i,tes[y][i])
- except:
- sheet.write(0,0,"错误的时间段")
- else:
- sheet.write(0,0,"该时间段内没数据清重新设置时间段") # 将title数组中的字段写入到0行i列中
- #写出到IO
- output = BytesIO()
- book.save(output)
- # 重新定位到开始
- output.seek(0)
- response = HttpResponse(content_type='application/vnd.ms-excel')
- response['Content-Disposition'] = 'attachment;filename=%s.xls'%filename
- response.write(output.getvalue())
- return response
-
-
- def post(self,request):
- pass
- # 性诱设备页面
- class Trap_Report(ListView):
- def get(self,request):
-
- return render(request, 'reportmanage/xyq_report.html', context={})
- def post(self,request):
- current_user = request.user.username
- print("current_user:", current_user)
- current_user = MyUser.objects.get(username=current_user)
- page = int(request.POST.get("page"))
- equip_id = request.POST.get("equip_id")
- if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
- print("---不是管理员")
- 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()
- dat = []
- if equip_id:
- xy_list = xy_list.filter(equip_id__equip_id__contains=equip_id)
- for i in xy_list:
- dat.append({"equip_id":i.equip_id_id,"addr":i.addr,"tem":i.tem,"hum":i.hum,"pest":i.pest,"pestnum":i.pestnum,"upl_time":i.upl_time})
- nums = len(dat)
- dat = dat[(10*(page-1)):(page*10)]
- data = {"nums":nums,"dat":dat}
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- # 性诱设备详情
- class Trap_Report_Detail(ListView):
- def get(self,request):
- e_id = request.GET.get("id")
- equip_obj = Equip.objects.get(equip_id=e_id)
- ename = equip_obj.equip_name
- nums = Trapdata.objects.filter(equip_id=e_id).count()
- return render(request, 'reportmanage/xyq_report_detail.html', context={"ename":ename,"equip_id":e_id,"nums":nums})
- def post(self,request):
- e_id = request.POST.get("id")
- page = int(request.POST.get("page"))
- xy_list = Trapdata.objects.filter(equip_id=e_id)
- dat = []
- for i in xy_list:
- dat.append({"equip_id":i.equip_id_id,"addr":i.addr,"tem":i.tem,"hum":i.hum,"pest":i.pest,"pestnum":i.pestnum,"upl_time":i.upl_time})
- nums = len(dat)
- dat = dat[(10*(page-1)):(page*10)]
- data = {"dat":dat,"nums":nums}
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- # 性诱详情折线
- class Trap_Report_Detail_Chart(ListView):
- def get(self,request):
- pass
- def post(self,request):
- e_id = request.POST.get("id")
- one_month = datetime.timedelta(days=30)
- one_month_later = datetime.datetime.now() - one_month
- now_time = datetime.datetime.now()
- xy_list = Trapdata.objects.filter(equip_id=e_id, upl_time__range=(one_month_later, now_time))
- data = []
- for i in xy_list:
- data.append({"pest":i.pest,"pestnum":i.pestnum,"upl_time":i.upl_time,"at":i.tem,"ah":i.hum})
- data = json.dumps(data, cls=CJSONEncoder)
- return HttpResponse(data)
- # 性诱设备图片页面
- class Trap_Image(ListView):
- def get(self,request):
- print("-----image preview!-----")
- imei = request.GET.get('imei')
- print("imei:", imei)
- nums = Trapphoto.objects.filter(equip_id=imei).count()
- print("nums:", nums)
- return render(request, 'reportmanage/xyq_image.html', context={"imei":imei,"nums":nums})
- def post(self,request):
- pass
- # 性诱设备图片列表
- class Trap_Image_List(ListView):
- def get(self,request):
- print("-----image list view!-----")
- imei = request.GET.get('imei')
- print("imei:", imei)
- # 获得当前页:
- page = int(request.GET.get('page'))
- print("page:", page)
- equip_name = Equip.objects.get(equip_id=imei).equip_name
- # 当前用户:返回用户,前端判断是否显示删除图片按钮
- current_user = request.session.get('username')
- print("current_user:", current_user)
- current_user = MyUser.objects.get(username=current_user)
- img = Trapphoto.objects.filter(equip_id=imei)[(8*(page-1)):(page*8)]
- equip_name = Equip.objects.get(equip_id=imei).equip_name
- return render(request, 'reportmanage/xyq_imageList.html', context={"img": img, "equip_name": equip_name, "current_user": current_user,'imei':imei})
- def post(self,request):
- pass
- def mkdir(path):
-
- # 去除首位空格
- path=path.strip()
- # 去除尾部 \ 符号
- path=path.rstrip("\\")
-
- # 判断路径是否存在
- # 存在 True
- # 不存在 False
- isExists=os.path.exists(path)
-
- # 判断结果
- if not isExists:
- # 如果不存在则创建目录
- # 创建目录操作函数
- os.makedirs(path)
- print(path+' 创建成功')
- return True
- else:
- # 如果目录存在则不创建,并提示目录已存在
- print(path+' 目录已存在')
- return False
- def variance_of_laplacian(image):
- # 拉普拉斯的方差
- return cv2.Laplacian(image, cv2.CV_64F).var()
- ##通过thread 实现django中
- import threading
- def bzythread(imei):
- nowtime = datetime.datetime.now().strftime('%Y%m%d')
-
-
- # origin = sys.stdout
- # f = open('logs/'+"bzyphoto" + nowtime +'.txt','a')
- # sys.stdout = f
- print('=================================================')
- print("<-----imei:\n" + imei + ';\n')
- print("Message:\n" + "http:bzyphoto" + "----->\n")
- print("%s"%datetime.datetime.now())
- print('=================================================')
-
- pic_name = datetime.datetime.now().strftime('%Y%m')
- args = "pyftp/ftp_file/bzy_test/" + imei
- try:
- # 清晰度的list:
- cv_num_list = []
- # # 文件名的列表
- # file_list = list(paths.list_images(args))
- # print("\n===========================")
- # print("file_list:",file_list)
- # print("type file_list:",type(file_list))
- # -----------------------------------------------------------
- file_list1 = list(paths.list_images(args))
- print("\n===========================")
- # print("file_list1:",file_list1)
- print("type file_list1:",type(file_list1))
- cv_num_list1 = []
- for imagePath1 in file_list1[::]:
- # pass
- # load the image, convert it to grayscale, and compute the
- # focus measure of the image using the Variance of Laplacian
- # method
- # 加载图像,将其转换为灰度,然后计算
- # 使用拉普拉斯方差对图像进行聚焦测量
- #方法
- # image = cv2.imread(imagePath)
- # gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
- # fm = variance_of_laplacian(gray)
-
- # fm = get_value(imagePath)
- # 孢子仪图片过小删除
- if os.path.getsize(imagePath1) <= 10:
- file_list1.remove(imagePath1)
- img1 = cv2.imread(imagePath1)
- img1 = cv2.resize(img1, (800, 600))
- gray = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
- # 创建SIFT对象
- sift = cv2.xfeatures2d.SIFT_create()
- keypoints, descriptor = sift.detectAndCompute(gray, None)
- img1 = cv2.drawKeypoints(image=img1, outImage=img1, keypoints=keypoints,flags=cv2.DRAW_MATCHES_FLAGS_DEFAULT, color=(0, 0, 255))
- # 显示图片
- # cv2.imshow('sift_keypoints', img1)
- # cv2.waitKey(2000)
- # cv2.destroyAllWindows()
- fm1 = len(keypoints)
- # im=Image.open(imagePath)
- # im1=im.convert("YCbCr") #转换图像的模式到视频模式
- # y1,cb1,cr1=im1.getpixel((height*0.2,width*0.2)) #提取点(10,10)位置的亮度、蓝色分量、红色分量的值。
- # y2,cb2,cr2=im1.getpixel((height*0.8,width*0.2)) #提取点(10,10)位置的亮度、蓝色分量、红色分量的值。
- # y3,cb3,cr3=im1.getpixel((height*0.2,width*0.8)) #提取点(10,10)位置的亮度、蓝色分量、红色分量的值。
- # y4,cb4,cr4=im1.getpixel((height*0.8,width*0.8)) #提取点(10,10)位置的亮度、蓝色分量、红色分量的值。
- # if y1 < 50 and y2 < 50 and y3 < 50 and y4 < 50:
- # file_list1.remove(imagePath)
- # else:
- # cv_num_list1.append(fm1)
- # # 打印清晰度值:
- # print("fm",fm)
- # # 打印文件路径
- # print("imagePath",imagePath)
- cv_num_list1.append(fm1)
- # 打印清晰度值:
- print("fm1",fm1)
- # 打印文件路径
- print("imagePath1",imagePath1)
- file_cv_tuple1 = tuple(zip(cv_num_list1,file_list1))
- print("file_cv_tuple1:\n",file_cv_tuple1)
- print("=========================================/n")
- file_cv_tuple_list1 = list(file_cv_tuple1)
- print("file_cv_tuple_list1:\n",file_cv_tuple_list1)
- print("*****************************************/n")
- # 按照清晰度排序:, reverse=True降序
- result1 = sorted(file_cv_tuple_list1, key=lambda s: s[0],reverse=True)
- print("result1:\n",result1)
- # 切片取清晰度最高的前五张图片:
- result1_5 = result1[0:3]
- # result5 = result[0:1]
- print("result1_5:\n",result1_5)
- # # -----------------------------------------------------------
- # file_list = []
- # for i in result1_5:
- # file_list.append(i[1])
- # for imagePath in file_list[::]:
- # # 孢子仪图片过小删除
- # if os.path.getsize(imagePath) <= 10:
- # file_list.remove(imagePath)
- # # 加载图像,将其转换为灰度,然后计算
- # # 使用拉普拉斯方差对图像进行聚焦测量
- # image = cv2.imread(imagePath)
- # gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
- # fm = variance_of_laplacian(gray)
- # # 加载图片
- # img = Image.open(imagePath)
- # # 获取图像的
- # height = img.size[0]
- # width = img.size[1]
- # im=Image.open(imagePath)
- # print(im.mode) #查看图像的模式
- # im1=im.convert("YCbCr") #转换图像的模式到视频模式
- # y1,cb1,cr1=im1.getpixel((height*0.2,width*0.2)) #提取点(10,10)位置的亮度、蓝色分量、红色分量的值。
- # y2,cb2,cr2=im1.getpixel((height*0.8,width*0.2)) #提取点(10,10)位置的亮度、蓝色分量、红色分量的值。
- # y3,cb3,cr3=im1.getpixel((height*0.2,width*0.8)) #提取点(10,10)位置的亮度、蓝色分量、红色分量的值。
- # y4,cb4,cr4=im1.getpixel((height*0.8,width*0.8)) #提取点(10,10)位置的亮度、蓝色分量、红色分量的值。
- # if y1 < 50 and y2 < 50 and y3 < 50 and y4 < 50:
- # file_list.remove(imagePath)
- # else:
- # cv_num_list.append(fm)
- # # 打印清晰度值:
- # print("fm",fm)
- # # 打印文件路径
- # print("imagePath",imagePath)
- # print("////////////////////////////////////////////////////////n")
- # print("cv_num_list:\n",cv_num_list)
- # # 清晰度列表和文件列表对应,生成dict
- # # file_cv_dict = dict(zip(cv_num_list,file_list))
- # # 清晰度列表和文件列表对应,生成tuple
- # file_cv_tuple = tuple(zip(cv_num_list,file_list))
- # print("file_cv_tuple:\n",file_cv_tuple)
- # print("=========================================/n")
- # file_cv_tuple_list = list(file_cv_tuple)
- # print("file_cv_tuple_list:\n",file_cv_tuple_list)
- # print("*****************************************/n")
- # # 按照清晰度排序:, reverse=True降序
- # result = sorted(file_cv_tuple_list, key=lambda s: s[0],reverse=True)
- # print("result:\n",result)
- # # 切片取清晰度最高的前五张图片:
- # # result5 = result[0:5]
- # result5 = result[0:1]
- # print("result5:\n",result5)
- # ---------------------------------------------------------------------------------------
- pic_name = datetime.datetime.now().strftime('%Y%m')
- # 定义要创建的目录:
- mkpath="./pyftp/ftp_file/bzy_photo/" + imei + "/" + pic_name
- # 调用函数,创建目录:
- mkdir(mkpath)
- for i in result1_5:
- # for i in result5:
- #i值:(137.06453470539032, 'images\\192.168.2.64_01_20190802095315882_ALARM_INPUT.jpg')
- print("file path:",i[1])
- #复制文件:
- shutil.copy(i[1],mkpath)
- # os.system("rm ./pyftp/ftp_file/bzy_test/%s/*.jpg -rf"%imei)
- os.system("mv ./pyftp/ftp_file/bzy_test/%s ./pyftp/ftp_file/bzy_test/%s_%s"%(imei,imei,datetime.datetime.now().strftime("%Y%m%d%H%M%S")))
- print("-----------------image move success----------------------")
- # equip = Equip.objects.get(equip_id=imei)
- file_dir="pyftp/ftp_file/bzy_photo/" + imei + "/" + pic_name
- origin = sys.stdout
- f = open('logs/'+"bzyphoto" + nowtime +'.txt','a')
- sys.stdout = f
- print('=================================================')
- print("<-----imei:\n" + imei + ';\n')
- print("Message:\n" + "http:bzyphoto" + "----->\n")
- print("%s"%datetime.datetime.now())
- print('=================================================')
- for root, dirs, files in os.walk(file_dir):
- print("当前目录为=========>>",root) #当前目录路径
- print("当前子目录为=========>>",dirs) #当前路径下所有子目录
- print("当前目录文件为=========>>",files) #当前路径下所有非目录子文件
- for i in files:
- photo_addr = file_dir + "/" + i
- print("文件夹图片路径===========》》",photo_addr)
- # if BZYphoto.objects.filter(addr=photo_addr).exists():
- # print("照片存在")
- # else:
- # BZYphoto.objects.create(equip_id=equip, addr=photo_addr)
- # print("照片不存在")
- sys.stdout = origin
- f.close()
- return
- except Exception as a:
- nowtime = datetime.datetime.now().strftime('%Y%m%d')
- origin = sys.stdout
- f = open('logs/'+"bzyphoto_exce" + nowtime +'.txt','a')
- sys.stdout = f
- print('=================================================')
- print("<-----imei:\n" + imei + ';\n')
- print("Message:\n" + "http:bzyphoto" + "----->\n")
- print("%s"%datetime.datetime.now())
-
- print("==========%s========"%a)
- print("-----------------image move default----------------------")
- sys.stdout = origin
- f.close()
- return
- return
- def bzyphotothread(imei):
- # nowtime = datetime.datetime.now().strftime('%Y%m%d')
- # origin = sys.stdout
- # f = open('logs/'+"bzyphoto" + nowtime +'.txt','a')
- # sys.stdout = f
- # print('=================================================')
- # print("<-----imei:\n" + imei + ';\n')
- # print("Message:\n" + "http:bzyphoto" + "----->\n")
- # print("%s"%datetime.datetime.now())
- # print('=================================================')
-
- pic_name = datetime.datetime.now().strftime('%Y%m')
- try:
- pic_name = datetime.datetime.now().strftime('%Y%m')
- args = "pyftp/ftp_file/bzy_test/" + imei
- cv_num_list = []
- file_list1 = list(paths.list_images(args))
- print("\n===========================")
- print("file_list1:",file_list1)
- print("type file_list1:",type(file_list1))
- cv_num_list1 = []
- for imagePath1 in file_list1[::]:
- # fm = get_value(imagePath)
- # 孢子仪图片过小删除
- if os.path.getsize(imagePath1) <= 10:
- file_list1.remove(imagePath1)
- img1 = cv2.imread(imagePath1)
- img1 = cv2.resize(img1, (800, 600))
- gray = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
- # 创建SIFT对象
- sift = cv2.xfeatures2d.SIFT_create()
- keypoints, descriptor = sift.detectAndCompute(gray, None)
- img1 = cv2.drawKeypoints(image=img1, outImage=img1, keypoints=keypoints,flags=cv2.DRAW_MATCHES_FLAGS_DEFAULT, color=(0, 0, 255))
- fm1 = len(keypoints)
- cv_num_list1.append(fm1)
- # 打印清晰度值:
- # print("fm1",fm1)
- # # 打印文件路径
- # print("imagePath1",imagePath1)
- file_cv_tuple1 = tuple(zip(cv_num_list1,file_list1))
- print("file_cv_tuple1:\n",file_cv_tuple1)
- print("=========================================/n")
- file_cv_tuple_list1 = list(file_cv_tuple1)
- print("file_cv_tuple_list1:\n",file_cv_tuple_list1)
- print("*****************************************/n")
- # 按照清晰度排序:, reverse=True降序
- result1 = sorted(file_cv_tuple_list1, key=lambda s: s[0],reverse=True)
- print("result1:\n",result1)
- # 切片取清晰度最高的前五张图片:
- result1_5 = result1[0:3]
- # result5 = result[0:1]
- print("result1_5:\n",result1_5)
- pic_name = datetime.datetime.now().strftime('%Y%m')
- # 定义要创建的目录:
- mkpath="./pyftp/ftp_file/bzy_photo/" + imei + "/" + pic_name
- # 调用函数,创建目录:
- mkdir(mkpath)
- for i in result1_5:
- # for i in result5:
- #i值:(137.06453470539032, 'images\\192.168.2.64_01_20190802095315882_ALARM_INPUT.jpg')
- print("file path:",i[1])
- #复制文件:
- shutil.copy(i[1],mkpath)
- # os.system("rm ./pyftp/ftp_file/bzy_test/%s/*.jpg -rf"%imei)
- os.system("mv ./pyftp/ftp_file/bzy_test/%s ./pyftp/ftp_file/bzy_test/%s_%s"%(imei,imei,datetime.datetime.now().strftime("%Y%m%d%H%M%S")))
- print("-----------------image move success----------------------")
- # equip = Equip.objects.get(equip_id=imei)
- file_dir="pyftp/ftp_file/bzy_photo/" + imei + "/" + pic_name
- for root, dirs, files in os.walk(file_dir):
- print("当前目录为=========>>",root) #当前目录路径
- print("当前子目录为=========>>",dirs) #当前路径下所有子目录
- print("当前目录文件为=========>>",files) #当前路径下所有非目录子文件
- for i in files:
- photo_addr = file_dir + "/" + i
- print("文件夹图片路径===========》》",photo_addr)
- # if BZYphoto.objects.filter(addr=photo_addr).exists():
- # print("照片存在")
- # else:
- # BZYphoto.objects.create(equip_id=equip, addr=photo_addr)
- # print("照片不存在")
- except Exception as a:
- print('=================================================')
- print("<-----imei:\n" + imei + ';\n')
- print("Message:\n" + "http:bzyphoto" + "----->\n")
- print("%s"%datetime.datetime.now())
- print("==========%s========"%a)
- print("-----------------image move default----------------------")
- # sys.stdout = origin
- # f.close()
- return
- # 孢子仪过滤图片接口
- class BZY_Mqtt_Photo(ListView):
- def get(self,request):
- pass
- def post(self,request):
- imeistr = request.body
- datas = json.loads(request.body.decode())
- print("---------",datas["imei"])
- imei = datas["imei"]
- nowtime = datetime.datetime.now().strftime('%Y%m%d')
- # origin = sys.stdout
- # f = open('logs/'+"bzyphoto" + nowtime +'.txt','a')
- # sys.stdout = f
- # print('=================================================')
- # print("<-----imei:\n" + imei + ';\n')
- # print("Message:\n" + "http:bzyphoto" + "----->\n")
- # print("%s"%datetime.datetime.now())
- # print('=================================================')
- # sys.stdout = origin
- # f.close()
-
- # t = threading.Thread(target=bzyphotothread,args=(imei,))
- # t.start()
- # r = test.delay(imei) # 返回的r不为Done,而是该任务的uniq_id
- return HttpResponse("0")
- # def post(self,request):
- # imeistr = request.body
- # datas = json.loads(request.body.decode())
- # print("---------",datas["imei"])
- # imei = datas["imei"]
- # nowtime = datetime.datetime.now().strftime('%Y%m%d')
- # origin = sys.stdout
- # f = open('logs/'+"bzyphoto" + nowtime +'.txt','a')
- # sys.stdout = f
- # print('=================================================')
- # print("<-----imei:\n" + imei + ';\n')
- # print("Message:\n" + "http:bzyphoto" + "----->\n")
- # print("%s"%datetime.datetime.now())
- # print('=================================================')
- # sys.stdout = origin
- # f.close()
- # pic_name = datetime.datetime.now().strftime('%Y%m')
- # try:
- # pic_name = datetime.datetime.now().strftime('%Y%m')
- # args = "pyftp/ftp_file/bzy_test/" + imei
- # # 清晰度的list:
- # cv_num_list = []
- # # 文件名的列表
- # file_list = list(paths.list_images(args))
- # print("\n===========================")
- # print("file_list:",file_list)
- # print("type file_list:",type(file_list))
- # for imagePath in file_list[::]:
- # # 孢子仪图片过小删除
- # if os.path.getsize(imagePath) <= 10:
- # file_list.remove(imagePath)
- # # 加载图像,将其转换为灰度,然后计算
- # # 使用拉普拉斯方差对图像进行聚焦测量
- # image = cv2.imread(imagePath)
- # gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
- # fm = variance_of_laplacian(gray)
- # # 加载图片
- # img = Image.open(imagePath)
- # # 获取图像的
- # height = img.size[0]
- # width = img.size[1]
- # im=Image.open(imagePath)
- # print(im.mode) #查看图像的模式
- # im1=im.convert("YCbCr") #转换图像的模式到视频模式
- # y1,cb1,cr1=im1.getpixel((height*0.2,width*0.2)) #提取点(10,10)位置的亮度、蓝色分量、红色分量的值。
- # y2,cb2,cr2=im1.getpixel((height*0.8,width*0.2)) #提取点(10,10)位置的亮度、蓝色分量、红色分量的值。
- # y3,cb3,cr3=im1.getpixel((height*0.2,width*0.8)) #提取点(10,10)位置的亮度、蓝色分量、红色分量的值。
- # y4,cb4,cr4=im1.getpixel((height*0.8,width*0.8)) #提取点(10,10)位置的亮度、蓝色分量、红色分量的值。
- # if y1 < 50 and y2 < 50 and y3 < 50 and y4 < 50:
- # file_list.remove(imagePath)
- # else:
- # cv_num_list.append(fm)
- # # 打印清晰度值:
- # print("fm",fm)
- # # 打印文件路径
- # print("imagePath",imagePath)
- # print("////////////////////////////////////////////////////////n")
- # print("cv_num_list:\n",cv_num_list)
- # # 清晰度列表和文件列表对应,生成dict
- # # file_cv_dict = dict(zip(cv_num_list,file_list))
- # # 清晰度列表和文件列表对应,生成tuple
- # file_cv_tuple = tuple(zip(cv_num_list,file_list))
- # print("file_cv_tuple:\n",file_cv_tuple)
- # print("=========================================/n")
- # file_cv_tuple_list = list(file_cv_tuple)
- # print("file_cv_tuple_list:\n",file_cv_tuple_list)
- # print("*****************************************/n")
- # # 按照清晰度排序:, reverse=True降序
- # result = sorted(file_cv_tuple_list, key=lambda s: s[0],reverse=True)
- # print("result:\n",result)
- # # 切片取清晰度最高的前五张图片:
- # # result5 = result[0:5]
- # result5 = result[0:1]
- # print("result5:\n",result5)
- # pic_name = datetime.datetime.now().strftime('%Y%m')
- # # 定义要创建的目录:
- # mkpath="./pyftp/ftp_file/bzy_photo/" + imei + "/" + pic_name
- # # 调用函数,创建目录:
- # mkdir(mkpath)
- # for i in result5:
- # #i值:(137.06453470539032, 'images\\192.168.2.64_01_20190802095315882_ALARM_INPUT.jpg')
- # print("file path:",i[1])
- # #复制文件:
- # shutil.copy(i[1],mkpath)
- # # os.system("rm ./pyftp/ftp_file/bzy_test/%s/*.jpg -rf"%imei)
- # os.system("mv ./pyftp/ftp_file/bzy_test/%s ./pyftp/ftp_file/bzy_test/%s_%s"%(imei,imei,datetime.datetime.now().strftime("%Y%m%d%H%M%S")))
- # print("-----------------image move success----------------------")
- # equip = Equip.objects.get(equip_id=imei)
- # file_dir="pyftp/ftp_file/bzy_photo/" + imei + "/" + pic_name
- # for root, dirs, files in os.walk(file_dir):
- # print("当前目录为=========>>",root) #当前目录路径
- # print("当前子目录为=========>>",dirs) #当前路径下所有子目录
- # print("当前目录文件为=========>>",files) #当前路径下所有非目录子文件
- # for i in files:
- # photo_addr = file_dir + "/" + i
- # print("文件��图片路径===========》》",photo_addr)
- # if BZYphoto.objects.filter(addr=photo_addr).exists():
- # print("照片存在")
- # else:
- # BZYphoto.objects.create(equip_id=equip, addr=photo_addr)
- # print("照片不存在")
- # return HttpResponse("2")
- # except Exception as a:
- # nowtime = datetime.datetime.now().strftime('%Y%m%d')
- # origin = sys.stdout
- # f = open('logs/'+"bzyphoto_exce" + nowtime +'.txt','a')
- # sys.stdout = f
- # print('=================================================')
- # print("<-----imei:\n" + imei + ';\n')
- # print("Message:\n" + "http:bzyphoto" + "----->\n")
- # print("%s"%datetime.datetime.now())
-
- # print("==========%s========"%a)
- # print("-----------------image move default----------------------")
- # sys.stdout = origin
- # f.close()
- # return HttpResponse("1")
- # return HttpResponse("0")
- def worker(number):
- for i in range(20):
- print(number)
- print(i)
- time.sleep(1)
- return
- class ThreadView(ListView):
- def get(self,request):
- pass
- def post(self,request):
- imei = request.POST.get("imei")
- # t = threading.Thread(target=worker,args=(imei,))
- # t.start()
- # t.join()
- return HttpResponse("0")
- # 气象站测试接口
- class QXZ_Test(ListView):
- def get(self,request):
- pass
- def post(self,request):
- data = request.POST.get("data")
- try:
- bodydata = request.body
- print("bodydata=====>>",bodydata)
- except:
- pass
- print("data=====>>",data)
-
- return HttpResponse("success")
- import base64
- # 海康测报灯上传图片
- class XYcb_Photo(ListView):
- def get(self,request):
- pass
- def post(self,request):
- auth = request.META.get('HTTP_AUTHORIZATION').split()
- if len(auth) == 2:
- if auth[0].lower() == "basic":
- print("type %r auth1: %r" % (type(auth[1]), auth[1]))
- uname, passwd = base64.b64decode(auth[1]).decode().split(':')
- print("uname",uname)
- print("passwd",passwd)
- print("验证信息为",auth)
- photo = request.FILES['upicture']
- print("图片:", photo)
- photo_dir = 'pyftp/ftp_file/cbd_test/'
- # 判断如果路径不存在,即创建路径
- if os.path.exists(photo_dir) == False:
- os.makedirs(photo_dir)
- nowtime = datetime.datetime.now().strftime('%Y%m%d')
- img = Image.open(photo)
- img.save(photo_dir + nowtime+".jpg")
- # 数据库关联设备,并在照片的表中存入路径:
- data = "0"
- return HttpResponse(data)
-
-
-
- class Collect_Photo(ListView):
- def get(self,request):
- pass
- def post(self,request):
- imei = request.POST.get("imei")
- equip_obj = Equip.objects.get(equip_id=imei)
- file_dir = "pyftp/ftp_file/ykm_cbd/%s"%imei
- for root, dirs, files in os.walk(file_dir):
- print(root)
- # print("当前目录------->>",root)
- for roots, dirss, file in os.walk(root):
- print("当前目录路径>>",roots) #当前目录路径
- print("当前路径下所有子目录>>",dirs) #当前路径下所有子目录
- print("当前路径下所有非目录子文件>>",file) #当前路径下所有非目录子文件
- if file != []:
- for i in file:
- photo_addr = roots + "/" + i
- photo_addr = photo_addr.replace("../","")
- print(photo_addr)
- if CBDphoto.objects.filter(addr=photo_addr).exists():
- print("照片存在")
- pass
- else:
- # addr = photo_addr
- addr = photo_addr.split("/")[-1]
- if "192.168" in addr:
- print("长addr",addr)
- _time = addr.split("_")[2][0:14]
- print("------->>",len(_time))
- try:
- _time = datetime.datetime.strptime(_time,'%Y%m%d%H%M%S')
- except:
- continue
- print(_time)
- # if i.upl_time.hour != _time.hour:
- # i.upl_time = _time
- # i.save()
- elif len(addr) == 18:
- print("短addr",addr)
- _time = addr.split(".")[0][0:14]
- print("------->>",len(_time))
- _time = _time.split("\r")[0]
- try:
- _time = datetime.datetime.strptime(_time,'%Y%m%d%H%M%S')
- except:
- continue
- print(_time)
- # if i.upl_time.hour != _time.hour:
- # i.upl_time = _time
- # i.save()
- try:
- print("图片时间为",_time)
- except:
- return HttpResponse("0")
- print("图片链接为",photo_addr)
- CBDphoto.objects.create(equip_id=equip_obj,addr=photo_addr,upl_time=_time)
- print('=================================================')
- return HttpResponse("1")
|